diff --git a/last_commit.txt b/last_commit.txt index e42a76c5db..78c3f0c3bc 100644 --- a/last_commit.txt +++ b/last_commit.txt @@ -1,34 +1,59 @@ -Repository: Products.CMFPlone +Repository: plone.app.theming Branch: refs/heads/master -Date: 2018-09-26T13:58:31+02:00 +Date: 2018-09-26T13:17:31+02:00 Author: Sune Broendum Woeller (sunew) -Commit: https://github.com/plone/Products.CMFPlone/commit/711163023461c15664527bf00b4c8414ec8200c1 +Commit: https://github.com/plone/plone.app.theming/commit/cbc0c6251987cb948a3b8ba05f75da26852e53b0 -Fix failing robot tests +Rebuild bundle after mockup update Files changed: M CHANGES.rst -M Products/CMFPlone/tests/robot/test_thememapper.robot +M src/plone/app/theming/browser/resources/thememapper-compiled.css +M src/plone/app/theming/browser/resources/thememapper-compiled.css.map +M src/plone/app/theming/browser/resources/thememapper-compiled.js +M src/plone/app/theming/browser/resources/thememapper-compiled.min.js +M src/plone/app/theming/browser/resources/thememapper-compiled.min.js.map +M src/plone/app/theming/profiles/default/registry.xml -b'diff --git a/CHANGES.rst b/CHANGES.rst\nindex e23889dc7..6abe6b79e 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -50,6 +50,9 @@ Bug fixes:\n - Some tools from CMFCore are now utilities\n [pbauer]\n \n+- Fix failing thememapper robot test after rebuild of thememapper bundle in p.a.theming PR 148\n+ [sunew]\n+\n - Remove five.pt for Zope 4\n [jensens]\n \ndiff --git a/Products/CMFPlone/tests/robot/test_thememapper.robot b/Products/CMFPlone/tests/robot/test_thememapper.robot\nindex ceb2e68c3..951fd5190 100644\n--- a/Products/CMFPlone/tests/robot/test_thememapper.robot\n+++ b/Products/CMFPlone/tests/robot/test_thememapper.robot\n@@ -72,7 +72,8 @@ I close the tab labeled "${LABEL}"\n Click Element jquery=.navbar-nav li:contains("${LABEL}") .remove\n \n I create a new file called "${NAME}"\n- Click Element css=#btn-addnew\n+ Click Element css=#btngroup-main #btngroup-dropdown-file_menu #dropdown-menu-\n+ Click Element css=#alink-addnew\n Input Text jquery=.addnew input[type="text"] ${NAME}\n Click Element jquery=.addnew .btn-primary\n Sleep 1\n@@ -104,7 +105,8 @@ I expect the document ${NAME} to contain ${MESSAGE}\n \n I use the LESS builder on "${file}"\n I open ${file}\n- Click Element css=#btn-buildless\n+ Click Element css=#btngroup-mapper #btngroup-dropdown-file_menu #dropdown-menu-\n+ Click Element css=#alink-buildless\n Input Text css=#lessFileName ${CSSFILE}\n Click element css=#compileBtn\n Sleep 1\n' +b'diff --git a/CHANGES.rst b/CHANGES.rst\nindex 186cf2e..157e0ef 100644\n--- a/CHANGES.rst\n+++ b/CHANGES.rst\n@@ -1,6 +1,24 @@\n Changelog\n =========\n \n+\n+3.0.0 (unreleased)\n+------------------\n+\n+Breaking changes:\n+\n+- *add item here*\n+\n+New features:\n+\n+- Recompiled resource bundles with latest mockup\n+ [sunew]\n+\n+Bug fixes:\n+\n+- *add item here*\n+\n+\n 2.0.4 (unreleased)\n ------------------\n \n@@ -17,7 +35,7 @@ Bug fixes:\n - Explizit load permissions for controlpanel.\n [jensens]\n \n-- Fix tests for merged plone.login. \n+- Fix tests for merged plone.login.\n [jensens]\n \n - More Python 3 fixes [ale-rt, pbauer]\ndiff --git a/src/plone/app/theming/browser/resources/thememapper-compiled.css b/src/plone/app/theming/browser/resources/thememapper-compiled.css\nindex 39cde6f..1aea15f 100644\n--- a/src/plone/app/theming/browser/resources/thememapper-compiled.css\n+++ b/src/plone/app/theming/browser/resources/thememapper-compiled.css\n@@ -1,4 +1,4 @@\n-#portal-header{margin:15px auto 20px}#portal-header:before,#portal-header:after{content:" ";display:table}#portal-header:after{clear:both}#portal-header:before,#portal-header:after{content:" ";display:table}#portal-header:after{clear:both}#portal-logo{float:left}#portal-languageselector{clear:both;display:inline-block;float:left;margin-right:29px;padding-top:5px}#portal-languageselector li{display:inline-block;margin-right:10px}#portal-anontools{float:right}#portal-anontools ul{padding-right:0}#portal-searchbox{clear:left;margin-left:3px;margin-top:60px;padding-top:20px;position:absolute;white-space:nowrap;z-index:2}#portal-searchbox .searchSection{display:none}#portal-searchbox [type="submit"]{display:none}#portal-searchbox label{font-size:86.667%}#searchbox_currentfolder_only{vertical-align:middle}@media (min-width:768px){#portal-header{margin-bottom:15px}#portal-languageselector{clear:none;float:right}#portal-searchbox{clear:none;float:right;margin-left:1em;margin-top:5px;max-width:50%;padding-top:0;position:relative}#portal-searchbox .searchSection{display:inherit}#portal-searchbox [type="text"]{border-bottom-right-radius:0;border-top-right-radius:0;float:left;width:20rem}#portal-searchbox [type="submit"]{margin-left:-1px;vertical-align:top;width:auto;display:inline-block}}.standalone,.context,.destructive,[type="submit"],button{display:inline-block;margin-bottom:0;font-weight:700;text-align:center;text-shadow:0 1px rgba(0,0,0,0.25);vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.standalone:focus,.context:focus,.destructive:focus,[type="submit"]:focus,button:focus,.standalone:active:focus,.context:active:focus,.destructive:active:focus,[type="submit"]:active:focus,button:active:focus,.standalone.active:focus,.context.active:focus,.destructive.active:focus,[type="submit"].active:focus,button.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.standalone:hover,.context:hover,.destructive:hover,[type="submit"]:hover,button:hover,.standalone:focus,.context:focus,.destructive:focus,[type="submit"]:focus,button:focus{color:#4d4d4d;text-decoration:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.25);box-shadow:0 1px 2px rgba(0,0,0,0.25)}.standalone:active,.context:active,.destructive:active,[type="submit"]:active,button:active,.standalone.active,.context.active,.destructive.active,[type="submit"].active,button.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.standalone.disabled,.context.disabled,.destructive.disabled,[type="submit"].disabled,button.disabled,.standalone[disabled],.context[disabled],.destructive[disabled],[type="submit"][disabled],button[disabled],fieldset[disabled] .standalone,fieldset[disabled] .context,fieldset[disabled] .destructive,fieldset[disabled] [type="submit"],fieldset[disabled] button{cursor:not-allowed;pointer-events:none;opacity:.5;filter:alpha(opacity=50);-webkit-box-shadow:none;box-shadow:none}.standalone,[type="submit"],button{color:#4d4d4d;background-color:#e5e5e5;border-color:#b2b2b2}.standalone:focus,[type="submit"]:focus,button:focus,.standalone.focus,[type="submit"].focus,button.focus{color:#4d4d4d;background-color:#ccc;border-color:#727272}.standalone:hover,[type="submit"]:hover,button:hover{color:#4d4d4d;background-color:#ccc;border-color:#939393}.standalone:active,[type="submit"]:active,button:active,.standalone.active,[type="submit"].active,button.active,.open>.dropdown-toggle.standalone,.open>.dropdown-toggle[type="submit"],.open>.dropdown-togglebutton,.open>.pat-filemanager .dropdown-toggle.standalone,.open>.pat-filemanager .dropdown-toggle[type="submit"],.open>.pat-filemanager .dropdown-togglebutton,.pat-filemanager .open>.dropdown-toggle.standalone,.pat-filemanager .open>.dropdown-toggle[type="submit"],.pat-filemanager .open>.dropdown-togglebutton{color:#4d4d4d;background-color:#ccc;border-color:#939393}.standalone:active:hover,[type="submit"]:active:hover,button:active:hover,.standalone.active:hover,[type="submit"].active:hover,button.active:hover,.open>.dropdown-toggle.standalone:hover,.open>.dropdown-toggle[type="submit"]:hover,.open>.dropdown-togglebutton:hover,.standalone:active:focus,[type="submit"]:active:focus,button:active:focus,.standalone.active:focus,[type="submit"].active:focus,button.active:focus,.open>.dropdown-toggle.standalone:focus,.open>.dropdown-toggle[type="submit"]:focus,.open>.dropdown-togglebutton:focus,.standalone:active.focus,[type="submit"]:active.focus,button:active.focus,.standalone.active.focus,[type="submit"].active.focus,button.active.focus,.open>.dropdown-toggle.standalone.focus,.open>.dropdown-toggle[type="submit"].focus,.open>.dropdown-togglebutton.focus,.open>.pat-filemanager .dropdown-toggle.standalone:hover,.open>.pat-filemanager .dropdown-toggle[type="submit"]:hover,.open>.pat-filemanager .dropdown-togglebutton:hover,.open>.pat-filemanager .dropdown-toggle.standalone:focus,.open>.pat-filemanager .dropdown-toggle[type="submit"]:focus,.open>.pat-filemanager .dropdown-togglebutton:focus,.open>.pat-filemanager .dropdown-toggle.standalone.focus,.open>.pat-filemanager .dropdown-toggle[type="submit"].focus,.open>.pat-filemanager .dropdown-togglebutton.focus,.pat-filemanager .open>.dropdown-toggle.standalone:hover,.pat-filemanager .open>.dropdown-toggle[type="submit"]:hover,.pat-filemanager .open>.dropdown-togglebutton:hover,.pat-filemanager .open>.dropdown-toggle.standalone:focus,.pat-filemanager .open>.dropdown-toggle[type="submit"]:focus,.pat-filemanager .open>.dropdown-togglebutton:focus,.pat-filemanager .open>.dropdown-toggle.standalone.focus,.pat-filemanager .open>.dropdown-toggle[type="submit"].focus,.pat-filemanager .open>.dropdown-togglebutton.focus{color:#4d4d4d;background-color:#bababa;border-color:#727272}.standalone:active,[type="submit"]:active,button:active,.standalone.active,[type="submit"].active,button.active,.open>.dropdown-toggle.standalone,.open>.dropdown-toggle[type="submit"],.open>.dropdown-togglebutton,.open>.pat-filemanager .dropdown-toggle.standalone,.open>.pat-filemanager .dropdown-toggle[type="submit"],.open>.pat-filemanager .dropdown-togglebutton,.pat-filemanager .open>.dropdown-toggle.standalone,.pat-filemanager .open>.dropdown-toggle[type="submit"],.pat-filemanager .open>.dropdown-togglebutton{background-image:none}.standalone.disabled:hover,[type="submit"].disabled:hover,button.disabled:hover,.standalone[disabled]:hover,[type="submit"][disabled]:hover,button[disabled]:hover,fieldset[disabled] .standalone:hover,fieldset[disabled] [type="submit"]:hover,fieldset[disabled] button:hover,.standalone.disabled:focus,[type="submit"].disabled:focus,button.disabled:focus,.standalone[disabled]:focus,[type="submit"][disabled]:focus,button[disabled]:focus,fieldset[disabled] .standalone:focus,fieldset[disabled] [type="submit"]:focus,fieldset[disabled] button:focus,.standalone.disabled.focus,[type="submit"].disabled.focus,button.disabled.focus,.standalone[disabled].focus,[type="submit"][disabled].focus,button[disabled].focus,fieldset[disabled] .standalone.focus,fieldset[disabled] [type="submit"].focus,fieldset[disabled] button.focus{background-color:#e5e5e5;border-color:#b2b2b2}.standalone .badge,[type="submit"] .badge,button .badge{color:#e5e5e5;background-color:#4d4d4d}.context{color:#fff;background-color:#007bb1;border-color:#00587e}.context:focus,.context.focus{color:#fff;background-color:#00587e;border-color:#000}.context:hover{color:#fff;background-color:#00587e;border-color:#002d41}.context:active,.context.active,.open>.dropdown-toggle.context,.open>.pat-filemanager .dropdown-toggle.context,.pat-filemanager .open>.dropdown-toggle.context{color:#fff;background-color:#00587e;border-color:#002d41}.context:active:hover,.context.active:hover,.open>.dropdown-toggle.context:hover,.context:active:focus,.context.active:focus,.open>.dropdown-toggle.context:focus,.context:active.focus,.context.active.focus,.open>.dropdown-toggle.context.focus,.open>.pat-filemanager .dropdown-toggle.context:hover,.open>.pat-filemanager .dropdown-toggle.context:focus,.open>.pat-filemanager .dropdown-toggle.context.focus,.pat-filemanager .open>.dropdown-toggle.context:hover,.pat-filemanager .open>.dropdown-toggle.context:focus,.pat-filemanager .open>.dropdown-toggle.context.focus{color:#fff;background-color:#003f5a;border-color:#000}.context:active,.context.active,.open>.dropdown-toggle.context,.open>.pat-filemanager .dropdown-toggle.context,.pat-filemanager .open>.dropdown-toggle.context{background-image:none}.context.disabled:hover,.context[disabled]:hover,fieldset[disabled] .context:hover,.context.disabled:focus,.context[disabled]:focus,fieldset[disabled] .context:focus,.context.disabled.focus,.context[disabled].focus,fieldset[disabled] .context.focus{background-color:#007bb1;border-color:#00587e}.context .badge{color:#007bb1;background-color:#fff}.destructive{color:#fff;background-color:#bb4f45;border-color:#963f37}.destructive:focus,.destructive.focus{color:#fff;background-color:#963f37;border-color:#391815}.destructive:hover{color:#fff;background-color:#963f37;border-color:#692c26}.destructive:active,.destructive.active,.open>.dropdown-toggle.destructive,.open>.pat-filemanager .dropdown-toggle.destructive,.pat-filemanager .open>.dropdown-toggle.destructive{color:#fff;background-color:#963f37;border-color:#692c26}.destructive:active:hover,.destructive.active:hover,.open>.dropdown-toggle.destructive:hover,.destructive:active:focus,.destructive.active:focus,.open>.dropdown-toggle.destructive:focus,.destructive:active.focus,.destructive.active.focus,.open>.dropdown-toggle.destructive.focus,.open>.pat-filemanager .dropdown-toggle.destructive:hover,.open>.pat-filemanager .dropdown-toggle.destructive:focus,.open>.pat-filemanager .dropdown-toggle.destructive.focus,.pat-filemanager .open>.dropdown-toggle.destructive:hover,.pat-filemanager .open>.dropdown-toggle.destructive:focus,.pat-filemanager .open>.dropdown-toggle.destructive.focus{color:#fff;background-color:#7c342d;border-color:#391815}.destructive:active,.destructive.active,.open>.dropdown-toggle.destructive,.open>.pat-filemanager .dropdown-toggle.destructive,.pat-filemanager .open>.dropdown-toggle.destructive{background-image:none}.destructive.disabled:hover,.destructive[disabled]:hover,fieldset[disabled] .destructive:hover,.destructive.disabled:focus,.destructive[disabled]:focus,fieldset[disabled] .destructive:focus,.destructive.disabled.focus,.destructive[disabled].focus,fieldset[disabled] .destructive.focus{background-color:#bb4f45;border-color:#963f37}.destructive .badge{color:#bb4f45;background-color:#fff}.link-parent{display:inline-block;margin-bottom:0;font-weight:700;text-align:center;text-shadow:0 1px rgba(0,0,0,0.25);vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#4d4d4d;background-color:#e5e5e5;border-color:#b2b2b2;margin-bottom:12px}.link-parent:focus,.link-parent:active:focus,.link-parent.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.link-parent:hover,.link-parent:focus{color:#4d4d4d;text-decoration:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.25);box-shadow:0 1px 2px rgba(0,0,0,0.25)}.link-parent:active,.link-parent.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.link-parent.disabled,.link-parent[disabled],fieldset[disabled] .link-parent{cursor:not-allowed;pointer-events:none;opacity:.5;filter:alpha(opacity=50);-webkit-box-shadow:none;box-shadow:none}.link-parent:focus,.link-parent.focus{color:#4d4d4d;background-color:#ccc;border-color:#727272}.link-parent:hover{color:#4d4d4d;background-color:#ccc;border-color:#939393}.link-parent:active,.link-parent.active,.open>.dropdown-toggle.link-parent,.open>.pat-filemanager .dropdown-toggle.link-parent,.pat-filemanager .open>.dropdown-toggle.link-parent{color:#4d4d4d;background-color:#ccc;border-color:#939393}.link-parent:active:hover,.link-parent.active:hover,.open>.dropdown-toggle.link-parent:hover,.link-parent:active:focus,.link-parent.active:focus,.open>.dropdown-toggle.link-parent:focus,.link-parent:active.focus,.link-parent.active.focus,.open>.dropdown-toggle.link-parent.focus,.open>.pat-filemanager .dropdown-toggle.link-parent:hover,.open>.pat-filemanager .dropdown-toggle.link-parent:focus,.open>.pat-filemanager .dropdown-toggle.link-parent.focus,.pat-filemanager .open>.dropdown-toggle.link-parent:hover,.pat-filemanager .open>.dropdown-toggle.link-parent:focus,.pat-filemanager .open>.dropdown-toggle.link-parent.focus{color:#4d4d4d;background-color:#bababa;border-color:#727272}.link-parent:active,.link-parent.active,.open>.dropdown-toggle.link-parent,.open>.pat-filemanager .dropdown-toggle.link-parent,.pat-filemanager .open>.dropdown-toggle.link-parent{background-image:none}.link-parent.disabled:hover,.link-parent[disabled]:hover,fieldset[disabled] .link-parent:hover,.link-parent.disabled:focus,.link-parent[disabled]:focus,fieldset[disabled] .link-parent:focus,.link-parent.disabled.focus,.link-parent[disabled].focus,fieldset[disabled] .link-parent.focus{background-color:#e5e5e5;border-color:#b2b2b2}.link-parent .badge{color:#e5e5e5;background-color:#4d4d4d}.link-parent:before{content:"\xe2\x86\xa9 ";top:3px;position:relative}.input-group,.pat-filemanager .input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"],.pat-filemanager .input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control,.pat-filemanager .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control,.pat-filemanager .input-group .form-control,.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child),.pat-filemanager .input-group .form-control:not(:first-child):not(:last-child),.pat-filemanager .input-group-addon:not(:first-child):not(:last-child),.pat-filemanager .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn,.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.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:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.btn-group>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group:not(:last-child)>.btn,.pat-filemanager .input-group .form-control:first-child,.pat-filemanager .input-group-addon:first-child,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group>.btn,.pat-filemanager .input-group-btn:first-child>.dropdown-toggle,.pat-filemanager .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.pat-filemanager .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child,.pat-filemanager .input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.btn-group>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group:not(:first-child)>.btn,.pat-filemanager .input-group .form-control:last-child,.pat-filemanager .input-group-addon:last-child,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group>.btn,.pat-filemanager .input-group-btn:last-child>.dropdown-toggle,.pat-filemanager .input-group-btn:first-child>.btn:not(:first-child),.pat-filemanager .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child,.pat-filemanager .input-group-addon:last-child{border-left:0}.input-group-btn,.pat-filemanager .input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn,.input-group-btn>.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn,.input-group-btn>.pat-filemanager .btn+.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active,.input-group-btn>.pat-filemanager .btn:hover,.input-group-btn>.pat-filemanager .btn:focus,.input-group-btn>.pat-filemanager .btn:active,.pat-filemanager .input-group-btn>.btn:hover,.pat-filemanager .input-group-btn>.btn:focus,.pat-filemanager .input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group{margin-left:-1px}.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}.btn .caret,.pat-filemanager .btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.alert.status,.portalMessage{padding:15px;padding-left:45px;margin-bottom:20px;border:0;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,0.17);font-size:14px;font-weight:400;text-shadow:0 1px rgba(255,255,255,0.1)}.alert.status>strong,.portalMessage>strong,.alert.status>dt,.portalMessage>dt{font-weight:700;padding-right:5px;color:rgba(0,0,0,0.5)}.alert.status a,.portalMessage a{font-weight:400;color:#005176}.alert.status>strong:before,.portalMessage>strong:before,.alert.status>dt:before,.portalMessage>dt:before{font-size:14px;font-weight:400;margin-left:-30px;margin-right:10px;display:inline-block;border-radius:20px;text-align:center;color:rgba(255,255,255,0.9);width:20px;height:20px;line-height:20px;text-shadow:0 -1px rgba(0,0,0,0.5);top:-1px;position:relative}.alert.status>dt,.portalMessage>dt,.alert.status>dd,.portalMessage>dd{display:inline}.alert.status>dd,.portalMessage>dd{margin:0}.alert.status.alert-none,.portalMessage.alert-none{box-shadow:none}.alert.status.alert-success,.portalMessage.alert-success,.alert.status.info,.portalMessage.info{background-color:#aad6ea;border:1px solid #9acee6;color:rgba(0,0,0,0.5)}.alert.status.alert-success>strong,.portalMessage.alert-success>strong,.alert.status.info>strong,.portalMessage.info>strong,.alert.status.alert-success>dt,.portalMessage.alert-success>dt,.alert.status.info>dt,.portalMessage.info>dt{color:rgba(0,0,0,0.67)}.alert.status.alert-success>strong:before,.portalMessage.alert-success>strong:before,.alert.status.info>strong:before,.portalMessage.info>strong:before,.alert.status.alert-success>dt:before,.portalMessage.alert-success>dt:before,.alert.status.info>dt:before,.portalMessage.info>dt:before{background-color:#3e7b91;content:"i"}.alert.status.alert-warning,.portalMessage.alert-warning,.alert.status.warning,.portalMessage.warning{background-color:#ebd380;border:1px solid #e7ca66;color:rgba(0,0,0,0.5)}.alert.status.alert-warning>strong,.portalMessage.alert-warning>strong,.alert.status.warning>strong,.portalMessage.warning>strong,.alert.status.alert-warning>dt,.portalMessage.alert-warning>dt,.alert.status.warning>dt,.portalMessage.warning>dt{color:rgba(0,0,0,0.67)}.alert.status.alert-warning>strong:before,.portalMessage.alert-warning>strong:before,.alert.status.warning>strong:before,.portalMessage.warning>strong:before,.alert.status.alert-warning>dt:before,.portalMessage.alert-warning>dt:before,.alert.status.warning>dt:before,.portalMessage.warning>dt:before{background-color:#bc8d0d;content:"!"}.alert.status.alert-error,.portalMessage.alert-error,.alert.status.error,.portalMessage.error{background-color:#EC9C8D;border:1px solid #eb9484;color:rgba(0,0,0,0.5)}.alert.status.alert-error>strong,.portalMessage.alert-error>strong,.alert.status.error>strong,.portalMessage.error>strong,.alert.status.alert-error>dt,.portalMessage.alert-error>dt,.alert.status.error>dt,.portalMessage.error>dt{color:rgba(0,0,0,0.67)}.alert.status.alert-error>strong:before,.portalMessage.alert-error>strong:before,.alert.status.error>strong:before,.portalMessage.error>strong:before,.alert.status.alert-error>dt:before,.portalMessage.alert-error>dt:before,.alert.status.error>dt:before,.portalMessage.error>dt:before{background-color:#ac493f;content:"\xc3\x97"}.portlet .portletContent>.portalMessage{padding:15px;padding-left:45px;margin:15px}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-light.eot\');src:local(\'Roboto Light\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-light.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-light.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-light.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-light.svg#robotolight\') format(\'svg\');font-weight:300;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.eot\');src:local(\'Roboto Light Italic\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.svg#robotolight_italic\') format(\'svg\');font-weight:300;font-style:italic}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-regular.eot\');src:local(\'Roboto Regular\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-regular.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-regular.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-regular.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-regular.svg#robotoregular\') format(\'svg\');font-weight:400;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-italic.eot\');src:local(\'Roboto Italic\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-italic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-italic.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-italic.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-italic.svg#robotoitalic\') format(\'svg\');font-weight:400;font-style:italic}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-medium.eot\');src:local(\'Roboto Medium\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-medium.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-medium.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-medium.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-medium.svg#robotomedium\') format(\'svg\');font-weight:500;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.eot\');src:local(\'Roboto Medium Italic\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.svg#robotomedium_italic\') format(\'svg\');font-weight:500;font-style:italic}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bold.eot\');src:local(\'Roboto Bold\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bold.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bold.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bold.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bold.svg#robotobold\') format(\'svg\');font-weight:700;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.eot\');src:local(\'Roboto Bold Italic\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.svg#robotobold_italic\') format(\'svg\');font-weight:700;font-style:italic}@font-face{font-family:\'Roboto Condensed\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.eot\');src:local(\'Roboto Condensed Light\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.svg#roboto_condensedlight\') format(\'svg\');font-weight:300;font-style:normal}@font-face{font-family:\'Roboto Condensed\';src:url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.eot\');src:local(\'Roboto Condensed Thin Italic\'), url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.woff\') format(\'woff\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.ttf\') format(\'truetype\'),url(\'../../../../../../../../../../../../repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.svg#roboto_condensedlight_italic\') format(\'svg\');font-weight:300;font-style:italic}body{word-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 a:hover,h2 a:hover,h3 a:hover,h1 a:focus,h2 a:focus,h3 a:focus{text-decoration:none;border-bottom:2px #004666 solid}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}p{margin:0 0 10px}.documentDescription{font-size:18px;font-weight:700;color:#696969;margin-bottom:10px}small{font-size:85%}cite{font-style:normal}mark{background-color:#ebd380;padding:.2em}.discreet{color:#696969;font-weight:400}.documentByLine{color:#696969;font-weight:400;margin-bottom:10px}.documentFirstHeading{padding-bottom:9px;margin:0 0 10px;border-bottom:1px solid #ccc}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}.pull-right{float:right !important}.pull-left{float:left !important}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;line-height:1.42857143;color:#4d4d4d;background-color:#fafafa;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#007bb3;text-decoration:none}a:hover,a:focus{color:#004666;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #ccc}.sr-only,.hiddenStructure,.crud-form .header-select{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;color:#fff;background-color:#000}.sr-only a,.hiddenStructure a{color:#fff;background-color:#000}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.tooltips{opacity:0;transition:opacity .2s ease .5s;position:absolute;background:#333;background:rgba(0,0,0,0.9);color:#fafafa;font-size:12px;border-radius:4px;box-shadow:0 2px 6px rgba(0,0,0,0.17);max-width:200px;margin-left:-100px;left:200px;text-align:center;padding:6px}.tooltips.active{opacity:1;transition:opacity .2s ease .5s}@font-face{font-family:\'Glyphicons Halflings\';src:url("data:application/vnd.ms-fontobject;base64,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");src:url("data:application/vnd.ms-fontobject;base64,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#iefix") format(\'embedded-opentype\'),url("data:application/font-woff2;base64,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") format(\'woff2\'),url("data:application/font-woff;base64,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") format(\'woff\'),url(\'../fonts/glyphicons-halflings-regular.ttf\') format(\'truetype\'),url(\'../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:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\\002a"}.glyphicon-plus:before{content:"\\002b"}.glyphicon-euro:before,.glyphicon-eur: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"}.modal.pat-filemanager .fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal-backdrop.pat-filemanager .fade{opacity:0;filter:alpha(opacity=0)}.modal-footer .pat-filemanager .btn+.pat-filemanager .btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .pat-filemanager .btn+.pat-filemanager .btn,.modal-footer .pat-filemanager .btn-group .btn+.btn{margin-left:-1px}.plone-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plone-btn:focus,.plone-btn:active:focus,.plone-btn.active:focus,.plone-btn.focus,.plone-btn:active.focus,.plone-btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.plone-btn:hover,.plone-btn:focus,.plone-btn.focus{color:#333;text-decoration:none}.plone-btn:active,.plone-btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.plone-btn.disabled,.plone-btn[disabled],fieldset[disabled] .plone-btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.plone-btn.disabled,fieldset[disabled] a.plone-btn{pointer-events:none}.plone-btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.plone-btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.plone-btn-sm{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.plone-btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.plone-btn-primary:focus,.plone-btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.plone-btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.plone-btn-primary:active,.plone-btn-primary.active,.open>.dropdown-toggle.plone-btn-primary,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.plone-btn-primary:active:hover,.plone-btn-primary.active:hover,.open>.dropdown-toggle.plone-btn-primary:hover,.plone-btn-primary:active:focus,.plone-btn-primary.active:focus,.open>.dropdown-toggle.plone-btn-primary:focus,.plone-btn-primary:active.focus,.plone-btn-primary.active.focus,.open>.dropdown-toggle.plone-btn-primary.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.plone-btn-primary:active,.plone-btn-primary.active,.open>.dropdown-toggle.plone-btn-primary,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary{background-image:none}.plone-btn-primary.disabled:hover,.plone-btn-primary[disabled]:hover,fieldset[disabled] .plone-btn-primary:hover,.plone-btn-primary.disabled:focus,.plone-btn-primary[disabled]:focus,fieldset[disabled] .plone-btn-primary:focus,.plone-btn-primary.disabled.focus,.plone-btn-primary[disabled].focus,fieldset[disabled] .plone-btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.plone-btn-primary .badge{color:#337ab7;background-color:#fff}.plone-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.plone-btn-warning:focus,.plone-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.plone-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.plone-btn-warning:active,.plone-btn-warning.active,.open>.dropdown-toggle.plone-btn-warning,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.plone-btn-warning:active:hover,.plone-btn-warning.active:hover,.open>.dropdown-toggle.plone-btn-warning:hover,.plone-btn-warning:active:focus,.plone-btn-warning.active:focus,.open>.dropdown-toggle.plone-btn-warning:focus,.plone-btn-warning:active.focus,.plone-btn-warning.active.focus,.open>.dropdown-toggle.plone-btn-warning.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.plone-btn-warning:active,.plone-btn-warning.active,.open>.dropdown-toggle.plone-btn-warning,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning{background-image:none}.plone-btn-warning.disabled:hover,.plone-btn-warning[disabled]:hover,fieldset[disabled] .plone-btn-warning:hover,.plone-btn-warning.disabled:focus,.plone-btn-warning[disabled]:focus,fieldset[disabled] .plone-btn-warning:focus,.plone-btn-warning.disabled.focus,.plone-btn-warning[disabled].focus,fieldset[disabled] .plone-btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.plone-btn-warning .badge{color:#f0ad4e;background-color:#fff}.plone-btn-default{color:#333;background-color:#fff;border-color:#ccc}.plone-btn-default:focus,.plone-btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.plone-btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.plone-btn-default:active,.plone-btn-default.active,.open>.dropdown-toggle.plone-btn-default,.open>.pat-filemanager .dropdown-toggle.plone-btn-default,.pat-filemanager .open>.dropdown-toggle.plone-btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.plone-btn-default:active:hover,.plone-btn-default.active:hover,.open>.dropdown-toggle.plone-btn-default:hover,.plone-btn-default:active:focus,.plone-btn-default.active:focus,.open>.dropdown-toggle.plone-btn-default:focus,.plone-btn-default:active.focus,.plone-btn-default.active.focus,.open>.dropdown-toggle.plone-btn-default.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-default:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-default:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-default.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-default:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-default:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.plone-btn-default:active,.plone-btn-default.active,.open>.dropdown-toggle.plone-btn-default,.open>.pat-filemanager .dropdown-toggle.plone-btn-default,.pat-filemanager .open>.dropdown-toggle.plone-btn-default{background-image:none}.plone-btn-default.disabled:hover,.plone-btn-default[disabled]:hover,fieldset[disabled] .plone-btn-default:hover,.plone-btn-default.disabled:focus,.plone-btn-default[disabled]:focus,fieldset[disabled] .plone-btn-default:focus,.plone-btn-default.disabled.focus,.plone-btn-default[disabled].focus,fieldset[disabled] .plone-btn-default.focus{background-color:#fff;border-color:#ccc}.plone-btn-default .badge{color:#fff;background-color:#333}.plone-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.plone-btn-success:focus,.plone-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.plone-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.plone-btn-success:active,.plone-btn-success.active,.open>.dropdown-toggle.plone-btn-success,.open>.pat-filemanager .dropdown-toggle.plone-btn-success,.pat-filemanager .open>.dropdown-toggle.plone-btn-success{color:#fff;background-color:#449d44;border-color:#398439}.plone-btn-success:active:hover,.plone-btn-success.active:hover,.open>.dropdown-toggle.plone-btn-success:hover,.plone-btn-success:active:focus,.plone-btn-success.active:focus,.open>.dropdown-toggle.plone-btn-success:focus,.plone-btn-success:active.focus,.plone-btn-success.active.focus,.open>.dropdown-toggle.plone-btn-success.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-success:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-success:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-success.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-success:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-success:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.plone-btn-success:active,.plone-btn-success.active,.open>.dropdown-toggle.plone-btn-success,.open>.pat-filemanager .dropdown-toggle.plone-btn-success,.pat-filemanager .open>.dropdown-toggle.plone-btn-success{background-image:none}.plone-btn-success.disabled:hover,.plone-btn-success[disabled]:hover,fieldset[disabled] .plone-btn-success:hover,.plone-btn-success.disabled:focus,.plone-btn-success[disabled]:focus,fieldset[disabled] .plone-btn-success:focus,.plone-btn-success.disabled.focus,.plone-btn-success[disabled].focus,fieldset[disabled] .plone-btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.plone-btn-success .badge{color:#5cb85c;background-color:#fff}.plone-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.plone-btn-info:focus,.plone-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.plone-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.plone-btn-info:active,.plone-btn-info.active,.open>.dropdown-toggle.plone-btn-info,.open>.pat-filemanager .dropdown-toggle.plone-btn-info,.pat-filemanager .open>.dropdown-toggle.plone-btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.plone-btn-info:active:hover,.plone-btn-info.active:hover,.open>.dropdown-toggle.plone-btn-info:hover,.plone-btn-info:active:focus,.plone-btn-info.active:focus,.open>.dropdown-toggle.plone-btn-info:focus,.plone-btn-info:active.focus,.plone-btn-info.active.focus,.open>.dropdown-toggle.plone-btn-info.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-info:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-info:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-info.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-info:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-info:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.plone-btn-info:active,.plone-btn-info.active,.open>.dropdown-toggle.plone-btn-info,.open>.pat-filemanager .dropdown-toggle.plone-btn-info,.pat-filemanager .open>.dropdown-toggle.plone-btn-info{background-image:none}.plone-btn-info.disabled:hover,.plone-btn-info[disabled]:hover,fieldset[disabled] .plone-btn-info:hover,.plone-btn-info.disabled:focus,.plone-btn-info[disabled]:focus,fieldset[disabled] .plone-btn-info:focus,.plone-btn-info.disabled.focus,.plone-btn-info[disabled].focus,fieldset[disabled] .plone-btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.plone-btn-info .badge{color:#5bc0de;background-color:#fff}.plone-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.plone-btn-danger:focus,.plone-btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.plone-btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.plone-btn-danger:active,.plone-btn-danger.active,.open>.dropdown-toggle.plone-btn-danger,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.plone-btn-danger:active:hover,.plone-btn-danger.active:hover,.open>.dropdown-toggle.plone-btn-danger:hover,.plone-btn-danger:active:focus,.plone-btn-danger.active:focus,.open>.dropdown-toggle.plone-btn-danger:focus,.plone-btn-danger:active.focus,.plone-btn-danger.active.focus,.open>.dropdown-toggle.plone-btn-danger.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.plone-btn-danger:active,.plone-btn-danger.active,.open>.dropdown-toggle.plone-btn-danger,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger{background-image:none}.plone-btn-danger.disabled:hover,.plone-btn-danger[disabled]:hover,fieldset[disabled] .plone-btn-danger:hover,.plone-btn-danger.disabled:focus,.plone-btn-danger[disabled]:focus,fieldset[disabled] .plone-btn-danger:focus,.plone-btn-danger.disabled.focus,.plone-btn-danger[disabled].focus,fieldset[disabled] .plone-btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.plone-btn-danger .badge{color:#d9534f;background-color:#fff}.plone-btn-link{color:#337ab7;font-weight:normal;border-radius:0}.plone-btn-link,.plone-btn-link:active,.plone-btn-link.active,.plone-btn-link[disabled],fieldset[disabled] .plone-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.plone-btn-link,.plone-btn-link:hover,.plone-btn-link:focus,.plone-btn-link:active{border-color:transparent}.plone-btn-link:hover,.plone-btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.plone-btn-link[disabled]:hover,fieldset[disabled] .plone-btn-link:hover,.plone-btn-link[disabled]:focus,fieldset[disabled] .plone-btn-link:focus{color:#777;text-decoration:none}.plone-btn-group .plone-btn+.plone-btn,.plone-btn-group .plone-btn+.plone-btn-group,.plone-btn-group .plone-btn-group+.plone-btn,.plone-btn-group .plone-btn-group+.plone-btn-group{margin-left:-1px}.plone-btn-block{display:block;width:100%}.plone-close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.plone-close:hover,.plone-close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.plone-close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.plone-modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.plone-modal.fade .modal-dialog,.plone-modal.pat-filemanager .fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.plone-modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.plone-modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.plone-modal-title{margin:0;line-height:1.42857143}.plone-modal-body{position:relative;padding:15px}.plone-modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.plone-modal-footer .btn+.btn,.plone-modal-footer .pat-filemanager .btn+.pat-filemanager .btn{margin-left:5px;margin-bottom:0}.plone-modal-footer .btn-group .btn+.btn,.plone-modal-footer .btn-group .pat-filemanager .btn+.pat-filemanager .btn,.plone-modal-footer .pat-filemanager .btn-group .btn+.btn{margin-left:-1px}.plone-modal-footer .btn-block+.btn-block{margin-left:0}.plone-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.plone-modal-backdrop.fade,.plone-modal-backdrop.pat-filemanager .fade{opacity:0;filter:alpha(opacity=0)}.plone-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.plone-progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.plone-progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.plone-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,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.rright{-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rleft{-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mockup-tooltip.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.mockup-tooltip.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.mockup-tooltip.tooltip.top{margin-top:-3px;padding:5px 0}.mockup-tooltip.tooltip.right{margin-left:3px;padding:0 5px}.mockup-tooltip.tooltip.bottom{margin-top:3px;padding:5px 0}.mockup-tooltip.tooltip.left{margin-left:-3px;padding:0 5px}.mockup-tooltip .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.mockup-tooltip .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.mockup-tooltip.tooltip.top .tooltip-arrow,.tooltip.top .mockup-tooltip .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.mockup-tooltip.tooltip.top-left .tooltip-arrow,.tooltip.top-left .mockup-tooltip .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.mockup-tooltip.tooltip.top-right .tooltip-arrow,.tooltip.top-right .mockup-tooltip .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.mockup-tooltip.tooltip.right .tooltip-arrow,.tooltip.right .mockup-tooltip .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.mockup-tooltip.tooltip.left .tooltip-arrow,.tooltip.left .mockup-tooltip .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.mockup-tooltip.tooltip.bottom .tooltip-arrow,.tooltip.bottom .mockup-tooltip .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.mockup-tooltip.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-left .mockup-tooltip .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.mockup-tooltip.tooltip.bottom-right .tooltip-arrow,.tooltip.bottom-right .mockup-tooltip .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.plone-loader{display:none;position:fixed;top:50%;left:calc(50% - 2.5em)}.plone-loader div{margin:-6em auto;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(39,33,33,0.2);border-right:1.1em solid rgba(218,211,211,0.2);border-bottom:1.1em solid rgba(218,211,211,0.2);border-left:1.1em solid rgba(218,211,211,0.2);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.plone-loader div,.plone-loader div:after{border-radius:50%;width:10em;height:10em}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}ul.jqtree-tree {\n+#portal-header{margin:15px auto 20px}#portal-header:before,#portal-header:after{content:" ";display:table}#portal-header:after{clear:both}#portal-header:before,#portal-header:after{content:" ";display:table}#portal-header:after{clear:both}#portal-logo{float:left}#portal-languageselector{clear:both;display:inline-block;float:left;margin-right:29px;padding-top:5px}#portal-languageselector li{display:inline-block;margin-right:10px}#portal-anontools{float:right}#portal-anontools ul{padding-right:0}#portal-membertools-wrapper{float:right;padding:12px 0}#portal-membertools-wrapper ul{margin:0 0 12px 12px;padding-right:0}#portal-searchbox{clear:left;margin-left:3px;margin-top:60px;padding-top:20px;position:relative;white-space:nowrap;z-index:2}#portal-searchbox .searchSection{display:none}#portal-searchbox [type="submit"]{display:none}#portal-searchbox label{font-size:86.667%}@media (min-width:768px){#portal-header{margin-bottom:15px}#portal-languageselector{clear:none;float:right}#portal-searchbox{clear:none;float:right;margin-left:1em;margin-top:5px;max-width:50%;padding-top:0;position:relative}#portal-searchbox .searchSection{display:inherit}#portal-searchbox [type="text"]{border-bottom-right-radius:0;border-top-right-radius:0;float:left;width:20rem}#portal-searchbox [type="submit"]{margin-left:-1px;vertical-align:top;width:auto;display:inline-block}}.standalone,.context,.destructive,[type="submit"],button{display:inline-block;margin-bottom:0;font-weight:700;text-align:center;text-shadow:0 1px rgba(0,0,0,0.25);vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.standalone:focus,.context:focus,.destructive:focus,[type="submit"]:focus,button:focus,.standalone:active:focus,.context:active:focus,.destructive:active:focus,[type="submit"]:active:focus,button:active:focus,.standalone.active:focus,.context.active:focus,.destructive.active:focus,[type="submit"].active:focus,button.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.standalone:hover,.context:hover,.destructive:hover,[type="submit"]:hover,button:hover,.standalone:focus,.context:focus,.destructive:focus,[type="submit"]:focus,button:focus{color:#4d4d4d;text-decoration:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.25);box-shadow:0 1px 2px rgba(0,0,0,0.25)}.standalone:active,.context:active,.destructive:active,[type="submit"]:active,button:active,.standalone.active,.context.active,.destructive.active,[type="submit"].active,button.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.standalone.disabled,.context.disabled,.destructive.disabled,[type="submit"].disabled,button.disabled,.standalone[disabled],.context[disabled],.destructive[disabled],[type="submit"][disabled],button[disabled],fieldset[disabled] .standalone,fieldset[disabled] .context,fieldset[disabled] .destructive,fieldset[disabled] [type="submit"],fieldset[disabled] button{cursor:not-allowed;pointer-events:none;opacity:.5;filter:alpha(opacity=50);-webkit-box-shadow:none;box-shadow:none}.standalone,[type="submit"],button{color:#4d4d4d;background-color:#e5e5e5;border-color:#b2b2b2}.standalone:focus,[type="submit"]:focus,button:focus,.standalone.focus,[type="submit"].focus,button.focus{color:#4d4d4d;background-color:#ccc;border-color:#727272}.standalone:hover,[type="submit"]:hover,button:hover{color:#4d4d4d;background-color:#ccc;border-color:#939393}.standalone:active,[type="submit"]:active,button:active,.standalone.active,[type="submit"].active,button.active,.open>.dropdown-toggle.standalone,.open>.dropdown-toggle[type="submit"],.open>.dropdown-togglebutton,.open>.pat-filemanager .dropdown-toggle.standalone,.open>.pat-filemanager .dropdown-toggle[type="submit"],.open>.pat-filemanager .dropdown-togglebutton,.pat-filemanager .open>.dropdown-toggle.standalone,.pat-filemanager .open>.dropdown-toggle[type="submit"],.pat-filemanager .open>.dropdown-togglebutton{color:#4d4d4d;background-color:#ccc;border-color:#939393}.standalone:active:hover,[type="submit"]:active:hover,button:active:hover,.standalone.active:hover,[type="submit"].active:hover,button.active:hover,.open>.dropdown-toggle.standalone:hover,.open>.dropdown-toggle[type="submit"]:hover,.open>.dropdown-togglebutton:hover,.standalone:active:focus,[type="submit"]:active:focus,button:active:focus,.standalone.active:focus,[type="submit"].active:focus,button.active:focus,.open>.dropdown-toggle.standalone:focus,.open>.dropdown-toggle[type="submit"]:focus,.open>.dropdown-togglebutton:focus,.standalone:active.focus,[type="submit"]:active.focus,button:active.focus,.standalone.active.focus,[type="submit"].active.focus,button.active.focus,.open>.dropdown-toggle.standalone.focus,.open>.dropdown-toggle[type="submit"].focus,.open>.dropdown-togglebutton.focus,.open>.pat-filemanager .dropdown-toggle.standalone:hover,.open>.pat-filemanager .dropdown-toggle[type="submit"]:hover,.open>.pat-filemanager .dropdown-togglebutton:hover,.open>.pat-filemanager .dropdown-toggle.standalone:focus,.open>.pat-filemanager .dropdown-toggle[type="submit"]:focus,.open>.pat-filemanager .dropdown-togglebutton:focus,.open>.pat-filemanager .dropdown-toggle.standalone.focus,.open>.pat-filemanager .dropdown-toggle[type="submit"].focus,.open>.pat-filemanager .dropdown-togglebutton.focus,.pat-filemanager .open>.dropdown-toggle.standalone:hover,.pat-filemanager .open>.dropdown-toggle[type="submit"]:hover,.pat-filemanager .open>.dropdown-togglebutton:hover,.pat-filemanager .open>.dropdown-toggle.standalone:focus,.pat-filemanager .open>.dropdown-toggle[type="submit"]:focus,.pat-filemanager .open>.dropdown-togglebutton:focus,.pat-filemanager .open>.dropdown-toggle.standalone.focus,.pat-filemanager .open>.dropdown-toggle[type="submit"].focus,.pat-filemanager .open>.dropdown-togglebutton.focus{color:#4d4d4d;background-color:#bababa;border-color:#727272}.standalone:active,[type="submit"]:active,button:active,.standalone.active,[type="submit"].active,button.active,.open>.dropdown-toggle.standalone,.open>.dropdown-toggle[type="submit"],.open>.dropdown-togglebutton,.open>.pat-filemanager .dropdown-toggle.standalone,.open>.pat-filemanager .dropdown-toggle[type="submit"],.open>.pat-filemanager .dropdown-togglebutton,.pat-filemanager .open>.dropdown-toggle.standalone,.pat-filemanager .open>.dropdown-toggle[type="submit"],.pat-filemanager .open>.dropdown-togglebutton{background-image:none}.standalone.disabled:hover,[type="submit"].disabled:hover,button.disabled:hover,.standalone[disabled]:hover,[type="submit"][disabled]:hover,button[disabled]:hover,fieldset[disabled] .standalone:hover,fieldset[disabled] [type="submit"]:hover,fieldset[disabled] button:hover,.standalone.disabled:focus,[type="submit"].disabled:focus,button.disabled:focus,.standalone[disabled]:focus,[type="submit"][disabled]:focus,button[disabled]:focus,fieldset[disabled] .standalone:focus,fieldset[disabled] [type="submit"]:focus,fieldset[disabled] button:focus,.standalone.disabled.focus,[type="submit"].disabled.focus,button.disabled.focus,.standalone[disabled].focus,[type="submit"][disabled].focus,button[disabled].focus,fieldset[disabled] .standalone.focus,fieldset[disabled] [type="submit"].focus,fieldset[disabled] button.focus{background-color:#e5e5e5;border-color:#b2b2b2}.standalone .badge,[type="submit"] .badge,button .badge{color:#e5e5e5;background-color:#4d4d4d}.context{color:#fff;background-color:#007bb1;border-color:#00587e}.context:focus,.context.focus{color:#fff;background-color:#00587e;border-color:#000}.context:hover{color:#fff;background-color:#00587e;border-color:#002d41}.context:active,.context.active,.open>.dropdown-toggle.context,.open>.pat-filemanager .dropdown-toggle.context,.pat-filemanager .open>.dropdown-toggle.context{color:#fff;background-color:#00587e;border-color:#002d41}.context:active:hover,.context.active:hover,.open>.dropdown-toggle.context:hover,.context:active:focus,.context.active:focus,.open>.dropdown-toggle.context:focus,.context:active.focus,.context.active.focus,.open>.dropdown-toggle.context.focus,.open>.pat-filemanager .dropdown-toggle.context:hover,.open>.pat-filemanager .dropdown-toggle.context:focus,.open>.pat-filemanager .dropdown-toggle.context.focus,.pat-filemanager .open>.dropdown-toggle.context:hover,.pat-filemanager .open>.dropdown-toggle.context:focus,.pat-filemanager .open>.dropdown-toggle.context.focus{color:#fff;background-color:#003f5a;border-color:#000}.context:active,.context.active,.open>.dropdown-toggle.context,.open>.pat-filemanager .dropdown-toggle.context,.pat-filemanager .open>.dropdown-toggle.context{background-image:none}.context.disabled:hover,.context[disabled]:hover,fieldset[disabled] .context:hover,.context.disabled:focus,.context[disabled]:focus,fieldset[disabled] .context:focus,.context.disabled.focus,.context[disabled].focus,fieldset[disabled] .context.focus{background-color:#007bb1;border-color:#00587e}.context .badge{color:#007bb1;background-color:#fff}.destructive{color:#fff;background-color:#bb4f45;border-color:#963f37}.destructive:focus,.destructive.focus{color:#fff;background-color:#963f37;border-color:#391815}.destructive:hover{color:#fff;background-color:#963f37;border-color:#692c26}.destructive:active,.destructive.active,.open>.dropdown-toggle.destructive,.open>.pat-filemanager .dropdown-toggle.destructive,.pat-filemanager .open>.dropdown-toggle.destructive{color:#fff;background-color:#963f37;border-color:#692c26}.destructive:active:hover,.destructive.active:hover,.open>.dropdown-toggle.destructive:hover,.destructive:active:focus,.destructive.active:focus,.open>.dropdown-toggle.destructive:focus,.destructive:active.focus,.destructive.active.focus,.open>.dropdown-toggle.destructive.focus,.open>.pat-filemanager .dropdown-toggle.destructive:hover,.open>.pat-filemanager .dropdown-toggle.destructive:focus,.open>.pat-filemanager .dropdown-toggle.destructive.focus,.pat-filemanager .open>.dropdown-toggle.destructive:hover,.pat-filemanager .open>.dropdown-toggle.destructive:focus,.pat-filemanager .open>.dropdown-toggle.destructive.focus{color:#fff;background-color:#7c342d;border-color:#391815}.destructive:active,.destructive.active,.open>.dropdown-toggle.destructive,.open>.pat-filemanager .dropdown-toggle.destructive,.pat-filemanager .open>.dropdown-toggle.destructive{background-image:none}.destructive.disabled:hover,.destructive[disabled]:hover,fieldset[disabled] .destructive:hover,.destructive.disabled:focus,.destructive[disabled]:focus,fieldset[disabled] .destructive:focus,.destructive.disabled.focus,.destructive[disabled].focus,fieldset[disabled] .destructive.focus{background-color:#bb4f45;border-color:#963f37}.destructive .badge{color:#bb4f45;background-color:#fff}.link-parent{display:inline-block;margin-bottom:0;font-weight:700;text-align:center;text-shadow:0 1px rgba(0,0,0,0.25);vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#4d4d4d;background-color:#e5e5e5;border-color:#b2b2b2;margin-bottom:12px}.link-parent:focus,.link-parent:active:focus,.link-parent.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.link-parent:hover,.link-parent:focus{color:#4d4d4d;text-decoration:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.25);box-shadow:0 1px 2px rgba(0,0,0,0.25)}.link-parent:active,.link-parent.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.link-parent.disabled,.link-parent[disabled],fieldset[disabled] .link-parent{cursor:not-allowed;pointer-events:none;opacity:.5;filter:alpha(opacity=50);-webkit-box-shadow:none;box-shadow:none}.link-parent:focus,.link-parent.focus{color:#4d4d4d;background-color:#ccc;border-color:#727272}.link-parent:hover{color:#4d4d4d;background-color:#ccc;border-color:#939393}.link-parent:active,.link-parent.active,.open>.dropdown-toggle.link-parent,.open>.pat-filemanager .dropdown-toggle.link-parent,.pat-filemanager .open>.dropdown-toggle.link-parent{color:#4d4d4d;background-color:#ccc;border-color:#939393}.link-parent:active:hover,.link-parent.active:hover,.open>.dropdown-toggle.link-parent:hover,.link-parent:active:focus,.link-parent.active:focus,.open>.dropdown-toggle.link-parent:focus,.link-parent:active.focus,.link-parent.active.focus,.open>.dropdown-toggle.link-parent.focus,.open>.pat-filemanager .dropdown-toggle.link-parent:hover,.open>.pat-filemanager .dropdown-toggle.link-parent:focus,.open>.pat-filemanager .dropdown-toggle.link-parent.focus,.pat-filemanager .open>.dropdown-toggle.link-parent:hover,.pat-filemanager .open>.dropdown-toggle.link-parent:focus,.pat-filemanager .open>.dropdown-toggle.link-parent.focus{color:#4d4d4d;background-color:#bababa;border-color:#727272}.link-parent:active,.link-parent.active,.open>.dropdown-toggle.link-parent,.open>.pat-filemanager .dropdown-toggle.link-parent,.pat-filemanager .open>.dropdown-toggle.link-parent{background-image:none}.link-parent.disabled:hover,.link-parent[disabled]:hover,fieldset[disabled] .link-parent:hover,.link-parent.disabled:focus,.link-parent[disabled]:focus,fieldset[disabled] .link-parent:focus,.link-parent.disabled.focus,.link-parent[disabled].focus,fieldset[disabled] .link-parent.focus{background-color:#e5e5e5;border-color:#b2b2b2}.link-parent .badge{color:#e5e5e5;background-color:#4d4d4d}.link-parent::before{content:"\xe2\x86\xa9 ";top:3px;position:relative}.input-group,.pat-filemanager .input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"],.pat-filemanager .input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control,.pat-filemanager .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control,.pat-filemanager .input-group .form-control,.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child),.pat-filemanager .input-group .form-control:not(:first-child):not(:last-child),.pat-filemanager .input-group-addon:not(:first-child):not(:last-child),.pat-filemanager .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn,.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.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:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.btn-group>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group-dropdown:not(:last-child)>.btn,.pat-filemanager .input-group .form-control:first-child,.pat-filemanager .input-group-addon:first-child,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group>.btn,.pat-filemanager .input-group-btn:first-child>.dropdown-toggle,.pat-filemanager .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.pat-filemanager .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .dropdown-toggle,.input-group-btn:first-child>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:last-child>.pat-filemanager .pat-filemanager .btn-group-dropdown:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child,.pat-filemanager .input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.btn-group>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group-dropdown:not(:first-child)>.btn,.pat-filemanager .input-group .form-control:last-child,.pat-filemanager .input-group-addon:last-child,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group>.btn,.pat-filemanager .input-group-btn:last-child>.dropdown-toggle,.pat-filemanager .input-group-btn:first-child>.btn:not(:first-child),.pat-filemanager .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .dropdown-toggle,.input-group-btn:last-child>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:first-child>.pat-filemanager .pat-filemanager .btn-group-dropdown:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child,.pat-filemanager .input-group-addon:last-child{border-left:0}.input-group-btn,.pat-filemanager .input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn,.input-group-btn>.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn,.input-group-btn>.pat-filemanager .btn+.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active,.input-group-btn>.pat-filemanager .btn:hover,.input-group-btn>.pat-filemanager .btn:focus,.input-group-btn>.pat-filemanager .btn:active,.pat-filemanager .input-group-btn>.btn:hover,.pat-filemanager .input-group-btn>.btn:focus,.pat-filemanager .input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group,.input-group-btn:first-child>.pat-filemanager .btn-group-dropdown,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.pat-filemanager .pat-filemanager .btn-group-dropdown{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group,.input-group-btn:last-child>.pat-filemanager .btn-group-dropdown,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.pat-filemanager .pat-filemanager .btn-group-dropdown{margin-left:-1px}.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}.btn .caret,.pat-filemanager .btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.alert.status,.portalMessage{padding:15px;padding-left:45px;margin-bottom:20px;border:0;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,0.17);font-size:14px;font-weight:400;text-shadow:0 1px rgba(255,255,255,0.1)}.alert.status>strong,.portalMessage>strong,.alert.status>dt,.portalMessage>dt{font-weight:700;padding-right:5px;color:rgba(0,0,0,0.5)}.alert.status a,.portalMessage a{font-weight:400;color:#005176}.alert.status>strong::before,.portalMessage>strong::before,.alert.status>dt::before,.portalMessage>dt::before{font-size:14px;font-weight:400;margin-left:-30px;margin-right:10px;display:inline-block;border-radius:20px;text-align:center;color:rgba(255,255,255,0.9);width:20px;height:20px;line-height:20px;text-shadow:0 -1px rgba(0,0,0,0.5);top:-1px;position:relative}.alert.status>dt,.portalMessage>dt,.alert.status>dd,.portalMessage>dd{display:inline}.alert.status>dd,.portalMessage>dd{margin:0}.alert.status.alert-none,.portalMessage.alert-none{box-shadow:none}.alert.status.alert-success,.portalMessage.alert-success,.alert.status.info,.portalMessage.info{background-color:#aad6ea;border:1px solid #9acee6;color:rgba(0,0,0,0.5)}.alert.status.alert-success>strong,.portalMessage.alert-success>strong,.alert.status.info>strong,.portalMessage.info>strong,.alert.status.alert-success>dt,.portalMessage.alert-success>dt,.alert.status.info>dt,.portalMessage.info>dt{color:rgba(0,0,0,0.67)}.alert.status.alert-success>strong::before,.portalMessage.alert-success>strong::before,.alert.status.info>strong::before,.portalMessage.info>strong::before,.alert.status.alert-success>dt::before,.portalMessage.alert-success>dt::before,.alert.status.info>dt::before,.portalMessage.info>dt::before{background-color:#3e7b91;content:"i"}.alert.status.alert-warning,.portalMessage.alert-warning,.alert.status.warning,.portalMessage.warning{background-color:#ebd380;border:1px solid #e7ca66;color:rgba(0,0,0,0.5)}.alert.status.alert-warning>strong,.portalMessage.alert-warning>strong,.alert.status.warning>strong,.portalMessage.warning>strong,.alert.status.alert-warning>dt,.portalMessage.alert-warning>dt,.alert.status.warning>dt,.portalMessage.warning>dt{color:rgba(0,0,0,0.67)}.alert.status.alert-warning>strong::before,.portalMessage.alert-warning>strong::before,.alert.status.warning>strong::before,.portalMessage.warning>strong::before,.alert.status.alert-warning>dt::before,.portalMessage.alert-warning>dt::before,.alert.status.warning>dt::before,.portalMessage.warning>dt::before{background-color:#bc8d0d;content:"!"}.alert.status.alert-error,.portalMessage.alert-error,.alert.status.error,.portalMessage.error{background-color:#EC9C8D;border:1px solid #eb9484;color:rgba(0,0,0,0.5)}.alert.status.alert-error>strong,.portalMessage.alert-error>strong,.alert.status.error>strong,.portalMessage.error>strong,.alert.status.alert-error>dt,.portalMessage.alert-error>dt,.alert.status.error>dt,.portalMessage.error>dt{color:rgba(0,0,0,0.67)}.alert.status.alert-error>strong::before,.portalMessage.alert-error>strong::before,.alert.status.error>strong::before,.portalMessage.error>strong::before,.alert.status.alert-error>dt::before,.portalMessage.alert-error>dt::before,.alert.status.error>dt::before,.portalMessage.error>dt::before{background-color:#ac493f;content:"\xc3\x97"}.portlet .portletContent>.portalMessage{padding:15px;padding-left:45px;margin:15px}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-light.eot\');src:local(\'Roboto Light\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-light.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-light.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-light.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-light.svg#robotolight\') format(\'svg\');font-weight:300;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.eot\');src:local(\'Roboto Light Italic\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-lightitalic.svg#robotolight_italic\') format(\'svg\');font-weight:300;font-style:italic}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-regular.eot\');src:local(\'Roboto Regular\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-regular.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-regular.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-regular.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-regular.svg#robotoregular\') format(\'svg\');font-weight:400;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-italic.eot\');src:local(\'Roboto Italic\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-italic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-italic.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-italic.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-italic.svg#robotoitalic\') format(\'svg\');font-weight:400;font-style:italic}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-medium.eot\');src:local(\'Roboto Medium\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-medium.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-medium.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-medium.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-medium.svg#robotomedium\') format(\'svg\');font-weight:500;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.eot\');src:local(\'Roboto Medium Italic\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-mediumitalic.svg#robotomedium_italic\') format(\'svg\');font-weight:500;font-style:italic}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bold.eot\');src:local(\'Roboto Bold\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bold.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bold.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bold.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bold.svg#robotobold\') format(\'svg\');font-weight:700;font-style:normal}@font-face{font-family:\'Roboto\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.eot\');src:local(\'Roboto Bold Italic\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/roboto-bolditalic.svg#robotobold_italic\') format(\'svg\');font-weight:700;font-style:italic}@font-face{font-family:\'Roboto Condensed\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.eot\');src:local(\'Roboto Condensed Light\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-light.svg#roboto_condensedlight\') format(\'svg\');font-weight:300;font-style:normal}@font-face{font-family:\'Roboto Condensed\';src:url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.eot\');src:local(\'Roboto Condensed Thin Italic\'), url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.eot#iefix\') format(\'embedded-opentype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.woff\') format(\'woff\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.ttf\') format(\'truetype\'),url(\'../../../../../../../plonetheme.barceloneta/plonetheme/barceloneta/theme/less/roboto/robotocondensed-lightitalic.svg#roboto_condensedlight_italic\') format(\'svg\');font-weight:300;font-style:italic}body{word-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 a:hover,h2 a:hover,h3 a:hover,h1 a:focus,h2 a:focus,h3 a:focus{text-decoration:none;border-bottom:2px #004666 solid}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}p{margin:0 0 10px}.documentDescription{font-size:18px;font-weight:700;color:#696969;margin-bottom:10px}small{font-size:85%}cite{font-style:normal}mark{background-color:#ebd380;padding:.2em}.discreet{color:#696969;font-weight:400}.documentByLine{color:#696969;font-weight:400;margin-bottom:10px}.documentFirstHeading{padding-bottom:9px;margin:0 0 10px;border-bottom:1px solid #ccc}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}.pull-right{float:right !important}.pull-left{float:left !important}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*::before,*::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;line-height:1.42857143;color:#4d4d4d;background-color:#fafafa;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#007bb3;text-decoration:none}a:hover,a:focus{color:#004666;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #ccc}.sr-only,.hiddenStructure,.crud-form .header-select{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;color:#fff;background-color:#000}.sr-only a,.hiddenStructure a{color:#fff;background-color:#000}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.tooltips{opacity:0;transition:opacity .2s ease .5s;position:absolute;background:#333;background:rgba(0,0,0,0.9);color:#fafafa;font-size:12px;border-radius:4px;box-shadow:0 2px 6px rgba(0,0,0,0.17);max-width:200px;margin-left:-100px;left:200px;text-align:center;padding:6px}.tooltips.active{opacity:1;transition:opacity .2s ease .5s}@font-face{font-family:\'Glyphicons Halflings\';src:url("data:application/vnd.ms-fontobject;base64,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");src:url("data:application/vnd.ms-fontobject;base64,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#iefix") format(\'embedded-opentype\'),url("data:font/woff2;base64,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") format(\'woff2\'),url("data:font/woff;base64,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") format(\'woff\'),url(\'../fonts/glyphicons-halflings-regular.ttf\') format(\'truetype\'),url(\'../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:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\\002a"}.glyphicon-plus:before{content:"\\002b"}.glyphicon-euro:before,.glyphicon-eur: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"}.modal.pat-filemanager .fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal-backdrop.pat-filemanager .fade{opacity:0;filter:alpha(opacity=0)}.modal-footer .pat-filemanager .btn+.pat-filemanager .btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .pat-filemanager .btn+.pat-filemanager .btn,.modal-footer .pat-filemanager .btn-group .btn+.btn,.modal-footer .pat-filemanager .btn-group-dropdown .btn+.btn,.modal-footer .pat-filemanager .pat-filemanager .btn-group-dropdown .btn+.btn{margin-left:-1px}.plone-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plone-btn:focus,.plone-btn:active:focus,.plone-btn.active:focus,.plone-btn.focus,.plone-btn:active.focus,.plone-btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.plone-btn:hover,.plone-btn:focus,.plone-btn.focus{color:#333;text-decoration:none}.plone-btn:active,.plone-btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.plone-btn.disabled,.plone-btn[disabled],fieldset[disabled] .plone-btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.plone-btn.disabled,fieldset[disabled] a.plone-btn{pointer-events:none}.plone-btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.plone-btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.plone-btn-sm{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.plone-btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.plone-btn-primary:focus,.plone-btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.plone-btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.plone-btn-primary:active,.plone-btn-primary.active,.open>.dropdown-toggle.plone-btn-primary,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.plone-btn-primary:active:hover,.plone-btn-primary.active:hover,.open>.dropdown-toggle.plone-btn-primary:hover,.plone-btn-primary:active:focus,.plone-btn-primary.active:focus,.open>.dropdown-toggle.plone-btn-primary:focus,.plone-btn-primary:active.focus,.plone-btn-primary.active.focus,.open>.dropdown-toggle.plone-btn-primary.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.plone-btn-primary:active,.plone-btn-primary.active,.open>.dropdown-toggle.plone-btn-primary,.open>.pat-filemanager .dropdown-toggle.plone-btn-primary,.pat-filemanager .open>.dropdown-toggle.plone-btn-primary{background-image:none}.plone-btn-primary.disabled:hover,.plone-btn-primary[disabled]:hover,fieldset[disabled] .plone-btn-primary:hover,.plone-btn-primary.disabled:focus,.plone-btn-primary[disabled]:focus,fieldset[disabled] .plone-btn-primary:focus,.plone-btn-primary.disabled.focus,.plone-btn-primary[disabled].focus,fieldset[disabled] .plone-btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.plone-btn-primary .badge{color:#337ab7;background-color:#fff}.plone-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.plone-btn-warning:focus,.plone-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.plone-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.plone-btn-warning:active,.plone-btn-warning.active,.open>.dropdown-toggle.plone-btn-warning,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.plone-btn-warning:active:hover,.plone-btn-warning.active:hover,.open>.dropdown-toggle.plone-btn-warning:hover,.plone-btn-warning:active:focus,.plone-btn-warning.active:focus,.open>.dropdown-toggle.plone-btn-warning:focus,.plone-btn-warning:active.focus,.plone-btn-warning.active.focus,.open>.dropdown-toggle.plone-btn-warning.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.plone-btn-warning:active,.plone-btn-warning.active,.open>.dropdown-toggle.plone-btn-warning,.open>.pat-filemanager .dropdown-toggle.plone-btn-warning,.pat-filemanager .open>.dropdown-toggle.plone-btn-warning{background-image:none}.plone-btn-warning.disabled:hover,.plone-btn-warning[disabled]:hover,fieldset[disabled] .plone-btn-warning:hover,.plone-btn-warning.disabled:focus,.plone-btn-warning[disabled]:focus,fieldset[disabled] .plone-btn-warning:focus,.plone-btn-warning.disabled.focus,.plone-btn-warning[disabled].focus,fieldset[disabled] .plone-btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.plone-btn-warning .badge{color:#f0ad4e;background-color:#fff}.plone-btn-default{color:#333;background-color:#fff;border-color:#ccc}.plone-btn-default:focus,.plone-btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.plone-btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.plone-btn-default:active,.plone-btn-default.active,.open>.dropdown-toggle.plone-btn-default,.open>.pat-filemanager .dropdown-toggle.plone-btn-default,.pat-filemanager .open>.dropdown-toggle.plone-btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.plone-btn-default:active:hover,.plone-btn-default.active:hover,.open>.dropdown-toggle.plone-btn-default:hover,.plone-btn-default:active:focus,.plone-btn-default.active:focus,.open>.dropdown-toggle.plone-btn-default:focus,.plone-btn-default:active.focus,.plone-btn-default.active.focus,.open>.dropdown-toggle.plone-btn-default.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-default:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-default:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-default.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-default:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-default:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.plone-btn-default:active,.plone-btn-default.active,.open>.dropdown-toggle.plone-btn-default,.open>.pat-filemanager .dropdown-toggle.plone-btn-default,.pat-filemanager .open>.dropdown-toggle.plone-btn-default{background-image:none}.plone-btn-default.disabled:hover,.plone-btn-default[disabled]:hover,fieldset[disabled] .plone-btn-default:hover,.plone-btn-default.disabled:focus,.plone-btn-default[disabled]:focus,fieldset[disabled] .plone-btn-default:focus,.plone-btn-default.disabled.focus,.plone-btn-default[disabled].focus,fieldset[disabled] .plone-btn-default.focus{background-color:#fff;border-color:#ccc}.plone-btn-default .badge{color:#fff;background-color:#333}.plone-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.plone-btn-success:focus,.plone-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.plone-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.plone-btn-success:active,.plone-btn-success.active,.open>.dropdown-toggle.plone-btn-success,.open>.pat-filemanager .dropdown-toggle.plone-btn-success,.pat-filemanager .open>.dropdown-toggle.plone-btn-success{color:#fff;background-color:#449d44;border-color:#398439}.plone-btn-success:active:hover,.plone-btn-success.active:hover,.open>.dropdown-toggle.plone-btn-success:hover,.plone-btn-success:active:focus,.plone-btn-success.active:focus,.open>.dropdown-toggle.plone-btn-success:focus,.plone-btn-success:active.focus,.plone-btn-success.active.focus,.open>.dropdown-toggle.plone-btn-success.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-success:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-success:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-success.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-success:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-success:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.plone-btn-success:active,.plone-btn-success.active,.open>.dropdown-toggle.plone-btn-success,.open>.pat-filemanager .dropdown-toggle.plone-btn-success,.pat-filemanager .open>.dropdown-toggle.plone-btn-success{background-image:none}.plone-btn-success.disabled:hover,.plone-btn-success[disabled]:hover,fieldset[disabled] .plone-btn-success:hover,.plone-btn-success.disabled:focus,.plone-btn-success[disabled]:focus,fieldset[disabled] .plone-btn-success:focus,.plone-btn-success.disabled.focus,.plone-btn-success[disabled].focus,fieldset[disabled] .plone-btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.plone-btn-success .badge{color:#5cb85c;background-color:#fff}.plone-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.plone-btn-info:focus,.plone-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.plone-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.plone-btn-info:active,.plone-btn-info.active,.open>.dropdown-toggle.plone-btn-info,.open>.pat-filemanager .dropdown-toggle.plone-btn-info,.pat-filemanager .open>.dropdown-toggle.plone-btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.plone-btn-info:active:hover,.plone-btn-info.active:hover,.open>.dropdown-toggle.plone-btn-info:hover,.plone-btn-info:active:focus,.plone-btn-info.active:focus,.open>.dropdown-toggle.plone-btn-info:focus,.plone-btn-info:active.focus,.plone-btn-info.active.focus,.open>.dropdown-toggle.plone-btn-info.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-info:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-info:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-info.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-info:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-info:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.plone-btn-info:active,.plone-btn-info.active,.open>.dropdown-toggle.plone-btn-info,.open>.pat-filemanager .dropdown-toggle.plone-btn-info,.pat-filemanager .open>.dropdown-toggle.plone-btn-info{background-image:none}.plone-btn-info.disabled:hover,.plone-btn-info[disabled]:hover,fieldset[disabled] .plone-btn-info:hover,.plone-btn-info.disabled:focus,.plone-btn-info[disabled]:focus,fieldset[disabled] .plone-btn-info:focus,.plone-btn-info.disabled.focus,.plone-btn-info[disabled].focus,fieldset[disabled] .plone-btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.plone-btn-info .badge{color:#5bc0de;background-color:#fff}.plone-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.plone-btn-danger:focus,.plone-btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.plone-btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.plone-btn-danger:active,.plone-btn-danger.active,.open>.dropdown-toggle.plone-btn-danger,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.plone-btn-danger:active:hover,.plone-btn-danger.active:hover,.open>.dropdown-toggle.plone-btn-danger:hover,.plone-btn-danger:active:focus,.plone-btn-danger.active:focus,.open>.dropdown-toggle.plone-btn-danger:focus,.plone-btn-danger:active.focus,.plone-btn-danger.active.focus,.open>.dropdown-toggle.plone-btn-danger.focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger:hover,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger:focus,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger.focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger:hover,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger:focus,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.plone-btn-danger:active,.plone-btn-danger.active,.open>.dropdown-toggle.plone-btn-danger,.open>.pat-filemanager .dropdown-toggle.plone-btn-danger,.pat-filemanager .open>.dropdown-toggle.plone-btn-danger{background-image:none}.plone-btn-danger.disabled:hover,.plone-btn-danger[disabled]:hover,fieldset[disabled] .plone-btn-danger:hover,.plone-btn-danger.disabled:focus,.plone-btn-danger[disabled]:focus,fieldset[disabled] .plone-btn-danger:focus,.plone-btn-danger.disabled.focus,.plone-btn-danger[disabled].focus,fieldset[disabled] .plone-btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.plone-btn-danger .badge{color:#d9534f;background-color:#fff}.plone-btn-link{color:#337ab7;font-weight:normal;border-radius:0}.plone-btn-link,.plone-btn-link:active,.plone-btn-link.active,.plone-btn-link[disabled],fieldset[disabled] .plone-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.plone-btn-link,.plone-btn-link:hover,.plone-btn-link:focus,.plone-btn-link:active{border-color:transparent}.plone-btn-link:hover,.plone-btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.plone-btn-link[disabled]:hover,fieldset[disabled] .plone-btn-link:hover,.plone-btn-link[disabled]:focus,fieldset[disabled] .plone-btn-link:focus{color:#777;text-decoration:none}.plone-btn-group .plone-btn+.plone-btn,.plone-btn-group .plone-btn+.plone-btn-group,.plone-btn-group .plone-btn-group+.plone-btn,.plone-btn-group .plone-btn-group+.plone-btn-group{margin-left:-1px}.plone-btn-block{display:block;width:100%}.plone-close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.plone-close:hover,.plone-close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.plone-close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.plone-modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.plone-modal.fade .modal-dialog,.plone-modal.pat-filemanager .fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.plone-modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.plone-modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.plone-modal-title{margin:0;line-height:1.42857143}.plone-modal-body{position:relative;padding:15px}.plone-modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.plone-modal-footer .btn+.btn,.plone-modal-footer .pat-filemanager .btn+.pat-filemanager .btn{margin-left:5px;margin-bottom:0}.plone-modal-footer .btn-group .btn+.btn,.plone-modal-footer .btn-group .pat-filemanager .btn+.pat-filemanager .btn,.plone-modal-footer .pat-filemanager .btn-group .btn+.btn,.plone-modal-footer .pat-filemanager .btn-group-dropdown .btn+.btn,.plone-modal-footer .pat-filemanager .pat-filemanager .btn-group-dropdown .btn+.btn{margin-left:-1px}.plone-modal-footer .btn-block+.btn-block{margin-left:0}.plone-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.plone-modal-backdrop.fade,.plone-modal-backdrop.pat-filemanager .fade{opacity:0;filter:alpha(opacity=0)}.plone-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.plone-progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.plone-progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.plone-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,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.rright{-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform:rotate(90deg)}.rleft{-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mockup-tooltip.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.mockup-tooltip.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.mockup-tooltip.tooltip.top{margin-top:-3px;padding:5px 0}.mockup-tooltip.tooltip.right{margin-left:3px;padding:0 5px}.mockup-tooltip.tooltip.bottom{margin-top:3px;padding:5px 0}.mockup-tooltip.tooltip.left{margin-left:-3px;padding:0 5px}.mockup-tooltip .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.mockup-tooltip .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.mockup-tooltip.tooltip.top .tooltip-arrow,.tooltip.top .mockup-tooltip .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.mockup-tooltip.tooltip.top-left .tooltip-arrow,.tooltip.top-left .mockup-tooltip .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.mockup-tooltip.tooltip.top-right .tooltip-arrow,.tooltip.top-right .mockup-tooltip .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.mockup-tooltip.tooltip.right .tooltip-arrow,.tooltip.right .mockup-tooltip .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.mockup-tooltip.tooltip.left .tooltip-arrow,.tooltip.left .mockup-tooltip .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.mockup-tooltip.tooltip.bottom .tooltip-arrow,.tooltip.bottom .mockup-tooltip .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.mockup-tooltip.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-left .mockup-tooltip .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.mockup-tooltip.tooltip.bottom-right .tooltip-arrow,.tooltip.bottom-right .mockup-tooltip .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.plone-loader{display:none;position:fixed;top:50%;left:calc(50% - 2.5em)}.plone-loader div{margin:-6em auto;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(39,33,33,0.2);border-right:1.1em solid rgba(218,211,211,0.2);border-bottom:1.1em solid rgba(218,211,211,0.2);border-left:1.1em solid rgba(218,211,211,0.2);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.plone-loader div,.plone-loader div:after{border-radius:50%;width:10em;height:10em}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}ul.jqtree-tree {\n list-style: none outside;\n margin-left: 0;\n margin-bottom: 0;\n@@ -130,4 +130,4 @@ span.jqtree-dragging {\n ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {\n background: url(jqtree-circle.png) no-repeat;\n border: 0 none; } }\n-.autotabs ul li.jqtree_common{display:block}.popover,.pat-filemanager .popover{min-width:111px;max-width:500px}.popover .popover-title,.pat-filemanager .popover .popover-title,.popover .pat-filemanager .popover-title{padding-bottom:0}.popover .popover-title input,.pat-filemanager .popover .popover-title input,.popover .pat-filemanager .popover-title input{margin-bottom:0}.popover.active,.pat-filemanager .popover.active{display:block}.backdrop-popover{background-color:#fff;z-index:1009}.clearfix:before,.clearfix:after,.plone-modal-header:before,.plone-modal-header:after,.plone-modal-footer:before,.plone-modal-footer:after{content:" ";display:table}.clearfix:after,.plone-modal-header:after,.plone-modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right: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}.pat-filemanager .btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pat-filemanager .btn:focus,.pat-filemanager .btn:active:focus,.pat-filemanager .btn.active:focus,.pat-filemanager .btn.focus,.pat-filemanager .btn:active.focus,.pat-filemanager .btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.pat-filemanager .btn:hover,.pat-filemanager .btn:focus,.pat-filemanager .btn.focus{color:#333;text-decoration:none}.pat-filemanager .btn:active,.pat-filemanager .btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.pat-filemanager .btn.disabled,.pat-filemanager .btn[disabled],fieldset[disabled] .pat-filemanager .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.pat-filemanager .btn.disabled,fieldset[disabled] a.pat-filemanager .btn{pointer-events:none}.pat-filemanager .btn-default{color:#333;background-color:#fff;border-color:#ccc}.pat-filemanager .btn-default:focus,.pat-filemanager .btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.pat-filemanager .btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.pat-filemanager .btn-default:active,.pat-filemanager .btn-default.active,.open>.dropdown-toggle.pat-filemanager .btn-default,.open>.pat-filemanager .dropdown-toggle.btn-default,.pat-filemanager .open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.pat-filemanager .btn-default:active:hover,.pat-filemanager .btn-default.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-default:hover,.pat-filemanager .btn-default:active:focus,.pat-filemanager .btn-default.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-default:focus,.pat-filemanager .btn-default:active.focus,.pat-filemanager .btn-default.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-default.focus,.open>.pat-filemanager .dropdown-toggle.btn-default:hover,.open>.pat-filemanager .dropdown-toggle.btn-default:focus,.open>.pat-filemanager .dropdown-toggle.btn-default.focus,.pat-filemanager .open>.dropdown-toggle.btn-default:hover,.pat-filemanager .open>.dropdown-toggle.btn-default:focus,.pat-filemanager .open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.pat-filemanager .btn-default:active,.pat-filemanager .btn-default.active,.open>.dropdown-toggle.pat-filemanager .btn-default,.open>.pat-filemanager .dropdown-toggle.btn-default,.pat-filemanager .open>.dropdown-toggle.btn-default{background-image:none}.pat-filemanager .btn-default.disabled:hover,.pat-filemanager .btn-default[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-default:hover,.pat-filemanager .btn-default.disabled:focus,.pat-filemanager .btn-default[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-default:focus,.pat-filemanager .btn-default.disabled.focus,.pat-filemanager .btn-default[disabled].focus,fieldset[disabled] .pat-filemanager .btn-default.focus{background-color:#fff;border-color:#ccc}.pat-filemanager .btn-default .badge{color:#fff;background-color:#333}.pat-filemanager .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.pat-filemanager .btn-primary:focus,.pat-filemanager .btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.pat-filemanager .btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.pat-filemanager .btn-primary:active,.pat-filemanager .btn-primary.active,.open>.dropdown-toggle.pat-filemanager .btn-primary,.open>.pat-filemanager .dropdown-toggle.btn-primary,.pat-filemanager .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.pat-filemanager .btn-primary:active:hover,.pat-filemanager .btn-primary.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-primary:hover,.pat-filemanager .btn-primary:active:focus,.pat-filemanager .btn-primary.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-primary:focus,.pat-filemanager .btn-primary:active.focus,.pat-filemanager .btn-primary.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-primary.focus,.open>.pat-filemanager .dropdown-toggle.btn-primary:hover,.open>.pat-filemanager .dropdown-toggle.btn-primary:focus,.open>.pat-filemanager .dropdown-toggle.btn-primary.focus,.pat-filemanager .open>.dropdown-toggle.btn-primary:hover,.pat-filemanager .open>.dropdown-toggle.btn-primary:focus,.pat-filemanager .open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.pat-filemanager .btn-primary:active,.pat-filemanager .btn-primary.active,.open>.dropdown-toggle.pat-filemanager .btn-primary,.open>.pat-filemanager .dropdown-toggle.btn-primary,.pat-filemanager .open>.dropdown-toggle.btn-primary{background-image:none}.pat-filemanager .btn-primary.disabled:hover,.pat-filemanager .btn-primary[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-primary:hover,.pat-filemanager .btn-primary.disabled:focus,.pat-filemanager .btn-primary[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-primary:focus,.pat-filemanager .btn-primary.disabled.focus,.pat-filemanager .btn-primary[disabled].focus,fieldset[disabled] .pat-filemanager .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.pat-filemanager .btn-primary .badge{color:#337ab7;background-color:#fff}.pat-filemanager .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.pat-filemanager .btn-success:focus,.pat-filemanager .btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.pat-filemanager .btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.pat-filemanager .btn-success:active,.pat-filemanager .btn-success.active,.open>.dropdown-toggle.pat-filemanager .btn-success,.open>.pat-filemanager .dropdown-toggle.btn-success,.pat-filemanager .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.pat-filemanager .btn-success:active:hover,.pat-filemanager .btn-success.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-success:hover,.pat-filemanager .btn-success:active:focus,.pat-filemanager .btn-success.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-success:focus,.pat-filemanager .btn-success:active.focus,.pat-filemanager .btn-success.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-success.focus,.open>.pat-filemanager .dropdown-toggle.btn-success:hover,.open>.pat-filemanager .dropdown-toggle.btn-success:focus,.open>.pat-filemanager .dropdown-toggle.btn-success.focus,.pat-filemanager .open>.dropdown-toggle.btn-success:hover,.pat-filemanager .open>.dropdown-toggle.btn-success:focus,.pat-filemanager .open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.pat-filemanager .btn-success:active,.pat-filemanager .btn-success.active,.open>.dropdown-toggle.pat-filemanager .btn-success,.open>.pat-filemanager .dropdown-toggle.btn-success,.pat-filemanager .open>.dropdown-toggle.btn-success{background-image:none}.pat-filemanager .btn-success.disabled:hover,.pat-filemanager .btn-success[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-success:hover,.pat-filemanager .btn-success.disabled:focus,.pat-filemanager .btn-success[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-success:focus,.pat-filemanager .btn-success.disabled.focus,.pat-filemanager .btn-success[disabled].focus,fieldset[disabled] .pat-filemanager .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.pat-filemanager .btn-success .badge{color:#5cb85c;background-color:#fff}.open>.pat-filemanager .dropdown-toggle.btn-info,.pat-filemanager .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.open>.pat-filemanager .dropdown-toggle.btn-info:hover,.open>.pat-filemanager .dropdown-toggle.btn-info:focus,.open>.pat-filemanager .dropdown-toggle.btn-info.focus,.pat-filemanager .open>.dropdown-toggle.btn-info:hover,.pat-filemanager .open>.dropdown-toggle.btn-info:focus,.pat-filemanager .open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.open>.pat-filemanager .dropdown-toggle.btn-info,.pat-filemanager .open>.dropdown-toggle.btn-info{background-image:none}.open>.pat-filemanager .dropdown-toggle.btn-warning,.pat-filemanager .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.open>.pat-filemanager .dropdown-toggle.btn-warning:hover,.open>.pat-filemanager .dropdown-toggle.btn-warning:focus,.open>.pat-filemanager .dropdown-toggle.btn-warning.focus,.pat-filemanager .open>.dropdown-toggle.btn-warning:hover,.pat-filemanager .open>.dropdown-toggle.btn-warning:focus,.pat-filemanager .open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.open>.pat-filemanager .dropdown-toggle.btn-warning,.pat-filemanager .open>.dropdown-toggle.btn-warning{background-image:none}.pat-filemanager .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.pat-filemanager .btn-danger:focus,.pat-filemanager .btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.pat-filemanager .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.pat-filemanager .btn-danger:active,.pat-filemanager .btn-danger.active,.open>.dropdown-toggle.pat-filemanager .btn-danger,.open>.pat-filemanager .dropdown-toggle.btn-danger,.pat-filemanager .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.pat-filemanager .btn-danger:active:hover,.pat-filemanager .btn-danger.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-danger:hover,.pat-filemanager .btn-danger:active:focus,.pat-filemanager .btn-danger.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-danger:focus,.pat-filemanager .btn-danger:active.focus,.pat-filemanager .btn-danger.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-danger.focus,.open>.pat-filemanager .dropdown-toggle.btn-danger:hover,.open>.pat-filemanager .dropdown-toggle.btn-danger:focus,.open>.pat-filemanager .dropdown-toggle.btn-danger.focus,.pat-filemanager .open>.dropdown-toggle.btn-danger:hover,.pat-filemanager .open>.dropdown-toggle.btn-danger:focus,.pat-filemanager .open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.pat-filemanager .btn-danger:active,.pat-filemanager .btn-danger.active,.open>.dropdown-toggle.pat-filemanager .btn-danger,.open>.pat-filemanager .dropdown-toggle.btn-danger,.pat-filemanager .open>.dropdown-toggle.btn-danger{background-image:none}.pat-filemanager .btn-danger.disabled:hover,.pat-filemanager .btn-danger[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-danger:hover,.pat-filemanager .btn-danger.disabled:focus,.pat-filemanager .btn-danger[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-danger:focus,.pat-filemanager .btn-danger.disabled.focus,.pat-filemanager .btn-danger[disabled].focus,fieldset[disabled] .pat-filemanager .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.pat-filemanager .btn-danger .badge{color:#d9534f;background-color:#fff}.pat-filemanager .btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn,.pat-filemanager .btn-group>.btn{position:relative;float:left}.btn-group>.pat-filemanager .btn:hover,.btn-group-vertical>.pat-filemanager .btn:hover,.btn-group>.pat-filemanager .btn:focus,.btn-group-vertical>.pat-filemanager .btn:focus,.btn-group>.pat-filemanager .btn:active,.btn-group-vertical>.pat-filemanager .btn:active,.btn-group>.pat-filemanager .btn.active,.btn-group-vertical>.pat-filemanager .btn.active,.pat-filemanager .btn-group>.btn:hover,.pat-filemanager .btn-group>.btn:focus,.pat-filemanager .btn-group>.btn:active,.pat-filemanager .btn-group>.btn.active{z-index:2}.btn-group .pat-filemanager .btn+.pat-filemanager .btn,.btn-group .pat-filemanager .btn+.btn-group,.btn-group .btn-group+.pat-filemanager .btn,.pat-filemanager .btn-group .btn+.btn,.pat-filemanager .btn-group .btn+.pat-filemanager .btn-group,.pat-filemanager .btn-group .pat-filemanager .btn-group+.btn,.pat-filemanager .btn-group .pat-filemanager .btn-group+.pat-filemanager .btn-group{margin-left:-1px}.btn-toolbar .pat-filemanager .btn,.btn-toolbar .pat-filemanager .btn-group,.btn-toolbar .pat-filemanager .input-group{float:left}.btn-toolbar>.pat-filemanager .btn,.btn-toolbar>.pat-filemanager .btn-group,.btn-toolbar>.pat-filemanager .input-group{margin-left:5px}.btn-group>.pat-filemanager .btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.pat-filemanager .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.pat-filemanager .btn:first-child,.pat-filemanager .btn-group>.btn:first-child{margin-left:0}.btn-group>.pat-filemanager .btn:first-child:not(:last-child):not(.dropdown-toggle),.pat-filemanager .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.pat-filemanager .btn:last-child:not(:first-child),.pat-filemanager .btn-group>.btn:last-child:not(:first-child),.pat-filemanager .btn-group>.dropdown-toggle:not(:first-child),.btn-group>.pat-filemanager .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.pat-filemanager .btn-group>.pat-filemanager .btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.pat-filemanager .btn,.pat-filemanager .btn-group>.pat-filemanager .btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.pat-filemanager .btn:last-child,.pat-filemanager .btn-group>.pat-filemanager .btn-group:first-child:not(:last-child)>.btn:last-child,.pat-filemanager .btn-group>.pat-filemanager .btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn-group:first-child:not(:last-child)>.pat-filemanager .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.pat-filemanager .btn:first-child,.pat-filemanager .btn-group>.pat-filemanager .btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.pat-filemanager .btn-group .dropdown-toggle:active,.pat-filemanager .btn-group.open .dropdown-toggle,.btn-group .pat-filemanager .dropdown-toggle:active,.btn-group.open .pat-filemanager .dropdown-toggle,.btn-group.pat-filemanager .open .dropdown-toggle{outline:0}.btn-group>.pat-filemanager .btn+.dropdown-toggle,.pat-filemanager .btn-group>.btn+.dropdown-toggle,.btn-group>.btn+.pat-filemanager .dropdown-toggle{padding-left:8px;padding-right:8px}.pat-filemanager .btn-group>.btn-lg+.dropdown-toggle,.btn-group>.btn-lg+.pat-filemanager .dropdown-toggle{padding-left:12px;padding-right:12px}.pat-filemanager .btn-group.open .dropdown-toggle,.btn-group.open .pat-filemanager .dropdown-toggle,.btn-group.pat-filemanager .open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.pat-filemanager .btn-group.open .dropdown-toggle.btn-link,.btn-group.open .pat-filemanager .dropdown-toggle.btn-link,.btn-group.pat-filemanager .open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.pat-filemanager .btn .caret{margin-left:0}.btn-group-vertical>.pat-filemanager .btn,.btn-group-vertical>.btn-group>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn-group,.btn-group-vertical>.pat-filemanager .btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn-group>.btn{float:none}.btn-group-vertical>.pat-filemanager .btn+.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn+.btn-group,.btn-group-vertical>.btn-group+.pat-filemanager .btn,.btn-group-vertical>.btn+.pat-filemanager .btn-group,.btn-group-vertical>.pat-filemanager .btn-group+.btn,.btn-group-vertical>.pat-filemanager .btn-group+.pat-filemanager .btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.pat-filemanager .btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.pat-filemanager .btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.pat-filemanager .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.pat-filemanager .btn:last-child,.btn-group-vertical>.pat-filemanager .btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.pat-filemanager .btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.pat-filemanager .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.pat-filemanager .btn:first-child,.btn-group-vertical>.pat-filemanager .btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified>.pat-filemanager .btn,.btn-group-justified>.pat-filemanager .btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .pat-filemanager .btn,.btn-group-justified>.pat-filemanager .btn-group .btn{width:100%}.btn-group-justified>.pat-filemanager .btn-group .dropdown-menu,.btn-group-justified>.btn-group .pat-filemanager .dropdown-menu{left:auto}[data-toggle="buttons"]>.pat-filemanager .btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.pat-filemanager .btn input[type="radio"],[data-toggle="buttons"]>.pat-filemanager .btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.pat-filemanager .btn input[type="checkbox"],[data-toggle="buttons"]>.pat-filemanager .btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.pat-filemanager .btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.pat-filemanager .btn .badge{position:relative;top:-1px}.btn-group-xs>.pat-filemanager .btn .badge{top:0;padding:1px 5px}.pat-filemanager .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-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.pat-filemanager .popover.top{margin-top:-10px}.pat-filemanager .popover.right{margin-left:10px}.pat-filemanager .popover.bottom{margin-top:10px}.pat-filemanager .popover.left{margin-left:-10px}.pat-filemanager .popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.pat-filemanager .popover-content{padding:9px 14px}.pat-filemanager .popover>.arrow,.pat-filemanager .popover>.arrow:after,.popover>.pat-filemanager .arrow,.popover>.pat-filemanager .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.pat-filemanager .popover>.arrow,.popover>.pat-filemanager .arrow{border-width:11px}.pat-filemanager .popover>.arrow:after,.popover>.pat-filemanager .arrow:after{border-width:10px;content:""}.pat-filemanager .popover.top>.arrow,.popover.top>.pat-filemanager .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.pat-filemanager .popover.top>.arrow:after,.popover.top>.pat-filemanager .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.pat-filemanager .popover.right>.arrow,.popover.right>.pat-filemanager .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.pat-filemanager .popover.right>.arrow:after,.popover.right>.pat-filemanager .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.pat-filemanager .popover.bottom>.arrow,.popover.bottom>.pat-filemanager .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.pat-filemanager .popover.bottom>.arrow:after,.popover.bottom>.pat-filemanager .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.pat-filemanager .popover.left>.arrow,.popover.left>.pat-filemanager .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.pat-filemanager .popover.left>.arrow:after,.popover.left>.pat-filemanager .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.pat-filemanager .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pat-filemanager .pagination>li{display:inline}.pat-filemanager .pagination>li>a,.pat-filemanager .pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pat-filemanager .pagination>li:first-child>a,.pat-filemanager .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pat-filemanager .pagination>li:last-child>a,.pat-filemanager .pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pat-filemanager .pagination>li>a:hover,.pat-filemanager .pagination>li>span:hover,.pat-filemanager .pagination>li>a:focus,.pat-filemanager .pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pat-filemanager .pagination>.active>a,.pat-filemanager .pagination>.active>span,.pat-filemanager .pagination>.active>a:hover,.pat-filemanager .pagination>.active>span:hover,.pat-filemanager .pagination>.active>a:focus,.pat-filemanager .pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pat-filemanager .pagination>.disabled>span,.pat-filemanager .pagination>.disabled>span:hover,.pat-filemanager .pagination>.disabled>span:focus,.pat-filemanager .pagination>.disabled>a,.pat-filemanager .pagination>.disabled>a:hover,.pat-filemanager .pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pat-filemanager .input-group{position:relative;display:table;border-collapse:separate}.pat-filemanager .input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.pat-filemanager .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.pat-filemanager .input-group .form-control:focus{z-index:3}.input-group-lg>.input-group-btn>.pat-filemanager .btn,.input-group-lg>.pat-filemanager .input-group-addon,.input-group-lg>.pat-filemanager .input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.input-group-btn>.pat-filemanager .btn,select.input-group-lg>.pat-filemanager .input-group-addon,select.input-group-lg>.pat-filemanager .input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.input-group-btn>.pat-filemanager .btn,select[multiple].input-group-lg>.input-group-btn>.pat-filemanager .btn,textarea.input-group-lg>.pat-filemanager .input-group-addon,select[multiple].input-group-lg>.pat-filemanager .input-group-addon,textarea.input-group-lg>.pat-filemanager .input-group-btn>.btn,select[multiple].input-group-lg>.pat-filemanager .input-group-btn>.btn{height:auto}.input-group-sm>.input-group-btn>.pat-filemanager .btn,.input-group-sm>.pat-filemanager .input-group-addon,.input-group-sm>.pat-filemanager .input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.input-group-btn>.pat-filemanager .btn,select.input-group-sm>.pat-filemanager .input-group-addon,select.input-group-sm>.pat-filemanager .input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.input-group-btn>.pat-filemanager .btn,select[multiple].input-group-sm>.input-group-btn>.pat-filemanager .btn,textarea.input-group-sm>.pat-filemanager .input-group-addon,select[multiple].input-group-sm>.pat-filemanager .input-group-addon,textarea.input-group-sm>.pat-filemanager .input-group-btn>.btn,select[multiple].input-group-sm>.pat-filemanager .input-group-btn>.btn{height:auto}.pat-filemanager .input-group .form-control,.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{display:table-cell}.pat-filemanager .input-group .form-control:not(:first-child):not(:last-child),.pat-filemanager .input-group-addon:not(:first-child):not(:last-child),.pat-filemanager .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.pat-filemanager .input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.pat-filemanager .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.pat-filemanager .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.pat-filemanager .input-group-addon input[type="radio"],.pat-filemanager .input-group-addon input[type="checkbox"]{margin-top:0}.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.btn-group>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group:not(:last-child)>.btn,.pat-filemanager .input-group .form-control:first-child,.pat-filemanager .input-group-addon:first-child,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group>.btn,.pat-filemanager .input-group-btn:first-child>.dropdown-toggle,.pat-filemanager .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.pat-filemanager .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.pat-filemanager .input-group-addon:first-child{border-right:0}.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.btn-group>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group:not(:first-child)>.btn,.pat-filemanager .input-group .form-control:last-child,.pat-filemanager .input-group-addon:last-child,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group>.btn,.pat-filemanager .input-group-btn:last-child>.dropdown-toggle,.pat-filemanager .input-group-btn:first-child>.btn:not(:first-child),.pat-filemanager .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.pat-filemanager .input-group-addon:last-child{border-left:0}.pat-filemanager .input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn{position:relative}.input-group-btn>.pat-filemanager .btn+.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.pat-filemanager .btn:hover,.input-group-btn>.pat-filemanager .btn:focus,.input-group-btn>.pat-filemanager .btn:active,.pat-filemanager .input-group-btn>.btn:hover,.pat-filemanager .input-group-btn>.btn:focus,.pat-filemanager .input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.pat-filemanager .table{width:100%;max-width:100%;margin-bottom:20px}.pat-filemanager .table>thead>tr>th,.pat-filemanager .table>tbody>tr>th,.pat-filemanager .table>tfoot>tr>th,.pat-filemanager .table>thead>tr>td,.pat-filemanager .table>tbody>tr>td,.pat-filemanager .table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.pat-filemanager .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.pat-filemanager .table>caption+thead>tr:first-child>th,.pat-filemanager .table>colgroup+thead>tr:first-child>th,.pat-filemanager .table>thead:first-child>tr:first-child>th,.pat-filemanager .table>caption+thead>tr:first-child>td,.pat-filemanager .table>colgroup+thead>tr:first-child>td,.pat-filemanager .table>thead:first-child>tr:first-child>td{border-top:0}.pat-filemanager .table>tbody+tbody{border-top:2px solid #ddd}.pat-filemanager .table .pat-filemanager .table{background-color:#fff}.pat-filemanager .table-bordered{border:1px solid #ddd}.pat-filemanager .table-bordered>thead>tr>th,.pat-filemanager .table-bordered>tbody>tr>th,.pat-filemanager .table-bordered>tfoot>tr>th,.pat-filemanager .table-bordered>thead>tr>td,.pat-filemanager .table-bordered>tbody>tr>td,.pat-filemanager .table-bordered>tfoot>tr>td{border:1px solid #ddd}.pat-filemanager .table-bordered>thead>tr>th,.pat-filemanager .table-bordered>thead>tr>td{border-bottom-width:2px}.pat-filemanager .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.pat-filemanager .table>thead>tr>td.active,.pat-filemanager .table>tbody>tr>td.active,.pat-filemanager .table>tfoot>tr>td.active,.pat-filemanager .table>thead>tr>th.active,.pat-filemanager .table>tbody>tr>th.active,.pat-filemanager .table>tfoot>tr>th.active,.pat-filemanager .table>thead>tr.active>td,.pat-filemanager .table>tbody>tr.active>td,.pat-filemanager .table>tfoot>tr.active>td,.pat-filemanager .table>thead>tr.active>th,.pat-filemanager .table>tbody>tr.active>th,.pat-filemanager .table>tfoot>tr.active>th{background-color:#f5f5f5}.pat-filemanager .table>thead>tr>td.success,.pat-filemanager .table>tbody>tr>td.success,.pat-filemanager .table>tfoot>tr>td.success,.pat-filemanager .table>thead>tr>th.success,.pat-filemanager .table>tbody>tr>th.success,.pat-filemanager .table>tfoot>tr>th.success,.pat-filemanager .table>thead>tr.success>td,.pat-filemanager .table>tbody>tr.success>td,.pat-filemanager .table>tfoot>tr.success>td,.pat-filemanager .table>thead>tr.success>th,.pat-filemanager .table>tbody>tr.success>th,.pat-filemanager .table>tfoot>tr.success>th{background-color:#dff0d8}.pat-filemanager .table>thead>tr>td.info,.pat-filemanager .table>tbody>tr>td.info,.pat-filemanager .table>tfoot>tr>td.info,.pat-filemanager .table>thead>tr>th.info,.pat-filemanager .table>tbody>tr>th.info,.pat-filemanager .table>tfoot>tr>th.info,.pat-filemanager .table>thead>tr.info>td,.pat-filemanager .table>tbody>tr.info>td,.pat-filemanager .table>tfoot>tr.info>td,.pat-filemanager .table>thead>tr.info>th,.pat-filemanager .table>tbody>tr.info>th,.pat-filemanager .table>tfoot>tr.info>th{background-color:#d9edf7}.pat-filemanager .table>thead>tr>td.warning,.pat-filemanager .table>tbody>tr>td.warning,.pat-filemanager .table>tfoot>tr>td.warning,.pat-filemanager .table>thead>tr>th.warning,.pat-filemanager .table>tbody>tr>th.warning,.pat-filemanager .table>tfoot>tr>th.warning,.pat-filemanager .table>thead>tr.warning>td,.pat-filemanager .table>tbody>tr.warning>td,.pat-filemanager .table>tfoot>tr.warning>td,.pat-filemanager .table>thead>tr.warning>th,.pat-filemanager .table>tbody>tr.warning>th,.pat-filemanager .table>tfoot>tr.warning>th{background-color:#fcf8e3}.pat-filemanager .table>thead>tr>td.danger,.pat-filemanager .table>tbody>tr>td.danger,.pat-filemanager .table>tfoot>tr>td.danger,.pat-filemanager .table>thead>tr>th.danger,.pat-filemanager .table>tbody>tr>th.danger,.pat-filemanager .table>tfoot>tr>th.danger,.pat-filemanager .table>thead>tr.danger>td,.pat-filemanager .table>tbody>tr.danger>td,.pat-filemanager .table>tfoot>tr.danger>td,.pat-filemanager .table>thead>tr.danger>th,.pat-filemanager .table>tbody>tr.danger>th,.pat-filemanager .table>tfoot>tr.danger>th{background-color:#f2dede}@media screen and (max-width:767px){.table-responsive>.pat-filemanager .table{margin-bottom:0}.table-responsive>.pat-filemanager .table>thead>tr>th,.table-responsive>.pat-filemanager .table>tbody>tr>th,.table-responsive>.pat-filemanager .table>tfoot>tr>th,.table-responsive>.pat-filemanager .table>thead>tr>td,.table-responsive>.pat-filemanager .table>tbody>tr>td,.table-responsive>.pat-filemanager .table>tfoot>tr>td{white-space:nowrap}.table-responsive>.pat-filemanager .table-bordered{border:0}.table-responsive>.pat-filemanager .table-bordered>thead>tr>th:first-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>th:first-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>th:first-child,.table-responsive>.pat-filemanager .table-bordered>thead>tr>td:first-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>td:first-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.pat-filemanager .table-bordered>thead>tr>th:last-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>th:last-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>th:last-child,.table-responsive>.pat-filemanager .table-bordered>thead>tr>td:last-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>td:last-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.pat-filemanager .table-bordered>tbody>tr:last-child>th,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr:last-child>th,.table-responsive>.pat-filemanager .table-bordered>tbody>tr:last-child>td,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.pat-filemanager .dropdown-toggle:focus{outline:0}.pat-filemanager .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;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.pat-filemanager .dropdown-menu.pull-right{right:0;left:auto}.pat-filemanager .dropdown-menu .divider,.dropdown-menu .pat-filemanager .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pat-filemanager .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.pat-filemanager .dropdown-menu>li>a:hover,.pat-filemanager .dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.pat-filemanager .dropdown-menu>.active>a,.pat-filemanager .dropdown-menu>.active>a:hover,.pat-filemanager .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.pat-filemanager .dropdown-menu>.disabled>a,.pat-filemanager .dropdown-menu>.disabled>a:hover,.pat-filemanager .dropdown-menu>.disabled>a:focus{color:#777}.pat-filemanager .dropdown-menu>.disabled>a:hover,.pat-filemanager .dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.pat-filemanager .dropdown-menu,.pat-filemanager .open>.dropdown-menu{display:block}.pat-filemanager .open>a{outline:0}.pat-filemanager .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.pull-right>.pat-filemanager .dropdown-menu{right:0;left:auto}.dropup .pat-filemanager .dropdown-menu,.navbar-fixed-bottom .dropdown .pat-filemanager .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .pat-filemanager .dropdown-menu{left:auto;right:0}}.pat-filemanager .form-group{margin-bottom:15px}.pat-filemanager .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.pat-filemanager .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.pat-filemanager .checkbox input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \\9}.pat-filemanager .checkbox+.pat-filemanager .checkbox{margin-top:-5px}.pat-filemanager .checkbox.disabled label,fieldset[disabled] .pat-filemanager .checkbox label{cursor:not-allowed}.has-success .pat-filemanager .help-block,.has-success .pat-filemanager .checkbox,.has-success.pat-filemanager .checkbox label{color:#3c763d}.has-success .pat-filemanager .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .pat-filemanager .help-block,.has-warning .pat-filemanager .checkbox,.has-warning.pat-filemanager .checkbox label{color:#8a6d3b}.has-warning .pat-filemanager .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .pat-filemanager .help-block,.has-error .pat-filemanager .checkbox,.has-error.pat-filemanager .checkbox label{color:#a94442}.has-error .pat-filemanager .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.pat-filemanager .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .pat-filemanager .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .pat-filemanager .input-group{display:inline-table;vertical-align:middle}.form-inline .pat-filemanager .input-group .input-group-addon,.form-inline .pat-filemanager .input-group .input-group-btn,.form-inline .pat-filemanager .input-group .form-control,.form-inline .input-group .pat-filemanager .input-group-addon,.form-inline .input-group .pat-filemanager .input-group-btn{width:auto}.form-inline .pat-filemanager .input-group>.form-control{width:100%}.form-inline .pat-filemanager .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .pat-filemanager .checkbox label{padding-left:0}.form-inline .pat-filemanager .checkbox input[type="checkbox"]{position:relative;margin-left:0}}.form-horizontal .pat-filemanager .checkbox{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .pat-filemanager .checkbox{min-height:27px}.form-horizontal .pat-filemanager .form-group{margin-left:-15px;margin-right:-15px}.pat-filemanager .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.pat-filemanager .navbar{border-radius:4px}}.pat-filemanager .navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.pat-filemanager .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.pat-filemanager .navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.pat-filemanager .collapse,.pat-filemanager .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.pat-filemanager .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .pat-filemanager .navbar-collapse,.navbar-static-top .pat-filemanager .navbar-collapse,.navbar-fixed-bottom .pat-filemanager .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .pat-filemanager .navbar-collapse,.navbar-fixed-bottom .pat-filemanager .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .pat-filemanager .navbar-collapse,.navbar-fixed-bottom .pat-filemanager .navbar-collapse{max-height:200px}}.container>.pat-filemanager .navbar-collapse,.container-fluid>.pat-filemanager .navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.pat-filemanager .navbar-collapse,.container-fluid>.pat-filemanager .navbar-collapse{margin-right:0;margin-left:0}}@media (min-width:768px){.pat-filemanager .navbar>.container .navbar-brand,.pat-filemanager .navbar>.container-fluid .navbar-brand{margin-left:-15px}}.pat-filemanager .navbar-nav{margin:7.5px -15px}.pat-filemanager .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .pat-filemanager .dropdown-menu,.pat-filemanager .navbar-nav .open .dropdown-menu,.navbar-nav .pat-filemanager .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.navbar-nav .open .pat-filemanager .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu .pat-filemanager .dropdown-header,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.pat-filemanager .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a,.navbar-nav .pat-filemanager .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .pat-filemanager .dropdown-menu>li>a:hover,.navbar-nav .open .pat-filemanager .dropdown-menu>li>a:focus,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a:hover,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a:hover,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.pat-filemanager .navbar-nav{float:left;margin:0}.pat-filemanager .navbar-nav>li{float:left}.pat-filemanager .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media (min-width:768px){.navbar-form .pat-filemanager .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .pat-filemanager .input-group{display:inline-table;vertical-align:middle}.navbar-form .pat-filemanager .input-group .input-group-addon,.navbar-form .pat-filemanager .input-group .input-group-btn,.navbar-form .pat-filemanager .input-group .form-control,.navbar-form .input-group .pat-filemanager .input-group-addon,.navbar-form .input-group .pat-filemanager .input-group-btn{width:auto}.navbar-form .pat-filemanager .input-group>.form-control{width:100%}.navbar-form .pat-filemanager .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .pat-filemanager .checkbox label{padding-left:0}.navbar-form .pat-filemanager .checkbox input[type="checkbox"]{position:relative;margin-left:0}}@media (max-width:767px){.navbar-form .pat-filemanager .form-group{margin-bottom:5px}.navbar-form .pat-filemanager .form-group:last-child{margin-bottom:0}}@media (min-width:768px){}.navbar-nav>li>.pat-filemanager .dropdown-menu,.pat-filemanager .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.pat-filemanager .dropdown-menu,.navbar-fixed-bottom .pat-filemanager .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-default .pat-filemanager .navbar-nav>li>a{color:#777}.navbar-default .pat-filemanager .navbar-nav>li>a:hover,.navbar-default .pat-filemanager .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .pat-filemanager .navbar-nav>.active>a,.navbar-default .pat-filemanager .navbar-nav>.active>a:hover,.navbar-default .pat-filemanager .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .pat-filemanager .navbar-nav>.disabled>a,.navbar-default .pat-filemanager .navbar-nav>.disabled>a:hover,.navbar-default .pat-filemanager .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .pat-filemanager .navbar-collapse{border-color:#e7e7e7}.navbar-default .pat-filemanager .navbar-nav>.open>a,.navbar-default .pat-filemanager .navbar-nav>.open>a:hover,.navbar-default .pat-filemanager .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.pat-filemanager .open>a,.navbar-default .navbar-nav>.pat-filemanager .open>a:hover,.navbar-default .navbar-nav>.pat-filemanager .open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:focus,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:focus,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:focus,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-inverse .pat-filemanager .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .pat-filemanager .navbar-nav>li>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .pat-filemanager .navbar-nav>.active>a,.navbar-inverse .pat-filemanager .navbar-nav>.active>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .pat-filemanager .navbar-nav>.disabled>a,.navbar-inverse .pat-filemanager .navbar-nav>.disabled>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .pat-filemanager .navbar-collapse{border-color:#101010}.navbar-inverse .pat-filemanager .navbar-nav>.open>a,.navbar-inverse .pat-filemanager .navbar-nav>.open>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.pat-filemanager .open>a,.navbar-inverse .navbar-nav>.pat-filemanager .open>a:hover,.navbar-inverse .navbar-nav>.pat-filemanager .open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.dropdown-header,.navbar-inverse .navbar-nav .open .dropdown-menu>.pat-filemanager .dropdown-header,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.dropdown-header,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu .divider,.navbar-inverse .navbar-nav .open .dropdown-menu .pat-filemanager .divider,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu .divider,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:focus,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:focus,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:focus,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.pat-filemanager .nav{margin-bottom:0;padding-left:0;list-style:none}.pat-filemanager .nav>li{position:relative;display:block}.pat-filemanager .nav>li>a{position:relative;display:block;padding:10px 15px}.pat-filemanager .nav>li>a:hover,.pat-filemanager .nav>li>a:focus{text-decoration:none;background-color:#eee}.pat-filemanager .nav>li.disabled>a{color:#777}.pat-filemanager .nav>li.disabled>a:hover,.pat-filemanager .nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.pat-filemanager .nav .open>a,.pat-filemanager .nav .open>a:hover,.pat-filemanager .nav .open>a:focus,.nav .pat-filemanager .open>a,.nav .pat-filemanager .open>a:hover,.nav .pat-filemanager .open>a:focus{background-color:#eee;border-color:#337ab7}.pat-filemanager .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pat-filemanager .nav>li>a>img{max-width:none}.nav-tabs.nav-justified>.dropdown .pat-filemanager .dropdown-menu{top:auto;left:auto}.nav-justified>.dropdown .pat-filemanager .dropdown-menu{top:auto;left:auto}.nav-tabs .pat-filemanager .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.pat-filemanager .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.pat-filemanager .fade.in{opacity:1}.pat-filemanager .collapse{display:none}.pat-filemanager .collapse.in{display:block}tr.pat-filemanager .collapse.in{display:table-row}tbody.pat-filemanager .collapse.in{display:table-row-group}.pat-filemanager .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.pat-filemanager #fileselector li label{display:inline}.pat-filemanager .glyphicon{top:2px}.pat-filemanager ul li,.pat-filemanager ol li{text-indent:0;padding-left:0}.pat-filemanager li::before{content:"";padding-right:0}.pat-filemanager #fileselector li label{font-weight:normal;margin-bottom:0}.pat-filemanager .popover.upload,.pat-filemanager .pat-filemanager .popover.upload{max-width:700px}.pat-filemanager .tree{float:left;width:17%;word-wrap:break-word;font-size:.8em;margin-top:2.5em}.pat-filemanager .tree ul.jqtree-tree li.jqtree-selected>.jqtree-element,.pat-filemanager .tree ul.jqtree-tree li>.jqtree-element:hover{background:#E7E7E7}.pat-filemanager .tree ul.jqtree-tree{margin-left:0}.pat-filemanager .tree ul.jqtree-tree li.jqtree_common{margin-bottom:.2em}.pat-filemanager .tree ul.jqtree-tree .jqtree-title{margin-left:0}.pat-filemanager .navbar .btn-group>a.btn,.pat-filemanager .navbar .btn-group>a.pat-filemanager .btn,.pat-filemanager .navbar .pat-filemanager .btn-group>a.btn,.pat-filemanager .pat-filemanager .navbar .btn-group>a.btn{float:none;display:inline-block;margin-bottom:.5em;text-decoration:none}.pat-filemanager .navbar-default{min-height:250px}.pat-filemanager .nav-and-editor{float:left;width:75%}.pat-filemanager .nav-and-editor .navbar .navbar-collapse.collapse,.pat-filemanager .nav-and-editor .navbar .navbar-collapse.pat-filemanager .collapse,.pat-filemanager .nav-and-editor .pat-filemanager .navbar .navbar-collapse.collapse,.pat-filemanager .nav-and-editor .navbar .pat-filemanager .navbar-collapse.collapse{height:37px !important}.pat-filemanager .navbar-nav>li,.pat-filemanager .pat-filemanager .navbar-nav>li{padding-left:15px;padding-right:15px;background-color:#F8F8F8;-webkit-border-top-left-radius:10px;-webkit-border-top-right-radius:10px;-moz-border-radius-topleft:10px;-moz-border-radius-topright:10px;border-top-left-radius:10px;border-top-right-radius:10px;margin-right:5px;border-top:1px solid #CCC;border-right:1px solid #CCC;border-left:1px solid #CCC}.pat-filemanager .navbar-nav>li.active,.pat-filemanager .pat-filemanager .navbar-nav>li.active{border-top:1px solid #999;border-right:1px solid #999;border-left:1px solid #999;background-color:#E7E7E7}.pat-filemanager .navbar-nav>li.active a,.pat-filemanager .pat-filemanager .navbar-nav>li.active a{background-color:#E7E7E7}.pat-filemanager .navbar-nav>li>a,.pat-filemanager .pat-filemanager .navbar-nav>li>a{display:inline-block;padding:8px 0;text-decoration:none;color:#333}.pat-filemanager .navbar-nav>li>a+a,.pat-filemanager .pat-filemanager .navbar-nav>li>a+a{padding-left:4px}.pat-filemanager .navbar-nav>li>a:focus,.pat-filemanager .pat-filemanager .navbar-nav>li>a:focus{outline:none}.pat-filemanager .navbar-nav>li.modified>a,.pat-filemanager .pat-filemanager .navbar-nav>li.modified>a{color:#f0ad4e}body.plone-toolbar-left-default{padding-left:0}#edit-zone{display:none}.pat-thememapper{font-family:Roboto,sans-serif}.pat-thememapper iframe{width:100%;height:300px;border:solid #eee 1px;position:relative}.pat-thememapper iframe.fullscreen-frame{height:600px}.pat-thememapper .fullscreen{vertical-align:top;display:inline-block;line-height:12px;padding:0 0 0 18px;margin:4px 0 0 2px;background-repeat:no-repeat;text-decoration:none;border-bottom:none !important;color:#333 !important;font-size:90%;content:none}.pat-thememapper .refresh{vertical-align:top;display:inline-block;line-height:12px;padding:0 0 0 12px;margin:4px 0 0 5px;background-repeat:no-repeat;text-decoration:none;border-bottom:none !important;color:#333 !important;font-size:90%;content:none}.pat-thememapper .frame-info{background-color:#EEEEEE;height:1.5em;margin-right:-2px;padding:0 5px;vertical-align:middle}.pat-thememapper .frame-shelf{float:right}.pat-thememapper .clear-shelf{font-size:85%;vertical-align:top;text-decoration:none;border-bottom:none !important}.pat-thememapper .panel-toolbar,.pat-thememapper .frame-shelf-container{float:right}.pat-thememapper .show-fullscreen .frame-panel{position:fixed;top:0;left:0;z-index:99999999;width:100%;height:100%;background-color:white}.pat-thememapper .show-fullscreen .frame-panel iframe{height:80%}.pat-thememapper .ace_editor{border:1px solid #999}.pat-thememapper .ace_editor .info{width:100%;height:100%}.pat-thememapper .ace_editor .info img{max-height:80%}.pat-thememapper .navbar-nav a,.pat-thememapper .pat-filemanager .navbar-nav a{color:black;text-decoration:none;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}.pat-thememapper .navbar.ui-offset-parent,.pat-thememapper .pat-filemanager .navbar.ui-offset-parent,.pat-thememapper .navbar.pat-filemanager .ui-offset-parent{margin-bottom:0}.pat-thememapper .container.fullscreen{position:fixed;top:0;left:0;z-index:99999999;width:100%;height:100%;margin:0;background-color:white}.pat-thememapper .container.fullscreen .tree{height:97%;width:15%;border:none}.pat-thememapper .container.fullscreen .nav-and-editor{width:83%;height:97%;border:none}.pat-thememapper .container.fullscreen .closeeditor{margin-bottom:10px;font-size:x-small}.pat-thememapper .tree{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;border-color:#ddd;border-style:solid;border-right:0;padding:10px;overflow-y:scroll;height:80vh;margin-top:0}.pat-thememapper .tree .jqtree-tree{margin-top:0}.pat-thememapper .tree .jqtree-tree .jqtree-title{padding:2px}.pat-thememapper .tree .jqtree-tree li{white-space:nowrap;overflow:hidden;padding:3px 0 3px 0}.pat-thememapper .tree .glyphicon{top:-1px}.pat-thememapper .tree .glyphicon:before{margin-right:5px}.pat-thememapper .tree ul.jqtree-tree li.jqtree_common>div:hover{background-color:#1C4257}.pat-thememapper .tree ul.jqtree-tree li.jqtree_common>div:hover span{color:white;text-shadow:none}.pat-thememapper .tree ul.jqtree-tree li.jqtree_common>div:hover a{color:white;text-shadow:none}.pat-thememapper .tree ul.jqtree-tree li.jqtree-selected{font-weight:bold}.pat-thememapper .tree ul.jqtree-tree li.jqtree-selected>.jqtree_common{background-color:#E7E7E7}.pat-thememapper .nav-and-editor{background-color:#ccc;width:70vw;height:80vh;padding-bottom:20px;border-color:#ddd;border-style:solid;border-left:0}.pat-thememapper .nav-and-editor .collapse,.pat-thememapper .nav-and-editor .pat-filemanager .collapse{padding-left:0}.pat-thememapper .navbar-nav>li,.pat-thememapper .pat-filemanager .navbar-nav>li{background-color:#DDD}.pat-thememapper .navbar-nav>li a,.pat-thememapper .pat-filemanager .navbar-nav>li a{background-color:transparent}.pat-thememapper .navbar-nav>li.active,.pat-thememapper .pat-filemanager .navbar-nav>li.active{background-color:#FFF}.pat-thememapper .nav.smallTabs li,.pat-thememapper .pat-filemanager .nav.smallTabs li{padding:0 5px 0 5px;font-size:x-small}.pat-thememapper .upload-area{border:2px dashed #ddd;background-color:#eee;padding:10px}.pat-thememapper .upload-area p{margin-top:1em;margin-bottom:1em;text-align:center;font-size:xx-large;color:#aaa}.pat-thememapper .upload-area #fakeUploadFile{display:none}.pat-thememapper .upload-area .row>div{display:inline}.pat-thememapper .upload-area .item{margin:10px 0}.pat-thememapper .upload-area .item div{display:table-cell}.pat-thememapper .upload-area .browse{width:100%}.pat-thememapper .upload-area .title{width:250px}.pat-thememapper .upload-area .action{width:20px}.pat-thememapper .upload-area .info{width:100px}.pat-thememapper .upload-area .info img{display:inline;background-color:white;max-height:50px;float:right;max-width:50px;margin-top:-35px}.pat-thememapper .upload-area .controls{display:none}.pat-thememapper .upload-area .sr-only{display:none}.pat-thememapper .rulebuilderView{max-width:500px}.pat-thememapper .rulebuilderView .inputs{border:1px solid #999;padding:5px}.pat-thememapper .rulebuilderView .new-rule-type-panel>div{margin-top:5px}.pat-thememapper .rulebuilderView .formControls{margin-top:5px}.pat-thememapper .rulebuilderView #new-rule-output{margin:5px 0 5px 0;width:100%;height:80px}.pat-thememapper .rulebuilderView #new-rule-reuse-panel{margin-top:15px}.pat-thememapper #inspectors{clear:both}.pat-thememapper #inspectors .frame-shelf-container{margin-right:5px}.pat-thememapper .pat-filemanager .navbar .btn-group>a.btn,.pat-thememapper .pat-filemanager .navbar .btn-group>a.pat-filemanager .btn,.pat-thememapper .pat-filemanager .navbar .pat-filemanager .btn-group>a.btn,.pat-thememapper .pat-filemanager .pat-filemanager .navbar .btn-group>a.btn{float:none;display:inline-block;line-height:10px;padding:5px;font-size:small;padding-bottom:8px;margin-bottom:.5em}.pat-thememapper .btn-group,.pat-thememapper .pat-filemanager .btn-group{margin-right:30px}.pat-thememapper #lessBuilder .buttonBox{margin-top:10px}.pat-thememapper #lessBuilder .buttonBox label{display:block}.pat-thememapper #lessFileName{margin-bottom:15px;display:block;width:100%}.pat-thememapper .errorMessage{word-wrap:break-word;font-size:small}.pat-thememapper #styleBox{display:none}@site Path:/;@site Path: /;/*# sourceMappingURL=thememapper-compiled.css.map */\n\\ No newline at end of file\n+.autotabs ul li.jqtree_common{display:block}.popover,.pat-filemanager .popover{min-width:111px;max-width:500px}.popover .popover-title,.pat-filemanager .popover .popover-title,.popover .pat-filemanager .popover-title{padding-bottom:0}.popover .popover-title input,.pat-filemanager .popover .popover-title input,.popover .pat-filemanager .popover-title input{margin-bottom:0}.popover.active,.pat-filemanager .popover.active{display:block}.backdrop-popover{background-color:#fff;z-index:1009}.clearfix:before,.clearfix:after,.plone-modal-header:before,.plone-modal-header:after,.plone-modal-footer:before,.plone-modal-footer:after{content:" ";display:table}.clearfix:after,.plone-modal-header:after,.plone-modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right: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}.pat-filemanager .btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pat-filemanager .btn:focus,.pat-filemanager .btn:active:focus,.pat-filemanager .btn.active:focus,.pat-filemanager .btn.focus,.pat-filemanager .btn:active.focus,.pat-filemanager .btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.pat-filemanager .btn:hover,.pat-filemanager .btn:focus,.pat-filemanager .btn.focus{color:#333;text-decoration:none}.pat-filemanager .btn:active,.pat-filemanager .btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.pat-filemanager .btn.disabled,.pat-filemanager .btn[disabled],fieldset[disabled] .pat-filemanager .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.pat-filemanager .btn.disabled,fieldset[disabled] a.pat-filemanager .btn{pointer-events:none}.pat-filemanager .btn-default{color:#333;background-color:#fff;border-color:#ccc}.pat-filemanager .btn-default:focus,.pat-filemanager .btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.pat-filemanager .btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.pat-filemanager .btn-default:active,.pat-filemanager .btn-default.active,.open>.dropdown-toggle.pat-filemanager .btn-default,.open>.pat-filemanager .dropdown-toggle.btn-default,.pat-filemanager .open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.pat-filemanager .btn-default:active:hover,.pat-filemanager .btn-default.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-default:hover,.pat-filemanager .btn-default:active:focus,.pat-filemanager .btn-default.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-default:focus,.pat-filemanager .btn-default:active.focus,.pat-filemanager .btn-default.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-default.focus,.open>.pat-filemanager .dropdown-toggle.btn-default:hover,.open>.pat-filemanager .dropdown-toggle.btn-default:focus,.open>.pat-filemanager .dropdown-toggle.btn-default.focus,.pat-filemanager .open>.dropdown-toggle.btn-default:hover,.pat-filemanager .open>.dropdown-toggle.btn-default:focus,.pat-filemanager .open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.pat-filemanager .btn-default:active,.pat-filemanager .btn-default.active,.open>.dropdown-toggle.pat-filemanager .btn-default,.open>.pat-filemanager .dropdown-toggle.btn-default,.pat-filemanager .open>.dropdown-toggle.btn-default{background-image:none}.pat-filemanager .btn-default.disabled:hover,.pat-filemanager .btn-default[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-default:hover,.pat-filemanager .btn-default.disabled:focus,.pat-filemanager .btn-default[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-default:focus,.pat-filemanager .btn-default.disabled.focus,.pat-filemanager .btn-default[disabled].focus,fieldset[disabled] .pat-filemanager .btn-default.focus{background-color:#fff;border-color:#ccc}.pat-filemanager .btn-default .badge{color:#fff;background-color:#333}.pat-filemanager .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.pat-filemanager .btn-primary:focus,.pat-filemanager .btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.pat-filemanager .btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.pat-filemanager .btn-primary:active,.pat-filemanager .btn-primary.active,.open>.dropdown-toggle.pat-filemanager .btn-primary,.open>.pat-filemanager .dropdown-toggle.btn-primary,.pat-filemanager .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.pat-filemanager .btn-primary:active:hover,.pat-filemanager .btn-primary.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-primary:hover,.pat-filemanager .btn-primary:active:focus,.pat-filemanager .btn-primary.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-primary:focus,.pat-filemanager .btn-primary:active.focus,.pat-filemanager .btn-primary.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-primary.focus,.open>.pat-filemanager .dropdown-toggle.btn-primary:hover,.open>.pat-filemanager .dropdown-toggle.btn-primary:focus,.open>.pat-filemanager .dropdown-toggle.btn-primary.focus,.pat-filemanager .open>.dropdown-toggle.btn-primary:hover,.pat-filemanager .open>.dropdown-toggle.btn-primary:focus,.pat-filemanager .open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.pat-filemanager .btn-primary:active,.pat-filemanager .btn-primary.active,.open>.dropdown-toggle.pat-filemanager .btn-primary,.open>.pat-filemanager .dropdown-toggle.btn-primary,.pat-filemanager .open>.dropdown-toggle.btn-primary{background-image:none}.pat-filemanager .btn-primary.disabled:hover,.pat-filemanager .btn-primary[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-primary:hover,.pat-filemanager .btn-primary.disabled:focus,.pat-filemanager .btn-primary[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-primary:focus,.pat-filemanager .btn-primary.disabled.focus,.pat-filemanager .btn-primary[disabled].focus,fieldset[disabled] .pat-filemanager .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.pat-filemanager .btn-primary .badge{color:#337ab7;background-color:#fff}.pat-filemanager .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.pat-filemanager .btn-success:focus,.pat-filemanager .btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.pat-filemanager .btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.pat-filemanager .btn-success:active,.pat-filemanager .btn-success.active,.open>.dropdown-toggle.pat-filemanager .btn-success,.open>.pat-filemanager .dropdown-toggle.btn-success,.pat-filemanager .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.pat-filemanager .btn-success:active:hover,.pat-filemanager .btn-success.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-success:hover,.pat-filemanager .btn-success:active:focus,.pat-filemanager .btn-success.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-success:focus,.pat-filemanager .btn-success:active.focus,.pat-filemanager .btn-success.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-success.focus,.open>.pat-filemanager .dropdown-toggle.btn-success:hover,.open>.pat-filemanager .dropdown-toggle.btn-success:focus,.open>.pat-filemanager .dropdown-toggle.btn-success.focus,.pat-filemanager .open>.dropdown-toggle.btn-success:hover,.pat-filemanager .open>.dropdown-toggle.btn-success:focus,.pat-filemanager .open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.pat-filemanager .btn-success:active,.pat-filemanager .btn-success.active,.open>.dropdown-toggle.pat-filemanager .btn-success,.open>.pat-filemanager .dropdown-toggle.btn-success,.pat-filemanager .open>.dropdown-toggle.btn-success{background-image:none}.pat-filemanager .btn-success.disabled:hover,.pat-filemanager .btn-success[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-success:hover,.pat-filemanager .btn-success.disabled:focus,.pat-filemanager .btn-success[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-success:focus,.pat-filemanager .btn-success.disabled.focus,.pat-filemanager .btn-success[disabled].focus,fieldset[disabled] .pat-filemanager .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.pat-filemanager .btn-success .badge{color:#5cb85c;background-color:#fff}.open>.pat-filemanager .dropdown-toggle.btn-info,.pat-filemanager .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.open>.pat-filemanager .dropdown-toggle.btn-info:hover,.open>.pat-filemanager .dropdown-toggle.btn-info:focus,.open>.pat-filemanager .dropdown-toggle.btn-info.focus,.pat-filemanager .open>.dropdown-toggle.btn-info:hover,.pat-filemanager .open>.dropdown-toggle.btn-info:focus,.pat-filemanager .open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.open>.pat-filemanager .dropdown-toggle.btn-info,.pat-filemanager .open>.dropdown-toggle.btn-info{background-image:none}.open>.pat-filemanager .dropdown-toggle.btn-warning,.pat-filemanager .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.open>.pat-filemanager .dropdown-toggle.btn-warning:hover,.open>.pat-filemanager .dropdown-toggle.btn-warning:focus,.open>.pat-filemanager .dropdown-toggle.btn-warning.focus,.pat-filemanager .open>.dropdown-toggle.btn-warning:hover,.pat-filemanager .open>.dropdown-toggle.btn-warning:focus,.pat-filemanager .open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.open>.pat-filemanager .dropdown-toggle.btn-warning,.pat-filemanager .open>.dropdown-toggle.btn-warning{background-image:none}.pat-filemanager .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.pat-filemanager .btn-danger:focus,.pat-filemanager .btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.pat-filemanager .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.pat-filemanager .btn-danger:active,.pat-filemanager .btn-danger.active,.open>.dropdown-toggle.pat-filemanager .btn-danger,.open>.pat-filemanager .dropdown-toggle.btn-danger,.pat-filemanager .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.pat-filemanager .btn-danger:active:hover,.pat-filemanager .btn-danger.active:hover,.open>.dropdown-toggle.pat-filemanager .btn-danger:hover,.pat-filemanager .btn-danger:active:focus,.pat-filemanager .btn-danger.active:focus,.open>.dropdown-toggle.pat-filemanager .btn-danger:focus,.pat-filemanager .btn-danger:active.focus,.pat-filemanager .btn-danger.active.focus,.open>.dropdown-toggle.pat-filemanager .btn-danger.focus,.open>.pat-filemanager .dropdown-toggle.btn-danger:hover,.open>.pat-filemanager .dropdown-toggle.btn-danger:focus,.open>.pat-filemanager .dropdown-toggle.btn-danger.focus,.pat-filemanager .open>.dropdown-toggle.btn-danger:hover,.pat-filemanager .open>.dropdown-toggle.btn-danger:focus,.pat-filemanager .open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.pat-filemanager .btn-danger:active,.pat-filemanager .btn-danger.active,.open>.dropdown-toggle.pat-filemanager .btn-danger,.open>.pat-filemanager .dropdown-toggle.btn-danger,.pat-filemanager .open>.dropdown-toggle.btn-danger{background-image:none}.pat-filemanager .btn-danger.disabled:hover,.pat-filemanager .btn-danger[disabled]:hover,fieldset[disabled] .pat-filemanager .btn-danger:hover,.pat-filemanager .btn-danger.disabled:focus,.pat-filemanager .btn-danger[disabled]:focus,fieldset[disabled] .pat-filemanager .btn-danger:focus,.pat-filemanager .btn-danger.disabled.focus,.pat-filemanager .btn-danger[disabled].focus,fieldset[disabled] .pat-filemanager .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.pat-filemanager .btn-danger .badge{color:#d9534f;background-color:#fff}.pat-filemanager .btn-group,.pat-filemanager .btn-group-dropdown,.pat-filemanager .pat-filemanager .btn-group-dropdown{position:relative;display:inline-block;vertical-align:middle}.btn-group>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn,.pat-filemanager .btn-group>.btn,.pat-filemanager .btn-group-dropdown>.btn,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn{position:relative;float:left}.btn-group>.pat-filemanager .btn:hover,.btn-group-vertical>.pat-filemanager .btn:hover,.btn-group>.pat-filemanager .btn:focus,.btn-group-vertical>.pat-filemanager .btn:focus,.btn-group>.pat-filemanager .btn:active,.btn-group-vertical>.pat-filemanager .btn:active,.btn-group>.pat-filemanager .btn.active,.btn-group-vertical>.pat-filemanager .btn.active,.pat-filemanager .btn-group>.btn:hover,.pat-filemanager .btn-group>.btn:focus,.pat-filemanager .btn-group>.btn:active,.pat-filemanager .btn-group>.btn.active,.pat-filemanager .btn-group-dropdown>.btn:hover,.pat-filemanager .btn-group-dropdown>.btn:focus,.pat-filemanager .btn-group-dropdown>.btn:active,.pat-filemanager .btn-group-dropdown>.btn.active,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:hover,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:focus,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:active,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn.active{z-index:2}.btn-group .pat-filemanager .btn+.pat-filemanager .btn,.btn-group .pat-filemanager .btn+.btn-group,.btn-group .btn-group+.pat-filemanager .btn,.pat-filemanager .btn-group .btn+.btn,.pat-filemanager .btn-group .btn+.pat-filemanager .btn-group,.pat-filemanager .btn-group .pat-filemanager .btn-group+.btn,.pat-filemanager .btn-group .pat-filemanager .btn-group+.pat-filemanager .btn-group,.pat-filemanager .btn-group-dropdown .btn+.btn,.pat-filemanager .btn-group-dropdown .btn+.pat-filemanager .btn-group-dropdown,.pat-filemanager .btn-group-dropdown .pat-filemanager .btn-group-dropdown+.btn,.pat-filemanager .btn-group-dropdown .pat-filemanager .btn-group-dropdown+.pat-filemanager .btn-group-dropdown,.pat-filemanager .pat-filemanager .btn-group-dropdown .btn+.btn,.pat-filemanager .pat-filemanager .btn-group-dropdown .btn+.pat-filemanager .pat-filemanager .btn-group-dropdown,.pat-filemanager .pat-filemanager .btn-group-dropdown .pat-filemanager .pat-filemanager .btn-group-dropdown+.btn,.pat-filemanager .pat-filemanager .btn-group-dropdown .pat-filemanager .pat-filemanager .btn-group-dropdown+.pat-filemanager .pat-filemanager .btn-group-dropdown{margin-left:-1px}.btn-toolbar .pat-filemanager .btn,.btn-toolbar .pat-filemanager .btn-group,.btn-toolbar .pat-filemanager .btn-group-dropdown,.btn-toolbar .pat-filemanager .input-group,.btn-toolbar .pat-filemanager .pat-filemanager .btn-group-dropdown{float:left}.btn-toolbar>.pat-filemanager .btn,.btn-toolbar>.pat-filemanager .btn-group,.btn-toolbar>.pat-filemanager .btn-group-dropdown,.btn-toolbar>.pat-filemanager .input-group,.btn-toolbar>.pat-filemanager .pat-filemanager .btn-group-dropdown{margin-left:5px}.btn-group>.pat-filemanager .btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.pat-filemanager .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.pat-filemanager .btn-group-dropdown>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.pat-filemanager .btn:first-child,.pat-filemanager .btn-group>.btn:first-child,.pat-filemanager .btn-group-dropdown>.btn:first-child,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:first-child{margin-left:0}.btn-group>.pat-filemanager .btn:first-child:not(:last-child):not(.dropdown-toggle),.pat-filemanager .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle),.pat-filemanager .btn-group-dropdown>.btn:first-child:not(:last-child):not(.dropdown-toggle),.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.pat-filemanager .btn:last-child:not(:first-child),.pat-filemanager .btn-group>.btn:last-child:not(:first-child),.pat-filemanager .btn-group>.dropdown-toggle:not(:first-child),.pat-filemanager .btn-group-dropdown>.btn:last-child:not(:first-child),.pat-filemanager .btn-group-dropdown>.dropdown-toggle:not(:first-child),.btn-group>.pat-filemanager .dropdown-toggle:not(:first-child),.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn:last-child:not(:first-child),.pat-filemanager .pat-filemanager .btn-group-dropdown>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.pat-filemanager .btn-group>.pat-filemanager .btn-group,.pat-filemanager .btn-group-dropdown>.pat-filemanager .btn-group-dropdown,.pat-filemanager .pat-filemanager .btn-group-dropdown>.pat-filemanager .pat-filemanager .btn-group-dropdown{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.pat-filemanager .btn,.pat-filemanager .btn-group>.pat-filemanager .btn-group:not(:first-child):not(:last-child)>.btn,.pat-filemanager .btn-group-dropdown>.pat-filemanager .btn-group-dropdown:not(:first-child):not(:last-child)>.btn,.pat-filemanager .pat-filemanager .btn-group-dropdown>.pat-filemanager .pat-filemanager .btn-group-dropdown:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.pat-filemanager .btn:last-child,.pat-filemanager .btn-group>.pat-filemanager .btn-group:first-child:not(:last-child)>.btn:last-child,.pat-filemanager .btn-group>.pat-filemanager .btn-group:first-child:not(:last-child)>.dropdown-toggle,.pat-filemanager .btn-group-dropdown>.pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.btn:last-child,.pat-filemanager .btn-group-dropdown>.pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn-group:first-child:not(:last-child)>.pat-filemanager .dropdown-toggle,.pat-filemanager .pat-filemanager .btn-group-dropdown>.pat-filemanager .pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.btn:last-child,.pat-filemanager .pat-filemanager .btn-group-dropdown>.pat-filemanager .pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.pat-filemanager .btn:first-child,.pat-filemanager .btn-group>.pat-filemanager .btn-group:last-child:not(:first-child)>.btn:first-child,.pat-filemanager .btn-group-dropdown>.pat-filemanager .btn-group-dropdown:last-child:not(:first-child)>.btn:first-child,.pat-filemanager .pat-filemanager .btn-group-dropdown>.pat-filemanager .pat-filemanager .btn-group-dropdown:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.pat-filemanager .btn-group .dropdown-toggle:active,.pat-filemanager .btn-group.open .dropdown-toggle,.pat-filemanager .btn-group-dropdown .dropdown-toggle:active,.pat-filemanager .btn-group-dropdown.open .dropdown-toggle,.btn-group .pat-filemanager .dropdown-toggle:active,.btn-group.open .pat-filemanager .dropdown-toggle,.btn-group.pat-filemanager .open .dropdown-toggle,.pat-filemanager .pat-filemanager .btn-group-dropdown .dropdown-toggle:active,.pat-filemanager .pat-filemanager .btn-group-dropdown.open .dropdown-toggle{outline:0}.btn-group>.pat-filemanager .btn+.dropdown-toggle,.pat-filemanager .btn-group>.btn+.dropdown-toggle,.pat-filemanager .btn-group-dropdown>.btn+.dropdown-toggle,.btn-group>.btn+.pat-filemanager .dropdown-toggle,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.pat-filemanager .btn-group>.btn-lg+.dropdown-toggle,.pat-filemanager .btn-group-dropdown>.btn-lg+.dropdown-toggle,.btn-group>.btn-lg+.pat-filemanager .dropdown-toggle,.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.pat-filemanager .btn-group.open .dropdown-toggle,.pat-filemanager .btn-group-dropdown.open .dropdown-toggle,.btn-group.open .pat-filemanager .dropdown-toggle,.btn-group.pat-filemanager .open .dropdown-toggle,.pat-filemanager .pat-filemanager .btn-group-dropdown.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.pat-filemanager .btn-group.open .dropdown-toggle.btn-link,.pat-filemanager .btn-group-dropdown.open .dropdown-toggle.btn-link,.btn-group.open .pat-filemanager .dropdown-toggle.btn-link,.btn-group.pat-filemanager .open .dropdown-toggle.btn-link,.pat-filemanager .pat-filemanager .btn-group-dropdown.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.pat-filemanager .btn .caret{margin-left:0}.btn-group-vertical>.pat-filemanager .btn,.btn-group-vertical>.btn-group>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn-group,.btn-group-vertical>.pat-filemanager .btn-group>.btn,.btn-group-vertical>.pat-filemanager .btn-group-dropdown,.btn-group-vertical>.pat-filemanager .btn-group-dropdown>.btn,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn-group>.btn,.btn-group-vertical>.pat-filemanager .btn-group-dropdown>.btn,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn{float:none}.btn-group-vertical>.pat-filemanager .btn+.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn+.btn-group,.btn-group-vertical>.btn-group+.pat-filemanager .btn,.btn-group-vertical>.btn+.pat-filemanager .btn-group,.btn-group-vertical>.pat-filemanager .btn-group+.btn,.btn-group-vertical>.pat-filemanager .btn-group+.pat-filemanager .btn-group,.btn-group-vertical>.btn+.pat-filemanager .btn-group-dropdown,.btn-group-vertical>.pat-filemanager .btn-group-dropdown+.btn,.btn-group-vertical>.pat-filemanager .btn-group-dropdown+.pat-filemanager .btn-group-dropdown,.btn-group-vertical>.btn+.pat-filemanager .pat-filemanager .btn-group-dropdown,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown+.btn,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown+.pat-filemanager .pat-filemanager .btn-group-dropdown{margin-top:-1px;margin-left:0}.btn-group-vertical>.pat-filemanager .btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.pat-filemanager .btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.pat-filemanager .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.pat-filemanager .btn,.btn-group-vertical>.pat-filemanager .btn-group:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.pat-filemanager .btn-group-dropdown:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.pat-filemanager .btn:last-child,.btn-group-vertical>.pat-filemanager .btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.pat-filemanager .btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.pat-filemanager .dropdown-toggle,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown: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)>.pat-filemanager .btn:first-child,.btn-group-vertical>.pat-filemanager .btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.pat-filemanager .btn-group-dropdown:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.pat-filemanager .pat-filemanager .btn-group-dropdown:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified>.pat-filemanager .btn,.btn-group-justified>.pat-filemanager .btn-group,.btn-group-justified>.pat-filemanager .btn-group-dropdown,.btn-group-justified>.pat-filemanager .pat-filemanager .btn-group-dropdown{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .pat-filemanager .btn,.btn-group-justified>.pat-filemanager .btn-group .btn,.btn-group-justified>.pat-filemanager .btn-group-dropdown .btn,.btn-group-justified>.pat-filemanager .pat-filemanager .btn-group-dropdown .btn{width:100%}.btn-group-justified>.pat-filemanager .btn-group .dropdown-menu,.btn-group-justified>.pat-filemanager .btn-group-dropdown .dropdown-menu,.btn-group-justified>.btn-group .pat-filemanager .dropdown-menu,.btn-group-justified>.pat-filemanager .pat-filemanager .btn-group-dropdown .dropdown-menu{left:auto}[data-toggle="buttons"]>.pat-filemanager .btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.pat-filemanager .btn input[type="radio"],[data-toggle="buttons"]>.pat-filemanager .btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.pat-filemanager .btn input[type="checkbox"],[data-toggle="buttons"]>.pat-filemanager .btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.pat-filemanager .btn-group>.btn input[type="checkbox"],[data-toggle="buttons"]>.pat-filemanager .btn-group-dropdown>.btn input[type="radio"],[data-toggle="buttons"]>.pat-filemanager .btn-group-dropdown>.btn input[type="checkbox"],[data-toggle="buttons"]>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn input[type="radio"],[data-toggle="buttons"]>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.pat-filemanager .btn .badge{position:relative;top:-1px}.btn-group-xs>.pat-filemanager .btn .badge{top:0;padding:1px 5px}.pat-filemanager .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-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.pat-filemanager .popover.top{margin-top:-10px}.pat-filemanager .popover.right{margin-left:10px}.pat-filemanager .popover.bottom{margin-top:10px}.pat-filemanager .popover.left{margin-left:-10px}.pat-filemanager .popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.pat-filemanager .popover-content{padding:9px 14px}.pat-filemanager .popover>.arrow,.pat-filemanager .popover>.arrow:after,.popover>.pat-filemanager .arrow,.popover>.pat-filemanager .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.pat-filemanager .popover>.arrow,.popover>.pat-filemanager .arrow{border-width:11px}.pat-filemanager .popover>.arrow:after,.popover>.pat-filemanager .arrow:after{border-width:10px;content:""}.pat-filemanager .popover.top>.arrow,.popover.top>.pat-filemanager .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.pat-filemanager .popover.top>.arrow:after,.popover.top>.pat-filemanager .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.pat-filemanager .popover.right>.arrow,.popover.right>.pat-filemanager .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.pat-filemanager .popover.right>.arrow:after,.popover.right>.pat-filemanager .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.pat-filemanager .popover.bottom>.arrow,.popover.bottom>.pat-filemanager .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.pat-filemanager .popover.bottom>.arrow:after,.popover.bottom>.pat-filemanager .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.pat-filemanager .popover.left>.arrow,.popover.left>.pat-filemanager .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.pat-filemanager .popover.left>.arrow:after,.popover.left>.pat-filemanager .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.pat-filemanager .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pat-filemanager .pagination>li{display:inline}.pat-filemanager .pagination>li>a,.pat-filemanager .pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pat-filemanager .pagination>li:first-child>a,.pat-filemanager .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pat-filemanager .pagination>li:last-child>a,.pat-filemanager .pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pat-filemanager .pagination>li>a:hover,.pat-filemanager .pagination>li>span:hover,.pat-filemanager .pagination>li>a:focus,.pat-filemanager .pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pat-filemanager .pagination>.active>a,.pat-filemanager .pagination>.active>span,.pat-filemanager .pagination>.active>a:hover,.pat-filemanager .pagination>.active>span:hover,.pat-filemanager .pagination>.active>a:focus,.pat-filemanager .pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pat-filemanager .pagination>.disabled>span,.pat-filemanager .pagination>.disabled>span:hover,.pat-filemanager .pagination>.disabled>span:focus,.pat-filemanager .pagination>.disabled>a,.pat-filemanager .pagination>.disabled>a:hover,.pat-filemanager .pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pat-filemanager .input-group{position:relative;display:table;border-collapse:separate}.pat-filemanager .input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.pat-filemanager .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.pat-filemanager .input-group .form-control:focus{z-index:3}.input-group-lg>.input-group-btn>.pat-filemanager .btn,.input-group-lg>.pat-filemanager .input-group-addon,.input-group-lg>.pat-filemanager .input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.input-group-btn>.pat-filemanager .btn,select.input-group-lg>.pat-filemanager .input-group-addon,select.input-group-lg>.pat-filemanager .input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.input-group-btn>.pat-filemanager .btn,select[multiple].input-group-lg>.input-group-btn>.pat-filemanager .btn,textarea.input-group-lg>.pat-filemanager .input-group-addon,select[multiple].input-group-lg>.pat-filemanager .input-group-addon,textarea.input-group-lg>.pat-filemanager .input-group-btn>.btn,select[multiple].input-group-lg>.pat-filemanager .input-group-btn>.btn{height:auto}.input-group-sm>.input-group-btn>.pat-filemanager .btn,.input-group-sm>.pat-filemanager .input-group-addon,.input-group-sm>.pat-filemanager .input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.input-group-btn>.pat-filemanager .btn,select.input-group-sm>.pat-filemanager .input-group-addon,select.input-group-sm>.pat-filemanager .input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.input-group-btn>.pat-filemanager .btn,select[multiple].input-group-sm>.input-group-btn>.pat-filemanager .btn,textarea.input-group-sm>.pat-filemanager .input-group-addon,select[multiple].input-group-sm>.pat-filemanager .input-group-addon,textarea.input-group-sm>.pat-filemanager .input-group-btn>.btn,select[multiple].input-group-sm>.pat-filemanager .input-group-btn>.btn{height:auto}.pat-filemanager .input-group .form-control,.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{display:table-cell}.pat-filemanager .input-group .form-control:not(:first-child):not(:last-child),.pat-filemanager .input-group-addon:not(:first-child):not(:last-child),.pat-filemanager .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.pat-filemanager .input-group-addon,.pat-filemanager .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.pat-filemanager .input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.pat-filemanager .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.pat-filemanager .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.pat-filemanager .input-group-addon input[type="radio"],.pat-filemanager .input-group-addon input[type="checkbox"]{margin-top:0}.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.btn-group>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group-dropdown:not(:last-child)>.btn,.pat-filemanager .input-group .form-control:first-child,.pat-filemanager .input-group-addon:first-child,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group>.btn,.pat-filemanager .input-group-btn:first-child>.dropdown-toggle,.pat-filemanager .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.pat-filemanager .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:first-child>.pat-filemanager .dropdown-toggle,.input-group-btn:first-child>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:last-child>.pat-filemanager .pat-filemanager .btn-group-dropdown:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.pat-filemanager .input-group-addon:first-child{border-right:0}.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.btn-group>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:first-child>.pat-filemanager .btn-group-dropdown:not(:first-child)>.btn,.pat-filemanager .input-group .form-control:last-child,.pat-filemanager .input-group-addon:last-child,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group>.btn,.pat-filemanager .input-group-btn:last-child>.dropdown-toggle,.pat-filemanager .input-group-btn:first-child>.btn:not(:first-child),.pat-filemanager .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:last-child>.pat-filemanager .dropdown-toggle,.input-group-btn:last-child>.pat-filemanager .pat-filemanager .btn-group-dropdown>.btn,.input-group-btn:first-child>.pat-filemanager .pat-filemanager .btn-group-dropdown:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.pat-filemanager .input-group-addon:last-child{border-left:0}.pat-filemanager .input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn{position:relative}.input-group-btn>.pat-filemanager .btn+.pat-filemanager .btn,.pat-filemanager .input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.pat-filemanager .btn:hover,.input-group-btn>.pat-filemanager .btn:focus,.input-group-btn>.pat-filemanager .btn:active,.pat-filemanager .input-group-btn>.btn:hover,.pat-filemanager .input-group-btn>.btn:focus,.pat-filemanager .input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.pat-filemanager .btn,.input-group-btn:first-child>.pat-filemanager .btn-group,.input-group-btn:first-child>.pat-filemanager .btn-group-dropdown,.pat-filemanager .input-group-btn:first-child>.btn,.pat-filemanager .input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.pat-filemanager .pat-filemanager .btn-group-dropdown{margin-right:-1px}.input-group-btn:last-child>.pat-filemanager .btn,.input-group-btn:last-child>.pat-filemanager .btn-group,.input-group-btn:last-child>.pat-filemanager .btn-group-dropdown,.pat-filemanager .input-group-btn:last-child>.btn,.pat-filemanager .input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.pat-filemanager .pat-filemanager .btn-group-dropdown{z-index:2;margin-left:-1px}.pat-filemanager .table{width:100%;max-width:100%;margin-bottom:20px}.pat-filemanager .table>thead>tr>th,.pat-filemanager .table>tbody>tr>th,.pat-filemanager .table>tfoot>tr>th,.pat-filemanager .table>thead>tr>td,.pat-filemanager .table>tbody>tr>td,.pat-filemanager .table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.pat-filemanager .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.pat-filemanager .table>caption+thead>tr:first-child>th,.pat-filemanager .table>colgroup+thead>tr:first-child>th,.pat-filemanager .table>thead:first-child>tr:first-child>th,.pat-filemanager .table>caption+thead>tr:first-child>td,.pat-filemanager .table>colgroup+thead>tr:first-child>td,.pat-filemanager .table>thead:first-child>tr:first-child>td{border-top:0}.pat-filemanager .table>tbody+tbody{border-top:2px solid #ddd}.pat-filemanager .table .pat-filemanager .table{background-color:#fff}.pat-filemanager .table-bordered{border:1px solid #ddd}.pat-filemanager .table-bordered>thead>tr>th,.pat-filemanager .table-bordered>tbody>tr>th,.pat-filemanager .table-bordered>tfoot>tr>th,.pat-filemanager .table-bordered>thead>tr>td,.pat-filemanager .table-bordered>tbody>tr>td,.pat-filemanager .table-bordered>tfoot>tr>td{border:1px solid #ddd}.pat-filemanager .table-bordered>thead>tr>th,.pat-filemanager .table-bordered>thead>tr>td{border-bottom-width:2px}.pat-filemanager .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.pat-filemanager .table>thead>tr>td.active,.pat-filemanager .table>tbody>tr>td.active,.pat-filemanager .table>tfoot>tr>td.active,.pat-filemanager .table>thead>tr>th.active,.pat-filemanager .table>tbody>tr>th.active,.pat-filemanager .table>tfoot>tr>th.active,.pat-filemanager .table>thead>tr.active>td,.pat-filemanager .table>tbody>tr.active>td,.pat-filemanager .table>tfoot>tr.active>td,.pat-filemanager .table>thead>tr.active>th,.pat-filemanager .table>tbody>tr.active>th,.pat-filemanager .table>tfoot>tr.active>th{background-color:#f5f5f5}.pat-filemanager .table>thead>tr>td.success,.pat-filemanager .table>tbody>tr>td.success,.pat-filemanager .table>tfoot>tr>td.success,.pat-filemanager .table>thead>tr>th.success,.pat-filemanager .table>tbody>tr>th.success,.pat-filemanager .table>tfoot>tr>th.success,.pat-filemanager .table>thead>tr.success>td,.pat-filemanager .table>tbody>tr.success>td,.pat-filemanager .table>tfoot>tr.success>td,.pat-filemanager .table>thead>tr.success>th,.pat-filemanager .table>tbody>tr.success>th,.pat-filemanager .table>tfoot>tr.success>th{background-color:#dff0d8}.pat-filemanager .table>thead>tr>td.info,.pat-filemanager .table>tbody>tr>td.info,.pat-filemanager .table>tfoot>tr>td.info,.pat-filemanager .table>thead>tr>th.info,.pat-filemanager .table>tbody>tr>th.info,.pat-filemanager .table>tfoot>tr>th.info,.pat-filemanager .table>thead>tr.info>td,.pat-filemanager .table>tbody>tr.info>td,.pat-filemanager .table>tfoot>tr.info>td,.pat-filemanager .table>thead>tr.info>th,.pat-filemanager .table>tbody>tr.info>th,.pat-filemanager .table>tfoot>tr.info>th{background-color:#d9edf7}.pat-filemanager .table>thead>tr>td.warning,.pat-filemanager .table>tbody>tr>td.warning,.pat-filemanager .table>tfoot>tr>td.warning,.pat-filemanager .table>thead>tr>th.warning,.pat-filemanager .table>tbody>tr>th.warning,.pat-filemanager .table>tfoot>tr>th.warning,.pat-filemanager .table>thead>tr.warning>td,.pat-filemanager .table>tbody>tr.warning>td,.pat-filemanager .table>tfoot>tr.warning>td,.pat-filemanager .table>thead>tr.warning>th,.pat-filemanager .table>tbody>tr.warning>th,.pat-filemanager .table>tfoot>tr.warning>th{background-color:#fcf8e3}.pat-filemanager .table>thead>tr>td.danger,.pat-filemanager .table>tbody>tr>td.danger,.pat-filemanager .table>tfoot>tr>td.danger,.pat-filemanager .table>thead>tr>th.danger,.pat-filemanager .table>tbody>tr>th.danger,.pat-filemanager .table>tfoot>tr>th.danger,.pat-filemanager .table>thead>tr.danger>td,.pat-filemanager .table>tbody>tr.danger>td,.pat-filemanager .table>tfoot>tr.danger>td,.pat-filemanager .table>thead>tr.danger>th,.pat-filemanager .table>tbody>tr.danger>th,.pat-filemanager .table>tfoot>tr.danger>th{background-color:#f2dede}@media screen and (max-width:767px){.table-responsive>.pat-filemanager .table{margin-bottom:0}.table-responsive>.pat-filemanager .table>thead>tr>th,.table-responsive>.pat-filemanager .table>tbody>tr>th,.table-responsive>.pat-filemanager .table>tfoot>tr>th,.table-responsive>.pat-filemanager .table>thead>tr>td,.table-responsive>.pat-filemanager .table>tbody>tr>td,.table-responsive>.pat-filemanager .table>tfoot>tr>td{white-space:nowrap}.table-responsive>.pat-filemanager .table-bordered{border:0}.table-responsive>.pat-filemanager .table-bordered>thead>tr>th:first-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>th:first-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>th:first-child,.table-responsive>.pat-filemanager .table-bordered>thead>tr>td:first-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>td:first-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.pat-filemanager .table-bordered>thead>tr>th:last-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>th:last-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>th:last-child,.table-responsive>.pat-filemanager .table-bordered>thead>tr>td:last-child,.table-responsive>.pat-filemanager .table-bordered>tbody>tr>td:last-child,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.pat-filemanager .table-bordered>tbody>tr:last-child>th,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr:last-child>th,.table-responsive>.pat-filemanager .table-bordered>tbody>tr:last-child>td,.table-responsive>.pat-filemanager .table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.pat-filemanager .dropdown-toggle:focus{outline:0}.pat-filemanager .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;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.pat-filemanager .dropdown-menu.pull-right{right:0;left:auto}.pat-filemanager .dropdown-menu .divider,.dropdown-menu .pat-filemanager .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pat-filemanager .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.pat-filemanager .dropdown-menu>li>a:hover,.pat-filemanager .dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.pat-filemanager .dropdown-menu>.active>a,.pat-filemanager .dropdown-menu>.active>a:hover,.pat-filemanager .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.pat-filemanager .dropdown-menu>.disabled>a,.pat-filemanager .dropdown-menu>.disabled>a:hover,.pat-filemanager .dropdown-menu>.disabled>a:focus{color:#777}.pat-filemanager .dropdown-menu>.disabled>a:hover,.pat-filemanager .dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.pat-filemanager .dropdown-menu,.pat-filemanager .open>.dropdown-menu{display:block}.pat-filemanager .open>a{outline:0}.pat-filemanager .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.pull-right>.pat-filemanager .dropdown-menu{right:0;left:auto}.dropup .pat-filemanager .dropdown-menu,.navbar-fixed-bottom .dropdown .pat-filemanager .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .pat-filemanager .dropdown-menu{left:auto;right:0}}.pat-filemanager .form-group{margin-bottom:15px}.pat-filemanager .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.pat-filemanager .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.pat-filemanager .checkbox input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \\9}.pat-filemanager .checkbox+.pat-filemanager .checkbox{margin-top:-5px}.pat-filemanager .checkbox.disabled label,fieldset[disabled] .pat-filemanager .checkbox label{cursor:not-allowed}.has-success .pat-filemanager .help-block,.has-success .pat-filemanager .checkbox,.has-success.pat-filemanager .checkbox label{color:#3c763d}.has-success .pat-filemanager .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .pat-filemanager .help-block,.has-warning .pat-filemanager .checkbox,.has-warning.pat-filemanager .checkbox label{color:#8a6d3b}.has-warning .pat-filemanager .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .pat-filemanager .help-block,.has-error .pat-filemanager .checkbox,.has-error.pat-filemanager .checkbox label{color:#a94442}.has-error .pat-filemanager .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.pat-filemanager .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .pat-filemanager .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .pat-filemanager .input-group{display:inline-table;vertical-align:middle}.form-inline .pat-filemanager .input-group .input-group-addon,.form-inline .pat-filemanager .input-group .input-group-btn,.form-inline .pat-filemanager .input-group .form-control,.form-inline .input-group .pat-filemanager .input-group-addon,.form-inline .input-group .pat-filemanager .input-group-btn{width:auto}.form-inline .pat-filemanager .input-group>.form-control{width:100%}.form-inline .pat-filemanager .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .pat-filemanager .checkbox label{padding-left:0}.form-inline .pat-filemanager .checkbox input[type="checkbox"]{position:relative;margin-left:0}}.form-horizontal .pat-filemanager .checkbox{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .pat-filemanager .checkbox{min-height:27px}.form-horizontal .pat-filemanager .form-group{margin-left:-15px;margin-right:-15px}.pat-filemanager .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.pat-filemanager .navbar{border-radius:4px}}.pat-filemanager .navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.pat-filemanager .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.pat-filemanager .navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.pat-filemanager .collapse,.pat-filemanager .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.pat-filemanager .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .pat-filemanager .navbar-collapse,.navbar-static-top .pat-filemanager .navbar-collapse,.navbar-fixed-bottom .pat-filemanager .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .pat-filemanager .navbar-collapse,.navbar-fixed-bottom .pat-filemanager .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .pat-filemanager .navbar-collapse,.navbar-fixed-bottom .pat-filemanager .navbar-collapse{max-height:200px}}.container>.pat-filemanager .navbar-collapse,.container-fluid>.pat-filemanager .navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.pat-filemanager .navbar-collapse,.container-fluid>.pat-filemanager .navbar-collapse{margin-right:0;margin-left:0}}@media (min-width:768px){.pat-filemanager .navbar>.container .navbar-brand,.pat-filemanager .navbar>.container-fluid .navbar-brand{margin-left:-15px}}.pat-filemanager .navbar-nav{margin:7.5px -15px}.pat-filemanager .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .pat-filemanager .dropdown-menu,.pat-filemanager .navbar-nav .open .dropdown-menu,.navbar-nav .pat-filemanager .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.navbar-nav .open .pat-filemanager .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu .pat-filemanager .dropdown-header,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.pat-filemanager .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a,.navbar-nav .pat-filemanager .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .pat-filemanager .dropdown-menu>li>a:hover,.navbar-nav .open .pat-filemanager .dropdown-menu>li>a:focus,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a:hover,.pat-filemanager .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a:hover,.navbar-nav .pat-filemanager .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.pat-filemanager .navbar-nav{float:left;margin:0}.pat-filemanager .navbar-nav>li{float:left}.pat-filemanager .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media (min-width:768px){.navbar-form .pat-filemanager .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .pat-filemanager .input-group{display:inline-table;vertical-align:middle}.navbar-form .pat-filemanager .input-group .input-group-addon,.navbar-form .pat-filemanager .input-group .input-group-btn,.navbar-form .pat-filemanager .input-group .form-control,.navbar-form .input-group .pat-filemanager .input-group-addon,.navbar-form .input-group .pat-filemanager .input-group-btn{width:auto}.navbar-form .pat-filemanager .input-group>.form-control{width:100%}.navbar-form .pat-filemanager .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .pat-filemanager .checkbox label{padding-left:0}.navbar-form .pat-filemanager .checkbox input[type="checkbox"]{position:relative;margin-left:0}}@media (max-width:767px){.navbar-form .pat-filemanager .form-group{margin-bottom:5px}.navbar-form .pat-filemanager .form-group:last-child{margin-bottom:0}}@media (min-width:768px){}.navbar-nav>li>.pat-filemanager .dropdown-menu,.pat-filemanager .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.pat-filemanager .dropdown-menu,.navbar-fixed-bottom .pat-filemanager .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-default .pat-filemanager .navbar-nav>li>a{color:#777}.navbar-default .pat-filemanager .navbar-nav>li>a:hover,.navbar-default .pat-filemanager .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .pat-filemanager .navbar-nav>.active>a,.navbar-default .pat-filemanager .navbar-nav>.active>a:hover,.navbar-default .pat-filemanager .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .pat-filemanager .navbar-nav>.disabled>a,.navbar-default .pat-filemanager .navbar-nav>.disabled>a:hover,.navbar-default .pat-filemanager .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .pat-filemanager .navbar-collapse{border-color:#e7e7e7}.navbar-default .pat-filemanager .navbar-nav>.open>a,.navbar-default .pat-filemanager .navbar-nav>.open>a:hover,.navbar-default .pat-filemanager .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.pat-filemanager .open>a,.navbar-default .navbar-nav>.pat-filemanager .open>a:hover,.navbar-default .navbar-nav>.pat-filemanager .open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:focus,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:focus,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:focus,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-inverse .pat-filemanager .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .pat-filemanager .navbar-nav>li>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .pat-filemanager .navbar-nav>.active>a,.navbar-inverse .pat-filemanager .navbar-nav>.active>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .pat-filemanager .navbar-nav>.disabled>a,.navbar-inverse .pat-filemanager .navbar-nav>.disabled>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .pat-filemanager .navbar-collapse{border-color:#101010}.navbar-inverse .pat-filemanager .navbar-nav>.open>a,.navbar-inverse .pat-filemanager .navbar-nav>.open>a:hover,.navbar-inverse .pat-filemanager .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.pat-filemanager .open>a,.navbar-inverse .navbar-nav>.pat-filemanager .open>a:hover,.navbar-inverse .navbar-nav>.pat-filemanager .open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.dropdown-header,.navbar-inverse .navbar-nav .open .dropdown-menu>.pat-filemanager .dropdown-header,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.dropdown-header,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu .divider,.navbar-inverse .navbar-nav .open .dropdown-menu .pat-filemanager .divider,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu .divider,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>li>a,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>li>a,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>li>a:focus,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.active>a:focus,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .pat-filemanager .dropdown-menu>.disabled>a:focus,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .pat-filemanager .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .pat-filemanager .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.pat-filemanager .nav{margin-bottom:0;padding-left:0;list-style:none}.pat-filemanager .nav>li{position:relative;display:block}.pat-filemanager .nav>li>a{position:relative;display:block;padding:10px 15px}.pat-filemanager .nav>li>a:hover,.pat-filemanager .nav>li>a:focus{text-decoration:none;background-color:#eee}.pat-filemanager .nav>li.disabled>a{color:#777}.pat-filemanager .nav>li.disabled>a:hover,.pat-filemanager .nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.pat-filemanager .nav .open>a,.pat-filemanager .nav .open>a:hover,.pat-filemanager .nav .open>a:focus,.nav .pat-filemanager .open>a,.nav .pat-filemanager .open>a:hover,.nav .pat-filemanager .open>a:focus{background-color:#eee;border-color:#337ab7}.pat-filemanager .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pat-filemanager .nav>li>a>img{max-width:none}.nav-tabs.nav-justified>.dropdown .pat-filemanager .dropdown-menu{top:auto;left:auto}.nav-justified>.dropdown .pat-filemanager .dropdown-menu{top:auto;left:auto}.nav-tabs .pat-filemanager .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.pat-filemanager .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.pat-filemanager .fade.in{opacity:1}.pat-filemanager .collapse{display:none}.pat-filemanager .collapse.in{display:block}tr.pat-filemanager .collapse.in{display:table-row}tbody.pat-filemanager .collapse.in{display:table-row-group}.pat-filemanager .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.pat-filemanager .popover,.pat-filemanager .pat-filemanager .popover{max-width:600px}.pat-filemanager .btn-group-dropdown{display:inline-block;margin:0 !important;vertical-align:initial !important}.pat-filemanager .btn-group-dropdown span.shortcut{display:inline-block;float:right}.pat-filemanager .btn-group-dropdown ul.dropdown-menu.items.dropdown-content,.pat-filemanager .btn-group-dropdown ul.pat-filemanager .dropdown-menu.items.dropdown-content{min-width:250px}.pat-filemanager #fileselector li label{display:inline}.pat-filemanager .glyphicon{top:2px}.pat-filemanager ul li,.pat-filemanager ol li{text-indent:0;padding-left:0}.pat-filemanager li::before{content:"";padding-right:0}.pat-filemanager #fileselector li label{font-weight:normal;margin-bottom:0}.pat-filemanager .popover.upload,.pat-filemanager .pat-filemanager .popover.upload{max-width:700px}.pat-filemanager .tree{float:left;width:17%;word-wrap:break-word;font-size:.8em;margin-top:2.5em}.pat-filemanager .tree ul.jqtree-tree li.jqtree-selected>.jqtree-element,.pat-filemanager .tree ul.jqtree-tree li>.jqtree-element:hover{background:#E7E7E7}.pat-filemanager .tree ul.jqtree-tree{margin-left:0}.pat-filemanager .tree ul.jqtree-tree li.jqtree_common{margin-bottom:.2em}.pat-filemanager .tree ul.jqtree-tree .jqtree-title{margin-left:0}.pat-filemanager .navbar .btn-group>a.btn,.pat-filemanager .navbar .btn-group>a.pat-filemanager .btn,.pat-filemanager .navbar .pat-filemanager .btn-group>a.btn,.pat-filemanager .navbar .pat-filemanager .btn-group-dropdown>a.btn,.pat-filemanager .pat-filemanager .navbar .btn-group>a.btn,.pat-filemanager .navbar .pat-filemanager .pat-filemanager .btn-group-dropdown>a.btn{float:none;display:inline-block;margin-bottom:.5em;text-decoration:none}.pat-filemanager .navbar .btn-group>.btn-group-dropdown,.pat-filemanager .navbar .pat-filemanager .btn-group>.btn-group-dropdown,.pat-filemanager .navbar .pat-filemanager .btn-group-dropdown>.btn-group-dropdown,.pat-filemanager .pat-filemanager .navbar .btn-group>.btn-group-dropdown,.pat-filemanager .navbar .pat-filemanager .pat-filemanager .btn-group-dropdown>.btn-group-dropdown{float:none;display:inline-block;text-decoration:none}.pat-filemanager .navbar .btn-group>.btn-group-dropdown>a.btn,.pat-filemanager .navbar .btn-group>.btn-group-dropdown>a.pat-filemanager .btn,.pat-filemanager .navbar .pat-filemanager .btn-group>.btn-group-dropdown>a.btn,.pat-filemanager .navbar .pat-filemanager .btn-group-dropdown>.btn-group-dropdown>a.btn,.pat-filemanager .pat-filemanager .navbar .btn-group>.btn-group-dropdown>a.btn,.pat-filemanager .navbar .pat-filemanager .pat-filemanager .btn-group-dropdown>.btn-group-dropdown>a.btn{margin-bottom:.5em;border-radius:0;float:none;display:inline-block;text-decoration:none;padding:5px 5px 8px 5px;line-height:10px;font-size:13px}.pat-filemanager .navbar .btn-group>.btn-group-dropdown:last-child>a.btn,.pat-filemanager .navbar .btn-group>.btn-group-dropdown:last-child>a.pat-filemanager .btn,.pat-filemanager .navbar .pat-filemanager .btn-group>.btn-group-dropdown:last-child>a.btn,.pat-filemanager .navbar .pat-filemanager .btn-group-dropdown>.btn-group-dropdown:last-child>a.btn,.pat-filemanager .pat-filemanager .navbar .btn-group>.btn-group-dropdown:last-child>a.btn,.pat-filemanager .navbar .pat-filemanager .pat-filemanager .btn-group-dropdown>.btn-group-dropdown:last-child>a.btn{border-bottom-right-radius:4px;border-top-right-radius:4px}.pat-filemanager .navbar .btn-group>.btn-group-dropdown:first-child>a.btn,.pat-filemanager .navbar .btn-group>.btn-group-dropdown:first-child>a.pat-filemanager .btn,.pat-filemanager .navbar .pat-filemanager .btn-group>.btn-group-dropdown:first-child>a.btn,.pat-filemanager .navbar .pat-filemanager .btn-group-dropdown>.btn-group-dropdown:first-child>a.btn,.pat-filemanager .pat-filemanager .navbar .btn-group>.btn-group-dropdown:first-child>a.btn,.pat-filemanager .navbar .pat-filemanager .pat-filemanager .btn-group-dropdown>.btn-group-dropdown:first-child>a.btn{border-bottom-left-radius:4px;border-top-left-radius:4px}.pat-filemanager .navbar-default{min-height:250px}.pat-filemanager .nav-and-editor{float:left;width:75%}.pat-filemanager .nav-and-editor .navbar .navbar-collapse.collapse,.pat-filemanager .nav-and-editor .navbar .navbar-collapse.pat-filemanager .collapse,.pat-filemanager .nav-and-editor .pat-filemanager .navbar .navbar-collapse.collapse,.pat-filemanager .nav-and-editor .navbar .pat-filemanager .navbar-collapse.collapse{height:37px !important}.pat-filemanager .navbar-nav>li,.pat-filemanager .pat-filemanager .navbar-nav>li{padding-left:15px;padding-right:15px;background-color:#F8F8F8;-webkit-border-top-left-radius:10px;-webkit-border-top-right-radius:10px;-moz-border-radius-topleft:10px;-moz-border-radius-topright:10px;border-top-left-radius:10px;border-top-right-radius:10px;margin-right:5px;border-top:1px solid #CCC;border-right:1px solid #CCC;border-left:1px solid #CCC}.pat-filemanager .navbar-nav>li.active,.pat-filemanager .pat-filemanager .navbar-nav>li.active{border-top:1px solid #999;border-right:1px solid #999;border-left:1px solid #999;background-color:#E7E7E7}.pat-filemanager .navbar-nav>li.active a,.pat-filemanager .pat-filemanager .navbar-nav>li.active a{background-color:#E7E7E7}.pat-filemanager .navbar-nav>li>a,.pat-filemanager .pat-filemanager .navbar-nav>li>a{display:inline-block;padding:8px 0;text-decoration:none;color:#333}.pat-filemanager .navbar-nav>li>a+a,.pat-filemanager .pat-filemanager .navbar-nav>li>a+a{padding-left:4px}.pat-filemanager .navbar-nav>li>a:focus,.pat-filemanager .pat-filemanager .navbar-nav>li>a:focus{outline:none}.pat-filemanager .navbar-nav>li.modified>a,.pat-filemanager .pat-filemanager .navbar-nav>li.modified>a{color:#f0ad4e}body.plone-toolbar-left-default{padding-left:0}#edit-zone{display:none}.pat-thememapper{font-family:Roboto,sans-serif}.pat-thememapper iframe{width:100%;height:300px;border:solid #eee 1px;position:relative}.pat-thememapper iframe.fullscreen-frame{height:600px}.pat-thememapper .fullscreen{vertical-align:top;display:inline-block;line-height:12px;padding:0 0 0 18px;margin:4px 0 0 2px;background-repeat:no-repeat;text-decoration:none;border-bottom:none !important;color:#333 !important;font-size:90%;content:none}.pat-thememapper .refresh{vertical-align:top;display:inline-block;line-height:12px;padding:0 0 0 12px;margin:4px 0 0 5px;background-repeat:no-repeat;text-decoration:none;border-bottom:none !important;color:#333 !important;font-size:90%;content:none}.pat-thememapper .frame-info{background-color:#EEEEEE;height:1.5em;margin-right:-2px;padding:0 5px;vertical-align:middle}.pat-thememapper .frame-shelf{float:right}.pat-thememapper .clear-shelf{font-size:85%;vertical-align:top;text-decoration:none;border-bottom:none !important}.pat-thememapper .panel-toolbar,.pat-thememapper .frame-shelf-container{float:right}.pat-thememapper .show-fullscreen .frame-panel{position:fixed;top:0;left:0;z-index:99999999;width:100%;height:100%;background-color:white}.pat-thememapper .show-fullscreen .frame-panel iframe{height:80%}.pat-thememapper .ace_editor{border:1px solid #999}.pat-thememapper .ace_editor .info{width:100%;height:100%}.pat-thememapper .ace_editor .info img{max-height:80%}.pat-thememapper .navbar-nav a,.pat-thememapper .pat-filemanager .navbar-nav a{color:black;text-decoration:none;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}.pat-thememapper .navbar.ui-offset-parent,.pat-thememapper .pat-filemanager .navbar.ui-offset-parent,.pat-thememapper .navbar.pat-filemanager .ui-offset-parent{margin-bottom:0}.pat-thememapper .container.fullscreen{position:fixed;top:0;left:0;z-index:99999999;width:100%;height:100%;margin:0;background-color:white}.pat-thememapper .container.fullscreen .tree{height:97%;width:15%;border:none}.pat-thememapper .container.fullscreen .nav-and-editor{width:83%;height:97%;border:none}.pat-thememapper .container.fullscreen .closeeditor{margin-bottom:10px;font-size:x-small}.pat-thememapper .tree{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;border-color:#ddd;border-style:solid;border-right:0;padding:10px;overflow-y:scroll;height:80vh;margin-top:0}.pat-thememapper .tree .jqtree-tree{margin-top:0}.pat-thememapper .tree .jqtree-tree .jqtree-title{padding:2px}.pat-thememapper .tree .jqtree-tree li{white-space:nowrap;overflow:hidden;padding:3px 0 3px 0}.pat-thememapper .tree .glyphicon{top:-1px}.pat-thememapper .tree .glyphicon:before{margin-right:5px}.pat-thememapper .tree ul.jqtree-tree li.jqtree_common>div:hover{background-color:#1C4257}.pat-thememapper .tree ul.jqtree-tree li.jqtree_common>div:hover span{color:white;text-shadow:none}.pat-thememapper .tree ul.jqtree-tree li.jqtree_common>div:hover a{color:white;text-shadow:none}.pat-thememapper .tree ul.jqtree-tree li.jqtree-selected{font-weight:bold}.pat-thememapper .tree ul.jqtree-tree li.jqtree-selected>.jqtree_common{background-color:#E7E7E7}.pat-thememapper .nav-and-editor{background-color:#ccc;width:70vw;height:80vh;padding-bottom:20px;border-color:#ddd;border-style:solid;border-left:0}.pat-thememapper .nav-and-editor .collapse,.pat-thememapper .nav-and-editor .pat-filemanager .collapse{padding-left:0}.pat-thememapper .navbar-nav>li,.pat-thememapper .pat-filemanager .navbar-nav>li{background-color:#DDD}.pat-thememapper .navbar-nav>li a,.pat-thememapper .pat-filemanager .navbar-nav>li a{background-color:transparent}.pat-thememapper .navbar-nav>li.active,.pat-thememapper .pat-filemanager .navbar-nav>li.active{background-color:#FFF}.pat-thememapper .nav.smallTabs li,.pat-thememapper .pat-filemanager .nav.smallTabs li{padding:0 5px 0 5px;font-size:x-small}.pat-thememapper .upload-area{border:2px dashed #ddd;background-color:#eee;padding:10px}.pat-thememapper .upload-area p{margin-top:1em;margin-bottom:1em;text-align:center;font-size:xx-large;color:#aaa}.pat-thememapper .upload-area #fakeUploadFile{display:none}.pat-thememapper .upload-area .row>div{display:inline}.pat-thememapper .upload-area .item{margin:10px 0}.pat-thememapper .upload-area .item div{display:table-cell}.pat-thememapper .upload-area .browse{width:100%}.pat-thememapper .upload-area .title{width:250px}.pat-thememapper .upload-area .action{width:20px}.pat-thememapper .upload-area .info{width:100px}.pat-thememapper .upload-area .info img{display:inline;background-color:white;max-height:50px;float:right;max-width:50px;margin-top:-35px}.pat-thememapper .upload-area .controls{display:none}.pat-thememapper .upload-area .sr-only{display:none}.pat-thememapper .rulebuilderView{max-width:500px}.pat-thememapper .rulebuilderView .inputs{border:1px solid #999;padding:5px}.pat-thememapper .rulebuilderView .new-rule-type-panel>div{margin-top:5px}.pat-thememapper .rulebuilderView .formControls{margin-top:5px}.pat-thememapper .rulebuilderView #new-rule-output{margin:5px 0 5px 0;width:100%;height:80px}.pat-thememapper .rulebuilderView #new-rule-reuse-panel{margin-top:15px}.pat-thememapper #inspectors{clear:both}.pat-thememapper #inspectors .frame-shelf-container{margin-right:5px}.pat-thememapper .pat-filemanager .navbar .btn-group>a.btn,.pat-thememapper .pat-filemanager .navbar .btn-group>a.pat-filemanager .btn,.pat-thememapper .pat-filemanager .navbar .pat-filemanager .btn-group>a.btn,.pat-thememapper .pat-filemanager .navbar .pat-filemanager .btn-group-dropdown>a.btn,.pat-thememapper .pat-filemanager .pat-filemanager .navbar .btn-group>a.btn,.pat-thememapper .pat-filemanager .navbar .pat-filemanager .pat-filemanager .btn-group-dropdown>a.btn{float:none;display:inline-block;line-height:10px;padding:5px;font-size:small;padding-bottom:8px;margin-bottom:.5em}.pat-thememapper .btn-group,.pat-thememapper .pat-filemanager .btn-group,.pat-thememapper .pat-filemanager .btn-group-dropdown,.pat-thememapper .pat-filemanager .pat-filemanager .btn-group-dropdown{margin-right:30px}.pat-thememapper #lessBuilder .buttonBox{margin-top:10px}.pat-thememapper #lessBuilder .buttonBox label{display:block}.pat-thememapper #lessFileName{margin-bottom:15px;display:block;width:100%}.pat-thememapper .errorMessage{word-wrap:break-word;font-size:small}.pat-thememapper #styleBox{display:none}@site Path:/;@site Path: /;/*# sourceMappingURL=thememapper-compiled.css.map */\n\\ No newline at end of file\ndiff --git a/src/plone/app/theming/browser/resources/thememapper-compiled.css.map b/src/plone/app/theming/browser/resources/thememapper-compiled.css.map\nindex d087958..224ebaf 100644\n--- a/src/plone/app/theming/browser/resources/thememapper-compiled.css.map\n+++ b/src/plone/app/theming/browser/resources/thememapper-compiled.css.map\n@@ -1 +1 @@\n-{"version":3,"sources":["/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/header.plone.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/clearfix.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/buttons.plone.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/buttons.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/vendor-prefixes.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/tab-focus.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/opacity.less","/home/_thet/data/dev/plone/patternslib/mockup/mockup/patterns//filemanager/pattern.filemanager.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/border-radius.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/alerts.plone.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/mixin.font.plone.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/fonts.plone.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/type.plone.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/scaffolding.plone.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/variables.plone.less","/home/_thet/repos-config/dotfiles-thet/dot.buildout/eggs/plonetheme.barceloneta-1.7.1-py2.7.egg/plonetheme/barceloneta/theme/less/tooltip.plone.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/glyphicons.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/modals.less","/home/_thet/data/dev/plone/patternslib/mockup/mockup/less//base.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/buttons.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/close.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/progress-bars.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/gradients.less","/home/_thet/data/dev/plone/patternslib/mockup/mockup/patterns//tooltip/pattern.tooltip.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/tooltip.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/reset-text.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/variables.less","/home/_thet/data/dev/plone/patternslib/mockup/mockup/less//ui.less","src/Products.CMFPlone/Products/CMFPlone/static/components/jqtree/jqtree.css","/home/_thet/data/dev/plone/patternslib/mockup/mockup/patterns//tree/pattern.tree.less","/home/_thet/data/dev/plone/patternslib/mockup/mockup/less//popover.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/utilities.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/center-block.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/hide-text.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/button-groups.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/badges.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/popovers.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/pagination.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/input-groups.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/forms.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/tables.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/table-row.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/dropdowns.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/nav-divider.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/reset-filter.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/forms.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/mixins/grid.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/navbar.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/navs.less","src/Products.CMFPlone/Products/CMFPlone/static/components/bootstrap/less/component-animations.less","/home/_thet/data/dev/plone/patternslib/mockup/mockup/patterns/thememapper/pattern.thememapper.less","src/plone.app.theming/src/plone/app/theming/browser/resources/thememapper.less"],"names":[],"mappings":"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gBAEI,gBC4DA,OAAA,CACA,MAAA,CACA,eAAA,CACA,0BAAA,CACA,wBDjEA,eAAC,QCmEF,KAAM,gBAAP,QAAC,KDpEH,gBAEI,gBCmEA,OAAA,CACA,OAAA,CACA,eAAA,CACA,0BAAA,CACA,uBDxEA,eAAC,QC0EF,OAAQ,gBAAT,QAAC,OD3EH,gBAEI,gBC0EA,KAAA,CACA,QAAA,CACA,gBAAA,CACA,sBAAA,CACA,yBD/EA,eAAC,QCiFF,YAAa,gBAAd,QAAC,YDlFH,gBAEI,gBCiFA,KAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,yBDtFA,eAAC,QCwFF,aAAc,gBAAf,QAAC,aDzFH,gBAEI,gBCwFA,KAAA,CACA,QAAA,CACA,eAAA,CACA,sBAAA,CACA,yBG7FJ,cACE,YAAA,CACA,cAAA,CACA,OAAA,CACA,uBAJF,aAME,KACE,gBAAA,CACA,aAAA,CACA,mBAAA,CACA,yCAAA,CACA,8CAAA,CACA,+CAAA,CACA,6CAAA,CACA,kBAAmB,aAAnB,CACA,cAAe,aAAf,CACA,UAAW,aAAX,CACA,4CAAA,CACA,qCAlBJ,aAoBE,KApBF,aAqBE,IAAG,OACD,iBAAA,CACA,UAAA,CACA,YAEF,yBACE,GACE,kBAAmB,YAAnB,CACA,UAAW,aAEb,KACE,kBAAmB,cAAnB,CACA,UAAW,gBAGf,iBACE,GACE,kBAAmB,YAAnB,CACA,UAAW,aAEb,KACE,kBAAmB,cAAnB,CACA,UAAW,gBChDjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChIA,SAAU,GAAG,GAAE,eACb,cCLF,SvBqBA,gBAKI,UuBzBA,eAAA,CACA,gBAFJ,QAII,gBvBiBJ,gBAKI,SuBtBA,gBAJJ,QvBqBA,iBAMI,gBuBrBI,iBANR,QAII,eAGI,OvBcR,gBAKI,SuBtBA,eAGI,OAPR,QvBqBA,iBAMI,euBpBI,OACI,gBAGR,QAAC,QvBUL,gBAKI,SuBfC,QACG,cAGR,kBACI,qBAAA,CACA,a7BJF,SAAC,QACD,SAAC,OiB2BH,mBjB5BG,QiB4BH,mBjB3BG,OiB8BH,mBjB/BG,QiB+BH,mBjB9BG,OACC,QAAS,GAAT,CACA,cAEF,SAAC,OiBuBH,mBjBvBG,OiB0BH,mBjB1BG,OACC,W8BRJ,cCRE,aAAA,CACA,gBAAA,CACA,kBDSF,YACE,WAAA,YAEF,WACE,UAAA,YAQF,MACE,YAAA,YAEF,MACE,aAAA,YAEF,WACE,kBAEF,WEzBE,UAAA,CACA,iBAAA,CACA,gBAAA,CACA,4BAAA,CACA,SF8BF,QACE,YAAA,YAOF,OACE,exBhCF,gBAaI,MYzBF,oBAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CACA,qBAAA,CACA,yBAAA,CACA,cAAA,CACA,qBAAA,CACA,4BAAA,CACA,kBAAA,ChB0CA,gBAAA,CACA,cAAA,CACA,sBAAA,CACA,iBAAA,CC+JA,wBAAA,CACG,qBAAA,CACC,oBAAA,CACI,iBG5MV,gBAaI,KYTC,OZJL,gBAaI,KYXD,OAEE,OZJL,gBAaI,KYVD,OACE,OZJL,gBAaI,KYRC,OZLL,gBAaI,KYXD,OAGE,OZLL,gBAaI,KYVD,OAEE,OdtBH,mBAAA,CAEA,yCAAA,CACA,oBEcF,gBAaI,KYHD,OZVH,gBAaI,KYFD,OZXH,gBAaI,KYDD,OACC,UAAA,CACA,qBZdJ,gBAaI,KYID,QZjBH,gBAaI,KYKD,QACC,SAAA,CACA,qBAAA,Cf2BF,oDAAA,CACQ,6CGhDV,gBAaI,KYWD,UZxBH,gBAaI,KYYD,WACD,QAAQ,UZ1BV,iBAaI,MYcA,kBAAA,Cb7CF,WAAA,CAGA,wBAAA,CF8DA,uBAAA,CACQ,gBefN,CZjCJ,gBAaI,KYoBC,UACD,QAAQ,UAAW,EZlCvB,gBAaI,MYsBE,oBZnCN,gBAcI,cJ7BF,UAAA,CACA,qBAAA,CACA,kBIaF,gBAcI,aJzBD,OIWH,gBAcI,aJxBD,OACC,UAAA,CACA,wBAAA,CACI,qBIOR,gBAcI,aJnBD,OACC,UAAA,CACA,wBAAA,CACI,qBIER,gBAcI,aJdD,QIAH,gBAcI,aJbD,QACD,KAAM,iBIFR,gBAcI,cJZF,KIFF,iBAuBI,iBJrBsB,aIF1B,gBA2CI,MJzCI,iBAAkB,aACtB,UAAA,CACA,wBAAA,CACI,qBILR,gBAcI,aJdD,OAOE,OIPL,gBAcI,aJbD,OAME,OAAD,KALI,iBIFR,gBAcI,aJPC,OIPL,gBAcI,aJdD,OAQE,OIRL,gBAcI,aJbD,OAOE,OAAD,KANI,iBIFR,gBAcI,aJNC,OIRL,gBAcI,aJdD,OASE,OITL,gBAcI,aJbD,OAQE,OAAD,KAPI,iBIFR,gBAcI,aJLC,OAFD,KIPJ,iBAuBI,iBJrBsB,YAKrB,OACD,KIRJ,iBAuBI,iBJrBsB,YAMrB,OACD,KITJ,iBAuBI,iBJrBsB,YAOrB,OITL,gBA2CI,MJzCI,iBAAkB,YAKrB,OIPL,gBA2CI,MJzCI,iBAAkB,YAMrB,OIRL,gBA2CI,MJzCI,iBAAkB,YAOrB,OACC,UAAA,CACA,wBAAA,CACI,qBIZV,gBAcI,aJCD,QIfH,gBAcI,aJED,QACD,KAAM,iBIjBR,gBAcI,cJGF,KIjBF,iBAuBI,iBJNsB,aIjB1B,gBA2CI,MJ1BI,iBAAkB,aACtB,sBIlBJ,gBAcI,aJMD,SAGE,OIvBL,gBAcI,aJOD,UAEE,OAAD,QADM,UItBV,iBAcI,aJSC,OIvBL,gBAcI,aJMD,SAIE,OIxBL,gBAcI,aJOD,UAGE,OAAD,QAFM,UItBV,iBAcI,aJUC,OIxBL,gBAcI,aJMD,SAKE,OIzBL,gBAcI,aJOD,UAIE,OAAD,QAHM,UItBV,iBAcI,aJWC,OACC,qBAAA,CACI,kBI3BV,gBAcI,aJiBF,QACE,UAAA,CACA,sBIjCJ,gBAgBI,cJ/BF,UAAA,CACA,wBAAA,CACA,qBIaF,gBAgBI,aJ3BD,OIWH,gBAgBI,aJ1BD,OACC,UAAA,CACA,wBAAA,CACI,qBIOR,gBAgBI,aJrBD,OACC,UAAA,CACA,wBAAA,CACI,qBIER,gBAgBI,aJhBD,QIAH,gBAgBI,aJfD,QACD,KAAM,iBIFR,gBAgBI,cJdF,KIFF,iBAuBI,iBJrBsB,aIF1B,gBA2CI,MJzCI,iBAAkB,aACtB,UAAA,CACA,wBAAA,CACI,qBILR,gBAgBI,aJhBD,OAOE,OIPL,gBAgBI,aJfD,OAME,OAAD,KALI,iBIFR,gBAgBI,aJTC,OIPL,gBAgBI,aJhBD,OAQE,OIRL,gBAgBI,aJfD,OAOE,OAAD,KANI,iBIFR,gBAgBI,aJRC,OIRL,gBAgBI,aJhBD,OASE,OITL,gBAgBI,aJfD,OAQE,OAAD,KAPI,iBIFR,gBAgBI,aJPC,OAFD,KIPJ,iBAuBI,iBJrBsB,YAKrB,OACD,KIRJ,iBAuBI,iBJrBsB,YAMrB,OACD,KITJ,iBAuBI,iBJrBsB,YAOrB,OITL,gBA2CI,MJzCI,iBAAkB,YAKrB,OIPL,gBA2CI,MJzCI,iBAAkB,YAMrB,OIRL,gBA2CI,MJzCI,iBAAkB,YAOrB,OACC,UAAA,CACA,wBAAA,CACI,qBIZV,gBAgBI,aJDD,QIfH,gBAgBI,aJAD,QACD,KAAM,iBIjBR,gBAgBI,cJCF,KIjBF,iBAuBI,iBJNsB,aIjB1B,gBA2CI,MJ1BI,iBAAkB,aACtB,sBIlBJ,gBAgBI,aJID,SAGE,OIvBL,gBAgBI,aJKD,UAEE,OAAD,QADM,UItBV,iBAgBI,aJOC,OIvBL,gBAgBI,aJID,SAIE,OIxBL,gBAgBI,aJKD,UAGE,OAAD,QAFM,UItBV,iBAgBI,aJQC,OIxBL,gBAgBI,aJID,SAKE,OIzBL,gBAgBI,aJKD,UAIE,OAAD,QAHM,UItBV,iBAgBI,aJSC,OACC,wBAAA,CACI,qBI3BV,gBAgBI,aJeF,QACE,aAAA,CACA,sBIjCJ,gBAkBI,cJjCF,UAAA,CACA,wBAAA,CACA,qBIaF,gBAkBI,aJ7BD,OIWH,gBAkBI,aJ5BD,OACC,UAAA,CACA,wBAAA,CACI,qBIOR,gBAkBI,aJvBD,OACC,UAAA,CACA,wBAAA,CACI,qBIER,gBAkBI,aJlBD,QIAH,gBAkBI,aJjBD,QACD,KAAM,iBIFR,gBAkBI,cJhBF,KIFF,iBAuBI,iBJrBsB,aIF1B,gBA2CI,MJzCI,iBAAkB,aACtB,UAAA,CACA,wBAAA,CACI,qBILR,gBAkBI,aJlBD,OAOE,OIPL,gBAkBI,aJjBD,OAME,OAAD,KALI,iBIFR,gBAkBI,aJXC,OIPL,gBAkBI,aJlBD,OAQE,OIRL,gBAkBI,aJjBD,OAOE,OAAD,KANI,iBIFR,gBAkBI,aJVC,OIRL,gBAkBI,aJlBD,OASE,OITL,gBAkBI,aJjBD,OAQE,OAAD,KAPI,iBIFR,gBAkBI,aJTC,OAFD,KIPJ,iBAuBI,iBJrBsB,YAKrB,OACD,KIRJ,iBAuBI,iBJrBsB,YAMrB,OACD,KITJ,iBAuBI,iBJrBsB,YAOrB,OITL,gBA2CI,MJzCI,iBAAkB,YAKrB,OIPL,gBA2CI,MJzCI,iBAAkB,YAMrB,OIRL,gBA2CI,MJzCI,iBAAkB,YAOrB,OACC,UAAA,CACA,wBAAA,CACI,qBIZV,gBAkBI,aJHD,QIfH,gBAkBI,aJFD,QACD,KAAM,iBIjBR,gBAkBI,cJDF,KIjBF,iBAuBI,iBJNsB,aIjB1B,gBA2CI,MJ1BI,iBAAkB,aACtB,sBIlBJ,gBAkBI,aJED,SAGE,OIvBL,gBAkBI,aJGD,UAEE,OAAD,QADM,UItBV,iBAkBI,aJKC,OIvBL,gBAkBI,aJED,SAIE,OIxBL,gBAkBI,aJGD,UAGE,OAAD,QAFM,UItBV,iBAkBI,aJMC,OIxBL,gBAkBI,aJED,SAKE,OIzBL,gBAkBI,aJGD,UAIE,OAAD,QAHM,UItBV,iBAkBI,aJOC,OACC,wBAAA,CACI,qBI3BV,gBAkBI,aJaF,QACE,aAAA,CACA,sBA/BF,KIFF,iBAuBI,iBJrBsB,UIF1B,gBA2CI,MJzCI,iBAAkB,UACtB,UAAA,CACA,wBAAA,CACI,qBAEJ,KIPJ,iBAuBI,iBJrBsB,SAKrB,OACD,KIRJ,iBAuBI,iBJrBsB,SAMrB,OACD,KITJ,iBAuBI,iBJrBsB,SAOrB,OITL,gBA2CI,MJzCI,iBAAkB,SAKrB,OIPL,gBA2CI,MJzCI,iBAAkB,SAMrB,OIRL,gBA2CI,MJzCI,iBAAkB,SAOrB,OACC,UAAA,CACA,wBAAA,CACI,qBAKR,KIjBF,iBAuBI,iBJNsB,UIjB1B,gBA2CI,MJ1BI,iBAAkB,UACtB,sBAhBF,KIFF,iBAuBI,iBJrBsB,aIF1B,gBA2CI,MJzCI,iBAAkB,aACtB,UAAA,CACA,wBAAA,CACI,qBAEJ,KIPJ,iBAuBI,iBJrBsB,YAKrB,OACD,KIRJ,iBAuBI,iBJrBsB,YAMrB,OACD,KITJ,iBAuBI,iBJrBsB,YAOrB,OITL,gBA2CI,MJzCI,iBAAkB,YAKrB,OIPL,gBA2CI,MJzCI,iBAAkB,YAMrB,OIRL,gBA2CI,MJzCI,iBAAkB,YAOrB,OACC,UAAA,CACA,wBAAA,CACI,qBAKR,KIjBF,iBAuBI,iBJNsB,aIjB1B,gBA2CI,MJ1BI,iBAAkB,aACtB,sBIlBJ,gBAeI,aJ9BF,UAAA,CACA,wBAAA,CACA,qBIaF,gBAeI,YJ1BD,OIWH,gBAeI,YJzBD,OACC,UAAA,CACA,wBAAA,CACI,qBIOR,gBAeI,YJpBD,OACC,UAAA,CACA,wBAAA,CACI,qBIER,gBAeI,YJfD,QIAH,gBAeI,YJdD,QACD,KAAM,iBIFR,gBAeI,aJbF,KIFF,iBAuBI,iBJrBsB,YIF1B,gBA2CI,MJzCI,iBAAkB,YACtB,UAAA,CACA,wBAAA,CACI,qBILR,gBAeI,YJfD,OAOE,OIPL,gBAeI,YJdD,OAME,OAAD,KALI,iBIFR,gBAeI,YJRC,OIPL,gBAeI,YJfD,OAQE,OIRL,gBAeI,YJdD,OAOE,OAAD,KANI,iBIFR,gBAeI,YJPC,OIRL,gBAeI,YJfD,OASE,OITL,gBAeI,YJdD,OAQE,OAAD,KAPI,iBIFR,gBAeI,YJNC,OAFD,KIPJ,iBAuBI,iBJrBsB,WAKrB,OACD,KIRJ,iBAuBI,iBJrBsB,WAMrB,OACD,KITJ,iBAuBI,iBJrBsB,WAOrB,OITL,gBA2CI,MJzCI,iBAAkB,WAKrB,OIPL,gBA2CI,MJzCI,iBAAkB,WAMrB,OIRL,gBA2CI,MJzCI,iBAAkB,WAOrB,OACC,UAAA,CACA,wBAAA,CACI,qBIZV,gBAeI,YJAD,QIfH,gBAeI,YJCD,QACD,KAAM,iBIjBR,gBAeI,aJEF,KIjBF,iBAuBI,iBJNsB,YIjB1B,gBA2CI,MJ1BI,iBAAkB,YACtB,sBIlBJ,gBAeI,YJKD,SAGE,OIvBL,gBAeI,YJMD,UAEE,OAAD,QADM,UItBV,iBAeI,YJQC,OIvBL,gBAeI,YJKD,SAIE,OIxBL,gBAeI,YJMD,UAGE,OAAD,QAFM,UItBV,iBAeI,YJSC,OIxBL,gBAeI,YJKD,SAKE,OIzBL,gBAeI,YJMD,UAIE,OAAD,QAHM,UItBV,iBAeI,YJUC,OACC,wBAAA,CACI,qBI3BV,gBAeI,YJgBF,QACE,aAAA,CACA,sBIjCJ,gBAiBI,Y2B/BF,iBAAA,CACA,oBAAA,CACA,sBAJF,U3BgBA,iBAaI,M2B5BJ,mB3BeA,iBAaI,MAbJ,gBAiBI,W2B5BF,MACE,iBAAA,CACA,WAEA,U3BOJ,iBAaI,K2BpBC,OAAD,mB3BOJ,iBAaI,K2BpBC,OACD,U3BMJ,iBAaI,K2BnBC,OAAD,mB3BMJ,iBAaI,K2BnBC,OACD,U3BKJ,iBAaI,K2BlBC,QAAD,mB3BKJ,iBAaI,K2BlBC,QACD,U3BIJ,iBAaI,K2BjBC,QAAD,mB3BIJ,iBAaI,K2BjBC,Q3BIL,gBAiBI,W2B5BF,KAIG,O3BOL,gBAiBI,W2B5BF,KAKG,O3BML,gBAiBI,W2B5BF,KAMG,Q3BKL,gBAiBI,W2B5BF,KAOG,QACC,UAMN,U3BHA,iBAaI,KAbJ,iBAaI,M2BVJ,U3BHA,iBAaI,K2BRG,YAFP,UAGE,W3BNF,iBAaI,MAbJ,gBAiBI,W2BbF,KAAK,M3BJP,gBAiBI,W2BZF,K3BLF,iBAiBI,YAjBJ,gBAiBI,WAjBJ,iBAiBI,W2BXS,M3BNb,gBAiBI,WAjBJ,iBAiBI,WAjBJ,iBAiBI,Y2BTA,iBAKJ,Y3BbA,iBAaI,M2BAJ,Y3BbA,iBAiBI,Y2BJJ,Y3BbA,iBAmBI,c2BCA,WAPJ,Y3BbA,iBAaI,M2BAJ,Y3BbA,iBAiBI,Y2BJJ,Y3BbA,iBAmBI,c2BMA,gBAIJ,U3B7BA,iBAaI,K2BgBa,IAAI,cAAc,IAAI,aAAa,IAAI,mB3B7BxD,gBAiBI,W2BYO,KAAM,IAAI,cAAc,IAAI,aAAa,IAAI,mBACtD,gBAIF,U3BlCA,iBAaI,K2BqBa,a3BlCjB,gBAiBI,W2BiBO,KAAM,aACf,cACA,U3BpCF,iBAaI,K2BqBa,YAEd,IAAI,aAAa,IAAI,mB3BpCxB,gBAiBI,W2BiBO,KAAM,YAEd,IAAI,aAAa,IAAI,mB1BlDtB,4BAAA,CACG,0B0BsDL,U3BzCA,iBAaI,K2B4Ba,WAAW,IAAI,e3BzChC,gBAiBI,W2BwBO,KAAM,WAAW,IAAI,e3BzChC,gBAiBI,W2ByBO,iBAAkB,IAAI,eAAjC,U3B1CA,iBAuBI,iB2BmByB,IAAI,e1BhD/B,2BAAA,CACG,yBDKL,gBAiBI,WAjBJ,iBAiBI,Y2B+BF,WAEF,UAAW,WAAY,IAAI,cAAc,IAAI,a3BlD7C,iBAaI,MAbJ,gBAiBI,WAjBJ,iBAiBI,W2BiCmB,IAAI,cAAc,IAAI,aAAc,MACzD,gBAEF,UAAW,WAAY,YAAY,IAAI,a3BrDvC,iBAaI,K2ByCI,Y3BtDR,gBAiBI,WAjBJ,iBAiBI,W2BoCmB,YAAY,IAAI,aACrC,KAAM,Y3BtDR,gBAiBI,WAjBJ,iBAiBI,W2BoCmB,YAAY,IAAI,aAErC,kBAFF,UAAW,WAAY,YAAY,IAAI,a3BrDvC,iBAuBI,kBCrCF,4BAAA,CACG,0B0BwEL,UAAW,WAAY,WAAW,IAAI,c3B3DtC,iBAaI,K2B8CuD,a3B3D3D,gBAiBI,WAjBJ,iBAiBI,W2B0CmB,WAAW,IAAI,cAAe,KAAM,a1BjEzD,2BAAA,CACG,yBDKL,gBAiBI,W2B+CO,iBAAgB,Q3BhE3B,gBAiBI,W2BgDM,KAAM,kBADhB,U3BhEA,iBAuBI,iB2ByCuB,QAC3B,UAAU,K3BjEV,iBAuBI,kB2B0CJ,U3BjEA,gBA2CI,M2BsBY,kBACd,UAiBF,U3BnFA,iBAaI,K2BsEc,kB3BnFlB,gBAiBI,W2BkEO,KAAO,kBAAlB,UAAW,K3BnFX,iBAuBI,kB2B6DF,gBAAA,CACA,kB3BrFF,gBAiBI,W2BsEO,QAAU,kBAArB,UAAW,Q3BvFX,iBAuBI,kB2BiEF,iBAAA,CACA,mB3BzFF,gBAiBI,W2B6EM,KAAM,kBAAhB,UAAU,K3B9FV,iBAuBI,kB2BuEJ,U3B9FA,gBA2CI,M2BmDY,kB9B/Cd,oDAAA,CACQ,6CGhDV,gBAiBI,W2B6EM,KAAM,iBAIb,UAAD,UAJQ,K3B9FV,iBAuBI,iB2B2ED,UAAD,U3BlGF,gBA2CI,M2BmDY,iBAIb,U9BnDD,uBAAA,CACQ,gBGhDV,gBAaI,K2B4FC,QACH,cAgBF,mB3B1HA,iBAaI,M2B6GJ,mBAGE,W3B7HF,iBAaI,M2B6GJ,mB3B1HA,iBAiBI,Y2ByGJ,mB3B1HA,iBAiBI,W2B4GW,MACX,aAAA,CACA,UAAA,CACA,UAAA,CACA,eAPJ,mBAWE,W3BrIF,iBAaI,M2B6GJ,mB3B1HA,iBAiBI,W2BsHA,MACE,WAdN,mB3B1HA,iBAaI,KAbJ,iBAaI,M2B6GJ,mB3B1HA,iBAaI,K2BgIK,YAnBT,mBAoBE,W3B9IF,iBAaI,M2B6GJ,mBAmBE,K3B7IF,iBAiBI,Y2ByGJ,mB3B1HA,iBAiBI,W2B6HW,MApBf,mB3B1HA,iBAiBI,WAjBJ,iBAiBI,Y2B+HA,eAAA,CACA,cAKF,mB3BtJF,iBAaI,K2ByID,IAAI,cAAc,IAAI,cACrB,gBAEF,mB3BzJF,iBAaI,K2B4ID,YAAY,IAAI,c1B3KjB,2BAAA,CACC,0BAAA,CAOD,4BAAA,CACC,4B0BsKD,mB3B7JF,iBAaI,K2BgJD,WAAW,IAAI,e1B/KhB,yBAAA,CACC,wBAAA,CAOD,8BAAA,CACC,8B0B2KH,mBAAoB,WAAY,IAAI,cAAc,IAAI,a3BlKtD,iBAaI,M2BqJJ,mB3BlKA,iBAiBI,W2BiJ4B,IAAI,cAAc,IAAI,aAAc,MAClE,gBAEF,mBAAoB,WAAY,YAAY,IAAI,a3BrKhD,iBAaI,K2ByJI,YADR,mB3BrKA,iBAiBI,W2BoJ4B,YAAY,IAAI,aAC9C,KAAM,YADR,mB3BrKA,iBAiBI,W2BoJ4B,YAAY,IAAI,aAE9C,kBAFF,mBAAoB,WAAY,YAAY,IAAI,a3BrKhD,iBAuBI,kBCjCF,4BAAA,CACC,4B0BoLH,mBAAoB,WAAY,WAAW,IAAI,c3B3K/C,iBAaI,K2B8JgE,aAApE,mB3B3KA,iBAiBI,W2B0J4B,WAAW,IAAI,cAAe,KAAM,a1B7LlE,yBAAA,CACC,yB0BoMH,oB3BnLA,iBAaI,M2BsKJ,oB3BnLA,iBAiBI,Y2ByKA,UAAA,CACA,kBAAA,CACA,SATJ,oBAWE,W3B9LF,iBAaI,M2BsKJ,oB3BnLA,iBAiBI,W2B6KW,MACX,WAZJ,oB3BnLA,iBAiBI,W2BiLW,gBAff,oBAeE,W3BlMF,iBAsBI,gB2B6KA,UAiBJ,uB3BpNA,iBAaI,K2B0MA,MAAK,eAHT,uBAEE,W3BtNF,iBAaI,K2B0MA,MAAK,eAHT,uB3BpNA,iBAaI,K2B2MA,MAAK,kBAJT,uBAEE,W3BtNF,iBAaI,K2B2MA,MAAK,kBAJT,uB3BpNA,iBAiBI,W2BqMW,KACX,MAAK,eAHT,uB3BpNA,iBAiBI,W2BqMW,KAEX,MAAK,kBACH,iBAAA,CACA,KAAM,gBAAN,CACA,oB3B3NN,gBAaI,K4BRG,QACH,iBAAA,CACA,SAIF,a5BXF,iBAaI,K4BFmB,QACnB,KAAA,CACA,gB5BbJ,gBAKI,U6BpBF,iBAAA,CACA,KAAA,CACA,MAAA,CACA,YAAA,CACA,YAAA,CACA,eAAA,CACA,WAAA,CXXA,YC2CwB,2CD3CxB,CAEA,iBAAA,CACA,kBAAA,CACA,qBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CACA,gBAAA,CACA,oBAAA,CACA,gBAAA,CACA,mBAAA,CACA,kBAAA,CACA,iBAAA,CACA,mBAAA,CACA,gBAAA,CWAA,cAAA,CAEA,qBAAA,CACA,2BAAA,CACA,qBAAA,CACA,gCAAA,CACA,iBAAA,ChC8CA,6CAAA,CACQ,sCGhDV,gBAKI,S6BAD,KAAW,iB7BLd,gBAKI,S6BCD,OAAW,iB7BNd,gBAKI,S6BED,QAAW,gB7BPd,gBAKI,S6BGD,MAAW,kB7BRd,gBAMI,gB6BMF,QAAA,CACA,gBAAA,CACA,cAAA,CACA,wBAAA,CACA,+BAAA,CACA,0B7BjBF,gBAOI,kB6BcF,iB7BrBF,gBAKI,S6BuBK,Q7B5BT,gBAKI,S6BuBK,OAEN,OADD,Q7B7BF,iBAQI,Q6BsBF,Q7B9BF,iBAQI,O6BsBD,OACC,iBAAA,CACA,aAAA,CACA,OAAA,CACA,QAAA,CACA,wBAAA,CACA,mB7BpCJ,gBAKI,S6BkCK,QAAT,Q7BvCA,iBAQI,Q6BgCF,kB7BxCF,gBAKI,S6BqCK,OAAQ,OAAjB,Q7B1CA,iBAQI,O6BkCa,OACf,iBAAA,CACA,QAAS,G7B5CX,gBAKI,S6B2CD,IAAK,QAAN,QAAC,I7BhDH,iBAQI,Q6ByCA,QAAA,CACA,iBAAA,CACA,qBAAA,CACA,qBAAA,CACA,iCAAA,CACA,a7BtDJ,gBAKI,S6B2CD,IAAK,OAOH,OAAD,QAPD,I7BhDH,iBAQI,O6B+CC,OACC,QAAS,GAAT,CACA,UAAA,CACA,iBAAA,CACA,qBAAA,CACA,sB7B5DN,gBAKI,S6B0DD,MAAO,QAAR,QAAC,M7B/DH,iBAQI,Q6BwDA,OAAA,CACA,UAAA,CACA,gBAAA,CACA,mBAAA,CACA,uBAAA,CACA,oC7BrEJ,gBAKI,S6B0DD,MAAO,OAOL,OAAD,QAPD,M7B/DH,iBAQI,O6B8DC,OACC,QAAS,GAAT,CACA,QAAA,CACA,YAAA,CACA,mBAAA,CACA,wB7B3EN,gBAKI,S6ByED,OAAQ,QAAT,QAAC,O7B9EH,iBAQI,Q6BuEA,QAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CACA,oCAAA,CACA,U7BpFJ,gBAKI,S6ByED,OAAQ,OAON,OAAD,QAPD,O7B9EH,iBAQI,O6B6EC,OACC,QAAS,GAAT,CACA,OAAA,CACA,iBAAA,CACA,kBAAA,CACA,yB7B1FN,gBAKI,S6ByFD,KAAM,QAAP,QAAC,K7B9FH,iBAQI,Q6BuFA,OAAA,CACA,WAAA,CACA,gBAAA,CACA,oBAAA,CACA,sBAAA,CACA,mC7BpGJ,gBAKI,S6ByFD,KAAM,OAOJ,OAAD,QAPD,K7B9FH,iBAQI,O6B6FC,OACC,QAAS,GAAT,CACA,SAAA,CACA,oBAAA,CACA,sBAAA,CACA,a7B1GN,gBAWI,a8B5BF,oBAAA,CACA,cAAA,CACA,aAAA,CACA,kB9BcF,gBAWI,Y8BvBF,IACE,e9BWJ,gBAWI,Y8BvBF,GAEE,G9BUJ,gBAWI,Y8BvBF,GAGE,MACE,iBAAA,CACA,UAAA,CACA,gBAAA,CACA,sBAAA,CACA,oBAAA,CACA,aAAA,CACA,qBAAA,CACA,qBAAA,CACA,iB9BAN,gBAWI,Y8BvBF,GAcG,YACC,G9BHN,gBAWI,Y8BvBF,GAcG,YAEC,MACE,aAAA,C7BXN,6BAAA,CACG,2BDKL,gBAWI,Y8BvBF,GAqBG,WACC,G9BVN,gBAWI,Y8BvBF,GAqBG,WAEC,M7BzBJ,8BAAA,CACG,4BDaL,gBAWI,Y8BMF,GAAK,EAEF,O9BnBL,gBAWI,Y8BOF,GAAK,KACF,O9BnBL,gBAWI,Y8BMF,GAAK,EAGF,O9BpBL,gBAWI,Y8BOF,GAAK,KAEF,OACC,SAAA,CACA,aAAA,CACA,qBAAA,CACA,kB9BxBN,gBAWI,Y8BiBF,QAAU,G9B5BZ,gBAWI,Y8BkBF,QAAU,M9B7BZ,gBAWI,Y8BiBF,QAAU,EAGP,O9B/BL,gBAWI,Y8BkBF,QAAU,KAEP,O9B/BL,gBAWI,Y8BiBF,QAAU,EAIP,O9BhCL,gBAWI,Y8BkBF,QAAU,KAGP,OACC,SAAA,CACA,UAAA,CACA,wBAAA,CACA,oBAAA,CACA,e9BrCN,gBAWI,Y8B8BF,UACE,M9B1CJ,gBAWI,Y8B8BF,UAEE,KAAM,O9B3CV,gBAWI,Y8B8BF,UAGE,KAAM,O9B5CV,gBAWI,Y8B8BF,UAIE,G9B7CJ,gBAWI,Y8B8BF,UAKE,EAAG,O9B9CP,gBAWI,Y8B8BF,UAME,EAAG,OACD,UAAA,CACA,qBAAA,CACA,iBAAA,CACA,mB9BnDN,gBAmBI,c+BjCF,iBAAA,CACA,aAAA,CACA,yB/BYF,gBAmBI,a+B5BD,gBACC,UAAA,CACA,cAAA,CACA,gB/BMJ,gBAmBI,a+BtBF,eAGE,iBAAA,CACA,SAAA,CAKA,UAAA,CAEA,UAAA,CACA,gB/BTJ,gBAmBI,a+BtBF,cAcG,OACC,UAYN,eAAgB,iB/BxBhB,iBAaI,M+BUJ,e/BvBA,iBAoBI,oB+BIJ,e/BxBA,iBAqBI,iB+BG+B,MCwBjC,WAAA,CACA,iBAAA,CACA,cAAA,CACA,qBAAA,CACA,kBAEA,MAAM,eD9BQ,iB/BxBhB,iBAaI,MgCyCF,MAAM,ehCtDR,iBAoBI,oBgCkCF,MAAM,ehCtDR,iBAqBI,iB+BG+B,MC+B/B,WAAA,CACA,iBAGF,QAAQ,eDnCM,iB/BxBhB,iBAaI,MgC+CF,MAAM,UAAU,eDpCF,iB/BxBhB,iBAaI,MgC8CF,QAAQ,ehC3DV,iBAoBI,oBgCwCF,MAAM,UAAU,ehC5DlB,iBAoBI,oBgCuCF,QAAQ,ehC3DV,iBAqBI,iB+BG+B,MCoCjC,MAAM,UAAU,ehC5DlB,iBAqBI,iB+BG+B,MCqC/B,YDhCJ,eAAgB,iB/B7BhB,iBAaI,M+BeJ,e/B5BA,iBAoBI,oB+BSJ,e/B7BA,iBAqBI,iB+BQ+B,MCmBjC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,eAAA,CACA,kBAEA,MAAM,eDzBQ,iB/B7BhB,iBAaI,MgCyCF,MAAM,ehCtDR,iBAoBI,oBgCkCF,MAAM,ehCtDR,iBAqBI,iB+BQ+B,MC0B/B,WAAA,CACA,iBAGF,QAAQ,eD9BM,iB/B7BhB,iBAaI,MgC+CF,MAAM,UAAU,eD/BF,iB/B7BhB,iBAaI,MgC8CF,QAAQ,ehC3DV,iBAoBI,oBgCwCF,MAAM,UAAU,ehC5DlB,iBAoBI,oBgCuCF,QAAQ,ehC3DV,iBAqBI,iB+BQ+B,MC+BjC,MAAM,UAAU,ehC5DlB,iBAqBI,iB+BQ+B,MCgC/B,YhC7DJ,gBAmBI,a+BmBS,e/BtCb,gBAoBI,oBApBJ,gBAqBI,kB+BkBF,mB/BvCF,gBAmBI,a+BmBS,cAGV,IAAI,cAAc,IAAI,c/BzCzB,gBAoBI,mB+BqBD,IAAI,cAAc,IAAI,c/BzCzB,gBAqBI,iB+BoBD,IAAI,cAAc,IAAI,cACrB,gB/B1CJ,gBAoBI,oBApBJ,gBAqBI,kB+B2BF,QAAA,CACA,kBAAA,CACA,sB/BlDF,gBAoBI,oB+BoCF,gBAAA,CACA,cAAA,CACA,kBAAA,CACA,aAAA,CACA,UAAA,CACA,iBAAA,CACA,qBAAA,CACA,qBAAA,CACA,kB/BhEF,gBAoBI,mB+B+CD,UACC,gBAAA,CACA,cAAA,CACA,kB/BtEJ,gBAoBI,mB+BoDD,UACC,iBAAA,CACA,cAAA,CACA,kB/B3EJ,gBAoBI,mB+B2DF,MAAK,e/B/EP,gBAoBI,mB+B4DF,MAAK,kBACH,aAOJ,gBAAgB,Y/BxFhB,iBAaI,M+B4EJ,gBAAgB,YAAa,W/BzF7B,iBAaI,M+B8EJ,gBAAgB,W/B3FhB,iBAaI,K+B8E8B,IAAI,aAAa,IAAI,mBACvD,gBAAgB,WAAY,WAAY,IAAI,a/B5F5C,iBAaI,M+B4EJ,gBAAgB,Y/BzFhB,iBAiBI,W+BwEsC,MAG1C,gBAAgB,W/B5FhB,iBAiBI,W+B2EoC,IAAI,aAAc,M/B5F1D,gBAmBI,a+BmES,cAAa,a/BtF1B,gBAoBI,mB+BmEc,a/BvFlB,gBAqBI,iB+BmEY,YAAa,M/BxF7B,gBAqBI,iB+BoEY,YAAa,WAAa,M/BzF1C,gBAqBI,iB+BqEY,YAAa,kB/B1F7B,gBAqBI,iB+BsEY,WAAY,KAAM,IAAI,aAAa,IAAI,mB/B3FvD,gBAqBI,iB+BuEY,WAAY,WAAY,IAAI,aAAc,MAF1D,gBAAgB,Y/B1FhB,iBAuBI,kBCrCF,4BAAA,CACG,0BDaL,gBAoBI,mB+B2Ec,aAChB,eAIF,gBAAgB,W/BpGhB,iBAaI,M+BwFJ,gBAAgB,WAAY,W/BrG5B,iBAaI,M+B0FJ,gBAAgB,Y/BvGhB,iBAaI,K+B0F+B,IAAI,eACvC,gBAAgB,YAAa,WAAY,IAAI,c/BxG7C,iBAaI,M+BwFJ,gBAAgB,W/BrGhB,iBAiBI,W+BoFqC,MAGzC,gBAAgB,Y/BxGhB,iBAiBI,W+BuFqC,IAAI,cAAe,M/BxG5D,gBAmBI,a+B+ES,cAAa,Y/BlG1B,gBAoBI,mB+B+Ec,Y/BnGlB,gBAqBI,iB+B+EY,WAAY,M/BpG5B,gBAqBI,iB+BgFY,WAAY,WAAa,M/BrGzC,gBAqBI,iB+BiFY,WAAY,kB/BtG5B,gBAqBI,iB+BkFY,YAAa,KAAM,IAAI,e/BvGvC,gBAqBI,iB+BmFY,YAAa,WAAY,IAAI,cAAe,MAF5D,gBAAgB,W/BtGhB,iBAuBI,kBC7BF,2BAAA,CACG,yBDKL,gBAoBI,mB+BuFc,YAChB,c/B5GF,gBAqBI,kB+B6FF,iBAAA,CAGA,WAAA,CACA,mBALF,gB/BjHA,iBAaI,MAbJ,gBAqBI,iB+BqGF,MACE,kBAVJ,gB/BjHA,iBAaI,KAbJ,iBAaI,MAbJ,gBAqBI,iB+BqGF,KAEE,MACE,iBAGF,gB/BhIJ,iBAaI,K+BmHC,OACD,gB/BjIJ,iBAaI,K+BoHC,OACD,gB/BlIJ,iBAaI,K+BqHC,Q/BlIL,gBAqBI,iB+BqGF,KAMG,O/BhIL,gBAqBI,iB+BqGF,KAOG,O/BjIL,gBAqBI,iB+BqGF,KAQG,QACC,UAKJ,gBAAC,Y/BxIH,iBAaI,M+B2HF,gBAAC,Y/BxIH,iBAiBI,YAjBJ,gBAqBI,iB+BmHD,YACC,M/BzIJ,gBAqBI,iB+BmHD,YAEC,YACE,kBAGJ,gBAAC,W/B9IH,iBAaI,M+BiIF,gBAAC,W/B9IH,iBAiBI,YAjBJ,gBAqBI,iB+ByHD,WACC,M/B/IJ,gBAqBI,iB+ByHD,WAEC,YACE,SAAA,CACA,iB/BlJN,gBAUI,QiCTF,UAAA,CACA,cAAA,CACA,mBjCHF,gBAUI,OiCLF,MAGE,GACE,IjCTN,gBAUI,OiCJF,MAEE,GACE,IjCTN,gBAUI,OiCHF,MACE,GACE,IjCTN,gBAUI,OiCLF,MAGE,GAEE,IjCVN,gBAUI,OiCJF,MAEE,GAEE,IjCVN,gBAUI,OiCHF,MACE,GAEE,IACE,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,0BjCdR,gBAUI,OiCSF,MAAQ,GAAK,IACX,qBAAA,CACA,6BjCrBJ,gBAUI,OiCcF,QAAU,MAGR,GAAI,YACF,IjC5BN,gBAUI,OiCeF,SAAW,MAET,GAAI,YACF,IjC5BN,gBAUI,OiCgBF,MAAO,YACL,GAAI,YACF,IjC5BN,gBAUI,OiCcF,QAAU,MAGR,GAAI,YAEF,IjC7BN,gBAUI,OiCeF,SAAW,MAET,GAAI,YAEF,IjC7BN,gBAUI,OiCgBF,MAAO,YACL,GAAI,YAEF,IACE,ajC9BR,gBAUI,OiCyBF,MAAQ,OACN,0BjCpCJ,gBAUI,OAVJ,iBAUI,QiC+BA,sBjCzCJ,gBA4BI,iBiCuCF,sBjCnEF,gBA4BI,gBiCwCF,MAGE,GACE,IjCxEN,gBA4BI,gBiCyCF,MAEE,GACE,IjCxEN,gBA4BI,gBiC0CF,MACE,GACE,IjCxEN,gBA4BI,gBiCwCF,MAGE,GAEE,IjCzEN,gBA4BI,gBiCyCF,MAEE,GAEE,IjCzEN,gBA4BI,gBiC0CF,MACE,GAEE,IACE,sBjC1ER,gBA4BI,gBiCkDF,MAAQ,GACN,IjC/EJ,gBA4BI,gBiCkDF,MAAQ,GAEN,IACE,wBjCjFN,gBA2BI,eiCiEF,MAAQ,GAAI,YAAY,MACtB,yBjC7FJ,gBAUI,OkC1BK,MAAQ,GAGb,GAAI,CAAC,OlCaT,gBAUI,OkCzBK,MAAQ,GAEb,GAAI,CAAC,OlCaT,gBAUI,OkCxBK,MAAQ,GACb,GAAI,CAAC,OlCaT,gBAUI,OkC1BK,MAAQ,GAIb,GAAI,CAAC,OlCYT,gBAUI,OkCzBK,MAAQ,GAGb,GAAI,CAAC,OlCYT,gBAUI,OkCxBK,MAAQ,GAEb,GAAI,CAAC,OlCYT,gBAUI,OkC1BK,MAAQ,GAKZ,CAAC,MAAS,IlCWf,gBAUI,OkCzBK,MAAQ,GAIZ,CAAC,MAAS,IlCWf,gBAUI,OkCxBK,MAAQ,GAGZ,CAAC,MAAS,IlCWf,gBAUI,OkC1BK,MAAQ,GAMZ,CAAC,MAAS,IlCUf,gBAUI,OkCzBK,MAAQ,GAKZ,CAAC,MAAS,IlCUf,gBAUI,OkCxBK,MAAQ,GAIZ,CAAC,MAAS,IACT,yBlCSN,gBAUI,OkC1BK,MAAQ,GAGb,GAAI,CAAC,QlCaT,gBAUI,OkCzBK,MAAQ,GAEb,GAAI,CAAC,QlCaT,gBAUI,OkCxBK,MAAQ,GACb,GAAI,CAAC,QlCaT,gBAUI,OkC1BK,MAAQ,GAIb,GAAI,CAAC,QlCYT,gBAUI,OkCzBK,MAAQ,GAGb,GAAI,CAAC,QlCYT,gBAUI,OkCxBK,MAAQ,GAEb,GAAI,CAAC,QlCYT,gBAUI,OkC1BK,MAAQ,GAKZ,CAAC,OAAS,IlCWf,gBAUI,OkCzBK,MAAQ,GAIZ,CAAC,OAAS,IlCWf,gBAUI,OkCxBK,MAAQ,GAGZ,CAAC,OAAS,IlCWf,gBAUI,OkC1BK,MAAQ,GAMZ,CAAC,OAAS,IlCUf,gBAUI,OkCzBK,MAAQ,GAKZ,CAAC,OAAS,IlCUf,gBAUI,OkCxBK,MAAQ,GAIZ,CAAC,OAAS,IACT,yBlCSN,gBAUI,OkC1BK,MAAQ,GAGb,GAAI,CAAC,KlCaT,gBAUI,OkCzBK,MAAQ,GAEb,GAAI,CAAC,KlCaT,gBAUI,OkCxBK,MAAQ,GACb,GAAI,CAAC,KlCaT,gBAUI,OkC1BK,MAAQ,GAIb,GAAI,CAAC,KlCYT,gBAUI,OkCzBK,MAAQ,GAGb,GAAI,CAAC,KlCYT,gBAUI,OkCxBK,MAAQ,GAEb,GAAI,CAAC,KlCYT,gBAUI,OkC1BK,MAAQ,GAKZ,CAAC,IAAS,IlCWf,gBAUI,OkCzBK,MAAQ,GAIZ,CAAC,IAAS,IlCWf,gBAUI,OkCxBK,MAAQ,GAGZ,CAAC,IAAS,IlCWf,gBAUI,OkC1BK,MAAQ,GAMZ,CAAC,IAAS,IlCUf,gBAUI,OkCzBK,MAAQ,GAKZ,CAAC,IAAS,IlCUf,gBAUI,OkCxBK,MAAQ,GAIZ,CAAC,IAAS,IACT,yBlCSN,gBAUI,OkC1BK,MAAQ,GAGb,GAAI,CAAC,QlCaT,gBAUI,OkCzBK,MAAQ,GAEb,GAAI,CAAC,QlCaT,gBAUI,OkCxBK,MAAQ,GACb,GAAI,CAAC,QlCaT,gBAUI,OkC1BK,MAAQ,GAIb,GAAI,CAAC,QlCYT,gBAUI,OkCzBK,MAAQ,GAGb,GAAI,CAAC,QlCYT,gBAUI,OkCxBK,MAAQ,GAEb,GAAI,CAAC,QlCYT,gBAUI,OkC1BK,MAAQ,GAKZ,CAAC,OAAS,IlCWf,gBAUI,OkCzBK,MAAQ,GAIZ,CAAC,OAAS,IlCWf,gBAUI,OkCxBK,MAAQ,GAGZ,CAAC,OAAS,IlCWf,gBAUI,OkC1BK,MAAQ,GAMZ,CAAC,OAAS,IlCUf,gBAUI,OkCzBK,MAAQ,GAKZ,CAAC,OAAS,IlCUf,gBAUI,OkCxBK,MAAQ,GAIZ,CAAC,OAAS,IACT,yBlCSN,gBAUI,OkC1BK,MAAQ,GAGb,GAAI,CAAC,OlCaT,gBAUI,OkCzBK,MAAQ,GAEb,GAAI,CAAC,OlCaT,gBAUI,OkCxBK,MAAQ,GACb,GAAI,CAAC,OlCaT,gBAUI,OkC1BK,MAAQ,GAIb,GAAI,CAAC,OlCYT,gBAUI,OkCzBK,MAAQ,GAGb,GAAI,CAAC,OlCYT,gBAUI,OkCxBK,MAAQ,GAEb,GAAI,CAAC,OlCYT,gBAUI,OkC1BK,MAAQ,GAKZ,CAAC,MAAS,IlCWf,gBAUI,OkCzBK,MAAQ,GAIZ,CAAC,MAAS,IlCWf,gBAUI,OkCxBK,MAAQ,GAGZ,CAAC,MAAS,IlCWf,gBAUI,OkC1BK,MAAQ,GAMZ,CAAC,MAAS,IlCUf,gBAUI,OkCzBK,MAAQ,GAKZ,CAAC,MAAS,IlCUf,gBAUI,OkCxBK,MAAQ,GAIZ,CAAC,MAAS,IACT,yBD6NN,mBA3DgD,iBA4DhD,iBjCrNA,iBAUI,QiCwJE,gBAmDN,iBjCrNA,iBAUI,OiC2JE,MAGE,GACE,IA4CV,iBjCrNA,iBAUI,OiC4JE,MAEE,GACE,IA4CV,iBjCrNA,iBAUI,OiC6JE,MACE,GACE,IA4CV,iBjCrNA,iBAUI,OiC2JE,MAGE,GAEE,IA2CV,iBjCrNA,iBAUI,OiC4JE,MAEE,GAEE,IA2CV,iBjCrNA,iBAUI,OiC6JE,MACE,GAEE,IACE,mBA0CZ,iBjCrNA,iBA4BI,iBiCuJE,SAkCN,iBjCrNA,iBA4BI,gBiC0JE,MAGE,GACE,GAAI,aA2Bd,iBjCrNA,iBA4BI,gBiC2JE,MAEE,GACE,GAAI,aA2Bd,iBjCrNA,iBA4BI,gBiC4JE,MACE,GACE,GAAI,aA2Bd,iBjCrNA,iBA4BI,gBiC0JE,MAGE,GAEE,GAAI,aA0Bd,iBjCrNA,iBA4BI,gBiC2JE,MAEE,GAEE,GAAI,aA0Bd,iBjCrNA,iBA4BI,gBiC4JE,MACE,GAEE,GAAI,aACF,cAyBZ,iBjCrNA,iBA4BI,gBiC0JE,MAGE,GAKE,GAAI,YAuBd,iBjCrNA,iBA4BI,gBiC2JE,MAEE,GAKE,GAAI,YAuBd,iBjCrNA,iBA4BI,gBiC4JE,MACE,GAKE,GAAI,YAuBd,iBjCrNA,iBA4BI,gBiC0JE,MAGE,GAME,GAAI,YAsBd,iBjCrNA,iBA4BI,gBiC2JE,MAEE,GAME,GAAI,YAsBd,iBjCrNA,iBA4BI,gBiC4JE,MACE,GAME,GAAI,YACF,eAqBZ,iBjCrNA,iBA4BI,gBiC4KE,MAEE,GAAI,WACF,IAUV,iBjCrNA,iBA4BI,gBiC6KE,MACE,GAAI,WACF,IAUV,iBjCrNA,iBA4BI,gBiC4KE,MAEE,GAAI,WAEF,IASV,iBjCrNA,iBA4BI,gBiC6KE,MACE,GAAI,WAEF,IACE,iBjC7MZ,gBAuBI,iBmCnBY,OACd,UnCLF,gBAsBI,gBmCZF,iBAAA,CACA,QAAA,CACA,MAAA,CACA,YAAA,CACA,YAAA,CACA,UAAA,CACA,eAAA,CACA,aAAA,CACA,cAAA,CACA,eAAA,CACA,cAAA,CACA,eAAA,CACA,qBAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CtCsBA,+CAAA,CACQ,uCAAA,CsCrBR,4BnC3BF,gBAsBI,emCUD,YACC,OAAA,CACA,UnClCJ,gBAsBI,emCgBF,UA7BF,cnCTA,iBAyBI,UoCzCF,UAAA,CACA,YAAA,CACA,eAAA,CACA,yBpCaF,gBAsBI,emCqBF,GAAK,GACH,aAAA,CACA,gBAAA,CACA,UAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,mBnClDJ,gBAsBI,emCiCW,GAAK,EACjB,OnCxDH,gBAsBI,emCiCW,GAAK,EAEjB,OACC,oBAAA,CACA,aAAA,CACA,yBnC5DJ,gBAsBI,emC2CW,QAAU,GnCjEzB,gBAsBI,emC2CW,QAAU,EAEtB,OnCnEH,gBAsBI,emC2CW,QAAU,EAGtB,OACC,UAAA,CACA,oBAAA,CACA,SAAA,CACA,yBnCxEJ,gBAsBI,emC0DW,UAAY,GnChF3B,gBAsBI,emC0DW,UAAY,EAExB,OnClFH,gBAsBI,emC0DW,UAAY,EAGxB,OACC,WnCpFJ,gBAsBI,emC0DW,UAAY,EAQxB,OnCxFH,gBAsBI,emC0DW,UAAY,EASxB,OACC,oBAAA,CACA,4BAAA,CACA,qBAAA,CE3GF,kEAAA,CF6GE,mBAKJ,KnCnGA,iBAsBI,gBAtBJ,gBA2CI,MmC0DF,gBACE,cnCtGJ,gBA2CI,MmC+DF,GACE,UnC3GJ,gBAwBI,kBmC4GF,aAAA,CACA,gBAAA,CACA,cAAA,CACA,sBAAA,CACA,UAAA,CACA,mBAcF,WnCvJA,iBAsBI,gBmCkIF,OAAA,CACA,UAQF,OnCjKA,iBAsBI,gBmC4IJ,oBAAqB,UnClKrB,iBAsBI,gBmCsJA,QAAA,CACA,WAAA,CACA,kBAqBJ,QAZ2C,iBACzC,anCxLF,iBAsBI,gBmC8FF,SAAA,CACA,SnCrHF,gBAuCI,asCyJF,mBtChMF,gBAyCI,WsCiKF,iBAAA,CACA,aAAA,CACA,eAAA,CACA,mBtC7MF,gBAyCI,UsCsKF,OACE,eAAA,CACA,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,etCpNJ,gBAyCI,UsCgLM,MAAK,kBAEb,iBAAA,CACA,iBAAA,CACA,kBtC7NF,gBAyCI,UAzCJ,iBAyCI,WsCyLF,gBtClOF,gBAyCI,UsCoOD,SAEC,OADF,QAAQ,UtC9QV,iBAyCI,UsCsOA,OACE,mBAsIN,YtCtZA,iBAwCI,asC8WJ,YtCtZA,iBAyCI,WgChDF,YhCOF,gBAyCI,UgChDS,OAGT,cM0ZJ,YtCtZA,iBAoBI,oBgCVA,aAAA,CACA,oBAAA,CACA,yBM6YJ,YtCzZA,iBAwCI,asCiXJ,YtCzZA,iBAyCI,WgChDF,YhCOF,gBAyCI,UgChDS,OAGT,cM6ZJ,YtCzZA,iBAoBI,oBgCVA,aAAA,CACA,oBAAA,CACA,yBMgZJ,UtC5ZA,iBAwCI,asCoXJ,UtC5ZA,iBAyCI,WgChDF,UhCOF,gBAyCI,UgChDS,OAGT,cMgaJ,UtC5ZA,iBAoBI,oBgCVA,aAAA,CACA,oBAAA,CACA,yBhCZJ,gBAwCI,asC0YF,aAAA,CACA,cAAA,CACA,kBAAA,CACA,cAmFF,QAjEqC,iBAyIrC,YtChlBA,iBAuCI,asCmaE,oBAAA,CACA,eAAA,CACA,sBAoIN,YtChlBA,iBAmBI,csCycE,oBAAA,CACA,sBAmHN,YtChlBA,iBAmBI,asC4cE,oBAiHN,YtChlBA,iBAmBI,asC6cE,kBAgHN,YtChlBA,iBAmBI,asC8cE,eA+GN,YArHI,atC3dJ,iBAoBI,oBsC4jBJ,YArHI,atC3dJ,iBAqBI,kBsC6cI,WA8GR,YtChlBA,iBAmBI,asCoda,eACX,WAwGN,YtChlBA,iBAyCI,WsC2cE,oBAAA,CACA,YAAA,CACA,eAAA,CACA,sBAyFN,YtChlBA,iBAyCI,UsCgdE,OACE,eAsFR,YtChlBA,iBAyCI,UsCqdU,MAAK,kBACb,iBAAA,CACA,eAgBN,gBtChhBA,iBAyCI,WsCgfA,YAAA,CACA,eAAA,CACA,gBAXJ,gBtChhBA,iBAyCI,WsCwfA,gBAjBJ,gBtChhBA,iBAuCI,auC7CF,iBAAA,CACA,mBvCKF,gBAgCI,SwC1CF,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAQF,QAH6C,iBxCE7C,gBAgCI,SwCjCA,mBxCCJ,gBAkCI,kBwCLF,kBAAA,CACA,kBAAA,CACA,iBAAA,CACA,gCAAA,CACA,8CAAA,CAEA,iCxCnCF,gBAkCI,iBwCGD,IACC,gBA4BJ,QAzB6C,iBxCzC7C,gBAkCI,kBwCQA,UAAA,CACA,YAAA,CACA,gBAEA,gBxC9CJ,gBAEI,WAFJ,gBAkCI,iBwCYC,UACC,aAAA,YACA,WAAA,YACA,gBAAA,CACA,gBAAA,YxClDN,gBAkCI,iBwCmBC,IACC,mBAKF,iBxC3DJ,iBAkCI,kBwC0BA,kBxC5DJ,iBAkCI,kBwC2BA,oBxC7DJ,iBAkCI,kBwC4BE,cAAA,CACA,iBAKN,iBxCpEA,iBAkCI,kBwCmCJ,oBxCrEA,iBAkCI,kBwCqCA,iBAKF,QAH4C,6BAA6B,uBAsjB3E,iBxC/nBA,iBAkCI,kBwC6lBJ,oBxC/nBA,iBAkCI,kBwCwCE,kBAUN,UxCpFA,iBAkCI,kBwCmDJ,gBxCrFA,iBAkCI,kBwCsDA,kBAAA,CACA,kBAMF,QAJ6C,iBAoiB/C,UxC/nBA,iBAkCI,kBwC6lBJ,gBxC/nBA,iBAkCI,kBwC0DE,cAAA,CACA,eAsEN,QAN6C,iBxC7J7C,gBAgCI,QwC8HQ,WAAa,exC9JzB,gBAgCI,QwC+HQ,iBAAmB,eACzB,mBxChKN,gBA+BI,awCoLF,mBxCnNF,gBA+BI,YwCsLF,GAAK,GACH,gBAAA,CACA,mBAAA,CACA,iBA4BF,QAzB+C,iBAoajD,WAlaI,MxC7NJ,iBAsBI,gBAtBJ,gBA+BI,YwC8LA,MAAM,gBAkaV,WxC/nBA,iBA2CI,MwCkLM,gBACJ,eAAA,CACA,UAAA,CACA,UAAA,CACA,YAAA,CACA,4BAAA,CACA,QAAA,CACA,gBA2ZN,WAlaI,MxC7NJ,iBAsBI,ewC+ME,GAAK,GA0ZX,WAlaI,MxC7NJ,iBAsBI,ewCgNE,kBAyZN,WAlaI,MAAM,exC7NV,iBAwBI,kBAxBJ,gBA+BI,YwC8LA,MAAM,eAQJ,GAAK,GxCrOX,gBA+BI,YwC8LA,MAAM,eASJ,kBAyZN,WxC/nBA,iBA2CI,MwCkLM,eAQJ,GAAK,GA0ZX,WxC/nBA,iBA2CI,MwCkLM,eASJ,kBACE,0BAwZR,WAlaI,MxC7NJ,iBAsBI,ewCmNE,GAAK,GxCzOX,gBA+BI,YwC8LA,MAAM,eAYJ,GAAK,GAsZX,WxC/nBA,iBA2CI,MwCkLM,eAYJ,GAAK,GACH,iBACA,WAdJ,MxC7NJ,iBAsBI,ewCmNE,GAAK,EAEF,OACD,WAfJ,MxC7NJ,iBAsBI,ewCmNE,GAAK,EAGF,OxC5OT,gBA+BI,YwC8LA,MAAM,eAYJ,GAAK,EAEF,OxC3OT,gBA+BI,YwC8LA,MAAM,eAYJ,GAAK,EAGF,OADD,WxC3OR,iBA2CI,MwCkLM,eAYJ,GAAK,EAEF,OACD,WxC5OR,iBA2CI,MwCkLM,eAYJ,GAAK,EAGF,OACC,uBAmBV,QAZ6C,iBxCpP7C,gBA+BI,awCsNA,UAAA,CACA,SxCtPJ,gBA+BI,YwCyNA,IACE,WxCzPN,gBA+BI,YwCyNA,GAEE,GACE,gBAAA,CACA,qBF4QR,QAjEqC,iBAyIrC,YtChlBA,iBAuCI,asCmaE,oBAAA,CACA,eAAA,CACA,sBAoIN,YtChlBA,iBAmBI,csCycE,oBAAA,CACA,sBAmHN,YtChlBA,iBAmBI,asC4cE,oBAiHN,YtChlBA,iBAmBI,asC6cE,kBAgHN,YtChlBA,iBAmBI,asC8cE,eA+GN,YArHI,atC3dJ,iBAoBI,oBsC4jBJ,YArHI,atC3dJ,iBAqBI,kBsC6cI,WA8GR,YtChlBA,iBAmBI,asCoda,eACX,WAwGN,YtChlBA,iBAyCI,WsC2cE,oBAAA,CACA,YAAA,CACA,eAAA,CACA,sBAyFN,YtChlBA,iBAyCI,UsCgdE,OACE,eAsFR,YtChlBA,iBAyCI,UsCqdU,MAAK,kBACb,iBAAA,CACA,eEpOJ,QAPiD,iBA0WnD,YxC/nBA,iBAuCI,awC+OE,kBAEA,YxCxRN,iBAuCI,YwCiPG,YACC,iBAkBR,QAT6C,kBAe7C,WAAY,GxCjTZ,iBAsBI,gBAtBJ,gBA+BI,YwCkRQ,GAAK,gBACf,YAAA,CvCpUA,yBAAA,CACC,yBuCuUH,oBAAqB,YAAY,GxCtTjC,iBAsBI,gBwCgSJ,oBxCtTA,iBA+BI,YwCuR6B,GAAK,gBACpC,eAAA,CvCzUA,2BAAA,CACC,0BAAA,CAOD,4BAAA,CACC,4BuC8XH,exCrXA,iBA+BI,YwCwWA,GAAK,GACH,WAEA,exC1YN,iBA+BI,YwCwWA,GAAK,EAGF,OACD,exC3YN,iBA+BI,YwCwWA,GAAK,EAIF,OACC,UAAA,CACA,6BAIF,exCjZN,iBA+BI,YwCiXA,QAAU,GAER,exClZN,iBA+BI,YwCiXA,QAAU,EAEP,OACD,exCnZN,iBA+BI,YwCiXA,QAAU,EAGP,OACC,UAAA,CACA,yBAIF,exCzZN,iBA+BI,YwCyXA,UAAY,GAEV,exC1ZN,iBA+BI,YwCyXA,UAAY,EAET,OACD,exC3ZN,iBA+BI,YwCyXA,UAAY,EAGT,OACC,UAAA,CACA,6BAxCR,exCrXA,iBAkCI,kBwC6YA,qBAOE,exCtbN,iBA+BI,YwCsZA,MAAQ,GAEN,exCvbN,iBA+BI,YwCsZA,MAAQ,EAEL,OACD,exCxbN,iBA+BI,YwCsZA,MAAQ,EAGL,OAFD,eAHJ,YxCnbF,iBA2CI,MwC0YQ,GAEN,eAJJ,YxCnbF,iBA2CI,MwC0YQ,EAEL,OACD,eALJ,YxCnbF,iBA2CI,MwC0YQ,EAGL,OACC,wBAAA,CACA,WAiCN,QA7BiD,iBAiMnD,eA5ME,YAaI,MxChcN,iBAsBI,ewC2aI,GAAK,GA8Lb,exC/nBA,iBA+BI,YwCiaE,MAAM,eACJ,GAAK,GA8Lb,eA5ME,YxCnbF,iBA2CI,MwCqZQ,eACJ,GAAK,GACH,WACA,eAhBR,YAaI,MxChcN,iBAsBI,ewC2aI,GAAK,EAEF,OACD,eAjBR,YAaI,MxChcN,iBAsBI,ewC2aI,GAAK,EAGF,OADD,exCncV,iBA+BI,YwCiaE,MAAM,eACJ,GAAK,EAEF,OACD,exCpcV,iBA+BI,YwCiaE,MAAM,eACJ,GAAK,EAGF,OADD,eAhBR,YxCnbF,iBA2CI,MwCqZQ,eACJ,GAAK,EAEF,OACD,eAjBR,YxCnbF,iBA2CI,MwCqZQ,eACJ,GAAK,EAGF,OACC,UAAA,CACA,6BAIF,eAvBR,YAaI,MxChcN,iBAsBI,ewCmbI,QAAU,GAER,eAxBR,YAaI,MxChcN,iBAsBI,ewCmbI,QAAU,EAEP,OACD,eAzBR,YAaI,MxChcN,iBAsBI,ewCmbI,QAAU,EAGP,OAFD,exC1cV,iBA+BI,YwCiaE,MAAM,eASJ,QAAU,GAER,exC3cV,iBA+BI,YwCiaE,MAAM,eASJ,QAAU,EAEP,OACD,exC5cV,iBA+BI,YwCiaE,MAAM,eASJ,QAAU,EAGP,OAFD,eAvBR,YxCnbF,iBA2CI,MwCqZQ,eASJ,QAAU,GAER,eAxBR,YxCnbF,iBA2CI,MwCqZQ,eASJ,QAAU,EAEP,OACD,eAzBR,YxCnbF,iBA2CI,MwCqZQ,eASJ,QAAU,EAGP,OACC,UAAA,CACA,yBAIF,eA/BR,YAaI,MxChcN,iBAsBI,ewC2bI,UAAY,GAEV,eAhCR,YAaI,MxChcN,iBAsBI,ewC2bI,UAAY,EAET,OACD,eAjCR,YAaI,MxChcN,iBAsBI,ewC2bI,UAAY,EAGT,OAFD,exCldV,iBA+BI,YwCiaE,MAAM,eAiBJ,UAAY,GAEV,exCndV,iBA+BI,YwCiaE,MAAM,eAiBJ,UAAY,EAET,OACD,exCpdV,iBA+BI,YwCiaE,MAAM,eAiBJ,UAAY,EAGT,OAFD,eA/BR,YxCnbF,iBA2CI,MwCqZQ,eAiBJ,UAAY,GAEV,eAhCR,YxCnbF,iBA2CI,MwCqZQ,eAiBJ,UAAY,EAET,OACD,eAjCR,YxCnbF,iBA2CI,MwCqZQ,eAiBJ,UAAY,EAGT,OACC,UAAA,CACA,8BAqCZ,exC3fA,iBA+BI,YwC8eA,GAAK,GACH,cAEA,exChhBN,iBA+BI,YwC8eA,GAAK,EAGF,OACD,exCjhBN,iBA+BI,YwC8eA,GAAK,EAIF,OACC,UAAA,CACA,6BAIF,exCvhBN,iBA+BI,YwCufA,QAAU,GAER,exCxhBN,iBA+BI,YwCufA,QAAU,EAEP,OACD,exCzhBN,iBA+BI,YwCufA,QAAU,EAGP,OACC,UAAA,CACA,yBAIF,exC/hBN,iBA+BI,YwC+fA,UAAY,GAEV,exChiBN,iBA+BI,YwC+fA,UAAY,EAET,OACD,exCjiBN,iBA+BI,YwC+fA,UAAY,EAGT,OACC,UAAA,CACA,6BAxCR,exC3fA,iBAkCI,kBwCohBA,qBAME,exC5jBN,iBA+BI,YwC4hBA,MAAQ,GAEN,exC7jBN,iBA+BI,YwC4hBA,MAAQ,EAEL,OACD,exC9jBN,iBA+BI,YwC4hBA,MAAQ,EAGL,OAFD,eAFJ,YxC1jBF,iBA2CI,MwCghBQ,GAEN,eAHJ,YxC1jBF,iBA2CI,MwCghBQ,EAEL,OACD,eAJJ,YxC1jBF,iBA2CI,MwCghBQ,EAGL,OACC,wBAAA,CACA,WAuCN,QAnCiD,iBA2DnD,eArEE,YAYI,MxCtkBN,iBAsBI,ewCijBI,kBAwDR,eArEE,YAYI,MAAM,exCtkBZ,iBAwBI,kBwCumBJ,exC/nBA,iBA+BI,YwCuiBE,MAAM,eACJ,kBAwDR,eArEE,YxC1jBF,iBA2CI,MwC2hBQ,eACJ,kBACE,qBAuDV,eArEE,YAYI,MxCtkBN,iBAsBI,ewCojBI,UAqDR,eArEE,YAYI,MAAM,exCtkBZ,iBAyBI,UwCsmBJ,exC/nBA,iBA+BI,YwCuiBE,MAAM,eAIJ,UAqDR,eArEE,YxC1jBF,iBA2CI,MwC2hBQ,eAIJ,UACE,yBAoDV,eArEE,YAYI,MxCtkBN,iBAsBI,ewCujBI,GAAK,GAkDb,exC/nBA,iBA+BI,YwCuiBE,MAAM,eAOJ,GAAK,GAkDb,eArEE,YxC1jBF,iBA2CI,MwC2hBQ,eAOJ,GAAK,GACH,cACA,eArBR,YAYI,MxCtkBN,iBAsBI,ewCujBI,GAAK,EAEF,OACD,eAtBR,YAYI,MxCtkBN,iBAsBI,ewCujBI,GAAK,EAGF,OADD,exC/kBV,iBA+BI,YwCuiBE,MAAM,eAOJ,GAAK,EAEF,OACD,exChlBV,iBA+BI,YwCuiBE,MAAM,eAOJ,GAAK,EAGF,OADD,eArBR,YxC1jBF,iBA2CI,MwC2hBQ,eAOJ,GAAK,EAEF,OACD,eAtBR,YxC1jBF,iBA2CI,MwC2hBQ,eAOJ,GAAK,EAGF,OACC,UAAA,CACA,6BAIF,eA5BR,YAYI,MxCtkBN,iBAsBI,ewC+jBI,QAAU,GAER,eA7BR,YAYI,MxCtkBN,iBAsBI,ewC+jBI,QAAU,EAEP,OACD,eA9BR,YAYI,MxCtkBN,iBAsBI,ewC+jBI,QAAU,EAGP,OAFD,exCtlBV,iBA+BI,YwCuiBE,MAAM,eAeJ,QAAU,GAER,exCvlBV,iBA+BI,YwCuiBE,MAAM,eAeJ,QAAU,EAEP,OACD,exCxlBV,iBA+BI,YwCuiBE,MAAM,eAeJ,QAAU,EAGP,OAFD,eA5BR,YxC1jBF,iBA2CI,MwC2hBQ,eAeJ,QAAU,GAER,eA7BR,YxC1jBF,iBA2CI,MwC2hBQ,eAeJ,QAAU,EAEP,OACD,eA9BR,YxC1jBF,iBA2CI,MwC2hBQ,eAeJ,QAAU,EAGP,OACC,UAAA,CACA,yBAIF,eApCR,YAYI,MxCtkBN,iBAsBI,ewCukBI,UAAY,GAEV,eArCR,YAYI,MxCtkBN,iBAsBI,ewCukBI,UAAY,EAET,OACD,eAtCR,YAYI,MxCtkBN,iBAsBI,ewCukBI,UAAY,EAGT,OAFD,exC9lBV,iBA+BI,YwCuiBE,MAAM,eAuBJ,UAAY,GAEV,exC/lBV,iBA+BI,YwCuiBE,MAAM,eAuBJ,UAAY,EAET,OACD,exChmBV,iBA+BI,YwCuiBE,MAAM,eAuBJ,UAAY,EAGT,OAFD,eApCR,YxC1jBF,iBA2CI,MwC2hBQ,eAuBJ,UAAY,GAEV,eArCR,YxC1jBF,iBA2CI,MwC2hBQ,eAuBJ,UAAY,EAET,OACD,eAtCR,YxC1jBF,iBA2CI,MwC2hBQ,eAuBJ,UAAY,EAGT,OACC,UAAA,CACA,8BxClmBZ,gBA8BI,MyC1CF,eAAA,CACA,cAAA,CACA,gBzCUF,gBA8BI,KyCrCF,IACE,iBAAA,CACA,czCKJ,gBA8BI,KyCrCF,GAIE,GACE,iBAAA,CACA,aAAA,CACA,kBzCAN,gBA8BI,KyCrCF,GAIE,EAIG,OzCDP,gBA8BI,KyCrCF,GAIE,EAKG,OACC,oBAAA,CACA,sBzCJR,gBA8BI,KyCrCF,GAgBG,SAAU,GACT,WzCVN,gBA8BI,KyCrCF,GAgBG,SAAU,EAGR,OzCZP,gBA8BI,KyCrCF,GAgBG,SAAU,EAIR,OACC,UAAA,CACA,oBAAA,CACA,4BAAA,CACA,mBzCjBR,gBA8BI,KyCPF,MAAM,GzCvBR,gBA8BI,KyCPF,MAAM,EAEH,OzCzBL,gBA8BI,KyCPF,MAAM,EAGH,OAFD,IzCxBJ,iBA2CI,MyCpBI,GAEJ,IzCzBJ,iBA2CI,MyCpBI,EAEH,OACD,IzC1BJ,iBA2CI,MyCpBI,EAGH,OACC,qBAAA,CACA,qBzC5BN,gBA8BI,KyCOF,cLrDA,UAAA,CACA,YAAA,CACA,eAAA,CACA,yBpCaF,gBA8BI,KyCcF,GAAK,EAAI,KACP,eAyCF,SAAC,cA+DD,UzCrJF,iBAsBI,gByCgIA,QAAA,CACA,UAbJ,cAWE,UzCrJF,iBAsBI,gByCgIA,QAAA,CACA,UAgEJ,SzCvNA,iBAsBI,gByCmMF,eAAA,CxC3OA,yBAAA,CACC,yBDiBH,gBACI,O0CZF,SAAA,C7CoLA,sCAAA,CACK,iCAAA,CACG,+BG3KV,gBACI,M0CVD,IACC,U1CQJ,gBAEI,W0CLF,a1CGF,gBAEI,U0CHD,IAAW,cACZ,E1CAF,gBAEI,U0CFC,IAAS,kBACZ,K1CDF,gBAEI,U0CDI,IAAM,wB1CDd,gBAGI,a0CEF,iBAAA,CACA,QAAA,CACA,eAAA,C7CuKA,8CAAA,CACQ,sCAAA,CAOR,gCAAA,CACQ,wBAAA,CAGR,uCAAA,CACQ,gCG3LV,gBA6CI,cAAc,GAAG,OACb,eA9CR,gBAgDI,YACI,QAjDR,gBAmDI,GAAG,IAnDP,gBAoDI,GAAG,IACC,aAAA,CACA,eAtDR,gBAwDI,GAAE,SACE,QAAS,EAAT,CACA,gBA1DR,gBA4DI,cAAc,GAAG,OACd,kBAAA,CACA,gBA9DP,gBAgEI,SAAQ,QAhEZ,gBAAA,iBAKI,SA2DQ,QACJ,gBAjER,gBAmEI,OACI,UAAA,CACA,SAAA,CACA,oBAAA,CACA,cAAA,CACA,iBAxER,gBAmEI,MAMI,GAAE,YAAa,GAAE,gBAAiB,iBAzE1C,gBAmEI,MAMyD,GAAE,YAAa,GAAG,gBAAiB,OACxF,mBA1ER,gBAmEI,MASI,GAAE,aACE,cA7EZ,gBAmEI,MASI,GAAE,YAEE,GAAE,eACE,mBA/EhB,gBAmEI,MASI,GAAE,YAKE,eACI,cAlFhB,gBAsFI,QACI,WAAW,EAAG,KAvFtB,gBAsFI,QACI,WAAW,EAvFnB,gBAaI,MAbJ,gBAsFI,QAtFJ,iBAiBI,WAsEe,EAAG,KAvFtB,gBAAA,iBAgCI,QAuDI,WAAW,EAAG,KACV,UAAA,CACA,oBAAA,CACA,kBAAA,CACA,qBA3FZ,gBA8FI,iBACI,iBA/FR,gBAiGI,iBACI,UAAA,CACA,UAnGR,gBAiGI,gBAII,QAAQ,iBAAgB,UArGhC,gBAiGI,gBAII,QAAQ,iBArGhB,gBAEI,WAFJ,gBAiGI,gBAjGJ,iBAgCI,QAqEY,iBAAgB,UArGhC,gBAiGI,gBAII,QArGR,iBAkCI,iBAmE4B,UAEpB,WAAA,YAvGZ,gBA0GI,YAAY,IA1GhB,gBAAA,iBA+BI,YA2EY,IACR,iBAAA,CACA,kBAAA,CACA,wBAAA,CACA,mCAAA,CACA,oCAAA,CACA,+BAAA,CACA,gCAAA,CACA,2BAAA,CACA,4BAAA,CACA,gBAAA,CACA,yBAAA,CACA,2BAAA,CACA,2BACA,gBAdJ,YAAY,GAcP,QAAD,gBAxHR,iBA+BI,YA2EY,GAcP,QACG,yBAAA,CACA,2BAAA,CACA,0BAAA,CACA,yBAJJ,gBAdJ,YAAY,GAcP,OAKG,GALJ,gBAxHR,iBA+BI,YA2EY,GAcP,OAKG,GACI,yBA9HhB,gBA0GI,YAAY,GAuBR,GAjIR,gBAAA,iBA+BI,YA2EY,GAuBR,GACI,oBAAA,CACA,aAAA,CACA,oBAAA,CACA,WArIZ,gBA0GI,YAAY,GAuBR,EAKI,GAtIZ,gBAAA,iBA+BI,YA2EY,GAuBR,EAKI,GACI,iBAEJ,gBA/BR,YAAY,GAuBR,EAQK,OAAD,gBAzIZ,iBA+BI,YA2EY,GAuBR,EAQK,OACG,aAGR,gBAnCJ,YAAY,GAmCP,SAAU,GAAX,gBA7IR,iBA+BI,YA2EY,GAmCP,SAAU,GACP,c2C/JZ,IAAI,4BACH,eAGD,WACC,aAGD,iBACI,8BADJ,gBAGI,QACI,UAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAPR,gBAUI,OAAM,kBACF,aAXR,gBAcI,aACI,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,kBAAA,CACA,kBAAA,CACA,2BAAA,CACA,oBAAA,CACA,kBAAA,YACA,UAAA,YACA,aAAA,CACA,aAzBR,gBA2BI,UACI,kBAAA,CACA,oBAAA,CACA,gBAAA,CACA,kBAAA,CACA,kBAAA,CACA,2BAAA,CACA,oBAAA,CACA,kBAAA,YACA,UAAA,YACA,aAAA,CACA,aAtCR,gBA2CI,aACI,wBAAA,CACA,YAAA,CACA,iBAAA,CACA,aAAA,CACA,sBAhDR,gBAmDI,cACI,YApDR,gBAuDI,cACI,aAAA,CACA,kBAAA,CACA,oBAAA,CACA,kBAAA,YA3DR,gBA8DI,gBA9DJ,gBA8DoB,wBACZ,YA/DR,gBAkEI,iBAAiB,cACb,cAAA,CACA,KAAA,CACA,MAAA,CACA,gBAAA,CACA,UAAA,CACA,WAAA,CACA,uBAzER,gBAkEI,iBAAiB,aASb,QACI,WA5EZ,gBAgFI,aACI,sBAjFR,gBAgFI,YAEI,OACI,UAAA,CACA,YApFZ,gBAgFI,YAEI,MAII,KACI,eAvFhB,gBA4FI,YACI,GA7FR,gB3CSA,iBA+BI,Y2CqDI,GACI,WAAA,CACA,oBAAA,CACA,YAAa,SAAU,4CAhGnC,gBAoGI,QAAO,kBApGX,gB3CSA,iBAgCI,Q2C2DO,kBApGX,gBAoGI,Q3C3FJ,gBAqCI,mB2CuDI,gBArGR,gBAwGI,WAAU,YAEN,cAAA,CACA,KAAA,CACA,MAAA,CACA,gBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,uBAjHR,gBAwGI,WAAU,WAWN,OACI,UAAA,CACA,SAAA,CACA,YAtHZ,gBAwGI,WAAU,WAiBN,iBACI,SAAA,CACA,UAAA,CACA,YA5HZ,gBAwGI,WAAU,WAuBN,cACI,kBAAA,CACA,kBAjIZ,gBAqII,OACI,YAAa,SAAU,2CAAvB,CACA,iBAAA,CACA,kBAAA,CACA,cAAA,CACA,YAAA,CACA,iBAAA,CACA,WAAA,CACA,aA7IR,gBAqII,MAUI,cACI,aAhJZ,gBAqII,MAUI,aAGI,eACI,YAnJhB,gBAqII,MAUI,aAOI,IACI,kBAAA,CACA,eAAA,CACA,oBAzJhB,gBAqII,MAwBI,YACI,SA9JZ,gBAqII,MA4BI,WAAU,QACN,iBAlKZ,gBAqII,MAgCI,GAAE,YAAa,GAAE,cAAe,IAAK,OACjC,yBAtKZ,gBAqII,MAgCI,GAAE,YAAa,GAAE,cAAe,IAAK,MAEjC,MACI,WAAA,CACA,iBAzKhB,gBAqII,MAgCI,GAAE,YAAa,GAAE,cAAe,IAAK,MAOjC,GACI,WAAA,CACA,iBA9KhB,gBAqII,MA6CI,GAAE,YAAa,GAAE,iBACb,iBAnLZ,gBAqII,MA6CI,GAAE,YAAa,GAAE,gBAGb,gBACI,yBAtLhB,gBA2LI,iBACI,qBAAA,CACA,UAAA,CACA,WAAA,CACA,mBAAA,CACA,iBAAA,CACA,kBAAA,CACA,cAlMR,gBA2LI,gBASI,WApMR,gBA2LI,gB3ClLJ,iBAEI,W2C0LQ,eArMZ,gBAyMI,YAAY,IAzMhB,gB3CSA,iBA+BI,Y2CiKY,IACR,sBA1MR,gBAyMI,YAAY,GAGR,GA5MR,gB3CSA,iBA+BI,Y2CiKY,GAGR,GACI,6BA7MZ,gBAiNI,YAAY,GAAI,QAjNpB,gB3CSA,iBA+BI,Y2CyKY,GAAI,QACZ,sBAlNR,gBAqNI,KAAI,UAAW,IArNnB,gB3CSA,iBA8BI,K2C8KI,UAAW,IACX,mBAAA,CACA,kBAvNR,gBA0NI,cACI,sBAAA,CACA,qBAAA,CACA,aA7NR,gBA0NI,aAKI,GACI,cAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,WApOZ,gBA0NI,aAaI,iBACI,aAxOZ,gBA0NI,aAiBI,KAAK,KACD,eA5OZ,gBA0NI,aAqBI,OACI,cAhPZ,gBA0NI,aAqBI,MAEI,KACI,mBAlPhB,gBA0NI,aA4BI,SACI,WAvPZ,gBA0NI,aAgCI,QACI,YA3PZ,gBA0NI,aAoCI,SACI,WA/PZ,gBA0NI,aAwCI,OACI,YAnQZ,gBA0NI,aAwCI,MAGI,KACI,cAAA,CACA,sBAAA,CACA,eAAA,CACA,WAAA,CACA,cAAA,CACA,iBA3QhB,gBA0NI,aAqDI,WACI,aAhRZ,gBA0NI,aAyDI,UACI,aApRZ,gBAwRI,kBACI,gBAzRR,gBAwRI,iBAGI,SACI,qBAAA,CACA,YA7RZ,gBAwRI,iBAQI,qBAAqB,KACjB,eAjSZ,gBAwRI,iBAYI,eACI,eArSZ,gBAwRI,iBAgBI,kBACI,kBAAA,CACA,UAAA,CACA,YA3SZ,gBAwRI,iBAsBI,uBACI,gBA/SZ,gBAmTI,aACI,WApTR,gBAmTI,YAGI,wBACI,iBAvTZ,gBA2TI,iBAAiB,QAAQ,WAAW,EAAG,KA3T3C,gBA2TI,iBAAiB,QAAQ,WAAW,E3ClTxC,gBAaI,M2CtBJ,gBA2TI,iBAAiB,Q3ClTrB,iBAiBI,W2CiSoC,EAAG,KA3T3C,gBA2TI,iB3ClTJ,iBAgCI,Q2CkRyB,WAAW,EAAG,KACnC,UAAA,CACA,oBAAA,CACA,gBAAA,CACA,WAAA,CACA,eAAA,CACA,kBAAA,CACA,mBAlUR,gBAqUI,YArUJ,gB3CSA,iBAiBI,Y2C4SI,kBAtUR,gBAyUI,aAAa,YACT,gBA1UR,gBAyUI,aAAa,WAGf,OACC,cA7UH,gBAiVC,eACC,kBAAA,CACM,aAAA,CACN,WApVF,gBAsVI,eACI,oBAAA,CACA,gBAxVR,gBA0VI,WACI,aCvVygH,aACgF","sourcesContent":["//*// HEADER //*//\\n#portal-header {\\n margin: 15px auto 20px;\\n .clearfix(); //clear floats\\n}\\n#portal-logo {\\n float: left;\\n}\\n#portal-languageselector {\\n clear: both;\\n display: inline-block;\\n float: left;\\n margin-right: 29px;\\n padding-top: 5px;\\n li {\\n display: inline-block;\\n margin-right: 10px;\\n }\\n}\\n#portal-anontools {\\n\\tfloat: right;\\n\\tul {\\n\\t\\tpadding-right: 0;\\n\\t}\\n}\\n\\n//mobile search\\n#portal-searchbox {\\n clear: left;\\n margin-left: 3px;\\n margin-top: 60px;\\n padding-top: 20px;\\n position: absolute;\\n white-space: nowrap;\\n z-index: 2;\\n .searchSection {display: none;} //non on mobile\\n [type=\\"submit\\"] {display: none;} //submit hidden on mobile\\n label {font-size: 86.667%}\\n}\\n#searchbox_currentfolder_only {\\n vertical-align: middle;\\n}\\n\\n//non mobile search\\n@media (min-width: @plone-grid-float-breakpoint) {\\n #portal-header {\\n margin-bottom: 15px;\\n }\\n\\t#portal-languageselector {\\n clear: none;\\n float: right;\\n\\t}\\n #portal-searchbox {\\n clear: none;\\n float: right;\\n margin-left: 1em;\\n margin-top: 5px; //visual balance\\n max-width: 50%;\\n padding-top: 0;\\n position: relative;\\n .searchSection {display: inherit;} //yes for non mobile\\n [type=\\"text\\"] {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n float: left;\\n width: 20rem;\\n }\\n [type=\\"submit\\"] {\\n display: inline-block;\\n margin-left: -1px;\\n vertical-align: top;\\n width: auto;\\n display: inline-block;\\n }\\n }\\n}\\n","// Clearfix\\n//\\n// For modern browsers\\n// 1. The space content is one way to avoid an Opera bug when the\\n// contenteditable attribute is included anywhere else in the document.\\n// Otherwise it causes space to appear at the top and bottom of elements\\n// that are clearfixed.\\n// 2. The use of `table` rather than `block` is only necessary if using\\n// `:before` to contain the top-margins of child elements.\\n//\\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\\n\\n.clearfix() {\\n &:before,\\n &:after {\\n content: \\" \\"; // 1\\n display: table; // 2\\n }\\n &:after {\\n clear: both;\\n }\\n}\\n","//*// BUTTONS //*//\\n\\n.standalone, .context, .destructive, [type=\\"submit\\"], button {\\n display: inline-block;\\n margin-bottom: 0; // For input.btn\\n font-weight: @plone-font-weight-bold;\\n text-align: center;\\n text-shadow: 0 1px rgba(0,0,0,.25);\\n vertical-align: middle;\\n cursor: pointer;\\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\\n border: 1px solid transparent;\\n white-space: nowrap;\\n .button-size(@plone-padding-base-vertical; @plone-padding-base-horizontal; @plone-font-size-base; @plone-line-height-base; @plone-border-radius-small);\\n .user-select(none);\\n\\n &,\\n &:active,\\n &.active {\\n &:focus {\\n .tab-focus();\\n }\\n }\\n\\n &:hover,\\n &:focus {\\n color: @plone-btn-standalone-color;\\n text-decoration: none;\\n .box-shadow(0 1px 2px rgba(0,0,0,.25));\\n }\\n\\n &:active,\\n &.active {\\n outline: 0;\\n background-image: none;\\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\\n }\\n\\n &.disabled,\\n &[disabled],\\n fieldset[disabled] & {\\n cursor: not-allowed;\\n pointer-events: none; // Future-proof disabling of clicks\\n .opacity(.5);\\n .box-shadow(none);\\n }\\n}\\n\\n.standalone, [type=\\"submit\\"], button { //gray\\n .button-variant(@plone-btn-standalone-color; @plone-btn-standalone-bg; @plone-btn-standalone-border);\\n}\\n\\n.context { //blue\\n .button-variant(@plone-btn-context-color; @plone-btn-context-bg; @plone-btn-context-border);\\n}\\n\\n.destructive { //red\\n .button-variant(@plone-btn-destructive-color; @plone-btn-destructive-bg; @plone-btn-destructive-border);\\n}\\n\\n.link-parent {\\n .standalone; margin-bottom: @plone-padding-base-horizontal;\\n &:before {content: \\"\xe2\x86\xa9 \\";top: 3px;position: relative;}\\n}\\n\\n\\n// Base styles\\n// -------------------------\\n.input-group {\\n position: relative; // For dropdowns\\n display: table;\\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\\n\\n // Undo padding and float of grid classes\\n &[class*=\\"col-\\"] {\\n float: none;\\n padding-left: 0;\\n padding-right: 0;\\n }\\n\\n .form-control {\\n // Ensure that the input is always above the *appended* addon button for\\n // proper border colors.\\n position: relative;\\n z-index: 2;\\n\\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\\n // select elements in input groups. To fix it, we float the input. Details:\\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\\n float: left;\\n\\n width: 100%;\\n margin-bottom: 0;\\n }\\n}\\n\\n// Display as table-cell\\n// -------------------------\\n.input-group-addon,\\n.input-group-btn,\\n.input-group .form-control {\\n display: table-cell;\\n\\n &:not(:first-child):not(:last-child) {\\n border-radius: 0;\\n }\\n}\\n// Addon and addon wrapper for buttons\\n.input-group-addon,\\n.input-group-btn {\\n width: 1%;\\n white-space: nowrap;\\n vertical-align: middle; // Match the inputs\\n}\\n\\n// Reset rounded corners\\n.input-group .form-control:first-child,\\n.input-group-addon:first-child,\\n.input-group-btn:first-child > .btn,\\n.input-group-btn:first-child > .btn-group > .btn,\\n.input-group-btn:first-child > .dropdown-toggle,\\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\\n .border-right-radius(0);\\n}\\n.input-group-addon:first-child {\\n border-right: 0;\\n}\\n.input-group .form-control:last-child,\\n.input-group-addon:last-child,\\n.input-group-btn:last-child > .btn,\\n.input-group-btn:last-child > .btn-group > .btn,\\n.input-group-btn:last-child > .dropdown-toggle,\\n.input-group-btn:first-child > .btn:not(:first-child),\\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\\n .border-left-radius(0);\\n}\\n.input-group-addon:last-child {\\n border-left: 0;\\n}\\n\\n// Button input groups\\n// -------------------------\\n.input-group-btn {\\n position: relative;\\n // Jankily prevent input button groups from wrapping with `white-space` and\\n // `font-size` in combination with `inline-block` on buttons.\\n font-size: 0;\\n white-space: nowrap;\\n\\n // Negative margin for spacing, position for bringing hovered/focused/actived\\n // element above the siblings.\\n > .btn {\\n position: relative;\\n + .btn {\\n margin-left: -1px;\\n }\\n // Bring the \\"active\\" button to the front\\n &:hover,\\n &:focus,\\n &:active {\\n z-index: 2;\\n }\\n }\\n\\n // Negative margin to only have a 1px border between the two\\n &:first-child {\\n > .btn,\\n > .btn-group {\\n margin-right: -1px;\\n }\\n }\\n &:last-child {\\n > .btn,\\n > .btn-group {\\n margin-left: -1px;\\n }\\n }\\n}\\n\\n// Dropdown arrow/caret\\n.caret {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-left: 2px;\\n vertical-align: middle;\\n border-top: @plone-caret-width-base dashed;\\n border-right: @plone-caret-width-base solid transparent;\\n border-left: @plone-caret-width-base solid transparent;\\n}\\n// Reposition the caret\\n.btn .caret {\\n margin-left: 0;\\n}\\n// Carets in other button sizes\\n.btn-lg .caret {\\n border-width: @plone-caret-width-large @plone-caret-width-large 0;\\n border-bottom-width: 0;\\n}\\n","// Button variants\\n//\\n// Easily pump out default styles, as well as :hover, :focus, :active,\\n// and disabled options for all buttons\\n\\n.button-variant(@color; @background; @border) {\\n color: @color;\\n background-color: @background;\\n border-color: @border;\\n\\n &:focus,\\n &.focus {\\n color: @color;\\n background-color: darken(@background, 10%);\\n border-color: darken(@border, 25%);\\n }\\n &:hover {\\n color: @color;\\n background-color: darken(@background, 10%);\\n border-color: darken(@border, 12%);\\n }\\n &:active,\\n &.active,\\n .open > .dropdown-toggle& {\\n color: @color;\\n background-color: darken(@background, 10%);\\n border-color: darken(@border, 12%);\\n\\n &:hover,\\n &:focus,\\n &.focus {\\n color: @color;\\n background-color: darken(@background, 17%);\\n border-color: darken(@border, 25%);\\n }\\n }\\n &:active,\\n &.active,\\n .open > .dropdown-toggle& {\\n background-image: none;\\n }\\n &.disabled,\\n &[disabled],\\n fieldset[disabled] & {\\n &:hover,\\n &:focus,\\n &.focus {\\n background-color: @background;\\n border-color: @border;\\n }\\n }\\n\\n .badge {\\n color: @background;\\n background-color: @color;\\n }\\n}\\n\\n// Button sizes\\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\\n padding: @padding-vertical @padding-horizontal;\\n font-size: @font-size;\\n line-height: @line-height;\\n border-radius: @border-radius;\\n}\\n","// Vendor Prefixes\\n//\\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\\n// Autoprefixer in our Gruntfile. They have been removed in v4.\\n\\n// - Animations\\n// - Backface visibility\\n// - Box shadow\\n// - Box sizing\\n// - Content columns\\n// - Hyphens\\n// - Placeholder text\\n// - Transformations\\n// - Transitions\\n// - User Select\\n\\n\\n// Animations\\n.animation(@animation) {\\n -webkit-animation: @animation;\\n -o-animation: @animation;\\n animation: @animation;\\n}\\n.animation-name(@name) {\\n -webkit-animation-name: @name;\\n animation-name: @name;\\n}\\n.animation-duration(@duration) {\\n -webkit-animation-duration: @duration;\\n animation-duration: @duration;\\n}\\n.animation-timing-function(@timing-function) {\\n -webkit-animation-timing-function: @timing-function;\\n animation-timing-function: @timing-function;\\n}\\n.animation-delay(@delay) {\\n -webkit-animation-delay: @delay;\\n animation-delay: @delay;\\n}\\n.animation-iteration-count(@iteration-count) {\\n -webkit-animation-iteration-count: @iteration-count;\\n animation-iteration-count: @iteration-count;\\n}\\n.animation-direction(@direction) {\\n -webkit-animation-direction: @direction;\\n animation-direction: @direction;\\n}\\n.animation-fill-mode(@fill-mode) {\\n -webkit-animation-fill-mode: @fill-mode;\\n animation-fill-mode: @fill-mode;\\n}\\n\\n// Backface visibility\\n// Prevent browsers from flickering when using CSS 3D transforms.\\n// Default value is `visible`, but can be changed to `hidden`\\n\\n.backface-visibility(@visibility) {\\n -webkit-backface-visibility: @visibility;\\n -moz-backface-visibility: @visibility;\\n backface-visibility: @visibility;\\n}\\n\\n// Drop shadows\\n//\\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap\'s\\n// supported browsers that have box shadow capabilities now support it.\\n\\n.box-shadow(@shadow) {\\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\\n box-shadow: @shadow;\\n}\\n\\n// Box sizing\\n.box-sizing(@boxmodel) {\\n -webkit-box-sizing: @boxmodel;\\n -moz-box-sizing: @boxmodel;\\n box-sizing: @boxmodel;\\n}\\n\\n// CSS3 Content Columns\\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\\n -webkit-column-count: @column-count;\\n -moz-column-count: @column-count;\\n column-count: @column-count;\\n -webkit-column-gap: @column-gap;\\n -moz-column-gap: @column-gap;\\n column-gap: @column-gap;\\n}\\n\\n// Optional hyphenation\\n.hyphens(@mode: auto) {\\n word-wrap: break-word;\\n -webkit-hyphens: @mode;\\n -moz-hyphens: @mode;\\n -ms-hyphens: @mode; // IE10+\\n -o-hyphens: @mode;\\n hyphens: @mode;\\n}\\n\\n// Placeholder text\\n.placeholder(@color: @input-color-placeholder) {\\n // Firefox\\n &::-moz-placeholder {\\n color: @color;\\n opacity: 1; // Override Firefox\'s unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\\n }\\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\\n}\\n\\n// Transformations\\n.scale(@ratio) {\\n -webkit-transform: scale(@ratio);\\n -ms-transform: scale(@ratio); // IE9 only\\n -o-transform: scale(@ratio);\\n transform: scale(@ratio);\\n}\\n.scale(@ratioX; @ratioY) {\\n -webkit-transform: scale(@ratioX, @ratioY);\\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\\n -o-transform: scale(@ratioX, @ratioY);\\n transform: scale(@ratioX, @ratioY);\\n}\\n.scaleX(@ratio) {\\n -webkit-transform: scaleX(@ratio);\\n -ms-transform: scaleX(@ratio); // IE9 only\\n -o-transform: scaleX(@ratio);\\n transform: scaleX(@ratio);\\n}\\n.scaleY(@ratio) {\\n -webkit-transform: scaleY(@ratio);\\n -ms-transform: scaleY(@ratio); // IE9 only\\n -o-transform: scaleY(@ratio);\\n transform: scaleY(@ratio);\\n}\\n.skew(@x; @y) {\\n -webkit-transform: skewX(@x) skewY(@y);\\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\\n -o-transform: skewX(@x) skewY(@y);\\n transform: skewX(@x) skewY(@y);\\n}\\n.translate(@x; @y) {\\n -webkit-transform: translate(@x, @y);\\n -ms-transform: translate(@x, @y); // IE9 only\\n -o-transform: translate(@x, @y);\\n transform: translate(@x, @y);\\n}\\n.translate3d(@x; @y; @z) {\\n -webkit-transform: translate3d(@x, @y, @z);\\n transform: translate3d(@x, @y, @z);\\n}\\n.rotate(@degrees) {\\n -webkit-transform: rotate(@degrees);\\n -ms-transform: rotate(@degrees); // IE9 only\\n -o-transform: rotate(@degrees);\\n transform: rotate(@degrees);\\n}\\n.rotateX(@degrees) {\\n -webkit-transform: rotateX(@degrees);\\n -ms-transform: rotateX(@degrees); // IE9 only\\n -o-transform: rotateX(@degrees);\\n transform: rotateX(@degrees);\\n}\\n.rotateY(@degrees) {\\n -webkit-transform: rotateY(@degrees);\\n -ms-transform: rotateY(@degrees); // IE9 only\\n -o-transform: rotateY(@degrees);\\n transform: rotateY(@degrees);\\n}\\n.perspective(@perspective) {\\n -webkit-perspective: @perspective;\\n -moz-perspective: @perspective;\\n perspective: @perspective;\\n}\\n.perspective-origin(@perspective) {\\n -webkit-perspective-origin: @perspective;\\n -moz-perspective-origin: @perspective;\\n perspective-origin: @perspective;\\n}\\n.transform-origin(@origin) {\\n -webkit-transform-origin: @origin;\\n -moz-transform-origin: @origin;\\n -ms-transform-origin: @origin; // IE9 only\\n transform-origin: @origin;\\n}\\n\\n\\n// Transitions\\n\\n.transition(@transition) {\\n -webkit-transition: @transition;\\n -o-transition: @transition;\\n transition: @transition;\\n}\\n.transition-property(@transition-property) {\\n -webkit-transition-property: @transition-property;\\n transition-property: @transition-property;\\n}\\n.transition-delay(@transition-delay) {\\n -webkit-transition-delay: @transition-delay;\\n transition-delay: @transition-delay;\\n}\\n.transition-duration(@transition-duration) {\\n -webkit-transition-duration: @transition-duration;\\n transition-duration: @transition-duration;\\n}\\n.transition-timing-function(@timing-function) {\\n -webkit-transition-timing-function: @timing-function;\\n transition-timing-function: @timing-function;\\n}\\n.transition-transform(@transition) {\\n -webkit-transition: -webkit-transform @transition;\\n -moz-transition: -moz-transform @transition;\\n -o-transition: -o-transform @transition;\\n transition: transform @transition;\\n}\\n\\n\\n// User select\\n// For selecting text on the page\\n\\n.user-select(@select) {\\n -webkit-user-select: @select;\\n -moz-user-select: @select;\\n -ms-user-select: @select; // IE10+\\n user-select: @select;\\n}\\n","// WebKit-style focus\\n\\n.tab-focus() {\\n // Default\\n outline: thin dotted;\\n // WebKit\\n outline: 5px auto -webkit-focus-ring-color;\\n outline-offset: -2px;\\n}\\n","// Opacity\\n\\n.opacity(@opacity) {\\n opacity: @opacity;\\n // IE8 filter\\n @opacity-ie: (@opacity * 100);\\n filter: ~\\"alpha(opacity=@{opacity-ie})\\";\\n}\\n","@import \\"@{mockuplessPath}/ui.less\\";\\n@import \\"@{mockupPath}/tree/pattern.tree.less\\";\\n@import \\"@{mockuplessPath}/popover.less\\";\\n\\n@import \\"@{bowerPath}/bootstrap/less/mixins.less\\";\\n@import \\"@{bowerPath}bootstrap/less/utilities.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/buttons.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/button-groups.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/badges.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/popovers.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/pagination.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/input-groups.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/tables.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/dropdowns.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/forms.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/navbar.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/navs.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/component-animations.less\\";\\n@import (reference) \\"@{mockuplessPath}/popover.less\\";\\n\\n\\n.pat-filemanager {\\n .fade:extend(.fade all){}\\n .collapse:extend(.collapse all){}\\n .collapsing:extend(.collapsing all){}\\n\\n .popover:extend(.popover all){}\\n .popover-title:extend(.popover-title all){}\\n .popover-content:extend(.popover-content all){}\\n .arrow:extend(.arrow all){}\\n\\n .table:extend(.table all){}\\n .pagination:extend(.pagination all){}\\n\\n .btn:extend(.btn all){}\\n .btn-default:extend(.btn-default all){}\\n .btn-danger:extend(.btn-danger all){}\\n .btn-primary:extend(.btn-primary all){}\\n .btn-group:extend(.btn-group all){}\\n .btn-success:extend(.btn-success all){}\\n .input-group:extend(.input-group all){}\\n .input-group-addon:extend(.input-group-addon all){}\\n .input-group-btn:extend(.input-group-btn all){}\\n .dropdown-menu:extend(.dropdown-menu all){}\\n .dropdown-toggle:extend(.dropdown-toggle all){}\\n .dropdown-header:extend(.dropdown-header all){}\\n .divider:extend(.divider all){}\\n\\n .table-striped:extend(.table-striped all){}\\n .table-bordered:extend(.table-bordered all){}\\n\\n .nav:extend(.nav all){}\\n .navbar-nav:extend(.navbar-nav all){}\\n .navbar:extend(.navbar all){}\\n .navbar-search:extend(.navbar-search all){}\\n .navbar-collapse:extend(.navbar-collapse all){}\\n\\n .form-search:extend(.form-search all){}\\n .ui-offset-parent:extend(.ui-offset-parent all){}\\n\\n .form-group:extend(.form-group all){}\\n .help-block:extend(.help-block all){}\\n .checkbox:extend(.checkbox all){}\\n\\n .open:extend(.open all){}\\n\\n #fileselector li label {\\n display: inline;\\n }\\n .glyphicon {\\n top: 2px;\\n }\\n ul li,\\n ol li {\\n text-indent: 0;\\n padding-left: 0;\\n }\\n li::before {\\n content: \\"\\";\\n padding-right: 0;\\n }\\n #fileselector li label {\\n font-weight: normal;\\n margin-bottom: 0;\\n }\\n .popover.upload{\\n max-width: 700px;\\n }\\n .tree {\\n float: left;\\n width: 17%;\\n word-wrap: break-word;\\n font-size: 0.8em;\\n margin-top: 2.5em;\\n ul.jqtree-tree li.jqtree-selected > .jqtree-element, ul.jqtree-tree li > .jqtree-element:hover {\\n background: #E7E7E7;\\n }\\n ul.jqtree-tree {\\n margin-left: 0px;\\n li.jqtree_common {\\n margin-bottom: 0.2em;\\n }\\n .jqtree-title {\\n margin-left: 0em;\\n }\\n }\\n }\\n .navbar {\\n .btn-group > a.btn {\\n float: none;\\n display: inline-block;\\n margin-bottom: 0.5em;\\n text-decoration: none;\\n }\\n }\\n .navbar-default {\\n min-height: 250px\\n }\\n .nav-and-editor {\\n float: left;\\n width: 75%;\\n\\n .navbar .navbar-collapse.collapse {\\n // force editor tabs to be displayed\\n height: 37px !important;\\n }\\n }\\n .navbar-nav > li {\\n padding-left: 15px;\\n padding-right: 15px;\\n background-color: #F8F8F8;\\n -webkit-border-top-left-radius: 10px;\\n -webkit-border-top-right-radius: 10px;\\n -moz-border-radius-topleft: 10px;\\n -moz-border-radius-topright: 10px;\\n border-top-left-radius: 10px;\\n border-top-right-radius: 10px;\\n margin-right: 5px;\\n border-top: 1px solid #CCC;\\n border-right: 1px solid #CCC;\\n border-left: 1px solid #CCC;\\n &.active {\\n border-top: 1px solid #999;\\n border-right: 1px solid #999;\\n border-left: 1px solid #999;\\n background-color: #E7E7E7;\\n a {\\n background-color: #E7E7E7;\\n }\\n }\\n > a {\\n display: inline-block;\\n padding: 8px 0px;\\n text-decoration: none;\\n color: @gray-dark;\\n +a {\\n padding-left: 4px;\\n }\\n &:focus {\\n outline: none;\\n }\\n }\\n &.modified > a {\\n color: @brand-warning;\\n }\\n }\\n\\n}\\n","// Single side border-radius\\n\\n.border-top-radius(@radius) {\\n border-top-right-radius: @radius;\\n border-top-left-radius: @radius;\\n}\\n.border-right-radius(@radius) {\\n border-bottom-right-radius: @radius;\\n border-top-right-radius: @radius;\\n}\\n.border-bottom-radius(@radius) {\\n border-bottom-right-radius: @radius;\\n border-bottom-left-radius: @radius;\\n}\\n.border-left-radius(@radius) {\\n border-bottom-left-radius: @radius;\\n border-top-left-radius: @radius;\\n}\\n","//*// ALERTS //*//\\n\\n.portalMessage-variant(@background; @border; @text-color) {\\n\\tbackground-color: @background;\\n\\tborder: @border;\\n\\tcolor: @text-color;\\n\\t> strong, > dt { color: fade(@text-color, 67%);}\\n}\\n\\n.alert.status,\\n.portalMessage {\\n\\tpadding: @plone-alert-padding;\\n\\tpadding-left: @plone-alert-padding*3;\\n\\tmargin-bottom: @plone-line-height-computed;\\n\\tborder: 0;\\n\\tborder-radius: @plone-alert-border-radius;\\n\\tbox-shadow: 0 1px 2px rgba(0,0,0,.17);\\n\\tfont-size: @plone-font-size-base;\\n\\tfont-weight: @plone-font-weight-regular;\\n\\ttext-shadow: 0 1px rgba(255,255,255,.1);\\n\\t> strong, > dt {\\n\\t\\tfont-weight: @plone-font-weight-bold;\\n\\t\\tpadding-right: @plone-alert-padding/3;\\n\\t\\tcolor: darken(@plone-alert-info-text, 10%)\\n\\t}\\n\\ta {\\n\\t\\tfont-weight: @plone-alert-link-font-weight;\\n\\t\\tcolor: darken(@plone-link-color, 12%);\\n\\t}\\n\\t> strong:before, > dt:before { \\n\\t\\tfont-size:@plone-font-size-base; \\n\\t\\tfont-weight: @plone-font-weight-regular; \\n\\t\\tmargin-left: -30px;\\n\\t\\tmargin-right: 10px;\\n\\t\\tdisplay: inline-block; \\n\\t\\tborder-radius: @plone-alert-icon-size;\\n\\t\\ttext-align:center;\\n\\t\\tcolor:rgba(255, 255, 255, 0.9); \\n\\t\\twidth:@plone-alert-icon-size; \\n\\t\\theight:@plone-alert-icon-size;\\n\\t\\tline-height: @plone-alert-icon-size; //IE fix\\n\\t\\ttext-shadow: 0 -1px rgba(0,0,0,.5);\\n\\t\\ttop: -1px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t> dt, > dd { display: inline;}\\n\\t> dd {margin: 0;}\\n\\n &.alert-none {\\n box-shadow: none;\\n }\\n &.alert-success,\\n &.info {\\n\\t .portalMessage-variant(@plone-alert-info-bg; @plone-alert-info-border; @plone-alert-info-text);\\n & > strong:before, & > dt:before {background-color: @plone-alert-info-bullet; content:\\"i\\";}\\n }\\n &.alert-warning,\\n &.warning {\\n\\t .portalMessage-variant(@plone-alert-warning-bg; @plone-alert-warning-border; @plone-alert-warning-text);\\n & > strong:before, & > dt:before {background-color: @plone-alert-warning-bullet; content:\\"!\\";}\\n }\\n &.alert-error,\\n &.error {\\n\\t .portalMessage-variant(@plone-alert-error-bg; @plone-alert-error-border; @plone-alert-error-text);\\n & > strong:before, & > dt:before {background-color: @plone-alert-error-bullet; content:\\"\xc3\x97\\";}\\n }\\n}\\n.portlet .portletContent > .portalMessage {\\n\\tpadding: @plone-alert-padding;\\n\\tpadding-left: @plone-alert-padding*3;\\n\\tmargin:15px;\\n}\\n\\n\\n/* special octogonal shape for error\\n.alert.status.alert-error,\\n.portalMessage.error {\\n\\t& > strong:before, & > dt:before {\\n\\t\\tborder-radius: 8px; //soften border\\n\\t\\tbackground: @plone-alert-error-bullet;\\n\\t\\tbackground:\\n\\t\\t\\tlinear-gradient(135deg, transparent 4px, @plone-alert-error-bullet 0) top left,\\n\\t\\t\\tlinear-gradient(225deg, transparent 4px, @plone-alert-error-bullet 0) top right,\\n\\t\\t\\tlinear-gradient(315deg, transparent 4px, @plone-alert-error-bullet 0) bottom right,\\n\\t\\t\\tlinear-gradient(45deg, transparent 4px, @plone-alert-error-bullet 0) bottom left;\\n\\t\\tbackground-size: 50% 50%;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t}\\n}\\n*/\\n","//*// MIXIN FONT FACE //*//\\n\\n.font-face(@font-path; @file-name; @font-family; @font-weight; @font-style; @svg-id; @local, ~\'\';) {\\n @font-face {\\n font-family: @font-family;\\n src: url(\'@{font-path}@{file-name}.eot\');\\n src: @local\\n url(\'@{font-path}@{file-name}.eot?#iefix\') format(\'embedded-opentype\'),\\n url(\'@{font-path}@{file-name}.woff\') format(\'woff\'),\\n url(\'@{font-path}@{file-name}.ttf\') format(\'truetype\'),\\n url(\'@{font-path}@{file-name}.svg#@{svg-id}\') format(\'svg\');\\n font-weight: @font-weight;\\n font-style: @font-style;\\n }\\n}\\n","//*// FONTS //*//\\n\\n// 300 Light\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name: \'roboto-light\';\\n\\t@font-family: \'Roboto\';\\n\\t@font-weight: 300;\\n\\t@font-style: normal;\\n\\t@svg-id: \'robotolight\';\\n @local: ~\\"local(\'Roboto Light\'),\\";\\n);\\n\\n// 300 Light Italic\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'roboto-lightitalic\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t300;\\n\\t@font-style:\\titalic;\\n\\t@svg-id:\\t\\t\'robotolight_italic\';\\n @local: ~\\"local(\'Roboto Light Italic\'),\\";\\n);\\n\\n// 400 Regular\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'roboto-regular\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t400;\\n\\t@font-style:\\tnormal;\\n\\t@svg-id:\\t\\t\'robotoregular\';\\n @local: ~\\"local(\'Roboto Regular\'),\\";\\n);\\n\\n// 400 Italic\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'roboto-italic\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t400;\\n\\t@font-style:\\titalic;\\n\\t@svg-id:\\t\\t\'robotoitalic\';\\n @local: ~\\"local(\'Roboto Italic\'),\\";\\n);\\n\\n// 500 Medium\\n.font-face(\\n @font-path: \'roboto/\';\\n @file-name:\\t\\t\'roboto-medium\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t500;\\n\\t@font-style:\\tnormal;\\n\\t@svg-id:\\t\\t\'robotomedium\';\\n @local: ~\\"local(\'Roboto Medium\'),\\";\\n);\\n\\n// 500 Medium Italic\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'roboto-mediumitalic\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t500;\\n\\t@font-style:\\titalic;\\n\\t@svg-id:\\t\\t\'robotomedium_italic\';\\n @local: ~\\"local(\'Roboto Medium Italic\'),\\";\\n);\\n\\n// 700 Bold\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'roboto-bold\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t700;\\n\\t@font-style:\\tnormal;\\n\\t@svg-id:\\t\\t\'robotobold\';\\n @local: ~\\"local(\'Roboto Bold\'),\\";\\n);\\n\\n// 700 Bold Italic\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'roboto-bolditalic\';\\n\\t@font-family:\\t\'Roboto\';\\n\\t@font-weight:\\t700;\\n\\t@font-style:\\titalic;\\n\\t@svg-id:\\t\\t\'robotobold_italic\';\\n @local: ~\\"local(\'Roboto Bold Italic\'),\\";\\n);\\n\\n// 300 Light Condensed (toolbar)\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'robotocondensed-light\';\\n\\t@font-family:\\t\'Roboto Condensed\';\\n\\t@font-weight:\\t300;\\n\\t@font-style:\\tnormal;\\n\\t@svg-id:\\t\\t\'roboto_condensedlight\';\\n @local: ~\\"local(\'Roboto Condensed Light\'),\\";\\n);\\n\\n// 300 Light Condensed Italic (toolbar)\\n.font-face(\\n @font-path: \'roboto/\';\\n\\t@file-name:\\t\\t\'robotocondensed-lightitalic\';\\n\\t@font-family:\\t\'Roboto Condensed\';\\n\\t@font-weight:\\t300;\\n\\t@font-style:\\titalic;\\n\\t@svg-id:\\t\\t\'roboto_condensedlight_italic\';\\n @local: ~\\"local(\'Roboto Condensed Thin Italic\'),\\";\\n);\\n","//*// TYPE //*//\\n\\n//*// Body //*//\\nbody { word-wrap: break-word; }\\n\\n//*// Headings\\nh1, h2, h3, h4, h5, h6 {\\n font-family: @plone-headings-font-family;\\n font-weight: @plone-headings-font-weight;\\n line-height: @plone-headings-line-height;\\n color: @plone-headings-color;\\n}\\n\\nh1, h2, h3 {\\n margin-top: @plone-line-height-computed;\\n margin-bottom: (@plone-line-height-computed / 2);\\n a:hover, a:focus { text-decoration: none; border-bottom: 2px @plone-link-hover-color solid; }\\n}\\nh4, h5, h6 {\\n margin-top: (@plone-line-height-computed / 2);\\n margin-bottom: (@plone-line-height-computed / 2);\\n}\\n\\nh1 { font-size: @plone-font-size-h1; }\\nh2 { font-size: @plone-font-size-h2; }\\nh3 { font-size: @plone-font-size-h3; }\\nh4 { font-size: @plone-font-size-h4; }\\nh5 { font-size: @plone-font-size-h5; }\\nh6 { font-size: @plone-font-size-h6; }\\n\\n//*// Body text\\np { margin: 0 0 (@plone-line-height-computed / 2); }\\n\\n.documentDescription {\\n font-size: @plone-font-size-h4;\\n font-weight: @plone-font-weight-bold;\\n color: @plone-text-discreet;\\n margin-bottom: 10px;\\n}\\n\\n//*// Emphasis & misc\\nsmall { font-size: 85%; }\\ncite { font-style: normal; }\\nmark { background-color: @plone-state-warning-bg; padding: .2em; }\\n.discreet { color: @plone-text-discreet; font-weight: @plone-font-weight-regular;}\\n.documentByLine {color: @plone-text-discreet; font-weight: @plone-font-weight-regular; margin-bottom: (@plone-line-height-computed / 2); }\\n\\n//*// Page header\\n.documentFirstHeading {\\n padding-bottom: ((@plone-line-height-computed / 2) - 1);\\n margin: 0 0 (@plone-line-height-computed / 2);\\n border-bottom: 1px solid @plone-page-header-border-color;\\n}\\n\\n//*// Lists\\nul,\\nol {\\n margin-top: 0;\\n margin-bottom: (@plone-line-height-computed / 2);\\n ul,\\n ol {\\n margin-bottom: 0;\\n }\\n}\\n\\ndl {\\n margin-top: 0; // Remove browser default\\n margin-bottom: @plone-line-height-computed;\\n}\\n dt, dd { line-height: @plone-line-height-base; }\\n dt { font-weight: bold;}\\n dd { margin-left: 0; }\\n\\n//*// Misc\\nabbr[title], abbr[data-original-title] /*tooltip bootstrap plugin, just in case*/ {\\n cursor: help;\\n border-bottom: 1px dotted @plone-abbr-border-color;\\n}\\n\\n//*// Addresses\\naddress {\\n margin-bottom: @plone-line-height-computed;\\n font-style: normal;\\n line-height: @plone-line-height-base;\\n}\\n\\n\\n//*// Floats\\n.pull-right {\\n float: right !important;\\n}\\n.pull-left {\\n float: left !important;\\n}\\n","//*// SCAFFOLDING //*//\\n\\n//*// Reset the box-sizing\\n* {\\n .box-sizing(border-box);\\n}\\n*:before,\\n*:after {\\n .box-sizing(border-box);\\n}\\n\\n\\n//*// Body reset\\nhtml {\\n font-size: 62.5%;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n}\\n\\nbody {\\n font-family: @plone-font-family-base;\\n font-size: @plone-font-size-base;\\n font-weight: @plone-font-weight-medium;\\n line-height: @plone-line-height-base;\\n color: @plone-text-color;\\n background-color: @plone-body-bg;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n//*// Reset fonts for relevant elements\\ninput,\\nbutton,\\nselect,\\ntextarea {\\n font-family: inherit;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n\\n\\n//*// Links\\n\\na {\\n color: @plone-link-color;\\n text-decoration: none;\\n\\n &:hover,\\n &:focus {\\n color: @plone-link-hover-color;\\n text-decoration: underline;\\n }\\n\\n &:focus {\\n .tab-focus(); //--> NOT DONE\\n }\\n}\\n\\n\\n//*// Figures\\nfigure {\\n margin: 0;\\n}\\n\\n\\n//*// Images\\n\\nimg {\\n vertical-align: middle;\\n}\\n\\n\\n// Horizontal rules\\n\\nhr {\\n margin-top: @plone-line-height-computed;\\n margin-bottom: @plone-line-height-computed;\\n border: 0;\\n border-top: 1px solid @plone-hr-border;\\n}\\n\\n\\n// Only display content to screen readers\\n//\\n// See: http://a11yproject.com/posts/how-to-hide-content/\\n\\n.sr-only, .hiddenStructure,\\n.crud-form .header-select{\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n margin: -1px;\\n padding: 0;\\n overflow: hidden;\\n clip: rect(0,0,0,0);\\n border: 0;\\n color: #fff;\\n background-color: #000;\\n}\\n.sr-only a, .hiddenStructure a {\\n color: #fff;\\n background-color: #000;\\n}\\n\\n// Use in conjunction with .sr-only to only display content when it\'s focused.\\n// Useful for \\"Skip to main content\\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\\n// Credit: HTML5 Boilerplate\\n\\n.sr-only-focusable {\\n &:active,\\n &:focus {\\n position: static;\\n width: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n clip: auto;\\n }\\n}","//* // VARIABLES //*//\\n\\n//*// COLORS\\n//grays\\n@plone-gray-darker:\\t\\t\\t\\t\\t\\t\\tlighten(#000, 20%); // #333\\n@plone-gray-dark:\\t\\t\\t\\t\\t\\t\\tlighten(#000, 30%); // #4c4c4c\\n@plone-gray:\\t\\t\\t\\t\\t\\t\\t\\tlighten(#000, 41%); // #696969\\n@plone-gray-light:\\t\\t\\t\\t\\t\\t\\tlighten(#000, 46.5%); // #767676 //discreet\\n@plone-gray-lighter:\\t\\t\\t\\t\\t\\tlighten(#000, 80%); // #ccc //disableds like\\n\\n//colors\\n@plone-link-color:\\t\\t\\t\\t\\t\\t\\t#007bb1; //plone blue made slightly darker for wcag 2.0\\n@plone-link-color-on-dark:\\t\\t\\t\\t\\t#16a1e3; //plone blue\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t//if you need different contrast\\n@plone-link-color-on-grey:\\t\\t \\t\\t\\t#086ca3; //valid wcag 2.0\\n@plone-default-published-color:\\t\\t\\t\\t@plone-link-color; //published and external same color\\n@plone-default-draft-color:\\t\\t\\t\\t\\tdarken(@plone-toolbar-draft-color, 15%); // lime-yellow //draft is visible\\n@plone-default-pending-color:\\t\\t\\t\\tdarken(@plone-toolbar-pending-color, 15%); // orange\\n@plone-default-private-color:\\t\\t\\t\\t@plone-toolbar-private-color; // red\\n@plone-default-internal-color:\\t\\t\\t\\tdarken(@plone-toolbar-internal-color, 15%); // is draft\\n@plone-default-internally-published-color:\\tdarken(@plone-toolbar-internally-published-color, 5%); // is intranet\\n\\n\\n\\n//*// SCAFFOLDING\\n@plone-body-bg: \\t\\t\\t\\t #fafafa; //almost-white\\n@plone-footer-bg: \\t\\t\\t\\t #2e3133; //blued-darkgray\\n@plone-text-color: \\t\\t\\t\\t @plone-gray-dark;\\n@plone-link-hover-color: \\t\\t\\t\\t darken(@plone-link-color, 15%);\\n\\n\\n\\n//*// TYPOGRAPHY\\n@plone-font-family-sans-serif: \\"Roboto\\", \\"Helvetica Neue\\", Helvetica, Arial, sans-serif; // Roboto seems Plone\'s DIN\\n@plone-font-family-condensed: \\"Roboto Condensed\\", \\"Arial Narrow\\", sans-serif; //just on toolbar\\n@plone-font-family-serif: Georgia, \\"Times New Roman\\", Times, serif;\\n@plone-font-family-monospace: Menlo, Monaco, Consolas, \\"Courier New\\", monospace;\\n@plone-font-family-base: @plone-font-family-sans-serif;\\n\\n@plone-font-size-base: 14px;\\n@plone-font-size-large: ceil((@plone-font-size-base * 1.25)); // ~18px\\n@plone-font-size-small: ceil((@plone-font-size-base * 0.85)); // ~12px\\n\\n@plone-font-size-h1: floor((@plone-font-size-base * 2.6)); // ~36px\\n@plone-font-size-h2: floor((@plone-font-size-base * 2.15)); // ~30px\\n@plone-font-size-h3: ceil((@plone-font-size-base * 1.7)); // ~24px\\n@plone-font-size-h4: ceil((@plone-font-size-base * 1.25)); // ~18px\\n@plone-font-size-h5: @plone-font-size-base;\\n@plone-font-size-h6: ceil((@plone-font-size-base * 0.85)); // ~12px\\n\\n//** Unit-less `line-height` for use in components like buttons.\\n@plone-line-height-base: 1.428571429; // 20/14\\n//** Computed \\"line-height\\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\\n@plone-line-height-computed: floor((@plone-font-size-base * @plone-line-height-base)); // ~20px\\n\\n@plone-headings-font-family: inherit;\\n\\t@plone-headings-font-weight: @plone-font-weight-regular;\\n\\t@plone-headings-line-height: 1.1;\\n\\t@plone-headings-color: inherit;\\n\\n@plone-font-weight-light:\\t\\t300;\\n@plone-font-weight-regular:\\t\\t400;\\n@plone-font-weight-medium:\\t\\t500;\\n@plone-font-weight-bold:\\t\\t700;\\n\\n\\n\\n//*// COMPONENTS\\n@plone-padding-base-vertical: 6px;\\n\\t@plone-padding-base-horizontal: 12px;\\n\\t@plone-padding-large-vertical: 10px;\\n\\t@plone-padding-large-horizontal: 16px;\\n\\t@plone-padding-small-vertical: 5px;\\n\\t@plone-padding-small-horizontal: 10px;\\n\\t@plone-padding-xs-vertical: 1px;\\n\\t@plone-padding-xs-horizontal: 5px;\\n\\t@plone-line-height-large: 1.33;\\n\\t@plone-line-height-small: 1.5;\\n@plone-border-radius-base: 4px;\\n\\t@plone-border-radius-large: 6px;\\n\\t@plone-border-radius-small: 2px;\\n//** Global color for active items (e.g., navs or dropdowns).\\n@plone-component-active-color: #fff;\\n//** Global background color for active items (e.g., navs or dropdowns).\\n@plone-component-active-bg: @plone-link-color;\\n//** Width of the `border` for generating carets that indicate dropdowns.\\n@plone-caret-width-base: 4px;\\n//** Carets increase slightly in size for larger components.\\n@plone-caret-width-large: 5px;\\n\\n\\n\\n//*// TABLES\\n@plone-table-cell-padding: 8px;\\n@plone-table-condensed-cell-padding: 5px;\\n@plone-table-bg: #fff;\\n@plone-table-bg-accent: #f6f6f6;\\n@plone-table-bg-hover: #f0f0f0;\\n@plone-table-bg-active: @plone-table-bg-hover;\\n@plone-table-border-color: #e5e5e5;\\n\\n\\n\\n//*// STATES\\n@plone-state-info-text: \\t\\t rgba(0,0,0,.5);\\n\\t@plone-state-info-bg: \\t\\t #aad6ea;\\n\\t@plone-state-info-border: \\t\\t 1px solid darken(@plone-state-info-bg,4%);\\n\\t@plone-state-info-bullet:\\t\\t\\t\\t\\t#3e7b91;\\n@plone-state-warning-text: \\t rgba(0,0,0,.5);\\n\\t@plone-state-warning-bg: \\t \\t #ebd380;\\n\\t@plone-state-warning-border: \\t 1px solid darken(@plone-state-warning-bg,6%);\\n\\t@plone-state-warning-bullet:\\t\\t\\t\\t#bc8d0d;\\n@plone-state-error-text: \\t\\trgba(0,0,0,.5);\\n\\t@plone-state-error-bg: \\t\\t#EC9C8D;\\n\\t@plone-state-error-border: \\t\\t1px solid darken(@plone-state-error-bg,2%);\\n\\t@plone-state-error-bullet:\\t\\t\\t\\t\\t#ac493f;\\n\\n\\n//*// TOOLBAR\\n\\n@plone-left-toolbar-expanded: 120px;\\n@plone-left-toolbar: 60px;\\n\\n//*// DEVICES\\n@plone-screen-xs-min: 480px;\\n@plone-screen-sm-min: 768px;\\n@plone-screen-md-min: 992px;\\n@plone-screen-lg-min: 1200px;\\n\\n@plone-container-sm: \\t\\t\\t 750px;\\n@plone-container-md: 970px;\\n@plone-container-lg: 1170px;\\n\\n@plone-screen-xs-max: (@plone-screen-sm-min - 1);\\n@plone-screen-sm-max: (@plone-screen-md-min - 1);\\n@plone-screen-md-max: (@plone-screen-lg-min - 1);\\n\\n@plone-grid-columns:\\t\\t\\t\\t12;\\n@plone-grid-gutter-width: 30px;\\n@plone-grid-float-breakpoint: @plone-screen-sm-min;\\n//** Point at which the navbar begins collapsing.\\n@plone-grid-float-breakpoint-max: (@plone-grid-float-breakpoint - 1);\\n\\n\\n//*// CONTAINERS\\n@plone-container-tablet: ((720px + @plone-grid-gutter-width));\\n@plone-container-sm: @plone-container-tablet;\\n\\n@plone-container-desktop: ((940px + @plone-grid-gutter-width));\\n@plone-container-md: @plone-container-desktop;\\n\\n@plone-container-large-desktop: ((1140px + @plone-grid-gutter-width));\\n@plone-container-lg: @plone-container-large-desktop;\\n\\n\\n//*// Buttons\\n@plone-btn-standalone-color: \\t\\t@plone-gray-dark;\\n\\t@plone-btn-standalone-bg: \\t \\t#e5e5e5;\\n\\t@plone-btn-standalone-border: \\t \\tdarken(@plone-btn-standalone-bg, 20%);\\n@plone-btn-context-color: \\t\\t#fff;\\n\\t@plone-btn-context-bg: \\t\\t#007bb1;\\n\\t@plone-btn-context-border: \\t\\tdarken(@plone-btn-context-bg, 10%);\\n@plone-btn-destructive-color: #fff;\\n\\t@plone-btn-destructive-bg: #bb4f45;\\n\\t@plone-btn-destructive-border: darken(@plone-btn-destructive-bg, 10%);\\n\\n//*// FORMS\\n//** `` background color\\n@plone-input-bg: #fff;\\n//** `` background color\\n@plone-input-bg-disabled: @plone-table-border-color;\\n//** Text color for ``s\\n@plone-input-color: @plone-gray;\\n//** `` border color\\n@plone-input-border: #ccc;\\n//** `` border radius\\n@plone-input-border-radius: @plone-border-radius-base;\\n//** Border color for inputs on focus\\n@plone-input-border-focus: @plone-portlet-list-bullet;\\n//** Placeholder text color\\n@plone-input-color-placeholder: @plone-gray-light;\\n//** Default `.form-control` height\\n@plone-input-height-base: (@plone-line-height-computed + (@plone-padding-base-vertical * 2) + 2);\\n//** Large `.form-control` height\\n@plone-input-height-large: (ceil(@plone-font-size-large * @plone-line-height-large) + (@plone-padding-large-vertical * 2) + 2);\\n//** Small `.form-control` height\\n@plone-input-height-small: (floor(@plone-font-size-small * @plone-line-height-small) + (@plone-padding-small-vertical * 2) + 2);\\n@plone-legend-color: @plone-gray-dark;\\n@plone-legend-border-color: #e5e5e5;\\n\\n//** Background color for textual input addons\\n@plone-input-group-addon-bg: @plone-gray-lighter;\\n//** Border color for textual input addons\\n@plone-input-group-addon-border-color: @plone-input-border;\\n\\n\\n\\n//*// ALERTS\\n@plone-alert-icon-size:\\t\\t\\t\\t\\t\\t\\t20px;\\n@plone-alert-padding:\\t\\t\\t\\t\\t\\t\\t15px;\\n\\t@plone-alert-border-radius:\\t\\t\\t\\t\\t4px;\\n\\t@plone-alert-link-font-weight:\\t\\t\\t\\t@plone-font-weight-regular; //it depends on your font-family\\n@plone-alert-info-bg:\\t\\t\\t\\t\\t\\t@plone-state-info-bg;\\n\\t@plone-alert-info-text:\\t\\t\\t\\t\\t\\t@plone-state-info-text; //the text on alert is black with opacity to use the same color and match the bg.\\n\\t@plone-alert-info-border:\\t\\t\\t\\t\\t@plone-state-info-border;\\n\\t@plone-alert-info-bullet:\\t\\t\\t\\t\\t@plone-state-info-bullet;\\n@plone-alert-warning-bg:\\t\\t\\t\\t\\t@plone-state-warning-bg;\\n\\t@plone-alert-warning-text:\\t\\t\\t\\t\\t@plone-state-warning-text;\\n\\t@plone-alert-warning-border:\\t\\t\\t\\t@plone-state-warning-border;\\n\\t@plone-alert-warning-bullet:\\t\\t\\t\\t@plone-state-warning-bullet;\\n@plone-alert-error-bg:\\t\\t\\t\\t\\t\\t@plone-state-error-bg;\\n\\t@plone-alert-error-text:\\t\\t\\t\\t\\t@plone-state-error-text;\\n\\t@plone-alert-error-border:\\t\\t\\t\\t\\t@plone-state-error-border;\\n\\t@plone-alert-error-bullet:\\t\\t\\t\\t\\t@plone-state-error-bullet;\\n\\n\\n\\n//*// PORTLETS\\n@plone-border-base:\\t\\t\\t\\t\\t\\t\\t1px solid;\\n@plone-portlet-header-bg:\\t\\t\\t\\t\\t#f2f1f1;\\n@plone-portlet-header-color:\\t\\t\\t\\t@plone-gray;\\n@plone-portlet-content-bg:\\t\\t\\t\\t\\t#fff;\\n@plone-portlet-footer-bg:\\t\\t\\t\\t\\t#fcfcfd;\\n@plone-portlet-border:\\t\\t\\t\\t\\t\\t@plone-border-base #e5e5e5;\\n@plone-portlet-contrast-bg:\\t\\t\\t\\t\\t#e5e5e5;\\n@plone-portlet-event-bullet:\\t\\t\\t\\t#dbecfe;\\n@plone-portlet-list-bullet:\\t\\t\\t\\t\\t#64bee8;\\n@plone-portlet-list-hover-bg:\\t\\t\\t\\t#fcfcfd;\\n@plone-portlet-list-small-text:\\t\\t\\t\\t@plone-gray;\\n\\n\\n\\n//*// THUMBS\\n//** Padding around the thumbnail image\\n@plone-thumbnail-padding: 4px;\\n//** Thumbnail background color\\n@plone-thumbnail-bg: @plone-body-bg;\\n//** Thumbnail border color\\n@plone-thumbnail-border: #ddd;\\n//** Thumbnail border radius\\n@plone-thumbnail-border-radius: @plone-border-radius-base;\\n//** Custom text color for thumbnail captions\\n@plone-thumbnail-caption-color: @plone-text-color;\\n//** Padding around the thumbnail caption\\n@plone-thumbnail-caption-padding: 9px;\\n\\n\\n\\n//*// BREADCRUMBS\\n@plone-breadcrumb-padding-vertical: 8px;\\n@plone-breadcrumb-padding-horizontal: 15px;\\n//** Breadcrumb background color\\n@plone-breadcrumb-bg: darken(@plone-portlet-header-bg,5%);\\n//** Breadcrumb text color\\n@plone-breadcrumb-color: @plone-gray-lighter;\\n//** Text color of current page in the breadcrumb\\n@plone-breadcrumb-active-color: @plone-gray-light;\\n\\n\\n//*// SITE NAV\\n@plone-sitenav-height: 50px;\\n\\t@plone-sitenav-margin-bottom: @plone-line-height-computed;\\n\\t@plone-sitenav-border-radius: @plone-border-radius-base;\\n\\t@plone-sitenav-padding-horizontal: floor((@plone-grid-gutter-width / 2));\\n\\t@plone-sitenav-padding-vertical: ((@plone-sitenav-height - @plone-line-height-computed) / 2);\\n\\t@plone-sitenav-collapse-max-height: 340px;\\n\\t@plone-sitenav-link-padding: 10px 15px;\\n\\t@plone-sitenav-link-hover-bg: #7099bf;\\n\\t@plone-sitenav-bg: \\t\\t\\t @plone-link-color;\\n\\t@plone-sitenav-hover-bg: \\t\\t\\t @plone-link-color;\\n\\n//*// PAGINATION\\n@plone-pagination-color: @plone-link-color;\\n\\t@plone-pagination-bg: @plone-portlet-content-bg;\\n\\t@plone-pagination-border: @plone-portlet-border;\\n@plone-pagination-hover-color: @plone-link-hover-color;\\n\\t@plone-pagination-hover-bg: @plone-portlet-header-bg;\\n\\t@plone-pagination-hover-border: @plone-portlet-border;\\n@plone-pagination-active-color: @plone-portlet-content-bg;\\n\\t@plone-pagination-active-bg: @plone-link-color;\\n\\t@plone-pagination-active-border: @plone-border-base @plone-link-color;\\n@plone-pagination-disabled-color: @plone-gray-lighter;\\n\\t@plone-pagination-disabled-bg: @plone-portlet-footer-bg;\\n\\t@plone-pagination-disabled-border: @plone-portlet-border;\\n\\n\\n\\n//*// CODE\\n@plone-code-color: #c7254e;\\n\\t@plone-code-bg: #f9f2f4;\\n@plone-kbd-color: #fff;\\n\\t@plone-kbd-bg: #333;\\n@plone-pre-bg: #f5f5f5;\\n\\t@plone-pre-color: @plone-gray-dark;\\n\\t@plone-pre-border-color: #ccc;\\n\\t@plone-pre-scrollable-max-height: 340px;\\n\\n\\n\\n//*// TYPE\\n//** Text muted color\\n@plone-text-discreet: @plone-gray;\\n//** Abbreviations and acronyms border color\\n@plone-abbr-border-color: @plone-gray-light;\\n//** Headings small color\\n@plone-headings-small-color: @plone-gray-light;\\n//** Blockquote small color\\n@plone-blockquote-small-color: @plone-gray-light;\\n//** Blockquote font size\\n@plone-blockquote-font-size: (@plone-font-size-base * 1.25);\\n//** Blockquote border color\\n@plone-blockquote-border-color: @plone-gray-lighter;\\n//** Page header border color\\n@plone-page-header-border-color: @plone-gray-lighter;\\n\\n\\n\\n//*// MISC\\n//** Horizontal line color.\\n@plone-hr-border: @plone-gray-lighter;\\n//** Horizontal offset for forms and lists.\\n@plone-component-offset-horizontal: 180px;\\n\\n\\n//*// END\\n","//*// TOOLTIP //*//\\n\\n.tooltips {\\n\\topacity: 0;\\n\\ttransition: opacity .2s ease .5s;\\n\\tposition: absolute;\\n\\tbackground: @plone-gray-darker;\\n\\tbackground: rgba(0,0,0,.9);\\n\\tcolor: @plone-body-bg;\\n\\tfont-size: @plone-font-size-small;\\n\\tborder-radius: @plone-border-radius-base;\\n\\tbox-shadow: 0 2px 6px rgba(0,0,0,.17);\\n\\tmax-width: 200px;\\n\\tmargin-left: -100px;\\n\\tleft: 200px;\\n\\ttext-align: center;\\n\\tpadding: @plone-padding-base-vertical;\\n\\t&.active {\\n\\t\\topacity: 1;\\n\\t\\ttransition: opacity .2s ease .5s;\\n\\t}\\n}","//\\n// Glyphicons for Bootstrap\\n//\\n// Since icons are fonts, they can be placed anywhere text is placed and are\\n// thus automatically sized to match the surrounding child. To use, create an\\n// inline element with the appropriate classes, like so:\\n//\\n// Star\\n\\n// Import the fonts\\n@font-face {\\n font-family: \'Glyphicons Halflings\';\\n src: url(\'@{icon-font-path}@{icon-font-name}.eot\');\\n src: url(\'@{icon-font-path}@{icon-font-name}.eot?#iefix\') format(\'embedded-opentype\'),\\n url(\'@{icon-font-path}@{icon-font-name}.woff2\') format(\'woff2\'),\\n url(\'@{icon-font-path}@{icon-font-name}.woff\') format(\'woff\'),\\n url(\'@{icon-font-path}@{icon-font-name}.ttf\') format(\'truetype\'),\\n url(\'@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}\') format(\'svg\');\\n}\\n\\n// Catchall baseclass\\n.glyphicon {\\n position: relative;\\n top: 1px;\\n display: inline-block;\\n font-family: \'Glyphicons Halflings\';\\n font-style: normal;\\n font-weight: normal;\\n line-height: 1;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n// Individual icons\\n.glyphicon-asterisk { &:before { content: \\"\\\\002a\\"; } }\\n.glyphicon-plus { &:before { content: \\"\\\\002b\\"; } }\\n.glyphicon-euro,\\n.glyphicon-eur { &:before { content: \\"\\\\20ac\\"; } }\\n.glyphicon-minus { &:before { content: \\"\\\\2212\\"; } }\\n.glyphicon-cloud { &:before { content: \\"\\\\2601\\"; } }\\n.glyphicon-envelope { &:before { content: \\"\\\\2709\\"; } }\\n.glyphicon-pencil { &:before { content: \\"\\\\270f\\"; } }\\n.glyphicon-glass { &:before { content: \\"\\\\e001\\"; } }\\n.glyphicon-music { &:before { content: \\"\\\\e002\\"; } }\\n.glyphicon-search { &:before { content: \\"\\\\e003\\"; } }\\n.glyphicon-heart { &:before { content: \\"\\\\e005\\"; } }\\n.glyphicon-star { &:before { content: \\"\\\\e006\\"; } }\\n.glyphicon-star-empty { &:before { content: \\"\\\\e007\\"; } }\\n.glyphicon-user { &:before { content: \\"\\\\e008\\"; } }\\n.glyphicon-film { &:before { content: \\"\\\\e009\\"; } }\\n.glyphicon-th-large { &:before { content: \\"\\\\e010\\"; } }\\n.glyphicon-th { &:before { content: \\"\\\\e011\\"; } }\\n.glyphicon-th-list { &:before { content: \\"\\\\e012\\"; } }\\n.glyphicon-ok { &:before { content: \\"\\\\e013\\"; } }\\n.glyphicon-remove { &:before { content: \\"\\\\e014\\"; } }\\n.glyphicon-zoom-in { &:before { content: \\"\\\\e015\\"; } }\\n.glyphicon-zoom-out { &:before { content: \\"\\\\e016\\"; } }\\n.glyphicon-off { &:before { content: \\"\\\\e017\\"; } }\\n.glyphicon-signal { &:before { content: \\"\\\\e018\\"; } }\\n.glyphicon-cog { &:before { content: \\"\\\\e019\\"; } }\\n.glyphicon-trash { &:before { content: \\"\\\\e020\\"; } }\\n.glyphicon-home { &:before { content: \\"\\\\e021\\"; } }\\n.glyphicon-file { &:before { content: \\"\\\\e022\\"; } }\\n.glyphicon-time { &:before { content: \\"\\\\e023\\"; } }\\n.glyphicon-road { &:before { content: \\"\\\\e024\\"; } }\\n.glyphicon-download-alt { &:before { content: \\"\\\\e025\\"; } }\\n.glyphicon-download { &:before { content: \\"\\\\e026\\"; } }\\n.glyphicon-upload { &:before { content: \\"\\\\e027\\"; } }\\n.glyphicon-inbox { &:before { content: \\"\\\\e028\\"; } }\\n.glyphicon-play-circle { &:before { content: \\"\\\\e029\\"; } }\\n.glyphicon-repeat { &:before { content: \\"\\\\e030\\"; } }\\n.glyphicon-refresh { &:before { content: \\"\\\\e031\\"; } }\\n.glyphicon-list-alt { &:before { content: \\"\\\\e032\\"; } }\\n.glyphicon-lock { &:before { content: \\"\\\\e033\\"; } }\\n.glyphicon-flag { &:before { content: \\"\\\\e034\\"; } }\\n.glyphicon-headphones { &:before { content: \\"\\\\e035\\"; } }\\n.glyphicon-volume-off { &:before { content: \\"\\\\e036\\"; } }\\n.glyphicon-volume-down { &:before { content: \\"\\\\e037\\"; } }\\n.glyphicon-volume-up { &:before { content: \\"\\\\e038\\"; } }\\n.glyphicon-qrcode { &:before { content: \\"\\\\e039\\"; } }\\n.glyphicon-barcode { &:before { content: \\"\\\\e040\\"; } }\\n.glyphicon-tag { &:before { content: \\"\\\\e041\\"; } }\\n.glyphicon-tags { &:before { content: \\"\\\\e042\\"; } }\\n.glyphicon-book { &:before { content: \\"\\\\e043\\"; } }\\n.glyphicon-bookmark { &:before { content: \\"\\\\e044\\"; } }\\n.glyphicon-print { &:before { content: \\"\\\\e045\\"; } }\\n.glyphicon-camera { &:before { content: \\"\\\\e046\\"; } }\\n.glyphicon-font { &:before { content: \\"\\\\e047\\"; } }\\n.glyphicon-bold { &:before { content: \\"\\\\e048\\"; } }\\n.glyphicon-italic { &:before { content: \\"\\\\e049\\"; } }\\n.glyphicon-text-height { &:before { content: \\"\\\\e050\\"; } }\\n.glyphicon-text-width { &:before { content: \\"\\\\e051\\"; } }\\n.glyphicon-align-left { &:before { content: \\"\\\\e052\\"; } }\\n.glyphicon-align-center { &:before { content: \\"\\\\e053\\"; } }\\n.glyphicon-align-right { &:before { content: \\"\\\\e054\\"; } }\\n.glyphicon-align-justify { &:before { content: \\"\\\\e055\\"; } }\\n.glyphicon-list { &:before { content: \\"\\\\e056\\"; } }\\n.glyphicon-indent-left { &:before { content: \\"\\\\e057\\"; } }\\n.glyphicon-indent-right { &:before { content: \\"\\\\e058\\"; } }\\n.glyphicon-facetime-video { &:before { content: \\"\\\\e059\\"; } }\\n.glyphicon-picture { &:before { content: \\"\\\\e060\\"; } }\\n.glyphicon-map-marker { &:before { content: \\"\\\\e062\\"; } }\\n.glyphicon-adjust { &:before { content: \\"\\\\e063\\"; } }\\n.glyphicon-tint { &:before { content: \\"\\\\e064\\"; } }\\n.glyphicon-edit { &:before { content: \\"\\\\e065\\"; } }\\n.glyphicon-share { &:before { content: \\"\\\\e066\\"; } }\\n.glyphicon-check { &:before { content: \\"\\\\e067\\"; } }\\n.glyphicon-move { &:before { content: \\"\\\\e068\\"; } }\\n.glyphicon-step-backward { &:before { content: \\"\\\\e069\\"; } }\\n.glyphicon-fast-backward { &:before { content: \\"\\\\e070\\"; } }\\n.glyphicon-backward { &:before { content: \\"\\\\e071\\"; } }\\n.glyphicon-play { &:before { content: \\"\\\\e072\\"; } }\\n.glyphicon-pause { &:before { content: \\"\\\\e073\\"; } }\\n.glyphicon-stop { &:before { content: \\"\\\\e074\\"; } }\\n.glyphicon-forward { &:before { content: \\"\\\\e075\\"; } }\\n.glyphicon-fast-forward { &:before { content: \\"\\\\e076\\"; } }\\n.glyphicon-step-forward { &:before { content: \\"\\\\e077\\"; } }\\n.glyphicon-eject { &:before { content: \\"\\\\e078\\"; } }\\n.glyphicon-chevron-left { &:before { content: \\"\\\\e079\\"; } }\\n.glyphicon-chevron-right { &:before { content: \\"\\\\e080\\"; } }\\n.glyphicon-plus-sign { &:before { content: \\"\\\\e081\\"; } }\\n.glyphicon-minus-sign { &:before { content: \\"\\\\e082\\"; } }\\n.glyphicon-remove-sign { &:before { content: \\"\\\\e083\\"; } }\\n.glyphicon-ok-sign { &:before { content: \\"\\\\e084\\"; } }\\n.glyphicon-question-sign { &:before { content: \\"\\\\e085\\"; } }\\n.glyphicon-info-sign { &:before { content: \\"\\\\e086\\"; } }\\n.glyphicon-screenshot { &:before { content: \\"\\\\e087\\"; } }\\n.glyphicon-remove-circle { &:before { content: \\"\\\\e088\\"; } }\\n.glyphicon-ok-circle { &:before { content: \\"\\\\e089\\"; } }\\n.glyphicon-ban-circle { &:before { content: \\"\\\\e090\\"; } }\\n.glyphicon-arrow-left { &:before { content: \\"\\\\e091\\"; } }\\n.glyphicon-arrow-right { &:before { content: \\"\\\\e092\\"; } }\\n.glyphicon-arrow-up { &:before { content: \\"\\\\e093\\"; } }\\n.glyphicon-arrow-down { &:before { content: \\"\\\\e094\\"; } }\\n.glyphicon-share-alt { &:before { content: \\"\\\\e095\\"; } }\\n.glyphicon-resize-full { &:before { content: \\"\\\\e096\\"; } }\\n.glyphicon-resize-small { &:before { content: \\"\\\\e097\\"; } }\\n.glyphicon-exclamation-sign { &:before { content: \\"\\\\e101\\"; } }\\n.glyphicon-gift { &:before { content: \\"\\\\e102\\"; } }\\n.glyphicon-leaf { &:before { content: \\"\\\\e103\\"; } }\\n.glyphicon-fire { &:before { content: \\"\\\\e104\\"; } }\\n.glyphicon-eye-open { &:before { content: \\"\\\\e105\\"; } }\\n.glyphicon-eye-close { &:before { content: \\"\\\\e106\\"; } }\\n.glyphicon-warning-sign { &:before { content: \\"\\\\e107\\"; } }\\n.glyphicon-plane { &:before { content: \\"\\\\e108\\"; } }\\n.glyphicon-calendar { &:before { content: \\"\\\\e109\\"; } }\\n.glyphicon-random { &:before { content: \\"\\\\e110\\"; } }\\n.glyphicon-comment { &:before { content: \\"\\\\e111\\"; } }\\n.glyphicon-magnet { &:before { content: \\"\\\\e112\\"; } }\\n.glyphicon-chevron-up { &:before { content: \\"\\\\e113\\"; } }\\n.glyphicon-chevron-down { &:before { content: \\"\\\\e114\\"; } }\\n.glyphicon-retweet { &:before { content: \\"\\\\e115\\"; } }\\n.glyphicon-shopping-cart { &:before { content: \\"\\\\e116\\"; } }\\n.glyphicon-folder-close { &:before { content: \\"\\\\e117\\"; } }\\n.glyphicon-folder-open { &:before { content: \\"\\\\e118\\"; } }\\n.glyphicon-resize-vertical { &:before { content: \\"\\\\e119\\"; } }\\n.glyphicon-resize-horizontal { &:before { content: \\"\\\\e120\\"; } }\\n.glyphicon-hdd { &:before { content: \\"\\\\e121\\"; } }\\n.glyphicon-bullhorn { &:before { content: \\"\\\\e122\\"; } }\\n.glyphicon-bell { &:before { content: \\"\\\\e123\\"; } }\\n.glyphicon-certificate { &:before { content: \\"\\\\e124\\"; } }\\n.glyphicon-thumbs-up { &:before { content: \\"\\\\e125\\"; } }\\n.glyphicon-thumbs-down { &:before { content: \\"\\\\e126\\"; } }\\n.glyphicon-hand-right { &:before { content: \\"\\\\e127\\"; } }\\n.glyphicon-hand-left { &:before { content: \\"\\\\e128\\"; } }\\n.glyphicon-hand-up { &:before { content: \\"\\\\e129\\"; } }\\n.glyphicon-hand-down { &:before { content: \\"\\\\e130\\"; } }\\n.glyphicon-circle-arrow-right { &:before { content: \\"\\\\e131\\"; } }\\n.glyphicon-circle-arrow-left { &:before { content: \\"\\\\e132\\"; } }\\n.glyphicon-circle-arrow-up { &:before { content: \\"\\\\e133\\"; } }\\n.glyphicon-circle-arrow-down { &:before { content: \\"\\\\e134\\"; } }\\n.glyphicon-globe { &:before { content: \\"\\\\e135\\"; } }\\n.glyphicon-wrench { &:before { content: \\"\\\\e136\\"; } }\\n.glyphicon-tasks { &:before { content: \\"\\\\e137\\"; } }\\n.glyphicon-filter { &:before { content: \\"\\\\e138\\"; } }\\n.glyphicon-briefcase { &:before { content: \\"\\\\e139\\"; } }\\n.glyphicon-fullscreen { &:before { content: \\"\\\\e140\\"; } }\\n.glyphicon-dashboard { &:before { content: \\"\\\\e141\\"; } }\\n.glyphicon-paperclip { &:before { content: \\"\\\\e142\\"; } }\\n.glyphicon-heart-empty { &:before { content: \\"\\\\e143\\"; } }\\n.glyphicon-link { &:before { content: \\"\\\\e144\\"; } }\\n.glyphicon-phone { &:before { content: \\"\\\\e145\\"; } }\\n.glyphicon-pushpin { &:before { content: \\"\\\\e146\\"; } }\\n.glyphicon-usd { &:before { content: \\"\\\\e148\\"; } }\\n.glyphicon-gbp { &:before { content: \\"\\\\e149\\"; } }\\n.glyphicon-sort { &:before { content: \\"\\\\e150\\"; } }\\n.glyphicon-sort-by-alphabet { &:before { content: \\"\\\\e151\\"; } }\\n.glyphicon-sort-by-alphabet-alt { &:before { content: \\"\\\\e152\\"; } }\\n.glyphicon-sort-by-order { &:before { content: \\"\\\\e153\\"; } }\\n.glyphicon-sort-by-order-alt { &:before { content: \\"\\\\e154\\"; } }\\n.glyphicon-sort-by-attributes { &:before { content: \\"\\\\e155\\"; } }\\n.glyphicon-sort-by-attributes-alt { &:before { content: \\"\\\\e156\\"; } }\\n.glyphicon-unchecked { &:before { content: \\"\\\\e157\\"; } }\\n.glyphicon-expand { &:before { content: \\"\\\\e158\\"; } }\\n.glyphicon-collapse-down { &:before { content: \\"\\\\e159\\"; } }\\n.glyphicon-collapse-up { &:before { content: \\"\\\\e160\\"; } }\\n.glyphicon-log-in { &:before { content: \\"\\\\e161\\"; } }\\n.glyphicon-flash { &:before { content: \\"\\\\e162\\"; } }\\n.glyphicon-log-out { &:before { content: \\"\\\\e163\\"; } }\\n.glyphicon-new-window { &:before { content: \\"\\\\e164\\"; } }\\n.glyphicon-record { &:before { content: \\"\\\\e165\\"; } }\\n.glyphicon-save { &:before { content: \\"\\\\e166\\"; } }\\n.glyphicon-open { &:before { content: \\"\\\\e167\\"; } }\\n.glyphicon-saved { &:before { content: \\"\\\\e168\\"; } }\\n.glyphicon-import { &:before { content: \\"\\\\e169\\"; } }\\n.glyphicon-export { &:before { content: \\"\\\\e170\\"; } }\\n.glyphicon-send { &:before { content: \\"\\\\e171\\"; } }\\n.glyphicon-floppy-disk { &:before { content: \\"\\\\e172\\"; } }\\n.glyphicon-floppy-saved { &:before { content: \\"\\\\e173\\"; } }\\n.glyphicon-floppy-remove { &:before { content: \\"\\\\e174\\"; } }\\n.glyphicon-floppy-save { &:before { content: \\"\\\\e175\\"; } }\\n.glyphicon-floppy-open { &:before { content: \\"\\\\e176\\"; } }\\n.glyphicon-credit-card { &:before { content: \\"\\\\e177\\"; } }\\n.glyphicon-transfer { &:before { content: \\"\\\\e178\\"; } }\\n.glyphicon-cutlery { &:before { content: \\"\\\\e179\\"; } }\\n.glyphicon-header { &:before { content: \\"\\\\e180\\"; } }\\n.glyphicon-compressed { &:before { content: \\"\\\\e181\\"; } }\\n.glyphicon-earphone { &:before { content: \\"\\\\e182\\"; } }\\n.glyphicon-phone-alt { &:before { content: \\"\\\\e183\\"; } }\\n.glyphicon-tower { &:before { content: \\"\\\\e184\\"; } }\\n.glyphicon-stats { &:before { content: \\"\\\\e185\\"; } }\\n.glyphicon-sd-video { &:before { content: \\"\\\\e186\\"; } }\\n.glyphicon-hd-video { &:before { content: \\"\\\\e187\\"; } }\\n.glyphicon-subtitles { &:before { content: \\"\\\\e188\\"; } }\\n.glyphicon-sound-stereo { &:before { content: \\"\\\\e189\\"; } }\\n.glyphicon-sound-dolby { &:before { content: \\"\\\\e190\\"; } }\\n.glyphicon-sound-5-1 { &:before { content: \\"\\\\e191\\"; } }\\n.glyphicon-sound-6-1 { &:before { content: \\"\\\\e192\\"; } }\\n.glyphicon-sound-7-1 { &:before { content: \\"\\\\e193\\"; } }\\n.glyphicon-copyright-mark { &:before { content: \\"\\\\e194\\"; } }\\n.glyphicon-registration-mark { &:before { content: \\"\\\\e195\\"; } }\\n.glyphicon-cloud-download { &:before { content: \\"\\\\e197\\"; } }\\n.glyphicon-cloud-upload { &:before { content: \\"\\\\e198\\"; } }\\n.glyphicon-tree-conifer { &:before { content: \\"\\\\e199\\"; } }\\n.glyphicon-tree-deciduous { &:before { content: \\"\\\\e200\\"; } }\\n.glyphicon-cd { &:before { content: \\"\\\\e201\\"; } }\\n.glyphicon-save-file { &:before { content: \\"\\\\e202\\"; } }\\n.glyphicon-open-file { &:before { content: \\"\\\\e203\\"; } }\\n.glyphicon-level-up { &:before { content: \\"\\\\e204\\"; } }\\n.glyphicon-copy { &:before { content: \\"\\\\e205\\"; } }\\n.glyphicon-paste { &:before { content: \\"\\\\e206\\"; } }\\n// The following 2 Glyphicons are omitted for the time being because\\n// they currently use Unicode codepoints that are outside the\\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can\'t handle\\n// non-BMP codepoints in CSS string escapes, and thus can\'t display these two icons.\\n// Notably, the bug affects some older versions of the Android Browser.\\n// More info: https://github.com/twbs/bootstrap/issues/10106\\n// .glyphicon-door { &:before { content: \\"\\\\1f6aa\\"; } }\\n// .glyphicon-key { &:before { content: \\"\\\\1f511\\"; } }\\n.glyphicon-alert { &:before { content: \\"\\\\e209\\"; } }\\n.glyphicon-equalizer { &:before { content: \\"\\\\e210\\"; } }\\n.glyphicon-king { &:before { content: \\"\\\\e211\\"; } }\\n.glyphicon-queen { &:before { content: \\"\\\\e212\\"; } }\\n.glyphicon-pawn { &:before { content: \\"\\\\e213\\"; } }\\n.glyphicon-bishop { &:before { content: \\"\\\\e214\\"; } }\\n.glyphicon-knight { &:before { content: \\"\\\\e215\\"; } }\\n.glyphicon-baby-formula { &:before { content: \\"\\\\e216\\"; } }\\n.glyphicon-tent { &:before { content: \\"\\\\26fa\\"; } }\\n.glyphicon-blackboard { &:before { content: \\"\\\\e218\\"; } }\\n.glyphicon-bed { &:before { content: \\"\\\\e219\\"; } }\\n.glyphicon-apple { &:before { content: \\"\\\\f8ff\\"; } }\\n.glyphicon-erase { &:before { content: \\"\\\\e221\\"; } }\\n.glyphicon-hourglass { &:before { content: \\"\\\\231b\\"; } }\\n.glyphicon-lamp { &:before { content: \\"\\\\e223\\"; } }\\n.glyphicon-duplicate { &:before { content: \\"\\\\e224\\"; } }\\n.glyphicon-piggy-bank { &:before { content: \\"\\\\e225\\"; } }\\n.glyphicon-scissors { &:before { content: \\"\\\\e226\\"; } }\\n.glyphicon-bitcoin { &:before { content: \\"\\\\e227\\"; } }\\n.glyphicon-btc { &:before { content: \\"\\\\e227\\"; } }\\n.glyphicon-xbt { &:before { content: \\"\\\\e227\\"; } }\\n.glyphicon-yen { &:before { content: \\"\\\\00a5\\"; } }\\n.glyphicon-jpy { &:before { content: \\"\\\\00a5\\"; } }\\n.glyphicon-ruble { &:before { content: \\"\\\\20bd\\"; } }\\n.glyphicon-rub { &:before { content: \\"\\\\20bd\\"; } }\\n.glyphicon-scale { &:before { content: \\"\\\\e230\\"; } }\\n.glyphicon-ice-lolly { &:before { content: \\"\\\\e231\\"; } }\\n.glyphicon-ice-lolly-tasted { &:before { content: \\"\\\\e232\\"; } }\\n.glyphicon-education { &:before { content: \\"\\\\e233\\"; } }\\n.glyphicon-option-horizontal { &:before { content: \\"\\\\e234\\"; } }\\n.glyphicon-option-vertical { &:before { content: \\"\\\\e235\\"; } }\\n.glyphicon-menu-hamburger { &:before { content: \\"\\\\e236\\"; } }\\n.glyphicon-modal-window { &:before { content: \\"\\\\e237\\"; } }\\n.glyphicon-oil { &:before { content: \\"\\\\e238\\"; } }\\n.glyphicon-grain { &:before { content: \\"\\\\e239\\"; } }\\n.glyphicon-sunglasses { &:before { content: \\"\\\\e240\\"; } }\\n.glyphicon-text-size { &:before { content: \\"\\\\e241\\"; } }\\n.glyphicon-text-color { &:before { content: \\"\\\\e242\\"; } }\\n.glyphicon-text-background { &:before { content: \\"\\\\e243\\"; } }\\n.glyphicon-object-align-top { &:before { content: \\"\\\\e244\\"; } }\\n.glyphicon-object-align-bottom { &:before { content: \\"\\\\e245\\"; } }\\n.glyphicon-object-align-horizontal{ &:before { content: \\"\\\\e246\\"; } }\\n.glyphicon-object-align-left { &:before { content: \\"\\\\e247\\"; } }\\n.glyphicon-object-align-vertical { &:before { content: \\"\\\\e248\\"; } }\\n.glyphicon-object-align-right { &:before { content: \\"\\\\e249\\"; } }\\n.glyphicon-triangle-right { &:before { content: \\"\\\\e250\\"; } }\\n.glyphicon-triangle-left { &:before { content: \\"\\\\e251\\"; } }\\n.glyphicon-triangle-bottom { &:before { content: \\"\\\\e252\\"; } }\\n.glyphicon-triangle-top { &:before { content: \\"\\\\e253\\"; } }\\n.glyphicon-console { &:before { content: \\"\\\\e254\\"; } }\\n.glyphicon-superscript { &:before { content: \\"\\\\e255\\"; } }\\n.glyphicon-subscript { &:before { content: \\"\\\\e256\\"; } }\\n.glyphicon-menu-left { &:before { content: \\"\\\\e257\\"; } }\\n.glyphicon-menu-right { &:before { content: \\"\\\\e258\\"; } }\\n.glyphicon-menu-down { &:before { content: \\"\\\\e259\\"; } }\\n.glyphicon-menu-up { &:before { content: \\"\\\\e260\\"; } }\\n","//\\n// Modals\\n// --------------------------------------------------\\n\\n// .modal-open - body class for killing the scroll\\n// .modal - container to scroll within\\n// .modal-dialog - positioning shell for the actual modal\\n// .modal-content - actual modal w/ bg and corners and shit\\n\\n// Kill the scroll on the body\\n.modal-open {\\n overflow: hidden;\\n}\\n\\n// Container that the modal scrolls within\\n.modal {\\n display: none;\\n overflow: hidden;\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: @zindex-modal;\\n -webkit-overflow-scrolling: touch;\\n\\n // Prevent Chrome on Windows from adding a focus outline. For details, see\\n // https://github.com/twbs/bootstrap/pull/10951.\\n outline: 0;\\n\\n // When fading in the modal, animate it to slide down\\n &.fade .modal-dialog {\\n .translate(0, -25%);\\n .transition-transform(~\\"0.3s ease-out\\");\\n }\\n &.in .modal-dialog { .translate(0, 0) }\\n}\\n.modal-open .modal {\\n overflow-x: hidden;\\n overflow-y: auto;\\n}\\n\\n// Shell div to position the modal with bottom padding\\n.modal-dialog {\\n position: relative;\\n width: auto;\\n margin: 10px;\\n}\\n\\n// Actual modal\\n.modal-content {\\n position: relative;\\n background-color: @modal-content-bg;\\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\\n border: 1px solid @modal-content-border-color;\\n border-radius: @border-radius-large;\\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\\n background-clip: padding-box;\\n // Remove focus outline from opened modal\\n outline: 0;\\n}\\n\\n// Modal background\\n.modal-backdrop {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: @zindex-modal-background;\\n background-color: @modal-backdrop-bg;\\n // Fade for backdrop\\n &.fade { .opacity(0); }\\n &.in { .opacity(@modal-backdrop-opacity); }\\n}\\n\\n// Modal header\\n// Top section of the modal w/ title and dismiss\\n.modal-header {\\n padding: @modal-title-padding;\\n border-bottom: 1px solid @modal-header-border-color;\\n &:extend(.clearfix all);\\n}\\n// Close icon\\n.modal-header .close {\\n margin-top: -2px;\\n}\\n\\n// Title text within header\\n.modal-title {\\n margin: 0;\\n line-height: @modal-title-line-height;\\n}\\n\\n// Modal body\\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\\n.modal-body {\\n position: relative;\\n padding: @modal-inner-padding;\\n}\\n\\n// Footer (for actions)\\n.modal-footer {\\n padding: @modal-inner-padding;\\n text-align: right; // right align buttons\\n border-top: 1px solid @modal-footer-border-color;\\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\\n\\n // Properly space out buttons\\n .btn + .btn {\\n margin-left: 5px;\\n margin-bottom: 0; // account for input[type=\\"submit\\"] which gets the bottom margin like all other inputs\\n }\\n // but override that for button groups\\n .btn-group .btn + .btn {\\n margin-left: -1px;\\n }\\n // and override it for block buttons as well\\n .btn-block + .btn-block {\\n margin-left: 0;\\n }\\n}\\n\\n// Measure scrollbar width for padding body during modal show/hide\\n.modal-scrollbar-measure {\\n position: absolute;\\n top: -9999px;\\n width: 50px;\\n height: 50px;\\n overflow: scroll;\\n}\\n\\n// Scale up the modal\\n@media (min-width: @screen-sm-min) {\\n // Automatically set modal\'s width for larger viewports\\n .modal-dialog {\\n width: @modal-md;\\n margin: 30px auto;\\n }\\n .modal-content {\\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\\n }\\n\\n // Modal sizes\\n .modal-sm { width: @modal-sm; }\\n}\\n\\n@media (min-width: @screen-md-min) {\\n .modal-lg { width: @modal-lg; }\\n}\\n","@import \\"@{bowerPath}/bootstrap/less/variables.less\\";\\n@icon-font-path: \\"@{bowerPath}/bootstrap/dist/fonts/\\";\\n@import \\"@{bowerPath}/bootstrap/less/mixins.less\\";\\n@import \\"@{bowerPath}/bootstrap/less/glyphicons.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/modals.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/buttons.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/button-groups.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/progress-bars.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/close.less\\";\\n\\n\\n/* buttons */\\n.plone-btn{ .btn() }\\n.plone-btn-lg{ .btn-lg() }\\n.plone-btn-xs{ .btn-xs() }\\n.plone-btn-sm{ .btn-xs() }\\n\\n.plone-btn-primary{ .btn-primary() }\\n.plone-btn-warning{ .btn-warning() }\\n.plone-btn-default{ .btn-default() }\\n.plone-btn-success{ .btn-success() }\\n.plone-btn-info{ .btn-info() }\\n.plone-btn-danger{ .btn-danger() }\\n.plone-btn-link{ .btn-link() }\\n\\n.plone-btn-group {\\n .plone-btn + .plone-btn,\\n .plone-btn + .plone-btn-group,\\n .plone-btn-group + .plone-btn,\\n .plone-btn-group + .plone-btn-group {\\n margin-left: -1px;\\n }\\n}\\n\\n.plone-btn-block { .btn-block() }\\n\\n.plone-close { .close() }\\n\\n\\n/* modals */\\n.plone-modal{ .modal() }\\n.plone-modal-header{ .modal-header() }\\n.plone-modal-title{ .modal-title() }\\n.plone-modal-body{ .modal-body() }\\n.plone-modal-footer{ .modal-footer() }\\n.plone-modal-backdrop{ .modal-backdrop() }\\n\\n\\n/* progress */\\n.plone-progress{ .progress() }\\n.plone-progress-bar-striped{ .progress-bar-striped() }\\n.plone-progress-bar{ .progress-bar() }\\n\\n/* rotate transforms */\\n.rright {\\n /* right-rotate by 90\xc2\xb0 */\\n -ms-transform: rotate(90deg); /* IE 9 */\\n -webkit-transform: rotate(90deg); /* iOS, Android */\\n transform: rotate(90deg);\\n}\\n.rleft {\\n /* left-rotate by 90\xc2\xb0 */\\n -ms-transform: rotate(-90deg); /* IE 9 */\\n -webkit-transform: rotate(-90deg); /* iOS, Android */\\n transform: rotate(-90deg);\\n}\\n","//\\n// Buttons\\n// --------------------------------------------------\\n\\n\\n// Base styles\\n// --------------------------------------------------\\n\\n.btn {\\n display: inline-block;\\n margin-bottom: 0; // For input.btn\\n font-weight: @btn-font-weight;\\n text-align: center;\\n vertical-align: middle;\\n touch-action: manipulation;\\n cursor: pointer;\\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\\n border: 1px solid transparent;\\n white-space: nowrap;\\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\\n .user-select(none);\\n\\n &,\\n &:active,\\n &.active {\\n &:focus,\\n &.focus {\\n .tab-focus();\\n }\\n }\\n\\n &:hover,\\n &:focus,\\n &.focus {\\n color: @btn-default-color;\\n text-decoration: none;\\n }\\n\\n &:active,\\n &.active {\\n outline: 0;\\n background-image: none;\\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\\n }\\n\\n &.disabled,\\n &[disabled],\\n fieldset[disabled] & {\\n cursor: @cursor-disabled;\\n .opacity(.65);\\n .box-shadow(none);\\n }\\n\\n a& {\\n &.disabled,\\n fieldset[disabled] & {\\n pointer-events: none; // Future-proof disabling of clicks on `` elements\\n }\\n }\\n}\\n\\n\\n// Alternate buttons\\n// --------------------------------------------------\\n\\n.btn-default {\\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\\n}\\n.btn-primary {\\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\\n}\\n// Success appears as green\\n.btn-success {\\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\\n}\\n// Info appears as blue-green\\n.btn-info {\\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\\n}\\n// Warning appears as orange\\n.btn-warning {\\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\\n}\\n// Danger and error appear as red\\n.btn-danger {\\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\\n}\\n\\n\\n// Link buttons\\n// -------------------------\\n\\n// Make a button look and behave like a link\\n.btn-link {\\n color: @link-color;\\n font-weight: normal;\\n border-radius: 0;\\n\\n &,\\n &:active,\\n &.active,\\n &[disabled],\\n fieldset[disabled] & {\\n background-color: transparent;\\n .box-shadow(none);\\n }\\n &,\\n &:hover,\\n &:focus,\\n &:active {\\n border-color: transparent;\\n }\\n &:hover,\\n &:focus {\\n color: @link-hover-color;\\n text-decoration: @link-hover-decoration;\\n background-color: transparent;\\n }\\n &[disabled],\\n fieldset[disabled] & {\\n &:hover,\\n &:focus {\\n color: @btn-link-disabled-color;\\n text-decoration: none;\\n }\\n }\\n}\\n\\n\\n// Button Sizes\\n// --------------------------------------------------\\n\\n.btn-lg {\\n // line-height: ensure even-numbered height of button next to large input\\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\\n}\\n.btn-sm {\\n // line-height: ensure proper height of button next to small input\\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\\n}\\n.btn-xs {\\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\\n}\\n\\n\\n// Block button\\n// --------------------------------------------------\\n\\n.btn-block {\\n display: block;\\n width: 100%;\\n}\\n\\n// Vertically space out multiple block buttons\\n.btn-block + .btn-block {\\n margin-top: 5px;\\n}\\n\\n// Specificity overrides\\ninput[type=\\"submit\\"],\\ninput[type=\\"reset\\"],\\ninput[type=\\"button\\"] {\\n &.btn-block {\\n width: 100%;\\n }\\n}\\n","//\\n// Close icons\\n// --------------------------------------------------\\n\\n\\n.close {\\n float: right;\\n font-size: (@font-size-base * 1.5);\\n font-weight: @close-font-weight;\\n line-height: 1;\\n color: @close-color;\\n text-shadow: @close-text-shadow;\\n .opacity(.2);\\n\\n &:hover,\\n &:focus {\\n color: @close-color;\\n text-decoration: none;\\n cursor: pointer;\\n .opacity(.5);\\n }\\n\\n // Additional properties for button version\\n // iOS requires the button element instead of an anchor tag.\\n // If you want the anchor version, it requires `href=\\"#\\"`.\\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\\n button& {\\n padding: 0;\\n cursor: pointer;\\n background: transparent;\\n border: 0;\\n -webkit-appearance: none;\\n }\\n}\\n","//\\n// Progress bars\\n// --------------------------------------------------\\n\\n\\n// Bar animations\\n// -------------------------\\n\\n// WebKit\\n@-webkit-keyframes progress-bar-stripes {\\n from { background-position: 40px 0; }\\n to { background-position: 0 0; }\\n}\\n\\n// Spec and IE10+\\n@keyframes progress-bar-stripes {\\n from { background-position: 40px 0; }\\n to { background-position: 0 0; }\\n}\\n\\n\\n// Bar itself\\n// -------------------------\\n\\n// Outer container\\n.progress {\\n overflow: hidden;\\n height: @line-height-computed;\\n margin-bottom: @line-height-computed;\\n background-color: @progress-bg;\\n border-radius: @progress-border-radius;\\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\\n}\\n\\n// Bar of progress\\n.progress-bar {\\n float: left;\\n width: 0%;\\n height: 100%;\\n font-size: @font-size-small;\\n line-height: @line-height-computed;\\n color: @progress-bar-color;\\n text-align: center;\\n background-color: @progress-bar-bg;\\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\\n .transition(width .6s ease);\\n}\\n\\n// Striped bars\\n//\\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\\n// `.progress-bar-striped` class, which you just add to an existing\\n// `.progress-bar`.\\n.progress-striped .progress-bar,\\n.progress-bar-striped {\\n #gradient > .striped();\\n background-size: 40px 40px;\\n}\\n\\n// Call animation for the active one\\n//\\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\\n// `.progress-bar.active` approach.\\n.progress.active .progress-bar,\\n.progress-bar.active {\\n .animation(progress-bar-stripes 2s linear infinite);\\n}\\n\\n\\n// Variations\\n// -------------------------\\n\\n.progress-bar-success {\\n .progress-bar-variant(@progress-bar-success-bg);\\n}\\n\\n.progress-bar-info {\\n .progress-bar-variant(@progress-bar-info-bg);\\n}\\n\\n.progress-bar-warning {\\n .progress-bar-variant(@progress-bar-warning-bg);\\n}\\n\\n.progress-bar-danger {\\n .progress-bar-variant(@progress-bar-danger-bg);\\n}\\n","// Gradients\\n\\n#gradient {\\n\\n // Horizontal gradient, from left to right\\n //\\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\\n // Color stops are not available in IE9 and below.\\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\\n background-repeat: repeat-x;\\n filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=1)\\",argb(@start-color),argb(@end-color))); // IE9 and down\\n }\\n\\n // Vertical gradient, from top to bottom\\n //\\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\\n // Color stops are not available in IE9 and below.\\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\\n background-repeat: repeat-x;\\n filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=0)\\",argb(@start-color),argb(@end-color))); // IE9 and down\\n }\\n\\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\\n background-repeat: repeat-x;\\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\\n }\\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\\n background-repeat: no-repeat;\\n filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=1)\\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\\n }\\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\\n background-repeat: no-repeat;\\n filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=0)\\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\\n }\\n .radial(@inner-color: #555; @outer-color: #333) {\\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\\n background-image: radial-gradient(circle, @inner-color, @outer-color);\\n background-repeat: no-repeat;\\n }\\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\\n }\\n}\\n","@import \\"@{bowerPath}/bootstrap/less/variables.less\\";\\n@import \\"@{bowerPath}/bootstrap/less/mixins.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/tooltip.less\\";\\n\\n.mockup-tooltip {\\n &.tooltip:extend(.tooltip all){}\\n .tooltip-arrow:extend(.tooltip-arrow all){}\\n .tooltip-inner:extend(.tooltip-inner all){}\\n}\\n","//\\n// Tooltips\\n// --------------------------------------------------\\n\\n\\n// Base class\\n.tooltip {\\n position: absolute;\\n z-index: @zindex-tooltip;\\n display: block;\\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\\n // So reset our font and text properties to avoid inheriting weird values.\\n .reset-text();\\n font-size: @font-size-small;\\n\\n .opacity(0);\\n\\n &.in { .opacity(@tooltip-opacity); }\\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\\n}\\n\\n// Wrapper for the tooltip content\\n.tooltip-inner {\\n max-width: @tooltip-max-width;\\n padding: 3px 8px;\\n color: @tooltip-color;\\n text-align: center;\\n background-color: @tooltip-bg;\\n border-radius: @border-radius-base;\\n}\\n\\n// Arrows\\n.tooltip-arrow {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-color: transparent;\\n border-style: solid;\\n}\\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\\n.tooltip {\\n &.top .tooltip-arrow {\\n bottom: 0;\\n left: 50%;\\n margin-left: -@tooltip-arrow-width;\\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\\n border-top-color: @tooltip-arrow-color;\\n }\\n &.top-left .tooltip-arrow {\\n bottom: 0;\\n right: @tooltip-arrow-width;\\n margin-bottom: -@tooltip-arrow-width;\\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\\n border-top-color: @tooltip-arrow-color;\\n }\\n &.top-right .tooltip-arrow {\\n bottom: 0;\\n left: @tooltip-arrow-width;\\n margin-bottom: -@tooltip-arrow-width;\\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\\n border-top-color: @tooltip-arrow-color;\\n }\\n &.right .tooltip-arrow {\\n top: 50%;\\n left: 0;\\n margin-top: -@tooltip-arrow-width;\\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\\n border-right-color: @tooltip-arrow-color;\\n }\\n &.left .tooltip-arrow {\\n top: 50%;\\n right: 0;\\n margin-top: -@tooltip-arrow-width;\\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\\n border-left-color: @tooltip-arrow-color;\\n }\\n &.bottom .tooltip-arrow {\\n top: 0;\\n left: 50%;\\n margin-left: -@tooltip-arrow-width;\\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\\n border-bottom-color: @tooltip-arrow-color;\\n }\\n &.bottom-left .tooltip-arrow {\\n top: 0;\\n right: @tooltip-arrow-width;\\n margin-top: -@tooltip-arrow-width;\\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\\n border-bottom-color: @tooltip-arrow-color;\\n }\\n &.bottom-right .tooltip-arrow {\\n top: 0;\\n left: @tooltip-arrow-width;\\n margin-top: -@tooltip-arrow-width;\\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\\n border-bottom-color: @tooltip-arrow-color;\\n }\\n}\\n",".reset-text() {\\n font-family: @font-family-base;\\n // We deliberately do NOT reset font-size.\\n font-style: normal;\\n font-weight: normal;\\n letter-spacing: normal;\\n line-break: auto;\\n line-height: @line-height-base;\\n text-align: left; // Fallback for where `start` is not supported\\n text-align: start;\\n text-decoration: none;\\n text-shadow: none;\\n text-transform: none;\\n white-space: normal;\\n word-break: normal;\\n word-spacing: normal;\\n word-wrap: normal;\\n}\\n","//\\n// Variables\\n// --------------------------------------------------\\n\\n\\n//== Colors\\n//\\n//## Gray and brand colors for use across Bootstrap.\\n\\n@gray-base: #000;\\n@gray-darker: lighten(@gray-base, 13.5%); // #222\\n@gray-dark: lighten(@gray-base, 20%); // #333\\n@gray: lighten(@gray-base, 33.5%); // #555\\n@gray-light: lighten(@gray-base, 46.7%); // #777\\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\\n\\n@brand-primary: darken(#428bca, 6.5%); // #337ab7\\n@brand-success: #5cb85c;\\n@brand-info: #5bc0de;\\n@brand-warning: #f0ad4e;\\n@brand-danger: #d9534f;\\n\\n\\n//== Scaffolding\\n//\\n//## Settings for some of the most global styles.\\n\\n//** Background color for ``.\\n@body-bg: #fff;\\n//** Global text color on ``.\\n@text-color: @gray-dark;\\n\\n//** Global textual link color.\\n@link-color: @brand-primary;\\n//** Link hover color set via `darken()` function.\\n@link-hover-color: darken(@link-color, 15%);\\n//** Link hover decoration.\\n@link-hover-decoration: underline;\\n\\n\\n//== Typography\\n//\\n//## Font, line-height, and color for body text, headings, and more.\\n\\n@font-family-sans-serif: \\"Helvetica Neue\\", Helvetica, Arial, sans-serif;\\n@font-family-serif: Georgia, \\"Times New Roman\\", Times, serif;\\n//** Default monospace fonts for ``, ``, and `
`.\\n@font-family-monospace:   Menlo, Monaco, Consolas, \\"Courier New\\", monospace;\\n@font-family-base:        @font-family-sans-serif;\\n\\n@font-size-base:          14px;\\n@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px\\n@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px\\n\\n@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px\\n@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px\\n@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px\\n@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px\\n@font-size-h5:            @font-size-base;\\n@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px\\n\\n//** Unit-less `line-height` for use in components like buttons.\\n@line-height-base:        1.428571429; // 20/14\\n//** Computed \\"line-height\\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\\n@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px\\n\\n//** By default, this inherits from the ``.\\n@headings-font-family:    inherit;\\n@headings-font-weight:    500;\\n@headings-line-height:    1.1;\\n@headings-color:          inherit;\\n\\n\\n//== Iconography\\n//\\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\\n\\n//** Load fonts from this directory.\\n@icon-font-path:          \\"../fonts/\\";\\n//** File name for all font files.\\n@icon-font-name:          \\"glyphicons-halflings-regular\\";\\n//** Element ID within SVG icon file.\\n@icon-font-svg-id:        \\"glyphicons_halflingsregular\\";\\n\\n\\n//== Components\\n//\\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\\n\\n@padding-base-vertical:     6px;\\n@padding-base-horizontal:   12px;\\n\\n@padding-large-vertical:    10px;\\n@padding-large-horizontal:  16px;\\n\\n@padding-small-vertical:    5px;\\n@padding-small-horizontal:  10px;\\n\\n@padding-xs-vertical:       1px;\\n@padding-xs-horizontal:     5px;\\n\\n@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome\\n@line-height-small:         1.5;\\n\\n@border-radius-base:        4px;\\n@border-radius-large:       6px;\\n@border-radius-small:       3px;\\n\\n//** Global color for active items (e.g., navs or dropdowns).\\n@component-active-color:    #fff;\\n//** Global background color for active items (e.g., navs or dropdowns).\\n@component-active-bg:       @brand-primary;\\n\\n//** Width of the `border` for generating carets that indicator dropdowns.\\n@caret-width-base:          4px;\\n//** Carets increase slightly in size for larger components.\\n@caret-width-large:         5px;\\n\\n\\n//== Tables\\n//\\n//## Customizes the `.table` component with basic values, each used across all table variations.\\n\\n//** Padding for ``s and ``s.\\n@table-cell-padding:            8px;\\n//** Padding for cells in `.table-condensed`.\\n@table-condensed-cell-padding:  5px;\\n\\n//** Default background color used for all tables.\\n@table-bg:                      transparent;\\n//** Background color used for `.table-striped`.\\n@table-bg-accent:               #f9f9f9;\\n//** Background color used for `.table-hover`.\\n@table-bg-hover:                #f5f5f5;\\n@table-bg-active:               @table-bg-hover;\\n\\n//** Border color for table and cell borders.\\n@table-border-color:            #ddd;\\n\\n\\n//== Buttons\\n//\\n//## For each of Bootstrap\'s buttons, define text, background and border color.\\n\\n@btn-font-weight:                normal;\\n\\n@btn-default-color:              #333;\\n@btn-default-bg:                 #fff;\\n@btn-default-border:             #ccc;\\n\\n@btn-primary-color:              #fff;\\n@btn-primary-bg:                 @brand-primary;\\n@btn-primary-border:             darken(@btn-primary-bg, 5%);\\n\\n@btn-success-color:              #fff;\\n@btn-success-bg:                 @brand-success;\\n@btn-success-border:             darken(@btn-success-bg, 5%);\\n\\n@btn-info-color:                 #fff;\\n@btn-info-bg:                    @brand-info;\\n@btn-info-border:                darken(@btn-info-bg, 5%);\\n\\n@btn-warning-color:              #fff;\\n@btn-warning-bg:                 @brand-warning;\\n@btn-warning-border:             darken(@btn-warning-bg, 5%);\\n\\n@btn-danger-color:               #fff;\\n@btn-danger-bg:                  @brand-danger;\\n@btn-danger-border:              darken(@btn-danger-bg, 5%);\\n\\n@btn-link-disabled-color:        @gray-light;\\n\\n// Allows for customizing button radius independently from global border radius\\n@btn-border-radius-base:         @border-radius-base;\\n@btn-border-radius-large:        @border-radius-large;\\n@btn-border-radius-small:        @border-radius-small;\\n\\n\\n//== Forms\\n//\\n//##\\n\\n//** `` background color\\n@input-bg:                       #fff;\\n//** `` background color\\n@input-bg-disabled:              @gray-lighter;\\n\\n//** Text color for ``s\\n@input-color:                    @gray;\\n//** `` border color\\n@input-border:                   #ccc;\\n\\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\\n//** Default `.form-control` border radius\\n// This has no effect on ``s in CSS.\\n@input-border-radius:            @border-radius-base;\\n//** Large `.form-control` border radius\\n@input-border-radius-large:      @border-radius-large;\\n//** Small `.form-control` border radius\\n@input-border-radius-small:      @border-radius-small;\\n\\n//** Border color for inputs on focus\\n@input-border-focus:             #66afe9;\\n\\n//** Placeholder text color\\n@input-color-placeholder:        #999;\\n\\n//** Default `.form-control` height\\n@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);\\n//** Large `.form-control` height\\n@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\\n//** Small `.form-control` height\\n@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\\n\\n//** `.form-group` margin\\n@form-group-margin-bottom:       15px;\\n\\n@legend-color:                   @gray-dark;\\n@legend-border-color:            #e5e5e5;\\n\\n//** Background color for textual input addons\\n@input-group-addon-bg:           @gray-lighter;\\n//** Border color for textual input addons\\n@input-group-addon-border-color: @input-border;\\n\\n//** Disabled cursor for form controls and buttons.\\n@cursor-disabled:                not-allowed;\\n\\n\\n//== Dropdowns\\n//\\n//## Dropdown menu container and contents.\\n\\n//** Background for the dropdown menu.\\n@dropdown-bg:                    #fff;\\n//** Dropdown menu `border-color`.\\n@dropdown-border:                rgba(0,0,0,.15);\\n//** Dropdown menu `border-color` **for IE8**.\\n@dropdown-fallback-border:       #ccc;\\n//** Divider color for between dropdown items.\\n@dropdown-divider-bg:            #e5e5e5;\\n\\n//** Dropdown link text color.\\n@dropdown-link-color:            @gray-dark;\\n//** Hover color for dropdown links.\\n@dropdown-link-hover-color:      darken(@gray-dark, 5%);\\n//** Hover background for dropdown links.\\n@dropdown-link-hover-bg:         #f5f5f5;\\n\\n//** Active dropdown menu item text color.\\n@dropdown-link-active-color:     @component-active-color;\\n//** Active dropdown menu item background color.\\n@dropdown-link-active-bg:        @component-active-bg;\\n\\n//** Disabled dropdown menu item background color.\\n@dropdown-link-disabled-color:   @gray-light;\\n\\n//** Text color for headers within dropdown menus.\\n@dropdown-header-color:          @gray-light;\\n\\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\\n@dropdown-caret-color:           #000;\\n\\n\\n//-- Z-index master list\\n//\\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\\n// of components dependent on the z-axis and are designed to all work together.\\n//\\n// Note: These variables are not generated into the Customizer.\\n\\n@zindex-navbar:            1000;\\n@zindex-dropdown:          1000;\\n@zindex-popover:           1060;\\n@zindex-tooltip:           1070;\\n@zindex-navbar-fixed:      1030;\\n@zindex-modal-background:  1040;\\n@zindex-modal:             1050;\\n\\n\\n//== Media queries breakpoints\\n//\\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\\n\\n// Extra small screen / phone\\n//** Deprecated `@screen-xs` as of v3.0.1\\n@screen-xs:                  480px;\\n//** Deprecated `@screen-xs-min` as of v3.2.0\\n@screen-xs-min:              @screen-xs;\\n//** Deprecated `@screen-phone` as of v3.0.1\\n@screen-phone:               @screen-xs-min;\\n\\n// Small screen / tablet\\n//** Deprecated `@screen-sm` as of v3.0.1\\n@screen-sm:                  768px;\\n@screen-sm-min:              @screen-sm;\\n//** Deprecated `@screen-tablet` as of v3.0.1\\n@screen-tablet:              @screen-sm-min;\\n\\n// Medium screen / desktop\\n//** Deprecated `@screen-md` as of v3.0.1\\n@screen-md:                  992px;\\n@screen-md-min:              @screen-md;\\n//** Deprecated `@screen-desktop` as of v3.0.1\\n@screen-desktop:             @screen-md-min;\\n\\n// Large screen / wide desktop\\n//** Deprecated `@screen-lg` as of v3.0.1\\n@screen-lg:                  1200px;\\n@screen-lg-min:              @screen-lg;\\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\\n@screen-lg-desktop:          @screen-lg-min;\\n\\n// So media queries don\'t overlap when required, provide a maximum\\n@screen-xs-max:              (@screen-sm-min - 1);\\n@screen-sm-max:              (@screen-md-min - 1);\\n@screen-md-max:              (@screen-lg-min - 1);\\n\\n\\n//== Grid system\\n//\\n//## Define your custom responsive grid.\\n\\n//** Number of columns in the grid.\\n@grid-columns:              12;\\n//** Padding between columns. Gets divided in half for the left and right.\\n@grid-gutter-width:         30px;\\n// Navbar collapse\\n//** Point at which the navbar becomes uncollapsed.\\n@grid-float-breakpoint:     @screen-sm-min;\\n//** Point at which the navbar begins collapsing.\\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\\n\\n\\n//== Container sizes\\n//\\n//## Define the maximum width of `.container` for different screen sizes.\\n\\n// Small screen / tablet\\n@container-tablet:             (720px + @grid-gutter-width);\\n//** For `@screen-sm-min` and up.\\n@container-sm:                 @container-tablet;\\n\\n// Medium screen / desktop\\n@container-desktop:            (940px + @grid-gutter-width);\\n//** For `@screen-md-min` and up.\\n@container-md:                 @container-desktop;\\n\\n// Large screen / wide desktop\\n@container-large-desktop:      (1140px + @grid-gutter-width);\\n//** For `@screen-lg-min` and up.\\n@container-lg:                 @container-large-desktop;\\n\\n\\n//== Navbar\\n//\\n//##\\n\\n// Basics of a navbar\\n@navbar-height:                    50px;\\n@navbar-margin-bottom:             @line-height-computed;\\n@navbar-border-radius:             @border-radius-base;\\n@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));\\n@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);\\n@navbar-collapse-max-height:       340px;\\n\\n@navbar-default-color:             #777;\\n@navbar-default-bg:                #f8f8f8;\\n@navbar-default-border:            darken(@navbar-default-bg, 6.5%);\\n\\n// Navbar links\\n@navbar-default-link-color:                #777;\\n@navbar-default-link-hover-color:          #333;\\n@navbar-default-link-hover-bg:             transparent;\\n@navbar-default-link-active-color:         #555;\\n@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);\\n@navbar-default-link-disabled-color:       #ccc;\\n@navbar-default-link-disabled-bg:          transparent;\\n\\n// Navbar brand label\\n@navbar-default-brand-color:               @navbar-default-link-color;\\n@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);\\n@navbar-default-brand-hover-bg:            transparent;\\n\\n// Navbar toggle\\n@navbar-default-toggle-hover-bg:           #ddd;\\n@navbar-default-toggle-icon-bar-bg:        #888;\\n@navbar-default-toggle-border-color:       #ddd;\\n\\n\\n//=== Inverted navbar\\n// Reset inverted navbar basics\\n@navbar-inverse-color:                      lighten(@gray-light, 15%);\\n@navbar-inverse-bg:                         #222;\\n@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);\\n\\n// Inverted navbar links\\n@navbar-inverse-link-color:                 lighten(@gray-light, 15%);\\n@navbar-inverse-link-hover-color:           #fff;\\n@navbar-inverse-link-hover-bg:              transparent;\\n@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;\\n@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);\\n@navbar-inverse-link-disabled-color:        #444;\\n@navbar-inverse-link-disabled-bg:           transparent;\\n\\n// Inverted navbar brand label\\n@navbar-inverse-brand-color:                @navbar-inverse-link-color;\\n@navbar-inverse-brand-hover-color:          #fff;\\n@navbar-inverse-brand-hover-bg:             transparent;\\n\\n// Inverted navbar toggle\\n@navbar-inverse-toggle-hover-bg:            #333;\\n@navbar-inverse-toggle-icon-bar-bg:         #fff;\\n@navbar-inverse-toggle-border-color:        #333;\\n\\n\\n//== Navs\\n//\\n//##\\n\\n//=== Shared nav styles\\n@nav-link-padding:                          10px 15px;\\n@nav-link-hover-bg:                         @gray-lighter;\\n\\n@nav-disabled-link-color:                   @gray-light;\\n@nav-disabled-link-hover-color:             @gray-light;\\n\\n//== Tabs\\n@nav-tabs-border-color:                     #ddd;\\n\\n@nav-tabs-link-hover-border-color:          @gray-lighter;\\n\\n@nav-tabs-active-link-hover-bg:             @body-bg;\\n@nav-tabs-active-link-hover-color:          @gray;\\n@nav-tabs-active-link-hover-border-color:   #ddd;\\n\\n@nav-tabs-justified-link-border-color:            #ddd;\\n@nav-tabs-justified-active-link-border-color:     @body-bg;\\n\\n//== Pills\\n@nav-pills-border-radius:                   @border-radius-base;\\n@nav-pills-active-link-hover-bg:            @component-active-bg;\\n@nav-pills-active-link-hover-color:         @component-active-color;\\n\\n\\n//== Pagination\\n//\\n//##\\n\\n@pagination-color:                     @link-color;\\n@pagination-bg:                        #fff;\\n@pagination-border:                    #ddd;\\n\\n@pagination-hover-color:               @link-hover-color;\\n@pagination-hover-bg:                  @gray-lighter;\\n@pagination-hover-border:              #ddd;\\n\\n@pagination-active-color:              #fff;\\n@pagination-active-bg:                 @brand-primary;\\n@pagination-active-border:             @brand-primary;\\n\\n@pagination-disabled-color:            @gray-light;\\n@pagination-disabled-bg:               #fff;\\n@pagination-disabled-border:           #ddd;\\n\\n\\n//== Pager\\n//\\n//##\\n\\n@pager-bg:                             @pagination-bg;\\n@pager-border:                         @pagination-border;\\n@pager-border-radius:                  15px;\\n\\n@pager-hover-bg:                       @pagination-hover-bg;\\n\\n@pager-active-bg:                      @pagination-active-bg;\\n@pager-active-color:                   @pagination-active-color;\\n\\n@pager-disabled-color:                 @pagination-disabled-color;\\n\\n\\n//== Jumbotron\\n//\\n//##\\n\\n@jumbotron-padding:              30px;\\n@jumbotron-color:                inherit;\\n@jumbotron-bg:                   @gray-lighter;\\n@jumbotron-heading-color:        inherit;\\n@jumbotron-font-size:            ceil((@font-size-base * 1.5));\\n@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));\\n\\n\\n//== Form states and alerts\\n//\\n//## Define colors for form feedback states and, by default, alerts.\\n\\n@state-success-text:             #3c763d;\\n@state-success-bg:               #dff0d8;\\n@state-success-border:           darken(spin(@state-success-bg, -10), 5%);\\n\\n@state-info-text:                #31708f;\\n@state-info-bg:                  #d9edf7;\\n@state-info-border:              darken(spin(@state-info-bg, -10), 7%);\\n\\n@state-warning-text:             #8a6d3b;\\n@state-warning-bg:               #fcf8e3;\\n@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);\\n\\n@state-danger-text:              #a94442;\\n@state-danger-bg:                #f2dede;\\n@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);\\n\\n\\n//== Tooltips\\n//\\n//##\\n\\n//** Tooltip max width\\n@tooltip-max-width:           200px;\\n//** Tooltip text color\\n@tooltip-color:               #fff;\\n//** Tooltip background color\\n@tooltip-bg:                  #000;\\n@tooltip-opacity:             .9;\\n\\n//** Tooltip arrow width\\n@tooltip-arrow-width:         5px;\\n//** Tooltip arrow color\\n@tooltip-arrow-color:         @tooltip-bg;\\n\\n\\n//== Popovers\\n//\\n//##\\n\\n//** Popover body background color\\n@popover-bg:                          #fff;\\n//** Popover maximum width\\n@popover-max-width:                   276px;\\n//** Popover border color\\n@popover-border-color:                rgba(0,0,0,.2);\\n//** Popover fallback border color\\n@popover-fallback-border-color:       #ccc;\\n\\n//** Popover title background color\\n@popover-title-bg:                    darken(@popover-bg, 3%);\\n\\n//** Popover arrow width\\n@popover-arrow-width:                 10px;\\n//** Popover arrow color\\n@popover-arrow-color:                 @popover-bg;\\n\\n//** Popover outer arrow width\\n@popover-arrow-outer-width:           (@popover-arrow-width + 1);\\n//** Popover outer arrow color\\n@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);\\n//** Popover outer arrow fallback color\\n@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);\\n\\n\\n//== Labels\\n//\\n//##\\n\\n//** Default label background color\\n@label-default-bg:            @gray-light;\\n//** Primary label background color\\n@label-primary-bg:            @brand-primary;\\n//** Success label background color\\n@label-success-bg:            @brand-success;\\n//** Info label background color\\n@label-info-bg:               @brand-info;\\n//** Warning label background color\\n@label-warning-bg:            @brand-warning;\\n//** Danger label background color\\n@label-danger-bg:             @brand-danger;\\n\\n//** Default label text color\\n@label-color:                 #fff;\\n//** Default text color of a linked label\\n@label-link-hover-color:      #fff;\\n\\n\\n//== Modals\\n//\\n//##\\n\\n//** Padding applied to the modal body\\n@modal-inner-padding:         15px;\\n\\n//** Padding applied to the modal title\\n@modal-title-padding:         15px;\\n//** Modal title line-height\\n@modal-title-line-height:     @line-height-base;\\n\\n//** Background color of modal content area\\n@modal-content-bg:                             #fff;\\n//** Modal content border color\\n@modal-content-border-color:                   rgba(0,0,0,.2);\\n//** Modal content border color **for IE8**\\n@modal-content-fallback-border-color:          #999;\\n\\n//** Modal backdrop background color\\n@modal-backdrop-bg:           #000;\\n//** Modal backdrop opacity\\n@modal-backdrop-opacity:      .5;\\n//** Modal header border color\\n@modal-header-border-color:   #e5e5e5;\\n//** Modal footer border color\\n@modal-footer-border-color:   @modal-header-border-color;\\n\\n@modal-lg:                    900px;\\n@modal-md:                    600px;\\n@modal-sm:                    300px;\\n\\n\\n//== Alerts\\n//\\n//## Define alert colors, border radius, and padding.\\n\\n@alert-padding:               15px;\\n@alert-border-radius:         @border-radius-base;\\n@alert-link-font-weight:      bold;\\n\\n@alert-success-bg:            @state-success-bg;\\n@alert-success-text:          @state-success-text;\\n@alert-success-border:        @state-success-border;\\n\\n@alert-info-bg:               @state-info-bg;\\n@alert-info-text:             @state-info-text;\\n@alert-info-border:           @state-info-border;\\n\\n@alert-warning-bg:            @state-warning-bg;\\n@alert-warning-text:          @state-warning-text;\\n@alert-warning-border:        @state-warning-border;\\n\\n@alert-danger-bg:             @state-danger-bg;\\n@alert-danger-text:           @state-danger-text;\\n@alert-danger-border:         @state-danger-border;\\n\\n\\n//== Progress bars\\n//\\n//##\\n\\n//** Background color of the whole progress component\\n@progress-bg:                 #f5f5f5;\\n//** Progress bar text color\\n@progress-bar-color:          #fff;\\n//** Variable for setting rounded corners on progress bar.\\n@progress-border-radius:      @border-radius-base;\\n\\n//** Default progress bar color\\n@progress-bar-bg:             @brand-primary;\\n//** Success progress bar color\\n@progress-bar-success-bg:     @brand-success;\\n//** Warning progress bar color\\n@progress-bar-warning-bg:     @brand-warning;\\n//** Danger progress bar color\\n@progress-bar-danger-bg:      @brand-danger;\\n//** Info progress bar color\\n@progress-bar-info-bg:        @brand-info;\\n\\n\\n//== List group\\n//\\n//##\\n\\n//** Background color on `.list-group-item`\\n@list-group-bg:                 #fff;\\n//** `.list-group-item` border color\\n@list-group-border:             #ddd;\\n//** List group border radius\\n@list-group-border-radius:      @border-radius-base;\\n\\n//** Background color of single list items on hover\\n@list-group-hover-bg:           #f5f5f5;\\n//** Text color of active list items\\n@list-group-active-color:       @component-active-color;\\n//** Background color of active list items\\n@list-group-active-bg:          @component-active-bg;\\n//** Border color of active list elements\\n@list-group-active-border:      @list-group-active-bg;\\n//** Text color for content within active list items\\n@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);\\n\\n//** Text color of disabled list items\\n@list-group-disabled-color:      @gray-light;\\n//** Background color of disabled list items\\n@list-group-disabled-bg:         @gray-lighter;\\n//** Text color for content within disabled list items\\n@list-group-disabled-text-color: @list-group-disabled-color;\\n\\n@list-group-link-color:         #555;\\n@list-group-link-hover-color:   @list-group-link-color;\\n@list-group-link-heading-color: #333;\\n\\n\\n//== Panels\\n//\\n//##\\n\\n@panel-bg:                    #fff;\\n@panel-body-padding:          15px;\\n@panel-heading-padding:       10px 15px;\\n@panel-footer-padding:        @panel-heading-padding;\\n@panel-border-radius:         @border-radius-base;\\n\\n//** Border color for elements within panels\\n@panel-inner-border:          #ddd;\\n@panel-footer-bg:             #f5f5f5;\\n\\n@panel-default-text:          @gray-dark;\\n@panel-default-border:        #ddd;\\n@panel-default-heading-bg:    #f5f5f5;\\n\\n@panel-primary-text:          #fff;\\n@panel-primary-border:        @brand-primary;\\n@panel-primary-heading-bg:    @brand-primary;\\n\\n@panel-success-text:          @state-success-text;\\n@panel-success-border:        @state-success-border;\\n@panel-success-heading-bg:    @state-success-bg;\\n\\n@panel-info-text:             @state-info-text;\\n@panel-info-border:           @state-info-border;\\n@panel-info-heading-bg:       @state-info-bg;\\n\\n@panel-warning-text:          @state-warning-text;\\n@panel-warning-border:        @state-warning-border;\\n@panel-warning-heading-bg:    @state-warning-bg;\\n\\n@panel-danger-text:           @state-danger-text;\\n@panel-danger-border:         @state-danger-border;\\n@panel-danger-heading-bg:     @state-danger-bg;\\n\\n\\n//== Thumbnails\\n//\\n//##\\n\\n//** Padding around the thumbnail image\\n@thumbnail-padding:           4px;\\n//** Thumbnail background color\\n@thumbnail-bg:                @body-bg;\\n//** Thumbnail border color\\n@thumbnail-border:            #ddd;\\n//** Thumbnail border radius\\n@thumbnail-border-radius:     @border-radius-base;\\n\\n//** Custom text color for thumbnail captions\\n@thumbnail-caption-color:     @text-color;\\n//** Padding around the thumbnail caption\\n@thumbnail-caption-padding:   9px;\\n\\n\\n//== Wells\\n//\\n//##\\n\\n@well-bg:                     #f5f5f5;\\n@well-border:                 darken(@well-bg, 7%);\\n\\n\\n//== Badges\\n//\\n//##\\n\\n@badge-color:                 #fff;\\n//** Linked badge text color on hover\\n@badge-link-hover-color:      #fff;\\n@badge-bg:                    @gray-light;\\n\\n//** Badge text color in active nav link\\n@badge-active-color:          @link-color;\\n//** Badge background color in active nav link\\n@badge-active-bg:             #fff;\\n\\n@badge-font-weight:           bold;\\n@badge-line-height:           1;\\n@badge-border-radius:         10px;\\n\\n\\n//== Breadcrumbs\\n//\\n//##\\n\\n@breadcrumb-padding-vertical:   8px;\\n@breadcrumb-padding-horizontal: 15px;\\n//** Breadcrumb background color\\n@breadcrumb-bg:                 #f5f5f5;\\n//** Breadcrumb text color\\n@breadcrumb-color:              #ccc;\\n//** Text color of current page in the breadcrumb\\n@breadcrumb-active-color:       @gray-light;\\n//** Textual separator for between breadcrumb elements\\n@breadcrumb-separator:          \\"/\\";\\n\\n\\n//== Carousel\\n//\\n//##\\n\\n@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);\\n\\n@carousel-control-color:                      #fff;\\n@carousel-control-width:                      15%;\\n@carousel-control-opacity:                    .5;\\n@carousel-control-font-size:                  20px;\\n\\n@carousel-indicator-active-bg:                #fff;\\n@carousel-indicator-border-color:             #fff;\\n\\n@carousel-caption-color:                      #fff;\\n\\n\\n//== Close\\n//\\n//##\\n\\n@close-font-weight:           bold;\\n@close-color:                 #000;\\n@close-text-shadow:           0 1px 0 #fff;\\n\\n\\n//== Code\\n//\\n//##\\n\\n@code-color:                  #c7254e;\\n@code-bg:                     #f9f2f4;\\n\\n@kbd-color:                   #fff;\\n@kbd-bg:                      #333;\\n\\n@pre-bg:                      #f5f5f5;\\n@pre-color:                   @gray-dark;\\n@pre-border-color:            #ccc;\\n@pre-scrollable-max-height:   340px;\\n\\n\\n//== Type\\n//\\n//##\\n\\n//** Horizontal offset for forms and lists.\\n@component-offset-horizontal: 180px;\\n//** Text muted color\\n@text-muted:                  @gray-light;\\n//** Abbreviations and acronyms border color\\n@abbr-border-color:           @gray-light;\\n//** Headings small color\\n@headings-small-color:        @gray-light;\\n//** Blockquote small color\\n@blockquote-small-color:      @gray-light;\\n//** Blockquote font size\\n@blockquote-font-size:        (@font-size-base * 1.25);\\n//** Blockquote border color\\n@blockquote-border-color:     @gray-lighter;\\n//** Page header border color\\n@page-header-border-color:    @gray-lighter;\\n//** Width of horizontal description list titles\\n@dl-horizontal-offset:        @component-offset-horizontal;\\n//** Point at which .dl-horizontal becomes horizontal\\n@dl-horizontal-breakpoint:    @grid-float-breakpoint;\\n//** Horizontal line color.\\n@hr-border:                   @gray-lighter;\\n","/* ui helper less rules */\\n@import \\"@{mockuplessPath}/base.less\\";\\n@import \\"@{mockupPath}/tooltip/pattern.tooltip.less\\";\\n\\n/* loading icon animation */\\n.plone-loader{\\n  display:none;\\n  position: fixed;\\n  top: 50%;\\n  left: ~\\"calc(50% - 2.5em)\\";\\n\\n  div {\\n    margin: -6em auto;\\n    font-size: 5px;\\n    text-indent: -9999em;\\n    border-top: 1.1em solid rgba(39, 33, 33, 0.2);\\n    border-right: 1.1em solid rgba(218, 211, 211, 0.2);\\n    border-bottom: 1.1em solid rgba(218, 211, 211, 0.2);\\n    border-left: 1.1em solid rgba(218, 211, 211, 0.2);\\n    -webkit-transform: translateZ(0);\\n    -ms-transform: translateZ(0);\\n    transform: translateZ(0);\\n    -webkit-animation: load8 1.1s infinite linear;\\n    animation: load8 1.1s infinite linear;\\n  }\\n  div,\\n  div:after {\\n    border-radius: 50%;\\n    width: 10em;\\n    height: 10em;\\n  }\\n  @-webkit-keyframes load8 {\\n    0% {\\n      -webkit-transform: rotate(0deg);\\n      transform: rotate(0deg);\\n    }\\n    100% {\\n      -webkit-transform: rotate(360deg);\\n      transform: rotate(360deg);\\n    }\\n  }\\n  @keyframes load8 {\\n    0% {\\n      -webkit-transform: rotate(0deg);\\n      transform: rotate(0deg);\\n    }\\n    100% {\\n      -webkit-transform: rotate(360deg);\\n      transform: rotate(360deg);\\n    }\\n  }\\n}\\n","ul.jqtree-tree {\\n  list-style: none outside;\\n  margin-left: 0;\\n  margin-bottom: 0;\\n  padding: 0; }\\n  ul.jqtree-tree ul.jqtree_common {\\n    list-style: none outside;\\n    margin-left: 12px;\\n    margin-right: 0;\\n    margin-bottom: 0;\\n    padding: 0;\\n    display: block; }\\n  ul.jqtree-tree li.jqtree-closed > ul.jqtree_common {\\n    display: none; }\\n  ul.jqtree-tree li.jqtree_common {\\n    clear: both;\\n    list-style-type: none; }\\n  ul.jqtree-tree .jqtree-toggler {\\n    border-bottom: none;\\n    color: #333;\\n    text-decoration: none;\\n    vertical-align: middle; }\\n    ul.jqtree-tree .jqtree-toggler:hover {\\n      color: #000;\\n      text-decoration: none; }\\n    ul.jqtree-tree .jqtree-toggler.jqtree-closed {\\n      background-position: 0 0; }\\n    ul.jqtree-tree .jqtree-toggler.jqtree-toggler-left {\\n      margin-right: 0.5em; }\\n    ul.jqtree-tree .jqtree-toggler.jqtree-toggler-right {\\n      margin-left: 0.5em; }\\n  ul.jqtree-tree .jqtree-element {\\n    cursor: pointer;\\n    position: relative; }\\n  ul.jqtree-tree .jqtree-title {\\n    color: #1C4257;\\n    vertical-align: middle;\\n    margin-left: 1.5em; }\\n    ul.jqtree-tree .jqtree-title.jqtree-title-folder {\\n      margin-left: 0; }\\n  ul.jqtree-tree li.jqtree-folder {\\n    margin-bottom: 4px; }\\n    ul.jqtree-tree li.jqtree-folder.jqtree-closed {\\n      margin-bottom: 1px; }\\n  ul.jqtree-tree li.jqtree-ghost {\\n    position: relative;\\n    z-index: 10;\\n    margin-right: 10px;\\n    /* todo: add classes to span? */ }\\n    ul.jqtree-tree li.jqtree-ghost span {\\n      display: block; }\\n    ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {\\n      border: solid 2px #0000ff;\\n      -webkit-border-radius: 100px;\\n      -moz-border-radius: 100px;\\n      border-radius: 100px;\\n      height: 8px;\\n      width: 8px;\\n      position: absolute;\\n      top: -4px;\\n      left: -6px;\\n      -webkit-box-sizing: border-box;\\n      -moz-box-sizing: border-box;\\n      box-sizing: border-box; }\\n    ul.jqtree-tree li.jqtree-ghost span.jqtree-line {\\n      background-color: #0000ff;\\n      height: 2px;\\n      padding: 0;\\n      position: absolute;\\n      top: -1px;\\n      left: 2px;\\n      width: 100%; }\\n    ul.jqtree-tree li.jqtree-ghost.jqtree-inside {\\n      margin-left: 48px; }\\n  ul.jqtree-tree span.jqtree-border {\\n    position: absolute;\\n    display: block;\\n    left: -2px;\\n    top: 0;\\n    border: solid 2px #0000ff;\\n    border-radius: 6px;\\n    margin: 0;\\n    box-sizing: content-box; }\\n  ul.jqtree-tree li.jqtree-selected > .jqtree-element,\\n  ul.jqtree-tree li.jqtree-selected > .jqtree-element:hover {\\n    background-color: #97BDD6;\\n    background: -webkit-gradient(linear, left top, left bottom, from(#BEE0F5), to(#89AFCA));\\n    background: -moz-linear-gradient(top, #BEE0F5, #89AFCA);\\n    background: -ms-linear-gradient(top, #BEE0F5, #89AFCA);\\n    background: -o-linear-gradient(top, #BEE0F5, #89AFCA);\\n    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); }\\n  ul.jqtree-tree .jqtree-moving > .jqtree-element .jqtree-title {\\n    outline: dashed 1px #0000ff; }\\n\\nul.jqtree-tree.jqtree-rtl {\\n  direction: rtl; }\\n  ul.jqtree-tree.jqtree-rtl ul.jqtree_common {\\n    margin-left: 0;\\n    margin-right: 12px; }\\n  ul.jqtree-tree.jqtree-rtl .jqtree-toggler {\\n    margin-left: 0.5em;\\n    margin-right: 0; }\\n  ul.jqtree-tree.jqtree-rtl .jqtree-title {\\n    margin-left: 0;\\n    margin-right: 1.5em; }\\n    ul.jqtree-tree.jqtree-rtl .jqtree-title.jqtree-title-folder {\\n      margin-right: 0; }\\n  ul.jqtree-tree.jqtree-rtl li.jqtree-ghost {\\n    margin-right: 0;\\n    margin-left: 10px; }\\n    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost span.jqtree-circle {\\n      right: -6px; }\\n    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost span.jqtree-line {\\n      right: 2px; }\\n    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost.jqtree-inside {\\n      margin-left: 0;\\n      margin-right: 48px; }\\n  ul.jqtree-tree.jqtree-rtl span.jqtree-border {\\n    right: -2px; }\\n\\nspan.jqtree-dragging {\\n  color: #fff;\\n  background: #000;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding: 2px 8px; }\\n\\n/* IE 6, 7, 8 */\\n@media \\\\0screen\\\\,screen\\\\9  {\\n  ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {\\n    background: url(jqtree-circle.png) no-repeat;\\n    border: 0 none; } }\\n","/* (inline) forces includes this file without processing it.\\n * Necessary because of the IE hack in there, which causes ParseError. */\\n@import (inline) \\"@{bowerPath}/jqtree/jqtree.css\\";\\n\\n.autotabs ul li.jqtree_common{\\n  display:block;\\n}",".popover {\\n    min-width: 111px;\\n    max-width: 500px;\\n\\n    .popover-title {\\n\\n        padding-bottom: 0;\\n        input {\\n            margin-bottom: 0;\\n        }\\n    }\\n    &.active {\\n        display: block;\\n    }\\n}\\n.backdrop-popover {\\n    background-color: #fff;\\n    z-index: 1009;\\n}","//\\n// Utility classes\\n// --------------------------------------------------\\n\\n\\n// Floats\\n// -------------------------\\n\\n.clearfix {\\n  .clearfix();\\n}\\n.center-block {\\n  .center-block();\\n}\\n.pull-right {\\n  float: right !important;\\n}\\n.pull-left {\\n  float: left !important;\\n}\\n\\n\\n// Toggling content\\n// -------------------------\\n\\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\\n.hide {\\n  display: none !important;\\n}\\n.show {\\n  display: block !important;\\n}\\n.invisible {\\n  visibility: hidden;\\n}\\n.text-hide {\\n  .text-hide();\\n}\\n\\n\\n// Hide from screenreaders and browsers\\n//\\n// Credit: HTML5 Boilerplate\\n\\n.hidden {\\n  display: none !important;\\n}\\n\\n\\n// For Affix plugin\\n// -------------------------\\n\\n.affix {\\n  position: fixed;\\n}\\n","// Center-align a block level element\\n\\n.center-block() {\\n  display: block;\\n  margin-left: auto;\\n  margin-right: auto;\\n}\\n","// CSS image replacement\\n//\\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\\n// mixins being reused as classes with the same name, this doesn\'t hold up. As\\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\\n//\\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\\n\\n// Deprecated as of v3.0.1 (has been removed in v4)\\n.hide-text() {\\n  font: ~\\"0/0\\" a;\\n  color: transparent;\\n  text-shadow: none;\\n  background-color: transparent;\\n  border: 0;\\n}\\n\\n// New mixin to use as of v3.0.1\\n.text-hide() {\\n  .hide-text();\\n}\\n","//\\n// Button groups\\n// --------------------------------------------------\\n\\n// Make the div behave like a button\\n.btn-group,\\n.btn-group-vertical {\\n  position: relative;\\n  display: inline-block;\\n  vertical-align: middle; // match .btn alignment given font-size hack above\\n  > .btn {\\n    position: relative;\\n    float: left;\\n    // Bring the \\"active\\" button to the front\\n    &:hover,\\n    &:focus,\\n    &:active,\\n    &.active {\\n      z-index: 2;\\n    }\\n  }\\n}\\n\\n// Prevent double borders when buttons are next to each other\\n.btn-group {\\n  .btn + .btn,\\n  .btn + .btn-group,\\n  .btn-group + .btn,\\n  .btn-group + .btn-group {\\n    margin-left: -1px;\\n  }\\n}\\n\\n// Optional: Group multiple button groups together for a toolbar\\n.btn-toolbar {\\n  margin-left: -5px; // Offset the first child\'s margin\\n  &:extend(.clearfix all);\\n\\n  .btn,\\n  .btn-group,\\n  .input-group {\\n    float: left;\\n  }\\n  > .btn,\\n  > .btn-group,\\n  > .input-group {\\n    margin-left: 5px;\\n  }\\n}\\n\\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\\n  border-radius: 0;\\n}\\n\\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\\n.btn-group > .btn:first-child {\\n  margin-left: 0;\\n  &:not(:last-child):not(.dropdown-toggle) {\\n    .border-right-radius(0);\\n  }\\n}\\n// Need .dropdown-toggle since :last-child doesn\'t apply given a .dropdown-menu immediately after it\\n.btn-group > .btn:last-child:not(:first-child),\\n.btn-group > .dropdown-toggle:not(:first-child) {\\n  .border-left-radius(0);\\n}\\n\\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\\n.btn-group > .btn-group {\\n  float: left;\\n}\\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\\n  border-radius: 0;\\n}\\n.btn-group > .btn-group:first-child:not(:last-child) {\\n  > .btn:last-child,\\n  > .dropdown-toggle {\\n    .border-right-radius(0);\\n  }\\n}\\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\\n  .border-left-radius(0);\\n}\\n\\n// On active and open, don\'t show outline\\n.btn-group .dropdown-toggle:active,\\n.btn-group.open .dropdown-toggle {\\n  outline: 0;\\n}\\n\\n\\n// Sizing\\n//\\n// Remix the default button sizing classes into new ones for easier manipulation.\\n\\n.btn-group-xs > .btn { &:extend(.btn-xs); }\\n.btn-group-sm > .btn { &:extend(.btn-sm); }\\n.btn-group-lg > .btn { &:extend(.btn-lg); }\\n\\n\\n// Split button dropdowns\\n// ----------------------\\n\\n// Give the line between buttons some depth\\n.btn-group > .btn + .dropdown-toggle {\\n  padding-left: 8px;\\n  padding-right: 8px;\\n}\\n.btn-group > .btn-lg + .dropdown-toggle {\\n  padding-left: 12px;\\n  padding-right: 12px;\\n}\\n\\n// The clickable button for toggling the menu\\n// Remove the gradient and set the same inset shadow as the :active state\\n.btn-group.open .dropdown-toggle {\\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\\n\\n  // Show no shadow for `.btn-link` since it has no other button styles.\\n  &.btn-link {\\n    .box-shadow(none);\\n  }\\n}\\n\\n\\n// Reposition the caret\\n.btn .caret {\\n  margin-left: 0;\\n}\\n// Carets in other button sizes\\n.btn-lg .caret {\\n  border-width: @caret-width-large @caret-width-large 0;\\n  border-bottom-width: 0;\\n}\\n// Upside down carets for .dropup\\n.dropup .btn-lg .caret {\\n  border-width: 0 @caret-width-large @caret-width-large;\\n}\\n\\n\\n// Vertical button groups\\n// ----------------------\\n\\n.btn-group-vertical {\\n  > .btn,\\n  > .btn-group,\\n  > .btn-group > .btn {\\n    display: block;\\n    float: none;\\n    width: 100%;\\n    max-width: 100%;\\n  }\\n\\n  // Clear floats so dropdown menus can be properly placed\\n  > .btn-group {\\n    &:extend(.clearfix all);\\n    > .btn {\\n      float: none;\\n    }\\n  }\\n\\n  > .btn + .btn,\\n  > .btn + .btn-group,\\n  > .btn-group + .btn,\\n  > .btn-group + .btn-group {\\n    margin-top: -1px;\\n    margin-left: 0;\\n  }\\n}\\n\\n.btn-group-vertical > .btn {\\n  &:not(:first-child):not(:last-child) {\\n    border-radius: 0;\\n  }\\n  &:first-child:not(:last-child) {\\n    .border-top-radius(@btn-border-radius-base);\\n    .border-bottom-radius(0);\\n  }\\n  &:last-child:not(:first-child) {\\n    .border-top-radius(0);\\n    .border-bottom-radius(@btn-border-radius-base);\\n  }\\n}\\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\\n  border-radius: 0;\\n}\\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\\n  > .btn:last-child,\\n  > .dropdown-toggle {\\n    .border-bottom-radius(0);\\n  }\\n}\\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\\n  .border-top-radius(0);\\n}\\n\\n\\n// Justified button groups\\n// ----------------------\\n\\n.btn-group-justified {\\n  display: table;\\n  width: 100%;\\n  table-layout: fixed;\\n  border-collapse: separate;\\n  > .btn,\\n  > .btn-group {\\n    float: none;\\n    display: table-cell;\\n    width: 1%;\\n  }\\n  > .btn-group .btn {\\n    width: 100%;\\n  }\\n\\n  > .btn-group .dropdown-menu {\\n    left: auto;\\n  }\\n}\\n\\n\\n// Checkbox and radio options\\n//\\n// In order to support the browser\'s form validation feedback, powered by the\\n// `required` attribute, we have to \\"hide\\" the inputs via `clip`. We cannot use\\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\\n// certain cases which is prevented by using `clip` and `pointer-events`.\\n// This way, we ensure a DOM element is visible to position the popover from.\\n//\\n// See https://github.com/twbs/bootstrap/pull/12794 and\\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\\n\\n[data-toggle=\\"buttons\\"] {\\n  > .btn,\\n  > .btn-group > .btn {\\n    input[type=\\"radio\\"],\\n    input[type=\\"checkbox\\"] {\\n      position: absolute;\\n      clip: rect(0,0,0,0);\\n      pointer-events: none;\\n    }\\n  }\\n}\\n","//\\n// Badges\\n// --------------------------------------------------\\n\\n\\n// Base class\\n.badge {\\n  display: inline-block;\\n  min-width: 10px;\\n  padding: 3px 7px;\\n  font-size: @font-size-small;\\n  font-weight: @badge-font-weight;\\n  color: @badge-color;\\n  line-height: @badge-line-height;\\n  vertical-align: middle;\\n  white-space: nowrap;\\n  text-align: center;\\n  background-color: @badge-bg;\\n  border-radius: @badge-border-radius;\\n\\n  // Empty badges collapse automatically (not available in IE8)\\n  &:empty {\\n    display: none;\\n  }\\n\\n  // Quick fix for badges in buttons\\n  .btn & {\\n    position: relative;\\n    top: -1px;\\n  }\\n\\n  .btn-xs &,\\n  .btn-group-xs > .btn & {\\n    top: 0;\\n    padding: 1px 5px;\\n  }\\n\\n  // Hover state, but only for links\\n  a& {\\n    &:hover,\\n    &:focus {\\n      color: @badge-link-hover-color;\\n      text-decoration: none;\\n      cursor: pointer;\\n    }\\n  }\\n\\n  // Account for badges in navs\\n  .list-group-item.active > &,\\n  .nav-pills > .active > a > & {\\n    color: @badge-active-color;\\n    background-color: @badge-active-bg;\\n  }\\n\\n  .list-group-item > & {\\n    float: right;\\n  }\\n\\n  .list-group-item > & + & {\\n    margin-right: 5px;\\n  }\\n\\n  .nav-pills > li > a > & {\\n    margin-left: 3px;\\n  }\\n}\\n","//\\n// Popovers\\n// --------------------------------------------------\\n\\n\\n.popover {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  z-index: @zindex-popover;\\n  display: none;\\n  max-width: @popover-max-width;\\n  padding: 1px;\\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\\n  // So reset our font and text properties to avoid inheriting weird values.\\n  .reset-text();\\n  font-size: @font-size-base;\\n\\n  background-color: @popover-bg;\\n  background-clip: padding-box;\\n  border: 1px solid @popover-fallback-border-color;\\n  border: 1px solid @popover-border-color;\\n  border-radius: @border-radius-large;\\n  .box-shadow(0 5px 10px rgba(0,0,0,.2));\\n\\n  // Offset the popover to account for the popover arrow\\n  &.top     { margin-top: -@popover-arrow-width; }\\n  &.right   { margin-left: @popover-arrow-width; }\\n  &.bottom  { margin-top: @popover-arrow-width; }\\n  &.left    { margin-left: -@popover-arrow-width; }\\n}\\n\\n.popover-title {\\n  margin: 0; // reset heading margin\\n  padding: 8px 14px;\\n  font-size: @font-size-base;\\n  background-color: @popover-title-bg;\\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\\n}\\n\\n.popover-content {\\n  padding: 9px 14px;\\n}\\n\\n// Arrows\\n//\\n// .arrow is outer, .arrow:after is inner\\n\\n.popover > .arrow {\\n  &,\\n  &:after {\\n    position: absolute;\\n    display: block;\\n    width: 0;\\n    height: 0;\\n    border-color: transparent;\\n    border-style: solid;\\n  }\\n}\\n.popover > .arrow {\\n  border-width: @popover-arrow-outer-width;\\n}\\n.popover > .arrow:after {\\n  border-width: @popover-arrow-width;\\n  content: \\"\\";\\n}\\n\\n.popover {\\n  &.top > .arrow {\\n    left: 50%;\\n    margin-left: -@popover-arrow-outer-width;\\n    border-bottom-width: 0;\\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-top-color: @popover-arrow-outer-color;\\n    bottom: -@popover-arrow-outer-width;\\n    &:after {\\n      content: \\" \\";\\n      bottom: 1px;\\n      margin-left: -@popover-arrow-width;\\n      border-bottom-width: 0;\\n      border-top-color: @popover-arrow-color;\\n    }\\n  }\\n  &.right > .arrow {\\n    top: 50%;\\n    left: -@popover-arrow-outer-width;\\n    margin-top: -@popover-arrow-outer-width;\\n    border-left-width: 0;\\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-right-color: @popover-arrow-outer-color;\\n    &:after {\\n      content: \\" \\";\\n      left: 1px;\\n      bottom: -@popover-arrow-width;\\n      border-left-width: 0;\\n      border-right-color: @popover-arrow-color;\\n    }\\n  }\\n  &.bottom > .arrow {\\n    left: 50%;\\n    margin-left: -@popover-arrow-outer-width;\\n    border-top-width: 0;\\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-bottom-color: @popover-arrow-outer-color;\\n    top: -@popover-arrow-outer-width;\\n    &:after {\\n      content: \\" \\";\\n      top: 1px;\\n      margin-left: -@popover-arrow-width;\\n      border-top-width: 0;\\n      border-bottom-color: @popover-arrow-color;\\n    }\\n  }\\n\\n  &.left > .arrow {\\n    top: 50%;\\n    right: -@popover-arrow-outer-width;\\n    margin-top: -@popover-arrow-outer-width;\\n    border-right-width: 0;\\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-left-color: @popover-arrow-outer-color;\\n    &:after {\\n      content: \\" \\";\\n      right: 1px;\\n      border-right-width: 0;\\n      border-left-color: @popover-arrow-color;\\n      bottom: -@popover-arrow-width;\\n    }\\n  }\\n}\\n","//\\n// Pagination (multiple pages)\\n// --------------------------------------------------\\n.pagination {\\n  display: inline-block;\\n  padding-left: 0;\\n  margin: @line-height-computed 0;\\n  border-radius: @border-radius-base;\\n\\n  > li {\\n    display: inline; // Remove list-style and block-level defaults\\n    > a,\\n    > span {\\n      position: relative;\\n      float: left; // Collapse white-space\\n      padding: @padding-base-vertical @padding-base-horizontal;\\n      line-height: @line-height-base;\\n      text-decoration: none;\\n      color: @pagination-color;\\n      background-color: @pagination-bg;\\n      border: 1px solid @pagination-border;\\n      margin-left: -1px;\\n    }\\n    &:first-child {\\n      > a,\\n      > span {\\n        margin-left: 0;\\n        .border-left-radius(@border-radius-base);\\n      }\\n    }\\n    &:last-child {\\n      > a,\\n      > span {\\n        .border-right-radius(@border-radius-base);\\n      }\\n    }\\n  }\\n\\n  > li > a,\\n  > li > span {\\n    &:hover,\\n    &:focus {\\n      z-index: 2;\\n      color: @pagination-hover-color;\\n      background-color: @pagination-hover-bg;\\n      border-color: @pagination-hover-border;\\n    }\\n  }\\n\\n  > .active > a,\\n  > .active > span {\\n    &,\\n    &:hover,\\n    &:focus {\\n      z-index: 3;\\n      color: @pagination-active-color;\\n      background-color: @pagination-active-bg;\\n      border-color: @pagination-active-border;\\n      cursor: default;\\n    }\\n  }\\n\\n  > .disabled {\\n    > span,\\n    > span:hover,\\n    > span:focus,\\n    > a,\\n    > a:hover,\\n    > a:focus {\\n      color: @pagination-disabled-color;\\n      background-color: @pagination-disabled-bg;\\n      border-color: @pagination-disabled-border;\\n      cursor: @cursor-disabled;\\n    }\\n  }\\n}\\n\\n// Sizing\\n// --------------------------------------------------\\n\\n// Large\\n.pagination-lg {\\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\\n}\\n\\n// Small\\n.pagination-sm {\\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\\n}\\n","//\\n// Input groups\\n// --------------------------------------------------\\n\\n// Base styles\\n// -------------------------\\n.input-group {\\n  position: relative; // For dropdowns\\n  display: table;\\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\\n\\n  // Undo padding and float of grid classes\\n  &[class*=\\"col-\\"] {\\n    float: none;\\n    padding-left: 0;\\n    padding-right: 0;\\n  }\\n\\n  .form-control {\\n    // Ensure that the input is always above the *appended* addon button for\\n    // proper border colors.\\n    position: relative;\\n    z-index: 2;\\n\\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\\n    // select elements in input groups. To fix it, we float the input. Details:\\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\\n    float: left;\\n\\n    width: 100%;\\n    margin-bottom: 0;\\n    \\n    &:focus {\\n      z-index: 3;\\n    }\\n  }\\n}\\n\\n// Sizing options\\n//\\n// Remix the default form control sizing classes into new ones for easier\\n// manipulation.\\n\\n.input-group-lg > .form-control,\\n.input-group-lg > .input-group-addon,\\n.input-group-lg > .input-group-btn > .btn {\\n  .input-lg();\\n}\\n.input-group-sm > .form-control,\\n.input-group-sm > .input-group-addon,\\n.input-group-sm > .input-group-btn > .btn {\\n  .input-sm();\\n}\\n\\n\\n// Display as table-cell\\n// -------------------------\\n.input-group-addon,\\n.input-group-btn,\\n.input-group .form-control {\\n  display: table-cell;\\n\\n  &:not(:first-child):not(:last-child) {\\n    border-radius: 0;\\n  }\\n}\\n// Addon and addon wrapper for buttons\\n.input-group-addon,\\n.input-group-btn {\\n  width: 1%;\\n  white-space: nowrap;\\n  vertical-align: middle; // Match the inputs\\n}\\n\\n// Text input groups\\n// -------------------------\\n.input-group-addon {\\n  padding: @padding-base-vertical @padding-base-horizontal;\\n  font-size: @font-size-base;\\n  font-weight: normal;\\n  line-height: 1;\\n  color: @input-color;\\n  text-align: center;\\n  background-color: @input-group-addon-bg;\\n  border: 1px solid @input-group-addon-border-color;\\n  border-radius: @input-border-radius;\\n\\n  // Sizing\\n  &.input-sm {\\n    padding: @padding-small-vertical @padding-small-horizontal;\\n    font-size: @font-size-small;\\n    border-radius: @input-border-radius-small;\\n  }\\n  &.input-lg {\\n    padding: @padding-large-vertical @padding-large-horizontal;\\n    font-size: @font-size-large;\\n    border-radius: @input-border-radius-large;\\n  }\\n\\n  // Nuke default margins from checkboxes and radios to vertically center within.\\n  input[type=\\"radio\\"],\\n  input[type=\\"checkbox\\"] {\\n    margin-top: 0;\\n  }\\n}\\n\\n// Reset rounded corners\\n.input-group .form-control:first-child,\\n.input-group-addon:first-child,\\n.input-group-btn:first-child > .btn,\\n.input-group-btn:first-child > .btn-group > .btn,\\n.input-group-btn:first-child > .dropdown-toggle,\\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\\n  .border-right-radius(0);\\n}\\n.input-group-addon:first-child {\\n  border-right: 0;\\n}\\n.input-group .form-control:last-child,\\n.input-group-addon:last-child,\\n.input-group-btn:last-child > .btn,\\n.input-group-btn:last-child > .btn-group > .btn,\\n.input-group-btn:last-child > .dropdown-toggle,\\n.input-group-btn:first-child > .btn:not(:first-child),\\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\\n  .border-left-radius(0);\\n}\\n.input-group-addon:last-child {\\n  border-left: 0;\\n}\\n\\n// Button input groups\\n// -------------------------\\n.input-group-btn {\\n  position: relative;\\n  // Jankily prevent input button groups from wrapping with `white-space` and\\n  // `font-size` in combination with `inline-block` on buttons.\\n  font-size: 0;\\n  white-space: nowrap;\\n\\n  // Negative margin for spacing, position for bringing hovered/focused/actived\\n  // element above the siblings.\\n  > .btn {\\n    position: relative;\\n    + .btn {\\n      margin-left: -1px;\\n    }\\n    // Bring the \\"active\\" button to the front\\n    &:hover,\\n    &:focus,\\n    &:active {\\n      z-index: 2;\\n    }\\n  }\\n\\n  // Negative margin to only have a 1px border between the two\\n  &:first-child {\\n    > .btn,\\n    > .btn-group {\\n      margin-right: -1px;\\n    }\\n  }\\n  &:last-child {\\n    > .btn,\\n    > .btn-group {\\n      z-index: 2;\\n      margin-left: -1px;\\n    }\\n  }\\n}\\n","// Form validation states\\n//\\n// Used in forms.less to generate the form validation CSS for warnings, errors,\\n// and successes.\\n\\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\\n  // Color the label and help text\\n  .help-block,\\n  .control-label,\\n  .radio,\\n  .checkbox,\\n  .radio-inline,\\n  .checkbox-inline,\\n  &.radio label,\\n  &.checkbox label,\\n  &.radio-inline label,\\n  &.checkbox-inline label  {\\n    color: @text-color;\\n  }\\n  // Set the border and box shadow on specific inputs to match\\n  .form-control {\\n    border-color: @border-color;\\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\\n    &:focus {\\n      border-color: darken(@border-color, 10%);\\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\\n      .box-shadow(@shadow);\\n    }\\n  }\\n  // Set validation states also for addons\\n  .input-group-addon {\\n    color: @text-color;\\n    border-color: @border-color;\\n    background-color: @background-color;\\n  }\\n  // Optional feedback icon\\n  .form-control-feedback {\\n    color: @text-color;\\n  }\\n}\\n\\n\\n// Form control focus state\\n//\\n// Generate a customized focus state and for any input with the specified color,\\n// which defaults to the `@input-border-focus` variable.\\n//\\n// We highly encourage you to not customize the default value, but instead use\\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\\n// WebKit\'s default styles, but applicable to a wider range of browsers. Its\\n// usability and accessibility should be taken into account with any change.\\n//\\n// Example usage: change the default blue border and shadow to white for better\\n// contrast against a dark gray background.\\n.form-control-focus(@color: @input-border-focus) {\\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\\n  &:focus {\\n    border-color: @color;\\n    outline: 0;\\n    .box-shadow(~\\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\\");\\n  }\\n}\\n\\n// Form control sizing\\n//\\n// Relative text size, padding, and border-radii changes for form controls. For\\n// horizontal sizing, wrap controls in the predefined grid classes. `s in some browsers, due to the limited stylability of `s in IE10+.\\n  &::-ms-expand {\\n    border: 0;\\n    background-color: transparent;\\n  }\\n\\n  // Disabled and read-only inputs\\n  //\\n  // HTML5 says that controls under a fieldset > legend:first-child won\'t be\\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\\n  // don\'t honor that edge case; we style them as disabled anyway.\\n  &[disabled],\\n  &[readonly],\\n  fieldset[disabled] & {\\n    background-color: @input-bg-disabled;\\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\\n  }\\n\\n  &[disabled],\\n  fieldset[disabled] & {\\n    cursor: @cursor-disabled;\\n  }\\n\\n  // Reset height for `textarea`s\\n  textarea& {\\n    height: auto;\\n  }\\n}\\n\\n\\n// Search inputs in iOS\\n//\\n// This overrides the extra rounded corners on search inputs in iOS so that our\\n// `.form-control` class can properly style them. Note that this cannot simply\\n// be added to `.form-control` as it\'s not specific enough. For details, see\\n// https://github.com/twbs/bootstrap/issues/11586.\\n\\ninput[type=\\"search\\"] {\\n  -webkit-appearance: none;\\n}\\n\\n\\n// Special styles for iOS temporal inputs\\n//\\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\\n// text within the input to become vertically misaligned. As a workaround, we\\n// set a pixel line-height that matches the given height of the input, but only\\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\\n//\\n// Note that as of 8.3, iOS doesn\'t support `datetime` or `week`.\\n\\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\\n  input[type=\\"date\\"],\\n  input[type=\\"time\\"],\\n  input[type=\\"datetime-local\\"],\\n  input[type=\\"month\\"] {\\n    &.form-control {\\n      line-height: @input-height-base;\\n    }\\n\\n    &.input-sm,\\n    .input-group-sm & {\\n      line-height: @input-height-small;\\n    }\\n\\n    &.input-lg,\\n    .input-group-lg & {\\n      line-height: @input-height-large;\\n    }\\n  }\\n}\\n\\n\\n// Form groups\\n//\\n// Designed to help with the organization and spacing of vertical forms. For\\n// horizontal forms, use the predefined grid classes.\\n\\n.form-group {\\n  margin-bottom: @form-group-margin-bottom;\\n}\\n\\n\\n// Checkboxes and radios\\n//\\n// Indent the labels to position radios/checkboxes as hanging controls.\\n\\n.radio,\\n.checkbox {\\n  position: relative;\\n  display: block;\\n  margin-top: 10px;\\n  margin-bottom: 10px;\\n\\n  label {\\n    min-height: @line-height-computed; // Ensure the input doesn\'t jump when there is no text\\n    padding-left: 20px;\\n    margin-bottom: 0;\\n    font-weight: normal;\\n    cursor: pointer;\\n  }\\n}\\n.radio input[type=\\"radio\\"],\\n.radio-inline input[type=\\"radio\\"],\\n.checkbox input[type=\\"checkbox\\"],\\n.checkbox-inline input[type=\\"checkbox\\"] {\\n  position: absolute;\\n  margin-left: -20px;\\n  margin-top: 4px \\\\9;\\n}\\n\\n.radio + .radio,\\n.checkbox + .checkbox {\\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\\n}\\n\\n// Radios and checkboxes on same line\\n.radio-inline,\\n.checkbox-inline {\\n  position: relative;\\n  display: inline-block;\\n  padding-left: 20px;\\n  margin-bottom: 0;\\n  vertical-align: middle;\\n  font-weight: normal;\\n  cursor: pointer;\\n}\\n.radio-inline + .radio-inline,\\n.checkbox-inline + .checkbox-inline {\\n  margin-top: 0;\\n  margin-left: 10px; // space out consecutive inline controls\\n}\\n\\n// Apply same disabled cursor tweak as for inputs\\n// Some special care is needed because  Star\\n\\n// Import the fonts\\n@font-face {\\n  font-family: \'Glyphicons Halflings\';\\n  src: url(\'@{icon-font-path}@{icon-font-name}.eot\');\\n  src: url(\'@{icon-font-path}@{icon-font-name}.eot?#iefix\') format(\'embedded-opentype\'),\\n       url(\'@{icon-font-path}@{icon-font-name}.woff2\') format(\'woff2\'),\\n       url(\'@{icon-font-path}@{icon-font-name}.woff\') format(\'woff\'),\\n       url(\'@{icon-font-path}@{icon-font-name}.ttf\') format(\'truetype\'),\\n       url(\'@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}\') format(\'svg\');\\n}\\n\\n// Catchall baseclass\\n.glyphicon {\\n  position: relative;\\n  top: 1px;\\n  display: inline-block;\\n  font-family: \'Glyphicons Halflings\';\\n  font-style: normal;\\n  font-weight: normal;\\n  line-height: 1;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n\\n// Individual icons\\n.glyphicon-asterisk               { &:before { content: \\"\\\\002a\\"; } }\\n.glyphicon-plus                   { &:before { content: \\"\\\\002b\\"; } }\\n.glyphicon-euro,\\n.glyphicon-eur                    { &:before { content: \\"\\\\20ac\\"; } }\\n.glyphicon-minus                  { &:before { content: \\"\\\\2212\\"; } }\\n.glyphicon-cloud                  { &:before { content: \\"\\\\2601\\"; } }\\n.glyphicon-envelope               { &:before { content: \\"\\\\2709\\"; } }\\n.glyphicon-pencil                 { &:before { content: \\"\\\\270f\\"; } }\\n.glyphicon-glass                  { &:before { content: \\"\\\\e001\\"; } }\\n.glyphicon-music                  { &:before { content: \\"\\\\e002\\"; } }\\n.glyphicon-search                 { &:before { content: \\"\\\\e003\\"; } }\\n.glyphicon-heart                  { &:before { content: \\"\\\\e005\\"; } }\\n.glyphicon-star                   { &:before { content: \\"\\\\e006\\"; } }\\n.glyphicon-star-empty             { &:before { content: \\"\\\\e007\\"; } }\\n.glyphicon-user                   { &:before { content: \\"\\\\e008\\"; } }\\n.glyphicon-film                   { &:before { content: \\"\\\\e009\\"; } }\\n.glyphicon-th-large               { &:before { content: \\"\\\\e010\\"; } }\\n.glyphicon-th                     { &:before { content: \\"\\\\e011\\"; } }\\n.glyphicon-th-list                { &:before { content: \\"\\\\e012\\"; } }\\n.glyphicon-ok                     { &:before { content: \\"\\\\e013\\"; } }\\n.glyphicon-remove                 { &:before { content: \\"\\\\e014\\"; } }\\n.glyphicon-zoom-in                { &:before { content: \\"\\\\e015\\"; } }\\n.glyphicon-zoom-out               { &:before { content: \\"\\\\e016\\"; } }\\n.glyphicon-off                    { &:before { content: \\"\\\\e017\\"; } }\\n.glyphicon-signal                 { &:before { content: \\"\\\\e018\\"; } }\\n.glyphicon-cog                    { &:before { content: \\"\\\\e019\\"; } }\\n.glyphicon-trash                  { &:before { content: \\"\\\\e020\\"; } }\\n.glyphicon-home                   { &:before { content: \\"\\\\e021\\"; } }\\n.glyphicon-file                   { &:before { content: \\"\\\\e022\\"; } }\\n.glyphicon-time                   { &:before { content: \\"\\\\e023\\"; } }\\n.glyphicon-road                   { &:before { content: \\"\\\\e024\\"; } }\\n.glyphicon-download-alt           { &:before { content: \\"\\\\e025\\"; } }\\n.glyphicon-download               { &:before { content: \\"\\\\e026\\"; } }\\n.glyphicon-upload                 { &:before { content: \\"\\\\e027\\"; } }\\n.glyphicon-inbox                  { &:before { content: \\"\\\\e028\\"; } }\\n.glyphicon-play-circle            { &:before { content: \\"\\\\e029\\"; } }\\n.glyphicon-repeat                 { &:before { content: \\"\\\\e030\\"; } }\\n.glyphicon-refresh                { &:before { content: \\"\\\\e031\\"; } }\\n.glyphicon-list-alt               { &:before { content: \\"\\\\e032\\"; } }\\n.glyphicon-lock                   { &:before { content: \\"\\\\e033\\"; } }\\n.glyphicon-flag                   { &:before { content: \\"\\\\e034\\"; } }\\n.glyphicon-headphones             { &:before { content: \\"\\\\e035\\"; } }\\n.glyphicon-volume-off             { &:before { content: \\"\\\\e036\\"; } }\\n.glyphicon-volume-down            { &:before { content: \\"\\\\e037\\"; } }\\n.glyphicon-volume-up              { &:before { content: \\"\\\\e038\\"; } }\\n.glyphicon-qrcode                 { &:before { content: \\"\\\\e039\\"; } }\\n.glyphicon-barcode                { &:before { content: \\"\\\\e040\\"; } }\\n.glyphicon-tag                    { &:before { content: \\"\\\\e041\\"; } }\\n.glyphicon-tags                   { &:before { content: \\"\\\\e042\\"; } }\\n.glyphicon-book                   { &:before { content: \\"\\\\e043\\"; } }\\n.glyphicon-bookmark               { &:before { content: \\"\\\\e044\\"; } }\\n.glyphicon-print                  { &:before { content: \\"\\\\e045\\"; } }\\n.glyphicon-camera                 { &:before { content: \\"\\\\e046\\"; } }\\n.glyphicon-font                   { &:before { content: \\"\\\\e047\\"; } }\\n.glyphicon-bold                   { &:before { content: \\"\\\\e048\\"; } }\\n.glyphicon-italic                 { &:before { content: \\"\\\\e049\\"; } }\\n.glyphicon-text-height            { &:before { content: \\"\\\\e050\\"; } }\\n.glyphicon-text-width             { &:before { content: \\"\\\\e051\\"; } }\\n.glyphicon-align-left             { &:before { content: \\"\\\\e052\\"; } }\\n.glyphicon-align-center           { &:before { content: \\"\\\\e053\\"; } }\\n.glyphicon-align-right            { &:before { content: \\"\\\\e054\\"; } }\\n.glyphicon-align-justify          { &:before { content: \\"\\\\e055\\"; } }\\n.glyphicon-list                   { &:before { content: \\"\\\\e056\\"; } }\\n.glyphicon-indent-left            { &:before { content: \\"\\\\e057\\"; } }\\n.glyphicon-indent-right           { &:before { content: \\"\\\\e058\\"; } }\\n.glyphicon-facetime-video         { &:before { content: \\"\\\\e059\\"; } }\\n.glyphicon-picture                { &:before { content: \\"\\\\e060\\"; } }\\n.glyphicon-map-marker             { &:before { content: \\"\\\\e062\\"; } }\\n.glyphicon-adjust                 { &:before { content: \\"\\\\e063\\"; } }\\n.glyphicon-tint                   { &:before { content: \\"\\\\e064\\"; } }\\n.glyphicon-edit                   { &:before { content: \\"\\\\e065\\"; } }\\n.glyphicon-share                  { &:before { content: \\"\\\\e066\\"; } }\\n.glyphicon-check                  { &:before { content: \\"\\\\e067\\"; } }\\n.glyphicon-move                   { &:before { content: \\"\\\\e068\\"; } }\\n.glyphicon-step-backward          { &:before { content: \\"\\\\e069\\"; } }\\n.glyphicon-fast-backward          { &:before { content: \\"\\\\e070\\"; } }\\n.glyphicon-backward               { &:before { content: \\"\\\\e071\\"; } }\\n.glyphicon-play                   { &:before { content: \\"\\\\e072\\"; } }\\n.glyphicon-pause                  { &:before { content: \\"\\\\e073\\"; } }\\n.glyphicon-stop                   { &:before { content: \\"\\\\e074\\"; } }\\n.glyphicon-forward                { &:before { content: \\"\\\\e075\\"; } }\\n.glyphicon-fast-forward           { &:before { content: \\"\\\\e076\\"; } }\\n.glyphicon-step-forward           { &:before { content: \\"\\\\e077\\"; } }\\n.glyphicon-eject                  { &:before { content: \\"\\\\e078\\"; } }\\n.glyphicon-chevron-left           { &:before { content: \\"\\\\e079\\"; } }\\n.glyphicon-chevron-right          { &:before { content: \\"\\\\e080\\"; } }\\n.glyphicon-plus-sign              { &:before { content: \\"\\\\e081\\"; } }\\n.glyphicon-minus-sign             { &:before { content: \\"\\\\e082\\"; } }\\n.glyphicon-remove-sign            { &:before { content: \\"\\\\e083\\"; } }\\n.glyphicon-ok-sign                { &:before { content: \\"\\\\e084\\"; } }\\n.glyphicon-question-sign          { &:before { content: \\"\\\\e085\\"; } }\\n.glyphicon-info-sign              { &:before { content: \\"\\\\e086\\"; } }\\n.glyphicon-screenshot             { &:before { content: \\"\\\\e087\\"; } }\\n.glyphicon-remove-circle          { &:before { content: \\"\\\\e088\\"; } }\\n.glyphicon-ok-circle              { &:before { content: \\"\\\\e089\\"; } }\\n.glyphicon-ban-circle             { &:before { content: \\"\\\\e090\\"; } }\\n.glyphicon-arrow-left             { &:before { content: \\"\\\\e091\\"; } }\\n.glyphicon-arrow-right            { &:before { content: \\"\\\\e092\\"; } }\\n.glyphicon-arrow-up               { &:before { content: \\"\\\\e093\\"; } }\\n.glyphicon-arrow-down             { &:before { content: \\"\\\\e094\\"; } }\\n.glyphicon-share-alt              { &:before { content: \\"\\\\e095\\"; } }\\n.glyphicon-resize-full            { &:before { content: \\"\\\\e096\\"; } }\\n.glyphicon-resize-small           { &:before { content: \\"\\\\e097\\"; } }\\n.glyphicon-exclamation-sign       { &:before { content: \\"\\\\e101\\"; } }\\n.glyphicon-gift                   { &:before { content: \\"\\\\e102\\"; } }\\n.glyphicon-leaf                   { &:before { content: \\"\\\\e103\\"; } }\\n.glyphicon-fire                   { &:before { content: \\"\\\\e104\\"; } }\\n.glyphicon-eye-open               { &:before { content: \\"\\\\e105\\"; } }\\n.glyphicon-eye-close              { &:before { content: \\"\\\\e106\\"; } }\\n.glyphicon-warning-sign           { &:before { content: \\"\\\\e107\\"; } }\\n.glyphicon-plane                  { &:before { content: \\"\\\\e108\\"; } }\\n.glyphicon-calendar               { &:before { content: \\"\\\\e109\\"; } }\\n.glyphicon-random                 { &:before { content: \\"\\\\e110\\"; } }\\n.glyphicon-comment                { &:before { content: \\"\\\\e111\\"; } }\\n.glyphicon-magnet                 { &:before { content: \\"\\\\e112\\"; } }\\n.glyphicon-chevron-up             { &:before { content: \\"\\\\e113\\"; } }\\n.glyphicon-chevron-down           { &:before { content: \\"\\\\e114\\"; } }\\n.glyphicon-retweet                { &:before { content: \\"\\\\e115\\"; } }\\n.glyphicon-shopping-cart          { &:before { content: \\"\\\\e116\\"; } }\\n.glyphicon-folder-close           { &:before { content: \\"\\\\e117\\"; } }\\n.glyphicon-folder-open            { &:before { content: \\"\\\\e118\\"; } }\\n.glyphicon-resize-vertical        { &:before { content: \\"\\\\e119\\"; } }\\n.glyphicon-resize-horizontal      { &:before { content: \\"\\\\e120\\"; } }\\n.glyphicon-hdd                    { &:before { content: \\"\\\\e121\\"; } }\\n.glyphicon-bullhorn               { &:before { content: \\"\\\\e122\\"; } }\\n.glyphicon-bell                   { &:before { content: \\"\\\\e123\\"; } }\\n.glyphicon-certificate            { &:before { content: \\"\\\\e124\\"; } }\\n.glyphicon-thumbs-up              { &:before { content: \\"\\\\e125\\"; } }\\n.glyphicon-thumbs-down            { &:before { content: \\"\\\\e126\\"; } }\\n.glyphicon-hand-right             { &:before { content: \\"\\\\e127\\"; } }\\n.glyphicon-hand-left              { &:before { content: \\"\\\\e128\\"; } }\\n.glyphicon-hand-up                { &:before { content: \\"\\\\e129\\"; } }\\n.glyphicon-hand-down              { &:before { content: \\"\\\\e130\\"; } }\\n.glyphicon-circle-arrow-right     { &:before { content: \\"\\\\e131\\"; } }\\n.glyphicon-circle-arrow-left      { &:before { content: \\"\\\\e132\\"; } }\\n.glyphicon-circle-arrow-up        { &:before { content: \\"\\\\e133\\"; } }\\n.glyphicon-circle-arrow-down      { &:before { content: \\"\\\\e134\\"; } }\\n.glyphicon-globe                  { &:before { content: \\"\\\\e135\\"; } }\\n.glyphicon-wrench                 { &:before { content: \\"\\\\e136\\"; } }\\n.glyphicon-tasks                  { &:before { content: \\"\\\\e137\\"; } }\\n.glyphicon-filter                 { &:before { content: \\"\\\\e138\\"; } }\\n.glyphicon-briefcase              { &:before { content: \\"\\\\e139\\"; } }\\n.glyphicon-fullscreen             { &:before { content: \\"\\\\e140\\"; } }\\n.glyphicon-dashboard              { &:before { content: \\"\\\\e141\\"; } }\\n.glyphicon-paperclip              { &:before { content: \\"\\\\e142\\"; } }\\n.glyphicon-heart-empty            { &:before { content: \\"\\\\e143\\"; } }\\n.glyphicon-link                   { &:before { content: \\"\\\\e144\\"; } }\\n.glyphicon-phone                  { &:before { content: \\"\\\\e145\\"; } }\\n.glyphicon-pushpin                { &:before { content: \\"\\\\e146\\"; } }\\n.glyphicon-usd                    { &:before { content: \\"\\\\e148\\"; } }\\n.glyphicon-gbp                    { &:before { content: \\"\\\\e149\\"; } }\\n.glyphicon-sort                   { &:before { content: \\"\\\\e150\\"; } }\\n.glyphicon-sort-by-alphabet       { &:before { content: \\"\\\\e151\\"; } }\\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \\"\\\\e152\\"; } }\\n.glyphicon-sort-by-order          { &:before { content: \\"\\\\e153\\"; } }\\n.glyphicon-sort-by-order-alt      { &:before { content: \\"\\\\e154\\"; } }\\n.glyphicon-sort-by-attributes     { &:before { content: \\"\\\\e155\\"; } }\\n.glyphicon-sort-by-attributes-alt { &:before { content: \\"\\\\e156\\"; } }\\n.glyphicon-unchecked              { &:before { content: \\"\\\\e157\\"; } }\\n.glyphicon-expand                 { &:before { content: \\"\\\\e158\\"; } }\\n.glyphicon-collapse-down          { &:before { content: \\"\\\\e159\\"; } }\\n.glyphicon-collapse-up            { &:before { content: \\"\\\\e160\\"; } }\\n.glyphicon-log-in                 { &:before { content: \\"\\\\e161\\"; } }\\n.glyphicon-flash                  { &:before { content: \\"\\\\e162\\"; } }\\n.glyphicon-log-out                { &:before { content: \\"\\\\e163\\"; } }\\n.glyphicon-new-window             { &:before { content: \\"\\\\e164\\"; } }\\n.glyphicon-record                 { &:before { content: \\"\\\\e165\\"; } }\\n.glyphicon-save                   { &:before { content: \\"\\\\e166\\"; } }\\n.glyphicon-open                   { &:before { content: \\"\\\\e167\\"; } }\\n.glyphicon-saved                  { &:before { content: \\"\\\\e168\\"; } }\\n.glyphicon-import                 { &:before { content: \\"\\\\e169\\"; } }\\n.glyphicon-export                 { &:before { content: \\"\\\\e170\\"; } }\\n.glyphicon-send                   { &:before { content: \\"\\\\e171\\"; } }\\n.glyphicon-floppy-disk            { &:before { content: \\"\\\\e172\\"; } }\\n.glyphicon-floppy-saved           { &:before { content: \\"\\\\e173\\"; } }\\n.glyphicon-floppy-remove          { &:before { content: \\"\\\\e174\\"; } }\\n.glyphicon-floppy-save            { &:before { content: \\"\\\\e175\\"; } }\\n.glyphicon-floppy-open            { &:before { content: \\"\\\\e176\\"; } }\\n.glyphicon-credit-card            { &:before { content: \\"\\\\e177\\"; } }\\n.glyphicon-transfer               { &:before { content: \\"\\\\e178\\"; } }\\n.glyphicon-cutlery                { &:before { content: \\"\\\\e179\\"; } }\\n.glyphicon-header                 { &:before { content: \\"\\\\e180\\"; } }\\n.glyphicon-compressed             { &:before { content: \\"\\\\e181\\"; } }\\n.glyphicon-earphone               { &:before { content: \\"\\\\e182\\"; } }\\n.glyphicon-phone-alt              { &:before { content: \\"\\\\e183\\"; } }\\n.glyphicon-tower                  { &:before { content: \\"\\\\e184\\"; } }\\n.glyphicon-stats                  { &:before { content: \\"\\\\e185\\"; } }\\n.glyphicon-sd-video               { &:before { content: \\"\\\\e186\\"; } }\\n.glyphicon-hd-video               { &:before { content: \\"\\\\e187\\"; } }\\n.glyphicon-subtitles              { &:before { content: \\"\\\\e188\\"; } }\\n.glyphicon-sound-stereo           { &:before { content: \\"\\\\e189\\"; } }\\n.glyphicon-sound-dolby            { &:before { content: \\"\\\\e190\\"; } }\\n.glyphicon-sound-5-1              { &:before { content: \\"\\\\e191\\"; } }\\n.glyphicon-sound-6-1              { &:before { content: \\"\\\\e192\\"; } }\\n.glyphicon-sound-7-1              { &:before { content: \\"\\\\e193\\"; } }\\n.glyphicon-copyright-mark         { &:before { content: \\"\\\\e194\\"; } }\\n.glyphicon-registration-mark      { &:before { content: \\"\\\\e195\\"; } }\\n.glyphicon-cloud-download         { &:before { content: \\"\\\\e197\\"; } }\\n.glyphicon-cloud-upload           { &:before { content: \\"\\\\e198\\"; } }\\n.glyphicon-tree-conifer           { &:before { content: \\"\\\\e199\\"; } }\\n.glyphicon-tree-deciduous         { &:before { content: \\"\\\\e200\\"; } }\\n.glyphicon-cd                     { &:before { content: \\"\\\\e201\\"; } }\\n.glyphicon-save-file              { &:before { content: \\"\\\\e202\\"; } }\\n.glyphicon-open-file              { &:before { content: \\"\\\\e203\\"; } }\\n.glyphicon-level-up               { &:before { content: \\"\\\\e204\\"; } }\\n.glyphicon-copy                   { &:before { content: \\"\\\\e205\\"; } }\\n.glyphicon-paste                  { &:before { content: \\"\\\\e206\\"; } }\\n// The following 2 Glyphicons are omitted for the time being because\\n// they currently use Unicode codepoints that are outside the\\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can\'t handle\\n// non-BMP codepoints in CSS string escapes, and thus can\'t display these two icons.\\n// Notably, the bug affects some older versions of the Android Browser.\\n// More info: https://github.com/twbs/bootstrap/issues/10106\\n// .glyphicon-door                   { &:before { content: \\"\\\\1f6aa\\"; } }\\n// .glyphicon-key                    { &:before { content: \\"\\\\1f511\\"; } }\\n.glyphicon-alert                  { &:before { content: \\"\\\\e209\\"; } }\\n.glyphicon-equalizer              { &:before { content: \\"\\\\e210\\"; } }\\n.glyphicon-king                   { &:before { content: \\"\\\\e211\\"; } }\\n.glyphicon-queen                  { &:before { content: \\"\\\\e212\\"; } }\\n.glyphicon-pawn                   { &:before { content: \\"\\\\e213\\"; } }\\n.glyphicon-bishop                 { &:before { content: \\"\\\\e214\\"; } }\\n.glyphicon-knight                 { &:before { content: \\"\\\\e215\\"; } }\\n.glyphicon-baby-formula           { &:before { content: \\"\\\\e216\\"; } }\\n.glyphicon-tent                   { &:before { content: \\"\\\\26fa\\"; } }\\n.glyphicon-blackboard             { &:before { content: \\"\\\\e218\\"; } }\\n.glyphicon-bed                    { &:before { content: \\"\\\\e219\\"; } }\\n.glyphicon-apple                  { &:before { content: \\"\\\\f8ff\\"; } }\\n.glyphicon-erase                  { &:before { content: \\"\\\\e221\\"; } }\\n.glyphicon-hourglass              { &:before { content: \\"\\\\231b\\"; } }\\n.glyphicon-lamp                   { &:before { content: \\"\\\\e223\\"; } }\\n.glyphicon-duplicate              { &:before { content: \\"\\\\e224\\"; } }\\n.glyphicon-piggy-bank             { &:before { content: \\"\\\\e225\\"; } }\\n.glyphicon-scissors               { &:before { content: \\"\\\\e226\\"; } }\\n.glyphicon-bitcoin                { &:before { content: \\"\\\\e227\\"; } }\\n.glyphicon-btc                    { &:before { content: \\"\\\\e227\\"; } }\\n.glyphicon-xbt                    { &:before { content: \\"\\\\e227\\"; } }\\n.glyphicon-yen                    { &:before { content: \\"\\\\00a5\\"; } }\\n.glyphicon-jpy                    { &:before { content: \\"\\\\00a5\\"; } }\\n.glyphicon-ruble                  { &:before { content: \\"\\\\20bd\\"; } }\\n.glyphicon-rub                    { &:before { content: \\"\\\\20bd\\"; } }\\n.glyphicon-scale                  { &:before { content: \\"\\\\e230\\"; } }\\n.glyphicon-ice-lolly              { &:before { content: \\"\\\\e231\\"; } }\\n.glyphicon-ice-lolly-tasted       { &:before { content: \\"\\\\e232\\"; } }\\n.glyphicon-education              { &:before { content: \\"\\\\e233\\"; } }\\n.glyphicon-option-horizontal      { &:before { content: \\"\\\\e234\\"; } }\\n.glyphicon-option-vertical        { &:before { content: \\"\\\\e235\\"; } }\\n.glyphicon-menu-hamburger         { &:before { content: \\"\\\\e236\\"; } }\\n.glyphicon-modal-window           { &:before { content: \\"\\\\e237\\"; } }\\n.glyphicon-oil                    { &:before { content: \\"\\\\e238\\"; } }\\n.glyphicon-grain                  { &:before { content: \\"\\\\e239\\"; } }\\n.glyphicon-sunglasses             { &:before { content: \\"\\\\e240\\"; } }\\n.glyphicon-text-size              { &:before { content: \\"\\\\e241\\"; } }\\n.glyphicon-text-color             { &:before { content: \\"\\\\e242\\"; } }\\n.glyphicon-text-background        { &:before { content: \\"\\\\e243\\"; } }\\n.glyphicon-object-align-top       { &:before { content: \\"\\\\e244\\"; } }\\n.glyphicon-object-align-bottom    { &:before { content: \\"\\\\e245\\"; } }\\n.glyphicon-object-align-horizontal{ &:before { content: \\"\\\\e246\\"; } }\\n.glyphicon-object-align-left      { &:before { content: \\"\\\\e247\\"; } }\\n.glyphicon-object-align-vertical  { &:before { content: \\"\\\\e248\\"; } }\\n.glyphicon-object-align-right     { &:before { content: \\"\\\\e249\\"; } }\\n.glyphicon-triangle-right         { &:before { content: \\"\\\\e250\\"; } }\\n.glyphicon-triangle-left          { &:before { content: \\"\\\\e251\\"; } }\\n.glyphicon-triangle-bottom        { &:before { content: \\"\\\\e252\\"; } }\\n.glyphicon-triangle-top           { &:before { content: \\"\\\\e253\\"; } }\\n.glyphicon-console                { &:before { content: \\"\\\\e254\\"; } }\\n.glyphicon-superscript            { &:before { content: \\"\\\\e255\\"; } }\\n.glyphicon-subscript              { &:before { content: \\"\\\\e256\\"; } }\\n.glyphicon-menu-left              { &:before { content: \\"\\\\e257\\"; } }\\n.glyphicon-menu-right             { &:before { content: \\"\\\\e258\\"; } }\\n.glyphicon-menu-down              { &:before { content: \\"\\\\e259\\"; } }\\n.glyphicon-menu-up                { &:before { content: \\"\\\\e260\\"; } }\\n","//\\n// Modals\\n// --------------------------------------------------\\n\\n// .modal-open      - body class for killing the scroll\\n// .modal           - container to scroll within\\n// .modal-dialog    - positioning shell for the actual modal\\n// .modal-content   - actual modal w/ bg and corners and shit\\n\\n// Kill the scroll on the body\\n.modal-open {\\n  overflow: hidden;\\n}\\n\\n// Container that the modal scrolls within\\n.modal {\\n  display: none;\\n  overflow: hidden;\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: @zindex-modal;\\n  -webkit-overflow-scrolling: touch;\\n\\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\\n  // https://github.com/twbs/bootstrap/pull/10951.\\n  outline: 0;\\n\\n  // When fading in the modal, animate it to slide down\\n  &.fade .modal-dialog {\\n    .translate(0, -25%);\\n    .transition-transform(~\\"0.3s ease-out\\");\\n  }\\n  &.in .modal-dialog { .translate(0, 0) }\\n}\\n.modal-open .modal {\\n  overflow-x: hidden;\\n  overflow-y: auto;\\n}\\n\\n// Shell div to position the modal with bottom padding\\n.modal-dialog {\\n  position: relative;\\n  width: auto;\\n  margin: 10px;\\n}\\n\\n// Actual modal\\n.modal-content {\\n  position: relative;\\n  background-color: @modal-content-bg;\\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\\n  border: 1px solid @modal-content-border-color;\\n  border-radius: @border-radius-large;\\n  .box-shadow(0 3px 9px rgba(0,0,0,.5));\\n  background-clip: padding-box;\\n  // Remove focus outline from opened modal\\n  outline: 0;\\n}\\n\\n// Modal background\\n.modal-backdrop {\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: @zindex-modal-background;\\n  background-color: @modal-backdrop-bg;\\n  // Fade for backdrop\\n  &.fade { .opacity(0); }\\n  &.in { .opacity(@modal-backdrop-opacity); }\\n}\\n\\n// Modal header\\n// Top section of the modal w/ title and dismiss\\n.modal-header {\\n  padding: @modal-title-padding;\\n  border-bottom: 1px solid @modal-header-border-color;\\n  &:extend(.clearfix all);\\n}\\n// Close icon\\n.modal-header .close {\\n  margin-top: -2px;\\n}\\n\\n// Title text within header\\n.modal-title {\\n  margin: 0;\\n  line-height: @modal-title-line-height;\\n}\\n\\n// Modal body\\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\\n.modal-body {\\n  position: relative;\\n  padding: @modal-inner-padding;\\n}\\n\\n// Footer (for actions)\\n.modal-footer {\\n  padding: @modal-inner-padding;\\n  text-align: right; // right align buttons\\n  border-top: 1px solid @modal-footer-border-color;\\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\\n\\n  // Properly space out buttons\\n  .btn + .btn {\\n    margin-left: 5px;\\n    margin-bottom: 0; // account for input[type=\\"submit\\"] which gets the bottom margin like all other inputs\\n  }\\n  // but override that for button groups\\n  .btn-group .btn + .btn {\\n    margin-left: -1px;\\n  }\\n  // and override it for block buttons as well\\n  .btn-block + .btn-block {\\n    margin-left: 0;\\n  }\\n}\\n\\n// Measure scrollbar width for padding body during modal show/hide\\n.modal-scrollbar-measure {\\n  position: absolute;\\n  top: -9999px;\\n  width: 50px;\\n  height: 50px;\\n  overflow: scroll;\\n}\\n\\n// Scale up the modal\\n@media (min-width: @screen-sm-min) {\\n  // Automatically set modal\'s width for larger viewports\\n  .modal-dialog {\\n    width: @modal-md;\\n    margin: 30px auto;\\n  }\\n  .modal-content {\\n    .box-shadow(0 5px 15px rgba(0,0,0,.5));\\n  }\\n\\n  // Modal sizes\\n  .modal-sm { width: @modal-sm; }\\n}\\n\\n@media (min-width: @screen-md-min) {\\n  .modal-lg { width: @modal-lg; }\\n}\\n","@import \\"@{bowerPath}/bootstrap/less/variables.less\\";\\n@icon-font-path: \\"@{bowerPath}/bootstrap/dist/fonts/\\";\\n@import \\"@{bowerPath}/bootstrap/less/mixins.less\\";\\n@import \\"@{bowerPath}/bootstrap/less/glyphicons.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/modals.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/buttons.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/button-groups.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/progress-bars.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/close.less\\";\\n\\n\\n/* buttons */\\n.plone-btn{ .btn() }\\n.plone-btn-lg{ .btn-lg() }\\n.plone-btn-xs{ .btn-xs() }\\n.plone-btn-sm{ .btn-xs() }\\n\\n.plone-btn-primary{ .btn-primary() }\\n.plone-btn-warning{ .btn-warning() }\\n.plone-btn-default{ .btn-default() }\\n.plone-btn-success{ .btn-success() }\\n.plone-btn-info{ .btn-info() }\\n.plone-btn-danger{ .btn-danger() }\\n.plone-btn-link{ .btn-link() }\\n\\n.plone-btn-group {\\n  .plone-btn + .plone-btn,\\n  .plone-btn + .plone-btn-group,\\n  .plone-btn-group + .plone-btn,\\n  .plone-btn-group + .plone-btn-group {\\n    margin-left: -1px;\\n  }\\n}\\n\\n.plone-btn-block { .btn-block() }\\n\\n.plone-close { .close() }\\n\\n\\n/* modals */\\n.plone-modal{ .modal() }\\n.plone-modal-header{ .modal-header() }\\n.plone-modal-title{ .modal-title() }\\n.plone-modal-body{ .modal-body() }\\n.plone-modal-footer{ .modal-footer() }\\n.plone-modal-backdrop{ .modal-backdrop() }\\n\\n\\n/* progress */\\n.plone-progress{ .progress() }\\n.plone-progress-bar-striped{ .progress-bar-striped() }\\n.plone-progress-bar{ .progress-bar() }\\n\\n/* rotate transforms */\\n.rright {\\n    /* right-rotate by 90\xc2\xb0 */\\n    -ms-transform: rotate(90deg); /* IE 9 */\\n    -webkit-transform: rotate(90deg); /* iOS, Android */\\n    transform: rotate(90deg);\\n}\\n.rleft {\\n    /* left-rotate by 90\xc2\xb0 */\\n    -ms-transform: rotate(-90deg); /* IE 9 */\\n    -webkit-transform: rotate(-90deg); /* iOS, Android */\\n    transform: rotate(-90deg);\\n}\\n","//\\n// Buttons\\n// --------------------------------------------------\\n\\n\\n// Base styles\\n// --------------------------------------------------\\n\\n.btn {\\n  display: inline-block;\\n  margin-bottom: 0; // For input.btn\\n  font-weight: @btn-font-weight;\\n  text-align: center;\\n  vertical-align: middle;\\n  touch-action: manipulation;\\n  cursor: pointer;\\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\\n  border: 1px solid transparent;\\n  white-space: nowrap;\\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\\n  .user-select(none);\\n\\n  &,\\n  &:active,\\n  &.active {\\n    &:focus,\\n    &.focus {\\n      .tab-focus();\\n    }\\n  }\\n\\n  &:hover,\\n  &:focus,\\n  &.focus {\\n    color: @btn-default-color;\\n    text-decoration: none;\\n  }\\n\\n  &:active,\\n  &.active {\\n    outline: 0;\\n    background-image: none;\\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\\n  }\\n\\n  &.disabled,\\n  &[disabled],\\n  fieldset[disabled] & {\\n    cursor: @cursor-disabled;\\n    .opacity(.65);\\n    .box-shadow(none);\\n  }\\n\\n  a& {\\n    &.disabled,\\n    fieldset[disabled] & {\\n      pointer-events: none; // Future-proof disabling of clicks on `` elements\\n    }\\n  }\\n}\\n\\n\\n// Alternate buttons\\n// --------------------------------------------------\\n\\n.btn-default {\\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\\n}\\n.btn-primary {\\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\\n}\\n// Success appears as green\\n.btn-success {\\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\\n}\\n// Info appears as blue-green\\n.btn-info {\\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\\n}\\n// Warning appears as orange\\n.btn-warning {\\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\\n}\\n// Danger and error appear as red\\n.btn-danger {\\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\\n}\\n\\n\\n// Link buttons\\n// -------------------------\\n\\n// Make a button look and behave like a link\\n.btn-link {\\n  color: @link-color;\\n  font-weight: normal;\\n  border-radius: 0;\\n\\n  &,\\n  &:active,\\n  &.active,\\n  &[disabled],\\n  fieldset[disabled] & {\\n    background-color: transparent;\\n    .box-shadow(none);\\n  }\\n  &,\\n  &:hover,\\n  &:focus,\\n  &:active {\\n    border-color: transparent;\\n  }\\n  &:hover,\\n  &:focus {\\n    color: @link-hover-color;\\n    text-decoration: @link-hover-decoration;\\n    background-color: transparent;\\n  }\\n  &[disabled],\\n  fieldset[disabled] & {\\n    &:hover,\\n    &:focus {\\n      color: @btn-link-disabled-color;\\n      text-decoration: none;\\n    }\\n  }\\n}\\n\\n\\n// Button Sizes\\n// --------------------------------------------------\\n\\n.btn-lg {\\n  // line-height: ensure even-numbered height of button next to large input\\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\\n}\\n.btn-sm {\\n  // line-height: ensure proper height of button next to small input\\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\\n}\\n.btn-xs {\\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\\n}\\n\\n\\n// Block button\\n// --------------------------------------------------\\n\\n.btn-block {\\n  display: block;\\n  width: 100%;\\n}\\n\\n// Vertically space out multiple block buttons\\n.btn-block + .btn-block {\\n  margin-top: 5px;\\n}\\n\\n// Specificity overrides\\ninput[type=\\"submit\\"],\\ninput[type=\\"reset\\"],\\ninput[type=\\"button\\"] {\\n  &.btn-block {\\n    width: 100%;\\n  }\\n}\\n","//\\n// Close icons\\n// --------------------------------------------------\\n\\n\\n.close {\\n  float: right;\\n  font-size: (@font-size-base * 1.5);\\n  font-weight: @close-font-weight;\\n  line-height: 1;\\n  color: @close-color;\\n  text-shadow: @close-text-shadow;\\n  .opacity(.2);\\n\\n  &:hover,\\n  &:focus {\\n    color: @close-color;\\n    text-decoration: none;\\n    cursor: pointer;\\n    .opacity(.5);\\n  }\\n\\n  // Additional properties for button version\\n  // iOS requires the button element instead of an anchor tag.\\n  // If you want the anchor version, it requires `href=\\"#\\"`.\\n  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\\n  button& {\\n    padding: 0;\\n    cursor: pointer;\\n    background: transparent;\\n    border: 0;\\n    -webkit-appearance: none;\\n  }\\n}\\n","//\\n// Progress bars\\n// --------------------------------------------------\\n\\n\\n// Bar animations\\n// -------------------------\\n\\n// WebKit\\n@-webkit-keyframes progress-bar-stripes {\\n  from  { background-position: 40px 0; }\\n  to    { background-position: 0 0; }\\n}\\n\\n// Spec and IE10+\\n@keyframes progress-bar-stripes {\\n  from  { background-position: 40px 0; }\\n  to    { background-position: 0 0; }\\n}\\n\\n\\n// Bar itself\\n// -------------------------\\n\\n// Outer container\\n.progress {\\n  overflow: hidden;\\n  height: @line-height-computed;\\n  margin-bottom: @line-height-computed;\\n  background-color: @progress-bg;\\n  border-radius: @progress-border-radius;\\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\\n}\\n\\n// Bar of progress\\n.progress-bar {\\n  float: left;\\n  width: 0%;\\n  height: 100%;\\n  font-size: @font-size-small;\\n  line-height: @line-height-computed;\\n  color: @progress-bar-color;\\n  text-align: center;\\n  background-color: @progress-bar-bg;\\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\\n  .transition(width .6s ease);\\n}\\n\\n// Striped bars\\n//\\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\\n// `.progress-bar-striped` class, which you just add to an existing\\n// `.progress-bar`.\\n.progress-striped .progress-bar,\\n.progress-bar-striped {\\n  #gradient > .striped();\\n  background-size: 40px 40px;\\n}\\n\\n// Call animation for the active one\\n//\\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\\n// `.progress-bar.active` approach.\\n.progress.active .progress-bar,\\n.progress-bar.active {\\n  .animation(progress-bar-stripes 2s linear infinite);\\n}\\n\\n\\n// Variations\\n// -------------------------\\n\\n.progress-bar-success {\\n  .progress-bar-variant(@progress-bar-success-bg);\\n}\\n\\n.progress-bar-info {\\n  .progress-bar-variant(@progress-bar-info-bg);\\n}\\n\\n.progress-bar-warning {\\n  .progress-bar-variant(@progress-bar-warning-bg);\\n}\\n\\n.progress-bar-danger {\\n  .progress-bar-variant(@progress-bar-danger-bg);\\n}\\n","// Gradients\\n\\n#gradient {\\n\\n  // Horizontal gradient, from left to right\\n  //\\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\\n  // Color stops are not available in IE9 and below.\\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\\n    background-repeat: repeat-x;\\n    filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=1)\\",argb(@start-color),argb(@end-color))); // IE9 and down\\n  }\\n\\n  // Vertical gradient, from top to bottom\\n  //\\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\\n  // Color stops are not available in IE9 and below.\\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\\n    background-repeat: repeat-x;\\n    filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=0)\\",argb(@start-color),argb(@end-color))); // IE9 and down\\n  }\\n\\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\\n    background-repeat: repeat-x;\\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\\n  }\\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\\n    background-repeat: no-repeat;\\n    filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=1)\\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\\n  }\\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\\n    background-repeat: no-repeat;\\n    filter: e(%(\\"progid:DXImageTransform.Microsoft.gradient(startColorstr=\'%d\', endColorstr=\'%d\', GradientType=0)\\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\\n  }\\n  .radial(@inner-color: #555; @outer-color: #333) {\\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\\n    background-repeat: no-repeat;\\n  }\\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\\n  }\\n}\\n","@import \\"@{bowerPath}/bootstrap/less/variables.less\\";\\n@import \\"@{bowerPath}/bootstrap/less/mixins.less\\";\\n@import (reference) \\"@{bowerPath}/bootstrap/less/tooltip.less\\";\\n\\n.mockup-tooltip {\\n    &.tooltip:extend(.tooltip all){}\\n    .tooltip-arrow:extend(.tooltip-arrow all){}\\n    .tooltip-inner:extend(.tooltip-inner all){}\\n}\\n","//\\n// Tooltips\\n// --------------------------------------------------\\n\\n\\n// Base class\\n.tooltip {\\n  position: absolute;\\n  z-index: @zindex-tooltip;\\n  display: block;\\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\\n  // So reset our font and text properties to avoid inheriting weird values.\\n  .reset-text();\\n  font-size: @font-size-small;\\n\\n  .opacity(0);\\n\\n  &.in     { .opacity(@tooltip-opacity); }\\n  &.top    { margin-top:  -3px; padding: @tooltip-arrow-width 0; }\\n  &.right  { margin-left:  3px; padding: 0 @tooltip-arrow-width; }\\n  &.bottom { margin-top:   3px; padding: @tooltip-arrow-width 0; }\\n  &.left   { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\\n}\\n\\n// Wrapper for the tooltip content\\n.tooltip-inner {\\n  max-width: @tooltip-max-width;\\n  padding: 3px 8px;\\n  color: @tooltip-color;\\n  text-align: center;\\n  background-color: @tooltip-bg;\\n  border-radius: @border-radius-base;\\n}\\n\\n// Arrows\\n.tooltip-arrow {\\n  position: absolute;\\n  width: 0;\\n  height: 0;\\n  border-color: transparent;\\n  border-style: solid;\\n}\\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\\n.tooltip {\\n  &.top .tooltip-arrow {\\n    bottom: 0;\\n    left: 50%;\\n    margin-left: -@tooltip-arrow-width;\\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\\n    border-top-color: @tooltip-arrow-color;\\n  }\\n  &.top-left .tooltip-arrow {\\n    bottom: 0;\\n    right: @tooltip-arrow-width;\\n    margin-bottom: -@tooltip-arrow-width;\\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\\n    border-top-color: @tooltip-arrow-color;\\n  }\\n  &.top-right .tooltip-arrow {\\n    bottom: 0;\\n    left: @tooltip-arrow-width;\\n    margin-bottom: -@tooltip-arrow-width;\\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\\n    border-top-color: @tooltip-arrow-color;\\n  }\\n  &.right .tooltip-arrow {\\n    top: 50%;\\n    left: 0;\\n    margin-top: -@tooltip-arrow-width;\\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\\n    border-right-color: @tooltip-arrow-color;\\n  }\\n  &.left .tooltip-arrow {\\n    top: 50%;\\n    right: 0;\\n    margin-top: -@tooltip-arrow-width;\\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\\n    border-left-color: @tooltip-arrow-color;\\n  }\\n  &.bottom .tooltip-arrow {\\n    top: 0;\\n    left: 50%;\\n    margin-left: -@tooltip-arrow-width;\\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\\n    border-bottom-color: @tooltip-arrow-color;\\n  }\\n  &.bottom-left .tooltip-arrow {\\n    top: 0;\\n    right: @tooltip-arrow-width;\\n    margin-top: -@tooltip-arrow-width;\\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\\n    border-bottom-color: @tooltip-arrow-color;\\n  }\\n  &.bottom-right .tooltip-arrow {\\n    top: 0;\\n    left: @tooltip-arrow-width;\\n    margin-top: -@tooltip-arrow-width;\\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\\n    border-bottom-color: @tooltip-arrow-color;\\n  }\\n}\\n",".reset-text() {\\n  font-family: @font-family-base;\\n  // We deliberately do NOT reset font-size.\\n  font-style: normal;\\n  font-weight: normal;\\n  letter-spacing: normal;\\n  line-break: auto;\\n  line-height: @line-height-base;\\n  text-align: left; // Fallback for where `start` is not supported\\n  text-align: start;\\n  text-decoration: none;\\n  text-shadow: none;\\n  text-transform: none;\\n  white-space: normal;\\n  word-break: normal;\\n  word-spacing: normal;\\n  word-wrap: normal;\\n}\\n","//\\n// Variables\\n// --------------------------------------------------\\n\\n\\n//== Colors\\n//\\n//## Gray and brand colors for use across Bootstrap.\\n\\n@gray-base:              #000;\\n@gray-darker:            lighten(@gray-base, 13.5%); // #222\\n@gray-dark:              lighten(@gray-base, 20%);   // #333\\n@gray:                   lighten(@gray-base, 33.5%); // #555\\n@gray-light:             lighten(@gray-base, 46.7%); // #777\\n@gray-lighter:           lighten(@gray-base, 93.5%); // #eee\\n\\n@brand-primary:         darken(#428bca, 6.5%); // #337ab7\\n@brand-success:         #5cb85c;\\n@brand-info:            #5bc0de;\\n@brand-warning:         #f0ad4e;\\n@brand-danger:          #d9534f;\\n\\n\\n//== Scaffolding\\n//\\n//## Settings for some of the most global styles.\\n\\n//** Background color for ``.\\n@body-bg:               #fff;\\n//** Global text color on ``.\\n@text-color:            @gray-dark;\\n\\n//** Global textual link color.\\n@link-color:            @brand-primary;\\n//** Link hover color set via `darken()` function.\\n@link-hover-color:      darken(@link-color, 15%);\\n//** Link hover decoration.\\n@link-hover-decoration: underline;\\n\\n\\n//== Typography\\n//\\n//## Font, line-height, and color for body text, headings, and more.\\n\\n@font-family-sans-serif:  \\"Helvetica Neue\\", Helvetica, Arial, sans-serif;\\n@font-family-serif:       Georgia, \\"Times New Roman\\", Times, serif;\\n//** Default monospace fonts for ``, ``, and `
`.\\n@font-family-monospace:   Menlo, Monaco, Consolas, \\"Courier New\\", monospace;\\n@font-family-base:        @font-family-sans-serif;\\n\\n@font-size-base:          14px;\\n@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px\\n@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px\\n\\n@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px\\n@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px\\n@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px\\n@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px\\n@font-size-h5:            @font-size-base;\\n@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px\\n\\n//** Unit-less `line-height` for use in components like buttons.\\n@line-height-base:        1.428571429; // 20/14\\n//** Computed \\"line-height\\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\\n@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px\\n\\n//** By default, this inherits from the ``.\\n@headings-font-family:    inherit;\\n@headings-font-weight:    500;\\n@headings-line-height:    1.1;\\n@headings-color:          inherit;\\n\\n\\n//== Iconography\\n//\\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\\n\\n//** Load fonts from this directory.\\n@icon-font-path:          \\"../fonts/\\";\\n//** File name for all font files.\\n@icon-font-name:          \\"glyphicons-halflings-regular\\";\\n//** Element ID within SVG icon file.\\n@icon-font-svg-id:        \\"glyphicons_halflingsregular\\";\\n\\n\\n//== Components\\n//\\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\\n\\n@padding-base-vertical:     6px;\\n@padding-base-horizontal:   12px;\\n\\n@padding-large-vertical:    10px;\\n@padding-large-horizontal:  16px;\\n\\n@padding-small-vertical:    5px;\\n@padding-small-horizontal:  10px;\\n\\n@padding-xs-vertical:       1px;\\n@padding-xs-horizontal:     5px;\\n\\n@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome\\n@line-height-small:         1.5;\\n\\n@border-radius-base:        4px;\\n@border-radius-large:       6px;\\n@border-radius-small:       3px;\\n\\n//** Global color for active items (e.g., navs or dropdowns).\\n@component-active-color:    #fff;\\n//** Global background color for active items (e.g., navs or dropdowns).\\n@component-active-bg:       @brand-primary;\\n\\n//** Width of the `border` for generating carets that indicator dropdowns.\\n@caret-width-base:          4px;\\n//** Carets increase slightly in size for larger components.\\n@caret-width-large:         5px;\\n\\n\\n//== Tables\\n//\\n//## Customizes the `.table` component with basic values, each used across all table variations.\\n\\n//** Padding for ``s and ``s.\\n@table-cell-padding:            8px;\\n//** Padding for cells in `.table-condensed`.\\n@table-condensed-cell-padding:  5px;\\n\\n//** Default background color used for all tables.\\n@table-bg:                      transparent;\\n//** Background color used for `.table-striped`.\\n@table-bg-accent:               #f9f9f9;\\n//** Background color used for `.table-hover`.\\n@table-bg-hover:                #f5f5f5;\\n@table-bg-active:               @table-bg-hover;\\n\\n//** Border color for table and cell borders.\\n@table-border-color:            #ddd;\\n\\n\\n//== Buttons\\n//\\n//## For each of Bootstrap\'s buttons, define text, background and border color.\\n\\n@btn-font-weight:                normal;\\n\\n@btn-default-color:              #333;\\n@btn-default-bg:                 #fff;\\n@btn-default-border:             #ccc;\\n\\n@btn-primary-color:              #fff;\\n@btn-primary-bg:                 @brand-primary;\\n@btn-primary-border:             darken(@btn-primary-bg, 5%);\\n\\n@btn-success-color:              #fff;\\n@btn-success-bg:                 @brand-success;\\n@btn-success-border:             darken(@btn-success-bg, 5%);\\n\\n@btn-info-color:                 #fff;\\n@btn-info-bg:                    @brand-info;\\n@btn-info-border:                darken(@btn-info-bg, 5%);\\n\\n@btn-warning-color:              #fff;\\n@btn-warning-bg:                 @brand-warning;\\n@btn-warning-border:             darken(@btn-warning-bg, 5%);\\n\\n@btn-danger-color:               #fff;\\n@btn-danger-bg:                  @brand-danger;\\n@btn-danger-border:              darken(@btn-danger-bg, 5%);\\n\\n@btn-link-disabled-color:        @gray-light;\\n\\n// Allows for customizing button radius independently from global border radius\\n@btn-border-radius-base:         @border-radius-base;\\n@btn-border-radius-large:        @border-radius-large;\\n@btn-border-radius-small:        @border-radius-small;\\n\\n\\n//== Forms\\n//\\n//##\\n\\n//** `` background color\\n@input-bg:                       #fff;\\n//** `` background color\\n@input-bg-disabled:              @gray-lighter;\\n\\n//** Text color for ``s\\n@input-color:                    @gray;\\n//** `` border color\\n@input-border:                   #ccc;\\n\\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\\n//** Default `.form-control` border radius\\n// This has no effect on ``s in CSS.\\n@input-border-radius:            @border-radius-base;\\n//** Large `.form-control` border radius\\n@input-border-radius-large:      @border-radius-large;\\n//** Small `.form-control` border radius\\n@input-border-radius-small:      @border-radius-small;\\n\\n//** Border color for inputs on focus\\n@input-border-focus:             #66afe9;\\n\\n//** Placeholder text color\\n@input-color-placeholder:        #999;\\n\\n//** Default `.form-control` height\\n@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);\\n//** Large `.form-control` height\\n@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\\n//** Small `.form-control` height\\n@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\\n\\n//** `.form-group` margin\\n@form-group-margin-bottom:       15px;\\n\\n@legend-color:                   @gray-dark;\\n@legend-border-color:            #e5e5e5;\\n\\n//** Background color for textual input addons\\n@input-group-addon-bg:           @gray-lighter;\\n//** Border color for textual input addons\\n@input-group-addon-border-color: @input-border;\\n\\n//** Disabled cursor for form controls and buttons.\\n@cursor-disabled:                not-allowed;\\n\\n\\n//== Dropdowns\\n//\\n//## Dropdown menu container and contents.\\n\\n//** Background for the dropdown menu.\\n@dropdown-bg:                    #fff;\\n//** Dropdown menu `border-color`.\\n@dropdown-border:                rgba(0,0,0,.15);\\n//** Dropdown menu `border-color` **for IE8**.\\n@dropdown-fallback-border:       #ccc;\\n//** Divider color for between dropdown items.\\n@dropdown-divider-bg:            #e5e5e5;\\n\\n//** Dropdown link text color.\\n@dropdown-link-color:            @gray-dark;\\n//** Hover color for dropdown links.\\n@dropdown-link-hover-color:      darken(@gray-dark, 5%);\\n//** Hover background for dropdown links.\\n@dropdown-link-hover-bg:         #f5f5f5;\\n\\n//** Active dropdown menu item text color.\\n@dropdown-link-active-color:     @component-active-color;\\n//** Active dropdown menu item background color.\\n@dropdown-link-active-bg:        @component-active-bg;\\n\\n//** Disabled dropdown menu item background color.\\n@dropdown-link-disabled-color:   @gray-light;\\n\\n//** Text color for headers within dropdown menus.\\n@dropdown-header-color:          @gray-light;\\n\\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\\n@dropdown-caret-color:           #000;\\n\\n\\n//-- Z-index master list\\n//\\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\\n// of components dependent on the z-axis and are designed to all work together.\\n//\\n// Note: These variables are not generated into the Customizer.\\n\\n@zindex-navbar:            1000;\\n@zindex-dropdown:          1000;\\n@zindex-popover:           1060;\\n@zindex-tooltip:           1070;\\n@zindex-navbar-fixed:      1030;\\n@zindex-modal-background:  1040;\\n@zindex-modal:             1050;\\n\\n\\n//== Media queries breakpoints\\n//\\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\\n\\n// Extra small screen / phone\\n//** Deprecated `@screen-xs` as of v3.0.1\\n@screen-xs:                  480px;\\n//** Deprecated `@screen-xs-min` as of v3.2.0\\n@screen-xs-min:              @screen-xs;\\n//** Deprecated `@screen-phone` as of v3.0.1\\n@screen-phone:               @screen-xs-min;\\n\\n// Small screen / tablet\\n//** Deprecated `@screen-sm` as of v3.0.1\\n@screen-sm:                  768px;\\n@screen-sm-min:              @screen-sm;\\n//** Deprecated `@screen-tablet` as of v3.0.1\\n@screen-tablet:              @screen-sm-min;\\n\\n// Medium screen / desktop\\n//** Deprecated `@screen-md` as of v3.0.1\\n@screen-md:                  992px;\\n@screen-md-min:              @screen-md;\\n//** Deprecated `@screen-desktop` as of v3.0.1\\n@screen-desktop:             @screen-md-min;\\n\\n// Large screen / wide desktop\\n//** Deprecated `@screen-lg` as of v3.0.1\\n@screen-lg:                  1200px;\\n@screen-lg-min:              @screen-lg;\\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\\n@screen-lg-desktop:          @screen-lg-min;\\n\\n// So media queries don\'t overlap when required, provide a maximum\\n@screen-xs-max:              (@screen-sm-min - 1);\\n@screen-sm-max:              (@screen-md-min - 1);\\n@screen-md-max:              (@screen-lg-min - 1);\\n\\n\\n//== Grid system\\n//\\n//## Define your custom responsive grid.\\n\\n//** Number of columns in the grid.\\n@grid-columns:              12;\\n//** Padding between columns. Gets divided in half for the left and right.\\n@grid-gutter-width:         30px;\\n// Navbar collapse\\n//** Point at which the navbar becomes uncollapsed.\\n@grid-float-breakpoint:     @screen-sm-min;\\n//** Point at which the navbar begins collapsing.\\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\\n\\n\\n//== Container sizes\\n//\\n//## Define the maximum width of `.container` for different screen sizes.\\n\\n// Small screen / tablet\\n@container-tablet:             (720px + @grid-gutter-width);\\n//** For `@screen-sm-min` and up.\\n@container-sm:                 @container-tablet;\\n\\n// Medium screen / desktop\\n@container-desktop:            (940px + @grid-gutter-width);\\n//** For `@screen-md-min` and up.\\n@container-md:                 @container-desktop;\\n\\n// Large screen / wide desktop\\n@container-large-desktop:      (1140px + @grid-gutter-width);\\n//** For `@screen-lg-min` and up.\\n@container-lg:                 @container-large-desktop;\\n\\n\\n//== Navbar\\n//\\n//##\\n\\n// Basics of a navbar\\n@navbar-height:                    50px;\\n@navbar-margin-bottom:             @line-height-computed;\\n@navbar-border-radius:             @border-radius-base;\\n@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));\\n@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);\\n@navbar-collapse-max-height:       340px;\\n\\n@navbar-default-color:             #777;\\n@navbar-default-bg:                #f8f8f8;\\n@navbar-default-border:            darken(@navbar-default-bg, 6.5%);\\n\\n// Navbar links\\n@navbar-default-link-color:                #777;\\n@navbar-default-link-hover-color:          #333;\\n@navbar-default-link-hover-bg:             transparent;\\n@navbar-default-link-active-color:         #555;\\n@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);\\n@navbar-default-link-disabled-color:       #ccc;\\n@navbar-default-link-disabled-bg:          transparent;\\n\\n// Navbar brand label\\n@navbar-default-brand-color:               @navbar-default-link-color;\\n@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);\\n@navbar-default-brand-hover-bg:            transparent;\\n\\n// Navbar toggle\\n@navbar-default-toggle-hover-bg:           #ddd;\\n@navbar-default-toggle-icon-bar-bg:        #888;\\n@navbar-default-toggle-border-color:       #ddd;\\n\\n\\n//=== Inverted navbar\\n// Reset inverted navbar basics\\n@navbar-inverse-color:                      lighten(@gray-light, 15%);\\n@navbar-inverse-bg:                         #222;\\n@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);\\n\\n// Inverted navbar links\\n@navbar-inverse-link-color:                 lighten(@gray-light, 15%);\\n@navbar-inverse-link-hover-color:           #fff;\\n@navbar-inverse-link-hover-bg:              transparent;\\n@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;\\n@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);\\n@navbar-inverse-link-disabled-color:        #444;\\n@navbar-inverse-link-disabled-bg:           transparent;\\n\\n// Inverted navbar brand label\\n@navbar-inverse-brand-color:                @navbar-inverse-link-color;\\n@navbar-inverse-brand-hover-color:          #fff;\\n@navbar-inverse-brand-hover-bg:             transparent;\\n\\n// Inverted navbar toggle\\n@navbar-inverse-toggle-hover-bg:            #333;\\n@navbar-inverse-toggle-icon-bar-bg:         #fff;\\n@navbar-inverse-toggle-border-color:        #333;\\n\\n\\n//== Navs\\n//\\n//##\\n\\n//=== Shared nav styles\\n@nav-link-padding:                          10px 15px;\\n@nav-link-hover-bg:                         @gray-lighter;\\n\\n@nav-disabled-link-color:                   @gray-light;\\n@nav-disabled-link-hover-color:             @gray-light;\\n\\n//== Tabs\\n@nav-tabs-border-color:                     #ddd;\\n\\n@nav-tabs-link-hover-border-color:          @gray-lighter;\\n\\n@nav-tabs-active-link-hover-bg:             @body-bg;\\n@nav-tabs-active-link-hover-color:          @gray;\\n@nav-tabs-active-link-hover-border-color:   #ddd;\\n\\n@nav-tabs-justified-link-border-color:            #ddd;\\n@nav-tabs-justified-active-link-border-color:     @body-bg;\\n\\n//== Pills\\n@nav-pills-border-radius:                   @border-radius-base;\\n@nav-pills-active-link-hover-bg:            @component-active-bg;\\n@nav-pills-active-link-hover-color:         @component-active-color;\\n\\n\\n//== Pagination\\n//\\n//##\\n\\n@pagination-color:                     @link-color;\\n@pagination-bg:                        #fff;\\n@pagination-border:                    #ddd;\\n\\n@pagination-hover-color:               @link-hover-color;\\n@pagination-hover-bg:                  @gray-lighter;\\n@pagination-hover-border:              #ddd;\\n\\n@pagination-active-color:              #fff;\\n@pagination-active-bg:                 @brand-primary;\\n@pagination-active-border:             @brand-primary;\\n\\n@pagination-disabled-color:            @gray-light;\\n@pagination-disabled-bg:               #fff;\\n@pagination-disabled-border:           #ddd;\\n\\n\\n//== Pager\\n//\\n//##\\n\\n@pager-bg:                             @pagination-bg;\\n@pager-border:                         @pagination-border;\\n@pager-border-radius:                  15px;\\n\\n@pager-hover-bg:                       @pagination-hover-bg;\\n\\n@pager-active-bg:                      @pagination-active-bg;\\n@pager-active-color:                   @pagination-active-color;\\n\\n@pager-disabled-color:                 @pagination-disabled-color;\\n\\n\\n//== Jumbotron\\n//\\n//##\\n\\n@jumbotron-padding:              30px;\\n@jumbotron-color:                inherit;\\n@jumbotron-bg:                   @gray-lighter;\\n@jumbotron-heading-color:        inherit;\\n@jumbotron-font-size:            ceil((@font-size-base * 1.5));\\n@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));\\n\\n\\n//== Form states and alerts\\n//\\n//## Define colors for form feedback states and, by default, alerts.\\n\\n@state-success-text:             #3c763d;\\n@state-success-bg:               #dff0d8;\\n@state-success-border:           darken(spin(@state-success-bg, -10), 5%);\\n\\n@state-info-text:                #31708f;\\n@state-info-bg:                  #d9edf7;\\n@state-info-border:              darken(spin(@state-info-bg, -10), 7%);\\n\\n@state-warning-text:             #8a6d3b;\\n@state-warning-bg:               #fcf8e3;\\n@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);\\n\\n@state-danger-text:              #a94442;\\n@state-danger-bg:                #f2dede;\\n@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);\\n\\n\\n//== Tooltips\\n//\\n//##\\n\\n//** Tooltip max width\\n@tooltip-max-width:           200px;\\n//** Tooltip text color\\n@tooltip-color:               #fff;\\n//** Tooltip background color\\n@tooltip-bg:                  #000;\\n@tooltip-opacity:             .9;\\n\\n//** Tooltip arrow width\\n@tooltip-arrow-width:         5px;\\n//** Tooltip arrow color\\n@tooltip-arrow-color:         @tooltip-bg;\\n\\n\\n//== Popovers\\n//\\n//##\\n\\n//** Popover body background color\\n@popover-bg:                          #fff;\\n//** Popover maximum width\\n@popover-max-width:                   276px;\\n//** Popover border color\\n@popover-border-color:                rgba(0,0,0,.2);\\n//** Popover fallback border color\\n@popover-fallback-border-color:       #ccc;\\n\\n//** Popover title background color\\n@popover-title-bg:                    darken(@popover-bg, 3%);\\n\\n//** Popover arrow width\\n@popover-arrow-width:                 10px;\\n//** Popover arrow color\\n@popover-arrow-color:                 @popover-bg;\\n\\n//** Popover outer arrow width\\n@popover-arrow-outer-width:           (@popover-arrow-width + 1);\\n//** Popover outer arrow color\\n@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);\\n//** Popover outer arrow fallback color\\n@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);\\n\\n\\n//== Labels\\n//\\n//##\\n\\n//** Default label background color\\n@label-default-bg:            @gray-light;\\n//** Primary label background color\\n@label-primary-bg:            @brand-primary;\\n//** Success label background color\\n@label-success-bg:            @brand-success;\\n//** Info label background color\\n@label-info-bg:               @brand-info;\\n//** Warning label background color\\n@label-warning-bg:            @brand-warning;\\n//** Danger label background color\\n@label-danger-bg:             @brand-danger;\\n\\n//** Default label text color\\n@label-color:                 #fff;\\n//** Default text color of a linked label\\n@label-link-hover-color:      #fff;\\n\\n\\n//== Modals\\n//\\n//##\\n\\n//** Padding applied to the modal body\\n@modal-inner-padding:         15px;\\n\\n//** Padding applied to the modal title\\n@modal-title-padding:         15px;\\n//** Modal title line-height\\n@modal-title-line-height:     @line-height-base;\\n\\n//** Background color of modal content area\\n@modal-content-bg:                             #fff;\\n//** Modal content border color\\n@modal-content-border-color:                   rgba(0,0,0,.2);\\n//** Modal content border color **for IE8**\\n@modal-content-fallback-border-color:          #999;\\n\\n//** Modal backdrop background color\\n@modal-backdrop-bg:           #000;\\n//** Modal backdrop opacity\\n@modal-backdrop-opacity:      .5;\\n//** Modal header border color\\n@modal-header-border-color:   #e5e5e5;\\n//** Modal footer border color\\n@modal-footer-border-color:   @modal-header-border-color;\\n\\n@modal-lg:                    900px;\\n@modal-md:                    600px;\\n@modal-sm:                    300px;\\n\\n\\n//== Alerts\\n//\\n//## Define alert colors, border radius, and padding.\\n\\n@alert-padding:               15px;\\n@alert-border-radius:         @border-radius-base;\\n@alert-link-font-weight:      bold;\\n\\n@alert-success-bg:            @state-success-bg;\\n@alert-success-text:          @state-success-text;\\n@alert-success-border:        @state-success-border;\\n\\n@alert-info-bg:               @state-info-bg;\\n@alert-info-text:             @state-info-text;\\n@alert-info-border:           @state-info-border;\\n\\n@alert-warning-bg:            @state-warning-bg;\\n@alert-warning-text:          @state-warning-text;\\n@alert-warning-border:        @state-warning-border;\\n\\n@alert-danger-bg:             @state-danger-bg;\\n@alert-danger-text:           @state-danger-text;\\n@alert-danger-border:         @state-danger-border;\\n\\n\\n//== Progress bars\\n//\\n//##\\n\\n//** Background color of the whole progress component\\n@progress-bg:                 #f5f5f5;\\n//** Progress bar text color\\n@progress-bar-color:          #fff;\\n//** Variable for setting rounded corners on progress bar.\\n@progress-border-radius:      @border-radius-base;\\n\\n//** Default progress bar color\\n@progress-bar-bg:             @brand-primary;\\n//** Success progress bar color\\n@progress-bar-success-bg:     @brand-success;\\n//** Warning progress bar color\\n@progress-bar-warning-bg:     @brand-warning;\\n//** Danger progress bar color\\n@progress-bar-danger-bg:      @brand-danger;\\n//** Info progress bar color\\n@progress-bar-info-bg:        @brand-info;\\n\\n\\n//== List group\\n//\\n//##\\n\\n//** Background color on `.list-group-item`\\n@list-group-bg:                 #fff;\\n//** `.list-group-item` border color\\n@list-group-border:             #ddd;\\n//** List group border radius\\n@list-group-border-radius:      @border-radius-base;\\n\\n//** Background color of single list items on hover\\n@list-group-hover-bg:           #f5f5f5;\\n//** Text color of active list items\\n@list-group-active-color:       @component-active-color;\\n//** Background color of active list items\\n@list-group-active-bg:          @component-active-bg;\\n//** Border color of active list elements\\n@list-group-active-border:      @list-group-active-bg;\\n//** Text color for content within active list items\\n@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);\\n\\n//** Text color of disabled list items\\n@list-group-disabled-color:      @gray-light;\\n//** Background color of disabled list items\\n@list-group-disabled-bg:         @gray-lighter;\\n//** Text color for content within disabled list items\\n@list-group-disabled-text-color: @list-group-disabled-color;\\n\\n@list-group-link-color:         #555;\\n@list-group-link-hover-color:   @list-group-link-color;\\n@list-group-link-heading-color: #333;\\n\\n\\n//== Panels\\n//\\n//##\\n\\n@panel-bg:                    #fff;\\n@panel-body-padding:          15px;\\n@panel-heading-padding:       10px 15px;\\n@panel-footer-padding:        @panel-heading-padding;\\n@panel-border-radius:         @border-radius-base;\\n\\n//** Border color for elements within panels\\n@panel-inner-border:          #ddd;\\n@panel-footer-bg:             #f5f5f5;\\n\\n@panel-default-text:          @gray-dark;\\n@panel-default-border:        #ddd;\\n@panel-default-heading-bg:    #f5f5f5;\\n\\n@panel-primary-text:          #fff;\\n@panel-primary-border:        @brand-primary;\\n@panel-primary-heading-bg:    @brand-primary;\\n\\n@panel-success-text:          @state-success-text;\\n@panel-success-border:        @state-success-border;\\n@panel-success-heading-bg:    @state-success-bg;\\n\\n@panel-info-text:             @state-info-text;\\n@panel-info-border:           @state-info-border;\\n@panel-info-heading-bg:       @state-info-bg;\\n\\n@panel-warning-text:          @state-warning-text;\\n@panel-warning-border:        @state-warning-border;\\n@panel-warning-heading-bg:    @state-warning-bg;\\n\\n@panel-danger-text:           @state-danger-text;\\n@panel-danger-border:         @state-danger-border;\\n@panel-danger-heading-bg:     @state-danger-bg;\\n\\n\\n//== Thumbnails\\n//\\n//##\\n\\n//** Padding around the thumbnail image\\n@thumbnail-padding:           4px;\\n//** Thumbnail background color\\n@thumbnail-bg:                @body-bg;\\n//** Thumbnail border color\\n@thumbnail-border:            #ddd;\\n//** Thumbnail border radius\\n@thumbnail-border-radius:     @border-radius-base;\\n\\n//** Custom text color for thumbnail captions\\n@thumbnail-caption-color:     @text-color;\\n//** Padding around the thumbnail caption\\n@thumbnail-caption-padding:   9px;\\n\\n\\n//== Wells\\n//\\n//##\\n\\n@well-bg:                     #f5f5f5;\\n@well-border:                 darken(@well-bg, 7%);\\n\\n\\n//== Badges\\n//\\n//##\\n\\n@badge-color:                 #fff;\\n//** Linked badge text color on hover\\n@badge-link-hover-color:      #fff;\\n@badge-bg:                    @gray-light;\\n\\n//** Badge text color in active nav link\\n@badge-active-color:          @link-color;\\n//** Badge background color in active nav link\\n@badge-active-bg:             #fff;\\n\\n@badge-font-weight:           bold;\\n@badge-line-height:           1;\\n@badge-border-radius:         10px;\\n\\n\\n//== Breadcrumbs\\n//\\n//##\\n\\n@breadcrumb-padding-vertical:   8px;\\n@breadcrumb-padding-horizontal: 15px;\\n//** Breadcrumb background color\\n@breadcrumb-bg:                 #f5f5f5;\\n//** Breadcrumb text color\\n@breadcrumb-color:              #ccc;\\n//** Text color of current page in the breadcrumb\\n@breadcrumb-active-color:       @gray-light;\\n//** Textual separator for between breadcrumb elements\\n@breadcrumb-separator:          \\"/\\";\\n\\n\\n//== Carousel\\n//\\n//##\\n\\n@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);\\n\\n@carousel-control-color:                      #fff;\\n@carousel-control-width:                      15%;\\n@carousel-control-opacity:                    .5;\\n@carousel-control-font-size:                  20px;\\n\\n@carousel-indicator-active-bg:                #fff;\\n@carousel-indicator-border-color:             #fff;\\n\\n@carousel-caption-color:                      #fff;\\n\\n\\n//== Close\\n//\\n//##\\n\\n@close-font-weight:           bold;\\n@close-color:                 #000;\\n@close-text-shadow:           0 1px 0 #fff;\\n\\n\\n//== Code\\n//\\n//##\\n\\n@code-color:                  #c7254e;\\n@code-bg:                     #f9f2f4;\\n\\n@kbd-color:                   #fff;\\n@kbd-bg:                      #333;\\n\\n@pre-bg:                      #f5f5f5;\\n@pre-color:                   @gray-dark;\\n@pre-border-color:            #ccc;\\n@pre-scrollable-max-height:   340px;\\n\\n\\n//== Type\\n//\\n//##\\n\\n//** Horizontal offset for forms and lists.\\n@component-offset-horizontal: 180px;\\n//** Text muted color\\n@text-muted:                  @gray-light;\\n//** Abbreviations and acronyms border color\\n@abbr-border-color:           @gray-light;\\n//** Headings small color\\n@headings-small-color:        @gray-light;\\n//** Blockquote small color\\n@blockquote-small-color:      @gray-light;\\n//** Blockquote font size\\n@blockquote-font-size:        (@font-size-base * 1.25);\\n//** Blockquote border color\\n@blockquote-border-color:     @gray-lighter;\\n//** Page header border color\\n@page-header-border-color:    @gray-lighter;\\n//** Width of horizontal description list titles\\n@dl-horizontal-offset:        @component-offset-horizontal;\\n//** Point at which .dl-horizontal becomes horizontal\\n@dl-horizontal-breakpoint:    @grid-float-breakpoint;\\n//** Horizontal line color.\\n@hr-border:                   @gray-lighter;\\n","/* ui helper less rules */\\n@import \\"@{mockuplessPath}/base.less\\";\\n@import \\"@{mockupPath}/tooltip/pattern.tooltip.less\\";\\n\\n/* loading icon animation */\\n.plone-loader{\\n  display:none;\\n  position: fixed;\\n  top: 50%;\\n  left: ~\\"calc(50% - 2.5em)\\";\\n\\n  div {\\n    margin: -6em auto;\\n    font-size: 5px;\\n    text-indent: -9999em;\\n    border-top: 1.1em solid rgba(39, 33, 33, 0.2);\\n    border-right: 1.1em solid rgba(218, 211, 211, 0.2);\\n    border-bottom: 1.1em solid rgba(218, 211, 211, 0.2);\\n    border-left: 1.1em solid rgba(218, 211, 211, 0.2);\\n    -webkit-transform: translateZ(0);\\n    -ms-transform: translateZ(0);\\n    transform: translateZ(0);\\n    -webkit-animation: load8 1.1s infinite linear;\\n    animation: load8 1.1s infinite linear;\\n  }\\n  div,\\n  div:after {\\n    border-radius: 50%;\\n    width: 10em;\\n    height: 10em;\\n  }\\n  @-webkit-keyframes load8 {\\n    0% {\\n      -webkit-transform: rotate(0deg);\\n      transform: rotate(0deg);\\n    }\\n    100% {\\n      -webkit-transform: rotate(360deg);\\n      transform: rotate(360deg);\\n    }\\n  }\\n  @keyframes load8 {\\n    0% {\\n      -webkit-transform: rotate(0deg);\\n      transform: rotate(0deg);\\n    }\\n    100% {\\n      -webkit-transform: rotate(360deg);\\n      transform: rotate(360deg);\\n    }\\n  }\\n}\\n","ul.jqtree-tree {\\n  list-style: none outside;\\n  margin-left: 0;\\n  margin-bottom: 0;\\n  padding: 0; }\\n  ul.jqtree-tree ul.jqtree_common {\\n    list-style: none outside;\\n    margin-left: 12px;\\n    margin-right: 0;\\n    margin-bottom: 0;\\n    padding: 0;\\n    display: block; }\\n  ul.jqtree-tree li.jqtree-closed > ul.jqtree_common {\\n    display: none; }\\n  ul.jqtree-tree li.jqtree_common {\\n    clear: both;\\n    list-style-type: none; }\\n  ul.jqtree-tree .jqtree-toggler {\\n    border-bottom: none;\\n    color: #333;\\n    text-decoration: none;\\n    vertical-align: middle; }\\n    ul.jqtree-tree .jqtree-toggler:hover {\\n      color: #000;\\n      text-decoration: none; }\\n    ul.jqtree-tree .jqtree-toggler.jqtree-closed {\\n      background-position: 0 0; }\\n    ul.jqtree-tree .jqtree-toggler.jqtree-toggler-left {\\n      margin-right: 0.5em; }\\n    ul.jqtree-tree .jqtree-toggler.jqtree-toggler-right {\\n      margin-left: 0.5em; }\\n  ul.jqtree-tree .jqtree-element {\\n    cursor: pointer;\\n    position: relative; }\\n  ul.jqtree-tree .jqtree-title {\\n    color: #1C4257;\\n    vertical-align: middle;\\n    margin-left: 1.5em; }\\n    ul.jqtree-tree .jqtree-title.jqtree-title-folder {\\n      margin-left: 0; }\\n  ul.jqtree-tree li.jqtree-folder {\\n    margin-bottom: 4px; }\\n    ul.jqtree-tree li.jqtree-folder.jqtree-closed {\\n      margin-bottom: 1px; }\\n  ul.jqtree-tree li.jqtree-ghost {\\n    position: relative;\\n    z-index: 10;\\n    margin-right: 10px;\\n    /* todo: add classes to span? */ }\\n    ul.jqtree-tree li.jqtree-ghost span {\\n      display: block; }\\n    ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {\\n      border: solid 2px #0000ff;\\n      -webkit-border-radius: 100px;\\n      -moz-border-radius: 100px;\\n      border-radius: 100px;\\n      height: 8px;\\n      width: 8px;\\n      position: absolute;\\n      top: -4px;\\n      left: -6px;\\n      -webkit-box-sizing: border-box;\\n      -moz-box-sizing: border-box;\\n      box-sizing: border-box; }\\n    ul.jqtree-tree li.jqtree-ghost span.jqtree-line {\\n      background-color: #0000ff;\\n      height: 2px;\\n      padding: 0;\\n      position: absolute;\\n      top: -1px;\\n      left: 2px;\\n      width: 100%; }\\n    ul.jqtree-tree li.jqtree-ghost.jqtree-inside {\\n      margin-left: 48px; }\\n  ul.jqtree-tree span.jqtree-border {\\n    position: absolute;\\n    display: block;\\n    left: -2px;\\n    top: 0;\\n    border: solid 2px #0000ff;\\n    border-radius: 6px;\\n    margin: 0;\\n    box-sizing: content-box; }\\n  ul.jqtree-tree li.jqtree-selected > .jqtree-element,\\n  ul.jqtree-tree li.jqtree-selected > .jqtree-element:hover {\\n    background-color: #97BDD6;\\n    background: -webkit-gradient(linear, left top, left bottom, from(#BEE0F5), to(#89AFCA));\\n    background: -moz-linear-gradient(top, #BEE0F5, #89AFCA);\\n    background: -ms-linear-gradient(top, #BEE0F5, #89AFCA);\\n    background: -o-linear-gradient(top, #BEE0F5, #89AFCA);\\n    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); }\\n  ul.jqtree-tree .jqtree-moving > .jqtree-element .jqtree-title {\\n    outline: dashed 1px #0000ff; }\\n\\nul.jqtree-tree.jqtree-rtl {\\n  direction: rtl; }\\n  ul.jqtree-tree.jqtree-rtl ul.jqtree_common {\\n    margin-left: 0;\\n    margin-right: 12px; }\\n  ul.jqtree-tree.jqtree-rtl .jqtree-toggler {\\n    margin-left: 0.5em;\\n    margin-right: 0; }\\n  ul.jqtree-tree.jqtree-rtl .jqtree-title {\\n    margin-left: 0;\\n    margin-right: 1.5em; }\\n    ul.jqtree-tree.jqtree-rtl .jqtree-title.jqtree-title-folder {\\n      margin-right: 0; }\\n  ul.jqtree-tree.jqtree-rtl li.jqtree-ghost {\\n    margin-right: 0;\\n    margin-left: 10px; }\\n    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost span.jqtree-circle {\\n      right: -6px; }\\n    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost span.jqtree-line {\\n      right: 2px; }\\n    ul.jqtree-tree.jqtree-rtl li.jqtree-ghost.jqtree-inside {\\n      margin-left: 0;\\n      margin-right: 48px; }\\n  ul.jqtree-tree.jqtree-rtl span.jqtree-border {\\n    right: -2px; }\\n\\nspan.jqtree-dragging {\\n  color: #fff;\\n  background: #000;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding: 2px 8px; }\\n\\n/* IE 6, 7, 8 */\\n@media \\\\0screen\\\\,screen\\\\9  {\\n  ul.jqtree-tree li.jqtree-ghost span.jqtree-circle {\\n    background: url(jqtree-circle.png) no-repeat;\\n    border: 0 none; } }\\n","/* (inline) forces includes this file without processing it.\\n * Necessary because of the IE hack in there, which causes ParseError. */\\n@import (inline) \\"@{bowerPath}/jqtree/jqtree.css\\";\\n\\n.autotabs ul li.jqtree_common{\\n  display:block;\\n}",".popover {\\n    min-width: 111px;\\n    max-width: 500px;\\n\\n    .popover-title {\\n\\n        padding-bottom: 0;\\n        input {\\n            margin-bottom: 0;\\n        }\\n    }\\n    &.active {\\n        display: block;\\n    }\\n}\\n.backdrop-popover {\\n    background-color: #fff;\\n    z-index: 1009;\\n}","//\\n// Utility classes\\n// --------------------------------------------------\\n\\n\\n// Floats\\n// -------------------------\\n\\n.clearfix {\\n  .clearfix();\\n}\\n.center-block {\\n  .center-block();\\n}\\n.pull-right {\\n  float: right !important;\\n}\\n.pull-left {\\n  float: left !important;\\n}\\n\\n\\n// Toggling content\\n// -------------------------\\n\\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\\n.hide {\\n  display: none !important;\\n}\\n.show {\\n  display: block !important;\\n}\\n.invisible {\\n  visibility: hidden;\\n}\\n.text-hide {\\n  .text-hide();\\n}\\n\\n\\n// Hide from screenreaders and browsers\\n//\\n// Credit: HTML5 Boilerplate\\n\\n.hidden {\\n  display: none !important;\\n}\\n\\n\\n// For Affix plugin\\n// -------------------------\\n\\n.affix {\\n  position: fixed;\\n}\\n","// Center-align a block level element\\n\\n.center-block() {\\n  display: block;\\n  margin-left: auto;\\n  margin-right: auto;\\n}\\n","// CSS image replacement\\n//\\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\\n// mixins being reused as classes with the same name, this doesn\'t hold up. As\\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\\n//\\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\\n\\n// Deprecated as of v3.0.1 (has been removed in v4)\\n.hide-text() {\\n  font: ~\\"0/0\\" a;\\n  color: transparent;\\n  text-shadow: none;\\n  background-color: transparent;\\n  border: 0;\\n}\\n\\n// New mixin to use as of v3.0.1\\n.text-hide() {\\n  .hide-text();\\n}\\n","//\\n// Button groups\\n// --------------------------------------------------\\n\\n// Make the div behave like a button\\n.btn-group,\\n.btn-group-vertical {\\n  position: relative;\\n  display: inline-block;\\n  vertical-align: middle; // match .btn alignment given font-size hack above\\n  > .btn {\\n    position: relative;\\n    float: left;\\n    // Bring the \\"active\\" button to the front\\n    &:hover,\\n    &:focus,\\n    &:active,\\n    &.active {\\n      z-index: 2;\\n    }\\n  }\\n}\\n\\n// Prevent double borders when buttons are next to each other\\n.btn-group {\\n  .btn + .btn,\\n  .btn + .btn-group,\\n  .btn-group + .btn,\\n  .btn-group + .btn-group {\\n    margin-left: -1px;\\n  }\\n}\\n\\n// Optional: Group multiple button groups together for a toolbar\\n.btn-toolbar {\\n  margin-left: -5px; // Offset the first child\'s margin\\n  &:extend(.clearfix all);\\n\\n  .btn,\\n  .btn-group,\\n  .input-group {\\n    float: left;\\n  }\\n  > .btn,\\n  > .btn-group,\\n  > .input-group {\\n    margin-left: 5px;\\n  }\\n}\\n\\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\\n  border-radius: 0;\\n}\\n\\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\\n.btn-group > .btn:first-child {\\n  margin-left: 0;\\n  &:not(:last-child):not(.dropdown-toggle) {\\n    .border-right-radius(0);\\n  }\\n}\\n// Need .dropdown-toggle since :last-child doesn\'t apply given a .dropdown-menu immediately after it\\n.btn-group > .btn:last-child:not(:first-child),\\n.btn-group > .dropdown-toggle:not(:first-child) {\\n  .border-left-radius(0);\\n}\\n\\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\\n.btn-group > .btn-group {\\n  float: left;\\n}\\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\\n  border-radius: 0;\\n}\\n.btn-group > .btn-group:first-child:not(:last-child) {\\n  > .btn:last-child,\\n  > .dropdown-toggle {\\n    .border-right-radius(0);\\n  }\\n}\\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\\n  .border-left-radius(0);\\n}\\n\\n// On active and open, don\'t show outline\\n.btn-group .dropdown-toggle:active,\\n.btn-group.open .dropdown-toggle {\\n  outline: 0;\\n}\\n\\n\\n// Sizing\\n//\\n// Remix the default button sizing classes into new ones for easier manipulation.\\n\\n.btn-group-xs > .btn { &:extend(.btn-xs); }\\n.btn-group-sm > .btn { &:extend(.btn-sm); }\\n.btn-group-lg > .btn { &:extend(.btn-lg); }\\n\\n\\n// Split button dropdowns\\n// ----------------------\\n\\n// Give the line between buttons some depth\\n.btn-group > .btn + .dropdown-toggle {\\n  padding-left: 8px;\\n  padding-right: 8px;\\n}\\n.btn-group > .btn-lg + .dropdown-toggle {\\n  padding-left: 12px;\\n  padding-right: 12px;\\n}\\n\\n// The clickable button for toggling the menu\\n// Remove the gradient and set the same inset shadow as the :active state\\n.btn-group.open .dropdown-toggle {\\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\\n\\n  // Show no shadow for `.btn-link` since it has no other button styles.\\n  &.btn-link {\\n    .box-shadow(none);\\n  }\\n}\\n\\n\\n// Reposition the caret\\n.btn .caret {\\n  margin-left: 0;\\n}\\n// Carets in other button sizes\\n.btn-lg .caret {\\n  border-width: @caret-width-large @caret-width-large 0;\\n  border-bottom-width: 0;\\n}\\n// Upside down carets for .dropup\\n.dropup .btn-lg .caret {\\n  border-width: 0 @caret-width-large @caret-width-large;\\n}\\n\\n\\n// Vertical button groups\\n// ----------------------\\n\\n.btn-group-vertical {\\n  > .btn,\\n  > .btn-group,\\n  > .btn-group > .btn {\\n    display: block;\\n    float: none;\\n    width: 100%;\\n    max-width: 100%;\\n  }\\n\\n  // Clear floats so dropdown menus can be properly placed\\n  > .btn-group {\\n    &:extend(.clearfix all);\\n    > .btn {\\n      float: none;\\n    }\\n  }\\n\\n  > .btn + .btn,\\n  > .btn + .btn-group,\\n  > .btn-group + .btn,\\n  > .btn-group + .btn-group {\\n    margin-top: -1px;\\n    margin-left: 0;\\n  }\\n}\\n\\n.btn-group-vertical > .btn {\\n  &:not(:first-child):not(:last-child) {\\n    border-radius: 0;\\n  }\\n  &:first-child:not(:last-child) {\\n    .border-top-radius(@btn-border-radius-base);\\n    .border-bottom-radius(0);\\n  }\\n  &:last-child:not(:first-child) {\\n    .border-top-radius(0);\\n    .border-bottom-radius(@btn-border-radius-base);\\n  }\\n}\\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\\n  border-radius: 0;\\n}\\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\\n  > .btn:last-child,\\n  > .dropdown-toggle {\\n    .border-bottom-radius(0);\\n  }\\n}\\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\\n  .border-top-radius(0);\\n}\\n\\n\\n// Justified button groups\\n// ----------------------\\n\\n.btn-group-justified {\\n  display: table;\\n  width: 100%;\\n  table-layout: fixed;\\n  border-collapse: separate;\\n  > .btn,\\n  > .btn-group {\\n    float: none;\\n    display: table-cell;\\n    width: 1%;\\n  }\\n  > .btn-group .btn {\\n    width: 100%;\\n  }\\n\\n  > .btn-group .dropdown-menu {\\n    left: auto;\\n  }\\n}\\n\\n\\n// Checkbox and radio options\\n//\\n// In order to support the browser\'s form validation feedback, powered by the\\n// `required` attribute, we have to \\"hide\\" the inputs via `clip`. We cannot use\\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\\n// certain cases which is prevented by using `clip` and `pointer-events`.\\n// This way, we ensure a DOM element is visible to position the popover from.\\n//\\n// See https://github.com/twbs/bootstrap/pull/12794 and\\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\\n\\n[data-toggle=\\"buttons\\"] {\\n  > .btn,\\n  > .btn-group > .btn {\\n    input[type=\\"radio\\"],\\n    input[type=\\"checkbox\\"] {\\n      position: absolute;\\n      clip: rect(0,0,0,0);\\n      pointer-events: none;\\n    }\\n  }\\n}\\n","//\\n// Badges\\n// --------------------------------------------------\\n\\n\\n// Base class\\n.badge {\\n  display: inline-block;\\n  min-width: 10px;\\n  padding: 3px 7px;\\n  font-size: @font-size-small;\\n  font-weight: @badge-font-weight;\\n  color: @badge-color;\\n  line-height: @badge-line-height;\\n  vertical-align: middle;\\n  white-space: nowrap;\\n  text-align: center;\\n  background-color: @badge-bg;\\n  border-radius: @badge-border-radius;\\n\\n  // Empty badges collapse automatically (not available in IE8)\\n  &:empty {\\n    display: none;\\n  }\\n\\n  // Quick fix for badges in buttons\\n  .btn & {\\n    position: relative;\\n    top: -1px;\\n  }\\n\\n  .btn-xs &,\\n  .btn-group-xs > .btn & {\\n    top: 0;\\n    padding: 1px 5px;\\n  }\\n\\n  // Hover state, but only for links\\n  a& {\\n    &:hover,\\n    &:focus {\\n      color: @badge-link-hover-color;\\n      text-decoration: none;\\n      cursor: pointer;\\n    }\\n  }\\n\\n  // Account for badges in navs\\n  .list-group-item.active > &,\\n  .nav-pills > .active > a > & {\\n    color: @badge-active-color;\\n    background-color: @badge-active-bg;\\n  }\\n\\n  .list-group-item > & {\\n    float: right;\\n  }\\n\\n  .list-group-item > & + & {\\n    margin-right: 5px;\\n  }\\n\\n  .nav-pills > li > a > & {\\n    margin-left: 3px;\\n  }\\n}\\n","//\\n// Popovers\\n// --------------------------------------------------\\n\\n\\n.popover {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  z-index: @zindex-popover;\\n  display: none;\\n  max-width: @popover-max-width;\\n  padding: 1px;\\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\\n  // So reset our font and text properties to avoid inheriting weird values.\\n  .reset-text();\\n  font-size: @font-size-base;\\n\\n  background-color: @popover-bg;\\n  background-clip: padding-box;\\n  border: 1px solid @popover-fallback-border-color;\\n  border: 1px solid @popover-border-color;\\n  border-radius: @border-radius-large;\\n  .box-shadow(0 5px 10px rgba(0,0,0,.2));\\n\\n  // Offset the popover to account for the popover arrow\\n  &.top     { margin-top: -@popover-arrow-width; }\\n  &.right   { margin-left: @popover-arrow-width; }\\n  &.bottom  { margin-top: @popover-arrow-width; }\\n  &.left    { margin-left: -@popover-arrow-width; }\\n}\\n\\n.popover-title {\\n  margin: 0; // reset heading margin\\n  padding: 8px 14px;\\n  font-size: @font-size-base;\\n  background-color: @popover-title-bg;\\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\\n}\\n\\n.popover-content {\\n  padding: 9px 14px;\\n}\\n\\n// Arrows\\n//\\n// .arrow is outer, .arrow:after is inner\\n\\n.popover > .arrow {\\n  &,\\n  &:after {\\n    position: absolute;\\n    display: block;\\n    width: 0;\\n    height: 0;\\n    border-color: transparent;\\n    border-style: solid;\\n  }\\n}\\n.popover > .arrow {\\n  border-width: @popover-arrow-outer-width;\\n}\\n.popover > .arrow:after {\\n  border-width: @popover-arrow-width;\\n  content: \\"\\";\\n}\\n\\n.popover {\\n  &.top > .arrow {\\n    left: 50%;\\n    margin-left: -@popover-arrow-outer-width;\\n    border-bottom-width: 0;\\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-top-color: @popover-arrow-outer-color;\\n    bottom: -@popover-arrow-outer-width;\\n    &:after {\\n      content: \\" \\";\\n      bottom: 1px;\\n      margin-left: -@popover-arrow-width;\\n      border-bottom-width: 0;\\n      border-top-color: @popover-arrow-color;\\n    }\\n  }\\n  &.right > .arrow {\\n    top: 50%;\\n    left: -@popover-arrow-outer-width;\\n    margin-top: -@popover-arrow-outer-width;\\n    border-left-width: 0;\\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-right-color: @popover-arrow-outer-color;\\n    &:after {\\n      content: \\" \\";\\n      left: 1px;\\n      bottom: -@popover-arrow-width;\\n      border-left-width: 0;\\n      border-right-color: @popover-arrow-color;\\n    }\\n  }\\n  &.bottom > .arrow {\\n    left: 50%;\\n    margin-left: -@popover-arrow-outer-width;\\n    border-top-width: 0;\\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-bottom-color: @popover-arrow-outer-color;\\n    top: -@popover-arrow-outer-width;\\n    &:after {\\n      content: \\" \\";\\n      top: 1px;\\n      margin-left: -@popover-arrow-width;\\n      border-top-width: 0;\\n      border-bottom-color: @popover-arrow-color;\\n    }\\n  }\\n\\n  &.left > .arrow {\\n    top: 50%;\\n    right: -@popover-arrow-outer-width;\\n    margin-top: -@popover-arrow-outer-width;\\n    border-right-width: 0;\\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\\n    border-left-color: @popover-arrow-outer-color;\\n    &:after {\\n      content: \\" \\";\\n      right: 1px;\\n      border-right-width: 0;\\n      border-left-color: @popover-arrow-color;\\n      bottom: -@popover-arrow-width;\\n    }\\n  }\\n}\\n","//\\n// Pagination (multiple pages)\\n// --------------------------------------------------\\n.pagination {\\n  display: inline-block;\\n  padding-left: 0;\\n  margin: @line-height-computed 0;\\n  border-radius: @border-radius-base;\\n\\n  > li {\\n    display: inline; // Remove list-style and block-level defaults\\n    > a,\\n    > span {\\n      position: relative;\\n      float: left; // Collapse white-space\\n      padding: @padding-base-vertical @padding-base-horizontal;\\n      line-height: @line-height-base;\\n      text-decoration: none;\\n      color: @pagination-color;\\n      background-color: @pagination-bg;\\n      border: 1px solid @pagination-border;\\n      margin-left: -1px;\\n    }\\n    &:first-child {\\n      > a,\\n      > span {\\n        margin-left: 0;\\n        .border-left-radius(@border-radius-base);\\n      }\\n    }\\n    &:last-child {\\n      > a,\\n      > span {\\n        .border-right-radius(@border-radius-base);\\n      }\\n    }\\n  }\\n\\n  > li > a,\\n  > li > span {\\n    &:hover,\\n    &:focus {\\n      z-index: 2;\\n      color: @pagination-hover-color;\\n      background-color: @pagination-hover-bg;\\n      border-color: @pagination-hover-border;\\n    }\\n  }\\n\\n  > .active > a,\\n  > .active > span {\\n    &,\\n    &:hover,\\n    &:focus {\\n      z-index: 3;\\n      color: @pagination-active-color;\\n      background-color: @pagination-active-bg;\\n      border-color: @pagination-active-border;\\n      cursor: default;\\n    }\\n  }\\n\\n  > .disabled {\\n    > span,\\n    > span:hover,\\n    > span:focus,\\n    > a,\\n    > a:hover,\\n    > a:focus {\\n      color: @pagination-disabled-color;\\n      background-color: @pagination-disabled-bg;\\n      border-color: @pagination-disabled-border;\\n      cursor: @cursor-disabled;\\n    }\\n  }\\n}\\n\\n// Sizing\\n// --------------------------------------------------\\n\\n// Large\\n.pagination-lg {\\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\\n}\\n\\n// Small\\n.pagination-sm {\\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\\n}\\n","//\\n// Input groups\\n// --------------------------------------------------\\n\\n// Base styles\\n// -------------------------\\n.input-group {\\n  position: relative; // For dropdowns\\n  display: table;\\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\\n\\n  // Undo padding and float of grid classes\\n  &[class*=\\"col-\\"] {\\n    float: none;\\n    padding-left: 0;\\n    padding-right: 0;\\n  }\\n\\n  .form-control {\\n    // Ensure that the input is always above the *appended* addon button for\\n    // proper border colors.\\n    position: relative;\\n    z-index: 2;\\n\\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\\n    // select elements in input groups. To fix it, we float the input. Details:\\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\\n    float: left;\\n\\n    width: 100%;\\n    margin-bottom: 0;\\n    \\n    &:focus {\\n      z-index: 3;\\n    }\\n  }\\n}\\n\\n// Sizing options\\n//\\n// Remix the default form control sizing classes into new ones for easier\\n// manipulation.\\n\\n.input-group-lg > .form-control,\\n.input-group-lg > .input-group-addon,\\n.input-group-lg > .input-group-btn > .btn {\\n  .input-lg();\\n}\\n.input-group-sm > .form-control,\\n.input-group-sm > .input-group-addon,\\n.input-group-sm > .input-group-btn > .btn {\\n  .input-sm();\\n}\\n\\n\\n// Display as table-cell\\n// -------------------------\\n.input-group-addon,\\n.input-group-btn,\\n.input-group .form-control {\\n  display: table-cell;\\n\\n  &:not(:first-child):not(:last-child) {\\n    border-radius: 0;\\n  }\\n}\\n// Addon and addon wrapper for buttons\\n.input-group-addon,\\n.input-group-btn {\\n  width: 1%;\\n  white-space: nowrap;\\n  vertical-align: middle; // Match the inputs\\n}\\n\\n// Text input groups\\n// -------------------------\\n.input-group-addon {\\n  padding: @padding-base-vertical @padding-base-horizontal;\\n  font-size: @font-size-base;\\n  font-weight: normal;\\n  line-height: 1;\\n  color: @input-color;\\n  text-align: center;\\n  background-color: @input-group-addon-bg;\\n  border: 1px solid @input-group-addon-border-color;\\n  border-radius: @input-border-radius;\\n\\n  // Sizing\\n  &.input-sm {\\n    padding: @padding-small-vertical @padding-small-horizontal;\\n    font-size: @font-size-small;\\n    border-radius: @input-border-radius-small;\\n  }\\n  &.input-lg {\\n    padding: @padding-large-vertical @padding-large-horizontal;\\n    font-size: @font-size-large;\\n    border-radius: @input-border-radius-large;\\n  }\\n\\n  // Nuke default margins from checkboxes and radios to vertically center within.\\n  input[type=\\"radio\\"],\\n  input[type=\\"checkbox\\"] {\\n    margin-top: 0;\\n  }\\n}\\n\\n// Reset rounded corners\\n.input-group .form-control:first-child,\\n.input-group-addon:first-child,\\n.input-group-btn:first-child > .btn,\\n.input-group-btn:first-child > .btn-group > .btn,\\n.input-group-btn:first-child > .dropdown-toggle,\\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\\n  .border-right-radius(0);\\n}\\n.input-group-addon:first-child {\\n  border-right: 0;\\n}\\n.input-group .form-control:last-child,\\n.input-group-addon:last-child,\\n.input-group-btn:last-child > .btn,\\n.input-group-btn:last-child > .btn-group > .btn,\\n.input-group-btn:last-child > .dropdown-toggle,\\n.input-group-btn:first-child > .btn:not(:first-child),\\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\\n  .border-left-radius(0);\\n}\\n.input-group-addon:last-child {\\n  border-left: 0;\\n}\\n\\n// Button input groups\\n// -------------------------\\n.input-group-btn {\\n  position: relative;\\n  // Jankily prevent input button groups from wrapping with `white-space` and\\n  // `font-size` in combination with `inline-block` on buttons.\\n  font-size: 0;\\n  white-space: nowrap;\\n\\n  // Negative margin for spacing, position for bringing hovered/focused/actived\\n  // element above the siblings.\\n  > .btn {\\n    position: relative;\\n    + .btn {\\n      margin-left: -1px;\\n    }\\n    // Bring the \\"active\\" button to the front\\n    &:hover,\\n    &:focus,\\n    &:active {\\n      z-index: 2;\\n    }\\n  }\\n\\n  // Negative margin to only have a 1px border between the two\\n  &:first-child {\\n    > .btn,\\n    > .btn-group {\\n      margin-right: -1px;\\n    }\\n  }\\n  &:last-child {\\n    > .btn,\\n    > .btn-group {\\n      z-index: 2;\\n      margin-left: -1px;\\n    }\\n  }\\n}\\n","// Form validation states\\n//\\n// Used in forms.less to generate the form validation CSS for warnings, errors,\\n// and successes.\\n\\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\\n  // Color the label and help text\\n  .help-block,\\n  .control-label,\\n  .radio,\\n  .checkbox,\\n  .radio-inline,\\n  .checkbox-inline,\\n  &.radio label,\\n  &.checkbox label,\\n  &.radio-inline label,\\n  &.checkbox-inline label  {\\n    color: @text-color;\\n  }\\n  // Set the border and box shadow on specific inputs to match\\n  .form-control {\\n    border-color: @border-color;\\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\\n    &:focus {\\n      border-color: darken(@border-color, 10%);\\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\\n      .box-shadow(@shadow);\\n    }\\n  }\\n  // Set validation states also for addons\\n  .input-group-addon {\\n    color: @text-color;\\n    border-color: @border-color;\\n    background-color: @background-color;\\n  }\\n  // Optional feedback icon\\n  .form-control-feedback {\\n    color: @text-color;\\n  }\\n}\\n\\n\\n// Form control focus state\\n//\\n// Generate a customized focus state and for any input with the specified color,\\n// which defaults to the `@input-border-focus` variable.\\n//\\n// We highly encourage you to not customize the default value, but instead use\\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\\n// WebKit\'s default styles, but applicable to a wider range of browsers. Its\\n// usability and accessibility should be taken into account with any change.\\n//\\n// Example usage: change the default blue border and shadow to white for better\\n// contrast against a dark gray background.\\n.form-control-focus(@color: @input-border-focus) {\\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\\n  &:focus {\\n    border-color: @color;\\n    outline: 0;\\n    .box-shadow(~\\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\\");\\n  }\\n}\\n\\n// Form control sizing\\n//\\n// Relative text size, padding, and border-radii changes for form controls. For\\n// horizontal sizing, wrap controls in the predefined grid classes. `s in some browsers, due to the limited stylability of `s in IE10+.\\n  &::-ms-expand {\\n    border: 0;\\n    background-color: transparent;\\n  }\\n\\n  // Disabled and read-only inputs\\n  //\\n  // HTML5 says that controls under a fieldset > legend:first-child won\'t be\\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\\n  // don\'t honor that edge case; we style them as disabled anyway.\\n  &[disabled],\\n  &[readonly],\\n  fieldset[disabled] & {\\n    background-color: @input-bg-disabled;\\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\\n  }\\n\\n  &[disabled],\\n  fieldset[disabled] & {\\n    cursor: @cursor-disabled;\\n  }\\n\\n  // Reset height for `textarea`s\\n  textarea& {\\n    height: auto;\\n  }\\n}\\n\\n\\n// Search inputs in iOS\\n//\\n// This overrides the extra rounded corners on search inputs in iOS so that our\\n// `.form-control` class can properly style them. Note that this cannot simply\\n// be added to `.form-control` as it\'s not specific enough. For details, see\\n// https://github.com/twbs/bootstrap/issues/11586.\\n\\ninput[type=\\"search\\"] {\\n  -webkit-appearance: none;\\n}\\n\\n\\n// Special styles for iOS temporal inputs\\n//\\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\\n// text within the input to become vertically misaligned. As a workaround, we\\n// set a pixel line-height that matches the given height of the input, but only\\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\\n//\\n// Note that as of 8.3, iOS doesn\'t support `datetime` or `week`.\\n\\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\\n  input[type=\\"date\\"],\\n  input[type=\\"time\\"],\\n  input[type=\\"datetime-local\\"],\\n  input[type=\\"month\\"] {\\n    &.form-control {\\n      line-height: @input-height-base;\\n    }\\n\\n    &.input-sm,\\n    .input-group-sm & {\\n      line-height: @input-height-small;\\n    }\\n\\n    &.input-lg,\\n    .input-group-lg & {\\n      line-height: @input-height-large;\\n    }\\n  }\\n}\\n\\n\\n// Form groups\\n//\\n// Designed to help with the organization and spacing of vertical forms. For\\n// horizontal forms, use the predefined grid classes.\\n\\n.form-group {\\n  margin-bottom: @form-group-margin-bottom;\\n}\\n\\n\\n// Checkboxes and radios\\n//\\n// Indent the labels to position radios/checkboxes as hanging controls.\\n\\n.radio,\\n.checkbox {\\n  position: relative;\\n  display: block;\\n  margin-top: 10px;\\n  margin-bottom: 10px;\\n\\n  label {\\n    min-height: @line-height-computed; // Ensure the input doesn\'t jump when there is no text\\n    padding-left: 20px;\\n    margin-bottom: 0;\\n    font-weight: normal;\\n    cursor: pointer;\\n  }\\n}\\n.radio input[type=\\"radio\\"],\\n.radio-inline input[type=\\"radio\\"],\\n.checkbox input[type=\\"checkbox\\"],\\n.checkbox-inline input[type=\\"checkbox\\"] {\\n  position: absolute;\\n  margin-left: -20px;\\n  margin-top: 4px \\\\9;\\n}\\n\\n.radio + .radio,\\n.checkbox + .checkbox {\\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\\n}\\n\\n// Radios and checkboxes on same line\\n.radio-inline,\\n.checkbox-inline {\\n  position: relative;\\n  display: inline-block;\\n  padding-left: 20px;\\n  margin-bottom: 0;\\n  vertical-align: middle;\\n  font-weight: normal;\\n  cursor: pointer;\\n}\\n.radio-inline + .radio-inline,\\n.checkbox-inline + .checkbox-inline {\\n  margin-top: 0;\\n  margin-left: 10px; // space out consecutive inline controls\\n}\\n\\n// Apply same disabled cursor tweak as for inputs\\n// Some special care is needed because 
\\n \\n\\n \\n\\n \\n\\n
\\n \\n \\n
\\n\\n \\n\\n \\n\\n
\\n\';});\n \n-/* Pattern utils\n+(function(root) {\n+define("jqtree", ["jquery"], function() {\n+ return (function() {\n+/*!\n+ * JqTree 1.4.1\n+ * \n+ * Copyright 2017 Marco Braak\n+ * \n+ * Licensed under the Apache License, Version 2.0 (the "License");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ * \n+ * http://www.apache.org/licenses/LICENSE-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 */\n+/******/ (function(modules) { // webpackBootstrap\n+/******/ \t// The module cache\n+/******/ \tvar installedModules = {};\n+/******/\n+/******/ \t// The require function\n+/******/ \tfunction __webpack_require__(moduleId) {\n+/******/\n+/******/ \t\t// Check if module is in cache\n+/******/ \t\tif(installedModules[moduleId]) {\n+/******/ \t\t\treturn installedModules[moduleId].exports;\n+/******/ \t\t}\n+/******/ \t\t// Create a new module (and put it into the cache)\n+/******/ \t\tvar module = installedModules[moduleId] = {\n+/******/ \t\t\ti: moduleId,\n+/******/ \t\t\tl: false,\n+/******/ \t\t\texports: {}\n+/******/ \t\t};\n+/******/\n+/******/ \t\t// Execute the module function\n+/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+/******/\n+/******/ \t\t// Flag the module as loaded\n+/******/ \t\tmodule.l = true;\n+/******/\n+/******/ \t\t// Return the exports of the module\n+/******/ \t\treturn module.exports;\n+/******/ \t}\n+/******/\n+/******/\n+/******/ \t// expose the modules object (__webpack_modules__)\n+/******/ \t__webpack_require__.m = modules;\n+/******/\n+/******/ \t// expose the module cache\n+/******/ \t__webpack_require__.c = installedModules;\n+/******/\n+/******/ \t// identity function for calling harmony imports with the correct context\n+/******/ \t__webpack_require__.i = function(value) { return value; };\n+/******/\n+/******/ \t// define getter function for harmony exports\n+/******/ \t__webpack_require__.d = function(exports, name, getter) {\n+/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n+/******/ \t\t\tObject.defineProperty(exports, name, {\n+/******/ \t\t\t\tconfigurable: false,\n+/******/ \t\t\t\tenumerable: true,\n+/******/ \t\t\t\tget: getter\n+/******/ \t\t\t});\n+/******/ \t\t}\n+/******/ \t};\n+/******/\n+/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n+/******/ \t__webpack_require__.n = function(module) {\n+/******/ \t\tvar getter = module && module.__esModule ?\n+/******/ \t\t\tfunction getDefault() { return module[\'default\']; } :\n+/******/ \t\t\tfunction getModuleExports() { return module; };\n+/******/ \t\t__webpack_require__.d(getter, \'a\', getter);\n+/******/ \t\treturn getter;\n+/******/ \t};\n+/******/\n+/******/ \t// Object.prototype.hasOwnProperty.call\n+/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n+/******/\n+/******/ \t// __webpack_public_path__\n+/******/ \t__webpack_require__.p = "";\n+/******/\n+/******/ \t// Load entry module and return exports\n+/******/ \treturn __webpack_require__(__webpack_require__.s = 19);\n+/******/ })\n+/************************************************************************/\n+/******/ ([\n+/* 0 */\n+/***/ (function(module, exports, __webpack_require__) {\n+\n+\n+\n+exports.__esModule = true;\n+var Position;\n+(function (Position) {\n+ Position[Position["Before"] = 1] = "Before";\n+ Position[Position["After"] = 2] = "After";\n+ Position[Position["Inside"] = 3] = "Inside";\n+ Position[Position["None"] = 4] = "None";\n+})(Position = exports.Position || (exports.Position = {}));\n+exports.position_names = {\n+ before: Position.Before,\n+ after: Position.After,\n+ inside: Position.Inside,\n+ none: Position.None\n+};\n+function getPositionName(position) {\n+ for (var name_1 in exports.position_names) {\n+ if (exports.position_names.hasOwnProperty(name_1)) {\n+ if (exports.position_names[name_1] === position) {\n+ return name_1;\n+ }\n+ }\n+ }\n+ return "";\n+}\n+exports.getPositionName = getPositionName;\n+function getPosition(name) {\n+ return exports.position_names[name];\n+}\n+exports.getPosition = getPosition;\n+var Node = (function () {\n+ function Node(o, is_root, node_class) {\n+ if (is_root === void 0) { is_root = false; }\n+ if (node_class === void 0) { node_class = Node; }\n+ this.name = "";\n+ this.setData(o);\n+ this.children = [];\n+ this.parent = null;\n+ if (is_root) {\n+ this.id_mapping = {};\n+ this.tree = this;\n+ this.node_class = node_class;\n+ }\n+ }\n+ /*\n+ Set the data of this node.\n \n+ setData(string): set the name of the node\n+ setdata(object): set attributes of the node\n \n-define(\'mockup-utils\',[\n- \'jquery\'\n-], function($) {\n- \'use strict\';\n-\n- var QueryHelper = function(options) {\n- /* if pattern argument provided, it can implement the interface of:\n- * - browsing: boolean if currently browsing\n- * - currentPath: string of current path to apply to search if browsing\n- * - basePath: default path to provide if no subpath used\n- */\n-\n- var self = this;\n- var defaults = {\n- pattern: null, // must be passed in\n- vocabularyUrl: null,\n- searchParam: \'SearchableText\', // query string param to pass to search url\n- pathOperator: \'plone.app.querystring.operation.string.path\',\n- attributes: [\'UID\', \'Title\', \'Description\', \'getURL\', \'portal_type\'],\n- batchSize: 10, // number of results to retrive\n- baseCriteria: [],\n- sort_on: \'is_folderish\',\n- sort_order: \'reverse\',\n- pathDepth: 1\n- };\n- self.options = $.extend({}, defaults, options);\n+ Examples:\n+ setdata(\'node1\')\n \n- self.pattern = self.options.pattern;\n- if (self.pattern === undefined || self.pattern === null) {\n- self.pattern = {\n- browsing: false,\n- basePath: \'/\'\n- };\n- }\n+ setData({ name: \'node1\', id: 1});\n \n- if (self.options.url && !self.options.vocabularyUrl) {\n- self.options.vocabularyUrl = self.options.url;\n- } else if (self.pattern.vocabularyUrl) {\n- self.options.vocabularyUrl = self.pattern.vocabularyUrl;\n- }\n- self.valid = Boolean(self.options.vocabularyUrl);\n+ setData({ name: \'node2\', id: 2, color: \'green\'});\n \n- self.getBatch = function(page) {\n- return {\n- page: page ? page : 1,\n- size: self.options.batchSize\n- };\n+ * This is an internal function; it is not in the docs\n+ * Does not remove existing node values\n+ */\n+ Node.prototype.setData = function (o) {\n+ var _this = this;\n+ var setName = function (name) {\n+ if (name != null) {\n+ _this.name = name;\n+ }\n+ };\n+ if (!o) {\n+ return;\n+ }\n+ else if (typeof o !== "object") {\n+ setName(o);\n+ }\n+ else {\n+ for (var key in o) {\n+ if (o.hasOwnProperty(key)) {\n+ var value = o[key];\n+ if (key === "label") {\n+ // You can use the \'label\' key instead of \'name\'; this is a legacy feature\n+ setName(value);\n+ }\n+ else if (key !== "children") {\n+ // You can\'t update the children using this function\n+ this[key] = value;\n+ }\n+ }\n+ }\n+ }\n };\n+ /*\n+ Create tree from data.\n \n- self.getCurrentPath = function() {\n- var pattern = self.pattern;\n- var currentPath;\n- /* If currentPath is set on the QueryHelper object, use that first.\n- * Then, check on the pattern.\n- * Finally, see if it is a function and call it if it is.\n- */\n- if (self.currentPath) {\n- currentPath = self.currentPath;\n- } else {\n- currentPath = pattern.currentPath;\n- }\n- if (typeof currentPath === \'function\') {\n- currentPath = currentPath();\n- }\n- var path = currentPath;\n- if (!path) {\n- if (pattern.basePath) {\n- path = pattern.basePath;\n- } else if (pattern.options.basePath) {\n- path = pattern.options.basePath;\n- } else {\n- path = \'/\';\n+ Structure of data is:\n+ [\n+ {\n+ label: \'node1\',\n+ children: [\n+ { label: \'child1\' },\n+ { label: \'child2\' }\n+ ]\n+ },\n+ {\n+ label: \'node2\'\n+ }\n+ ]\n+ */\n+ Node.prototype.loadFromData = function (data) {\n+ this.removeChildren();\n+ for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n+ var o = data_1[_i];\n+ var node = new this.tree.node_class(o);\n+ this.addChild(node);\n+ if (typeof o === "object" && o["children"]) {\n+ node.loadFromData(o["children"]);\n+ }\n }\n- }\n- return path;\n };\n+ /*\n+ Add child.\n \n- self.getCriterias = function(term, searchOptions) {\n- if (searchOptions === undefined) {\n- searchOptions = {};\n- }\n- searchOptions = $.extend({}, {\n- useBaseCriteria: true,\n- additionalCriterias: []\n- }, searchOptions);\n+ tree.addChild(\n+ new Node(\'child1\')\n+ );\n+ */\n+ Node.prototype.addChild = function (node) {\n+ this.children.push(node);\n+ node._setParent(this);\n+ };\n+ /*\n+ Add child at position. Index starts at 0.\n \n- var criterias = [];\n- if (searchOptions.useBaseCriteria) {\n- criterias = self.options.baseCriteria.slice(0);\n- }\n- if (term) {\n- term += \'*\';\n- criterias.push({\n- i: self.options.searchParam,\n- o: \'plone.app.querystring.operation.string.contains\',\n- v: term\n- });\n- }\n- if (searchOptions.searchPath) {\n- criterias.push({\n- i: \'path\',\n- o: self.options.pathOperator,\n- v: searchOptions.searchPath + \'::\' + self.options.pathDepth\n- });\n- } else if (self.pattern.browsing) {\n- criterias.push({\n- i: \'path\',\n- o: self.options.pathOperator,\n- v: self.getCurrentPath() + \'::\' + self.options.pathDepth\n- });\n- }\n- criterias = criterias.concat(searchOptions.additionalCriterias);\n- return criterias;\n+ tree.addChildAtPosition(\n+ new Node(\'abc\'),\n+ 1\n+ );\n+ */\n+ Node.prototype.addChildAtPosition = function (node, index) {\n+ this.children.splice(index, 0, node);\n+ node._setParent(this);\n };\n+ /*\n+ Remove child. This also removes the children of the node.\n \n- self.getQueryData = function(term, page) {\n- var data = {\n- query: JSON.stringify({\n- criteria: self.getCriterias(term),\n- sort_on: self.options.sort_on,\n- sort_order: self.options.sort_order\n- }),\n- attributes: JSON.stringify(self.options.attributes)\n- };\n- if (page) {\n- data.batch = JSON.stringify(self.getBatch(page));\n- }\n- return data;\n+ tree.removeChild(tree.children[0]);\n+ */\n+ Node.prototype.removeChild = function (node) {\n+ // remove children from the index\n+ node.removeChildren();\n+ this._removeChild(node);\n };\n+ /*\n+ Get child index.\n \n- self.getUrl = function() {\n- var url = self.options.vocabularyUrl;\n- if (url.indexOf(\'?\') === -1) {\n- url += \'?\';\n- } else {\n- url += \'&\';\n- }\n- return url + $.param(self.getQueryData());\n+ var index = getChildIndex(node);\n+ */\n+ Node.prototype.getChildIndex = function (node) {\n+ return $.inArray(node, this.children);\n };\n+ /*\n+ Does the tree have children?\n \n- self.selectAjax = function() {\n- return {\n- url: self.options.vocabularyUrl,\n- dataType: \'JSON\',\n- quietMillis: 100,\n- data: function(term, page) {\n- return self.getQueryData(term, page);\n- },\n- results: function(data, page) {\n- var more = (page * 10) < data.total; // whether or not there are more results available\n- // notice we return the value of more so Select2 knows if more results can be loaded\n- return {\n- results: data.results,\n- more: more\n- };\n- }\n- };\n+ if (tree.hasChildren()) {\n+ //\n+ }\n+ */\n+ Node.prototype.hasChildren = function () {\n+ return this.children.length !== 0;\n+ };\n+ Node.prototype.isFolder = function () {\n+ return this.hasChildren() || this.load_on_demand;\n };\n+ /*\n+ Iterate over all the nodes in the tree.\n \n- self.search = function(term, operation, value, callback, useBaseCriteria, type) {\n- if (useBaseCriteria === undefined) {\n- useBaseCriteria = true;\n- }\n- if (type === undefined) {\n- type = \'GET\';\n- }\n- var criteria = [];\n- if (useBaseCriteria) {\n- criteria = self.options.baseCriteria.slice(0);\n- }\n- criteria.push({\n- i: term,\n- o: operation,\n- v: value\n- });\n- var data = {\n- query: JSON.stringify({\n- criteria: criteria\n- }),\n- attributes: JSON.stringify(self.options.attributes)\n- };\n- $.ajax({\n- url: self.options.vocabularyUrl,\n- dataType: \'JSON\',\n- data: data,\n- type: type,\n- success: callback\n- });\n+ Calls callback with (node, level).\n+\n+ The callback must return true to continue the iteration on current node.\n+\n+ tree.iterate(\n+ function(node, level) {\n+ console.log(node.name);\n+\n+ // stop iteration after level 2\n+ return (level <= 2);\n+ }\n+ );\n+\n+ */\n+ Node.prototype.iterate = function (callback) {\n+ var _iterate = function (node, level) {\n+ if (node.children) {\n+ for (var _i = 0, _a = node.children; _i < _a.length; _i++) {\n+ var child = _a[_i];\n+ var result = callback(child, level);\n+ if (result && child.hasChildren()) {\n+ _iterate(child, level + 1);\n+ }\n+ }\n+ }\n+ };\n+ _iterate(this, 0);\n };\n+ /*\n+ Move node relative to another node.\n \n- return self;\n- };\n+ Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n \n- var Loading = function(options) {\n+ // move node1 after node2\n+ tree.moveNode(node1, node2, Position.AFTER);\n+ */\n+ Node.prototype.moveNode = function (moved_node, target_node, position) {\n+ if (!moved_node.parent || moved_node.isParentOf(target_node)) {\n+ // - Node is parent of target node\n+ // - Or, parent is empty\n+ return;\n+ }\n+ else {\n+ moved_node.parent._removeChild(moved_node);\n+ if (position === Position.After) {\n+ if (target_node.parent) {\n+ target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);\n+ }\n+ }\n+ else if (position === Position.Before) {\n+ if (target_node.parent) {\n+ target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));\n+ }\n+ }\n+ else if (position === Position.Inside) {\n+ // move inside as first child\n+ target_node.addChildAtPosition(moved_node, 0);\n+ }\n+ }\n+ };\n /*\n- * Options:\n- * backdrop(pattern): if you want to have the progress indicator work\n- * seamlessly with backdrop pattern\n- * zIndex(integer or function): to override default z-index used\n- */\n- var self = this;\n- self.className = \'plone-loader\';\n- var defaults = {\n- backdrop: null,\n- zIndex: 10005 // can be a function\n+ Get the tree as data.\n+ */\n+ Node.prototype.getData = function (include_parent) {\n+ if (include_parent === void 0) { include_parent = false; }\n+ function getDataFromNodes(nodes) {\n+ return nodes.map(function (node) {\n+ var tmp_node = {};\n+ for (var k in node) {\n+ if (["parent", "children", "element", "tree"].indexOf(k) === -1 &&\n+ Object.prototype.hasOwnProperty.call(node, k)) {\n+ var v = node[k];\n+ tmp_node[k] = v;\n+ }\n+ }\n+ if (node.hasChildren()) {\n+ tmp_node["children"] = getDataFromNodes(node.children);\n+ }\n+ return tmp_node;\n+ });\n+ }\n+ if (include_parent) {\n+ return getDataFromNodes([this]);\n+ }\n+ else {\n+ return getDataFromNodes(this.children);\n+ }\n };\n- if (!options) {\n- options = {};\n- }\n- self.options = $.extend({}, defaults, options);\n-\n- self.init = function() {\n- self.$el = $(\'.\' + self.className);\n- if (self.$el.length === 0) {\n- self.$el = $(\'
\');\n- self.$el.addClass(self.className).hide().appendTo(\'body\');\n- }\n+ Node.prototype.getNodeByName = function (name) {\n+ return this.getNodeByCallback(function (node) { return node.name === name; });\n };\n-\n- self.show = function(closable) {\n- self.init();\n- self.$el.show();\n- var zIndex = self.options.zIndex;\n- if (typeof(zIndex) === \'function\') {\n- zIndex = Math.max(zIndex(), 10005);\n- } else {\n- // go through all modals and backdrops and make sure we have a higher\n- // z-index to use\n- zIndex = 10005;\n- $(\'.plone-modal-wrapper,.plone-modal-backdrop\').each(function() {\n- zIndex = Math.max(zIndex, $(this).css(\'zIndex\') || 10005);\n+ Node.prototype.getNodeByCallback = function (callback) {\n+ var result = null;\n+ this.iterate(function (node) {\n+ if (callback(node)) {\n+ result = node;\n+ return false;\n+ }\n+ else {\n+ return true;\n+ }\n });\n- zIndex += 1;\n- }\n- self.$el.css(\'zIndex\', zIndex);\n-\n- if (closable === undefined) {\n- closable = true;\n- }\n- if (self.options.backdrop) {\n- self.options.backdrop.closeOnClick = closable;\n- self.options.backdrop.closeOnEsc = closable;\n- self.options.backdrop.init();\n- self.options.backdrop.show();\n- }\n+ return result;\n };\n-\n- self.hide = function() {\n- self.init();\n- self.$el.hide();\n+ Node.prototype.addAfter = function (node_info) {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var node = new this.tree.node_class(node_info);\n+ var child_index = this.parent.getChildIndex(this);\n+ this.parent.addChildAtPosition(node, child_index + 1);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ }\n+ };\n+ Node.prototype.addBefore = function (node_info) {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var node = new this.tree.node_class(node_info);\n+ var child_index = this.parent.getChildIndex(this);\n+ this.parent.addChildAtPosition(node, child_index);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ }\n+ };\n+ Node.prototype.addParent = function (node_info) {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var new_parent = new this.tree.node_class(node_info);\n+ new_parent._setParent(this.tree);\n+ var original_parent = this.parent;\n+ for (var _i = 0, _a = original_parent.children; _i < _a.length; _i++) {\n+ var child = _a[_i];\n+ new_parent.addChild(child);\n+ }\n+ original_parent.children = [];\n+ original_parent.addChild(new_parent);\n+ return new_parent;\n+ }\n+ };\n+ Node.prototype.remove = function () {\n+ if (this.parent) {\n+ this.parent.removeChild(this);\n+ this.parent = null;\n+ }\n+ };\n+ Node.prototype.append = function (node_info) {\n+ var node = new this.tree.node_class(node_info);\n+ this.addChild(node);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ };\n+ Node.prototype.prepend = function (node_info) {\n+ var node = new this.tree.node_class(node_info);\n+ this.addChildAtPosition(node, 0);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ };\n+ Node.prototype.isParentOf = function (node) {\n+ var parent = node.parent;\n+ while (parent) {\n+ if (parent === this) {\n+ return true;\n+ }\n+ parent = parent.parent;\n+ }\n+ return false;\n+ };\n+ Node.prototype.getLevel = function () {\n+ var level = 0;\n+ var node = this;\n+ while (node.parent) {\n+ level += 1;\n+ node = node.parent;\n+ }\n+ return level;\n+ };\n+ Node.prototype.getNodeById = function (node_id) {\n+ return this.id_mapping[node_id];\n+ };\n+ Node.prototype.addNodeToIndex = function (node) {\n+ if (node.id != null) {\n+ this.id_mapping[node.id] = node;\n+ }\n+ };\n+ Node.prototype.removeNodeFromIndex = function (node) {\n+ if (node.id != null) {\n+ delete this.id_mapping[node.id];\n+ }\n+ };\n+ Node.prototype.removeChildren = function () {\n+ var _this = this;\n+ this.iterate(function (child) {\n+ _this.tree.removeNodeFromIndex(child);\n+ return true;\n+ });\n+ this.children = [];\n+ };\n+ Node.prototype.getPreviousSibling = function () {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var previous_index = this.parent.getChildIndex(this) - 1;\n+ if (previous_index >= 0) {\n+ return this.parent.children[previous_index];\n+ }\n+ else {\n+ return null;\n+ }\n+ }\n+ };\n+ Node.prototype.getNextSibling = function () {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var next_index = this.parent.getChildIndex(this) + 1;\n+ if (next_index < this.parent.children.length) {\n+ return this.parent.children[next_index];\n+ }\n+ else {\n+ return null;\n+ }\n+ }\n+ };\n+ Node.prototype.getNodesByProperty = function (key, value) {\n+ return this.filter(function (node) { return node[key] === value; });\n+ };\n+ Node.prototype.filter = function (f) {\n+ var result = [];\n+ this.iterate(function (node) {\n+ if (f(node)) {\n+ result.push(node);\n+ }\n+ return true;\n+ });\n+ return result;\n+ };\n+ Node.prototype.getNextNode = function (include_children) {\n+ if (include_children === void 0) { include_children = true; }\n+ if (include_children && this.hasChildren() && this.is_open) {\n+ // First child\n+ return this.children[0];\n+ }\n+ else {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var next_sibling = this.getNextSibling();\n+ if (next_sibling) {\n+ // Next sibling\n+ return next_sibling;\n+ }\n+ else {\n+ // Next node of parent\n+ return this.parent.getNextNode(false);\n+ }\n+ }\n+ }\n+ };\n+ Node.prototype.getPreviousNode = function () {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var previous_sibling = this.getPreviousSibling();\n+ if (previous_sibling) {\n+ if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {\n+ // Previous sibling\n+ return previous_sibling;\n+ }\n+ else {\n+ // Last child of previous sibling\n+ return previous_sibling.getLastChild();\n+ }\n+ }\n+ else {\n+ return this.getParent();\n+ }\n+ }\n+ };\n+ Node.prototype.getParent = function () {\n+ // Return parent except if it is the root node\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else if (!this.parent.parent) {\n+ // Root node -> null\n+ return null;\n+ }\n+ else {\n+ return this.parent;\n+ }\n+ };\n+ Node.prototype.getLastChild = function () {\n+ if (!this.hasChildren()) {\n+ return null;\n+ }\n+ else {\n+ var last_child = this.children[this.children.length - 1];\n+ if (!last_child.hasChildren() || !last_child.is_open) {\n+ return last_child;\n+ }\n+ else {\n+ return last_child.getLastChild();\n+ }\n+ }\n+ };\n+ // Init Node from data without making it the root of the tree\n+ Node.prototype.initFromData = function (data) {\n+ var _this = this;\n+ var addNode = function (node_data) {\n+ _this.setData(node_data);\n+ if (node_data["children"]) {\n+ addChildren(node_data["children"]);\n+ }\n+ };\n+ var addChildren = function (children_data) {\n+ for (var _i = 0, children_data_1 = children_data; _i < children_data_1.length; _i++) {\n+ var child = children_data_1[_i];\n+ var node = new _this.tree.node_class("");\n+ node.initFromData(child);\n+ _this.addChild(node);\n+ }\n+ };\n+ addNode(data);\n };\n+ Node.prototype._setParent = function (parent) {\n+ this.parent = parent;\n+ this.tree = parent.tree;\n+ this.tree.addNodeToIndex(this);\n+ };\n+ Node.prototype._removeChild = function (node) {\n+ this.children.splice(this.getChildIndex(node), 1);\n+ this.tree.removeNodeFromIndex(node);\n+ };\n+ return Node;\n+}());\n+exports.Node = Node;\n \n- return self;\n- };\n \n- var getAuthenticator = function() {\n- var $el = $(\'input[name="_authenticator"]\');\n- if ($el.length === 0) {\n- $el = $(\'a[href*="_authenticator"]\');\n- if ($el.length > 0) {\n- return $el.attr(\'href\').split(\'_authenticator=\')[1];\n- }\n- return \'\';\n- } else {\n- return $el.val();\n- }\n- };\n+/***/ }),\n+/* 1 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- var generateId = function(prefix) {\n- if (prefix === undefined) {\n- prefix = \'id\';\n- }\n- return prefix + (Math.floor((1 + Math.random()) * 0x10000)\n- .toString(16).substring(1));\n- };\n \n- var setId = function($el, prefix) {\n- if (prefix === undefined) {\n- prefix = \'id\';\n- }\n- var id = $el.attr(\'id\');\n- if (id === undefined) {\n- id = generateId(prefix);\n- } else {\n- /* hopefully we don\'t screw anything up here... changing the id\n- * in some cases so we get a decent selector */\n- id = id.replace(/\\./g, \'-\');\n- }\n- $el.attr(\'id\', id);\n- return id;\n- };\n \n- var getWindow = function() {\n- var win = window;\n- if (win.parent !== window) {\n- win = win.parent;\n+exports.__esModule = true;\n+function isInt(n) {\n+ return typeof n === "number" && n % 1 === 0;\n+}\n+exports.isInt = isInt;\n+function isFunction(v) {\n+ return typeof v === "function";\n+}\n+exports.isFunction = isFunction;\n+// Escape a string for HTML interpolation; copied from underscore js\n+function html_escape(text) {\n+ return ("" + text)\n+ .replace(/&/g, "&")\n+ .replace(//g, ">")\n+ .replace(/"/g, """)\n+ .replace(/\'/g, "'")\n+ .replace(/\\//g, "/");\n+}\n+exports.html_escape = html_escape;\n+function getBoolString(value) {\n+ if (value) {\n+ return "true";\n }\n- return win;\n- };\n-\n- var parseBodyTag = function(txt) {\n- return $((/]*>((.|[\\n\\r])*)<\\/body>/im).exec(txt)[0]\n- .replace(\'\', \'\')).eq(0).html();\n- };\n-\n- var featureSupport = {\n- /* Well tested feature support for things we use in mockup.\n- * All gathered from: http://diveintohtml5.info/everything.html\n- * Alternative to using some form of modernizr.\n- */\n- dragAndDrop: function() {\n- return \'draggable\' in document.createElement(\'span\');\n- },\n- fileApi: function() {\n- return typeof FileReader != \'undefined\'; // jshint ignore:line\n- },\n- history: function() {\n- return !!(window.history && window.history.pushState);\n+ else {\n+ return "false";\n }\n- };\n+}\n+exports.getBoolString = getBoolString;\n \n- var bool = function(val) {\n- if (typeof val === \'string\') {\n- val = $.trim(val).toLowerCase();\n- }\n- return [\'false\', false, \'0\', 0, \'\', undefined, null].indexOf(val) === -1;\n- };\n \n- var escapeHTML = function(val) {\n- return $(\'
\').text(val).html();\n- };\n+/***/ }),\n+/* 2 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- var removeHTML = function(val) {\n- return val.replace(/<[^>]+>/ig, "");\n- };\n \n- return {\n- bool: bool,\n- escapeHTML: escapeHTML,\n- removeHTML: removeHTML,\n- featureSupport: featureSupport,\n- generateId: generateId,\n- getAuthenticator: getAuthenticator,\n- getWindow: getWindow,\n- Loading: Loading,\n- loading: new Loading(), // provide default loader\n- parseBodyTag: parseBodyTag,\n- QueryHelper: QueryHelper,\n- setId: setId\n- };\n-});\n-\n-(function(root) {\n-define("jqtree", ["jquery"], function() {\n- return (function() {\n-/*\n-JqTree 1.3.3\n-\n-Copyright 2015 Marco Braak\n-\n-Licensed under the Apache License, Version 2.0 (the "License");\n-you may not use this file except in compliance with the License.\n-You may obtain a copy of the License at\n-\n- http://www.apache.org/licenses/LICENSE-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 e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module \'"+o+"\'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o dimensions.right || y > dimensions.bottom) {\n- return null;\n- }\n- low = 0;\n- high = this.hit_areas.length;\n- while (low < high) {\n- mid = (low + high) >> 1;\n- area = this.hit_areas[mid];\n- if (y < area.top) {\n- high = mid;\n- } else if (y > area.bottom) {\n- low = mid + 1;\n- } else {\n- return area;\n- }\n- }\n- return null;\n- };\n-\n- DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) {\n- var node;\n- node = area.node;\n- return node.isFolder() && !node.is_open && area.position === Position.INSIDE;\n- };\n-\n- DragAndDropHandler.prototype.updateDropHint = function() {\n- var node_element;\n- if (!this.hovered_area) {\n- return;\n- }\n- this.removeDropHint();\n- node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node);\n- return this.previous_ghost = node_element.addDropHint(this.hovered_area.position);\n- };\n-\n- DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) {\n- var openFolder;\n- openFolder = (function(_this) {\n- return function() {\n- return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() {\n- _this.refresh();\n- return _this.updateDropHint();\n- });\n- };\n- })(this);\n- this.stopOpenFolderTimer();\n- return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay);\n- };\n-\n- DragAndDropHandler.prototype.stopOpenFolderTimer = function() {\n- if (this.open_folder_timer) {\n- clearTimeout(this.open_folder_timer);\n- return this.open_folder_timer = null;\n- }\n- };\n-\n- DragAndDropHandler.prototype.moveItem = function(position_info) {\n- var doMove, event, moved_node, position, previous_parent, target_node;\n- if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) {\n- moved_node = this.current_item.node;\n- target_node = this.hovered_area.node;\n- position = this.hovered_area.position;\n- previous_parent = moved_node.parent;\n- if (position === Position.INSIDE) {\n- this.hovered_area.node.is_open = true;\n- }\n- doMove = (function(_this) {\n- return function() {\n- _this.tree_widget.tree.moveNode(moved_node, target_node, position);\n- _this.tree_widget.element.empty();\n- return _this.tree_widget._refreshElements();\n- };\n- })(this);\n- event = this.tree_widget._triggerEvent(\'tree.move\', {\n- move_info: {\n- moved_node: moved_node,\n- target_node: target_node,\n- position: Position.getName(position),\n- previous_parent: previous_parent,\n- do_move: doMove,\n- original_event: position_info.original_event\n+ function createWidget($el, options) {\n+ var data_key = getDataKey();\n+ for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var existing_widget = getWidgetData(el, data_key);\n+ if (!existing_widget) {\n+ var widget = new widget_class(el, options);\n+ if (!$.data(el, data_key)) {\n+ $.data(el, data_key, widget);\n+ }\n+ // Call init after setting data, so we can call methods\n+ widget._init();\n+ }\n+ }\n+ return $el;\n }\n- });\n- if (!event.isDefaultPrevented()) {\n- return doMove();\n- }\n- }\n- };\n-\n- DragAndDropHandler.prototype.getTreeDimensions = function() {\n- var offset;\n- offset = this.tree_widget.element.offset();\n- return {\n- left: offset.left,\n- top: offset.top,\n- right: offset.left + this.tree_widget.element.width(),\n- bottom: offset.top + this.tree_widget.element.height() + 16\n- };\n- };\n-\n- return DragAndDropHandler;\n-\n-})();\n-\n-VisibleNodeIterator = (function() {\n- function VisibleNodeIterator(tree) {\n- this.tree = tree;\n- }\n-\n- VisibleNodeIterator.prototype.iterate = function() {\n- var _iterateNode, is_first_node;\n- is_first_node = true;\n- _iterateNode = (function(_this) {\n- return function(node, next_node) {\n- var $element, child, children_length, i, j, len, must_iterate_inside, ref;\n- must_iterate_inside = (node.is_open || !node.element) && node.hasChildren();\n- if (node.element) {\n- $element = $(node.element);\n- if (!$element.is(\':visible\')) {\n- return;\n- }\n- if (is_first_node) {\n- _this.handleFirstNode(node, $element);\n- is_first_node = false;\n- }\n- if (!node.hasChildren()) {\n- _this.handleNode(node, next_node, $element);\n- } else if (node.is_open) {\n- if (!_this.handleOpenFolder(node, $element)) {\n- must_iterate_inside = false;\n+ function destroyWidget($el) {\n+ var data_key = getDataKey();\n+ for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var widget = getWidgetData(el, data_key);\n+ if (widget) {\n+ widget.destroy();\n+ }\n+ $.removeData(el, data_key);\n }\n- } else {\n- _this.handleClosedFolder(node, next_node, $element);\n- }\n }\n- if (must_iterate_inside) {\n- children_length = node.children.length;\n- ref = node.children;\n- for (i = j = 0, len = ref.length; j < len; i = ++j) {\n- child = ref[i];\n- if (i === (children_length - 1)) {\n- _iterateNode(node.children[i], null);\n- } else {\n- _iterateNode(node.children[i], node.children[i + 1]);\n+ function callFunction($el, function_name, args) {\n+ var result = null;\n+ for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var widget = $.data(el, getDataKey());\n+ if (widget && (widget instanceof SimpleWidget)) {\n+ var widget_function = widget[function_name];\n+ if (widget_function && (typeof widget_function === "function")) {\n+ result = widget_function.apply(widget, args);\n+ }\n+ }\n }\n- }\n- if (node.is_open) {\n- return _this.handleAfterOpenFolder(node, next_node, $element);\n- }\n+ return result;\n }\n- };\n- })(this);\n- return _iterateNode(this.tree, null);\n- };\n-\n- VisibleNodeIterator.prototype.handleNode = function(node, next_node, $element) {};\n-\n- VisibleNodeIterator.prototype.handleOpenFolder = function(node, $element) {};\n+ // tslint:disable-next-line: only-arrow-functions\n+ $.fn[widget_name] = function (argument1) {\n+ var args = [];\n+ for (var _i = 1; _i < arguments.length; _i++) {\n+ args[_i - 1] = arguments[_i];\n+ }\n+ var $el = this;\n+ if (argument1 === undefined || typeof argument1 === "object") {\n+ var options = argument1;\n+ return createWidget($el, options);\n+ }\n+ else if (typeof argument1 === "string" && argument1[0] !== "_") {\n+ var function_name = argument1;\n+ if (function_name === "destroy") {\n+ return destroyWidget($el);\n+ }\n+ else if (function_name === "get_widget_class") {\n+ return widget_class;\n+ }\n+ else {\n+ return callFunction($el, function_name, args);\n+ }\n+ }\n+ };\n+ };\n+ SimpleWidget.prototype.destroy = function () {\n+ this._deinit();\n+ };\n+ SimpleWidget.prototype._init = function () {\n+ //\n+ };\n+ SimpleWidget.prototype._deinit = function () {\n+ //\n+ };\n+ return SimpleWidget;\n+}());\n+SimpleWidget.defaults = {};\n+exports["default"] = SimpleWidget;\n \n- VisibleNodeIterator.prototype.handleClosedFolder = function(node, next_node, $element) {};\n \n- VisibleNodeIterator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {};\n+/***/ }),\n+/* 3 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- VisibleNodeIterator.prototype.handleFirstNode = function(node, $element) {};\n \n- return VisibleNodeIterator;\n \n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n })();\n-\n-HitAreasGenerator = (function(superClass) {\n- extend(HitAreasGenerator, superClass);\n-\n- function HitAreasGenerator(tree, current_node, tree_bottom) {\n- HitAreasGenerator.__super__.constructor.call(this, tree);\n- this.current_node = current_node;\n- this.tree_bottom = tree_bottom;\n- }\n-\n- HitAreasGenerator.prototype.generate = function() {\n- this.positions = [];\n- this.last_top = 0;\n- this.iterate();\n- return this.generateHitAreas(this.positions);\n- };\n-\n- HitAreasGenerator.prototype.getTop = function($element) {\n- return $element.offset().top;\n- };\n-\n- HitAreasGenerator.prototype.addPosition = function(node, position, top) {\n- var area;\n- area = {\n- top: top,\n- node: node,\n- position: position\n+exports.__esModule = true;\n+var version_1 = __webpack_require__(12);\n+var drag_and_drop_handler_1 = __webpack_require__(4);\n+var elements_renderer_1 = __webpack_require__(5);\n+var key_handler_1 = __webpack_require__(6);\n+var mouse_widget_1 = __webpack_require__(7);\n+var save_state_handler_1 = __webpack_require__(9);\n+var scroll_handler_1 = __webpack_require__(10);\n+var select_node_handler_1 = __webpack_require__(11);\n+var simple_widget_1 = __webpack_require__(2);\n+var node_1 = __webpack_require__(0);\n+var util_1 = __webpack_require__(1);\n+var node_element_1 = __webpack_require__(8);\n+var JqTreeWidget = (function (_super) {\n+ __extends(JqTreeWidget, _super);\n+ function JqTreeWidget() {\n+ return _super !== null && _super.apply(this, arguments) || this;\n+ }\n+ JqTreeWidget.prototype.toggle = function (node, slide_param) {\n+ var slide = slide_param == null ? this.options.slide : slide_param;\n+ if (node.is_open) {\n+ this.closeNode(node, slide);\n+ }\n+ else {\n+ this.openNode(node, slide);\n+ }\n+ return this.element;\n };\n- this.positions.push(area);\n- return this.last_top = top;\n- };\n-\n- HitAreasGenerator.prototype.handleNode = function(node, next_node, $element) {\n- var top;\n- top = this.getTop($element);\n- if (node === this.current_node) {\n- this.addPosition(node, Position.NONE, top);\n- } else {\n- this.addPosition(node, Position.INSIDE, top);\n- }\n- if (next_node === this.current_node || node === this.current_node) {\n- return this.addPosition(node, Position.NONE, top);\n- } else {\n- return this.addPosition(node, Position.AFTER, top);\n- }\n- };\n-\n- HitAreasGenerator.prototype.handleOpenFolder = function(node, $element) {\n- if (node === this.current_node) {\n- return false;\n- }\n- if (node.children[0] !== this.current_node) {\n- this.addPosition(node, Position.INSIDE, this.getTop($element));\n- }\n- return true;\n- };\n-\n- HitAreasGenerator.prototype.handleClosedFolder = function(node, next_node, $element) {\n- var top;\n- top = this.getTop($element);\n- if (node === this.current_node) {\n- return this.addPosition(node, Position.NONE, top);\n- } else {\n- this.addPosition(node, Position.INSIDE, top);\n- if (next_node !== this.current_node) {\n- return this.addPosition(node, Position.AFTER, top);\n- }\n- }\n- };\n-\n- HitAreasGenerator.prototype.handleFirstNode = function(node, $element) {\n- if (node !== this.current_node) {\n- return this.addPosition(node, Position.BEFORE, this.getTop($(node.element)));\n- }\n- };\n-\n- HitAreasGenerator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {\n- if (node === this.current_node.node || next_node === this.current_node.node) {\n- return this.addPosition(node, Position.NONE, this.last_top);\n- } else {\n- return this.addPosition(node, Position.AFTER, this.last_top);\n- }\n- };\n-\n- HitAreasGenerator.prototype.generateHitAreas = function(positions) {\n- var group, hit_areas, j, len, position, previous_top;\n- previous_top = -1;\n- group = [];\n- hit_areas = [];\n- for (j = 0, len = positions.length; j < len; j++) {\n- position = positions[j];\n- if (position.top !== previous_top && group.length) {\n- if (group.length) {\n- this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top);\n+ JqTreeWidget.prototype.getTree = function () {\n+ return this.tree;\n+ };\n+ JqTreeWidget.prototype.selectNode = function (node) {\n+ this._selectNode(node, false);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getSelectedNode = function () {\n+ if (this.select_node_handler) {\n+ return this.select_node_handler.getSelectedNode();\n+ }\n+ else {\n+ return false;\n }\n- previous_top = position.top;\n- group = [];\n- }\n- group.push(position);\n- }\n- this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom);\n- return hit_areas;\n- };\n-\n- HitAreasGenerator.prototype.generateHitAreasForGroup = function(hit_areas, positions_in_group, top, bottom) {\n- var area_height, area_top, i, position, position_count;\n- position_count = Math.min(positions_in_group.length, 4);\n- area_height = Math.round((bottom - top) / position_count);\n- area_top = top;\n- i = 0;\n- while (i < position_count) {\n- position = positions_in_group[i];\n- hit_areas.push({\n- top: area_top,\n- bottom: area_top + area_height,\n- node: position.node,\n- position: position.position\n- });\n- area_top += area_height;\n- i += 1;\n- }\n- return null;\n- };\n-\n- return HitAreasGenerator;\n-\n-})(VisibleNodeIterator);\n-\n-DragElement = (function() {\n- function DragElement(node, offset_x, offset_y, $tree) {\n- this.offset_x = offset_x;\n- this.offset_y = offset_y;\n- this.$element = $("" + node.name + "");\n- this.$element.css("position", "absolute");\n- $tree.append(this.$element);\n- }\n-\n- DragElement.prototype.move = function(page_x, page_y) {\n- return this.$element.offset({\n- left: page_x - this.offset_x,\n- top: page_y - this.offset_y\n- });\n- };\n-\n- DragElement.prototype.remove = function() {\n- return this.$element.remove();\n- };\n-\n- return DragElement;\n-\n-})();\n-\n-module.exports = {\n- DragAndDropHandler: DragAndDropHandler,\n- DragElement: DragElement,\n- HitAreasGenerator: HitAreasGenerator\n-};\n-\n-},{"./node":5}],2:[function(require,module,exports){\n-var $, ElementsRenderer, NodeElement, html_escape, node_element, util;\n-\n-node_element = require(\'./node_element\');\n-\n-NodeElement = node_element.NodeElement;\n-\n-util = require(\'./util\');\n-\n-html_escape = util.html_escape;\n-\n-$ = jQuery;\n-\n-ElementsRenderer = (function() {\n- function ElementsRenderer(tree_widget) {\n- this.tree_widget = tree_widget;\n- this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon);\n- this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon);\n- }\n-\n- ElementsRenderer.prototype.render = function(from_node) {\n- if (from_node && from_node.parent) {\n- return this.renderFromNode(from_node);\n- } else {\n- return this.renderFromRoot();\n- }\n- };\n-\n- ElementsRenderer.prototype.renderFromRoot = function() {\n- var $element;\n- $element = this.tree_widget.element;\n- $element.empty();\n- return this.createDomElements($element[0], this.tree_widget.tree.children, true, true, 1);\n- };\n-\n- ElementsRenderer.prototype.renderFromNode = function(node) {\n- var $previous_li, li;\n- $previous_li = $(node.element);\n- li = this.createLi(node, node.getLevel());\n- this.attachNodeData(node, li);\n- $previous_li.after(li);\n- $previous_li.remove();\n- if (node.children) {\n- return this.createDomElements(li, node.children, false, false, node.getLevel() + 1);\n- }\n- };\n-\n- ElementsRenderer.prototype.createDomElements = function(element, children, is_root_node, is_open, level) {\n- var child, i, len, li, ul;\n- ul = this.createUl(is_root_node);\n- element.appendChild(ul);\n- for (i = 0, len = children.length; i < len; i++) {\n- child = children[i];\n- li = this.createLi(child, level);\n- ul.appendChild(li);\n- this.attachNodeData(child, li);\n- if (child.hasChildren()) {\n- this.createDomElements(li, child.children, false, child.is_open, level + 1);\n- }\n- }\n- return null;\n- };\n-\n- ElementsRenderer.prototype.attachNodeData = function(node, li) {\n- node.element = li;\n- return $(li).data(\'node\', node);\n- };\n-\n- ElementsRenderer.prototype.createUl = function(is_root_node) {\n- var class_string, role, ul;\n- if (!is_root_node) {\n- class_string = \'\';\n- role = \'group\';\n- } else {\n- class_string = \'jqtree-tree\';\n- role = \'tree\';\n- if (this.tree_widget.options.rtl) {\n- class_string += \' jqtree-rtl\';\n- }\n- }\n- ul = document.createElement(\'ul\');\n- ul.className = "jqtree_common " + class_string;\n- ul.setAttribute(\'role\', role);\n- return ul;\n- };\n-\n- ElementsRenderer.prototype.createLi = function(node, level) {\n- var is_selected, li;\n- is_selected = this.tree_widget.select_node_handler && this.tree_widget.select_node_handler.isNodeSelected(node);\n- if (node.isFolder()) {\n- li = this.createFolderLi(node, level, is_selected);\n- } else {\n- li = this.createNodeLi(node, level, is_selected);\n- }\n- if (this.tree_widget.options.onCreateLi) {\n- this.tree_widget.options.onCreateLi(node, $(li));\n- }\n- return li;\n- };\n-\n- ElementsRenderer.prototype.createFolderLi = function(node, level, is_selected) {\n- var button_classes, button_link, div, folder_classes, icon_element, is_folder, li;\n- button_classes = this.getButtonClasses(node);\n- folder_classes = this.getFolderClasses(node, is_selected);\n- if (node.is_open) {\n- icon_element = this.opened_icon_element;\n- } else {\n- icon_element = this.closed_icon_element;\n- }\n- li = document.createElement(\'li\');\n- li.className = "jqtree_common " + folder_classes;\n- li.setAttribute(\'role\', \'presentation\');\n- div = document.createElement(\'div\');\n- div.className = "jqtree-element jqtree_common";\n- div.setAttribute(\'role\', \'presentation\');\n- li.appendChild(div);\n- button_link = document.createElement(\'a\');\n- button_link.className = button_classes;\n- button_link.appendChild(icon_element.cloneNode(false));\n- button_link.setAttribute(\'role\', \'presentation\');\n- button_link.setAttribute(\'aria-hidden\', \'true\');\n- if (this.tree_widget.options.buttonLeft) {\n- div.appendChild(button_link);\n- }\n- div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = true));\n- if (!this.tree_widget.options.buttonLeft) {\n- div.appendChild(button_link);\n- }\n- return li;\n- };\n-\n- ElementsRenderer.prototype.createNodeLi = function(node, level, is_selected) {\n- var class_string, div, is_folder, li, li_classes;\n- li_classes = [\'jqtree_common\'];\n- if (is_selected) {\n- li_classes.push(\'jqtree-selected\');\n- }\n- class_string = li_classes.join(\' \');\n- li = document.createElement(\'li\');\n- li.className = class_string;\n- li.setAttribute(\'role\', \'presentation\');\n- div = document.createElement(\'div\');\n- div.className = "jqtree-element jqtree_common";\n- div.setAttribute(\'role\', \'presentation\');\n- li.appendChild(div);\n- div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = false));\n- return li;\n- };\n-\n- ElementsRenderer.prototype.createTitleSpan = function(node_name, level, is_selected, is_open, is_folder) {\n- var classes, title_span;\n- title_span = document.createElement(\'span\');\n- classes = "jqtree-title jqtree_common";\n- if (is_folder) {\n- classes += " jqtree-title-folder";\n- }\n- title_span.className = classes;\n- title_span.setAttribute(\'role\', \'treeitem\');\n- title_span.setAttribute(\'aria-level\', level);\n- title_span.setAttribute(\'aria-selected\', util.getBoolString(is_selected));\n- title_span.setAttribute(\'aria-expanded\', util.getBoolString(is_open));\n- if (is_selected) {\n- title_span.setAttribute(\'tabindex\', 0);\n- }\n- title_span.innerHTML = this.escapeIfNecessary(node_name);\n- return title_span;\n- };\n-\n- ElementsRenderer.prototype.getButtonClasses = function(node) {\n- var classes;\n- classes = [\'jqtree-toggler\', \'jqtree_common\'];\n- if (!node.is_open) {\n- classes.push(\'jqtree-closed\');\n- }\n- if (this.tree_widget.options.buttonLeft) {\n- classes.push(\'jqtree-toggler-left\');\n- } else {\n- classes.push(\'jqtree-toggler-right\');\n- }\n- return classes.join(\' \');\n- };\n-\n- ElementsRenderer.prototype.getFolderClasses = function(node, is_selected) {\n- var classes;\n- classes = [\'jqtree-folder\'];\n- if (!node.is_open) {\n- classes.push(\'jqtree-closed\');\n- }\n- if (is_selected) {\n- classes.push(\'jqtree-selected\');\n- }\n- if (node.is_loading) {\n- classes.push(\'jqtree-loading\');\n- }\n- return classes.join(\' \');\n- };\n-\n- ElementsRenderer.prototype.escapeIfNecessary = function(value) {\n- if (this.tree_widget.options.autoEscape) {\n- return html_escape(value);\n- } else {\n- return value;\n- }\n- };\n-\n- ElementsRenderer.prototype.createButtonElement = function(value) {\n- var div;\n- if (typeof value === \'string\') {\n- div = document.createElement(\'div\');\n- div.innerHTML = value;\n- return document.createTextNode(div.innerHTML);\n- } else {\n- return $(value)[0];\n- }\n- };\n-\n- return ElementsRenderer;\n-\n-})();\n-\n-module.exports = ElementsRenderer;\n-\n-},{"./node_element":6,"./util":12}],3:[function(require,module,exports){\n-var $, KeyHandler,\n- bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n-\n-$ = jQuery;\n-\n-KeyHandler = (function() {\n- var DOWN, LEFT, RIGHT, UP;\n-\n- LEFT = 37;\n-\n- UP = 38;\n-\n- RIGHT = 39;\n-\n- DOWN = 40;\n-\n- function KeyHandler(tree_widget) {\n- this.selectNode = bind(this.selectNode, this);\n- this.tree_widget = tree_widget;\n- if (tree_widget.options.keyboardSupport) {\n- $(document).bind(\'keydown.jqtree\', $.proxy(this.handleKeyDown, this));\n- }\n- }\n-\n- KeyHandler.prototype.deinit = function() {\n- return $(document).unbind(\'keydown.jqtree\');\n- };\n-\n- KeyHandler.prototype.moveDown = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (node) {\n- return this.selectNode(node.getNextNode());\n- } else {\n- return false;\n- }\n- };\n-\n- KeyHandler.prototype.moveUp = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (node) {\n- return this.selectNode(node.getPreviousNode());\n- } else {\n- return false;\n- }\n- };\n-\n- KeyHandler.prototype.moveRight = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (!node) {\n- return true;\n- } else if (!node.isFolder()) {\n- return true;\n- } else {\n- if (node.is_open) {\n- return this.selectNode(node.getNextNode());\n- } else {\n- this.tree_widget.openNode(node);\n- return false;\n- }\n- }\n- };\n-\n- KeyHandler.prototype.moveLeft = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (!node) {\n- return true;\n- } else if (node.isFolder() && node.is_open) {\n- this.tree_widget.closeNode(node);\n- return false;\n- } else {\n- return this.selectNode(node.getParent());\n- }\n- };\n-\n- KeyHandler.prototype.handleKeyDown = function(e) {\n- var key;\n- if (!this.tree_widget.options.keyboardSupport) {\n- return true;\n- }\n- if ($(document.activeElement).is(\'textarea,input,select\')) {\n- return true;\n- }\n- if (!this.tree_widget.getSelectedNode()) {\n- return true;\n- }\n- key = e.which;\n- switch (key) {\n- case DOWN:\n- return this.moveDown();\n- case UP:\n- return this.moveUp();\n- case RIGHT:\n- return this.moveRight();\n- case LEFT:\n- return this.moveLeft();\n- }\n- return true;\n- };\n-\n- KeyHandler.prototype.selectNode = function(node) {\n- if (!node) {\n- return true;\n- } else {\n- this.tree_widget.selectNode(node);\n- if (this.tree_widget.scroll_handler && (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find(\'.jqtree-element\')))) {\n- this.tree_widget.scrollToNode(node);\n- }\n- return false;\n- }\n- };\n-\n- return KeyHandler;\n-\n-})();\n-\n-module.exports = KeyHandler;\n-\n-},{}],4:[function(require,module,exports){\n-\n-/*\n-This widget does the same a the mouse widget in jqueryui.\n- */\n-var $, MouseWidget, SimpleWidget,\n- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n- hasProp = {}.hasOwnProperty;\n-\n-SimpleWidget = require(\'./simple.widget\');\n-\n-$ = jQuery;\n-\n-MouseWidget = (function(superClass) {\n- extend(MouseWidget, superClass);\n-\n- function MouseWidget() {\n- return MouseWidget.__super__.constructor.apply(this, arguments);\n- }\n-\n- MouseWidget.is_mouse_handled = false;\n-\n- MouseWidget.prototype._init = function() {\n- this.$el.bind(\'mousedown.mousewidget\', $.proxy(this._mouseDown, this));\n- this.$el.bind(\'touchstart.mousewidget\', $.proxy(this._touchStart, this));\n- this.is_mouse_started = false;\n- this.mouse_delay = 0;\n- this._mouse_delay_timer = null;\n- this._is_mouse_delay_met = true;\n- return this.mouse_down_info = null;\n- };\n-\n- MouseWidget.prototype._deinit = function() {\n- var $document;\n- this.$el.unbind(\'mousedown.mousewidget\');\n- this.$el.unbind(\'touchstart.mousewidget\');\n- $document = $(document);\n- $document.unbind(\'mousemove.mousewidget\');\n- return $document.unbind(\'mouseup.mousewidget\');\n- };\n-\n- MouseWidget.prototype._mouseDown = function(e) {\n- var result;\n- if (e.which !== 1) {\n- return;\n- }\n- result = this._handleMouseDown(e, this._getPositionInfo(e));\n- if (result) {\n- e.preventDefault();\n- }\n- return result;\n- };\n-\n- MouseWidget.prototype._handleMouseDown = function(e, position_info) {\n- if (MouseWidget.is_mouse_handled) {\n- return;\n- }\n- if (this.is_mouse_started) {\n- this._handleMouseUp(position_info);\n- }\n- this.mouse_down_info = position_info;\n- if (!this._mouseCapture(position_info)) {\n- return;\n- }\n- this._handleStartMouse();\n- this.is_mouse_handled = true;\n- return true;\n- };\n-\n- MouseWidget.prototype._handleStartMouse = function() {\n- var $document;\n- $document = $(document);\n- $document.bind(\'mousemove.mousewidget\', $.proxy(this._mouseMove, this));\n- $document.bind(\'touchmove.mousewidget\', $.proxy(this._touchMove, this));\n- $document.bind(\'mouseup.mousewidget\', $.proxy(this._mouseUp, this));\n- $document.bind(\'touchend.mousewidget\', $.proxy(this._touchEnd, this));\n- if (this.mouse_delay) {\n- return this._startMouseDelayTimer();\n- }\n- };\n-\n- MouseWidget.prototype._startMouseDelayTimer = function() {\n- if (this._mouse_delay_timer) {\n- clearTimeout(this._mouse_delay_timer);\n- }\n- this._mouse_delay_timer = setTimeout((function(_this) {\n- return function() {\n- return _this._is_mouse_delay_met = true;\n- };\n- })(this), this.mouse_delay);\n- return this._is_mouse_delay_met = false;\n- };\n-\n- MouseWidget.prototype._mouseMove = function(e) {\n- return this._handleMouseMove(e, this._getPositionInfo(e));\n- };\n-\n- MouseWidget.prototype._handleMouseMove = function(e, position_info) {\n- if (this.is_mouse_started) {\n- this._mouseDrag(position_info);\n- return e.preventDefault();\n- }\n- if (this.mouse_delay && !this._is_mouse_delay_met) {\n- return true;\n- }\n- this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false;\n- if (this.is_mouse_started) {\n- this._mouseDrag(position_info);\n- } else {\n- this._handleMouseUp(position_info);\n- }\n- return !this.is_mouse_started;\n- };\n-\n- MouseWidget.prototype._getPositionInfo = function(e) {\n- return {\n- page_x: e.pageX,\n- page_y: e.pageY,\n- target: e.target,\n- original_event: e\n };\n- };\n-\n- MouseWidget.prototype._mouseUp = function(e) {\n- return this._handleMouseUp(this._getPositionInfo(e));\n- };\n-\n- MouseWidget.prototype._handleMouseUp = function(position_info) {\n- var $document;\n- $document = $(document);\n- $document.unbind(\'mousemove.mousewidget\');\n- $document.unbind(\'touchmove.mousewidget\');\n- $document.unbind(\'mouseup.mousewidget\');\n- $document.unbind(\'touchend.mousewidget\');\n- if (this.is_mouse_started) {\n- this.is_mouse_started = false;\n- this._mouseStop(position_info);\n- }\n- };\n-\n- MouseWidget.prototype._mouseCapture = function(position_info) {\n- return true;\n- };\n-\n- MouseWidget.prototype._mouseStart = function(position_info) {\n- return null;\n- };\n-\n- MouseWidget.prototype._mouseDrag = function(position_info) {\n- return null;\n- };\n-\n- MouseWidget.prototype._mouseStop = function(position_info) {\n- return null;\n- };\n-\n- MouseWidget.prototype.setMouseDelay = function(mouse_delay) {\n- return this.mouse_delay = mouse_delay;\n- };\n-\n- MouseWidget.prototype._touchStart = function(e) {\n- var touch;\n- if (e.originalEvent.touches.length > 1) {\n- return;\n- }\n- touch = e.originalEvent.changedTouches[0];\n- return this._handleMouseDown(e, this._getPositionInfo(touch));\n- };\n-\n- MouseWidget.prototype._touchMove = function(e) {\n- var touch;\n- if (e.originalEvent.touches.length > 1) {\n- return;\n- }\n- touch = e.originalEvent.changedTouches[0];\n- return this._handleMouseMove(e, this._getPositionInfo(touch));\n- };\n-\n- MouseWidget.prototype._touchEnd = function(e) {\n- var touch;\n- if (e.originalEvent.touches.length > 1) {\n- return;\n- }\n- touch = e.originalEvent.changedTouches[0];\n- return this._handleMouseUp(this._getPositionInfo(touch));\n- };\n-\n- return MouseWidget;\n-\n-})(SimpleWidget);\n-\n-module.exports = MouseWidget;\n-\n-},{"./simple.widget":10}],5:[function(require,module,exports){\n-var $, Node, Position;\n-\n-$ = jQuery;\n-\n-Position = {\n- getName: function(position) {\n- return Position.strings[position - 1];\n- },\n- nameToIndex: function(name) {\n- var i, j, ref;\n- for (i = j = 1, ref = Position.strings.length; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n- if (Position.strings[i - 1] === name) {\n- return i;\n- }\n- }\n- return 0;\n- }\n-};\n-\n-Position.BEFORE = 1;\n-\n-Position.AFTER = 2;\n-\n-Position.INSIDE = 3;\n-\n-Position.NONE = 4;\n-\n-Position.strings = [\'before\', \'after\', \'inside\', \'none\'];\n-\n-Node = (function() {\n- function Node(o, is_root, node_class) {\n- if (is_root == null) {\n- is_root = false;\n- }\n- if (node_class == null) {\n- node_class = Node;\n- }\n- this.name = \'\';\n- this.setData(o);\n- this.children = [];\n- this.parent = null;\n- if (is_root) {\n- this.id_mapping = {};\n- this.tree = this;\n- this.node_class = node_class;\n- }\n- }\n-\n- Node.prototype.setData = function(o) {\n-\n+ JqTreeWidget.prototype.toJson = function () {\n+ return JSON.stringify(this.tree.getData());\n+ };\n+ JqTreeWidget.prototype.loadData = function (data, parent_node) {\n+ this._loadData(data, parent_node);\n+ return this.element;\n+ };\n /*\n- Set the data of this node.\n- \n- setData(string): set the name of the node\n- setdata(object): set attributes of the node\n- \n- Examples:\n- setdata(\'node1\')\n- \n- setData({ name: \'node1\', id: 1});\n- \n- setData({ name: \'node2\', id: 2, color: \'green\'});\n- \n- * This is an internal function; it is not in the docs\n- * Does not remove existing node values\n- */\n- var key, setName, value;\n- setName = (function(_this) {\n- return function(name) {\n- if (name !== null) {\n- return _this.name = name;\n+ signatures:\n+ - loadDataFromUrl(url, parent_node=null, on_finished=null)\n+ loadDataFromUrl(\'/my_data\');\n+ loadDataFromUrl(\'/my_data\', node1);\n+ loadDataFromUrl(\'/my_data\', node1, function() { console.log(\'finished\'); });\n+ loadDataFromUrl(\'/my_data\', null, function() { console.log(\'finished\'); });\n+\n+ - loadDataFromUrl(parent_node=null, on_finished=null)\n+ loadDataFromUrl();\n+ loadDataFromUrl(node1);\n+ loadDataFromUrl(null, function() { console.log(\'finished\'); });\n+ loadDataFromUrl(node1, function() { console.log(\'finished\'); });\n+ */\n+ JqTreeWidget.prototype.loadDataFromUrl = function (param1, param2, param3) {\n+ if ($.type(param1) === "string") {\n+ // first parameter is url\n+ this._loadDataFromUrl(param1, param2, param3);\n }\n- };\n- })(this);\n- if (typeof o !== \'object\') {\n- setName(o);\n- } else {\n- for (key in o) {\n- value = o[key];\n- if (key === \'label\') {\n- setName(value);\n- } else if (key !== \'children\') {\n- this[key] = value;\n+ else {\n+ // first parameter is not url\n+ this._loadDataFromUrl(null, param1, param2);\n }\n- }\n- }\n- return null;\n- };\n-\n- Node.prototype.initFromData = function(data) {\n- var addChildren, addNode;\n- addNode = (function(_this) {\n- return function(node_data) {\n- _this.setData(node_data);\n- if (node_data.children) {\n- return addChildren(node_data.children);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.reload = function (on_finished) {\n+ this._loadDataFromUrl(null, null, on_finished);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getNodeById = function (node_id) {\n+ return this.tree.getNodeById(node_id);\n+ };\n+ JqTreeWidget.prototype.getNodeByName = function (name) {\n+ return this.tree.getNodeByName(name);\n+ };\n+ JqTreeWidget.prototype.getNodesByProperty = function (key, value) {\n+ return this.tree.getNodesByProperty(key, value);\n+ };\n+ JqTreeWidget.prototype.getNodeByHtmlElement = function (element) {\n+ return this._getNode($(element));\n+ };\n+ JqTreeWidget.prototype.getNodeByCallback = function (callback) {\n+ return this.tree.getNodeByCallback(callback);\n+ };\n+ JqTreeWidget.prototype.openNode = function (node, param1, param2) {\n+ var _this = this;\n+ var parseParams = function () {\n+ var on_finished;\n+ var slide;\n+ if (util_1.isFunction(param1)) {\n+ on_finished = param1;\n+ slide = null;\n+ }\n+ else {\n+ slide = param1;\n+ on_finished = param2;\n+ }\n+ if (slide == null) {\n+ slide = _this.options.slide;\n+ }\n+ return [slide, on_finished];\n+ };\n+ var _a = parseParams(), slide = _a[0], on_finished = _a[1];\n+ if (node) {\n+ this._openNode(node, slide, on_finished);\n }\n- };\n- })(this);\n- addChildren = (function(_this) {\n- return function(children_data) {\n- var child, j, len, node;\n- for (j = 0, len = children_data.length; j < len; j++) {\n- child = children_data[j];\n- node = new _this.tree.node_class(\'\');\n- node.initFromData(child);\n- _this.addChild(node);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.closeNode = function (node, slide_param) {\n+ var slide = slide_param == null ? this.options.slide : slide_param;\n+ if (node.isFolder()) {\n+ new node_element_1.FolderElement(node, this).close(slide);\n+ this._saveState();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.isDragging = function () {\n+ if (this.dnd_handler) {\n+ return this.dnd_handler.is_dragging;\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype.refreshHitAreas = function () {\n+ if (this.dnd_handler) {\n+ this.dnd_handler.refresh();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.addNodeAfter = function (new_node_info, existing_node) {\n+ var new_node = existing_node.addAfter(new_node_info);\n+ if (new_node) {\n+ this._refreshElements(existing_node.parent);\n+ }\n+ return new_node;\n+ };\n+ JqTreeWidget.prototype.addNodeBefore = function (new_node_info, existing_node) {\n+ var new_node = existing_node.addBefore(new_node_info);\n+ if (new_node) {\n+ this._refreshElements(existing_node.parent);\n+ }\n+ return new_node;\n+ };\n+ JqTreeWidget.prototype.addParentNode = function (new_node_info, existing_node) {\n+ var new_node = existing_node.addParent(new_node_info);\n+ if (new_node) {\n+ this._refreshElements(new_node.parent);\n+ }\n+ return new_node;\n+ };\n+ JqTreeWidget.prototype.removeNode = function (node) {\n+ if (node.parent && this.select_node_handler) {\n+ this.select_node_handler.removeFromSelection(node, true); // including children\n+ node.remove();\n+ this._refreshElements(node.parent);\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.appendNode = function (new_node_info, parent_node_param) {\n+ var parent_node = parent_node_param || this.tree;\n+ var node = parent_node.append(new_node_info);\n+ this._refreshElements(parent_node);\n+ return node;\n+ };\n+ JqTreeWidget.prototype.prependNode = function (new_node_info, parent_node_param) {\n+ var parent_node = !parent_node_param ? this.tree : parent_node_param;\n+ var node = parent_node.prepend(new_node_info);\n+ this._refreshElements(parent_node);\n+ return node;\n+ };\n+ JqTreeWidget.prototype.updateNode = function (node, data) {\n+ var id_is_changed = data.id && data.id !== node.id;\n+ if (id_is_changed) {\n+ this.tree.removeNodeFromIndex(node);\n+ }\n+ node.setData(data);\n+ if (id_is_changed) {\n+ this.tree.addNodeToIndex(node);\n+ }\n+ if (typeof data === "object" && data.children) {\n+ node.removeChildren();\n+ if (data.children.length) {\n+ node.loadFromData(data.children);\n+ }\n+ }\n+ this.renderer.renderFromNode(node);\n+ this._selectCurrentNode();\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.moveNode = function (node, target_node, position) {\n+ var position_index = node_1.getPosition(position);\n+ this.tree.moveNode(node, target_node, position_index);\n+ this._refreshElements(null);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getStateFromStorage = function () {\n+ if (this.save_state_handler) {\n+ return this.save_state_handler.getStateFromStorage();\n+ }\n+ };\n+ JqTreeWidget.prototype.addToSelection = function (node) {\n+ if (node && this.select_node_handler) {\n+ this.select_node_handler.addToSelection(node);\n+ this._getNodeElementForNode(node).select();\n+ this._saveState();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getSelectedNodes = function () {\n+ if (!this.select_node_handler) {\n+ return [];\n+ }\n+ else {\n+ return this.select_node_handler.getSelectedNodes();\n+ }\n+ };\n+ JqTreeWidget.prototype.isNodeSelected = function (node) {\n+ if (!this.select_node_handler) {\n+ return false;\n+ }\n+ else {\n+ return this.select_node_handler.isNodeSelected(node);\n+ }\n+ };\n+ JqTreeWidget.prototype.removeFromSelection = function (node) {\n+ if (this.select_node_handler) {\n+ this.select_node_handler.removeFromSelection(node);\n+ this._getNodeElementForNode(node).deselect();\n+ this._saveState();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.scrollToNode = function (node) {\n+ if (this.scroll_handler) {\n+ var $element = $(node.element);\n+ var top_1 = $element.offset().top - this.$el.offset().top;\n+ this.scroll_handler.scrollTo(top_1);\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getState = function () {\n+ if (this.save_state_handler) {\n+ return this.save_state_handler.getState();\n+ }\n+ };\n+ JqTreeWidget.prototype.setState = function (state) {\n+ if (this.save_state_handler) {\n+ this.save_state_handler.setInitialState(state);\n+ this._refreshElements(null);\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.setOption = function (option, value) {\n+ this.options[option] = value;\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.moveDown = function () {\n+ if (this.key_handler) {\n+ this.key_handler.moveDown();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.moveUp = function () {\n+ if (this.key_handler) {\n+ this.key_handler.moveUp();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getVersion = function () {\n+ return version_1["default"];\n+ };\n+ JqTreeWidget.prototype.testGenerateHitAreas = function (moving_node) {\n+ if (!this.dnd_handler) {\n+ return [];\n+ }\n+ else {\n+ this.dnd_handler.current_item = this._getNodeElementForNode(moving_node);\n+ this.dnd_handler.generateHitAreas();\n+ return this.dnd_handler.hit_areas;\n+ }\n+ };\n+ JqTreeWidget.prototype._triggerEvent = function (event_name, values) {\n+ var event = $.Event(event_name);\n+ $.extend(event, values);\n+ this.element.trigger(event);\n+ return event;\n+ };\n+ JqTreeWidget.prototype._openNode = function (node, slide, on_finished) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ var doOpenNode = function (_node, _slide, _on_finished) {\n+ var folder_element = new node_element_1.FolderElement(_node, _this);\n+ folder_element.open(_on_finished, _slide);\n+ };\n+ if (node.isFolder()) {\n+ if (node.load_on_demand) {\n+ this._loadFolderOnDemand(node, slide, on_finished);\n+ }\n+ else {\n+ var parent_1 = node.parent;\n+ while (parent_1) {\n+ // nb: do not open root element\n+ if (parent_1.parent) {\n+ doOpenNode(parent_1, false, null);\n+ }\n+ parent_1 = parent_1.parent;\n+ }\n+ doOpenNode(node, slide, on_finished);\n+ this._saveState();\n+ }\n+ }\n+ };\n+ /*\n+ Redraw the tree or part of the tree.\n+ from_node: redraw this subtree\n+ */\n+ JqTreeWidget.prototype._refreshElements = function (from_node) {\n+ this.renderer.render(from_node);\n+ this._triggerEvent("tree.refresh");\n+ };\n+ JqTreeWidget.prototype._getNodeElementForNode = function (node) {\n+ if (node.isFolder()) {\n+ return new node_element_1.FolderElement(node, this);\n+ }\n+ else {\n+ return new node_element_1.NodeElement(node, this);\n+ }\n+ };\n+ JqTreeWidget.prototype._getNodeElement = function ($element) {\n+ var node = this._getNode($element);\n+ if (node) {\n+ return this._getNodeElementForNode(node);\n+ }\n+ else {\n+ return null;\n+ }\n+ };\n+ JqTreeWidget.prototype._containsElement = function (element) {\n+ var node = this._getNode($(element));\n+ return node != null && node.tree === this.tree;\n+ };\n+ JqTreeWidget.prototype._init = function () {\n+ _super.prototype._init.call(this);\n+ this.element = this.$el;\n+ this.mouse_delay = 300;\n+ this.is_initialized = false;\n+ this.options.rtl = this._getRtlOption();\n+ if (!this.options.closedIcon) {\n+ this.options.closedIcon = this._getDefaultClosedIcon();\n+ }\n+ this.renderer = new elements_renderer_1["default"](this);\n+ if (save_state_handler_1["default"] != null) {\n+ this.save_state_handler = new save_state_handler_1["default"](this);\n+ }\n+ else {\n+ this.options.saveState = false;\n+ }\n+ if (select_node_handler_1["default"] != null) {\n+ this.select_node_handler = new select_node_handler_1["default"](this);\n+ }\n+ if (drag_and_drop_handler_1.DragAndDropHandler != null) {\n+ this.dnd_handler = new drag_and_drop_handler_1.DragAndDropHandler(this);\n+ }\n+ else {\n+ this.options.dragAndDrop = false;\n+ }\n+ if (scroll_handler_1["default"] != null) {\n+ this.scroll_handler = new scroll_handler_1["default"](this);\n+ }\n+ if (key_handler_1["default"] != null && select_node_handler_1["default"] != null) {\n+ this.key_handler = new key_handler_1["default"](this);\n+ }\n+ this._initData();\n+ this.element.click($.proxy(this._click, this));\n+ this.element.dblclick($.proxy(this._dblclick, this));\n+ if (this.options.useContextMenu) {\n+ this.element.on("contextmenu", $.proxy(this._contextmenu, this));\n+ }\n+ };\n+ JqTreeWidget.prototype._deinit = function () {\n+ this.element.empty();\n+ this.element.off();\n+ if (this.key_handler) {\n+ this.key_handler.deinit();\n+ }\n+ this.tree = new node_1.Node({}, true);\n+ _super.prototype._deinit.call(this);\n+ };\n+ JqTreeWidget.prototype._mouseCapture = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ return this.dnd_handler.mouseCapture(position_info);\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._mouseStart = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ return this.dnd_handler.mouseStart(position_info);\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._mouseDrag = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ var result = this.dnd_handler.mouseDrag(position_info);\n+ if (this.scroll_handler) {\n+ this.scroll_handler.checkScrolling();\n+ }\n+ return result;\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._mouseStop = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ return this.dnd_handler.mouseStop(position_info);\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._initData = function () {\n+ if (this.options.data) {\n+ this._loadData(this.options.data, null);\n+ }\n+ else {\n+ var data_url = this._getDataUrlInfo(null);\n+ if (data_url) {\n+ this._loadDataFromUrl(null, null, null);\n+ }\n+ else {\n+ this._loadData([], null);\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._getDataUrlInfo = function (node) {\n+ var _this = this;\n+ var data_url = this.options.dataUrl || this.element.data("url");\n+ var getUrlFromString = function () {\n+ var url_info = { url: data_url };\n+ if (node && node.id) {\n+ // Load on demand of a subtree; add node parameter\n+ var data = { node: node.id };\n+ // tslint:disable-next-line: no-string-literal\n+ url_info["data"] = data;\n+ }\n+ else {\n+ // Add selected_node parameter\n+ var selected_node_id = _this._getNodeIdToBeSelected();\n+ if (selected_node_id) {\n+ var data = { selected_node: selected_node_id };\n+ // tslint:disable-next-line: no-string-literal\n+ url_info["data"] = data;\n+ }\n+ }\n+ return url_info;\n+ };\n+ if ($.isFunction(data_url)) {\n+ return data_url(node);\n+ }\n+ else if ($.type(data_url) === "string") {\n+ return getUrlFromString();\n+ }\n+ else {\n+ return data_url;\n+ }\n+ };\n+ JqTreeWidget.prototype._getNodeIdToBeSelected = function () {\n+ if (this.options.saveState && this.save_state_handler) {\n+ return this.save_state_handler.getNodeIdToBeSelected();\n+ }\n+ else {\n+ return null;\n+ }\n+ };\n+ JqTreeWidget.prototype._initTree = function (data) {\n+ var _this = this;\n+ var doInit = function () {\n+ if (!_this.is_initialized) {\n+ _this.is_initialized = true;\n+ _this._triggerEvent("tree.init");\n+ }\n+ };\n+ this.tree = new this.options.nodeClass(null, true, this.options.nodeClass);\n+ if (this.select_node_handler) {\n+ this.select_node_handler.clear();\n+ }\n+ this.tree.loadFromData(data);\n+ var must_load_on_demand = this._setInitialState();\n+ this._refreshElements(null);\n+ if (!must_load_on_demand) {\n+ doInit();\n+ }\n+ else {\n+ // Load data on demand and then init the tree\n+ this._setInitialStateOnDemand(doInit);\n+ }\n+ };\n+ // Set initial state, either by restoring the state or auto-opening nodes\n+ // result: must load nodes on demand?\n+ JqTreeWidget.prototype._setInitialState = function () {\n+ var _this = this;\n+ var restoreState = function () {\n+ // result: is state restored, must load on demand?\n+ if (!(_this.options.saveState && _this.save_state_handler)) {\n+ return [false, false];\n+ }\n+ else {\n+ var state = _this.save_state_handler.getStateFromStorage();\n+ if (!state) {\n+ return [false, false];\n+ }\n+ else {\n+ var must_load_on_demand_1 = _this.save_state_handler.setInitialState(state);\n+ // return true: the state is restored\n+ return [true, must_load_on_demand_1];\n+ }\n+ }\n+ };\n+ var autoOpenNodes = function () {\n+ // result: must load on demand?\n+ if (_this.options.autoOpen === false) {\n+ return false;\n+ }\n+ var max_level = _this._getAutoOpenMaxLevel();\n+ var must_load_on_demand = false;\n+ _this.tree.iterate(function (node, level) {\n+ if (node.load_on_demand) {\n+ must_load_on_demand = true;\n+ return false;\n+ }\n+ else if (!node.hasChildren()) {\n+ return false;\n+ }\n+ else {\n+ node.is_open = true;\n+ return (level !== max_level);\n+ }\n+ });\n+ return must_load_on_demand;\n+ };\n+ // tslint:disable-next-line: prefer-const\n+ var _a = restoreState(), is_restored = _a[0], must_load_on_demand = _a[1];\n+ if (!is_restored) {\n+ must_load_on_demand = autoOpenNodes();\n+ }\n+ return must_load_on_demand;\n+ };\n+ // Set the initial state for nodes that are loaded on demand\n+ // Call cb_finished when done\n+ JqTreeWidget.prototype._setInitialStateOnDemand = function (cb_finished) {\n+ var _this = this;\n+ var restoreState = function () {\n+ if (!(_this.options.saveState && _this.save_state_handler)) {\n+ return false;\n+ }\n+ else {\n+ var state = _this.save_state_handler.getStateFromStorage();\n+ if (!state) {\n+ return false;\n+ }\n+ else {\n+ _this.save_state_handler.setInitialStateOnDemand(state, cb_finished);\n+ return true;\n+ }\n+ }\n+ };\n+ var autoOpenNodes = function () {\n+ var max_level = _this._getAutoOpenMaxLevel();\n+ var loading_count = 0;\n+ var loadAndOpenNode = function (node) {\n+ loading_count += 1;\n+ _this._openNode(node, false, function () {\n+ loading_count -= 1;\n+ openNodes();\n+ });\n+ };\n+ var openNodes = function () {\n+ _this.tree.iterate(function (node, level) {\n+ if (node.load_on_demand) {\n+ if (!node.is_loading) {\n+ loadAndOpenNode(node);\n+ }\n+ return false;\n+ }\n+ else {\n+ _this._openNode(node, false, null);\n+ return (level !== max_level);\n+ }\n+ });\n+ if (loading_count === 0) {\n+ cb_finished();\n+ }\n+ };\n+ openNodes();\n+ };\n+ if (!restoreState()) {\n+ autoOpenNodes();\n+ }\n+ };\n+ JqTreeWidget.prototype._getAutoOpenMaxLevel = function () {\n+ if (this.options.autoOpen === true) {\n+ return -1;\n+ }\n+ else {\n+ return parseInt(this.options.autoOpen, 10);\n+ }\n+ };\n+ JqTreeWidget.prototype._click = function (e) {\n+ var click_target = this._getClickTarget(e.target);\n+ if (click_target) {\n+ if (click_target.type === "button") {\n+ this.toggle(click_target.node, this.options.slide);\n+ e.preventDefault();\n+ e.stopPropagation();\n+ }\n+ else if (click_target.type === "label") {\n+ var node = click_target.node;\n+ var event_1 = this._triggerEvent("tree.click", {\n+ node: node,\n+ click_event: e\n+ });\n+ if (!event_1.isDefaultPrevented()) {\n+ this._selectNode(node, true);\n+ }\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._dblclick = function (e) {\n+ var click_target = this._getClickTarget(e.target);\n+ if (click_target && click_target.type === "label") {\n+ this._triggerEvent("tree.dblclick", {\n+ node: click_target.node,\n+ click_event: e\n+ });\n+ }\n+ };\n+ JqTreeWidget.prototype._getClickTarget = function (element) {\n+ var $target = $(element);\n+ var $button = $target.closest(".jqtree-toggler");\n+ if ($button.length) {\n+ var node = this._getNode($button);\n+ if (node) {\n+ return {\n+ type: "button",\n+ node: node\n+ };\n+ }\n+ }\n+ else {\n+ var $el = $target.closest(".jqtree-element");\n+ if ($el.length) {\n+ var node = this._getNode($el);\n+ if (node) {\n+ return {\n+ type: "label",\n+ node: node\n+ };\n+ }\n+ }\n }\n return null;\n- };\n- })(this);\n- addNode(data);\n- return null;\n- };\n-\n-\n- /*\n- Create tree from data.\n- \n- Structure of data is:\n- [\n- {\n- label: \'node1\',\n- children: [\n- { label: \'child1\' },\n- { label: \'child2\' }\n- ]\n- },\n- {\n- label: \'node2\'\n- }\n- ]\n- */\n-\n- Node.prototype.loadFromData = function(data) {\n- var j, len, node, o;\n- this.removeChildren();\n- for (j = 0, len = data.length; j < len; j++) {\n- o = data[j];\n- node = new this.tree.node_class(o);\n- this.addChild(node);\n- if (typeof o === \'object\' && o.children) {\n- node.loadFromData(o.children);\n- }\n- }\n- return null;\n- };\n-\n-\n- /*\n- Add child.\n- \n- tree.addChild(\n- new Node(\'child1\')\n- );\n- */\n-\n- Node.prototype.addChild = function(node) {\n- this.children.push(node);\n- return node._setParent(this);\n- };\n-\n-\n- /*\n- Add child at position. Index starts at 0.\n- \n- tree.addChildAtPosition(\n- new Node(\'abc\'),\n- 1\n- );\n- */\n-\n- Node.prototype.addChildAtPosition = function(node, index) {\n- this.children.splice(index, 0, node);\n- return node._setParent(this);\n- };\n-\n- Node.prototype._setParent = function(parent) {\n- this.parent = parent;\n- this.tree = parent.tree;\n- return this.tree.addNodeToIndex(this);\n- };\n-\n-\n- /*\n- Remove child. This also removes the children of the node.\n- \n- tree.removeChild(tree.children[0]);\n- */\n-\n- Node.prototype.removeChild = function(node) {\n- node.removeChildren();\n- return this._removeChild(node);\n- };\n-\n- Node.prototype._removeChild = function(node) {\n- this.children.splice(this.getChildIndex(node), 1);\n- return this.tree.removeNodeFromIndex(node);\n- };\n-\n-\n- /*\n- Get child index.\n- \n- var index = getChildIndex(node);\n- */\n-\n- Node.prototype.getChildIndex = function(node) {\n- return $.inArray(node, this.children);\n- };\n-\n-\n- /*\n- Does the tree have children?\n- \n- if (tree.hasChildren()) {\n- //\n- }\n- */\n+ };\n+ JqTreeWidget.prototype._getNode = function ($element) {\n+ var $li = $element.closest("li.jqtree_common");\n+ if ($li.length === 0) {\n+ return null;\n+ }\n+ else {\n+ return $li.data("node");\n+ }\n+ };\n+ JqTreeWidget.prototype._contextmenu = function (e) {\n+ var $div = $(e.target).closest("ul.jqtree-tree .jqtree-element");\n+ if ($div.length) {\n+ var node = this._getNode($div);\n+ if (node) {\n+ e.preventDefault();\n+ e.stopPropagation();\n+ this._triggerEvent("tree.contextmenu", {\n+ node: node,\n+ click_event: e\n+ });\n+ return false;\n+ }\n+ }\n+ return null;\n+ };\n+ JqTreeWidget.prototype._saveState = function () {\n+ if (this.options.saveState && this.save_state_handler) {\n+ this.save_state_handler.saveState();\n+ }\n+ };\n+ JqTreeWidget.prototype._selectCurrentNode = function () {\n+ var node = this.getSelectedNode();\n+ if (node) {\n+ var node_element = this._getNodeElementForNode(node);\n+ if (node_element) {\n+ node_element.select();\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._deselectCurrentNode = function () {\n+ var node = this.getSelectedNode();\n+ if (node) {\n+ this.removeFromSelection(node);\n+ }\n+ };\n+ JqTreeWidget.prototype._getDefaultClosedIcon = function () {\n+ if (this.options.rtl) {\n+ // triangle to the left\n+ return "◀";\n+ }\n+ else {\n+ // triangle to the right\n+ return "►";\n+ }\n+ };\n+ JqTreeWidget.prototype._getRtlOption = function () {\n+ if (this.options.rtl != null) {\n+ return this.options.rtl;\n+ }\n+ else {\n+ var data_rtl = this.element.data("rtl");\n+ if (data_rtl != null && data_rtl !== false) {\n+ return true;\n+ }\n+ else {\n+ return false;\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._notifyLoading = function (is_loading, node, $el) {\n+ if (this.options.onLoading) {\n+ this.options.onLoading(is_loading, node, $el);\n+ }\n+ };\n+ JqTreeWidget.prototype._selectNode = function (node, must_toggle) {\n+ var _this = this;\n+ if (must_toggle === void 0) { must_toggle = false; }\n+ if (!this.select_node_handler) {\n+ return;\n+ }\n+ var canSelect = function () {\n+ if (_this.options.onCanSelectNode) {\n+ return _this.options.selectable && _this.options.onCanSelectNode(node);\n+ }\n+ else {\n+ return _this.options.selectable;\n+ }\n+ };\n+ var openParents = function () {\n+ var parent = node.parent;\n+ if (parent && parent.parent && !parent.is_open) {\n+ _this.openNode(parent, false);\n+ }\n+ };\n+ var saveState = function () {\n+ if (_this.options.saveState && _this.save_state_handler) {\n+ _this.save_state_handler.saveState();\n+ }\n+ };\n+ if (!node) {\n+ // Called with empty node -> deselect current node\n+ this._deselectCurrentNode();\n+ saveState();\n+ return;\n+ }\n+ if (!canSelect()) {\n+ return;\n+ }\n+ if (this.select_node_handler.isNodeSelected(node)) {\n+ if (must_toggle) {\n+ this._deselectCurrentNode();\n+ this._triggerEvent("tree.select", {\n+ node: null,\n+ previous_node: node\n+ });\n+ }\n+ }\n+ else {\n+ var deselected_node = this.getSelectedNode();\n+ this._deselectCurrentNode();\n+ this.addToSelection(node);\n+ this._triggerEvent("tree.select", {\n+ node: node,\n+ deselected_node: deselected_node\n+ });\n+ openParents();\n+ }\n+ saveState();\n+ };\n+ JqTreeWidget.prototype._loadData = function (data, parent_node) {\n+ if (!data) {\n+ return;\n+ }\n+ else {\n+ this._triggerEvent("tree.load_data", { tree_data: data });\n+ if (parent_node) {\n+ this._deselectNodes(parent_node);\n+ this._loadSubtree(data, parent_node);\n+ }\n+ else {\n+ this._initTree(data);\n+ }\n+ if (this.isDragging() && this.dnd_handler) {\n+ this.dnd_handler.refresh();\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._deselectNodes = function (parent_node) {\n+ if (this.select_node_handler) {\n+ var selected_nodes_under_parent = this.select_node_handler.getSelectedNodesUnder(parent_node);\n+ for (var _i = 0, selected_nodes_under_parent_1 = selected_nodes_under_parent; _i < selected_nodes_under_parent_1.length; _i++) {\n+ var n = selected_nodes_under_parent_1[_i];\n+ this.select_node_handler.removeFromSelection(n);\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._loadSubtree = function (data, parent_node) {\n+ parent_node.loadFromData(data);\n+ parent_node.load_on_demand = false;\n+ parent_node.is_loading = false;\n+ this._refreshElements(parent_node);\n+ };\n+ JqTreeWidget.prototype._loadDataFromUrl = function (url_info_param, parent_node, on_finished) {\n+ var _this = this;\n+ var $el = null;\n+ var url_info = url_info_param;\n+ var addLoadingClass = function () {\n+ $el = parent_node ? $(parent_node.element) : _this.element;\n+ $el.addClass("jqtree-loading");\n+ _this._notifyLoading(true, parent_node, $el);\n+ };\n+ var removeLoadingClass = function () {\n+ if ($el) {\n+ $el.removeClass("jqtree-loading");\n+ _this._notifyLoading(false, parent_node, $el);\n+ }\n+ };\n+ var parseUrlInfo = function () {\n+ if ($.type(url_info) === "string") {\n+ return { url: url_info };\n+ }\n+ if (!url_info.method) {\n+ url_info.method = "get";\n+ }\n+ return url_info;\n+ };\n+ var handeLoadData = function (data) {\n+ removeLoadingClass();\n+ _this._loadData(data, parent_node);\n+ if (on_finished && $.isFunction(on_finished)) {\n+ on_finished();\n+ }\n+ };\n+ var getDataFromResponse = function (response) { return ($.isArray(response) || typeof response === "object"\n+ ? response\n+ : response != null ? $.parseJSON(response) : []); };\n+ var filterData = function (data) { return (_this.options.dataFilter ? _this.options.dataFilter(data) : data); };\n+ var handleSuccess = function (response) {\n+ var data = filterData(getDataFromResponse(response));\n+ handeLoadData(data);\n+ };\n+ var handleError = function (response) {\n+ removeLoadingClass();\n+ if (_this.options.onLoadFailed) {\n+ _this.options.onLoadFailed(response);\n+ }\n+ };\n+ var loadDataFromUrlInfo = function () {\n+ var _url_info = parseUrlInfo();\n+ $.ajax($.extend({}, _url_info, {\n+ method: url_info.method != null ? url_info.method.toUpperCase() : "GET",\n+ cache: false,\n+ dataType: "json",\n+ success: handleSuccess,\n+ error: handleError\n+ }));\n+ };\n+ if (!url_info_param) {\n+ // Generate url for node\n+ url_info = this._getDataUrlInfo(parent_node);\n+ }\n+ addLoadingClass();\n+ if (!url_info) {\n+ removeLoadingClass();\n+ return;\n+ }\n+ else if ($.isArray(url_info)) {\n+ handeLoadData(url_info);\n+ return;\n+ }\n+ else {\n+ loadDataFromUrlInfo();\n+ return;\n+ }\n+ };\n+ JqTreeWidget.prototype._loadFolderOnDemand = function (node, slide, on_finished) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ node.is_loading = true;\n+ this._loadDataFromUrl(null, node, function () {\n+ _this._openNode(node, slide, on_finished);\n+ });\n+ };\n+ return JqTreeWidget;\n+}(mouse_widget_1["default"]));\n+JqTreeWidget.defaults = {\n+ autoOpen: false,\n+ saveState: false,\n+ dragAndDrop: false,\n+ selectable: true,\n+ useContextMenu: true,\n+ onCanSelectNode: null,\n+ onSetStateFromStorage: null,\n+ onGetStateFromStorage: null,\n+ onCreateLi: null,\n+ onIsMoveHandle: null,\n+ // Can this node be moved?\n+ onCanMove: null,\n+ // Can this node be moved to this position? function(moved_node, target_node, position)\n+ onCanMoveTo: null,\n+ onLoadFailed: null,\n+ autoEscape: true,\n+ dataUrl: null,\n+ // The symbol to use for a closed node - \xe2\x96\xba BLACK RIGHT-POINTING POINTER\n+ // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n+ closedIcon: null,\n+ // The symbol to use for an open node - \xe2\x96\xbc BLACK DOWN-POINTING TRIANGLE\n+ // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n+ openedIcon: "▼",\n+ slide: true,\n+ nodeClass: node_1.Node,\n+ dataFilter: null,\n+ keyboardSupport: true,\n+ openFolderDelay: 500,\n+ rtl: false,\n+ onDragMove: null,\n+ onDragStop: null,\n+ buttonLeft: true,\n+ onLoading: null\n+};\n+simple_widget_1["default"].register(JqTreeWidget, "tree");\n \n- Node.prototype.hasChildren = function() {\n- return this.children.length !== 0;\n- };\n \n- Node.prototype.isFolder = function() {\n- return this.hasChildren() || this.load_on_demand;\n- };\n+/***/ }),\n+/* 4 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n \n- /*\n- Iterate over all the nodes in the tree.\n- \n- Calls callback with (node, level).\n- \n- The callback must return true to continue the iteration on current node.\n- \n- tree.iterate(\n- function(node, level) {\n- console.log(node.name);\n- \n- // stop iteration after level 2\n- return (level <= 2);\n- }\n- );\n- */\n \n- Node.prototype.iterate = function(callback) {\n- var _iterate;\n- _iterate = function(node, level) {\n- var child, j, len, ref, result;\n- if (node.children) {\n- ref = node.children;\n- for (j = 0, len = ref.length; j < len; j++) {\n- child = ref[j];\n- result = callback(child, level);\n- if (result && child.hasChildren()) {\n- _iterate(child, level + 1);\n- }\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+exports.__esModule = true;\n+var node_1 = __webpack_require__(0);\n+var util_1 = __webpack_require__(1);\n+var DragAndDropHandler = (function () {\n+ function DragAndDropHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.hovered_area = null;\n+ this.$ghost = null;\n+ this.hit_areas = [];\n+ this.is_dragging = false;\n+ this.current_item = null;\n+ }\n+ DragAndDropHandler.prototype.mouseCapture = function (position_info) {\n+ var $element = $(position_info.target);\n+ if (!this.mustCaptureElement($element)) {\n+ return null;\n }\n- return null;\n- }\n+ if (this.tree_widget.options.onIsMoveHandle && !this.tree_widget.options.onIsMoveHandle($element)) {\n+ return null;\n+ }\n+ var node_element = this.tree_widget._getNodeElement($element);\n+ if (node_element && this.tree_widget.options.onCanMove) {\n+ if (!this.tree_widget.options.onCanMove(node_element.node)) {\n+ node_element = null;\n+ }\n+ }\n+ this.current_item = node_element;\n+ return (this.current_item != null);\n };\n- _iterate(this, 0);\n- return null;\n- };\n-\n-\n- /*\n- Move node relative to another node.\n- \n- Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n- \n- // move node1 after node2\n- tree.moveNode(node1, node2, Position.AFTER);\n- */\n-\n- Node.prototype.moveNode = function(moved_node, target_node, position) {\n- if (moved_node.isParentOf(target_node)) {\n- return;\n- }\n- moved_node.parent._removeChild(moved_node);\n- if (position === Position.AFTER) {\n- return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);\n- } else if (position === Position.BEFORE) {\n- return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));\n- } else if (position === Position.INSIDE) {\n- return target_node.addChildAtPosition(moved_node, 0);\n- }\n- };\n-\n-\n- /*\n- Get the tree as data.\n- */\n-\n- Node.prototype.getData = function(include_parent) {\n- var getDataFromNodes;\n- if (include_parent == null) {\n- include_parent = false;\n- }\n- getDataFromNodes = function(nodes) {\n- var data, j, k, len, node, tmp_node, v;\n- data = [];\n- for (j = 0, len = nodes.length; j < len; j++) {\n- node = nodes[j];\n- tmp_node = {};\n- for (k in node) {\n- v = node[k];\n- if ((k !== \'parent\' && k !== \'children\' && k !== \'element\' && k !== \'tree\') && Object.prototype.hasOwnProperty.call(node, k)) {\n- tmp_node[k] = v;\n- }\n+ DragAndDropHandler.prototype.generateHitAreas = function () {\n+ if (!this.current_item) {\n+ this.hit_areas = [];\n }\n- if (node.hasChildren()) {\n- tmp_node.children = getDataFromNodes(node.children);\n+ else {\n+ var hit_areas_generator = new HitAreasGenerator(this.tree_widget.tree, this.current_item.node, this.getTreeDimensions().bottom);\n+ this.hit_areas = hit_areas_generator.generate();\n }\n- data.push(tmp_node);\n- }\n- return data;\n };\n- if (include_parent) {\n- return getDataFromNodes([this]);\n- } else {\n- return getDataFromNodes(this.children);\n- }\n- };\n-\n- Node.prototype.getNodeByName = function(name) {\n- var result;\n- result = null;\n- this.iterate(function(node) {\n- if (node.name === name) {\n- result = node;\n+ DragAndDropHandler.prototype.mouseStart = function (position_info) {\n+ if (!this.current_item) {\n+ return false;\n+ }\n+ else {\n+ this.refresh();\n+ var offset = $(position_info.target).offset();\n+ var node = this.current_item.node;\n+ var node_name = this.tree_widget.options.autoEscape ? util_1.html_escape(node.name) : node.name;\n+ this.drag_element = new DragElement(node_name, position_info.page_x - offset.left, position_info.page_y - offset.top, this.tree_widget.element);\n+ this.is_dragging = true;\n+ this.current_item.$element.addClass("jqtree-moving");\n+ return true;\n+ }\n+ };\n+ DragAndDropHandler.prototype.mouseDrag = function (position_info) {\n+ if (!this.current_item || !this.drag_element) {\n+ return false;\n+ }\n+ else {\n+ this.drag_element.move(position_info.page_x, position_info.page_y);\n+ var area = this.findHoveredArea(position_info.page_x, position_info.page_y);\n+ var can_move_to = this.canMoveToArea(area);\n+ if (can_move_to && area) {\n+ if (!area.node.isFolder()) {\n+ this.stopOpenFolderTimer();\n+ }\n+ if (this.hovered_area !== area) {\n+ this.hovered_area = area;\n+ // If this is a closed folder, start timer to open it\n+ if (this.mustOpenFolderTimer(area)) {\n+ this.startOpenFolderTimer(area.node);\n+ }\n+ else {\n+ this.stopOpenFolderTimer();\n+ }\n+ this.updateDropHint();\n+ }\n+ }\n+ else {\n+ this.removeHover();\n+ this.removeDropHint();\n+ this.stopOpenFolderTimer();\n+ }\n+ if (!area) {\n+ if (this.tree_widget.options.onDragMove) {\n+ this.tree_widget.options.onDragMove(this.current_item.node, position_info.original_event);\n+ }\n+ }\n+ return true;\n+ }\n+ };\n+ DragAndDropHandler.prototype.mouseStop = function (position_info) {\n+ this.moveItem(position_info);\n+ this.clear();\n+ this.removeHover();\n+ this.removeDropHint();\n+ this.removeHitAreas();\n+ var current_item = this.current_item;\n+ if (this.current_item) {\n+ this.current_item.$element.removeClass("jqtree-moving");\n+ this.current_item = null;\n+ }\n+ this.is_dragging = false;\n+ if (!this.hovered_area && current_item) {\n+ if (this.tree_widget.options.onDragStop) {\n+ this.tree_widget.options.onDragStop(current_item.node, position_info.original_event);\n+ }\n+ }\n return false;\n- } else {\n- return true;\n- }\n- });\n- return result;\n- };\n-\n- Node.prototype.addAfter = function(node_info) {\n- var child_index, node;\n- if (!this.parent) {\n- return null;\n- } else {\n- node = new this.tree.node_class(node_info);\n- child_index = this.parent.getChildIndex(this);\n- this.parent.addChildAtPosition(node, child_index + 1);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- }\n- };\n-\n- Node.prototype.addBefore = function(node_info) {\n- var child_index, node;\n- if (!this.parent) {\n- return null;\n- } else {\n- node = new this.tree.node_class(node_info);\n- child_index = this.parent.getChildIndex(this);\n- this.parent.addChildAtPosition(node, child_index);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- }\n- };\n-\n- Node.prototype.addParent = function(node_info) {\n- var child, j, len, new_parent, original_parent, ref;\n- if (!this.parent) {\n- return null;\n- } else {\n- new_parent = new this.tree.node_class(node_info);\n- new_parent._setParent(this.tree);\n- original_parent = this.parent;\n- ref = original_parent.children;\n- for (j = 0, len = ref.length; j < len; j++) {\n- child = ref[j];\n- new_parent.addChild(child);\n- }\n- original_parent.children = [];\n- original_parent.addChild(new_parent);\n- return new_parent;\n- }\n- };\n-\n- Node.prototype.remove = function() {\n- if (this.parent) {\n- this.parent.removeChild(this);\n- return this.parent = null;\n- }\n- };\n-\n- Node.prototype.append = function(node_info) {\n- var node;\n- node = new this.tree.node_class(node_info);\n- this.addChild(node);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- };\n-\n- Node.prototype.prepend = function(node_info) {\n- var node;\n- node = new this.tree.node_class(node_info);\n- this.addChildAtPosition(node, 0);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- };\n-\n- Node.prototype.isParentOf = function(node) {\n- var parent;\n- parent = node.parent;\n- while (parent) {\n- if (parent === this) {\n- return true;\n- }\n- parent = parent.parent;\n- }\n- return false;\n- };\n-\n- Node.prototype.getLevel = function() {\n- var level, node;\n- level = 0;\n- node = this;\n- while (node.parent) {\n- level += 1;\n- node = node.parent;\n- }\n- return level;\n- };\n-\n- Node.prototype.getNodeById = function(node_id) {\n- return this.id_mapping[node_id];\n- };\n-\n- Node.prototype.addNodeToIndex = function(node) {\n- if (node.id != null) {\n- return this.id_mapping[node.id] = node;\n- }\n- };\n-\n- Node.prototype.removeNodeFromIndex = function(node) {\n- if (node.id != null) {\n- return delete this.id_mapping[node.id];\n- }\n- };\n-\n- Node.prototype.removeChildren = function() {\n- this.iterate((function(_this) {\n- return function(child) {\n- _this.tree.removeNodeFromIndex(child);\n- return true;\n- };\n- })(this));\n- return this.children = [];\n- };\n-\n- Node.prototype.getPreviousSibling = function() {\n- var previous_index;\n- if (!this.parent) {\n- return null;\n- } else {\n- previous_index = this.parent.getChildIndex(this) - 1;\n- if (previous_index >= 0) {\n- return this.parent.children[previous_index];\n- } else {\n- return null;\n- }\n- }\n- };\n-\n- Node.prototype.getNextSibling = function() {\n- var next_index;\n- if (!this.parent) {\n- return null;\n- } else {\n- next_index = this.parent.getChildIndex(this) + 1;\n- if (next_index < this.parent.children.length) {\n- return this.parent.children[next_index];\n- } else {\n- return null;\n- }\n- }\n- };\n-\n- Node.prototype.getNodesByProperty = function(key, value) {\n- return this.filter(function(node) {\n- return node[key] === value;\n- });\n- };\n-\n- Node.prototype.filter = function(f) {\n- var result;\n- result = [];\n- this.iterate(function(node) {\n- if (f(node)) {\n- result.push(node);\n- }\n- return true;\n- });\n- return result;\n- };\n-\n- Node.prototype.getNextNode = function(include_children) {\n- var next_sibling;\n- if (include_children == null) {\n- include_children = true;\n- }\n- if (include_children && this.hasChildren() && this.is_open) {\n- return this.children[0];\n- } else {\n- if (!this.parent) {\n+ };\n+ DragAndDropHandler.prototype.refresh = function () {\n+ this.removeHitAreas();\n+ if (this.current_item) {\n+ this.generateHitAreas();\n+ this.current_item = this.tree_widget._getNodeElementForNode(this.current_item.node);\n+ if (this.is_dragging) {\n+ this.current_item.$element.addClass("jqtree-moving");\n+ }\n+ }\n+ };\n+ DragAndDropHandler.prototype.mustCaptureElement = function ($element) {\n+ return !$element.is("input,select,textarea");\n+ };\n+ DragAndDropHandler.prototype.canMoveToArea = function (area) {\n+ if (!area || !this.current_item) {\n+ return false;\n+ }\n+ else if (this.tree_widget.options.onCanMoveTo) {\n+ var position_name = node_1.getPositionName(area.position);\n+ return this.tree_widget.options.onCanMoveTo(this.current_item.node, area.node, position_name);\n+ }\n+ else {\n+ return true;\n+ }\n+ };\n+ DragAndDropHandler.prototype.removeHitAreas = function () {\n+ this.hit_areas = [];\n+ };\n+ DragAndDropHandler.prototype.clear = function () {\n+ if (this.drag_element) {\n+ this.drag_element.remove();\n+ this.drag_element = null;\n+ }\n+ };\n+ DragAndDropHandler.prototype.removeDropHint = function () {\n+ if (this.previous_ghost) {\n+ this.previous_ghost.remove();\n+ }\n+ };\n+ DragAndDropHandler.prototype.removeHover = function () {\n+ this.hovered_area = null;\n+ };\n+ DragAndDropHandler.prototype.findHoveredArea = function (x, y) {\n+ var dimensions = this.getTreeDimensions();\n+ if (x < dimensions.left ||\n+ y < dimensions.top ||\n+ x > dimensions.right ||\n+ y > dimensions.bottom) {\n+ return null;\n+ }\n+ var low = 0;\n+ var high = this.hit_areas.length;\n+ while (low < high) {\n+ // tslint:disable-next-line: no-bitwise\n+ var mid = (low + high) >> 1;\n+ var area = this.hit_areas[mid];\n+ if (y < area.top) {\n+ high = mid;\n+ }\n+ else if (y > area.bottom) {\n+ low = mid + 1;\n+ }\n+ else {\n+ return area;\n+ }\n+ }\n return null;\n- } else {\n- next_sibling = this.getNextSibling();\n- if (next_sibling) {\n- return next_sibling;\n- } else {\n- return this.parent.getNextNode(false);\n+ };\n+ DragAndDropHandler.prototype.mustOpenFolderTimer = function (area) {\n+ var node = area.node;\n+ return (node.isFolder() &&\n+ !node.is_open &&\n+ area.position === node_1.Position.Inside);\n+ };\n+ DragAndDropHandler.prototype.updateDropHint = function () {\n+ if (!this.hovered_area) {\n+ return;\n }\n- }\n- }\n- };\n-\n- Node.prototype.getPreviousNode = function() {\n- var previous_sibling;\n- if (!this.parent) {\n- return null;\n- } else {\n- previous_sibling = this.getPreviousSibling();\n- if (previous_sibling) {\n- if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {\n- return previous_sibling;\n- } else {\n- return previous_sibling.getLastChild();\n+ // remove previous drop hint\n+ this.removeDropHint();\n+ // add new drop hint\n+ var node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node);\n+ this.previous_ghost = node_element.addDropHint(this.hovered_area.position);\n+ };\n+ DragAndDropHandler.prototype.startOpenFolderTimer = function (folder) {\n+ var _this = this;\n+ var openFolder = function () {\n+ _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function () {\n+ _this.refresh();\n+ _this.updateDropHint();\n+ });\n+ };\n+ this.stopOpenFolderTimer();\n+ this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay);\n+ };\n+ DragAndDropHandler.prototype.stopOpenFolderTimer = function () {\n+ if (this.open_folder_timer) {\n+ clearTimeout(this.open_folder_timer);\n+ this.open_folder_timer = null;\n+ }\n+ };\n+ DragAndDropHandler.prototype.moveItem = function (position_info) {\n+ var _this = this;\n+ if (this.current_item &&\n+ this.hovered_area &&\n+ this.hovered_area.position !== node_1.Position.None &&\n+ this.canMoveToArea(this.hovered_area)) {\n+ var moved_node_1 = this.current_item.node;\n+ var target_node_1 = this.hovered_area.node;\n+ var position_1 = this.hovered_area.position;\n+ var previous_parent = moved_node_1.parent;\n+ if (position_1 === node_1.Position.Inside) {\n+ this.hovered_area.node.is_open = true;\n+ }\n+ var doMove = function () {\n+ _this.tree_widget.tree.moveNode(moved_node_1, target_node_1, position_1);\n+ _this.tree_widget.element.empty();\n+ _this.tree_widget._refreshElements(null);\n+ };\n+ var event_1 = this.tree_widget._triggerEvent("tree.move", {\n+ move_info: {\n+ moved_node: moved_node_1,\n+ target_node: target_node_1,\n+ position: node_1.getPositionName(position_1),\n+ previous_parent: previous_parent,\n+ do_move: doMove,\n+ original_event: position_info.original_event\n+ }\n+ });\n+ if (!event_1.isDefaultPrevented()) {\n+ doMove();\n+ }\n }\n- } else {\n- return this.getParent();\n- }\n- }\n- };\n-\n- Node.prototype.getParent = function() {\n- if (!this.parent) {\n- return null;\n- } else if (!this.parent.parent) {\n- return null;\n- } else {\n- return this.parent;\n- }\n- };\n-\n- Node.prototype.getLastChild = function() {\n- var last_child;\n- if (!this.hasChildren()) {\n- return null;\n- } else {\n- last_child = this.children[this.children.length - 1];\n- if (!last_child.hasChildren() || !last_child.is_open) {\n- return last_child;\n- } else {\n- return last_child.getLastChild();\n- }\n- }\n- };\n-\n- return Node;\n-\n-})();\n-\n-module.exports = {\n- Node: Node,\n- Position: Position\n-};\n-\n-},{}],6:[function(require,module,exports){\n-var $, BorderDropHint, FolderElement, GhostDropHint, NodeElement, Position, node,\n- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n- hasProp = {}.hasOwnProperty;\n-\n-node = require(\'./node\');\n-\n-Position = node.Position;\n-\n-$ = jQuery;\n-\n-NodeElement = (function() {\n- function NodeElement(node, tree_widget) {\n- this.init(node, tree_widget);\n- }\n-\n- NodeElement.prototype.init = function(node, tree_widget) {\n- this.node = node;\n- this.tree_widget = tree_widget;\n- if (!node.element) {\n- node.element = this.tree_widget.element;\n- }\n- return this.$element = $(node.element);\n- };\n-\n- NodeElement.prototype.getUl = function() {\n- return this.$element.children(\'ul:first\');\n- };\n-\n- NodeElement.prototype.getSpan = function() {\n- return this.$element.children(\'.jqtree-element\').find(\'span.jqtree-title\');\n- };\n-\n- NodeElement.prototype.getLi = function() {\n- return this.$element;\n- };\n-\n- NodeElement.prototype.addDropHint = function(position) {\n- if (position === Position.INSIDE) {\n- return new BorderDropHint(this.$element);\n- } else {\n- return new GhostDropHint(this.node, this.$element, position);\n- }\n- };\n-\n- NodeElement.prototype.select = function() {\n- var $li, $span;\n- $li = this.getLi();\n- $li.addClass(\'jqtree-selected\');\n- $li.attr(\'aria-selected\', \'true\');\n- $span = this.getSpan();\n- return $span.attr(\'tabindex\', 0);\n- };\n-\n- NodeElement.prototype.deselect = function() {\n- var $li, $span;\n- $li = this.getLi();\n- $li.removeClass(\'jqtree-selected\');\n- $li.attr(\'aria-selected\', \'false\');\n- $span = this.getSpan();\n- return $span.attr(\'tabindex\', -1);\n- };\n-\n- return NodeElement;\n-\n-})();\n-\n-FolderElement = (function(superClass) {\n- extend(FolderElement, superClass);\n-\n- function FolderElement() {\n- return FolderElement.__super__.constructor.apply(this, arguments);\n- }\n-\n- FolderElement.prototype.open = function(on_finished, slide) {\n- var $button, doOpen;\n- if (slide == null) {\n- slide = true;\n- }\n- if (!this.node.is_open) {\n- this.node.is_open = true;\n- $button = this.getButton();\n- $button.removeClass(\'jqtree-closed\');\n- $button.html(\'\');\n- $button.append(this.tree_widget.renderer.opened_icon_element.cloneNode(false));\n- doOpen = (function(_this) {\n- return function() {\n- var $li, $span;\n- $li = _this.getLi();\n- $li.removeClass(\'jqtree-closed\');\n- $span = _this.getSpan();\n- $span.attr(\'aria-expanded\', \'true\');\n- if (on_finished) {\n- on_finished();\n- }\n- return _this.tree_widget._triggerEvent(\'tree.open\', {\n- node: _this.node\n- });\n+ };\n+ DragAndDropHandler.prototype.getTreeDimensions = function () {\n+ // Return the dimensions of the tree. Add a margin to the bottom to allow\n+ // for some to drag-and-drop the last element.\n+ var offset = this.tree_widget.element.offset();\n+ return {\n+ left: offset.left,\n+ top: offset.top,\n+ right: offset.left + this.tree_widget.element.width(),\n+ bottom: offset.top + this.tree_widget.element.height() + 16\n };\n- })(this);\n- if (slide) {\n- return this.getUl().slideDown(\'fast\', doOpen);\n- } else {\n- this.getUl().show();\n- return doOpen();\n- }\n- }\n- };\n-\n- FolderElement.prototype.close = function(slide) {\n- var $button, doClose;\n- if (slide == null) {\n- slide = true;\n- }\n- if (this.node.is_open) {\n- this.node.is_open = false;\n- $button = this.getButton();\n- $button.addClass(\'jqtree-closed\');\n- $button.html(\'\');\n- $button.append(this.tree_widget.renderer.closed_icon_element.cloneNode(false));\n- doClose = (function(_this) {\n- return function() {\n- var $li, $span;\n- $li = _this.getLi();\n- $li.addClass(\'jqtree-closed\');\n- $span = _this.getSpan();\n- $span.attr(\'aria-expanded\', \'false\');\n- return _this.tree_widget._triggerEvent(\'tree.close\', {\n- node: _this.node\n- });\n+ };\n+ return DragAndDropHandler;\n+}());\n+exports.DragAndDropHandler = DragAndDropHandler;\n+var VisibleNodeIterator = (function () {\n+ function VisibleNodeIterator(tree) {\n+ this.tree = tree;\n+ }\n+ VisibleNodeIterator.prototype.iterate = function () {\n+ var _this = this;\n+ var is_first_node = true;\n+ var _iterateNode = function (node, next_node) {\n+ var must_iterate_inside = ((node.is_open || !node.element) && node.hasChildren());\n+ var $element = null;\n+ if (node.element) {\n+ $element = $(node.element);\n+ if (!$element.is(":visible")) {\n+ return;\n+ }\n+ if (is_first_node) {\n+ _this.handleFirstNode(node);\n+ is_first_node = false;\n+ }\n+ if (!node.hasChildren()) {\n+ _this.handleNode(node, next_node, $element);\n+ }\n+ else if (node.is_open) {\n+ if (!_this.handleOpenFolder(node, $element)) {\n+ must_iterate_inside = false;\n+ }\n+ }\n+ else {\n+ _this.handleClosedFolder(node, next_node, $element);\n+ }\n+ }\n+ if (must_iterate_inside) {\n+ var children_length_1 = node.children.length;\n+ node.children.forEach(function (_, i) {\n+ if (i === (children_length_1 - 1)) {\n+ _iterateNode(node.children[i], null);\n+ }\n+ else {\n+ _iterateNode(node.children[i], node.children[i + 1]);\n+ }\n+ });\n+ if (node.is_open && $element) {\n+ _this.handleAfterOpenFolder(node, next_node);\n+ }\n+ }\n };\n- })(this);\n- if (slide) {\n- return this.getUl().slideUp(\'fast\', doClose);\n- } else {\n- this.getUl().hide();\n- return doClose();\n- }\n- }\n- };\n-\n- FolderElement.prototype.getButton = function() {\n- return this.$element.children(\'.jqtree-element\').find(\'a.jqtree-toggler\');\n- };\n-\n- FolderElement.prototype.addDropHint = function(position) {\n- if (!this.node.is_open && position === Position.INSIDE) {\n- return new BorderDropHint(this.$element);\n- } else {\n- return new GhostDropHint(this.node, this.$element, position);\n- }\n- };\n-\n- return FolderElement;\n-\n-})(NodeElement);\n-\n-BorderDropHint = (function() {\n- function BorderDropHint($element) {\n- var $div, width;\n- $div = $element.children(\'.jqtree-element\');\n- width = $element.width() - 4;\n- this.$hint = $(\'\');\n- $div.append(this.$hint);\n- this.$hint.css({\n- width: width,\n- height: $div.outerHeight() - 4\n- });\n- }\n-\n- BorderDropHint.prototype.remove = function() {\n- return this.$hint.remove();\n- };\n-\n- return BorderDropHint;\n-\n-})();\n-\n-GhostDropHint = (function() {\n- function GhostDropHint(node, $element, position) {\n- this.$element = $element;\n- this.node = node;\n- this.$ghost = $(\'
  • \');\n- if (position === Position.AFTER) {\n- this.moveAfter();\n- } else if (position === Position.BEFORE) {\n- this.moveBefore();\n- } else if (position === Position.INSIDE) {\n- if (node.isFolder() && node.is_open) {\n- this.moveInsideOpenFolder();\n- } else {\n- this.moveInside();\n- }\n- }\n- }\n-\n- GhostDropHint.prototype.remove = function() {\n- return this.$ghost.remove();\n- };\n-\n- GhostDropHint.prototype.moveAfter = function() {\n- return this.$element.after(this.$ghost);\n- };\n-\n- GhostDropHint.prototype.moveBefore = function() {\n- return this.$element.before(this.$ghost);\n- };\n-\n- GhostDropHint.prototype.moveInsideOpenFolder = function() {\n- return $(this.node.children[0].element).before(this.$ghost);\n- };\n-\n- GhostDropHint.prototype.moveInside = function() {\n- this.$element.after(this.$ghost);\n- return this.$ghost.addClass(\'jqtree-inside\');\n- };\n-\n- return GhostDropHint;\n-\n-})();\n-\n-module.exports = {\n- BorderDropHint: BorderDropHint,\n- FolderElement: FolderElement,\n- GhostDropHint: GhostDropHint,\n- NodeElement: NodeElement\n-};\n-\n-},{"./node":5}],7:[function(require,module,exports){\n-var $, SaveStateHandler, indexOf, isInt, util;\n-\n-util = require(\'./util\');\n-\n-indexOf = util.indexOf;\n-\n-isInt = util.isInt;\n-\n-$ = jQuery;\n-\n-SaveStateHandler = (function() {\n- function SaveStateHandler(tree_widget) {\n- this.tree_widget = tree_widget;\n- }\n-\n- SaveStateHandler.prototype.saveState = function() {\n- var state;\n- state = JSON.stringify(this.getState());\n- if (this.tree_widget.options.onSetStateFromStorage) {\n- return this.tree_widget.options.onSetStateFromStorage(state);\n- } else if (this.supportsLocalStorage()) {\n- return localStorage.setItem(this.getCookieName(), state);\n- } else if ($.cookie) {\n- $.cookie.raw = true;\n- return $.cookie(this.getCookieName(), state, {\n- path: \'/\'\n- });\n- }\n- };\n-\n- SaveStateHandler.prototype.getStateFromStorage = function() {\n- var json_data;\n- json_data = this._loadFromStorage();\n- if (json_data) {\n- return this._parseState(json_data);\n- } else {\n- return null;\n- }\n- };\n-\n- SaveStateHandler.prototype._parseState = function(json_data) {\n- var state;\n- state = $.parseJSON(json_data);\n- if (state && state.selected_node && isInt(state.selected_node)) {\n- state.selected_node = [state.selected_node];\n- }\n- return state;\n- };\n-\n- SaveStateHandler.prototype._loadFromStorage = function() {\n- if (this.tree_widget.options.onGetStateFromStorage) {\n- return this.tree_widget.options.onGetStateFromStorage();\n- } else if (this.supportsLocalStorage()) {\n- return localStorage.getItem(this.getCookieName());\n- } else if ($.cookie) {\n- $.cookie.raw = true;\n- return $.cookie(this.getCookieName());\n- } else {\n- return null;\n- }\n- };\n-\n- SaveStateHandler.prototype.getState = function() {\n- var getOpenNodeIds, getSelectedNodeIds;\n- getOpenNodeIds = (function(_this) {\n- return function() {\n- var open_nodes;\n- open_nodes = [];\n- _this.tree_widget.tree.iterate(function(node) {\n- if (node.is_open && node.id && node.hasChildren()) {\n- open_nodes.push(node.id);\n- }\n- return true;\n- });\n- return open_nodes;\n- };\n- })(this);\n- getSelectedNodeIds = (function(_this) {\n- return function() {\n- var n;\n- return (function() {\n- var i, len, ref, results;\n- ref = this.tree_widget.getSelectedNodes();\n- results = [];\n- for (i = 0, len = ref.length; i < len; i++) {\n- n = ref[i];\n- results.push(n.id);\n- }\n- return results;\n- }).call(_this);\n- };\n- })(this);\n- return {\n- open_nodes: getOpenNodeIds(),\n- selected_node: getSelectedNodeIds()\n+ _iterateNode(this.tree, null);\n+ };\n+ return VisibleNodeIterator;\n+}());\n+var HitAreasGenerator = (function (_super) {\n+ __extends(HitAreasGenerator, _super);\n+ function HitAreasGenerator(tree, current_node, tree_bottom) {\n+ var _this = _super.call(this, tree) || this;\n+ _this.current_node = current_node;\n+ _this.tree_bottom = tree_bottom;\n+ return _this;\n+ }\n+ HitAreasGenerator.prototype.generate = function () {\n+ this.positions = [];\n+ this.last_top = 0;\n+ this.iterate();\n+ return this.generateHitAreas(this.positions);\n+ };\n+ HitAreasGenerator.prototype.generateHitAreas = function (positions) {\n+ var previous_top = -1;\n+ var group = [];\n+ var hit_areas = [];\n+ for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n+ var position = positions_1[_i];\n+ if (position.top !== previous_top && group.length) {\n+ if (group.length) {\n+ this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top);\n+ }\n+ previous_top = position.top;\n+ group = [];\n+ }\n+ group.push(position);\n+ }\n+ this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom);\n+ return hit_areas;\n+ };\n+ HitAreasGenerator.prototype.handleOpenFolder = function (node, $element) {\n+ if (node === this.current_node) {\n+ // Cannot move inside current item\n+ // Stop iterating\n+ return false;\n+ }\n+ // Cannot move before current item\n+ if (node.children[0] !== this.current_node) {\n+ this.addPosition(node, node_1.Position.Inside, this.getTop($element));\n+ }\n+ // Continue iterating\n+ return true;\n };\n- };\n-\n- SaveStateHandler.prototype.setInitialState = function(state) {\n- var must_load_on_demand;\n- if (!state) {\n- return false;\n- } else {\n- must_load_on_demand = this._openInitialNodes(state.open_nodes);\n- this._selectInitialNodes(state.selected_node);\n- return must_load_on_demand;\n- }\n- };\n-\n- SaveStateHandler.prototype._openInitialNodes = function(node_ids) {\n- var i, len, must_load_on_demand, node, node_id;\n- must_load_on_demand = false;\n- for (i = 0, len = node_ids.length; i < len; i++) {\n- node_id = node_ids[i];\n- node = this.tree_widget.getNodeById(node_id);\n- if (node) {\n- if (!node.load_on_demand) {\n- node.is_open = true;\n- } else {\n- must_load_on_demand = true;\n+ HitAreasGenerator.prototype.handleClosedFolder = function (node, next_node, $element) {\n+ var top = this.getTop($element);\n+ if (node === this.current_node) {\n+ // Cannot move after current item\n+ this.addPosition(node, node_1.Position.None, top);\n }\n- }\n- }\n- return must_load_on_demand;\n- };\n-\n- SaveStateHandler.prototype._selectInitialNodes = function(node_ids) {\n- var i, len, node, node_id, select_count;\n- select_count = 0;\n- for (i = 0, len = node_ids.length; i < len; i++) {\n- node_id = node_ids[i];\n- node = this.tree_widget.getNodeById(node_id);\n- if (node) {\n- select_count += 1;\n- this.tree_widget.select_node_handler.addToSelection(node);\n- }\n- }\n- return select_count !== 0;\n- };\n-\n- SaveStateHandler.prototype.setInitialStateOnDemand = function(state, cb_finished) {\n- if (state) {\n- return this._setInitialStateOnDemand(state.open_nodes, state.selected_node, cb_finished);\n- } else {\n- return cb_finished();\n- }\n- };\n-\n- SaveStateHandler.prototype._setInitialStateOnDemand = function(node_ids, selected_nodes, cb_finished) {\n- var loadAndOpenNode, loading_count, openNodes;\n- loading_count = 0;\n- openNodes = (function(_this) {\n- return function() {\n- var i, len, new_nodes_ids, node, node_id;\n- new_nodes_ids = [];\n- for (i = 0, len = node_ids.length; i < len; i++) {\n- node_id = node_ids[i];\n- node = _this.tree_widget.getNodeById(node_id);\n- if (!node) {\n- new_nodes_ids.push(node_id);\n- } else {\n- if (!node.is_loading) {\n- if (node.load_on_demand) {\n- loadAndOpenNode(node);\n- } else {\n- _this.tree_widget._openNode(node, false);\n- }\n+ else {\n+ this.addPosition(node, node_1.Position.Inside, top);\n+ // Cannot move before current item\n+ if (next_node !== this.current_node) {\n+ this.addPosition(node, node_1.Position.After, top);\n }\n- }\n }\n- node_ids = new_nodes_ids;\n- if (_this._selectInitialNodes(selected_nodes)) {\n- _this.tree_widget._refreshElements();\n+ };\n+ HitAreasGenerator.prototype.handleFirstNode = function (node) {\n+ if (node !== this.current_node) {\n+ this.addPosition(node, node_1.Position.Before, this.getTop($(node.element)));\n }\n- if (loading_count === 0) {\n- return cb_finished();\n+ };\n+ HitAreasGenerator.prototype.handleAfterOpenFolder = function (node, next_node) {\n+ if (node === this.current_node ||\n+ next_node === this.current_node) {\n+ // Cannot move before or after current item\n+ this.addPosition(node, node_1.Position.None, this.last_top);\n }\n- };\n- })(this);\n- loadAndOpenNode = (function(_this) {\n- return function(node) {\n- loading_count += 1;\n- return _this.tree_widget._openNode(node, false, function() {\n- loading_count -= 1;\n- return openNodes();\n- });\n- };\n- })(this);\n- return openNodes();\n- };\n-\n- SaveStateHandler.prototype.getCookieName = function() {\n- if (typeof this.tree_widget.options.saveState === \'string\') {\n- return this.tree_widget.options.saveState;\n- } else {\n- return \'tree\';\n- }\n- };\n-\n- SaveStateHandler.prototype.supportsLocalStorage = function() {\n- var testSupport;\n- testSupport = function() {\n- var error, error1, key;\n- if (typeof localStorage === "undefined" || localStorage === null) {\n- return false;\n- } else {\n- try {\n- key = \'_storage_test\';\n- sessionStorage.setItem(key, true);\n- sessionStorage.removeItem(key);\n- } catch (error1) {\n- error = error1;\n- return false;\n+ else {\n+ this.addPosition(node, node_1.Position.After, this.last_top);\n }\n- return true;\n- }\n };\n- if (this._supportsLocalStorage == null) {\n- this._supportsLocalStorage = testSupport();\n- }\n- return this._supportsLocalStorage;\n- };\n-\n- SaveStateHandler.prototype.getNodeIdToBeSelected = function() {\n- var state;\n- state = this.getStateFromStorage();\n- if (state && state.selected_node) {\n- return state.selected_node[0];\n- } else {\n- return null;\n- }\n- };\n-\n- return SaveStateHandler;\n-\n-})();\n-\n-module.exports = SaveStateHandler;\n-\n-},{"./util":12}],8:[function(require,module,exports){\n-var $, ScrollHandler;\n-\n-$ = jQuery;\n-\n-ScrollHandler = (function() {\n- function ScrollHandler(tree_widget) {\n- this.tree_widget = tree_widget;\n- this.previous_top = -1;\n- this.is_initialized = false;\n- this._initScrollParent();\n- }\n-\n- ScrollHandler.prototype._initScrollParent = function() {\n- var $scroll_parent, getParentWithOverflow, setDocumentAsScrollParent;\n- getParentWithOverflow = (function(_this) {\n- return function() {\n- var css_values, el, hasOverFlow, i, len, ref;\n- css_values = [\'overflow\', \'overflow-y\'];\n- hasOverFlow = function(el) {\n- var css_value, i, len, ref;\n- for (i = 0, len = css_values.length; i < len; i++) {\n- css_value = css_values[i];\n- if ((ref = $.css(el, css_value)) === \'auto\' || ref === \'scroll\') {\n- return true;\n- }\n- }\n- return false;\n- };\n- if (hasOverFlow(_this.tree_widget.$el[0])) {\n- return _this.tree_widget.$el;\n- }\n- ref = _this.tree_widget.$el.parents();\n- for (i = 0, len = ref.length; i < len; i++) {\n- el = ref[i];\n- if (hasOverFlow(el)) {\n- return $(el);\n- }\n+ HitAreasGenerator.prototype.handleNode = function (node, next_node, $element) {\n+ var top = this.getTop($element);\n+ if (node === this.current_node) {\n+ // Cannot move inside current item\n+ this.addPosition(node, node_1.Position.None, top);\n }\n- return null;\n- };\n- })(this);\n- setDocumentAsScrollParent = (function(_this) {\n- return function() {\n- _this.scroll_parent_top = 0;\n- return _this.$scroll_parent = null;\n- };\n- })(this);\n- if (this.tree_widget.$el.css(\'position\') === \'fixed\') {\n- setDocumentAsScrollParent();\n- }\n- $scroll_parent = getParentWithOverflow();\n- if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== \'HTML\') {\n- this.$scroll_parent = $scroll_parent;\n- this.scroll_parent_top = this.$scroll_parent.offset().top;\n- } else {\n- setDocumentAsScrollParent();\n- }\n- return this.is_initialized = true;\n- };\n-\n- ScrollHandler.prototype._ensureInit = function() {\n- if (!this.is_initialized) {\n- return this._initScrollParent();\n- }\n- };\n-\n- ScrollHandler.prototype.checkScrolling = function() {\n- var hovered_area;\n- this._ensureInit();\n- hovered_area = this.tree_widget.dnd_handler.hovered_area;\n- if (hovered_area && hovered_area.top !== this.previous_top) {\n- this.previous_top = hovered_area.top;\n- if (this.$scroll_parent) {\n- return this._handleScrollingWithScrollParent(hovered_area);\n- } else {\n- return this._handleScrollingWithDocument(hovered_area);\n- }\n- }\n- };\n-\n- ScrollHandler.prototype._handleScrollingWithScrollParent = function(area) {\n- var distance_bottom;\n- distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;\n- if (distance_bottom < 20) {\n- this.$scroll_parent[0].scrollTop += 20;\n- this.tree_widget.refreshHitAreas();\n- return this.previous_top = -1;\n- } else if ((area.top - this.scroll_parent_top) < 20) {\n- this.$scroll_parent[0].scrollTop -= 20;\n- this.tree_widget.refreshHitAreas();\n- return this.previous_top = -1;\n- }\n- };\n-\n- ScrollHandler.prototype._handleScrollingWithDocument = function(area) {\n- var distance_top;\n- distance_top = area.top - $(document).scrollTop();\n- if (distance_top < 20) {\n- return $(document).scrollTop($(document).scrollTop() - 20);\n- } else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {\n- return $(document).scrollTop($(document).scrollTop() + 20);\n- }\n- };\n-\n- ScrollHandler.prototype.scrollTo = function(top) {\n- var tree_top;\n- this._ensureInit();\n- if (this.$scroll_parent) {\n- return this.$scroll_parent[0].scrollTop = top;\n- } else {\n- tree_top = this.tree_widget.$el.offset().top;\n- return $(document).scrollTop(top + tree_top);\n- }\n- };\n-\n- ScrollHandler.prototype.isScrolledIntoView = function(element) {\n- var $element, element_bottom, element_top, view_bottom, view_top;\n- this._ensureInit();\n- $element = $(element);\n- if (this.$scroll_parent) {\n- view_top = 0;\n- view_bottom = this.$scroll_parent.height();\n- element_top = $element.offset().top - this.scroll_parent_top;\n- element_bottom = element_top + $element.height();\n- } else {\n- view_top = $(window).scrollTop();\n- view_bottom = view_top + $(window).height();\n- element_top = $element.offset().top;\n- element_bottom = element_top + $element.height();\n- }\n- return (element_bottom <= view_bottom) && (element_top >= view_top);\n- };\n-\n- return ScrollHandler;\n-\n-})();\n+ else {\n+ this.addPosition(node, node_1.Position.Inside, top);\n+ }\n+ if (next_node === this.current_node ||\n+ node === this.current_node) {\n+ // Cannot move before or after current item\n+ this.addPosition(node, node_1.Position.None, top);\n+ }\n+ else {\n+ this.addPosition(node, node_1.Position.After, top);\n+ }\n+ };\n+ HitAreasGenerator.prototype.getTop = function ($element) {\n+ return $element.offset().top;\n+ };\n+ HitAreasGenerator.prototype.addPosition = function (node, position, top) {\n+ var area = {\n+ top: top,\n+ bottom: 0,\n+ node: node,\n+ position: position\n+ };\n+ this.positions.push(area);\n+ this.last_top = top;\n+ };\n+ HitAreasGenerator.prototype.generateHitAreasForGroup = function (hit_areas, positions_in_group, top, bottom) {\n+ // limit positions in group\n+ var position_count = Math.min(positions_in_group.length, 4);\n+ var area_height = Math.round((bottom - top) / position_count);\n+ var area_top = top;\n+ var i = 0;\n+ while (i < position_count) {\n+ var position = positions_in_group[i];\n+ hit_areas.push({\n+ top: area_top,\n+ bottom: area_top + area_height,\n+ node: position.node,\n+ position: position.position\n+ });\n+ area_top += area_height;\n+ i += 1;\n+ }\n+ };\n+ return HitAreasGenerator;\n+}(VisibleNodeIterator));\n+exports.HitAreasGenerator = HitAreasGenerator;\n+var DragElement = (function () {\n+ function DragElement(node_name, offset_x, offset_y, $tree) {\n+ this.offset_x = offset_x;\n+ this.offset_y = offset_y;\n+ this.$element = $("" + node_name + "");\n+ this.$element.css("position", "absolute");\n+ $tree.append(this.$element);\n+ }\n+ DragElement.prototype.move = function (page_x, page_y) {\n+ this.$element.offset({\n+ left: page_x - this.offset_x,\n+ top: page_y - this.offset_y\n+ });\n+ };\n+ DragElement.prototype.remove = function () {\n+ this.$element.remove();\n+ };\n+ return DragElement;\n+}());\n+exports.DragElement = DragElement;\n \n-module.exports = ScrollHandler;\n \n-},{}],9:[function(require,module,exports){\n-var $, SelectNodeHandler;\n+/***/ }),\n+/* 5 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n-$ = jQuery;\n \n-SelectNodeHandler = (function() {\n- function SelectNodeHandler(tree_widget) {\n- this.tree_widget = tree_widget;\n- this.clear();\n- }\n \n- SelectNodeHandler.prototype.getSelectedNode = function() {\n- var selected_nodes;\n- selected_nodes = this.getSelectedNodes();\n- if (selected_nodes.length) {\n- return selected_nodes[0];\n- } else {\n- return false;\n+exports.__esModule = true;\n+var util_1 = __webpack_require__(1);\n+var ElementsRenderer = (function () {\n+ function ElementsRenderer(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon);\n+ this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon);\n }\n- };\n-\n- SelectNodeHandler.prototype.getSelectedNodes = function() {\n- var id, node, selected_nodes;\n- if (this.selected_single_node) {\n- return [this.selected_single_node];\n- } else {\n- selected_nodes = [];\n- for (id in this.selected_nodes) {\n- node = this.tree_widget.getNodeById(id);\n- if (node) {\n- selected_nodes.push(node);\n+ ElementsRenderer.prototype.render = function (from_node) {\n+ if (from_node && from_node.parent) {\n+ this.renderFromNode(from_node);\n }\n- }\n- return selected_nodes;\n- }\n- };\n-\n- SelectNodeHandler.prototype.getSelectedNodesUnder = function(parent) {\n- var id, node, selected_nodes;\n- if (this.selected_single_node) {\n- if (parent.isParentOf(this.selected_single_node)) {\n- return [this.selected_single_node];\n- } else {\n- return [];\n- }\n- } else {\n- selected_nodes = [];\n- for (id in this.selected_nodes) {\n- node = this.tree_widget.getNodeById(id);\n- if (node && parent.isParentOf(node)) {\n- selected_nodes.push(node);\n+ else {\n+ this.renderFromRoot();\n+ }\n+ };\n+ ElementsRenderer.prototype.renderFromRoot = function () {\n+ var $element = this.tree_widget.element;\n+ $element.empty();\n+ this.createDomElements($element[0], this.tree_widget.tree.children, true, 1);\n+ };\n+ ElementsRenderer.prototype.renderFromNode = function (node) {\n+ // remember current li\n+ var $previous_li = $(node.element);\n+ // create element\n+ var li = this.createLi(node, node.getLevel());\n+ this.attachNodeData(node, li);\n+ // add element to dom\n+ $previous_li.after(li);\n+ // remove previous li\n+ $previous_li.remove();\n+ // create children\n+ if (node.children) {\n+ this.createDomElements(li, node.children, false, node.getLevel() + 1);\n+ }\n+ };\n+ ElementsRenderer.prototype.createDomElements = function (element, children, is_root_node, level) {\n+ var ul = this.createUl(is_root_node);\n+ element.appendChild(ul);\n+ for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n+ var child = children_1[_i];\n+ var li = this.createLi(child, level);\n+ ul.appendChild(li);\n+ this.attachNodeData(child, li);\n+ if (child.hasChildren()) {\n+ this.createDomElements(li, child.children, false, level + 1);\n+ }\n+ }\n+ };\n+ ElementsRenderer.prototype.attachNodeData = function (node, li) {\n+ node.element = li;\n+ $(li).data("node", node);\n+ };\n+ ElementsRenderer.prototype.createUl = function (is_root_node) {\n+ var class_string;\n+ var role;\n+ if (!is_root_node) {\n+ class_string = "";\n+ role = "group";\n }\n- }\n- return selected_nodes;\n- }\n- };\n-\n- SelectNodeHandler.prototype.isNodeSelected = function(node) {\n- if (node.id) {\n- return this.selected_nodes[node.id];\n- } else if (this.selected_single_node) {\n- return this.selected_single_node.element === node.element;\n- } else {\n- return false;\n- }\n- };\n-\n- SelectNodeHandler.prototype.clear = function() {\n- this.selected_nodes = {};\n- return this.selected_single_node = null;\n- };\n-\n- SelectNodeHandler.prototype.removeFromSelection = function(node, include_children) {\n- if (include_children == null) {\n- include_children = false;\n- }\n- if (!node.id) {\n- if (this.selected_single_node && node.element === this.selected_single_node.element) {\n- return this.selected_single_node = null;\n- }\n- } else {\n- delete this.selected_nodes[node.id];\n- if (include_children) {\n- return node.iterate((function(_this) {\n- return function(n) {\n- delete _this.selected_nodes[node.id];\n- return true;\n- };\n- })(this));\n- }\n- }\n- };\n-\n- SelectNodeHandler.prototype.addToSelection = function(node) {\n- if (node.id) {\n- return this.selected_nodes[node.id] = true;\n- } else {\n- return this.selected_single_node = node;\n- }\n- };\n-\n- return SelectNodeHandler;\n-\n-})();\n-\n-module.exports = SelectNodeHandler;\n-\n-},{}],10:[function(require,module,exports){\n-\n-/*\n-Copyright 2013 Marco Braak\n-\n-Licensed under the Apache License, Version 2.0 (the "License");\n-you may not use this file except in compliance with the License.\n-You may obtain a copy of the License at\n-\n- http://www.apache.org/licenses/LICENSE-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-var $, SimpleWidget,\n- slice = [].slice;\n-\n-$ = jQuery;\n-\n-SimpleWidget = (function() {\n- SimpleWidget.prototype.defaults = {};\n+ else {\n+ class_string = "jqtree-tree";\n+ role = "tree";\n+ if (this.tree_widget.options.rtl) {\n+ class_string += " jqtree-rtl";\n+ }\n+ }\n+ var ul = document.createElement("ul");\n+ ul.className = "jqtree_common " + class_string;\n+ ul.setAttribute("role", role);\n+ return ul;\n+ };\n+ ElementsRenderer.prototype.createLi = function (node, level) {\n+ var is_selected = Boolean(this.tree_widget.select_node_handler &&\n+ this.tree_widget.select_node_handler.isNodeSelected(node));\n+ var li = node.isFolder()\n+ ? this.createFolderLi(node, level, is_selected)\n+ : this.createNodeLi(node, level, is_selected);\n+ if (this.tree_widget.options.onCreateLi) {\n+ this.tree_widget.options.onCreateLi(node, $(li), is_selected);\n+ }\n+ return li;\n+ };\n+ ElementsRenderer.prototype.createFolderLi = function (node, level, is_selected) {\n+ var button_classes = this.getButtonClasses(node);\n+ var folder_classes = this.getFolderClasses(node, is_selected);\n+ var icon_element = node.is_open ? this.opened_icon_element : this.closed_icon_element;\n+ // li\n+ var li = document.createElement("li");\n+ li.className = "jqtree_common " + folder_classes;\n+ li.setAttribute("role", "presentation");\n+ // div\n+ var div = document.createElement("div");\n+ div.className = "jqtree-element jqtree_common";\n+ div.setAttribute("role", "presentation");\n+ li.appendChild(div);\n+ // button link\n+ var button_link = document.createElement("a");\n+ button_link.className = button_classes;\n+ button_link.appendChild(icon_element.cloneNode(false));\n+ button_link.setAttribute("role", "presentation");\n+ button_link.setAttribute("aria-hidden", "true");\n+ if (this.tree_widget.options.buttonLeft) {\n+ div.appendChild(button_link);\n+ }\n+ // title span\n+ div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, true));\n+ if (!this.tree_widget.options.buttonLeft) {\n+ div.appendChild(button_link);\n+ }\n+ return li;\n+ };\n+ ElementsRenderer.prototype.createNodeLi = function (node, level, is_selected) {\n+ var li_classes = ["jqtree_common"];\n+ if (is_selected) {\n+ li_classes.push("jqtree-selected");\n+ }\n+ var class_string = li_classes.join(" ");\n+ // li\n+ var li = document.createElement("li");\n+ li.className = class_string;\n+ li.setAttribute("role", "presentation");\n+ // div\n+ var div = document.createElement("div");\n+ div.className = "jqtree-element jqtree_common";\n+ div.setAttribute("role", "presentation");\n+ li.appendChild(div);\n+ // title span\n+ div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, false));\n+ return li;\n+ };\n+ ElementsRenderer.prototype.createTitleSpan = function (node_name, level, is_selected, is_open, is_folder) {\n+ var title_span = document.createElement("span");\n+ var classes = "jqtree-title jqtree_common";\n+ if (is_folder) {\n+ classes += " jqtree-title-folder";\n+ }\n+ title_span.className = classes;\n+ title_span.setAttribute("role", "treeitem");\n+ title_span.setAttribute("aria-level", "" + level);\n+ title_span.setAttribute("aria-selected", util_1.getBoolString(is_selected));\n+ title_span.setAttribute("aria-expanded", util_1.getBoolString(is_open));\n+ if (is_selected) {\n+ title_span.setAttribute("tabindex", "0");\n+ }\n+ title_span.innerHTML = this.escapeIfNecessary(node_name);\n+ return title_span;\n+ };\n+ ElementsRenderer.prototype.getButtonClasses = function (node) {\n+ var classes = ["jqtree-toggler", "jqtree_common"];\n+ if (!node.is_open) {\n+ classes.push("jqtree-closed");\n+ }\n+ if (this.tree_widget.options.buttonLeft) {\n+ classes.push("jqtree-toggler-left");\n+ }\n+ else {\n+ classes.push("jqtree-toggler-right");\n+ }\n+ return classes.join(" ");\n+ };\n+ ElementsRenderer.prototype.getFolderClasses = function (node, is_selected) {\n+ var classes = ["jqtree-folder"];\n+ if (!node.is_open) {\n+ classes.push("jqtree-closed");\n+ }\n+ if (is_selected) {\n+ classes.push("jqtree-selected");\n+ }\n+ if (node.is_loading) {\n+ classes.push("jqtree-loading");\n+ }\n+ return classes.join(" ");\n+ };\n+ ElementsRenderer.prototype.escapeIfNecessary = function (value) {\n+ if (this.tree_widget.options.autoEscape) {\n+ return util_1.html_escape(value);\n+ }\n+ else {\n+ return value;\n+ }\n+ };\n+ ElementsRenderer.prototype.createButtonElement = function (value) {\n+ if (typeof value === "string") {\n+ // convert value to html\n+ var div = document.createElement("div");\n+ div.innerHTML = value;\n+ return document.createTextNode(div.innerHTML);\n+ }\n+ else {\n+ return $(value)[0];\n+ }\n+ };\n+ return ElementsRenderer;\n+}());\n+exports["default"] = ElementsRenderer;\n \n- function SimpleWidget(el, options) {\n- this.$el = $(el);\n- this.options = $.extend({}, this.defaults, options);\n- }\n \n- SimpleWidget.prototype.destroy = function() {\n- return this._deinit();\n- };\n+/***/ }),\n+/* 6 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- SimpleWidget.prototype._init = function() {\n- return null;\n- };\n \n- SimpleWidget.prototype._deinit = function() {\n- return null;\n- };\n \n- SimpleWidget.register = function(widget_class, widget_name) {\n- var callFunction, createWidget, destroyWidget, getDataKey, getWidgetData;\n- getDataKey = function() {\n- return "simple_widget_" + widget_name;\n+exports.__esModule = true;\n+var KeyHandler = (function () {\n+ function KeyHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ if (tree_widget.options.keyboardSupport) {\n+ $(document).on("keydown.jqtree", $.proxy(this.handleKeyDown, this));\n+ }\n+ }\n+ KeyHandler.prototype.deinit = function () {\n+ $(document).off("keydown.jqtree");\n };\n- getWidgetData = function(el, data_key) {\n- var widget;\n- widget = $.data(el, data_key);\n- if (widget && (widget instanceof SimpleWidget)) {\n- return widget;\n- } else {\n- return null;\n- }\n+ KeyHandler.prototype.moveDown = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (node) {\n+ return this.selectNode(node.getNextNode());\n+ }\n+ else {\n+ return false;\n+ }\n };\n- createWidget = function($el, options) {\n- var data_key, el, existing_widget, i, len, widget;\n- data_key = getDataKey();\n- for (i = 0, len = $el.length; i < len; i++) {\n- el = $el[i];\n- existing_widget = getWidgetData(el, data_key);\n- if (!existing_widget) {\n- widget = new widget_class(el, options);\n- if (!$.data(el, data_key)) {\n- $.data(el, data_key, widget);\n- }\n- widget._init();\n+ KeyHandler.prototype.moveUp = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (node) {\n+ return this.selectNode(node.getPreviousNode());\n+ }\n+ else {\n+ return false;\n }\n- }\n- return $el;\n };\n- destroyWidget = function($el) {\n- var data_key, el, i, len, results, widget;\n- data_key = getDataKey();\n- results = [];\n- for (i = 0, len = $el.length; i < len; i++) {\n- el = $el[i];\n- widget = getWidgetData(el, data_key);\n- if (widget) {\n- widget.destroy();\n+ KeyHandler.prototype.moveRight = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (!node) {\n+ return true;\n+ }\n+ else if (!node.isFolder()) {\n+ return true;\n+ }\n+ else {\n+ // folder node\n+ if (node.is_open) {\n+ // Right moves to the first child of an open node\n+ return this.selectNode(node.getNextNode());\n+ }\n+ else {\n+ // Right expands a closed node\n+ this.tree_widget.openNode(node);\n+ return false;\n+ }\n }\n- results.push($.removeData(el, data_key));\n- }\n- return results;\n };\n- callFunction = function($el, function_name, args) {\n- var el, i, len, result, widget, widget_function;\n- result = null;\n- for (i = 0, len = $el.length; i < len; i++) {\n- el = $el[i];\n- widget = $.data(el, getDataKey());\n- if (widget && (widget instanceof SimpleWidget)) {\n- widget_function = widget[function_name];\n- if (widget_function && (typeof widget_function === \'function\')) {\n- result = widget_function.apply(widget, args);\n- }\n+ KeyHandler.prototype.moveLeft = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (!node) {\n+ return true;\n+ }\n+ else if (node.isFolder() && node.is_open) {\n+ // Left on an open node closes the node\n+ this.tree_widget.closeNode(node);\n+ return false;\n+ }\n+ else {\n+ // Left on a closed or end node moves focus to the node\'s parent\n+ return this.selectNode(node.getParent());\n }\n- }\n- return result;\n };\n- return $.fn[widget_name] = function() {\n- var $el, args, argument1, function_name, options;\n- argument1 = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n- $el = this;\n- if (argument1 === void 0 || typeof argument1 === \'object\') {\n- options = argument1;\n- return createWidget($el, options);\n- } else if (typeof argument1 === \'string\' && argument1[0] !== \'_\') {\n- function_name = argument1;\n- if (function_name === \'destroy\') {\n- return destroyWidget($el);\n- } else if (function_name === \'get_widget_class\') {\n- return widget_class;\n- } else {\n- return callFunction($el, function_name, args);\n+ KeyHandler.prototype.handleKeyDown = function (e) {\n+ if (!this.canHandleKeyboard()) {\n+ return true;\n+ }\n+ else {\n+ var key = e.which;\n+ switch (key) {\n+ case KeyHandler.DOWN:\n+ return this.moveDown();\n+ case KeyHandler.UP:\n+ return this.moveUp();\n+ case KeyHandler.RIGHT:\n+ return this.moveRight();\n+ case KeyHandler.LEFT:\n+ return this.moveLeft();\n+ default:\n+ return true;\n+ }\n }\n- }\n };\n- };\n-\n- return SimpleWidget;\n-\n-})();\n-\n-module.exports = SimpleWidget;\n-\n-},{}],11:[function(require,module,exports){\n-var $, BorderDropHint, DragAndDropHandler, DragElement, ElementsRenderer, FolderElement, GhostDropHint, HitAreasGenerator, JqTreeWidget, KeyHandler, MouseWidget, Node, NodeElement, Position, SaveStateHandler, ScrollHandler, SelectNodeHandler, SimpleWidget, __version__, node_module, ref, ref1, util_module,\n- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n- hasProp = {}.hasOwnProperty;\n-\n-__version__ = require(\'./version\');\n-\n-ref = require(\'./drag_and_drop_handler\'), DragAndDropHandler = ref.DragAndDropHandler, DragElement = ref.DragElement, HitAreasGenerator = ref.HitAreasGenerator;\n-\n-ElementsRenderer = require(\'./elements_renderer\');\n-\n-KeyHandler = require(\'./key_handler\');\n-\n-MouseWidget = require(\'./mouse.widget\');\n-\n-SaveStateHandler = require(\'./save_state_handler\');\n-\n-ScrollHandler = require(\'./scroll_handler\');\n-\n-SelectNodeHandler = require(\'./select_node_handler\');\n-\n-SimpleWidget = require(\'./simple.widget\');\n-\n-node_module = require(\'./node\');\n-\n-Node = node_module.Node;\n-\n-Position = node_module.Position;\n-\n-util_module = require(\'./util\');\n-\n-ref1 = require(\'./node_element\'), BorderDropHint = ref1.BorderDropHint, FolderElement = ref1.FolderElement, GhostDropHint = ref1.GhostDropHint, NodeElement = ref1.NodeElement;\n-\n-$ = jQuery;\n-\n-JqTreeWidget = (function(superClass) {\n- extend(JqTreeWidget, superClass);\n-\n- function JqTreeWidget() {\n- return JqTreeWidget.__super__.constructor.apply(this, arguments);\n- }\n-\n- JqTreeWidget.prototype.BorderDropHint = BorderDropHint;\n-\n- JqTreeWidget.prototype.DragElement = DragElement;\n-\n- JqTreeWidget.prototype.DragAndDropHandler = DragAndDropHandler;\n-\n- JqTreeWidget.prototype.ElementsRenderer = ElementsRenderer;\n-\n- JqTreeWidget.prototype.GhostDropHint = GhostDropHint;\n+ KeyHandler.prototype.selectNode = function (node) {\n+ if (!node) {\n+ return true;\n+ }\n+ else {\n+ this.tree_widget.selectNode(node);\n+ if (this.tree_widget.scroll_handler &&\n+ (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find(".jqtree-element")))) {\n+ this.tree_widget.scrollToNode(node);\n+ }\n+ return false;\n+ }\n+ };\n+ KeyHandler.prototype.canHandleKeyboard = function () {\n+ return (this.tree_widget.options.keyboardSupport &&\n+ this.isFocusOnTree() &&\n+ this.tree_widget.getSelectedNode() != null);\n+ };\n+ KeyHandler.prototype.isFocusOnTree = function () {\n+ var active_element = document.activeElement;\n+ return (active_element &&\n+ active_element.tagName === "SPAN" &&\n+ this.tree_widget._containsElement(active_element));\n+ };\n+ return KeyHandler;\n+}());\n+KeyHandler.LEFT = 37;\n+KeyHandler.UP = 38;\n+KeyHandler.RIGHT = 39;\n+KeyHandler.DOWN = 40;\n+exports["default"] = KeyHandler;\n \n- JqTreeWidget.prototype.HitAreasGenerator = HitAreasGenerator;\n \n- JqTreeWidget.prototype.Node = Node;\n+/***/ }),\n+/* 7 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.SaveStateHandler = SaveStateHandler;\n \n- JqTreeWidget.prototype.ScrollHandler = ScrollHandler;\n \n- JqTreeWidget.prototype.SelectNodeHandler = SelectNodeHandler;\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+exports.__esModule = true;\n+/*\n+This widget does the same a the mouse widget in jqueryui.\n+*/\n+var simple_widget_1 = __webpack_require__(2);\n+var MouseWidget = (function (_super) {\n+ __extends(MouseWidget, _super);\n+ function MouseWidget() {\n+ return _super !== null && _super.apply(this, arguments) || this;\n+ }\n+ MouseWidget.prototype.setMouseDelay = function (mouse_delay) {\n+ this.mouse_delay = mouse_delay;\n+ };\n+ MouseWidget.prototype._init = function () {\n+ this.$el.on("mousedown.mousewidget", $.proxy(this._mouseDown, this));\n+ this.$el.on("touchstart.mousewidget", $.proxy(this._touchStart, this));\n+ this.is_mouse_started = false;\n+ this.mouse_delay = 0;\n+ this._mouse_delay_timer = null;\n+ this._is_mouse_delay_met = true;\n+ this.mouse_down_info = null;\n+ };\n+ MouseWidget.prototype._deinit = function () {\n+ this.$el.off("mousedown.mousewidget");\n+ this.$el.off("touchstart.mousewidget");\n+ var $document = $(document);\n+ $document.off("mousemove.mousewidget");\n+ $document.off("mouseup.mousewidget");\n+ };\n+ MouseWidget.prototype._mouseDown = function (e) {\n+ // Is left mouse button?\n+ if (e.which !== 1) {\n+ return;\n+ }\n+ var result = this._handleMouseDown(this._getPositionInfo(e));\n+ if (result) {\n+ e.preventDefault();\n+ }\n+ return result;\n+ };\n+ MouseWidget.prototype._handleMouseDown = function (position_info) {\n+ // We may have missed mouseup (out of window)\n+ if (this.is_mouse_started) {\n+ this._handleMouseUp(position_info);\n+ }\n+ this.mouse_down_info = position_info;\n+ if (!this._mouseCapture(position_info)) {\n+ return;\n+ }\n+ this._handleStartMouse();\n+ return true;\n+ };\n+ MouseWidget.prototype._handleStartMouse = function () {\n+ var $document = $(document);\n+ $document.on("mousemove.mousewidget", $.proxy(this._mouseMove, this));\n+ $document.on("touchmove.mousewidget", $.proxy(this._touchMove, this));\n+ $document.on("mouseup.mousewidget", $.proxy(this._mouseUp, this));\n+ $document.on("touchend.mousewidget", $.proxy(this._touchEnd, this));\n+ if (this.mouse_delay) {\n+ this._startMouseDelayTimer();\n+ }\n+ };\n+ MouseWidget.prototype._startMouseDelayTimer = function () {\n+ var _this = this;\n+ if (this._mouse_delay_timer) {\n+ clearTimeout(this._mouse_delay_timer);\n+ }\n+ this._mouse_delay_timer = setTimeout(function () {\n+ _this._is_mouse_delay_met = true;\n+ }, this.mouse_delay);\n+ this._is_mouse_delay_met = false;\n+ };\n+ MouseWidget.prototype._mouseMove = function (e) {\n+ return this._handleMouseMove(e, this._getPositionInfo(e));\n+ };\n+ MouseWidget.prototype._handleMouseMove = function (e, position_info) {\n+ if (this.is_mouse_started) {\n+ this._mouseDrag(position_info);\n+ return e.preventDefault();\n+ }\n+ if (this.mouse_delay && !this._is_mouse_delay_met) {\n+ return true;\n+ }\n+ if (this.mouse_down_info) {\n+ this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false;\n+ }\n+ if (this.is_mouse_started) {\n+ this._mouseDrag(position_info);\n+ }\n+ else {\n+ this._handleMouseUp(position_info);\n+ }\n+ return !this.is_mouse_started;\n+ };\n+ MouseWidget.prototype._getPositionInfo = function (e) {\n+ return {\n+ page_x: e.pageX,\n+ page_y: e.pageY,\n+ target: e.target,\n+ original_event: e\n+ };\n+ };\n+ MouseWidget.prototype._mouseUp = function (e) {\n+ return this._handleMouseUp(this._getPositionInfo(e));\n+ };\n+ MouseWidget.prototype._handleMouseUp = function (position_info) {\n+ var $document = $(document);\n+ $document.off("mousemove.mousewidget");\n+ $document.off("touchmove.mousewidget");\n+ $document.off("mouseup.mousewidget");\n+ $document.off("touchend.mousewidget");\n+ if (this.is_mouse_started) {\n+ this.is_mouse_started = false;\n+ this._mouseStop(position_info);\n+ }\n+ };\n+ MouseWidget.prototype._touchStart = function (e) {\n+ var touch_event = e.originalEvent;\n+ if (touch_event.touches.length > 1) {\n+ return;\n+ }\n+ var touch = touch_event.changedTouches[0];\n+ return this._handleMouseDown(this._getPositionInfo(touch));\n+ };\n+ MouseWidget.prototype._touchMove = function (e) {\n+ var touch_event = e.originalEvent;\n+ if (touch_event.touches.length > 1) {\n+ return;\n+ }\n+ var touch = touch_event.changedTouches[0];\n+ return this._handleMouseMove(e, this._getPositionInfo(touch));\n+ };\n+ MouseWidget.prototype._touchEnd = function (e) {\n+ var touch_event = e.originalEvent;\n+ if (touch_event.touches.length > 1) {\n+ return;\n+ }\n+ var touch = touch_event.changedTouches[0];\n+ return this._handleMouseUp(this._getPositionInfo(touch));\n+ };\n+ return MouseWidget;\n+}(simple_widget_1["default"]));\n+exports["default"] = MouseWidget;\n \n- JqTreeWidget.prototype.defaults = {\n- autoOpen: false,\n- saveState: false,\n- dragAndDrop: false,\n- selectable: true,\n- useContextMenu: true,\n- onCanSelectNode: null,\n- onSetStateFromStorage: null,\n- onGetStateFromStorage: null,\n- onCreateLi: null,\n- onIsMoveHandle: null,\n- onCanMove: null,\n- onCanMoveTo: null,\n- onLoadFailed: null,\n- autoEscape: true,\n- dataUrl: null,\n- closedIcon: null,\n- openedIcon: \'▼\',\n- slide: true,\n- nodeClass: Node,\n- dataFilter: null,\n- keyboardSupport: true,\n- openFolderDelay: 500,\n- rtl: null,\n- onDragMove: null,\n- onDragStop: null,\n- buttonLeft: true,\n- onLoading: null\n- };\n \n- JqTreeWidget.prototype.toggle = function(node, slide) {\n- if (slide == null) {\n- slide = null;\n- }\n- if (slide === null) {\n- slide = this.options.slide;\n- }\n- if (node.is_open) {\n- this.closeNode(node, slide);\n- } else {\n- this.openNode(node, slide);\n- }\n- return this.element;\n- };\n+/***/ }),\n+/* 8 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.getTree = function() {\n- return this.tree;\n- };\n \n- JqTreeWidget.prototype.selectNode = function(node) {\n- this._selectNode(node, false);\n- return this.element;\n- };\n \n- JqTreeWidget.prototype._selectNode = function(node, must_toggle) {\n- var canSelect, deselected_node, openParents, saveState;\n- if (must_toggle == null) {\n- must_toggle = false;\n- }\n- if (!this.select_node_handler) {\n- return;\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+exports.__esModule = true;\n+var node_1 = __webpack_require__(0);\n+var NodeElement = (function () {\n+ function NodeElement(node, tree_widget) {\n+ this.init(node, tree_widget);\n }\n- canSelect = (function(_this) {\n- return function() {\n- if (_this.options.onCanSelectNode) {\n- return _this.options.selectable && _this.options.onCanSelectNode(node);\n- } else {\n- return _this.options.selectable;\n+ NodeElement.prototype.init = function (node, tree_widget) {\n+ this.node = node;\n+ this.tree_widget = tree_widget;\n+ if (!node.element) {\n+ node.element = this.tree_widget.element.get(0);\n }\n- };\n- })(this);\n- openParents = (function(_this) {\n- return function() {\n- var parent;\n- parent = node.parent;\n- if (parent && parent.parent && !parent.is_open) {\n- return _this.openNode(parent, false);\n+ this.$element = $(node.element);\n+ };\n+ NodeElement.prototype.addDropHint = function (position) {\n+ if (position === node_1.Position.Inside) {\n+ return new BorderDropHint(this.$element);\n }\n- };\n- })(this);\n- saveState = (function(_this) {\n- return function() {\n- if (_this.options.saveState) {\n- return _this.save_state_handler.saveState();\n+ else {\n+ return new GhostDropHint(this.node, this.$element, position);\n }\n- };\n- })(this);\n- if (!node) {\n- this._deselectCurrentNode();\n- saveState();\n- return;\n- }\n- if (!canSelect()) {\n- return;\n- }\n- if (this.select_node_handler.isNodeSelected(node)) {\n- if (must_toggle) {\n- this._deselectCurrentNode();\n- this._triggerEvent(\'tree.select\', {\n- node: null,\n- previous_node: node\n+ };\n+ NodeElement.prototype.select = function () {\n+ var $li = this.getLi();\n+ $li.addClass("jqtree-selected");\n+ $li.attr("aria-selected", "true");\n+ var $span = this.getSpan();\n+ $span.attr("tabindex", 0);\n+ $span.focus();\n+ };\n+ NodeElement.prototype.deselect = function () {\n+ var $li = this.getLi();\n+ $li.removeClass("jqtree-selected");\n+ $li.attr("aria-selected", "false");\n+ var $span = this.getSpan();\n+ $span.attr("tabindex", -1);\n+ $span.blur();\n+ };\n+ NodeElement.prototype.getUl = function () {\n+ return this.$element.children("ul:first");\n+ };\n+ NodeElement.prototype.getSpan = function () {\n+ return this.$element.children(".jqtree-element").find("span.jqtree-title");\n+ };\n+ NodeElement.prototype.getLi = function () {\n+ return this.$element;\n+ };\n+ return NodeElement;\n+}());\n+exports.NodeElement = NodeElement;\n+var FolderElement = (function (_super) {\n+ __extends(FolderElement, _super);\n+ function FolderElement() {\n+ return _super !== null && _super.apply(this, arguments) || this;\n+ }\n+ FolderElement.prototype.open = function (on_finished, slide) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ if (!this.node.is_open) {\n+ this.node.is_open = true;\n+ var $button = this.getButton();\n+ $button.removeClass("jqtree-closed");\n+ $button.html("");\n+ var button_el = $button.get(0);\n+ if (button_el) {\n+ var icon = this.tree_widget.renderer.opened_icon_element.cloneNode(false);\n+ button_el.appendChild(icon);\n+ }\n+ var doOpen = function () {\n+ var $li = _this.getLi();\n+ $li.removeClass("jqtree-closed");\n+ var $span = _this.getSpan();\n+ $span.attr("aria-expanded", "true");\n+ if (on_finished) {\n+ on_finished(_this.node);\n+ }\n+ _this.tree_widget._triggerEvent("tree.open", { node: _this.node });\n+ };\n+ if (slide) {\n+ this.getUl().slideDown("fast", doOpen);\n+ }\n+ else {\n+ this.getUl().show();\n+ doOpen();\n+ }\n+ }\n+ };\n+ FolderElement.prototype.close = function (slide) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ if (this.node.is_open) {\n+ this.node.is_open = false;\n+ var $button = this.getButton();\n+ $button.addClass("jqtree-closed");\n+ $button.html("");\n+ var button_el = $button.get(0);\n+ if (button_el) {\n+ var icon = this.tree_widget.renderer.closed_icon_element.cloneNode(false);\n+ button_el.appendChild(icon);\n+ }\n+ var doClose = function () {\n+ var $li = _this.getLi();\n+ $li.addClass("jqtree-closed");\n+ var $span = _this.getSpan();\n+ $span.attr("aria-expanded", "false");\n+ _this.tree_widget._triggerEvent("tree.close", { node: _this.node });\n+ };\n+ if (slide) {\n+ this.getUl().slideUp("fast", doClose);\n+ }\n+ else {\n+ this.getUl().hide();\n+ doClose();\n+ }\n+ }\n+ };\n+ FolderElement.prototype.addDropHint = function (position) {\n+ if (!this.node.is_open && position === node_1.Position.Inside) {\n+ return new BorderDropHint(this.$element);\n+ }\n+ else {\n+ return new GhostDropHint(this.node, this.$element, position);\n+ }\n+ };\n+ FolderElement.prototype.getButton = function () {\n+ return this.$element.children(".jqtree-element").find("a.jqtree-toggler");\n+ };\n+ return FolderElement;\n+}(NodeElement));\n+exports.FolderElement = FolderElement;\n+var BorderDropHint = (function () {\n+ function BorderDropHint($element) {\n+ var $div = $element.children(".jqtree-element");\n+ var width = $element.width() - 4;\n+ this.$hint = $(\'\');\n+ $div.append(this.$hint);\n+ this.$hint.css({\n+ width: width,\n+ height: $div.outerHeight() - 4\n });\n- }\n- } else {\n- deselected_node = this.getSelectedNode();\n- this._deselectCurrentNode();\n- this.addToSelection(node);\n- this._triggerEvent(\'tree.select\', {\n- node: node,\n- deselected_node: deselected_node\n- });\n- openParents();\n }\n- return saveState();\n- };\n-\n- JqTreeWidget.prototype.getSelectedNode = function() {\n- if (this.select_node_handler) {\n- return this.select_node_handler.getSelectedNode();\n- } else {\n- return null;\n+ BorderDropHint.prototype.remove = function () {\n+ this.$hint.remove();\n+ };\n+ return BorderDropHint;\n+}());\n+exports.BorderDropHint = BorderDropHint;\n+var GhostDropHint = (function () {\n+ function GhostDropHint(node, $element, position) {\n+ this.$element = $element;\n+ this.node = node;\n+ this.$ghost = $("
  • \\n
  • ");\n+ if (position === node_1.Position.After) {\n+ this.moveAfter();\n+ }\n+ else if (position === node_1.Position.Before) {\n+ this.moveBefore();\n+ }\n+ else if (position === node_1.Position.Inside) {\n+ if (node.isFolder() && node.is_open) {\n+ this.moveInsideOpenFolder();\n+ }\n+ else {\n+ this.moveInside();\n+ }\n+ }\n }\n- };\n+ GhostDropHint.prototype.remove = function () {\n+ this.$ghost.remove();\n+ };\n+ GhostDropHint.prototype.moveAfter = function () {\n+ this.$element.after(this.$ghost);\n+ };\n+ GhostDropHint.prototype.moveBefore = function () {\n+ this.$element.before(this.$ghost);\n+ };\n+ GhostDropHint.prototype.moveInsideOpenFolder = function () {\n+ $(this.node.children[0].element).before(this.$ghost);\n+ };\n+ GhostDropHint.prototype.moveInside = function () {\n+ this.$element.after(this.$ghost);\n+ this.$ghost.addClass("jqtree-inside");\n+ };\n+ return GhostDropHint;\n+}());\n+exports.GhostDropHint = GhostDropHint;\n \n- JqTreeWidget.prototype.toJson = function() {\n- return JSON.stringify(this.tree.getData());\n- };\n \n- JqTreeWidget.prototype.loadData = function(data, parent_node) {\n- this._loadData(data, parent_node);\n- return this.element;\n- };\n+/***/ }),\n+/* 9 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n \n- /*\n- signatures:\n- - loadDataFromUrl(url, parent_node=null, on_finished=null)\n- loadDataFromUrl(\'/my_data\');\n- loadDataFromUrl(\'/my_data\', node1);\n- loadDataFromUrl(\'/my_data\', node1, function() { console.log(\'finished\'); });\n- loadDataFromUrl(\'/my_data\', null, function() { console.log(\'finished\'); });\n- \n- - loadDataFromUrl(parent_node=null, on_finished=null)\n- loadDataFromUrl();\n- loadDataFromUrl(node1);\n- loadDataFromUrl(null, function() { console.log(\'finished\'); });\n- loadDataFromUrl(node1, function() { console.log(\'finished\'); });\n- */\n \n- JqTreeWidget.prototype.loadDataFromUrl = function(param1, param2, param3) {\n- if ($.type(param1) === \'string\') {\n- this._loadDataFromUrl(param1, param2, param3);\n- } else {\n- this._loadDataFromUrl(null, param1, param2);\n+exports.__esModule = true;\n+var util_1 = __webpack_require__(1);\n+var SaveStateHandler = (function () {\n+ function SaveStateHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n }\n- return this.element;\n- };\n-\n- JqTreeWidget.prototype.reload = function(on_finished) {\n- this._loadDataFromUrl(null, null, on_finished);\n- return this.element;\n- };\n-\n- JqTreeWidget.prototype._loadDataFromUrl = function(url_info, parent_node, on_finished) {\n- var $el, addLoadingClass, handeLoadData, handleError, handleSuccess, loadDataFromUrlInfo, parseUrlInfo, removeLoadingClass;\n- $el = null;\n- addLoadingClass = (function(_this) {\n- return function() {\n- if (parent_node) {\n- $el = $(parent_node.element);\n- } else {\n- $el = _this.element;\n+ SaveStateHandler.prototype.saveState = function () {\n+ var state = JSON.stringify(this.getState());\n+ if (this.tree_widget.options.onSetStateFromStorage) {\n+ this.tree_widget.options.onSetStateFromStorage(state);\n }\n- $el.addClass(\'jqtree-loading\');\n- return _this._notifyLoading(true, parent_node, $el);\n- };\n- })(this);\n- removeLoadingClass = (function(_this) {\n- return function() {\n- if ($el) {\n- $el.removeClass(\'jqtree-loading\');\n- return _this._notifyLoading(false, parent_node, $el);\n+ else if (this.supportsLocalStorage()) {\n+ localStorage.setItem(this.getKeyName(), state);\n }\n- };\n- })(this);\n- parseUrlInfo = function() {\n- if ($.type(url_info) === \'string\') {\n+ };\n+ SaveStateHandler.prototype.getStateFromStorage = function () {\n+ var json_data = this._loadFromStorage();\n+ if (json_data) {\n+ return this._parseState(json_data);\n+ }\n+ else {\n+ return null;\n+ }\n+ };\n+ SaveStateHandler.prototype.getState = function () {\n+ var _this = this;\n+ var getOpenNodeIds = function () {\n+ var open_nodes = [];\n+ _this.tree_widget.tree.iterate(function (node) {\n+ if (node.is_open &&\n+ node.id &&\n+ node.hasChildren()) {\n+ open_nodes.push(node.id);\n+ }\n+ return true;\n+ });\n+ return open_nodes;\n+ };\n+ var getSelectedNodeIds = function () { return _this.tree_widget.getSelectedNodes().map(function (n) { return n.id; }); };\n return {\n- url: url_info\n+ open_nodes: getOpenNodeIds(),\n+ selected_node: getSelectedNodeIds()\n };\n- }\n- if (!url_info.method) {\n- url_info.method = \'get\';\n- }\n- return url_info;\n };\n- handeLoadData = (function(_this) {\n- return function(data) {\n- removeLoadingClass();\n- _this._loadData(data, parent_node);\n- if (on_finished && $.isFunction(on_finished)) {\n- return on_finished();\n+ /*\n+ Set initial state\n+ Don\'t handle nodes that are loaded on demand\n+\n+ result: must load on demand\n+ */\n+ SaveStateHandler.prototype.setInitialState = function (state) {\n+ if (!state) {\n+ return false;\n }\n- };\n- })(this);\n- handleSuccess = (function(_this) {\n- return function(response) {\n- var data;\n- if ($.isArray(response) || typeof response === \'object\') {\n- data = response;\n- } else if (data != null) {\n- data = $.parseJSON(response);\n- } else {\n- data = [];\n+ else {\n+ var must_load_on_demand = false;\n+ if (state.open_nodes) {\n+ must_load_on_demand = this._openInitialNodes(state.open_nodes);\n+ }\n+ if (state.selected_node) {\n+ this._resetSelection();\n+ this._selectInitialNodes(state.selected_node);\n+ }\n+ return must_load_on_demand;\n }\n- if (_this.options.dataFilter) {\n- data = _this.options.dataFilter(data);\n+ };\n+ SaveStateHandler.prototype.setInitialStateOnDemand = function (state, cb_finished) {\n+ if (state) {\n+ this._setInitialStateOnDemand(state.open_nodes, state.selected_node, cb_finished);\n }\n- return handeLoadData(data);\n- };\n- })(this);\n- handleError = (function(_this) {\n- return function(response) {\n- removeLoadingClass();\n- if (_this.options.onLoadFailed) {\n- return _this.options.onLoadFailed(response);\n+ else {\n+ cb_finished();\n }\n- };\n- })(this);\n- loadDataFromUrlInfo = function() {\n- url_info = parseUrlInfo();\n- return $.ajax($.extend({}, url_info, {\n- method: url_info.method != null ? url_info.method.toUpperCase() : \'GET\',\n- cache: false,\n- dataType: \'json\',\n- success: handleSuccess,\n- error: handleError\n- }));\n };\n- if (!url_info) {\n- url_info = this._getDataUrlInfo(parent_node);\n- }\n- addLoadingClass();\n- if (!url_info) {\n- removeLoadingClass();\n- } else if ($.isArray(url_info)) {\n- handeLoadData(url_info);\n- } else {\n- loadDataFromUrlInfo();\n- }\n- };\n-\n- JqTreeWidget.prototype._loadData = function(data, parent_node) {\n- var deselectNodes, loadSubtree;\n- if (parent_node == null) {\n- parent_node = null;\n- }\n- deselectNodes = (function(_this) {\n- return function() {\n- var i, len, n, selected_nodes_under_parent;\n- if (_this.select_node_handler) {\n- selected_nodes_under_parent = _this.select_node_handler.getSelectedNodesUnder(parent_node);\n- for (i = 0, len = selected_nodes_under_parent.length; i < len; i++) {\n- n = selected_nodes_under_parent[i];\n- _this.select_node_handler.removeFromSelection(n);\n- }\n+ SaveStateHandler.prototype.getNodeIdToBeSelected = function () {\n+ var state = this.getStateFromStorage();\n+ if (state && state.selected_node) {\n+ return state.selected_node[0];\n }\n- return null;\n- };\n- })(this);\n- loadSubtree = (function(_this) {\n- return function() {\n- parent_node.loadFromData(data);\n- parent_node.load_on_demand = false;\n- parent_node.is_loading = false;\n- return _this._refreshElements(parent_node);\n- };\n- })(this);\n- if (!data) {\n- return;\n- }\n- this._triggerEvent(\'tree.load_data\', {\n- tree_data: data\n- });\n- if (!parent_node) {\n- this._initTree(data);\n- } else {\n- deselectNodes();\n- loadSubtree();\n- }\n- if (this.isDragging()) {\n- return this.dnd_handler.refresh();\n- }\n- };\n+ else {\n+ return null;\n+ }\n+ };\n+ SaveStateHandler.prototype._parseState = function (json_data) {\n+ var state = $.parseJSON(json_data);\n+ // Check if selected_node is an int (instead of an array)\n+ if (state && state.selected_node && util_1.isInt(state.selected_node)) {\n+ // Convert to array\n+ state.selected_node = [state.selected_node];\n+ }\n+ return state;\n+ };\n+ SaveStateHandler.prototype._loadFromStorage = function () {\n+ if (this.tree_widget.options.onGetStateFromStorage) {\n+ return this.tree_widget.options.onGetStateFromStorage();\n+ }\n+ else if (this.supportsLocalStorage()) {\n+ return localStorage.getItem(this.getKeyName());\n+ }\n+ };\n+ SaveStateHandler.prototype._openInitialNodes = function (node_ids) {\n+ var must_load_on_demand = false;\n+ for (var _i = 0, node_ids_1 = node_ids; _i < node_ids_1.length; _i++) {\n+ var node_id = node_ids_1[_i];\n+ var node = this.tree_widget.getNodeById(node_id);\n+ if (node) {\n+ if (!node.load_on_demand) {\n+ node.is_open = true;\n+ }\n+ else {\n+ must_load_on_demand = true;\n+ }\n+ }\n+ }\n+ return must_load_on_demand;\n+ };\n+ SaveStateHandler.prototype._selectInitialNodes = function (node_ids) {\n+ var select_count = 0;\n+ for (var _i = 0, node_ids_2 = node_ids; _i < node_ids_2.length; _i++) {\n+ var node_id = node_ids_2[_i];\n+ var node = this.tree_widget.getNodeById(node_id);\n+ if (node) {\n+ select_count += 1;\n+ if (this.tree_widget.select_node_handler) {\n+ this.tree_widget.select_node_handler.addToSelection(node);\n+ }\n+ }\n+ }\n+ return select_count !== 0;\n+ };\n+ SaveStateHandler.prototype._resetSelection = function () {\n+ var select_node_handler = this.tree_widget.select_node_handler;\n+ if (select_node_handler) {\n+ var selected_nodes = select_node_handler.getSelectedNodes();\n+ selected_nodes.forEach(function (node) {\n+ select_node_handler.removeFromSelection(node);\n+ });\n+ }\n+ };\n+ SaveStateHandler.prototype._setInitialStateOnDemand = function (node_ids_param, selected_nodes, cb_finished) {\n+ var _this = this;\n+ var loading_count = 0;\n+ var node_ids = node_ids_param;\n+ var openNodes = function () {\n+ var new_nodes_ids = [];\n+ for (var _i = 0, node_ids_3 = node_ids; _i < node_ids_3.length; _i++) {\n+ var node_id = node_ids_3[_i];\n+ var node = _this.tree_widget.getNodeById(node_id);\n+ if (!node) {\n+ new_nodes_ids.push(node_id);\n+ }\n+ else {\n+ if (!node.is_loading) {\n+ if (node.load_on_demand) {\n+ loadAndOpenNode(node);\n+ }\n+ else {\n+ _this.tree_widget._openNode(node, false, null);\n+ }\n+ }\n+ }\n+ }\n+ node_ids = new_nodes_ids;\n+ if (_this._selectInitialNodes(selected_nodes)) {\n+ _this.tree_widget._refreshElements(null);\n+ }\n+ if (loading_count === 0) {\n+ cb_finished();\n+ }\n+ };\n+ var loadAndOpenNode = function (node) {\n+ loading_count += 1;\n+ _this.tree_widget._openNode(node, false, function () {\n+ loading_count -= 1;\n+ openNodes();\n+ });\n+ };\n+ openNodes();\n+ };\n+ SaveStateHandler.prototype.getKeyName = function () {\n+ if (typeof this.tree_widget.options.saveState === "string") {\n+ return this.tree_widget.options.saveState;\n+ }\n+ else {\n+ return "tree";\n+ }\n+ };\n+ SaveStateHandler.prototype.supportsLocalStorage = function () {\n+ var testSupport = function () {\n+ // Is local storage supported?\n+ if (localStorage == null) {\n+ return false;\n+ }\n+ else {\n+ // Check if it\'s possible to store an item. Safari does not allow this in private browsing mode.\n+ try {\n+ var key = "_storage_test";\n+ sessionStorage.setItem(key, "value");\n+ sessionStorage.removeItem(key);\n+ }\n+ catch (error) {\n+ return false;\n+ }\n+ return true;\n+ }\n+ };\n+ if (this._supportsLocalStorage == null) {\n+ this._supportsLocalStorage = testSupport();\n+ }\n+ return this._supportsLocalStorage;\n+ };\n+ return SaveStateHandler;\n+}());\n+exports["default"] = SaveStateHandler;\n \n- JqTreeWidget.prototype.getNodeById = function(node_id) {\n- return this.tree.getNodeById(node_id);\n- };\n \n- JqTreeWidget.prototype.getNodeByName = function(name) {\n- return this.tree.getNodeByName(name);\n- };\n+/***/ }),\n+/* 10 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.getNodesByProperty = function(key, value) {\n- return this.tree.getNodesByProperty(key, value);\n- };\n \n- JqTreeWidget.prototype.openNode = function(node, slide) {\n- if (slide == null) {\n- slide = null;\n- }\n- if (slide === null) {\n- slide = this.options.slide;\n- }\n- this._openNode(node, slide);\n- return this.element;\n- };\n \n- JqTreeWidget.prototype._openNode = function(node, slide, on_finished) {\n- var doOpenNode, parent;\n- if (slide == null) {\n- slide = true;\n+exports.__esModule = true;\n+var ScrollHandler = (function () {\n+ function ScrollHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.previous_top = -1;\n+ this.is_initialized = false;\n }\n- doOpenNode = (function(_this) {\n- return function(_node, _slide, _on_finished) {\n- var folder_element;\n- folder_element = new FolderElement(_node, _this);\n- return folder_element.open(_on_finished, _slide);\n- };\n- })(this);\n- if (node.isFolder()) {\n- if (node.load_on_demand) {\n- return this._loadFolderOnDemand(node, slide, on_finished);\n- } else {\n- parent = node.parent;\n- while (parent) {\n- if (parent.parent) {\n- doOpenNode(parent, false, null);\n- }\n- parent = parent.parent;\n+ ScrollHandler.prototype.checkScrolling = function () {\n+ this._ensureInit();\n+ if (this.tree_widget.dnd_handler) {\n+ var hovered_area = this.tree_widget.dnd_handler.hovered_area;\n+ if (hovered_area && hovered_area.top !== this.previous_top) {\n+ this.previous_top = hovered_area.top;\n+ if (this.$scroll_parent) {\n+ this._handleScrollingWithScrollParent(hovered_area);\n+ }\n+ else {\n+ this._handleScrollingWithDocument(hovered_area);\n+ }\n+ }\n }\n- doOpenNode(node, slide, on_finished);\n- return this._saveState();\n- }\n- }\n- };\n+ };\n+ ScrollHandler.prototype.scrollTo = function (top) {\n+ this._ensureInit();\n+ if (this.$scroll_parent) {\n+ this.$scroll_parent[0].scrollTop = top;\n+ }\n+ else {\n+ var tree_top = this.tree_widget.$el.offset().top;\n+ $(document).scrollTop(top + tree_top);\n+ }\n+ };\n+ ScrollHandler.prototype.isScrolledIntoView = function ($element) {\n+ this._ensureInit();\n+ var element_bottom;\n+ var view_bottom;\n+ var element_top;\n+ var view_top;\n+ if (this.$scroll_parent) {\n+ view_top = 0;\n+ view_bottom = this.$scroll_parent.height();\n+ element_top = $element.offset().top - this.scroll_parent_top;\n+ element_bottom = element_top + $element.height();\n+ }\n+ else {\n+ view_top = $(window).scrollTop();\n+ view_bottom = view_top + $(window).height();\n+ element_top = $element.offset().top;\n+ element_bottom = element_top + $element.height();\n+ }\n+ return ((element_bottom <= view_bottom) && (element_top >= view_top));\n+ };\n+ ScrollHandler.prototype._initScrollParent = function () {\n+ var _this = this;\n+ var getParentWithOverflow = function () {\n+ var css_attributes = ["overflow", "overflow-y"];\n+ var hasOverFlow = function ($el) {\n+ for (var _i = 0, css_attributes_1 = css_attributes; _i < css_attributes_1.length; _i++) {\n+ var attr = css_attributes_1[_i];\n+ var overflow_value = $el.css(attr);\n+ if (overflow_value === "auto" || overflow_value === "scroll") {\n+ return true;\n+ }\n+ }\n+ return false;\n+ };\n+ if (hasOverFlow(_this.tree_widget.$el)) {\n+ return _this.tree_widget.$el;\n+ }\n+ for (var _i = 0, _a = _this.tree_widget.$el.parents().get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var $el = $(el);\n+ if (hasOverFlow($el)) {\n+ return $el;\n+ }\n+ }\n+ return null;\n+ };\n+ var setDocumentAsScrollParent = function () {\n+ _this.scroll_parent_top = 0;\n+ _this.$scroll_parent = null;\n+ };\n+ if (this.tree_widget.$el.css("position") === "fixed") {\n+ setDocumentAsScrollParent();\n+ }\n+ var $scroll_parent = getParentWithOverflow();\n+ if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== "HTML") {\n+ this.$scroll_parent = $scroll_parent;\n+ this.scroll_parent_top = this.$scroll_parent.offset().top;\n+ }\n+ else {\n+ setDocumentAsScrollParent();\n+ }\n+ this.is_initialized = true;\n+ };\n+ ScrollHandler.prototype._ensureInit = function () {\n+ if (!this.is_initialized) {\n+ this._initScrollParent();\n+ }\n+ };\n+ ScrollHandler.prototype._handleScrollingWithScrollParent = function (area) {\n+ if (!this.$scroll_parent) {\n+ return;\n+ }\n+ else {\n+ var distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;\n+ if (distance_bottom < 20) {\n+ this.$scroll_parent[0].scrollTop += 20;\n+ this.tree_widget.refreshHitAreas();\n+ this.previous_top = -1;\n+ }\n+ else if ((area.top - this.scroll_parent_top) < 20) {\n+ this.$scroll_parent[0].scrollTop -= 20;\n+ this.tree_widget.refreshHitAreas();\n+ this.previous_top = -1;\n+ }\n+ }\n+ };\n+ ScrollHandler.prototype._handleScrollingWithDocument = function (area) {\n+ var distance_top = area.top - $(document).scrollTop();\n+ if (distance_top < 20) {\n+ $(document).scrollTop($(document).scrollTop() - 20);\n+ }\n+ else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {\n+ $(document).scrollTop($(document).scrollTop() + 20);\n+ }\n+ };\n+ return ScrollHandler;\n+}());\n+exports["default"] = ScrollHandler;\n \n- JqTreeWidget.prototype._loadFolderOnDemand = function(node, slide, on_finished) {\n- if (slide == null) {\n- slide = true;\n- }\n- node.is_loading = true;\n- return this._loadDataFromUrl(null, node, (function(_this) {\n- return function() {\n- return _this._openNode(node, slide, on_finished);\n- };\n- })(this));\n- };\n \n- JqTreeWidget.prototype.closeNode = function(node, slide) {\n- if (slide == null) {\n- slide = null;\n- }\n- if (slide === null) {\n- slide = this.options.slide;\n- }\n- if (node.isFolder()) {\n- new FolderElement(node, this).close(slide);\n- this._saveState();\n- }\n- return this.element;\n- };\n+/***/ }),\n+/* 11 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.isDragging = function() {\n- if (this.dnd_handler) {\n- return this.dnd_handler.is_dragging;\n- } else {\n- return false;\n+\n+\n+exports.__esModule = true;\n+var SelectNodeHandler = (function () {\n+ function SelectNodeHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.clear();\n }\n- };\n+ SelectNodeHandler.prototype.getSelectedNode = function () {\n+ var selected_nodes = this.getSelectedNodes();\n+ if (selected_nodes.length) {\n+ return selected_nodes[0];\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ SelectNodeHandler.prototype.getSelectedNodes = function () {\n+ if (this.selected_single_node) {\n+ return [this.selected_single_node];\n+ }\n+ else {\n+ var selected_nodes = [];\n+ for (var id in this.selected_nodes) {\n+ if (this.selected_nodes.hasOwnProperty(id)) {\n+ var node = this.tree_widget.getNodeById(id);\n+ if (node) {\n+ selected_nodes.push(node);\n+ }\n+ }\n+ }\n+ return selected_nodes;\n+ }\n+ };\n+ SelectNodeHandler.prototype.getSelectedNodesUnder = function (parent) {\n+ if (this.selected_single_node) {\n+ if (parent.isParentOf(this.selected_single_node)) {\n+ return [this.selected_single_node];\n+ }\n+ else {\n+ return [];\n+ }\n+ }\n+ else {\n+ var selected_nodes = [];\n+ for (var id in this.selected_nodes) {\n+ if (this.selected_nodes.hasOwnProperty(id)) {\n+ var node = this.tree_widget.getNodeById(id);\n+ if (node && parent.isParentOf(node)) {\n+ selected_nodes.push(node);\n+ }\n+ }\n+ }\n+ return selected_nodes;\n+ }\n+ };\n+ SelectNodeHandler.prototype.isNodeSelected = function (node) {\n+ if (!node) {\n+ return false;\n+ }\n+ else if (node.id != null) {\n+ if (this.selected_nodes[node.id]) {\n+ return true;\n+ }\n+ else {\n+ return false;\n+ }\n+ }\n+ else if (this.selected_single_node) {\n+ return this.selected_single_node.element === node.element;\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ SelectNodeHandler.prototype.clear = function () {\n+ this.selected_nodes = {};\n+ this.selected_single_node = null;\n+ };\n+ SelectNodeHandler.prototype.removeFromSelection = function (node, include_children) {\n+ var _this = this;\n+ if (include_children === void 0) { include_children = false; }\n+ if (node.id == null) {\n+ if (this.selected_single_node && node.element === this.selected_single_node.element) {\n+ this.selected_single_node = null;\n+ }\n+ }\n+ else {\n+ delete this.selected_nodes[node.id];\n+ if (include_children) {\n+ node.iterate(function () {\n+ delete _this.selected_nodes[node.id];\n+ return true;\n+ });\n+ }\n+ }\n+ };\n+ SelectNodeHandler.prototype.addToSelection = function (node) {\n+ if (node.id != null) {\n+ this.selected_nodes[node.id] = true;\n+ }\n+ else {\n+ this.selected_single_node = node;\n+ }\n+ };\n+ return SelectNodeHandler;\n+}());\n+exports["default"] = SelectNodeHandler;\n \n- JqTreeWidget.prototype.refreshHitAreas = function() {\n- this.dnd_handler.refresh();\n- return this.element;\n- };\n \n- JqTreeWidget.prototype.addNodeAfter = function(new_node_info, existing_node) {\n- var new_node;\n- new_node = existing_node.addAfter(new_node_info);\n- this._refreshElements(existing_node.parent);\n- return new_node;\n- };\n+/***/ }),\n+/* 12 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.addNodeBefore = function(new_node_info, existing_node) {\n- var new_node;\n- new_node = existing_node.addBefore(new_node_info);\n- this._refreshElements(existing_node.parent);\n- return new_node;\n- };\n \n- JqTreeWidget.prototype.addParentNode = function(new_node_info, existing_node) {\n- var new_node;\n- new_node = existing_node.addParent(new_node_info);\n- this._refreshElements(new_node.parent);\n- return new_node;\n- };\n \n- JqTreeWidget.prototype.removeNode = function(node) {\n- var parent;\n- parent = node.parent;\n- if (parent) {\n- this.select_node_handler.removeFromSelection(node, true);\n- node.remove();\n- this._refreshElements(parent);\n- }\n- return this.element;\n- };\n+exports.__esModule = true;\n+var version = "1.4.1";\n+exports["default"] = version;\n \n- JqTreeWidget.prototype.appendNode = function(new_node_info, parent_node) {\n- var node;\n- parent_node = parent_node || this.tree;\n- node = parent_node.append(new_node_info);\n- this._refreshElements(parent_node);\n- return node;\n- };\n \n- JqTreeWidget.prototype.prependNode = function(new_node_info, parent_node) {\n- var node;\n- if (!parent_node) {\n- parent_node = this.tree;\n- }\n- node = parent_node.prepend(new_node_info);\n- this._refreshElements(parent_node);\n- return node;\n- };\n+/***/ }),\n+/* 13 */,\n+/* 14 */,\n+/* 15 */,\n+/* 16 */,\n+/* 17 */,\n+/* 18 */,\n+/* 19 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.updateNode = function(node, data) {\n- var id_is_changed;\n- id_is_changed = data.id && data.id !== node.id;\n- if (id_is_changed) {\n- this.tree.removeNodeFromIndex(node);\n- }\n- node.setData(data);\n- if (id_is_changed) {\n- this.tree.addNodeToIndex(node);\n- }\n- if (typeof data === \'object\' && data.children && data.children.length) {\n- node.removeChildren();\n- node.loadFromData(data.children);\n- }\n- this.renderer.renderFromNode(node);\n- this._selectCurrentNode();\n- return this.element;\n- };\n+module.exports = __webpack_require__(3);\n \n- JqTreeWidget.prototype.moveNode = function(node, target_node, position) {\n- var position_index;\n- position_index = Position.nameToIndex(position);\n- this.tree.moveNode(node, target_node, position_index);\n- this._refreshElements();\n- return this.element;\n- };\n \n- JqTreeWidget.prototype.getStateFromStorage = function() {\n- return this.save_state_handler.getStateFromStorage();\n- };\n+/***/ })\n+/******/ ]);\n+\n+ }).apply(root, arguments);\n+});\n+}(this));\n \n- JqTreeWidget.prototype.addToSelection = function(node) {\n- if (node) {\n- this.select_node_handler.addToSelection(node);\n- this._getNodeElementForNode(node).select();\n- this._saveState();\n+(function(root) {\n+define("jqtree-contextmenu", ["jqtree"], function() {\n+ return (function() {\n+(function ($) {\n+ if (!$.fn.tree) {\n+ throw "Error jqTree is not loaded.";\n }\n- return this.element;\n- };\n \n- JqTreeWidget.prototype.getSelectedNodes = function() {\n- return this.select_node_handler.getSelectedNodes();\n- };\n+ $.fn.jqTreeContextMenu = function (options) {\n+ var defaults = {\n+ menuFadeDuration: 250,\n+ selectClickedNode: true,\n+ onContextMenuItem: null,\n+ contextMenuDecider: null\n+ };\n+ var settings = $.extend({}, defaults, options);\n+ var $el = this;\n+ var $menuEl;\n \n- JqTreeWidget.prototype.isNodeSelected = function(node) {\n- return this.select_node_handler.isNodeSelected(node);\n- };\n+ // Check if useContextMenu option is set\n+ var jqTree = $el.data(\'simple_widget_tree\');\n+ if(!jqTree || !jqTree.options.useContextMenu){\n+ throw \'Either jqTree was not found or useContextMenu in jqTree is set to false.\';\n+ }\n \n- JqTreeWidget.prototype.removeFromSelection = function(node) {\n- this.select_node_handler.removeFromSelection(node);\n- this._getNodeElementForNode(node).deselect();\n- this._saveState();\n- return this.element;\n- };\n+ // Check if the parameter is a jquery object\n+ if(settings.menu instanceof jQuery) {\n+ $menuEl = settings.menu;\n+ } else if (typeof settings.menu == "string") {\n+ $menuEl = $(settings.menu);\n+ } else {\n+ throw \'You must pass a menu selector string or jquery element to the jqTreeContextMenu.\';\n+ }\n+ $menuEl.hide();\n+ if (settings.onContextMenuItem) {\n+ this.bind(\'cm-jqtree.item.click\', settings.onContextMenuItem);\n+ }\n \n- JqTreeWidget.prototype.scrollToNode = function(node) {\n- var $element, top;\n- $element = $(node.element);\n- top = $element.offset().top - this.$el.offset().top;\n- this.scroll_handler.scrollTo(top);\n- return this.element;\n- };\n+ // Handle the contextmenu event sent from jqTree when user clicks right mouse button.\n+ $el.bind(\'tree.contextmenu\', function (event) {\n+ var menu = $menuEl;\n+ if (typeof(settings.contextMenuDecider) == "function") {\n+ var menuChoice = settings.contextMenuDecider(event.node);\n+ menu = (typeof menuChoice == "string") ? $(menuChoice) : $menuEl;\n+ }\n+ var x = event.click_event.pageX;\n+ var y = event.click_event.pageY;\n+ var yPadding = 5;\n+ var xPadding = 5;\n \n- JqTreeWidget.prototype.getState = function() {\n- return this.save_state_handler.getState();\n- };\n+ var menuHeight = menu.height();\n+ var menuWidth = menu.width();\n+ var windowHeight = $(window).height();\n+ var windowWidth = $(window).width();\n \n- JqTreeWidget.prototype.setState = function(state) {\n- this.save_state_handler.setInitialState(state);\n- this._refreshElements();\n- return this.element;\n- };\n+ // Make sure the whole menu is rendered within the viewport.\n+ if (menuHeight + y + yPadding > windowHeight) {\n+ y = y - menuHeight;\n+ }\n+ if (menuWidth + x + xPadding > windowWidth) {\n+ x = x - menuWidth;\n+ }\n \n- JqTreeWidget.prototype.setOption = function(option, value) {\n- this.options[option] = value;\n- return this.element;\n- };\n+ // Must call show before we set the offset (offset can not be set on display: none elements).\n+ menu.fadeIn(settings.menuFadeDuration);\n+ menu.offset({ left: x, top: y });\n \n- JqTreeWidget.prototype.moveDown = function() {\n- if (this.key_handler) {\n- this.key_handler.moveDown();\n- }\n- return this.element;\n- };\n+ var dismissContextMenu = function () {\n+ $(document).unbind(\'click.jqtreecontextmenu\');\n+ $el.unbind(\'tree.click.jqtreecontextmenu\');\n+ menu.fadeOut(settings.menuFadeDuration);\n+ };\n \n- JqTreeWidget.prototype.moveUp = function() {\n- if (this.key_handler) {\n- this.key_handler.moveUp();\n- }\n- return this.element;\n- };\n+ // Make it possible to dismiss context menu by clicking somewhere in the document.\n+ $(document).bind(\'click.jqtreecontextmenu\', function (e) {\n+ if (x != e.pageX || y != e.pageY) {\n+ dismissContextMenu();\n+ }\n+ });\n+ // Dismiss context menu if another node in the tree is clicked.\n+ $el.bind(\'tree.click.jqtreecontextmenu\', function () {\n+ dismissContextMenu();\n+ });\n \n- JqTreeWidget.prototype.getVersion = function() {\n- return __version__;\n- };\n+ // Make the selection follow the node that was right clicked on (if desired).\n+ if (settings.selectClickedNode && $el.tree(\'getSelectedNode\') !== event.node) {\n+ $el.tree(\'selectNode\', event.node);\n+ }\n+\n+ // Handle click on menu items, if it\'s not disabled.\n+ menu.find(\'li\').off(\'click.contextmenu\').on(\'click.contextmenu\', function (e) {\n+ e.stopImmediatePropagation();\n+ dismissContextMenu();\n+ $el.trigger(\'cm-jqtree.item.click\', [event.node, $(this)]);\n+ });\n+ });\n+\n+ return this;\n+ };\n+} (jQuery));\n \n- JqTreeWidget.prototype._init = function() {\n- JqTreeWidget.__super__._init.call(this);\n- this.element = this.$el;\n- this.mouse_delay = 300;\n- this.is_initialized = false;\n- this.options.rtl = this._getRtlOption();\n- if (!this.options.closedIcon) {\n- this.options.closedIcon = this._getDefaultClosedIcon();\n- }\n- this.renderer = new ElementsRenderer(this);\n- if (SaveStateHandler != null) {\n- this.save_state_handler = new SaveStateHandler(this);\n- } else {\n- this.options.saveState = false;\n- }\n- if (SelectNodeHandler != null) {\n- this.select_node_handler = new SelectNodeHandler(this);\n- }\n- if (DragAndDropHandler != null) {\n- this.dnd_handler = new DragAndDropHandler(this);\n- } else {\n- this.options.dragAndDrop = false;\n- }\n- if (ScrollHandler != null) {\n- this.scroll_handler = new ScrollHandler(this);\n- }\n- if ((KeyHandler != null) && (SelectNodeHandler != null)) {\n- this.key_handler = new KeyHandler(this);\n- }\n- this._initData();\n- this.element.click($.proxy(this._click, this));\n- this.element.dblclick($.proxy(this._dblclick, this));\n- if (this.options.useContextMenu) {\n- return this.element.bind(\'contextmenu\', $.proxy(this._contextmenu, this));\n- }\n- };\n \n- JqTreeWidget.prototype._deinit = function() {\n- this.element.empty();\n- this.element.unbind();\n- if (this.key_handler) {\n- this.key_handler.deinit();\n- }\n- this.tree = null;\n- return JqTreeWidget.__super__._deinit.call(this);\n- };\n+ }).apply(root, arguments);\n+});\n+}(this));\n \n- JqTreeWidget.prototype._initData = function() {\n- if (this.options.data) {\n- return this._loadData(this.options.data);\n- } else {\n- return this._loadDataFromUrl(this._getDataUrlInfo());\n- }\n- };\n+/* Pattern utils\n+ */\n \n- JqTreeWidget.prototype._getDataUrlInfo = function(node) {\n- var data_url, getUrlFromString;\n- data_url = this.options.dataUrl || this.element.data(\'url\');\n- getUrlFromString = (function(_this) {\n- return function() {\n- var data, selected_node_id, url_info;\n- url_info = {\n- url: data_url\n- };\n- if (node && node.id) {\n- data = {\n- node: node.id\n- };\n- url_info[\'data\'] = data;\n- } else {\n- selected_node_id = _this._getNodeIdToBeSelected();\n- if (selected_node_id) {\n- data = {\n- selected_node: selected_node_id\n- };\n- url_info[\'data\'] = data;\n- }\n- }\n- return url_info;\n- };\n- })(this);\n- if ($.isFunction(data_url)) {\n- return data_url(node);\n- } else if ($.type(data_url) === \'string\') {\n- return getUrlFromString();\n- } else {\n- return data_url;\n- }\n- };\n \n- JqTreeWidget.prototype._getNodeIdToBeSelected = function() {\n- if (this.options.saveState) {\n- return this.save_state_handler.getNodeIdToBeSelected();\n- } else {\n- return null;\n- }\n- };\n+define(\'mockup-utils\',[\n+ \'jquery\'\n+], function($) {\n+ \'use strict\';\n \n- JqTreeWidget.prototype._initTree = function(data) {\n- var doInit, must_load_on_demand;\n- doInit = (function(_this) {\n- return function() {\n- if (!_this.is_initialized) {\n- _this.is_initialized = true;\n- return _this._triggerEvent(\'tree.init\');\n- }\n- };\n- })(this);\n- this.tree = new this.options.nodeClass(null, true, this.options.nodeClass);\n- if (this.select_node_handler) {\n- this.select_node_handler.clear();\n- }\n- this.tree.loadFromData(data);\n- must_load_on_demand = this._setInitialState();\n- this._refreshElements();\n- if (!must_load_on_demand) {\n- return doInit();\n- } else {\n- return this._setInitialStateOnDemand(doInit);\n- }\n- };\n+ var QueryHelper = function(options) {\n+ /* if pattern argument provided, it can implement the interface of:\n+ * - browsing: boolean if currently browsing\n+ * - currentPath: string of current path to apply to search if browsing\n+ * - basePath: default path to provide if no subpath used\n+ */\n \n- JqTreeWidget.prototype._setInitialState = function() {\n- var autoOpenNodes, is_restored, must_load_on_demand, ref2, restoreState;\n- restoreState = (function(_this) {\n- return function() {\n- var must_load_on_demand, state;\n- if (!(_this.options.saveState && _this.save_state_handler)) {\n- return [false, false];\n- } else {\n- state = _this.save_state_handler.getStateFromStorage();\n- if (!state) {\n- return [false, false];\n- } else {\n- must_load_on_demand = _this.save_state_handler.setInitialState(state);\n- return [true, must_load_on_demand];\n- }\n- }\n- };\n- })(this);\n- autoOpenNodes = (function(_this) {\n- return function() {\n- var max_level, must_load_on_demand;\n- if (_this.options.autoOpen === false) {\n- return false;\n- }\n- max_level = _this._getAutoOpenMaxLevel();\n- must_load_on_demand = false;\n- _this.tree.iterate(function(node, level) {\n- if (node.load_on_demand) {\n- must_load_on_demand = true;\n- return false;\n- } else if (!node.hasChildren()) {\n- return false;\n- } else {\n- node.is_open = true;\n- return level !== max_level;\n- }\n- });\n- return must_load_on_demand;\n- };\n- })(this);\n- ref2 = restoreState(), is_restored = ref2[0], must_load_on_demand = ref2[1];\n- if (!is_restored) {\n- must_load_on_demand = autoOpenNodes();\n- }\n- return must_load_on_demand;\n- };\n+ var self = this;\n+ var defaults = {\n+ pattern: null, // must be passed in\n+ vocabularyUrl: null,\n+ searchParam: \'SearchableText\', // query string param to pass to search url\n+ pathOperator: \'plone.app.querystring.operation.string.path\',\n+ attributes: [\'UID\', \'Title\', \'Description\', \'getURL\', \'portal_type\'],\n+ batchSize: 10, // number of results to retrive\n+ baseCriteria: [],\n+ sort_on: \'is_folderish\',\n+ sort_order: \'reverse\',\n+ pathDepth: 1\n+ };\n+ self.options = $.extend({}, defaults, options);\n \n- JqTreeWidget.prototype._setInitialStateOnDemand = function(cb_finished) {\n- var autoOpenNodes, restoreState;\n- restoreState = (function(_this) {\n- return function() {\n- var state;\n- if (!(_this.options.saveState && _this.save_state_handler)) {\n- return false;\n- } else {\n- state = _this.save_state_handler.getStateFromStorage();\n- if (!state) {\n- return false;\n- } else {\n- _this.save_state_handler.setInitialStateOnDemand(state, cb_finished);\n- return true;\n- }\n- }\n- };\n- })(this);\n- autoOpenNodes = (function(_this) {\n- return function() {\n- var loadAndOpenNode, loading_count, max_level, openNodes;\n- max_level = _this._getAutoOpenMaxLevel();\n- loading_count = 0;\n- loadAndOpenNode = function(node) {\n- loading_count += 1;\n- return _this._openNode(node, false, function() {\n- loading_count -= 1;\n- return openNodes();\n- });\n- };\n- openNodes = function() {\n- _this.tree.iterate(function(node, level) {\n- if (node.load_on_demand) {\n- if (!node.is_loading) {\n- loadAndOpenNode(node);\n- }\n- return false;\n- } else {\n- _this._openNode(node, false);\n- return level !== max_level;\n- }\n- });\n- if (loading_count === 0) {\n- return cb_finished();\n- }\n- };\n- return openNodes();\n+ self.pattern = self.options.pattern;\n+ if (self.pattern === undefined || self.pattern === null) {\n+ self.pattern = {\n+ browsing: false,\n+ basePath: \'/\'\n };\n- })(this);\n- if (!restoreState()) {\n- return autoOpenNodes();\n }\n- };\n \n- JqTreeWidget.prototype._getAutoOpenMaxLevel = function() {\n- if (this.options.autoOpen === true) {\n- return -1;\n- } else {\n- return parseInt(this.options.autoOpen);\n+ if (self.options.url && !self.options.vocabularyUrl) {\n+ self.options.vocabularyUrl = self.options.url;\n+ } else if (self.pattern.vocabularyUrl) {\n+ self.options.vocabularyUrl = self.pattern.vocabularyUrl;\n }\n- };\n+ self.valid = Boolean(self.options.vocabularyUrl);\n \n+ self.getBatch = function(page) {\n+ return {\n+ page: page ? page : 1,\n+ size: self.options.batchSize\n+ };\n+ };\n \n- /*\n- Redraw the tree or part of the tree.\n- * from_node: redraw this subtree\n- */\n+ self.getCurrentPath = function() {\n+ var pattern = self.pattern;\n+ var currentPath;\n+ /* If currentPath is set on the QueryHelper object, use that first.\n+ * Then, check on the pattern.\n+ * Finally, see if it is a function and call it if it is.\n+ */\n+ if (self.currentPath) {\n+ currentPath = self.currentPath;\n+ } else {\n+ currentPath = pattern.currentPath;\n+ }\n+ if (typeof currentPath === \'function\') {\n+ currentPath = currentPath();\n+ }\n+ var path = currentPath;\n+ if (!path) {\n+ if (pattern.basePath) {\n+ path = pattern.basePath;\n+ } else if (pattern.options.basePath) {\n+ path = pattern.options.basePath;\n+ } else {\n+ path = \'/\';\n+ }\n+ }\n+ return path;\n+ };\n \n- JqTreeWidget.prototype._refreshElements = function(from_node) {\n- if (from_node == null) {\n- from_node = null;\n- }\n- this.renderer.render(from_node);\n- return this._triggerEvent(\'tree.refresh\');\n- };\n+ self.getCriterias = function(term, searchOptions) {\n+ if (searchOptions === undefined) {\n+ searchOptions = {};\n+ }\n+ searchOptions = $.extend({}, {\n+ useBaseCriteria: true,\n+ additionalCriterias: []\n+ }, searchOptions);\n \n- JqTreeWidget.prototype._click = function(e) {\n- var click_target, event, node;\n- click_target = this._getClickTarget(e.target);\n- if (click_target) {\n- if (click_target.type === \'button\') {\n- this.toggle(click_target.node, this.options.slide);\n- e.preventDefault();\n- return e.stopPropagation();\n- } else if (click_target.type === \'label\') {\n- node = click_target.node;\n- event = this._triggerEvent(\'tree.click\', {\n- node: node,\n- click_event: e\n+ var criterias = [];\n+ if (searchOptions.useBaseCriteria) {\n+ criterias = self.options.baseCriteria.slice(0);\n+ }\n+ if (term) {\n+ term += \'*\';\n+ criterias.push({\n+ i: self.options.searchParam,\n+ o: \'plone.app.querystring.operation.string.contains\',\n+ v: term\n });\n- if (!event.isDefaultPrevented()) {\n- return this._selectNode(node, true);\n- }\n }\n- }\n- };\n+ if (searchOptions.searchPath) {\n+ criterias.push({\n+ i: \'path\',\n+ o: self.options.pathOperator,\n+ v: searchOptions.searchPath + \'::\' + self.options.pathDepth\n+ });\n+ } else if (self.pattern.browsing) {\n+ criterias.push({\n+ i: \'path\',\n+ o: self.options.pathOperator,\n+ v: self.getCurrentPath() + \'::\' + self.options.pathDepth\n+ });\n+ }\n+ criterias = criterias.concat(searchOptions.additionalCriterias);\n+ return criterias;\n+ };\n \n- JqTreeWidget.prototype._dblclick = function(e) {\n- var click_target;\n- click_target = this._getClickTarget(e.target);\n- if (click_target && click_target.type === \'label\') {\n- return this._triggerEvent(\'tree.dblclick\', {\n- node: click_target.node,\n- click_event: e\n- });\n- }\n- };\n+ self.getQueryData = function(term, page) {\n+ var data = {\n+ query: JSON.stringify({\n+ criteria: self.getCriterias(term),\n+ sort_on: self.options.sort_on,\n+ sort_order: self.options.sort_order\n+ }),\n+ attributes: JSON.stringify(self.options.attributes)\n+ };\n+ if (page) {\n+ data.batch = JSON.stringify(self.getBatch(page));\n+ }\n+ return data;\n+ };\n \n- JqTreeWidget.prototype._getClickTarget = function(element) {\n- var $button, $el, $target, node;\n- $target = $(element);\n- $button = $target.closest(\'.jqtree-toggler\');\n- if ($button.length) {\n- node = this._getNode($button);\n- if (node) {\n- return {\n- type: \'button\',\n- node: node\n- };\n+ self.getUrl = function() {\n+ var url = self.options.vocabularyUrl;\n+ if (url.indexOf(\'?\') === -1) {\n+ url += \'?\';\n+ } else {\n+ url += \'&\';\n }\n- } else {\n- $el = $target.closest(\'.jqtree-element\');\n- if ($el.length) {\n- node = this._getNode($el);\n- if (node) {\n+ return url + $.param(self.getQueryData());\n+ };\n+\n+ self.selectAjax = function() {\n+ return {\n+ url: self.options.vocabularyUrl,\n+ dataType: \'JSON\',\n+ quietMillis: 100,\n+ data: function(term, page) {\n+ return self.getQueryData(term, page);\n+ },\n+ results: function(data, page) {\n+ var more = (page * 10) < data.total; // whether or not there are more results available\n+ // notice we return the value of more so Select2 knows if more results can be loaded\n return {\n- type: \'label\',\n- node: node\n+ results: data.results,\n+ more: more\n };\n }\n+ };\n+ };\n+\n+ self.search = function(term, operation, value, callback, useBaseCriteria, type) {\n+ if (useBaseCriteria === undefined) {\n+ useBaseCriteria = true;\n }\n- }\n- return null;\n- };\n+ if (type === undefined) {\n+ type = \'GET\';\n+ }\n+ var criteria = [];\n+ if (useBaseCriteria) {\n+ criteria = self.options.baseCriteria.slice(0);\n+ }\n+ criteria.push({\n+ i: term,\n+ o: operation,\n+ v: value\n+ });\n+ var data = {\n+ query: JSON.stringify({\n+ criteria: criteria\n+ }),\n+ attributes: JSON.stringify(self.options.attributes)\n+ };\n+ $.ajax({\n+ url: self.options.vocabularyUrl,\n+ dataType: \'JSON\',\n+ data: data,\n+ type: type,\n+ success: callback\n+ });\n+ };\n \n- JqTreeWidget.prototype._getNode = function($element) {\n- var $li;\n- $li = $element.closest(\'li.jqtree_common\');\n- if ($li.length === 0) {\n- return null;\n- } else {\n- return $li.data(\'node\');\n- }\n+ return self;\n };\n \n- JqTreeWidget.prototype._getNodeElementForNode = function(node) {\n- if (node.isFolder()) {\n- return new FolderElement(node, this);\n- } else {\n- return new NodeElement(node, this);\n+ var Loading = function(options) {\n+ /*\n+ * Options:\n+ * backdrop(pattern): if you want to have the progress indicator work\n+ * seamlessly with backdrop pattern\n+ * zIndex(integer or function): to override default z-index used\n+ */\n+ var self = this;\n+ self.className = \'plone-loader\';\n+ var defaults = {\n+ backdrop: null,\n+ zIndex: 10005 // can be a function\n+ };\n+ if (!options) {\n+ options = {};\n }\n- };\n+ self.options = $.extend({}, defaults, options);\n \n- JqTreeWidget.prototype._getNodeElement = function($element) {\n- var node;\n- node = this._getNode($element);\n- if (node) {\n- return this._getNodeElementForNode(node);\n- } else {\n- return null;\n- }\n- };\n+ self.init = function() {\n+ self.$el = $(\'.\' + self.className);\n+ if (self.$el.length === 0) {\n+ self.$el = $(\'
    \');\n+ self.$el.addClass(self.className).hide().appendTo(\'body\');\n+ }\n+ };\n \n- JqTreeWidget.prototype._contextmenu = function(e) {\n- var $div, node;\n- $div = $(e.target).closest(\'ul.jqtree-tree .jqtree-element\');\n- if ($div.length) {\n- node = this._getNode($div);\n- if (node) {\n- e.preventDefault();\n- e.stopPropagation();\n- this._triggerEvent(\'tree.contextmenu\', {\n- node: node,\n- click_event: e\n+ self.show = function(closable) {\n+ self.init();\n+ self.$el.show();\n+ var zIndex = self.options.zIndex;\n+ if (typeof(zIndex) === \'function\') {\n+ zIndex = Math.max(zIndex(), 10005);\n+ } else {\n+ // go through all modals and backdrops and make sure we have a higher\n+ // z-index to use\n+ zIndex = 10005;\n+ $(\'.plone-modal-wrapper,.plone-modal-backdrop\').each(function() {\n+ zIndex = Math.max(zIndex, $(this).css(\'zIndex\') || 10005);\n });\n- return false;\n+ zIndex += 1;\n }\n- }\n- };\n+ self.$el.css(\'zIndex\', zIndex);\n \n- JqTreeWidget.prototype._saveState = function() {\n- if (this.options.saveState) {\n- return this.save_state_handler.saveState();\n- }\n+ if (closable === undefined) {\n+ closable = true;\n+ }\n+ if (self.options.backdrop) {\n+ self.options.backdrop.closeOnClick = closable;\n+ self.options.backdrop.closeOnEsc = closable;\n+ self.options.backdrop.init();\n+ self.options.backdrop.show();\n+ }\n+ };\n+\n+ self.hide = function() {\n+ self.init();\n+ self.$el.hide();\n+ };\n+\n+ return self;\n };\n \n- JqTreeWidget.prototype._mouseCapture = function(position_info) {\n- if (this.options.dragAndDrop) {\n- return this.dnd_handler.mouseCapture(position_info);\n+ var getAuthenticator = function() {\n+ var $el = $(\'input[name="_authenticator"]\');\n+ if ($el.length === 0) {\n+ $el = $(\'a[href*="_authenticator"]\');\n+ if ($el.length > 0) {\n+ return $el.attr(\'href\').split(\'_authenticator=\')[1];\n+ }\n+ return \'\';\n } else {\n- return false;\n+ return $el.val();\n }\n };\n \n- JqTreeWidget.prototype._mouseStart = function(position_info) {\n- if (this.options.dragAndDrop) {\n- return this.dnd_handler.mouseStart(position_info);\n- } else {\n- return false;\n+ var generateId = function(prefix) {\n+ if (prefix === undefined) {\n+ prefix = \'id\';\n }\n+ return prefix + (Math.floor((1 + Math.random()) * 0x10000)\n+ .toString(16).substring(1));\n };\n \n- JqTreeWidget.prototype._mouseDrag = function(position_info) {\n- var result;\n- if (this.options.dragAndDrop) {\n- result = this.dnd_handler.mouseDrag(position_info);\n- if (this.scroll_handler) {\n- this.scroll_handler.checkScrolling();\n- }\n- return result;\n+ var setId = function($el, prefix) {\n+ if (prefix === undefined) {\n+ prefix = \'id\';\n+ }\n+ var id = $el.attr(\'id\');\n+ if (id === undefined) {\n+ id = generateId(prefix);\n } else {\n- return false;\n+ /* hopefully we don\'t screw anything up here... changing the id\n+ * in some cases so we get a decent selector */\n+ id = id.replace(/\\./g, \'-\');\n }\n+ $el.attr(\'id\', id);\n+ return id;\n };\n \n- JqTreeWidget.prototype._mouseStop = function(position_info) {\n- if (this.options.dragAndDrop) {\n- return this.dnd_handler.mouseStop(position_info);\n- } else {\n- return false;\n+ var getWindow = function() {\n+ var win = window;\n+ if (win.parent !== window) {\n+ win = win.parent;\n }\n+ return win;\n };\n \n- JqTreeWidget.prototype._triggerEvent = function(event_name, values) {\n- var event;\n- event = $.Event(event_name);\n- $.extend(event, values);\n- this.element.trigger(event);\n- return event;\n+ var parseBodyTag = function(txt) {\n+ return $((/]*>[^]*<\\/body>/im).exec(txt)[0]\n+ .replace(\'\', \'
    \')).eq(0).html();\n };\n \n- JqTreeWidget.prototype.testGenerateHitAreas = function(moving_node) {\n- this.dnd_handler.current_item = this._getNodeElementForNode(moving_node);\n- this.dnd_handler.generateHitAreas();\n- return this.dnd_handler.hit_areas;\n+ var featureSupport = {\n+ /* Well tested feature support for things we use in mockup.\n+ * All gathered from: http://diveintohtml5.info/everything.html\n+ * Alternative to using some form of modernizr.\n+ */\n+ dragAndDrop: function() {\n+ return \'draggable\' in document.createElement(\'span\');\n+ },\n+ fileApi: function() {\n+ return typeof FileReader != \'undefined\'; // jshint ignore:line\n+ },\n+ history: function() {\n+ return !!(window.history && window.history.pushState);\n+ }\n };\n \n- JqTreeWidget.prototype._selectCurrentNode = function() {\n- var node, node_element;\n- node = this.getSelectedNode();\n- if (node) {\n- node_element = this._getNodeElementForNode(node);\n- if (node_element) {\n- return node_element.select();\n- }\n+ var bool = function(val) {\n+ if (typeof val === \'string\') {\n+ val = $.trim(val).toLowerCase();\n }\n+ return [\'false\', false, \'0\', 0, \'\', undefined, null].indexOf(val) === -1;\n };\n \n- JqTreeWidget.prototype._deselectCurrentNode = function() {\n- var node;\n- node = this.getSelectedNode();\n- if (node) {\n- return this.removeFromSelection(node);\n- }\n+ var escapeHTML = function(val) {\n+ return $(\'
    \').text(val).html();\n };\n \n- JqTreeWidget.prototype._getDefaultClosedIcon = function() {\n- if (this.options.rtl) {\n- return \'◀\';\n- } else {\n- return \'►\';\n- }\n+ var removeHTML = function(val) {\n+ return val.replace(/<[^>]+>/ig, \'\');\n };\n \n- JqTreeWidget.prototype._getRtlOption = function() {\n- var data_rtl;\n- if (this.options.rtl !== null) {\n- return this.options.rtl;\n- } else {\n- data_rtl = this.element.data(\'rtl\');\n- if ((data_rtl != null) && data_rtl !== false) {\n- return true;\n- } else {\n- return false;\n+ var storage = {\n+ // Simple local storage wrapper, which doesn\'t break down if it\'s not available.\n+ get: function (name) {\n+ if (window.localStorage) {\n+ var val = window.localStorage[name];\n+ return typeof(val) === \'string\' ? JSON.parse(val) : undefined;\n }\n- }\n- };\n+ },\n \n- JqTreeWidget.prototype._notifyLoading = function(is_loading, node, $el) {\n- if (this.options.onLoading) {\n- return this.options.onLoading(is_loading, node, $el);\n+ set: function (name, val) {\n+ if (window.localStorage) {\n+ window.localStorage[name] = JSON.stringify(val);\n+ }\n }\n };\n \n- return JqTreeWidget;\n-\n-})(MouseWidget);\n-\n-JqTreeWidget.getModule = function(name) {\n- var modules;\n- modules = {\n- \'node\': node_module,\n- \'util\': util_module\n+ return {\n+ bool: bool,\n+ escapeHTML: escapeHTML,\n+ removeHTML: removeHTML,\n+ featureSupport: featureSupport,\n+ generateId: generateId,\n+ getAuthenticator: getAuthenticator,\n+ getWindow: getWindow,\n+ Loading: Loading,\n+ loading: new Loading(), // provide default loader\n+ parseBodyTag: parseBodyTag,\n+ QueryHelper: QueryHelper,\n+ setId: setId,\n+ storage: storage\n };\n- return modules[name];\n-};\n-\n-SimpleWidget.register(JqTreeWidget, \'tree\');\n-\n-},{"./drag_and_drop_handler":1,"./elements_renderer":2,"./key_handler":3,"./mouse.widget":4,"./node":5,"./node_element":6,"./save_state_handler":7,"./scroll_handler":8,"./select_node_handler":9,"./simple.widget":10,"./util":12,"./version":13}],12:[function(require,module,exports){\n-var _indexOf, getBoolString, html_escape, indexOf, isInt;\n-\n-_indexOf = function(array, item) {\n- var i, j, len, value;\n- for (i = j = 0, len = array.length; j < len; i = ++j) {\n- value = array[i];\n- if (value === item) {\n- return i;\n- }\n- }\n- return -1;\n-};\n-\n-indexOf = function(array, item) {\n- if (array.indexOf) {\n- return array.indexOf(item);\n- } else {\n- return _indexOf(array, item);\n- }\n-};\n-\n-isInt = function(n) {\n- return typeof n === \'number\' && n % 1 === 0;\n-};\n-\n-html_escape = function(string) {\n- return (\'\' + string).replace(/&/g, \'&\').replace(//g, \'>\').replace(/"/g, \'"\').replace(/\'/g, \''\').replace(/\\//g, \'/\');\n-};\n-\n-getBoolString = function(value) {\n- if (value) {\n- return \'true\';\n- } else {\n- return \'false\';\n- }\n-};\n-\n-module.exports = {\n- _indexOf: _indexOf,\n- getBoolString: getBoolString,\n- html_escape: html_escape,\n- indexOf: indexOf,\n- isInt: isInt\n-};\n-\n-},{}],13:[function(require,module,exports){\n-module.exports = \'1.3.3\';\n-\n-},{}]},{},[11]);\n-\n-\n- }).apply(root, arguments);\n });\n-}(this));\n \n /* Tree pattern.\n *\n@@ -8092,11 +8048,14 @@ define(\'mockup-patterns-tree\',[\n }\n }\n \n- if (self.options.dragAndDrop && self.options.onCanMoveTo === undefined) {\n+ if (self.options.onCanMoveTo === undefined) {\n self.options.onCanMoveTo = function(moved, target, position) {\n /* if not using folder option, just allow, otherwise, only allow if folder */\n- return target.folder === undefined || target.folder === true;\n- };\n+ if (position === "inside") {\n+ return target.folder === undefined || target.folder === true;\n+ }\n+ return true;\n+ }\n }\n \n if (self.options.data && typeof(self.options.data) === \'string\') {\n@@ -9087,7 +9046,7 @@ exports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;\n-};\n+}\n \n exports.createElement = function(tag, ns) {\n return document.createElementNS ?\n@@ -9096,7 +9055,7 @@ exports.createElement = function(tag, ns) {\n };\n \n exports.hasCssClass = function(el, name) {\n- var classes = (el.className || "").split(/\\s+/g);\n+ var classes = (el.className + "").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n };\n exports.addCssClass = function(el, name) {\n@@ -9487,7 +9446,7 @@ exports.isIE =\n \n exports.isOldIE = exports.isIE && exports.isIE < 9;\n exports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === "Gecko";\n-exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv\\:(\\d+)/)||[])[1], 10) < 4;\n+exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\\d+)/)||[])[1], 10) < 4;\n exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]";\n exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;\n \n@@ -9724,7 +9683,7 @@ function normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n \n if (!useragent.isMac && pressedKeys) {\n- if (pressedKeys.OSKey)\n+ if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n@@ -9790,18 +9749,8 @@ exports.addCommandKeyListener = function(el, callback) {\n var lastDefaultPrevented = null;\n \n addListener(el, "keydown", function(e) {\n- var keyCode = e.keyCode;\n- pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1;\n- if (keyCode == 91 || keyCode == 92) {\n- pressedKeys.OSKey = true;\n- } else if (pressedKeys.OSKey) {\n- if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1)\n- resetPressedKeys();\n- }\n- if (pressedKeys[keyCode] == 1)\n- pressedKeys.count++;\n- pressedKeys.lastT = e.timeStamp;\n- var result = normalizeCommandKeys(callback, e, keyCode);\n+ pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n+ var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n });\n@@ -9814,16 +9763,7 @@ exports.addCommandKeyListener = function(el, callback) {\n });\n \n addListener(el, "keyup", function(e) {\n- var keyCode = e.keyCode;\n- if (!pressedKeys[keyCode]) {\n- resetPressedKeys();\n- } else {\n- pressedKeys.count = Math.max(pressedKeys.count - 1, 0);\n- }\n- if (keyCode == 91 || keyCode == 92) {\n- pressedKeys.OSKey = false;\n- }\n- pressedKeys[keyCode] = null;\n+ pressedKeys[e.keyCode] = null;\n });\n \n if (!pressedKeys) {\n@@ -9834,8 +9774,6 @@ exports.addCommandKeyListener = function(el, callback) {\n };\n function resetPressedKeys() {\n pressedKeys = Object.create(null);\n- pressedKeys.count = 0;\n- pressedKeys.lastT = 0;\n }\n \n if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {\n@@ -9915,7 +9853,7 @@ exports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i= 53) {\n+ onInput();\n+ }\n };\n \n \n@@ -10902,6 +10848,7 @@ function GutterHandler(mouseHandler) {\n \n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n+ editor._signal("showGutterTooltip", tooltip);\n editor.on("mousewheel", hideTooltip);\n \n if (mouseHandler.$tooltipFollowsMouse) {\n@@ -10921,6 +10868,7 @@ function GutterHandler(mouseHandler) {\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n+ editor._signal("hideGutterTooltip", tooltip);\n editor.removeEventListener("mousewheel", hideTooltip);\n }\n }\n@@ -12240,7 +12188,7 @@ var KeyBinding = function(editor) {\n success = commands.exec("insertstring", this.$editor, keyString);\n }\n \n- if (success)\n+ if (success && this.$editor._signal)\n this.$editor._signal("keyboardActivity", toExecute);\n \n return success;\n@@ -13513,6 +13461,11 @@ var TextHighlightRules = function() {\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n+ var toInsert = null;\n+ if (Array.isArray(rule)) {\n+ toInsert = rule;\n+ rule = {};\n+ }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n@@ -13560,11 +13513,14 @@ var TextHighlightRules = function() {\n }\n }\n }\n- if (rule.include || typeof rule == "string") {\n- var includeName = rule.include || rule;\n- var toInsert = rules[includeName];\n- } else if (Array.isArray(rule))\n- toInsert = rule;\n+ var includeName = typeof rule == "string"\n+ ? rule\n+ : typeof rule.include == "string"\n+ ? rule.include\n+ : "";\n+ if (includeName) {\n+ toInsert = rules[includeName];\n+ }\n \n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n@@ -13572,7 +13528,6 @@ var TextHighlightRules = function() {\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n- toInsert = null;\n }\n \n if (rule.keywordMap) {\n@@ -13676,58 +13631,6 @@ var Behaviour = function() {\n exports.Behaviour = Behaviour;\n });\n \n-define("ace/unicode",["require","exports","module"], function(require, exports, module) {\n-"use strict";\n-exports.packages = {};\n-\n-addUnicodePackage({\n- L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n- Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",\n- Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",\n- Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",\n- Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",\n- Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n- M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",\n- Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",\n- Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",\n- Me: "0488048906DE20DD-20E020E2-20E4A670-A672",\n- N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n- Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n- Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",\n- No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",\n- P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",\n- Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",\n- Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",\n- Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",\n- Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",\n- Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",\n- Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",\n- Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",\n- S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",\n- Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",\n- Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",\n- Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",\n- So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",\n- Z: "002000A01680180E2000-200A20282029202F205F3000",\n- Zs: "002000A01680180E2000-200A202F205F3000",\n- Zl: "2028",\n- Zp: "2029",\n- C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",\n- Cc: "0000-001F007F-009F",\n- Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",\n- Co: "E000-F8FF",\n- Cs: "D800-DFFF",\n- Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"\n-});\n-\n-function addUnicodePackage (pack) {\n- var codePoint = /\\w{4}/g;\n- for (var name in pack)\n- exports.packages[name] = pack[name].replace(codePoint, "\\\\u$&");\n-}\n-\n-});\n-\n define("ace/token_iterator",["require","exports","module"], function(require, exports, module) {\n "use strict";\n var TokenIterator = function(session, initialRow, initialColumn) {\n@@ -13804,12 +13707,425 @@ var TokenIterator = function(session, initialRow, initialColumn) {\n exports.TokenIterator = TokenIterator;\n });\n \n-define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) {\n+define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) {\n+"use strict";\n+\n+var oop = require("../../lib/oop");\n+var Behaviour = require("../behaviour").Behaviour;\n+var TokenIterator = require("../../token_iterator").TokenIterator;\n+var lang = require("../../lib/lang");\n+\n+var SAFE_INSERT_IN_TOKENS =\n+ ["text", "paren.rparen", "punctuation.operator"];\n+var SAFE_INSERT_BEFORE_TOKENS =\n+ ["text", "paren.rparen", "punctuation.operator", "comment"];\n+\n+var context;\n+var contextCache = {};\n+var initContext = function(editor) {\n+ var id = -1;\n+ if (editor.multiSelect) {\n+ id = editor.selection.index;\n+ if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n+ contextCache = {rangeCount: editor.multiSelect.rangeCount};\n+ }\n+ if (contextCache[id])\n+ return context = contextCache[id];\n+ context = contextCache[id] = {\n+ autoInsertedBrackets: 0,\n+ autoInsertedRow: -1,\n+ autoInsertedLineEnd: "",\n+ maybeInsertedBrackets: 0,\n+ maybeInsertedRow: -1,\n+ maybeInsertedLineStart: "",\n+ maybeInsertedLineEnd: ""\n+ };\n+};\n+\n+var getWrapped = function(selection, selected, opening, closing) {\n+ var rowDiff = selection.end.row - selection.start.row;\n+ return {\n+ text: opening + selected + closing,\n+ selection: [\n+ 0,\n+ selection.start.column + 1,\n+ rowDiff,\n+ selection.end.column + (rowDiff ? 0 : 1)\n+ ]\n+ };\n+};\n+\n+var CstyleBehaviour = function() {\n+ this.add("braces", "insertion", function(state, action, editor, session, text) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ if (text == \'{\') {\n+ initContext(editor);\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, \'{\', \'}\');\n+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n+ if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) {\n+ CstyleBehaviour.recordAutoInsert(editor, session, "}");\n+ return {\n+ text: \'{}\',\n+ selection: [1, 1]\n+ };\n+ } else {\n+ CstyleBehaviour.recordMaybeInsert(editor, session, "{");\n+ return {\n+ text: \'{\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ } else if (text == \'}\') {\n+ initContext(editor);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar == \'}\') {\n+ var matching = session.$findOpeningBracket(\'}\', {column: cursor.column + 1, row: cursor.row});\n+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n+ CstyleBehaviour.popAutoInsertedClosing();\n+ return {\n+ text: \'\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ } else if (text == "\\n" || text == "\\r\\n") {\n+ initContext(editor);\n+ var closing = "";\n+ if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n+ closing = lang.stringRepeat("}", context.maybeInsertedBrackets);\n+ CstyleBehaviour.clearMaybeInsertedClosing();\n+ }\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar === \'}\') {\n+ var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, \'}\');\n+ if (!openBracePos)\n+ return null;\n+ var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n+ } else if (closing) {\n+ var next_indent = this.$getIndent(line);\n+ } else {\n+ CstyleBehaviour.clearMaybeInsertedClosing();\n+ return;\n+ }\n+ var indent = next_indent + session.getTabString();\n+\n+ return {\n+ text: \'\\n\' + indent + \'\\n\' + next_indent + closing,\n+ selection: [1, indent.length, 1, indent.length]\n+ };\n+ } else {\n+ CstyleBehaviour.clearMaybeInsertedClosing();\n+ }\n+ });\n+\n+ this.add("braces", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && selected == \'{\') {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.end.column, range.end.column + 1);\n+ if (rightChar == \'}\') {\n+ range.end.column++;\n+ return range;\n+ } else {\n+ context.maybeInsertedBrackets--;\n+ }\n+ }\n+ });\n+\n+ this.add("parens", "insertion", function(state, action, editor, session, text) {\n+ if (text == \'(\') {\n+ initContext(editor);\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, \'(\', \')\');\n+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n+ CstyleBehaviour.recordAutoInsert(editor, session, ")");\n+ return {\n+ text: \'()\',\n+ selection: [1, 1]\n+ };\n+ }\n+ } else if (text == \')\') {\n+ initContext(editor);\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar == \')\') {\n+ var matching = session.$findOpeningBracket(\')\', {column: cursor.column + 1, row: cursor.row});\n+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n+ CstyleBehaviour.popAutoInsertedClosing();\n+ return {\n+ text: \'\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ }\n+ });\n+\n+ this.add("parens", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && selected == \'(\') {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n+ if (rightChar == \')\') {\n+ range.end.column++;\n+ return range;\n+ }\n+ }\n+ });\n+\n+ this.add("brackets", "insertion", function(state, action, editor, session, text) {\n+ if (text == \'[\') {\n+ initContext(editor);\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, \'[\', \']\');\n+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n+ CstyleBehaviour.recordAutoInsert(editor, session, "]");\n+ return {\n+ text: \'[]\',\n+ selection: [1, 1]\n+ };\n+ }\n+ } else if (text == \']\') {\n+ initContext(editor);\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar == \']\') {\n+ var matching = session.$findOpeningBracket(\']\', {column: cursor.column + 1, row: cursor.row});\n+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n+ CstyleBehaviour.popAutoInsertedClosing();\n+ return {\n+ text: \'\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ }\n+ });\n+\n+ this.add("brackets", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && selected == \'[\') {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n+ if (rightChar == \']\') {\n+ range.end.column++;\n+ return range;\n+ }\n+ }\n+ });\n+\n+ this.add("string_dquotes", "insertion", function(state, action, editor, session, text) {\n+ if (text == \'"\' || text == "\'") {\n+ if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) \n+ return;\n+ initContext(editor);\n+ var quote = text;\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && selected !== "\'" && selected != \'"\' && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, quote, quote);\n+ } else if (!selected) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ var leftChar = line.substring(cursor.column-1, cursor.column);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ \n+ var token = session.getTokenAt(cursor.row, cursor.column);\n+ var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n+ if (leftChar == "\\\\" && token && /escape/.test(token.type))\n+ return null;\n+ \n+ var stringBefore = token && /string|escape/.test(token.type);\n+ var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n+ \n+ var pair;\n+ if (rightChar == quote) {\n+ pair = stringBefore !== stringAfter;\n+ if (pair && /string\\.end/.test(rightToken.type))\n+ pair = false;\n+ } else {\n+ if (stringBefore && !stringAfter)\n+ return null; // wrap string with different quote\n+ if (stringBefore && stringAfter)\n+ return null; // do not pair quotes inside strings\n+ var wordRe = session.$mode.tokenRe;\n+ wordRe.lastIndex = 0;\n+ var isWordBefore = wordRe.test(leftChar);\n+ wordRe.lastIndex = 0;\n+ var isWordAfter = wordRe.test(leftChar);\n+ if (isWordBefore || isWordAfter)\n+ return null; // before or after alphanumeric\n+ if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n+ return null; // there is rightChar and it isn\'t closing\n+ pair = true;\n+ }\n+ return {\n+ text: pair ? quote + quote : "",\n+ selection: [1,1]\n+ };\n+ }\n+ }\n+ });\n+\n+ this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && (selected == \'"\' || selected == "\'")) {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n+ if (rightChar == selected) {\n+ range.end.column++;\n+ return range;\n+ }\n+ }\n+ });\n+\n+};\n+\n+ \n+CstyleBehaviour.isSaneInsertion = function(editor, session) {\n+ var cursor = editor.getCursorPosition();\n+ var iterator = new TokenIterator(session, cursor.row, cursor.column);\n+ if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) {\n+ var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n+ if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS))\n+ return false;\n+ }\n+ iterator.stepForward();\n+ return iterator.getCurrentTokenRow() !== cursor.row ||\n+ this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS);\n+};\n+\n+CstyleBehaviour.$matchTokenType = function(token, types) {\n+ return types.indexOf(token.type || token) > -1;\n+};\n+\n+CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n+ context.autoInsertedBrackets = 0;\n+ context.autoInsertedRow = cursor.row;\n+ context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n+ context.autoInsertedBrackets++;\n+};\n+\n+CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ if (!this.isMaybeInsertedClosing(cursor, line))\n+ context.maybeInsertedBrackets = 0;\n+ context.maybeInsertedRow = cursor.row;\n+ context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n+ context.maybeInsertedLineEnd = line.substr(cursor.column);\n+ context.maybeInsertedBrackets++;\n+};\n+\n+CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n+ return context.autoInsertedBrackets > 0 &&\n+ cursor.row === context.autoInsertedRow &&\n+ bracket === context.autoInsertedLineEnd[0] &&\n+ line.substr(cursor.column) === context.autoInsertedLineEnd;\n+};\n+\n+CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n+ return context.maybeInsertedBrackets > 0 &&\n+ cursor.row === context.maybeInsertedRow &&\n+ line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n+ line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n+};\n+\n+CstyleBehaviour.popAutoInsertedClosing = function() {\n+ context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n+ context.autoInsertedBrackets--;\n+};\n+\n+CstyleBehaviour.clearMaybeInsertedClosing = function() {\n+ if (context) {\n+ context.maybeInsertedBrackets = 0;\n+ context.maybeInsertedRow = -1;\n+ }\n+};\n+\n+\n+\n+oop.inherits(CstyleBehaviour, Behaviour);\n+\n+exports.CstyleBehaviour = CstyleBehaviour;\n+});\n+\n+define("ace/unicode",["require","exports","module"], function(require, exports, module) {\n+"use strict";\n+exports.packages = {};\n+\n+addUnicodePackage({\n+ L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n+ Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",\n+ Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",\n+ Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",\n+ Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",\n+ Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n+ M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",\n+ Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",\n+ Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",\n+ Me: "0488048906DE20DD-20E020E2-20E4A670-A672",\n+ N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n+ Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n+ Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",\n+ No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",\n+ P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",\n+ Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",\n+ Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",\n+ Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",\n+ Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",\n+ Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",\n+ Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",\n+ Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",\n+ S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",\n+ Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",\n+ Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",\n+ Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",\n+ So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",\n+ Z: "002000A01680180E2000-200A20282029202F205F3000",\n+ Zs: "002000A01680180E2000-200A202F205F3000",\n+ Zl: "2028",\n+ Zp: "2029",\n+ C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",\n+ Cc: "0000-001F007F-009F",\n+ Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",\n+ Co: "E000-F8FF",\n+ Cs: "D800-DFFF",\n+ Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"\n+});\n+\n+function addUnicodePackage (pack) {\n+ var codePoint = /\\w{4}/g;\n+ for (var name in pack)\n+ exports.packages[name] = pack[name].replace(codePoint, "\\\\u$&");\n+}\n+\n+});\n+\n+define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) {\n "use strict";\n \n var Tokenizer = require("../tokenizer").Tokenizer;\n var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;\n-var Behaviour = require("./behaviour").Behaviour;\n+var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;\n var unicode = require("../unicode");\n var lang = require("../lib/lang");\n var TokenIterator = require("../token_iterator").TokenIterator;\n@@ -13817,10 +14133,10 @@ var Range = require("../range").Range;\n \n var Mode = function() {\n this.HighlightRules = TextHighlightRules;\n- this.$behaviour = new Behaviour();\n };\n \n (function() {\n+ this.$defaultBehaviour = new CstyleBehaviour();\n \n this.tokenRe = new RegExp("^["\n + unicode.packages.L\n@@ -13838,7 +14154,7 @@ var Mode = function() {\n \n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n- this.$highlightRules = this.$highlightRules || new this.HighlightRules();\n+ this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n@@ -14460,7 +14776,7 @@ var Document = function(textOrLines) {\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n- console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\\\'\\\', \\\'\\\']) instead.");\n+ console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead.");\n return this.insertMergedLines(position, ["", ""]);\n };\n this.insert = function(position, text) {\n@@ -16082,7 +16398,7 @@ function Folding() {\n this.removeFold(fold);\n else\n this.expandFold(fold);\n- return;\n+ return fold;\n }\n \n var range = this.getFoldWidgetRange(row, true);\n@@ -16090,7 +16406,7 @@ function Folding() {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n- return;\n+ return fold;\n }\n }\n \n@@ -16369,6 +16685,7 @@ var EditSession = function(text, mode) {\n this.$undoSelect = true;\n \n this.$foldData = [];\n+ this.id = "session" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join("\\n");\n };\n@@ -18305,7 +18622,7 @@ var Search = function() {\n needle = lang.escapeRegExp(needle);\n \n if (options.wholeWord)\n- needle = "\\\\b" + needle + "\\\\b";\n+ needle = addWordBoundary(needle, options);\n \n var modifier = options.caseSensitive ? "gm" : "gmi";\n \n@@ -18394,6 +18711,15 @@ var Search = function() {\n \n }).call(Search.prototype);\n \n+function addWordBoundary(needle, options) {\n+ function wordBoundary(c) {\n+ if (/\\w/.test(c) || options.regExp) return "\\\\b";\n+ return "";\n+ }\n+ return wordBoundary(needle[0]) + needle\n+ + wordBoundary(needle[needle.length - 1]);\n+}\n+\n exports.Search = Search;\n });\n \n@@ -18748,7 +19074,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "goToNextError",\n- bindKey: bindKey("Alt-E", "Ctrl-E"),\n+ bindKey: bindKey("Alt-E", "F4"),\n exec: function(editor) {\n config.loadModule("ace/ext/error_marker", function(module) {\n module.showErrorMarker(editor, 1);\n@@ -18758,7 +19084,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "goToPreviousError",\n- bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"),\n+ bindKey: bindKey("Alt-Shift-E", "Shift-F4"),\n exec: function(editor) {\n config.loadModule("ace/ext/error_marker", function(module) {\n module.showErrorMarker(editor, -1);\n@@ -18883,7 +19209,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttostart",\n- bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"),\n+ bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: "forEach",\n readOnly: true,\n@@ -18899,7 +19225,7 @@ exports.commands = [{\n aceCommandGroup: "fileJump"\n }, {\n name: "selectup",\n- bindKey: bindKey("Shift-Up", "Shift-Up"),\n+ bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18913,7 +19239,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttoend",\n- bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"),\n+ bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: "forEach",\n readOnly: true,\n@@ -18929,7 +19255,7 @@ exports.commands = [{\n aceCommandGroup: "fileJump"\n }, {\n name: "selectdown",\n- bindKey: bindKey("Shift-Down", "Shift-Down"),\n+ bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18957,7 +19283,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttolinestart",\n- bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"),\n+ bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18971,7 +19297,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selectleft",\n- bindKey: bindKey("Shift-Left", "Shift-Left"),\n+ bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18999,7 +19325,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttolineend",\n- bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"),\n+ bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -19863,7 +20189,8 @@ var Editor = function(renderer, session) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn();\n var range = new Range(row, column, row, column+token.value.length);\n- if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) {\n+ var sbm = session.$backMarkers[session.$tagHighlight];\n+ if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n }\n@@ -20440,7 +20767,7 @@ var Editor = function(renderer, session) {\n var indentString = lang.stringRepeat(" ", count);\n } else {\n var count = column % size;\n- while (line[range.start.column] == " " && count) {\n+ while (line[range.start.column - 1] == " " && count) {\n range.start.column--;\n count--;\n }\n@@ -22558,6 +22885,7 @@ var oop = require("./lib/oop");\n var dom = require("./lib/dom");\n var event = require("./lib/event");\n var EventEmitter = require("./lib/event_emitter").EventEmitter;\n+var MAX_SCROLL_H = 0x8000;\n var ScrollBar = function(parent) {\n this.element = dom.createElement("div");\n this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix;\n@@ -22581,11 +22909,13 @@ var ScrollBar = function(parent) {\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? "" : "none";\n this.isVisible = isVisible;\n+ this.coeff = 1;\n };\n }).call(ScrollBar.prototype);\n var VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n+ this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n@@ -22600,6 +22930,10 @@ oop.inherits(VScrollBar, ScrollBar);\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n+ if (this.coeff != 1) {\n+ var h = this.element.clientHeight / this.scrollHeight;\n+ this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n+ }\n this._emit("scroll", {data: this.scrollTop});\n }\n this.skipEvent = false;\n@@ -22610,16 +22944,22 @@ oop.inherits(VScrollBar, ScrollBar);\n this.setHeight = function(height) {\n this.element.style.height = height + "px";\n };\n- this.setInnerHeight = function(height) {\n- this.inner.style.height = height + "px";\n- };\n+ this.setInnerHeight = \n this.setScrollHeight = function(height) {\n+ this.scrollHeight = height;\n+ if (height > MAX_SCROLL_H) {\n+ this.coeff = MAX_SCROLL_H / height;\n+ height = MAX_SCROLL_H;\n+ } else if (this.coeff != 1) {\n+ this.coeff = 1\n+ }\n this.inner.style.height = height + "px";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n- this.scrollTop = this.element.scrollTop = scrollTop;\n+ this.scrollTop = scrollTop;\n+ this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n \n@@ -22877,6 +23217,7 @@ position: relative;\\\n overflow: hidden;\\\n font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\\\n direction: ltr;\\\n+text-align: left;\\\n }\\\n .ace_scroller {\\\n position: absolute;\\\n@@ -23402,6 +23743,7 @@ var VirtualRenderer = function(container, theme) {\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n+ this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode()\n@@ -23885,12 +24227,13 @@ var VirtualRenderer = function(container, theme) {\n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n- var desiredHeight = Math.max(\n- (this.$minLines||1) * this.lineHeight,\n- Math.min(maxHeight, height)\n+ var desiredHeight = Math.min(maxHeight, \n+ Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n+ if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n+ desiredHeight = this.$maxPixelHeight;\n var vScroll = height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n@@ -23995,7 +24338,7 @@ var VirtualRenderer = function(container, theme) {\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n- gutterOffset : Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)),\n+ gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n \n@@ -24306,8 +24649,8 @@ var VirtualRenderer = function(container, theme) {\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n- if (!module.cssClass)\n- return;\n+ if (!module || !module.cssClass)\n+ throw new Error("couldn\'t load module " + theme + " or it didn\'t call define");\n dom.importCssString(\n module.cssText,\n module.cssClass,\n@@ -24475,6 +24818,12 @@ config.defineOptions(VirtualRenderer.prototype, "renderer", {\n this.updateFull();\n }\n },\n+ maxPixelHeight: {\n+ set: function(val) {\n+ this.updateFull();\n+ },\n+ initialValue: 0\n+ },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n@@ -26363,7 +26712,7 @@ function LineWidgets(session) {\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n- if (!w.pixelHeight) {\n+ if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n if (w.rowCount == null) {\n@@ -26738,6 +27087,9 @@ require("./ext/error_marker");\n \n exports.config = require("./config");\n exports.require = require;\n+\n+if (typeof define === "function")\n+ exports.define = define;\n exports.edit = function(el) {\n if (typeof el == "string") {\n var _id = el;\n@@ -26786,11 +27138,14 @@ exports.createEditSession = function(text, mode) {\n }\n exports.EditSession = EditSession;\n exports.UndoManager = UndoManager;\n-exports.version = "1.2.3";\n+exports.version = "1.2.6";\n });\n (function() {\n window.require(["ace/ace"], function(a) {\n- a && a.config.init(true);\n+ if (a) {\n+ a.config.init(true);\n+ a.define = window.define;\n+ }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n@@ -26966,7 +27321,7 @@ define(\'mockup-patterns-texteditor\',[\n });\n \n \n-define(\'text!mockup-patterns-filemanager-url/templates/app.xml\',[],function () { return \'
    \\n
    \\n
    \\n
    \\n
    \\n \';});\n+define(\'text!mockup-patterns-filemanager-url/templates/app.xml\',[],function () { return \'
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n\\n\';});\n \n // Backbone.js 1.1.2\n \n@@ -28820,7 +29175,7 @@ define(\'mockup-patterns-tooltip\',[\n \n bootstrapTooltip.DEFAULTS = {\n animation: true,\n- placement: \'top\',\n+ placement: \'auto\',\n selector: false,\n template: \'\',\n trigger: \'hover focus\',\n@@ -29336,6 +29691,127 @@ define(\'mockup-ui-url/views/buttongroup\',[\n return ButtonGroup;\n });\n \n+define(\'mockup-ui-url/views/anchor\',[\n+ \'underscore\',\n+ \'mockup-ui-url/views/base\',\n+ \'mockup-patterns-tooltip\'\n+], function(_, BaseView, Tooltip) {\n+ \'use strict\';\n+\n+ var AnchorView = BaseView.extend({\n+ tagName: \'a\',\n+ className: \'alink\',\n+ eventPrefix: \'button\',\n+ context: \'default\',\n+ idPrefix: \'alink-\',\n+ shortcut: \'\',\n+ attributes: {\n+ \'href\': \'#\'\n+ },\n+ extraClasses: [],\n+ tooltip: null,\n+ template: \'<% if (icon) { %><% } %> <%= title %> <%= shortcut %>\',\n+ events: {\n+ \'click\': \'handleClick\'\n+ },\n+ initialize: function(options) {\n+ if (!options.id) {\n+ var title = options.title || \'\';\n+ options.id = title !== \'\' ? title.toLowerCase().replace(\' \', \'-\') : this.cid;\n+ }\n+ BaseView.prototype.initialize.apply(this, [options]);\n+\n+ this.on(\'render\', function() {\n+ this.$el.attr(\'title\', this.options.tooltip || this.options.title || \'\');\n+ this.$el.attr(\'aria-label\', this.options.title || this.options.tooltip || \'\');\n+ _.each(this.extraClasses, function(klass) {\n+ this.$el.addClass(klass);\n+ });\n+ }, this);\n+ },\n+ handleClick: function(e) {\n+ e.preventDefault();\n+ if (!this.$el.prop(\'disabled\')) {\n+ this.uiEventTrigger(\'click\', this, e);\n+ }\n+ },\n+ serializedModel: function() {\n+ return _.extend({\'icon\': \'\', \'title\': \'\', \'shortcut\': \'\'}, this.options);\n+ },\n+ disable: function() {\n+ this.$el.prop(\'disabled\', true);\n+ },\n+ enable: function() {\n+ this.$el.prop(\'disabled\', false);\n+ }\n+ });\n+\n+ return AnchorView;\n+});\n+\n+\n+define(\'text!mockup-ui-url/templates/dropdown.xml\',[],function () { return \'\\n\\n \\n \\n\\n \\n \\n\\n\\n\';});\n+\n+define(\'mockup-ui-url/views/dropdown\',[\n+ \'jquery\',\n+ \'underscore\',\n+ \'mockup-ui-url/views/buttongroup\',\n+ \'text!mockup-ui-url/templates/dropdown.xml\',\n+], function($, _, ButtonGroup, DropdownTemplate) {\n+ \'use strict\';\n+\n+ var DropdownView = ButtonGroup.extend({\n+ idPrefix: \'btngroup-dropdown-\',\n+ template: DropdownTemplate,\n+ className: \'btn-group-dropdown\',\n+ itemContainer: "ul.dropdown-content",\n+ title: null,\n+\n+ initialize: function(options) {\n+ ButtonGroup.prototype.initialize.apply(this, [options]);\n+\n+ this.on(\'render\', function() {\n+ this.renderTitle();\n+ }, this);\n+ },\n+\n+ renderTitle: function() {\n+ var title = this.options.title;\n+ if(this.options.title === undefined) {\n+ title = this.title;\n+ if(this.title === null) {\n+ title = "Menu Option";\n+ }\n+ }\n+ this.$(\'.dropdown-title\').empty().append(title);\n+ },\n+\n+ renderItems: function() {\n+ var self = this;\n+ var $container;\n+\n+ if (this.itemContainer !== null) {\n+ $container = $(this.itemContainer, this.$el);\n+ if ($container.length === 0) {\n+ throw \'Item Container element not found.\';\n+ }\n+ } else {\n+ $container = this.$el;\n+ }\n+\n+ var $item = null;\n+ _.each(this.items, function(view) {\n+ $item = $("
  • ");\n+ $item.append(view.render().$el.removeClass("btn"));\n+ $container.append($item);\n+ }, this);\n+ },\n+\n+ });\n+\n+ return DropdownView;\n+});\n+\n /* Backdrop pattern.\n *\n * Options:\n@@ -29673,25 +30149,59 @@ define(\'mockup-ui-url/views/popover\',[\n return PopoverView;\n });\n \n+\n+define(\'text!mockup-patterns-filemanager-url/templates/popover.xml\',[],function () { return \'
    \\n
    \\n
    \\n
    \\n\\n \\n\\n
    \\n
    \\n
    \\n\\n\';});\n+\n define(\'mockup-patterns-filemanager-url/js/basepopover\',[\n+ \'jquery\',\n \'underscore\',\n- \'mockup-ui-url/views/popover\'\n-], function(_, PopoverView) {\n+ \'mockup-ui-url/views/popover\',\n+ \'text!mockup-patterns-filemanager-url/templates/popover.xml\',\n+], function($, _, PopoverView, PopoverTemplate) {\n \'use strict\';\n \n var FileManagerPopover = PopoverView.extend({\n className: \'popover\',\n title: _.template(\'nothing\'),\n content: _.template(\'
    \'),\n+ template: PopoverTemplate,\n initialize: function(options) {\n this.app = options.app;\n PopoverView.prototype.initialize.apply(this, [options]);\n },\n+ afterRender: function () {\n+ var self = this;\n+ self.$el.find(".popover-close").click(function(e){\n+ self.hide(true);\n+ });\n+ return self;\n+ },\n+ getBodyClassName: function(){\n+ var name = \'popover-\';\n+ if(this.options.id){\n+ name += this.options.id + \'-\';\n+ }\n+ name += \'active\';\n+ return name;\n+ },\n render: function() {\n var self = this;\n PopoverView.prototype.render.call(this);\n return self;\n },\n+ hide: function(closePopover) {\n+ if(this.closeOnOutClick || closePopover == true){\n+ this.opened = false;\n+ this.$el.removeClass(\'active\');\n+ if (this.triggerView) {\n+ this.triggerView.$el.removeClass(\'active\');\n+ this.triggerView.$el.attr(\'aria-hidden\', \'true\');\n+ }\n+ this.uiEventTrigger(\'hide\', this);\n+ this.$el.attr(\'aria-hidden\', \'true\');\n+ $(\'body\').removeClass(this.getBodyClassName());\n+ }\n+ },\n toggle: function(button, e) {\n PopoverView.prototype.toggle.apply(this, [button, e]);\n var self = this;\n@@ -29815,6 +30325,246 @@ define(\'mockup-patterns-filemanager-url/js/newfolder\',[\n return AddNewView;\n });\n \n+define(\'mockup-patterns-filemanager-url/js/findfile\',[\n+ \'jquery\',\n+ \'underscore\',\n+ \'mockup-patterns-filemanager-url/js/basepopover\',\n+ \'translate\'\n+], function($, _, PopoverView, _t) {\n+ \'use strict\';\n+\n+ var FindFile = PopoverView.extend({\n+ className: \'popover filesearch\',\n+ closeOnOutClick: false,\n+ backdropOptions: {\n+ zIndex: \'1009\',\n+ opacity: \'0.4\',\n+ className: \'backdrop backdrop-popover\',\n+ classActiveName: \'backdrop-active\',\n+ closeOnEsc: false,\n+ closeOnClick: false\n+ },\n+ title: _.template(\'<%= _t("Find File") %>\'),\n+ content: _.template(\n+ \'
    \' +\n+ \'
    \' +\n+ \'">\' +\n+ \'
    \' +\n+ \'
    \' +\n+ \'"/>\' +\n+ \'
    \' +\n+ \'

    \' +\n+ \'
      \' +\n+ \'
    \'\n+ ),\n+ appendToResults: function(item){\n+ var self = this;\n+ var $item = $(\n+ \'
  • \' +\n+ \'\' +\n+ _t(item.filename) + \'\' +\n+ \'
  • \');\n+ $(\'a\', $item).click(function(e) {\n+ e.preventDefault();\n+ self.findfile($(this).attr(\'data-target\'));\n+ });\n+ self.$results.append($item);\n+ },\n+ filterFiles: function(patt, data){\n+ var self = this;\n+ _.each(data, function(item) {\n+ if(item.folder){\n+ self.filterFiles(patt, item.children);\n+ }else{\n+ if(patt.test(item.filename)){\n+ self.appendToResults(item);\n+ self.noMatches++;\n+ }\n+ }\n+ });\n+ },\n+ render: function() {\n+ var self = this;\n+ PopoverView.prototype.render.call(this);\n+ self.$form = self.$(\'form\');\n+ self.$searchFor = self.$("input");\n+ self.$results = self.$(\'.results\');\n+ self.$form.submit(function(e) {\n+ e.preventDefault();\n+ $.ajax({\n+ url: self.app.options.actionUrl + \'?action=dataTree\',\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.$results.empty();\n+ self.noMatches = 0;\n+ var searchFor = self.$searchFor.val();\n+ var patt = new RegExp(searchFor, "g");\n+ self.filterFiles(patt, data);\n+ if(self.noMatches == 0){\n+ self.$results.append("No results found for " + searchFor + "");\n+ }\n+ }\n+ });\n+ });\n+ return self;\n+ },\n+ findfile: function(resource) {\n+ var self = this;\n+ self.app.doAction(\'getFile\', {\n+ data: {\n+ path: resource\n+ },\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.app.fileData[resource] = data;\n+ self.app.openEditor(resource);\n+ }\n+ });\n+ }\n+ });\n+\n+ return FindFile;\n+});\n+\n+define(\'mockup-patterns-filemanager-url/js/findinfiles\',[\n+ \'jquery\',\n+ \'underscore\',\n+ \'mockup-patterns-filemanager-url/js/basepopover\',\n+ \'translate\'\n+], function($, _, PopoverView, _t) {\n+ \'use strict\';\n+\n+ var FindInFiles = PopoverView.extend({\n+ className: \'popover filesearch\',\n+ closeOnOutClick: false,\n+ backdropOptions: {\n+ zIndex: \'1009\',\n+ opacity: \'0.4\',\n+ className: \'backdrop backdrop-popover\',\n+ classActiveName: \'backdrop-active\',\n+ closeOnEsc: false,\n+ closeOnClick: false\n+ },\n+ title: _.template(\'<%= _t("Find in File") %>\'),\n+ content: _.template(\n+ \'
    \' +\n+ \'
    \' +\n+ \'">\' +\n+ \'
    \' +\n+ \'
    \' +\n+ \'"/>\' +\n+ \'
    \' +\n+ \'

    \' +\n+ \'
      \' +\n+ \'
    \'\n+ ),\n+ appendToResults: function(item){\n+ var self = this, seen = null;\n+ var file_item =\n+ \'
  • \' +\n+ \'\' + _t(item.file.filename) + \'
  • \';\n+ var $item = $(file_item);\n+ $(\'a\', $item).click(function(e) {\n+ e.preventDefault();\n+ self.findinfiles(\n+ $(this).attr("data-target"),\n+ parseInt($(this).attr("target-line"))\n+ );\n+ });\n+ self.$results.append($item);\n+ },\n+\n+ filterFile: function(patt, item){\n+ var self = this;\n+ $.ajax({\n+ url: self.app.options.actionUrl + \'?action=getFile&path=\'+item.path.replace("/", "%2F"),\n+ dataType: \'json\',\n+ success: function(data) {\n+ var contents = data["contents"];\n+ if(contents == undefined){\n+ return;\n+ }\n+ var lines = contents.split("\\n");\n+ var seen = [], line = \'\';\n+ var result = null;\n+ for(var x in lines){\n+ line = lines[x];\n+ result = patt.exec(line);\n+ if(result != null){\n+ seen.push({\n+ "line": parseInt(x) + 1,\n+ "text": \'\'+result[0]+\'\'+line.substr(result["index"] + result[0].length, 20)\n+ });\n+ }\n+ }\n+ if(seen.length > 0){\n+ self.appendToResults({file: item, lines: seen});\n+ self.noMatches += seen.length;\n+ }\n+ }\n+ });\n+ },\n+ filterFiles: function(patt, data){\n+ var self = this;\n+ _.each(data, function(item) {\n+ if(item.folder){\n+ self.filterFiles(patt, item.children);\n+ }else{\n+ self.filterFile(patt, item);\n+ }\n+ });\n+ },\n+ render: function() {\n+ var self = this;\n+ PopoverView.prototype.render.call(this);\n+ self.$form = self.$(\'form\');\n+ self.$searchFor = self.$("input");\n+ self.$results = self.$(\'.results\');\n+ self.$form.submit(function(e) {\n+ e.preventDefault();\n+ $.ajax({\n+ url: self.app.options.actionUrl + \'?action=dataTree\',\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.$results.empty();\n+ self.noMatches = 0;\n+ var searchFor = self.$searchFor.val();\n+ var patt = new RegExp(searchFor, "g");\n+ self.filterFiles(patt, data);\n+ }\n+ });\n+ });\n+ return self;\n+ },\n+ findinfiles: function(resource, line) {\n+ var self = this;\n+ self.app.doAction(\'getFile\', {\n+ data: {\n+ path: resource\n+ },\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.app.fileData[resource] = data;\n+ self.app.openEditor(resource, {goToLine: line});\n+ }\n+ });\n+ }\n+ });\n+\n+ return FindInFiles;\n+});\n+\n define(\'mockup-patterns-filemanager-url/js/delete\',[\n \'underscore\',\n \'mockup-patterns-filemanager-url/js/basepopover\'\n@@ -34791,13 +35541,16 @@ define(\'text!mockup-patterns-relateditems-url/templates/breadcrumb.xml\',[],funct\n define(\'text!mockup-patterns-relateditems-url/templates/favorite.xml\',[],function () { return \'
  • <%- title %>
  • \\n\';});\n \n \n-define(\'text!mockup-patterns-relateditems-url/templates/result.xml\',[],function () { return \'\\n\';});\n+define(\'text!mockup-patterns-relateditems-url/templates/recentlyused.xml\',[],function () { return \'\\n\';});\n+\n \n+define(\'text!mockup-patterns-relateditems-url/templates/result.xml\',[],function () { return \'\\n\';});\n \n-define(\'text!mockup-patterns-relateditems-url/templates/selection.xml\',[],function () { return \'\\n <% if (typeof getURL !== \\\'undefined\\\' && ((typeof getIcon !== \\\'undefined\\\' && getIcon === true) || portal_type === "Image")) { %>
    <% } %>\\n <%- Title %>\\n <%- path %>\\n
    \\n\';});\n \n+define(\'text!mockup-patterns-relateditems-url/templates/selection.xml\',[],function () { return \'\\n <% if (getURL && (getIcon || portal_type === "Image")) { %>
    <% } %>\\n <%- Title %>\\n <%- path %>\\n
    \\n\';});\n \n-define(\'text!mockup-patterns-relateditems-url/templates/toolbar.xml\',[],function () { return \'<% if (mode!==\\\'auto\\\') { %>\\n
    \\n \\n \\n
    \\n<% } %>\\n
    \\n <%- searchText %>\\n \\n <%= items %>\\n
    \\n
    \\n <% if (favorites.length > 0) { %>\\n \\n <% } %>\\n
    \\n\';});\n+\n+define(\'text!mockup-patterns-relateditems-url/templates/toolbar.xml\',[],function () { return \'<% if (mode!==\\\'auto\\\') { %>\\n
    \\n \\n \\n
    \\n<% } %>\\n
    \\n <%- searchText %>\\n \\n <%= items %>\\n
    \\n
    \\n\\n <% if (recentlyUsedItems) { %>\\n \\n <% } %>\\n\\n <% if (favorites.length > 0) { %>\\n \\n <% } %>\\n
    \\n\';});\n \n (function(root) {\n define("bootstrap-dropdown", ["jquery"], function() {\n@@ -34988,11 +35741,15 @@ define("bootstrap-dropdown", ["jquery"], function() {\n * mode(string): Initial widget mode. Possible values: \'search\', \'browse\'. If set to \'search\', the catalog is searched for a searchterm. If set to \'browse\', browsing starts at basePath. Default: \'search\'.\n * orderable(boolean): Whether or not items should be drag-and-drop sortable. (true)\n * pageSize(int): Batch size to break down big result sets into multiple pages. (10).\n+ * recentlyUsed(boolen): Show the recently used items dropdown (false).\n+ * recentlyUsedMaxItems(integer): Maximum items to keep in recently used list. 0: no restriction. (20).\n * rootPath(string): Only display breadcrumb path elements deeper than this path. Default: "/"\n * rootUrl(string): Visible URL up to the rootPath. This is prepended to the currentPath to generate submission URLs.\n * scanSelection(boolean): Scan the list of selected elements for other patterns.\n * selectableTypes(array): If the value is null all types are selectable. Otherwise, provide a list of strings to match item types that are selectable. (null)\n * separator(string): Select2 option. String which separates multiple items. (\',\')\n+ * sortOn(string): Index on which to sort on. If null, will default to term relevance (no sort) when searching and folder order (getObjPositionInParent) when browsing. (null)\n+ * sortOrder(string): Sort ordering. (\'ascending\')\n * tokenSeparators(array): Select2 option, refer to select2 documentation. ([",", " "])\n * upload(boolen): Allow file and image uploads from within the related items widget.\n * uploadAllowView(string): View, which returns a JSON response in the form of {allowUpload: true}, if upload is allowed in the current context.\n@@ -35075,6 +35832,7 @@ define(\'mockup-patterns-relateditems\',[\n \'translate\',\n \'text!mockup-patterns-relateditems-url/templates/breadcrumb.xml\',\n \'text!mockup-patterns-relateditems-url/templates/favorite.xml\',\n+ \'text!mockup-patterns-relateditems-url/templates/recentlyused.xml\',\n \'text!mockup-patterns-relateditems-url/templates/result.xml\',\n \'text!mockup-patterns-relateditems-url/templates/selection.xml\',\n \'text!mockup-patterns-relateditems-url/templates/toolbar.xml\',\n@@ -35082,6 +35840,7 @@ define(\'mockup-patterns-relateditems\',[\n ], function($, _, Base, Select2, ButtonView, utils, registry, _t,\n BreadcrumbTemplate,\n FavoriteTemplate,\n+ RecentlyUsedTemplate,\n ResultTemplate,\n SelectionTemplate,\n ToolbarTemplate\n@@ -35093,6 +35852,7 @@ define(\'mockup-patterns-relateditems\',[\n trigger: \'.pat-relateditems\',\n parser: \'mockup\',\n currentPath: undefined,\n+ selectedUIDs: [],\n openAfterInit: undefined,\n defaults: {\n // main option\n@@ -35107,9 +35867,12 @@ define(\'mockup-patterns-relateditems\',[\n contextPath: undefined,\n dropdownCssClass: \'pattern-relateditems-dropdown\',\n favorites: [],\n+ recentlyUsed: false,\n+ recentlyUsedMaxItems: 20,\n+ recentlyUsedKey: \'relateditems_recentlyused\',\n maximumSelectionSize: -1,\n minimumInputLength: 0,\n- mode: \'auto\', // possible values are search and browse\n+ mode: \'auto\', // possible values are \'auto\', \'search\' and \'browse\'.\n orderable: true, // mockup-patterns-select2\n pathOperator: \'plone.app.querystring.operation.string.path\',\n rootPath: \'/\',\n@@ -35117,6 +35880,8 @@ define(\'mockup-patterns-relateditems\',[\n scanSelection: false, // False, to no unnecessarily use CPU time on this.\n selectableTypes: null, // null means everything is selectable, otherwise a list of strings to match types that are selectable\n separator: \',\',\n+ sortOn: null,\n+ sortOrder: \'ascending\',\n tokenSeparators: [\',\', \' \'],\n upload: false,\n uploadAllowView: undefined,\n@@ -35127,6 +35892,8 @@ define(\'mockup-patterns-relateditems\',[\n breadcrumbTemplateSelector: null,\n favoriteTemplate: FavoriteTemplate,\n favoriteTemplateSelector: null,\n+ recentlyusedTemplate: RecentlyUsedTemplate,\n+ recentlyusedTemplateSelector: null,\n resultTemplate: ResultTemplate,\n resultTemplateSelector: null,\n selectionTemplate: SelectionTemplate,\n@@ -35139,6 +35906,26 @@ define(\'mockup-patterns-relateditems\',[\n \n },\n \n+ recentlyUsed: function (filterSelectable) {\n+ var ret = utils.storage.get(this.options.recentlyUsedKey) || [];\n+ // hard-limit to 1000 entries\n+ ret = ret.slice(ret.length-1000, ret.length);\n+ if (filterSelectable) {\n+ // Filter out only selectable items.\n+ // This is used only to create the list of items to be displayed.\n+ // the list to be stored is unfiltered and can be reused among\n+ // different instances of this widget with different settings.\n+ ret.filter(this.isSelectable.bind(this));\n+ }\n+ // max is applied AFTER filtering selectable items.\n+ var max = parseInt(this.options.recentlyUsedMaxItems, 10);\n+ if (max) {\n+ // return the slice from the end, as we want to display newest items first.\n+ ret = ret.slice(ret.length-max, ret.length);\n+ }\n+ return ret;\n+ },\n+\n applyTemplate: function(tpl, item) {\n var self = this;\n var template;\n@@ -35151,18 +35938,20 @@ define(\'mockup-patterns-relateditems\',[\n template = self.options[tpl + \'Template\'];\n }\n // let\'s give all the options possible to the template generation\n- var options = $.extend(true, {}, self.options, item, {\'browsing\': self.browsing});\n+ var options = $.extend(true, {}, self.options, item, {\n+ \'browsing\': self.browsing,\n+ \'open_folder\': _t(\'Open folder\')\n+ });\n options._item = item;\n return _.template(template)(options);\n },\n \n setAjax: function () {\n-\n var ajax = {\n \n url: this.options.vocabularyUrl,\n dataType: \'JSON\',\n- quietMillis: 100,\n+ quietMillis: 500,\n \n data: function (term, page) {\n \n@@ -35191,11 +35980,18 @@ define(\'mockup-patterns-relateditems\',[\n v: this.options.rootPath + this.currentPath + (this.browsing ? \'::1\' : \'\')\n });\n \n+ var sort_on = this.options.sortOn;\n+ var sort_order = sort_on ? this.options.sortOrder : null;\n+ if (this.browsing && sort_on === null) {\n+ sort_on = \'getObjPositionInParent\';\n+ sort_order = \'ascending\';\n+ }\n+\n var data = {\n query: JSON.stringify({\n criteria: criterias,\n- sort_on: \'path\',\n- sort_order: \'ascending\'\n+ sort_on: sort_on,\n+ sort_order: sort_order\n }),\n attributes: JSON.stringify(this.options.attributes),\n batch: JSON.stringify({\n@@ -35211,17 +36007,25 @@ define(\'mockup-patterns-relateditems\',[\n var more = (page * this.options.pageSize) < data.total;\n var results = data.results;\n \n- // Filter out non-selectable and non-folderish while browsing.\n- if (this.browsing) {\n- results = results.filter(\n- function (item) {\n- if (!item.is_folderish && !this.isSelectable(item)) {\n- return false;\n- }\n+ this.selectedUIDs = (this.$el.select2(\'data\') || []).map(function (el) {\n+ // populate current selection. Reuse in formatResult\n+ return el.UID;\n+ });\n+\n+ // Filter out items:\n+ // While browsing: always include folderish items\n+ // Browsing and searching: Only include selectable items, which are not already selected.\n+ results = results.filter(\n+ function (item) {\n+ if (\n+ (this.browsing && item.is_folderish) ||\n+ (this.isSelectable(item) && this.selectedUIDs.indexOf(item.UID) == -1)\n+ ) {\n return true;\n- }.bind(this)\n- );\n- }\n+ }\n+ return false;\n+ }.bind(this)\n+ );\n \n // Extend ``data`` with a ``oneLevelUp`` item when browsing\n var path = this.currentPath.split(\'/\');\n@@ -35232,9 +36036,8 @@ define(\'mockup-patterns-relateditems\',[\n ) {\n results = [{\n \'oneLevelUp\': true,\n- \'Title\': _(\'One level up\'),\n+ \'Title\': _t(\'One level up\'),\n \'path\': path.slice(0, path.length - 1).join(\'/\') || \'/\',\n- \'portal_type\': \'Folder\',\n \'is_folderish\': true,\n \'selectable\': false\n }].concat(results);\n@@ -35246,13 +36049,10 @@ define(\'mockup-patterns-relateditems\',[\n }.bind(this)\n \n };\n-\n this.options.ajax = ajax;\n- this.$el.select2(this.options);\n-\n },\n \n- setBreadCrumbs: function () {\n+ renderToolbar: function () {\n var self = this;\n var path = self.currentPath;\n var html;\n@@ -35277,6 +36077,14 @@ define(\'mockup-patterns-relateditems\',[\n favoritesHtml = favoritesHtml + self.applyTemplate(\'favorite\', item_copy);\n });\n \n+ var recentlyUsedHtml = \'\';\n+ if (self.options.recentlyUsed) {\n+ var recentlyUsed = self.recentlyUsed(true); // filter out only those items which can actually be selected\n+ _.each(recentlyUsed.reverse(), function (item) { // reverse to get newest first.\n+ recentlyUsedHtml = recentlyUsedHtml + self.applyTemplate(\'recentlyused\', item);\n+ });\n+ }\n+\n html = self.applyTemplate(\'toolbar\', {\n items: itemsHtml,\n favItems: favoritesHtml,\n@@ -35284,6 +36092,8 @@ define(\'mockup-patterns-relateditems\',[\n searchText: _t(\'Current path:\'),\n searchModeText: _t(\'Search\'),\n browseModeText: _t(\'Browse\'),\n+ recentlyUsedItems: recentlyUsedHtml,\n+ recentlyUsedText: _t(\'Recently Used\'),\n });\n \n self.$toolbar.html(html);\n@@ -35342,6 +36152,26 @@ define(\'mockup-patterns-relateditems\',[\n self.browseTo($(this).attr(\'href\'));\n });\n \n+ if (self.options.recentlyUsed) {\n+ $(\'.pattern-relateditems-recentlyused-select\', self.$toolbar).on(\'click\', function(event) {\n+ event.preventDefault();\n+ var uid = $(this).data(\'uid\');\n+ var item = self.recentlyUsed().filter(function (it) { return it.UID === uid; });\n+ if (item.length > 0) {\n+ item = item[0];\n+ } else {\n+ return;\n+ }\n+ self.selectItem(item);\n+ if (self.options.maximumSelectionSize > 0) {\n+ var items = self.$el.select2(\'data\');\n+ if (items.length >= self.options.maximumSelectionSize) {\n+ return;\n+ }\n+ }\n+ });\n+ }\n+\n function initUploadView(UploadView, disabled) {\n var uploadButtonId = \'upload-\' + utils.generateId();\n var uploadButton = new ButtonView({\n@@ -35394,7 +36224,7 @@ define(\'mockup-patterns-relateditems\',[\n self.emit(\'before-browse\');\n self.currentPath = path;\n self.$el.select2(\'close\');\n- self.setBreadCrumbs();\n+ self.renderToolbar();\n self.$el.select2(\'open\');\n self.emit(\'after-browse\');\n },\n@@ -35405,6 +36235,18 @@ define(\'mockup-patterns-relateditems\',[\n var data = self.$el.select2(\'data\');\n data.push(item);\n self.$el.select2(\'data\', data, true);\n+\n+ if (self.options.recentlyUsed) {\n+ // add to recently added items\n+ var recentlyUsed = self.recentlyUsed(); // do not filter for selectable but get all. append to that list the new item.\n+ var alreadyPresent = recentlyUsed.filter(function (it) { return it.UID === item.UID; });\n+ if (alreadyPresent.length > 0) {\n+ recentlyUsed.splice(recentlyUsed.indexOf(alreadyPresent[0]), 1);\n+ }\n+ recentlyUsed.push(item);\n+ utils.storage.set(self.options.recentlyUsedKey, recentlyUsed);\n+ }\n+\n self.emit(\'selected\');\n },\n \n@@ -35426,9 +36268,6 @@ define(\'mockup-patterns-relateditems\',[\n if (item.selectable === false) {\n return false;\n }\n- if (self.options.contextPath === this.options.rootPath + item.path) {\n- return false;\n- }\n if (self.options.selectableTypes === null) {\n return true;\n } else {\n@@ -35456,11 +36295,31 @@ define(\'mockup-patterns-relateditems\',[\n Select2.prototype.initializeTags.call(self);\n \n self.options.formatSelection = function(item) {\n+\n+ item = $.extend(true, {\n+ \'Title\': \'\',\n+ \'getIcon\': \'\',\n+ \'getURL\': \'\',\n+ \'path\': \'\',\n+ \'portal_type\': \'\',\n+ \'review_state\': \'\'\n+ }, item);\n+\n // activate petterns on the result set.\n var $selection = $(self.applyTemplate(\'selection\', item));\n if (self.options.scanSelection) {\n registry.scan($selection);\n }\n+ if (self.options.maximumSelectionSize == 1){\n+ // If this related field accepts only 1 item, the breadcrumbs should\n+ // reflect the location for this particular item\n+ var itemPath = item.path;\n+ var path_split = itemPath.split(\'/\');\n+ path_split = path_split.slice(0,-1); // Remove last part of path, we always want the parent path\n+ itemPath = path_split.join(\'/\');\n+ self.currentPath = itemPath;\n+ self.renderToolbar();\n+ }\n return $selection;\n };\n \n@@ -35468,14 +36327,24 @@ define(\'mockup-patterns-relateditems\',[\n \n self.options.formatResult = function(item) {\n item.selectable = self.isSelectable(item);\n- var data = self.$el.select2(\'data\');\n \n- for (var i = 0; i < data.length; i = i + 1) {\n- if (data[i].UID === item.UID) {\n- // Exclude already selected items in result list.\n- return;\n- }\n+ item = $.extend(true, {\n+ \'Title\': \'\',\n+ \'getIcon\': \'\',\n+ \'getURL\': \'\',\n+ \'is_folderish\': false,\n+ \'oneLevelUp\': false,\n+ \'path\': \'\',\n+ \'portal_type\': \'\',\n+ \'review_state\': \'\',\n+ \'selectable\': false,\n+ }, item);\n+\n+ if (self.selectedUIDs.indexOf(item.UID) != -1) {\n+ // do not allow already selected items to be selected again.\n+ item.selectable = false;\n }\n+\n var result = $(self.applyTemplate(\'result\', item));\n \n $(\'.pattern-relateditems-result-select\', result).on(\'click\', function(event) {\n@@ -35486,14 +36355,14 @@ define(\'mockup-patterns-relateditems\',[\n $parent.removeClass(\'pattern-relateditems-active\');\n self.deselectItem(item);\n } else {\n- self.selectItem(item);\n- $parent.addClass(\'pattern-relateditems-active\');\n if (self.options.maximumSelectionSize > 0) {\n var items = self.$el.select2(\'data\');\n if (items.length >= self.options.maximumSelectionSize) {\n self.$el.select2(\'close\');\n }\n }\n+ self.selectItem(item);\n+ $parent.addClass(\'pattern-relateditems-active\');\n if (self.options.closeOnSelect) {\n self.$el.select2(\'close\');\n }\n@@ -35527,15 +36396,23 @@ define(\'mockup-patterns-relateditems\',[\n prev[item.UID] = item;\n return prev;\n }, {});\n- callback(\n- ids\n- .map(function(uid) {\n- return results[uid];\n- })\n- .filter(function(item) {\n- return item !== undefined;\n- })\n- );\n+\n+ try {\n+ callback(\n+ ids\n+ .map(function(uid) {\n+ return results[uid];\n+ })\n+ .filter(function(item) {\n+ return item !== undefined;\n+ })\n+ );\n+ } catch (e) {\n+ // Select2 3.5.4 throws an error in some cases in\n+ // updateSelection, ``this.selection.find(".select2-search-choice").remove();``\n+ // No idea why, hard to track.\n+ console.log(data);\n+ }\n \n if (self.openAfterInit) {\n // open after initialization\n@@ -35573,7 +36450,7 @@ define(\'mockup-patterns-relateditems\',[\n event.preventDefault();\n });\n \n- self.setBreadCrumbs();\n+ self.renderToolbar();\n \n }\n });\n@@ -37420,9 +38297,9 @@ define(\'mockup-patterns-upload\',[\n \'dropzone\',\n \'text!mockup-patterns-upload-url/templates/upload.xml\',\n \'text!mockup-patterns-upload-url/templates/preview.xml\',\n+ \'mockup-utils\',\n \'translate\'\n-], function($, _, Base, RelatedItems, Dropzone,\n- UploadTemplate, PreviewTemplate, _t) {\n+], function($, _, Base, RelatedItems, Dropzone, UploadTemplate, PreviewTemplate, utils, _t) {\n \'use strict\';\n \n /* we do not want this plugin to auto discover */\n@@ -37713,6 +38590,10 @@ define(\'mockup-patterns-upload\',[\n var options = $.extend({}, self.options);\n options.url = self.getUrl();\n \n+ options.headers = {\n+ \'X-CSRF-TOKEN\': utils.getAuthenticator()\n+ };\n+\n // XXX force to only upload one to the server at a time,\n // right now we don\'t support multiple for backends\n options.uploadMultiple = false;\n@@ -37814,7 +38695,8 @@ define(\'mockup-patterns-upload\',[\n window.tus.upload(file, {\n endpoint: self.dropzone.options.url,\n headers: {\n- \'FILENAME\': file.name\n+ \'FILENAME\': file.name,\n+ \'X-CSRF-TOKEN\': utils.getAuthenticator()\n },\n chunkSize: chunkSize\n }).fail(function() {\n@@ -37923,6 +38805,238 @@ define(\'mockup-patterns-filemanager-url/js/upload\',[\n return UploadView;\n });\n \n+(function(root) {\n+define("js-shortcuts", ["jquery"], function() {\n+ return (function() {\n+/**\n+ * http://www.openjs.com/scripts/events/keyboard_shortcuts/\n+ * Version : 2.01.B\n+ * By Binny V A\n+ * License : BSD\n+ */\n+shortcut = {\n+\t\'all_shortcuts\':{},//All the shortcuts are stored in this array\n+\t\'add\': function(shortcut_combination,callback,opt) {\n+\t\t//Provide a set of default options\n+\t\tvar default_options = {\n+\t\t\t\'type\':\'keydown\',\n+\t\t\t\'propagate\':false,\n+\t\t\t\'disable_in_input\':false,\n+\t\t\t\'target\':document,\n+\t\t\t\'keycode\':false\n+\t\t}\n+\t\tif(!opt) opt = default_options;\n+\t\telse {\n+\t\t\tfor(var dfo in default_options) {\n+\t\t\t\tif(typeof opt[dfo] == \'undefined\') opt[dfo] = default_options[dfo];\n+\t\t\t}\n+\t\t}\n+\n+\t\tvar ele = opt.target;\n+\t\tif(typeof opt.target == \'string\') ele = document.getElementById(opt.target);\n+\t\tvar ths = this;\n+\t\tshortcut_combination = shortcut_combination.toLowerCase();\n+\n+\t\t//The function to be called at keypress\n+\t\tvar func = function(e) {\n+\t\t\te = e || window.event;\n+\t\t\t\n+\t\t\tif(opt[\'disable_in_input\']) { //Don\'t enable shortcut keys in Input, Textarea fields\n+\t\t\t\tvar element;\n+\t\t\t\tif(e.target) element=e.target;\n+\t\t\t\telse if(e.srcElement) element=e.srcElement;\n+\t\t\t\tif(element.nodeType==3) element=element.parentNode;\n+\n+\t\t\t\tif(element.tagName == \'INPUT\' || element.tagName == \'TEXTAREA\') return;\n+\t\t\t}\n+\t\n+\t\t\t//Find Which key is pressed\n+\t\t\tif (e.keyCode) code = e.keyCode;\n+\t\t\telse if (e.which) code = e.which;\n+\t\t\tvar character = String.fromCharCode(code).toLowerCase();\n+\t\t\t\n+\t\t\tif(code == 188) character=","; //If the user presses , when the type is onkeydown\n+\t\t\tif(code == 190) character="."; //If the user presses , when the type is onkeydown\n+\n+\t\t\tvar keys = shortcut_combination.split("+");\n+\t\t\t//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked\n+\t\t\tvar kp = 0;\n+\t\t\t\n+\t\t\t//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken\n+\t\t\tvar shift_nums = {\n+\t\t\t\t"`":"~",\n+\t\t\t\t"1":"!",\n+\t\t\t\t"2":"@",\n+\t\t\t\t"3":"#",\n+\t\t\t\t"4":"$",\n+\t\t\t\t"5":"%",\n+\t\t\t\t"6":"^",\n+\t\t\t\t"7":"&",\n+\t\t\t\t"8":"*",\n+\t\t\t\t"9":"(",\n+\t\t\t\t"0":")",\n+\t\t\t\t"-":"_",\n+\t\t\t\t"=":"+",\n+\t\t\t\t";":":",\n+\t\t\t\t"\'":"\\"",\n+\t\t\t\t",":"<",\n+\t\t\t\t".":">",\n+\t\t\t\t"/":"?",\n+\t\t\t\t"\\\\":"|"\n+\t\t\t}\n+\t\t\t//Special Keys - and their codes\n+\t\t\tvar special_keys = {\n+\t\t\t\t\'esc\':27,\n+\t\t\t\t\'escape\':27,\n+\t\t\t\t\'tab\':9,\n+\t\t\t\t\'space\':32,\n+\t\t\t\t\'return\':13,\n+\t\t\t\t\'enter\':13,\n+\t\t\t\t\'backspace\':8,\n+\t\n+\t\t\t\t\'scrolllock\':145,\n+\t\t\t\t\'scroll_lock\':145,\n+\t\t\t\t\'scroll\':145,\n+\t\t\t\t\'capslock\':20,\n+\t\t\t\t\'caps_lock\':20,\n+\t\t\t\t\'caps\':20,\n+\t\t\t\t\'numlock\':144,\n+\t\t\t\t\'num_lock\':144,\n+\t\t\t\t\'num\':144,\n+\t\t\t\t\n+\t\t\t\t\'pause\':19,\n+\t\t\t\t\'break\':19,\n+\t\t\t\t\n+\t\t\t\t\'insert\':45,\n+\t\t\t\t\'home\':36,\n+\t\t\t\t\'delete\':46,\n+\t\t\t\t\'end\':35,\n+\t\t\t\t\n+\t\t\t\t\'pageup\':33,\n+\t\t\t\t\'page_up\':33,\n+\t\t\t\t\'pu\':33,\n+\t\n+\t\t\t\t\'pagedown\':34,\n+\t\t\t\t\'page_down\':34,\n+\t\t\t\t\'pd\':34,\n+\t\n+\t\t\t\t\'left\':37,\n+\t\t\t\t\'up\':38,\n+\t\t\t\t\'right\':39,\n+\t\t\t\t\'down\':40,\n+\t\n+\t\t\t\t\'f1\':112,\n+\t\t\t\t\'f2\':113,\n+\t\t\t\t\'f3\':114,\n+\t\t\t\t\'f4\':115,\n+\t\t\t\t\'f5\':116,\n+\t\t\t\t\'f6\':117,\n+\t\t\t\t\'f7\':118,\n+\t\t\t\t\'f8\':119,\n+\t\t\t\t\'f9\':120,\n+\t\t\t\t\'f10\':121,\n+\t\t\t\t\'f11\':122,\n+\t\t\t\t\'f12\':123\n+\t\t\t}\n+\t\n+\t\t\tvar modifiers = { \n+\t\t\t\tshift: { wanted:false, pressed:false},\n+\t\t\t\tctrl : { wanted:false, pressed:false},\n+\t\t\t\talt : { wanted:false, pressed:false},\n+\t\t\t\tmeta : { wanted:false, pressed:false}\t//Meta is Mac specific\n+\t\t\t};\n+ \n+\t\t\tif(e.ctrlKey)\tmodifiers.ctrl.pressed = true;\n+\t\t\tif(e.shiftKey)\tmodifiers.shift.pressed = true;\n+\t\t\tif(e.altKey)\tmodifiers.alt.pressed = true;\n+\t\t\tif(e.metaKey) modifiers.meta.pressed = true;\n+ \n+\t\t\tfor(var i=0; k=keys[i],i 1) { //If it is a special key\n+\t\t\t\t\tif(special_keys[k] == code) kp++;\n+\t\t\t\t\t\n+\t\t\t\t} else if(opt[\'keycode\']) {\n+\t\t\t\t\tif(opt[\'keycode\'] == code) kp++;\n+\n+\t\t\t\t} else { //The special keys did not match\n+\t\t\t\t\tif(character == k) kp++;\n+\t\t\t\t\telse {\n+\t\t\t\t\t\tif(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase\n+\t\t\t\t\t\t\tcharacter = shift_nums[character]; \n+\t\t\t\t\t\t\tif(character == k) kp++;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t\n+\t\t\tif(kp == keys.length && \n+\t\t\t\t\t\tmodifiers.ctrl.pressed == modifiers.ctrl.wanted &&\n+\t\t\t\t\t\tmodifiers.shift.pressed == modifiers.shift.wanted &&\n+\t\t\t\t\t\tmodifiers.alt.pressed == modifiers.alt.wanted &&\n+\t\t\t\t\t\tmodifiers.meta.pressed == modifiers.meta.wanted) {\n+\t\t\t\tcallback(e);\n+\t\n+\t\t\t\tif(!opt[\'propagate\']) { //Stop the event\n+\t\t\t\t\t//e.cancelBubble is supported by IE - this will kill the bubbling process.\n+\t\t\t\t\te.cancelBubble = true;\n+\t\t\t\t\te.returnValue = false;\n+\t\n+\t\t\t\t\t//e.stopPropagation works in Firefox.\n+\t\t\t\t\tif (e.stopPropagation) {\n+\t\t\t\t\t\te.stopPropagation();\n+\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t}\n+\t\t\t\t\treturn false;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\tthis.all_shortcuts[shortcut_combination] = {\n+\t\t\t\'callback\':func, \n+\t\t\t\'target\':ele, \n+\t\t\t\'event\': opt[\'type\']\n+\t\t};\n+\t\t//Attach the function with the event\n+\t\tif(ele.addEventListener) ele.addEventListener(opt[\'type\'], func, false);\n+\t\telse if(ele.attachEvent) ele.attachEvent(\'on\'+opt[\'type\'], func);\n+\t\telse ele[\'on\'+opt[\'type\']] = func;\n+\t},\n+\n+\t//Remove the shortcut - just specify the shortcut and I will remove the binding\n+\t\'remove\':function(shortcut_combination) {\n+\t\tshortcut_combination = shortcut_combination.toLowerCase();\n+\t\tvar binding = this.all_shortcuts[shortcut_combination];\n+\t\tdelete(this.all_shortcuts[shortcut_combination])\n+\t\tif(!binding) return;\n+\t\tvar type = binding[\'event\'];\n+\t\tvar ele = binding[\'target\'];\n+\t\tvar callback = binding[\'callback\'];\n+\n+\t\tif(ele.detachEvent) ele.detachEvent(\'on\'+type, callback);\n+\t\telse if(ele.removeEventListener) ele.removeEventListener(type, callback, false);\n+\t\telse ele[\'on\'+type] = false;\n+\t}\n+}\n+;\n+\n+ }).apply(root, arguments);\n+});\n+}(this));\n+\n /* Filemanager pattern.\n *\n * Options:\n@@ -37959,24 +39073,32 @@ define(\'mockup-patterns-filemanager\',[\n \'jquery\',\n \'pat-base\',\n \'underscore\',\n+ \'jqtree-contextmenu\',\n \'mockup-patterns-tree\',\n \'mockup-patterns-texteditor\',\n \'text!mockup-patterns-filemanager-url/templates/app.xml\',\n \'mockup-ui-url/views/toolbar\',\n \'mockup-ui-url/views/button\',\n \'mockup-ui-url/views/buttongroup\',\n+ \'mockup-ui-url/views/anchor\',\n+ \'mockup-ui-url/views/dropdown\',\n \'mockup-patterns-filemanager-url/js/addnew\',\n \'mockup-patterns-filemanager-url/js/newfolder\',\n+ \'mockup-patterns-filemanager-url/js/findfile\',\n+ \'mockup-patterns-filemanager-url/js/findinfiles\',\n \'mockup-patterns-filemanager-url/js/delete\',\n \'mockup-patterns-filemanager-url/js/customize\',\n \'mockup-patterns-filemanager-url/js/rename\',\n \'mockup-patterns-filemanager-url/js/upload\',\n \'translate\',\n \'mockup-utils\',\n- \'text!mockup-ui-url/templates/popover.xml\'\n-], function($, Base, _, Tree, TextEditor, AppTemplate, Toolbar,\n- ButtonView, ButtonGroup, AddNewView, NewFolderView, DeleteView,\n- CustomizeView, RenameView, UploadView, _t, utils) {\n+ \'js-shortcuts\',\n+ \'text!mockup-ui-url/templates/popover.xml\',\n+ \'text!mockup-ui-url/templates/dropdown.xml\'\n+], function($, Base, _, ContextMenu, Tree, TextEditor, AppTemplate, Toolbar,\n+ ButtonView, ButtonGroup, AnchorView, DropdownView,\n+ AddNewView, NewFolderView, FindFileView, FindInFilesView, DeleteView,\n+ CustomizeView, RenameView, UploadView, _t, utils, jsShortcuts) {\n \'use strict\';\n \n var FileManager = Base.extend({\n@@ -38014,13 +39136,21 @@ define(\'mockup-patterns-filemanager\',[\n \n self.options.treeConfig = $.extend(true, {}, self.treeConfig, {\n dataUrl: self.options.actionUrl + \'?action=dataTree\',\n+ dragAndDrop: true,\n+ useContextMenu: true,\n+ onCanMoveTo: function(moved, target, position) {\n+ /* if not using folder option, just allow, otherwise, only allow if folder */\n+ if (position === "inside") {\n+ return target.folder === undefined || target.folder === true;\n+ }\n+ return true;\n+ },\n onCreateLi: function(node, li) {\n var imageTypes = [\'png\', \'jpg\', \'jpeg\', \'gif\', \'ico\'];\n var themeTypes = [\'css\', \'html\', \'htm\', \'txt\', \'xml\', \'js\', \'cfg\', \'less\'];\n-\n $(\'span\', li).addClass(\'glyphicon\');\n if (node.folder) {\n- $(\'span\', li).addClass(\'glyphicon-folder-close\');\n+ $(\'span\', li).addClass(\'glyphicon-folder-close\').addClass("droptarget");\n } else if ($.inArray(node.fileType, imageTypes) >= 0) {\n $(\'span\', li).addClass(\'glyphicon-picture\');\n } else if ($.inArray(node.fileType, themeTypes) >= 0) {\n@@ -38037,73 +39167,150 @@ define(\'mockup-patterns-filemanager\',[\n id: \'save\',\n title: _t(\'Save\'),\n icon: \'floppy-disk\',\n- context: \'primary\'\n+ context: \'primary\',\n+ shortcut: \'Ctrl-S\'\n });\n-\n- var newFolderView = new NewFolderView({\n- triggerView: new ButtonView({\n+ self.btns = {\n+ "newfolder": new AnchorView({\n id: \'newfolder\',\n title: _t(\'New folder\'),\n tooltip: _t(\'Add new folder to current directory\'),\n icon: \'folder-open\',\n- context: \'default\'\n+ context: \'default\',\n+ shortcut: \'Alt-Shift-N\'\n }),\n- app: self\n- });\n- var addNewView = new AddNewView({\n- triggerView: new ButtonView({\n+ "newfile": new AnchorView({\n id: \'addnew\',\n- title: _t(\'Add new file\'),\n+ title: _t(\'New file\'),\n tooltip: _t(\'Add new file to current folder\'),\n icon: \'file\',\n- context: \'default\'\n+ context: \'default\',\n+ shortcut: \'Alt-N\'\n }),\n- app: self\n- });\n- var renameView = new RenameView({\n- triggerView: new ButtonView({\n+ "findfile": new AnchorView({\n+ id: \'findfile\',\n+ title: _t(\'Find File\'),\n+ tooltip: _t(\'Find theme resource in plone\'),\n+ icon: \'search\',\n+ context: \'default\',\n+ shortcut: \'Ctrl-F\'\n+ }),\n+ "findtextinfile": new AnchorView({\n+ id: \'findinfiles\',\n+ title: _t(\'Find in Files\'),\n+ tooltip: _t(\'Find text within theme resource in plone\'),\n+ icon: \'search\',\n+ context: \'default\',\n+ shortcut: \'Ctrl-E\'\n+ }),\n+ "rename": new AnchorView({\n id: \'rename\',\n title: _t(\'Rename\'),\n tooltip: _t(\'Rename currently selected resource\'),\n icon: \'random\',\n context: \'default\'\n }),\n- app: self\n- });\n- var deleteView = new DeleteView({\n- triggerView: new ButtonView({\n+ "delete": new AnchorView({\n id: \'delete\',\n title: _t(\'Delete\'),\n tooltip: _t(\'Delete currently selected resource\'),\n icon: \'trash\',\n context: \'danger\'\n }),\n+ };\n+\n+ var newFolderView = new NewFolderView({\n+ triggerView: self.btns["newfolder"],\n+ app: self\n+ });\n+ var addNewView = new AddNewView({\n+ triggerView: self.btns["newfile"],\n+ app: self\n+ });\n+ var findFileView = new FindFileView({\n+ triggerView: self.btns["findfile"],\n+ app: self\n+ });\n+ var findinFilesView = new FindInFilesView({\n+ triggerView: self.btns["findtextinfile"],\n+ app: self\n+ });\n+ var renameView = new RenameView({\n+ triggerView: self.btns["rename"],\n+ app: self\n+ });\n+ var deleteView = new DeleteView({\n+ triggerView: self.btns["delete"],\n app: self\n });\n \n- self.views = [\n- newFolderView,\n- addNewView,\n- renameView,\n- deleteView\n- ];\n+ var file_menu = new DropdownView({\n+ title: _t(\'File\'),\n+ items: [\n+ addNewView.triggerView,\n+ newFolderView.triggerView\n+ ],\n+ id: \'file_menu\',\n+ app: self,\n+ icon: \'file\',\n+ disable: function() {}\n+ });\n+\n+ var edit_menu = new DropdownView({\n+ title: _t(\'Edit\'),\n+ items: [\n+ renameView.triggerView,\n+ deleteView.triggerView\n+ ],\n+ id: \'edit_menu\',\n+ app: self,\n+ icon: \'file\',\n+ disable: function() {}\n+ });\n+\n+ var find_menu = new DropdownView({\n+ title: _t(\'Find\'),\n+ items: [\n+ findFileView.triggerView,\n+ findinFilesView.triggerView\n+ ],\n+ id: \'find_menu\',\n+ icon: \'search\',\n+ app: self,\n+ disable: function() {}\n+ });\n+\n+ var views = {\n+ "file_menu": [\n+ newFolderView,\n+ addNewView\n+ ],\n+ "edit_menu": [\n+ renameView,\n+ deleteView,\n+ ],\n+ "find_menu": [\n+ findFileView,\n+ findinFilesView\n+ ],\n+ };\n var mainButtons = [\n self.saveBtn,\n- newFolderView.triggerView,\n- addNewView.triggerView,\n- renameView.triggerView,\n- deleteView.triggerView\n+ file_menu,\n+ edit_menu,\n+ find_menu,\n ];\n \n if (self.options.uploadUrl && utils.featureSupport.dragAndDrop() && utils.featureSupport.fileApi()) {\n- var uploadView = new UploadView({\n- triggerView: new ButtonView({\n+ self.btns["upload"] = new AnchorView({\n id: \'upload\',\n- title: _t(\'Upload\'),\n+ title: _t(\'Upload Local Files...\'),\n tooltip: _t(\'Upload file to current directory\'),\n icon: \'upload\',\n context: \'default\'\n- }),\n+ });\n+ var uploadView = new UploadView({\n+ triggerView: self.btns["upload"],\n app: self,\n callback: function(data) {\n var path = self.uploadFolder + \'/\' + data.name;\n@@ -38114,22 +39321,26 @@ define(\'mockup-patterns-filemanager\',[\n \n }\n });\n- self.views.push(uploadView);\n- mainButtons.push(uploadView.triggerView);\n+ \n+ views.file_menu.push(uploadView);\n+ file_menu.items.push(uploadView.triggerView);\n }\n if (self.options.resourceSearchUrl) {\n+ self.btns["customize"] = new AnchorView({\n+ id: \'customize\',\n+ title: _t(\'Add new override\'),\n+ tooltip: _t(\'Find resource in plone to override\'),\n+ context: \'default\'\n+ });\n var customizeView = new CustomizeView({\n- triggerView: new ButtonView({\n- id: \'customize\',\n- title: _t(\'Add new override\'),\n- tooltip: _t(\'Find resource in plone to override\'),\n- context: \'default\'\n- }),\n+ triggerView: self.btns["customize"],\n app: self\n });\n- self.views.push(customizeView);\n- mainButtons.push(customizeView.triggerView);\n+ views["edit_menu"].push(customizeView);\n+ edit_menu.items.push(customizeView.triggerView);\n }\n+ self.views = [];\n+ self.views = self.views.concat(views.file_menu).concat(views.edit_menu).concat(views.find_menu);\n \n self.toolbar = new Toolbar({\n items: [\n@@ -38168,7 +39379,29 @@ define(\'mockup-patterns-filemanager\',[\n self._save();\n });\n self.render();\n+ self.shortcuts();\n+ \n },\n+ \n+ shortcuts: function(){\n+ var self = this;\n+ shortcut.add("Alt+N", function () {\n+ self.btns.newfile.$el.click();\n+ });\n+ shortcut.add("Alt+Shift+N", function () {\n+ self.btns.newfolder.$el.click();\n+ });\n+ shortcut.add("Ctrl+S", function () {\n+ self.saveBtn.$el.click();\n+ });\n+ shortcut.add("Ctrl+F", function () {\n+ self.btns.findfile.$el.click();\n+ });\n+ shortcut.add("Ctrl+E", function () {\n+ self.btns.findtextinfile.$el.click();\n+ });\n+ },\n+ \n $: function(selector) {\n return this.$el.find(selector);\n },\n@@ -38215,6 +39448,19 @@ define(\'mockup-patterns-filemanager\',[\n }\n });\n \n+ // bind \'tree.contextmenu\' event\n+ self.$tree.jqTreeContextMenu({\n+ menu: \'#contextual-menu\',\n+ onContextMenuItem: function(e, node, $el) {\n+ var action = $el.data("item");\n+ try {\n+ self.btns[action].el.click();\n+ } catch($err) {\n+ console.log("Command does not exist: " + action);\n+ }\n+ }\n+ });\n+\n self.$tree.bind(\'tree.select\', function(e) {\n if (e.node === null) {\n self.toggleButtons(false);\n@@ -38224,6 +39470,33 @@ define(\'mockup-patterns-filemanager\',[\n }\n });\n \n+ self.$tree.bind(\'tree.move\', function(event) {\n+ \n+ var target_node = event.move_info.target_node;\n+ var srcpath = event.move_info.moved_node.path;\n+ var newpath = target_node.path;\n+ if (event.move_info.position !== "inside" ){\n+ newpath = newpath.substring(newpath.indexOf(\'/\'), newpath.lastIndexOf(\'/\'));\n+ }\n+ \n+ self.doAction(\'move\', {\n+ data: {\n+ source: srcpath,\n+ destination: newpath\n+ },\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.$tree.tree(\'reload\', function() {\n+ self.$tree.tree(\'selectNode\', target_node);\n+ });\n+ var jdata = JSON.parse(data);\n+ if(jdata.error != \'\'){\n+ alert(jdata.error);\n+ }\n+ }\n+ });\n+ });\n+\n self.$tree.bind(\'tree.open\', function(e) {\n var element = $(e.node.element).find(\':first\').find(\'.glyphicon\');\n $(element).addClass(\'glyphicon-folder-open\');\n@@ -38450,12 +39723,15 @@ define(\'mockup-patterns-filemanager\',[\n failure: options.failure || function() {}\n });\n },\n- openEditor: function(path) {\n+ openEditor: function(path, options) {\n var self = this;\n \n if (path !== undefined) {\n self.updateTabs(path);\n }\n+ if (options === undefined) {\n+ options = {};\n+ }\n \n // first we need to save the current editor content\n if (self.currentPath) {\n@@ -38492,6 +39768,10 @@ define(\'mockup-patterns-filemanager\',[\n }\n \n self.resizeEditor();\n+ if(options.goToLine != undefined){\n+ self.ace.editor.gotoLine(options.goToLine, 0, true);\n+ }\n+\n self.$el.trigger(\'fileChange\');\n self.ace.editor.on(\'change\', function() {\n if (self.ace.editor.curOp && self.ace.editor.curOp.command.name) {\n@@ -39610,13 +40890,19 @@ define(\'mockup-patterns-thememapper\',[\n \'mockup-patterns-thememapper-url/js/cacheview\',\n \'mockup-ui-url/views/button\',\n \'mockup-ui-url/views/buttongroup\',\n+ \'mockup-ui-url/views/anchor\',\n+ \'mockup-ui-url/views/dropdown\',\n \'mockup-utils\'\n-], function($, Base, _, _t, InspectorTemplate, FileManager, RuleBuilder, RuleBuilderView, LessBuilderView, CacheView, ButtonView, ButtonGroup, utils) {\n+], function($, Base, _, _t, InspectorTemplate, FileManager, RuleBuilder, RuleBuilderView,\n+ LessBuilderView, CacheView, ButtonView, ButtonGroup,\n+ AnchorView, DropdownView, utils) {\n \'use strict\';\n \n var inspectorTemplate = _.template(InspectorTemplate);\n \n var Inspector = Base.extend({\n+ name: \'thememapper-inspector\',\n+ trigger: \'.pat-thememapper-inspector-dummy\',\n defaults: {\n name: \'name\',\n ruleBuilder: null,\n@@ -39888,6 +41174,8 @@ define(\'mockup-patterns-thememapper\',[\n self.fileManager = new FileManager(self.$fileManager, self.options.filemanagerConfig);\n self.fileManager.setUploadUrl();\n \n+ self.btns = {};\n+ self.menus = {};\n self.setupButtons();\n \n self.ruleBuilder = new RuleBuilder(self, self.ruleBuilderCallback);\n@@ -39908,7 +41196,7 @@ define(\'mockup-patterns-thememapper\',[\n ruleBuilder: self.ruleBuilder,\n url: self.options.unthemedUrl,\n });\n- self.buildLessButton.disable();\n+ self.btns.buildLessButton.disable();\n \n if(!self.options.editable) {\n if(self.fileManager.toolbar) {\n@@ -39953,10 +41241,10 @@ define(\'mockup-patterns-thememapper\',[\n var self = this;\n \n if(node.fileType === \'less\'){\n- self.buildLessButton.enable();\n+ self.btns.buildLessButton.enable();\n }\n else {\n- self.buildLessButton.disable();\n+ self.btns.buildLessButton.disable();\n }\n \n if (node.path !== \'\') {\n@@ -40040,8 +41328,8 @@ define(\'mockup-patterns-thememapper\',[\n var $parent = self.$mockupInspector.parent();\n $parent.slideDown();\n self.hidden = false;\n- self.showInspectorsButton.options.title = \'Hide inspectors\';\n- self.showInspectorsButton.applyTemplate();\n+ self.btns.showInspectorsButton.options.title = \'Hide inspectors\';\n+ self.btns.showInspectorsButton.applyTemplate();\n $(\'html, body\').animate({\n scrollTop: $parent.offset().top - 50\n }, 500);\n@@ -40051,19 +41339,19 @@ define(\'mockup-patterns-thememapper\',[\n var $parent = self.$mockupInspector.parent();\n $parent.slideUp();\n self.hidden = true;\n- self.showInspectorsButton.options.title = \'Show inspectors\';\n- self.showInspectorsButton.applyTemplate();\n+ self.btns.showInspectorsButton.options.title = \'Show inspectors\';\n+ self.btns.showInspectorsButton.applyTemplate();\n },\n setupButtons: function(){\n var self = this;\n- self.showInspectorsButton = new ButtonView({\n+ self.btns.showInspectorsButton = new ButtonView({\n id: \'showinspectors\',\n title: _t(\'Show inspectors\'),\n icon: \'search\',\n tooltip: _t(\'Show inspector panels\'),\n context: \'default\'\n });\n- self.showInspectorsButton.on(\'button:click\', function(){\n+ self.btns.showInspectorsButton.on(\'button:click\', function(){\n if (self.hidden) {\n self.showInspectors();\n } else {\n@@ -40071,21 +41359,21 @@ define(\'mockup-patterns-thememapper\',[\n }\n });\n \n- self.buildRuleButton = new ButtonView({\n+ self.btns.buildRuleButton = new AnchorView({\n id: \'buildrule\',\n title: _t(\'Build rule\'),\n icon: \'wrench\',\n tooltip: _t(\'rule building wizard\'),\n context: \'default\'\n });\n- self.fullscreenButton = new ButtonView({\n+ self.btns.fullscreenButton = new ButtonView({\n id: \'fullscreenEditor\',\n title: _t(\'Fullscreen\'),\n icon: \'fullscreen\',\n tooltip: _t(\'view the editor in fullscreen\'),\n context: \'default\'\n });\n- self.fullscreenButton.on(\'button:click\', function() {\n+ self.btns.fullscreenButton.on(\'button:click\', function() {\n var btn = $(\'\'+\n \'\' + _t(\'Close Fullscreen\') + \'\'+\n \'\').prependTo($(\'.tree\'));\n@@ -40107,62 +41395,75 @@ define(\'mockup-patterns-thememapper\',[\n self.previewThemeButton.on(\'button:click\', function(){\n window.open(self.options.previewUrl);\n });\n- self.buildLessButton = new ButtonView({\n+ self.btns.buildLessButton = new AnchorView({\n id: \'buildless\',\n title: _t(\'Build CSS\'),\n icon: \'cog\',\n tooltip: _t(\'Compile LESS file\'),\n context: \'default\'\n });\n- self.refreshButton = new ButtonView({\n+ self.btns.refreshButton = new ButtonView({\n id: \'refreshButton \',\n title: _t(\'Refresh\'),\n icon: \'refresh\',\n tooltip: _t(\'Reload the current file\'),\n context: \'default\'\n });\n- self.refreshButton.on(\'button:click\', function() {\n+ self.btns.refreshButton.on(\'button:click\', function() {\n self.fileManager.refreshFile();\n });\n- self.cacheButton = new ButtonView({\n+ self.btns.cacheButton = new ButtonView({\n id: \'cachebutton\',\n title: _t(\'Clear cache\'),\n icon: \'floppy-remove\',\n tooltip: _t(\'Clear site\\\'s theme cache\'),\n context: \'default\'\n });\n- self.helpButton = new ButtonView({\n+ self.btns.helpButton = new ButtonView({\n id: \'helpbutton\',\n title: _t(\'Help\'),\n icon: \'question-sign\',\n tooltip: _t(\'Show help\'),\n context: \'default\'\n });\n- self.helpButton.on(\'button:click\', function(){\n+ self.btns.helpButton.on(\'button:click\', function(){\n window.open(self.options.helpUrl);\n });\n self.rulebuilderView = new RuleBuilderView({\n- triggerView: self.buildRuleButton,\n+ triggerView: self.btns.buildRuleButton,\n app: self\n });\n self.cacheView = new CacheView({\n- triggerView: self.cacheButton,\n+ triggerView: self.btns.cacheButton,\n app: self\n });\n self.lessbuilderView = new LessBuilderView({\n- triggerView: self.buildLessButton,\n+ triggerView: self.btns.buildLessButton,\n app: self\n });\n+\n+\n+ self.menus.tools = new DropdownView({\n+ title: _t(\'Tools\'),\n+ items: [\n+ self.btns.buildRuleButton,\n+ self.btns.buildLessButton,\n+ ],\n+ id: \'file_menu\',\n+ app: self,\n+ icon: \'file\',\n+ disable: function() {}\n+ });\n+\n self.buttonGroup = new ButtonGroup({\n items: [\n- self.showInspectorsButton,\n- self.buildRuleButton,\n+ self.menus.tools,\n+ self.btns.showInspectorsButton,\n self.previewThemeButton,\n- self.fullscreenButton,\n- self.buildLessButton,\n- self.refreshButton,\n- self.cacheButton,\n- self.helpButton\n+ self.btns.fullscreenButton,\n+ self.btns.refreshButton,\n+ self.btns.cacheButton,\n+ self.btns.helpButton\n ],\n id: \'mapper\'\n });\n@@ -40207,5 +41508,5 @@ require([\n \'use strict\';\n });\n \n-define("/home/_thet/data/dev/plone/buildout.coredev/src/plone.app.theming/src/plone/app/theming/browser/resources/thememapper.js", function(){});\n+define("/work/playground/plone/plone.coredev-5.2/src/plone.app.theming/src/plone/app/theming/browser/resources/thememapper.js", function(){});\n \ndiff --git a/src/plone/app/theming/browser/resources/thememapper-compiled.min.js b/src/plone/app/theming/browser/resources/thememapper-compiled.min.js\nindex b1450d8..c7eadc8 100644\n--- a/src/plone/app/theming/browser/resources/thememapper-compiled.min.js\n+++ b/src/plone/app/theming/browser/resources/thememapper-compiled.min.js\n@@ -1,22 +1,2 @@\n-(function(){function a(a){function b(b,c,d,e,f,g){for(;f>=0&&f0?0:h-1;return arguments.length<3&&(e=c[g?g[i]:i],i+=a),b(c,d,e,g,i,h)}}function b(a){return function(b,c,d){c=u(c,d);for(var e=z(b),f=a>0?0:e-1;f>=0&&f0?g=f>=0?f:Math.max(f+h,g):h=f>=0?Math.min(f+1,h):f+h+1;else if(c&&f&&h)return f=c(d,e),d[f]===e?f:-1;if(e!==e)return f=b(k.call(d,g,h),s.isNaN),f>=0?f+g:-1;for(f=a>0?g:h-1;f>=0&&f=0&&b<=y};s.each=s.forEach=function(a,b,c){b=t(b,c);var d,e;if(A(a))for(d=0,e=a.length;d=0},s.invoke=function(a,b){var c=k.call(arguments,2),d=s.isFunction(b);return s.map(a,function(a){var e=d?b:a[b];return null==e?e:e.apply(a,c)})},s.pluck=function(a,b){return s.map(a,s.property(b))},s.where=function(a,b){return s.filter(a,s.matcher(b))},s.findWhere=function(a,b){return s.find(a,s.matcher(b))},s.max=function(a,b,c){var d,e,f=-(1/0),g=-(1/0);if(null==b&&null!=a){a=A(a)?a:s.values(a);for(var h=0,i=a.length;hf&&(f=d)}else b=u(b,c),s.each(a,function(a,c,d){e=b(a,c,d),(e>g||e===-(1/0)&&f===-(1/0))&&(f=a,g=e)});return f},s.min=function(a,b,c){var d,e,f=1/0,g=1/0;if(null==b&&null!=a){a=A(a)?a:s.values(a);for(var h=0,i=a.length;hd||void 0===c)return 1;if(cb?(g&&(clearTimeout(g),g=null),h=j,f=a.apply(d,e),g||(d=e=null)):g||c.trailing===!1||(g=setTimeout(i,k)),f}},s.debounce=function(a,b,c){var d,e,f,g,h,i=function(){var j=s.now()-g;j=0?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e),d||(f=e=null)))};return function(){f=this,e=arguments,g=s.now();var j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e),f=e=null),h}},s.wrap=function(a,b){return s.partial(b,a)},s.negate=function(a){return function(){return!a.apply(this,arguments)}},s.compose=function(){var a=arguments,b=a.length-1;return function(){for(var c=b,d=a[b].apply(this,arguments);c--;)d=a[c].call(this,d);return d}},s.after=function(a,b){return function(){if(--a<1)return b.apply(this,arguments)}},s.before=function(a,b){var c;return function(){return--a>0&&(c=b.apply(this,arguments)),a<=1&&(b=null),c}},s.once=s.partial(s.before,2);var E=!{toString:null}.propertyIsEnumerable("toString"),F=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];s.keys=function(a){if(!s.isObject(a))return[];if(o)return o(a);var b=[];for(var c in a)s.has(a,c)&&b.push(c);return E&&d(a,b),b},s.allKeys=function(a){if(!s.isObject(a))return[];var b=[];for(var c in a)b.push(c);return E&&d(a,b),b},s.values=function(a){for(var b=s.keys(a),c=b.length,d=Array(c),e=0;e":">",\'"\':""","\'":"'","`":"`"},I=s.invert(H),J=function(a){var b=function(b){return a[b]},c="(?:"+s.keys(a).join("|")+")",d=RegExp(c),e=RegExp(c,"g");return function(a){return a=null==a?"":""+a,d.test(a)?a.replace(e,b):a}};s.escape=J(H),s.unescape=J(I),s.result=function(a,b,c){var d=null==a?void 0:a[b];return void 0===d&&(d=c),s.isFunction(d)?d.call(a):d};var K=0;s.uniqueId=function(a){var b=++K+"";return a?a+b:b},s.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var L=/(.)^/,M={"\'":"\'","\\\\":"\\\\","\\r":"r","\\n":"n","\\u2028":"u2028","\\u2029":"u2029"},N=/\\\\|\'|\\r|\\n|\\u2028|\\u2029/g,O=function(a){return"\\\\"+M[a]};s.template=function(a,b,c){!b&&c&&(b=c),b=s.defaults({},b,s.templateSettings);var d=RegExp([(b.escape||L).source,(b.interpolate||L).source,(b.evaluate||L).source].join("|")+"|$","g"),e=0,f="__p+=\'";a.replace(d,function(b,c,d,g,h){return f+=a.slice(e,h).replace(N,O),e=h+b.length,c?f+="\'+\\n((__t=("+c+"))==null?\'\':_.escape(__t))+\\n\'":d?f+="\'+\\n((__t=("+d+"))==null?\'\':__t)+\\n\'":g&&(f+="\';\\n"+g+"\\n__p+=\'"),b}),f+="\';\\n",b.variable||(f="with(obj||{}){\\n"+f+"}\\n"),f="var __t,__p=\'\',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,\'\');};\\n"+f+"return __p;\\n";try{var g=new Function(b.variable||"obj","_",f)}catch(h){throw h.source=f,h}var i=function(a){return g.call(this,a,s)},j=b.variable||"obj";return i.source="function("+j+"){\\n"+f+"}",i},s.chain=function(a){var b=s(a);return b._chain=!0,b};var P=function(a,b){return a._chain?s(b).chain():b};s.mixin=function(a){s.each(s.functions(a),function(b){var c=s[b]=a[b];s.prototype[b]=function(){var a=[this._wrapped];return j.apply(a,arguments),P(this,c.apply(s,a))}})},s.mixin(s),s.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=g[a];s.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),"shift"!==a&&"splice"!==a||0!==c.length||delete c[0],P(this,c)}}),s.each(["concat","join","slice"],function(a){var b=g[a];s.prototype[a]=function(){return P(this,b.apply(this._wrapped,arguments))}}),s.prototype.value=function(){return this._wrapped},s.prototype.valueOf=s.prototype.toJSON=s.prototype.value,s.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return s})}).call(this),function(){function a(){}function b(){}function c(a,b){this._loggers={},this.name=a||"",this._parent=b||null,b||(this._enabled=!0,this._level=h.WARN)}function d(){return g}function e(a){g=a}Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d&&a?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e});var f,g,h={DEBUG:10,INFO:20,WARN:30,ERROR:40,FATAL:50};a.prototype={output:function(a,b,c){if("undefined"!=typeof window.console&&"undefined"!=typeof console.log){a&&c.unshift(a+":");var d=c.join(" ");if(void 0===typeof console.info){var e;e=b<=h.DEBUG?"DEBUG":b<=h.INFO?"INFO":b<=h.WARN?"WARN":b<=h.ERROR?"ERROR":"FATAL",console.log("["+e+"] "+d)}else b<=h.DEBUG?(d="[DEBUG] "+d,console.log(d)):b<=h.INFO?console.info(d):b<=h.WARN?console.warn(d):console.error(d)}}},b.prototype={output:function(a,b,c){a&&c.unshift(a+":"),b<=h.DEBUG?(c.unshift("[DEBUG]"),console.log.apply(console,c)):b<=h.INFO?console.info.apply(console,c):b<=h.WARN?console.warn.apply(console,c):console.error.apply(console,c)}},c.prototype={getLogger:function(a){for(var b=a.split("."),d=this,e=this.name?[this.name]:[];b.length;){var f=b.shift();e.push(f),f in d._loggers||(d._loggers[f]=new c(e.join("."),d)),d=d._loggers[f]}return d},_getFlag:function(a){var b=this;for(a="_"+a;null!==b;){if(void 0!==b[a])return b[a];b=b._parent}return null},setEnabled:function(a){this._enabled=!!a},isEnabled:function(){this._getFlag("enabled")},setLevel:function(a){"number"==typeof a?this._level=a:"string"==typeof a&&(a=a.toUpperCase(),a in h&&(this._level=h[a]))},getLevel:function(){return this._getFlag("level")},log:function(a,b){!b.length||!this._getFlag("enabled")||a=0&&/(rv)(?::| )([\\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(a)||[],c=/(ipad)/.exec(a)||/(ipod)/.exec(a)||/(iphone)/.exec(a)||/(kindle)/.exec(a)||/(silk)/.exec(a)||/(android)/.exec(a)||/(windows phone)/.exec(a)||/(win)/.exec(a)||/(mac)/.exec(a)||/(linux)/.exec(a)||/(cros)/.exec(a)||/(playbook)/.exec(a)||/(bb)/.exec(a)||/(blackberry)/.exec(a)||[],d={},e={browser:b[5]||b[3]||b[1]||"",version:b[2]||b[4]||"0",versionNumber:b[4]||b[2]||"0",platform:c[0]||""};if(e.browser&&(d[e.browser]=!0,d.version=e.version,d.versionNumber=parseInt(e.versionNumber,10)),e.platform&&(d[e.platform]=!0),(d.android||d.bb||d.blackberry||d.ipad||d.iphone||d.ipod||d.kindle||d.playbook||d.silk||d["windows phone"])&&(d.mobile=!0),(d.cros||d.mac||d.linux||d.win)&&(d.desktop=!0),(d.chrome||d.opr||d.safari)&&(d.webkit=!0),d.rv||d.edge){var f="msie";e.browser=f,d[f]=!0}if(d.safari&&d.blackberry){var g="blackberry";e.browser=g,d[g]=!0}if(d.safari&&d.playbook){var h="playbook";e.browser=h,d[h]=!0}if(d.bb){var i="blackberry";e.browser=i,d[i]=!0}if(d.opr){var j="opera";e.browser=j,d[j]=!0}if(d.safari&&d.android){var k="android";e.browser=k,d[k]=!0}if(d.safari&&d.kindle){var l="kindle";e.browser=l,d[l]=!0}if(d.safari&&d.silk){var m="silk";e.browser=m,d[m]=!0}return d.name=e.browser,d.platform=e.platform,d}return window.jQBrowser=b(window.navigator.userAgent),window.jQBrowser.uaMatch=b,a&&(a.browser=window.jQBrowser),window.jQBrowser}),define("pat-utils",["jquery","jquery.browser","underscore"],function(a){function b(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}}function c(a){var b=typeof a;return"function"===b||"object"===b&&!!a}function d(a){if(!c(a))return a;for(var b,d,e=1,f=arguments.length;ed||b.top>e)}function h(a){return a.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,"\\\\$&")}function i(b,c){if(c.indexOf("*")===-1)b.removeClass(c);else{var d=c.replace(/[\\-\\[\\]{}()+?.,\\\\\\^$|#\\s]/g,"\\\\$&");d=d.replace(/[*]/g,".*"),d=new RegExp("^"+d+"$"),b.filter("[class]").each(function(){for(var b=a(this),c=b.attr("class").split(/\\s+/),e=[],f=0;f
    "),c.$el.addClass(c.className).hide().appendTo("body"))},c.show=function(b){c.init(),c.$el.show();var d=c.options.zIndex;"function"==typeof d?d=Math.max(d(),10005):(d=10005,a(".plone-modal-wrapper,.plone-modal-backdrop").each(function(){d=Math.max(d,a(this).css("zIndex")||10005)}),d+=1),c.$el.css("zIndex",d),void 0===b&&(b=!0),c.options.backdrop&&(c.options.backdrop.closeOnClick=b,c.options.backdrop.closeOnEsc=b,c.options.backdrop.init(),c.options.backdrop.show())},c.hide=function(){c.init(),c.$el.hide()},c},d=function(){var b=a(\'input[name="_authenticator"]\');return 0===b.length?(b=a(\'a[href*="_authenticator"]\'),b.length>0?b.attr("href").split("_authenticator=")[1]:""):b.val()},e=function(a){return void 0===a&&(a="id"),a+Math.floor(65536*(1+Math.random())).toString(16).substring(1)},f=function(a,b){void 0===b&&(b="id");var c=a.attr("id");return c=void 0===c?e(b):c.replace(/\\./g,"-"),a.attr("id",c),c},g=function(){var a=window;return a.parent!==window&&(a=a.parent),a},h=function(b){return a(/]*>((.|[\\n\\r])*)<\\/body>/im.exec(b)[0].replace("","
    ")).eq(0).html()},i={dragAndDrop:function(){return"draggable"in document.createElement("span")},fileApi:function(){return"undefined"!=typeof FileReader},history:function(){return!(!window.history||!window.history.pushState)}},j=function(b){return"string"==typeof b&&(b=a.trim(b).toLowerCase()),["false",!1,"0",0,"",void 0,null].indexOf(b)===-1},k=function(b){return a("
    ").text(b).html()},l=function(a){return a.replace(/<[^>]+>/gi,"")};return{bool:j,escapeHTML:k,removeHTML:l,featureSupport:i,generateId:e,getAuthenticator:d,getWindow:g,Loading:c,loading:new c,parseBodyTag:h,QueryHelper:b,setId:f}}),function(a){define("jqtree",["jquery"],function(){return function(){!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module \'"+g+"\'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gd.right||b>d.bottom)return null;for(f=0,e=this.hit_areas.length;f>1,c=this.hit_areas[g],bc.bottom))return c;f=g+1}return null},a.prototype.mustOpenFolderTimer=function(a){var b;return b=a.node,b.isFolder()&&!b.is_open&&a.position===h.INSIDE},a.prototype.updateDropHint=function(){var a;if(this.hovered_area)return this.removeDropHint(),a=this.tree_widget._getNodeElementForNode(this.hovered_area.node),this.previous_ghost=a.addDropHint(this.hovered_area.position)},a.prototype.startOpenFolderTimer=function(a){var b;return b=function(b){return function(){return b.tree_widget._openNode(a,b.tree_widget.options.slide,function(){return b.refresh(),b.updateDropHint()})}}(this),this.stopOpenFolderTimer(),this.open_folder_timer=setTimeout(b,this.tree_widget.options.openFolderDelay)},a.prototype.stopOpenFolderTimer=function(){if(this.open_folder_timer)return clearTimeout(this.open_folder_timer),this.open_folder_timer=null},a.prototype.moveItem=function(a){var b,c,d,e,f,g;if(this.hovered_area&&this.hovered_area.position!==h.NONE&&this.canMoveToArea(this.hovered_area)&&(d=this.current_item.node,g=this.hovered_area.node,e=this.hovered_area.position,f=d.parent,e===h.INSIDE&&(this.hovered_area.node.is_open=!0),b=function(a){return function(){return a.tree_widget.tree.moveNode(d,g,e),a.tree_widget.element.empty(),a.tree_widget._refreshElements()}}(this),c=this.tree_widget._triggerEvent("tree.move",{move_info:{moved_node:d,target_node:g,position:h.getName(e),previous_parent:f,do_move:b,original_event:a.original_event}}),!c.isDefaultPrevented()))return b()},a.prototype.getTreeDimensions=function(){var a;return a=this.tree_widget.element.offset(),{left:a.left,top:a.top,right:a.left+this.tree_widget.element.width(),bottom:a.top+this.tree_widget.element.height()+16}},a}(),i=function(){function a(a){this.tree=a}return a.prototype.iterate=function(){var a,b;return b=!0,(a=function(c){return function(e,f){var g,h,i,j,k,l,m,n;if(m=(e.is_open||!e.element)&&e.hasChildren(),e.element){if(g=d(e.element),!g.is(":visible"))return;b&&(c.handleFirstNode(e,g),b=!1),e.hasChildren()?e.is_open?c.handleOpenFolder(e,g)||(m=!1):c.handleClosedFolder(e,f,g):c.handleNode(e,f,g)}if(m){for(i=e.children.length,n=e.children,j=k=0,l=n.length;k\'+a.name+""),this.$element.css("position","absolute"),e.append(this.$element)}return a.prototype.move=function(a,b){return this.$element.offset({left:a-this.offset_x,top:b-this.offset_y})},a.prototype.remove=function(){return this.$element.remove()},a}(),b.exports={DragAndDropHandler:e,DragElement:f,HitAreasGenerator:g}},{"./node":5}],2:[function(a,b,c){var d,e,f,g,h,i;h=a("./node_element"),f=h.NodeElement,i=a("./util"),g=i.html_escape,d=jQuery,e=function(){function a(a){this.tree_widget=a,this.opened_icon_element=this.createButtonElement(a.options.openedIcon),this.closed_icon_element=this.createButtonElement(a.options.closedIcon)}return a.prototype.render=function(a){return a&&a.parent?this.renderFromNode(a):this.renderFromRoot()},a.prototype.renderFromRoot=function(){var a;return a=this.tree_widget.element,a.empty(),this.createDomElements(a[0],this.tree_widget.tree.children,!0,!0,1)},a.prototype.renderFromNode=function(a){var b,c;if(b=d(a.element),c=this.createLi(a,a.getLevel()),this.attachNodeData(a,c),b.after(c),b.remove(),a.children)return this.createDomElements(c,a.children,!1,!1,a.getLevel()+1)},a.prototype.createDomElements=function(a,b,c,d,e){var f,g,h,i,j;for(j=this.createUl(c),a.appendChild(j),g=0,h=b.length;g1))return b=a.originalEvent.changedTouches[0],this._handleMouseDown(a,this._getPositionInfo(b))},b.prototype._touchMove=function(a){var b;if(!(a.originalEvent.touches.length>1))return b=a.originalEvent.changedTouches[0],this._handleMouseMove(a,this._getPositionInfo(b))},b.prototype._touchEnd=function(a){var b;if(!(a.originalEvent.touches.length>1))return b=a.originalEvent.changedTouches[0],this._handleMouseUp(this._getPositionInfo(b))},b}(f),b.exports=e},{"./simple.widget":10}],5:[function(a,b,c){var d,e,f;d=jQuery,f={getName:function(a){return f.strings[a-1]},nameToIndex:function(a){var b,c,d;for(b=c=1,d=f.strings.length;1<=d?c<=d:c>=d;b=1<=d?++c:--c)if(f.strings[b-1]===a)return b;return 0}},f.BEFORE=1,f.AFTER=2,f.INSIDE=3,f.NONE=4,f.strings=["before","after","inside","none"],e=function(){function a(b,c,d){null==c&&(c=!1),null==d&&(d=a),this.name="",this.setData(b),this.children=[],this.parent=null,c&&(this.id_mapping={},this.tree=this,this.node_class=d)}return a.prototype.setData=function(a){var b,c,d;if(c=function(a){return function(b){if(null!==b)return a.name=b}}(this),"object"!=typeof a)c(a);else for(b in a)d=a[b],"label"===b?c(d):"children"!==b&&(this[b]=d);return null},a.prototype.initFromData=function(a){var b,c;return c=function(a){return function(c){if(a.setData(c),c.children)return b(c.children)}}(this),b=function(a){return function(b){var c,d,e,f;for(d=0,e=b.length;d=0?this.parent.children[a]:null):null},a.prototype.getNextSibling=function(){var a;return this.parent?(a=this.parent.getChildIndex(this)+1,a\'),b.append(this.$hint),this.$hint.css({width:c,height:b.outerHeight()-4})}return a.prototype.remove=function(){return this.$hint.remove()},a}(),g=function(){function a(a,b,c){this.$element=b,this.node=a,this.$ghost=d(\'
  • \'),c===i.AFTER?this.moveAfter():c===i.BEFORE?this.moveBefore():c===i.INSIDE&&(a.isFolder()&&a.is_open?this.moveInsideOpenFolder():this.moveInside())}return a.prototype.remove=function(){return this.$ghost.remove()},a.prototype.moveAfter=function(){return this.$element.after(this.$ghost)},a.prototype.moveBefore=function(){return this.$element.before(this.$ghost)},a.prototype.moveInsideOpenFolder=function(){return d(this.node.children[0].element).before(this.$ghost)},a.prototype.moveInside=function(){return this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")},a}(),b.exports={BorderDropHint:e,FolderElement:f,GhostDropHint:g,NodeElement:h}},{"./node":5}],7:[function(a,b,c){var d,e,f,g,h;h=a("./util"),f=h.indexOf,g=h.isInt,d=jQuery,e=function(){function a(a){this.tree_widget=a}return a.prototype.saveState=function(){var a;return a=JSON.stringify(this.getState()),this.tree_widget.options.onSetStateFromStorage?this.tree_widget.options.onSetStateFromStorage(a):this.supportsLocalStorage()?localStorage.setItem(this.getCookieName(),a):d.cookie?(d.cookie.raw=!0,d.cookie(this.getCookieName(),a,{path:"/"})):void 0},a.prototype.getStateFromStorage=function(){var a;return a=this._loadFromStorage(),a?this._parseState(a):null},a.prototype._parseState=function(a){var b;return b=d.parseJSON(a),b&&b.selected_node&&g(b.selected_node)&&(b.selected_node=[b.selected_node]),b},a.prototype._loadFromStorage=function(){return this.tree_widget.options.onGetStateFromStorage?this.tree_widget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getCookieName()):d.cookie?(d.cookie.raw=!0,d.cookie(this.getCookieName())):null},a.prototype.getState=function(){var a,b;return a=function(a){return function(){var b;return b=[],a.tree_widget.tree.iterate(function(a){return a.is_open&&a.id&&a.hasChildren()&&b.push(a.id),!0}),b}}(this),b=function(a){return function(){var b;return function(){var a,c,d,e;for(d=this.tree_widget.getSelectedNodes(),e=[],a=0,c=d.length;a=g},a}(),b.exports=e},{}],9:[function(a,b,c){var d,e;d=jQuery,e=function(){function a(a){this.tree_widget=a,this.clear()}return a.prototype.getSelectedNode=function(){var a;return a=this.getSelectedNodes(),!!a.length&&a[0]},a.prototype.getSelectedNodes=function(){var a,b,c;if(this.selected_single_node)return[this.selected_single_node];c=[];for(a in this.selected_nodes)b=this.tree_widget.getNodeById(a),b&&c.push(b);return c},a.prototype.getSelectedNodesUnder=function(a){var b,c,d;if(this.selected_single_node)return a.isParentOf(this.selected_single_node)?[this.selected_single_node]:[];d=[];for(b in this.selected_nodes)c=this.tree_widget.getNodeById(b),c&&a.isParentOf(c)&&d.push(c);return d},a.prototype.isNodeSelected=function(a){return a.id?this.selected_nodes[a.id]:!!this.selected_single_node&&this.selected_single_node.element===a.element},a.prototype.clear=function(){return this.selected_nodes={},this.selected_single_node=null},a.prototype.removeFromSelection=function(a,b){if(null==b&&(b=!1),a.id){if(delete this.selected_nodes[a.id],b)return a.iterate(function(b){return function(c){return delete b.selected_nodes[a.id],!0}}(this))}else if(this.selected_single_node&&a.element===this.selected_single_node.element)return this.selected_single_node=null},a.prototype.addToSelection=function(a){return a.id?this.selected_nodes[a.id]=!0:this.selected_single_node=a},a}(),b.exports=e},{}],10:[function(a,b,c){var d,e,f=[].slice;d=jQuery,e=function(){function a(a,b){this.$el=d(a),this.options=d.extend({},this.defaults,b)}return a.prototype.defaults={},a.prototype.destroy=function(){return this._deinit()},a.prototype._init=function(){return null},a.prototype._deinit=function(){return null},a.register=function(b,c){var e,g,h,i,j;return i=function(){return"simple_widget_"+c},j=function(b,c){var e;return e=d.data(b,c),e&&e instanceof a?e:null},g=function(a,c){var e,f,g,h,k,l;for(e=i(),h=0,k=a.length;h/g,">").replace(/"/g,""").replace(/\'/g,"'").replace(/\\//g,"/")},e=function(a){return a?"true":"false"},b.exports={_indexOf:d,getBoolString:e,html_escape:f,indexOf:g,isInt:h}},{}],13:[function(a,b,c){b.exports="1.3.3"},{}]},{},[11])}.apply(a,arguments)})}(this),define("mockup-patterns-tree",["jquery","pat-base","mockup-utils","jqtree"],function(a,b,c){"use strict";var d=b.extend({name:"tree",trigger:".pat-tree",parser:"mockup",defaults:{dragAndDrop:!1,autoOpen:!1,selectable:!0,keyboardSupport:!0,onLoad:null},init:function(){var b=this;for(var d in b.options){var e=b.defaults[d];void 0!==e&&"boolean"==typeof e&&(b.options[d]=c.bool(b.options[d]))}if(b.options.dragAndDrop&&void 0===b.options.onCanMoveTo&&(b.options.onCanMoveTo=function(a,b,c){return void 0===b.folder||b.folder===!0}),b.options.data&&"string"==typeof b.options.data&&(b.options.data=a.parseJSON(b.options.data)),null!==b.options.onLoad){var f=a.extend({},b.options);a.getJSON(f.dataUrl,function(a){f.data=a,delete f.dataUrl,b.tree=b.$el.tree(f),b.options.onLoad(b)})}else b.tree=b.$el.tree(b.options)}});return d}),function(a){define("ace",[],function(){return function(){!function(){function a(a){var b=c;a&&(c[a]||(c[a]={}),b=c[a]),b.define&&b.define.packaged||(d.original=b.define,b.define=d,b.define.packaged=!0),b.require&&b.require.packaged||(f.original=b.require,b.require=f,b.require.packaged=!0)}var b="",c=function(){return this}();if(c||"undefined"==typeof window||(c=window),b||"undefined"==typeof requirejs){var d=function(a,b,c){return"string"!=typeof a?void(d.original?d.original.apply(this,arguments):(console.error("dropping module because define wasn\'t a string."),console.trace())):(2==arguments.length&&(c=b),void(d.modules[a]||(d.payloads[a]=c,d.modules[a]=null)))};d.modules={},d.payloads={};var e=function(a,b,c){if("string"==typeof b){var d=h(a,b);if(void 0!=d)return c&&c(),d}else if("[object Array]"===Object.prototype.toString.call(b)){for(var e=[],g=0,i=b.length;g1&&e(i,"")>-1&&(c=RegExp(this.source,f.replace.call(d(this),"g","")),f.replace.call(a.slice(i.index),c,function(){for(var a=1;ai.index&&this.lastIndex--}return i},h||(RegExp.prototype.test=function(a){var b=f.exec.call(this,a);return b&&this.global&&!b[0].length&&this.lastIndex>b.index&&this.lastIndex--,!!b}))}),define("ace/lib/es5-shim",["require","exports","module"],function(a,b,c){function d(){}function e(a){try{return Object.defineProperty(a,"sentinel",{}),"sentinel"in a}catch(b){}}function f(a){return a=+a,a!==a?a=0:0!==a&&a!==1/0&&a!==-(1/0)&&(a=(a>0||-1)*Math.floor(Math.abs(a))),a}Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError("Function.prototype.bind called on incompatible "+b);var c=o.call(arguments,1),e=function(){if(this instanceof e){var d=b.apply(this,c.concat(o.call(arguments)));return Object(d)===d?d:this}return b.apply(a,c.concat(o.call(arguments)))};return b.prototype&&(d.prototype=b.prototype,e.prototype=new d,d.prototype=null),e});var g,h,i,j,k,l=Function.prototype.call,m=Array.prototype,n=Object.prototype,o=m.slice,p=l.bind(n.toString),q=l.bind(n.hasOwnProperty);if((k=q(n,"__defineGetter__"))&&(g=l.bind(n.__defineGetter__),h=l.bind(n.__defineSetter__),i=l.bind(n.__lookupGetter__),j=l.bind(n.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function a(a){var b=new Array(a+2);return b[0]=b[1]=0,b}var b,c=[];if(c.splice.apply(c,a(20)),c.splice.apply(c,a(26)),b=c.length,c.splice(5,0,"XXX"),b+1==c.length,b+1==c.length)return!0}()){var r=Array.prototype.splice;Array.prototype.splice=function(a,b){return arguments.length?r.apply(this,[void 0===a?0:a,void 0===b?this.length-a:b].concat(o.call(arguments,2))):[]}}else Array.prototype.splice=function(a,b){var c=this.length;a>0?a>c&&(a=c):void 0==a?a=0:a<0&&(a=Math.max(c+a,0)),a+bh)for(l=j;l--;)this[i+l]=this[h+l];if(f&&a===k)this.length=k,this.push.apply(this,e);else for(this.length=k+f,l=0;l>>0;if("[object Function]"!=p(a))throw new TypeError;for(;++e>>0,e=Array(d),f=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var g=0;g>>0,f=[],g=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var h=0;h>>0,e=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var f=0;f>>0,e=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var f=0;f>>0;if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");if(!d&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var e,f=0;if(arguments.length>=2)e=arguments[1];else for(;;){if(f in c){e=c[f++];break}if(++f>=d)throw new TypeError("reduce of empty array with no initial value")}for(;f>>0;if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");if(!d&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var e,f=d-1;if(arguments.length>=2)e=arguments[1];else for(;;){if(f in c){e=c[f--];break}if(--f<0)throw new TypeError("reduceRight of empty array with no initial value")}do f in this&&(e=a.call(void 0,e,c[f],f,b));while(f--);return e}),Array.prototype.indexOf&&[0,1].indexOf(1,2)==-1||(Array.prototype.indexOf=function(a){var b=t&&"[object String]"==p(this)?this.split(""):K(this),c=b.length>>>0;if(!c)return-1;var d=0;for(arguments.length>1&&(d=f(arguments[1])),d=d>=0?d:Math.max(0,c+d);d>>0;if(!c)return-1;var d=c-1;for(arguments.length>1&&(d=Math.min(d,f(arguments[1]))),d=d>=0?d:c-Math.abs(d);d>=0;d--)if(d in b&&a===b[d])return d;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(a){return a.__proto__||(a.constructor?a.constructor.prototype:n)}),!Object.getOwnPropertyDescriptor){var u="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(a,b){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError(u+a);if(q(a,b)){var c,d,e;if(c={enumerable:!0,configurable:!0},k){var f=a.__proto__;a.__proto__=n;var d=i(a,b),e=j(a,b);if(a.__proto__=f,d||e)return d&&(c.get=d),e&&(c.set=e),c}return c.value=a[b],c}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(a){return Object.keys(a)}),!Object.create){var v;v=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var a={};for(var b in a)a[b]=null;return a.constructor=a.hasOwnProperty=a.propertyIsEnumerable=a.isPrototypeOf=a.toLocaleString=a.toString=a.valueOf=a.__proto__=null,a},Object.create=function(a,b){var c;if(null===a)c=v();else{if("object"!=typeof a)throw new TypeError("typeof prototype["+typeof a+"] != \'object\'");var d=function(){};d.prototype=a,c=new d,c.__proto__=a}return void 0!==b&&Object.defineProperties(c,b),c}}if(Object.defineProperty){var w=e({}),x="undefined"==typeof document||e(document.createElement("div"));if(!w||!x)var y=Object.defineProperty}if(!Object.defineProperty||y){var z="Property description must be an object: ",A="Object.defineProperty called on non-object: ",B="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(a,b,c){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError(A+a);if("object"!=typeof c&&"function"!=typeof c||null===c)throw new TypeError(z+c);if(y)try{return y.call(Object,a,b,c)}catch(d){}if(q(c,"value"))if(k&&(i(a,b)||j(a,b))){var e=a.__proto__;a.__proto__=n,delete a[b],a[b]=c.value,a.__proto__=e}else a[b]=c.value;else{if(!k)throw new TypeError(B);q(c,"get")&&g(a,b,c.get),q(c,"set")&&h(a,b,c.set)}return a}}Object.defineProperties||(Object.defineProperties=function(a,b){for(var c in b)q(b,c)&&Object.defineProperty(a,c,b[c]);return a}),Object.seal||(Object.seal=function(a){return a}),Object.freeze||(Object.freeze=function(a){return a});try{Object.freeze(function(){})}catch(C){Object.freeze=function(a){return function(b){return"function"==typeof b?b:a(b)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(a){return a}),Object.isSealed||(Object.isSealed=function(a){return!1}),Object.isFrozen||(Object.isFrozen=function(a){return!1}),Object.isExtensible||(Object.isExtensible=function(a){if(Object(a)===a)throw new TypeError;for(var b="";q(a,b);)b+="?";a[b]=!0;var c=q(a,b);return delete a[b],c}),!Object.keys){var D=!0,E=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],F=E.length;for(var G in{toString:null})D=!1;Object.keys=function L(a){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError("Object.keys called on a non-object");var L=[];for(var b in a)q(a,b)&&L.push(b);if(D)for(var c=0,d=F;c=0?parseFloat((e.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]):parseFloat((e.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]),b.isOldIE=b.isIE&&b.isIE<9,b.isGecko=b.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,b.isOldGecko=b.isGecko&&parseInt((e.match(/rv\\:(\\d+)/)||[])[1],10)<4,b.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),b.isWebKit=parseFloat(e.split("WebKit/")[1])||void 0,b.isChrome=parseFloat(e.split(" Chrome/")[1])||void 0,b.isAIR=e.indexOf("AdobeAIR")>=0,b.isIPad=e.indexOf("iPad")>=0,b.isTouchPad=e.indexOf("TouchPad")>=0,b.isChromeOS=e.indexOf(" CrOS ")>=0}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(a,b,c){"use strict";function d(a,b,c){var d=j(b);if(!g.isMac&&h){if(h.OSKey&&(d|=8),h.altGr){if(3==(3&d))return;h.altGr=0}if(18===c||17===c){var e="location"in b?b.location:b.keyLocation;if(17===c&&1===e)1==h[c]&&(i=b.timeStamp);else if(18===c&&3===d&&2===e){var k=b.timeStamp-i;k<50&&(h.altGr=!0)}}}if(c in f.MODIFIER_KEYS&&(c=-1),8&d&&c>=91&&c<=93&&(c=-1),!d&&13===c){var e="location"in b?b.location:b.keyLocation;if(3===e&&(a(b,d,-c),b.defaultPrevented))return}if(g.isChromeOS&&8&d){if(a(b,d,c),b.defaultPrevented)return;d&=-9}return!!(d||c in f.FUNCTION_KEYS||c in f.PRINTABLE_KEYS)&&a(b,d,c)}function e(){h=Object.create(null),h.count=0,h.lastT=0}var f=a("./keys"),g=a("./useragent"),h=null,i=0;b.addListener=function(a,b,c){if(a.addEventListener)return a.addEventListener(b,c,!1);if(a.attachEvent){var d=function(){c.call(a,window.event)};c._wrapper=d,a.attachEvent("on"+b,d)}},b.removeListener=function(a,b,c){return a.removeEventListener?a.removeEventListener(b,c,!1):void(a.detachEvent&&a.detachEvent("on"+b,c._wrapper||c))},b.stopEvent=function(a){return b.stopPropagation(a),b.preventDefault(a),!1},b.stopPropagation=function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},b.preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},b.getButton=function(a){return"dblclick"==a.type?0:"contextmenu"==a.type||g.isMac&&a.ctrlKey&&!a.altKey&&!a.shiftKey?2:a.preventDefault?a.button:{1:0,2:2,4:1}[a.button]},b.capture=function(a,c,d){function e(a){c&&c(a),d&&d(a),b.removeListener(document,"mousemove",c,!0),b.removeListener(document,"mouseup",e,!0),b.removeListener(document,"dragstart",e,!0)}return b.addListener(document,"mousemove",c,!0),b.addListener(document,"mouseup",e,!0),b.addListener(document,"dragstart",e,!0),e},b.addTouchMoveListener=function(a,c){if("ontouchmove"in a){var d,e;b.addListener(a,"touchstart",function(a){var b=a.changedTouches[0];d=b.clientX,e=b.clientY}),b.addListener(a,"touchmove",function(a){var b=1,f=a.changedTouches[0];a.wheelX=-(f.clientX-d)/b,a.wheelY=-(f.clientY-e)/b,d=f.clientX,e=f.clientY,c(a)})}},b.addMouseWheelListener=function(a,c){"onmousewheel"in a?b.addListener(a,"mousewheel",function(a){var b=8;void 0!==a.wheelDeltaX?(a.wheelX=-a.wheelDeltaX/b,a.wheelY=-a.wheelDeltaY/b):(a.wheelX=0,a.wheelY=-a.wheelDelta/b),c(a)}):"onwheel"in a?b.addListener(a,"wheel",function(a){var b=.35;switch(a.deltaMode){case a.DOM_DELTA_PIXEL:a.wheelX=a.deltaX*b||0,a.wheelY=a.deltaY*b||0;break;case a.DOM_DELTA_LINE:case a.DOM_DELTA_PAGE:a.wheelX=5*(a.deltaX||0),a.wheelY=5*(a.deltaY||0)}c(a)}):b.addListener(a,"DOMMouseScroll",function(a){a.axis&&a.axis==a.HORIZONTAL_AXIS?(a.wheelX=5*(a.detail||0),a.wheelY=0):(a.wheelX=0,a.wheelY=5*(a.detail||0)),c(a)})},b.addMultiMouseDownListener=function(a,c,d,e){function f(a){if(0!==b.getButton(a)?l=0:a.detail>1?(l++,l>4&&(l=1)):l=1,g.isIE){var f=Math.abs(a.clientX-i)>5||Math.abs(a.clientY-j)>5;k&&!f||(l=1),k&&clearTimeout(k),k=setTimeout(function(){k=null},c[l-1]||600),1==l&&(i=a.clientX,j=a.clientY)}if(a._clicks=l,d[e]("mousedown",a),l>4)l=0;else if(l>1)return d[e](m[l],a)}function h(a){l=2,k&&clearTimeout(k),k=setTimeout(function(){k=null},c[l-1]||600),d[e]("mousedown",a),d[e](m[l],a)}var i,j,k,l=0,m={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(a)||(a=[a]),a.forEach(function(a){b.addListener(a,"mousedown",f),g.isOldIE&&b.addListener(a,"dblclick",h)})};var j=!g.isMac||!g.isOpera||"KeyboardEvent"in window?function(a){return 0|(a.ctrlKey?1:0)|(a.altKey?2:0)|(a.shiftKey?4:0)|(a.metaKey?8:0)}:function(a){return 0|(a.metaKey?1:0)|(a.altKey?2:0)|(a.shiftKey?4:0)|(a.ctrlKey?8:0)};if(b.getModifierString=function(a){return f.KEY_MODS[j(a)]},b.addCommandKeyListener=function(a,c){var f=b.addListener;if(g.isOldGecko||g.isOpera&&!("KeyboardEvent"in window)){var i=null;f(a,"keydown",function(a){i=a.keyCode}),f(a,"keypress",function(a){return d(c,a,i)})}else{var j=null;f(a,"keydown",function(a){var b=a.keyCode;h[b]=(h[b]||0)+1,91==b||92==b?h.OSKey=!0:h.OSKey&&a.timeStamp-h.lastT>200&&1==h.count&&e(),1==h[b]&&h.count++,h.lastT=a.timeStamp;var f=d(c,a,b);return j=a.defaultPrevented,f}),f(a,"keypress",function(a){j&&(a.ctrlKey||a.altKey||a.shiftKey||a.metaKey)&&(b.stopEvent(a),j=null)}),f(a,"keyup",function(a){var b=a.keyCode;h[b]?h.count=Math.max(h.count-1,0):e(),91!=b&&92!=b||(h.OSKey=!1),h[b]=null}),h||(e(),f(window,"focus",e))}},"object"==typeof window&&window.postMessage&&!g.isOldIE){var k=1;b.nextTick=function(a,c){c=c||window;var d="zero-timeout-message-"+k;b.addListener(c,"message",function e(f){f.data==d&&(b.stopPropagation(f),b.removeListener(c,"message",e),a())}),c.postMessage(d,"*")}}b.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),b.nextFrame?b.nextFrame=b.nextFrame.bind(window):b.nextFrame=function(a){setTimeout(a,17)}}),define("ace/lib/lang",["require","exports","module"],function(a,b,c){"use strict";b.last=function(a){return a[a.length-1]},b.stringReverse=function(a){return a.split("").reverse().join("")},b.stringRepeat=function(a,b){for(var c="";b>0;)1&b&&(c+=a),(b>>=1)&&(a+=a);return c};var d=/^\\s\\s*/,e=/\\s\\s*$/;b.stringTrimLeft=function(a){return a.replace(d,"")},b.stringTrimRight=function(a){return a.replace(e,"")},b.copyObject=function(a){var b={};for(var c in a)b[c]=a[c];return b},b.copyArray=function(a){for(var b=[],c=0,d=a.length;c1),a.preventDefault()):(this.setState("focusWait"),void this.captureMouse(a))},this.startSelect=function(a,b){a=a||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var c=this.editor;c.$blockScrolling++,this.mousedownEvent.getShiftKey()?c.selection.selectToPosition(a):b||c.selection.moveToPosition(a),b||this.select(),c.renderer.scroller.setCapture&&c.renderer.scroller.setCapture(),c.setStyle("ace_selecting"),this.setState("select"),c.$blockScrolling--},this.select=function(){var a,b=this.editor,c=b.renderer.screenToTextCoordinates(this.x,this.y);if(b.$blockScrolling++,this.$clickSelection){var d=this.$clickSelection.comparePoint(c);if(d==-1)a=this.$clickSelection.end;else if(1==d)a=this.$clickSelection.start;else{var e=f(this.$clickSelection,c);c=e.cursor,a=e.anchor}b.selection.setSelectionAnchor(a.row,a.column)}b.selection.selectToPosition(c),b.$blockScrolling--,b.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(a){var b,c=this.editor,d=c.renderer.screenToTextCoordinates(this.x,this.y),e=c.selection[a](d.row,d.column);if(c.$blockScrolling++,this.$clickSelection){var g=this.$clickSelection.comparePoint(e.start),h=this.$clickSelection.comparePoint(e.end);if(g==-1&&h<=0)b=this.$clickSelection.end,e.end.row==d.row&&e.end.column==d.column||(d=e.start);else if(1==h&&g>=0)b=this.$clickSelection.start,e.start.row==d.row&&e.start.column==d.column||(d=e.end);else if(g==-1&&1==h)d=e.end,b=e.start;else{var i=f(this.$clickSelection,d);d=i.cursor,b=i.anchor}c.selection.setSelectionAnchor(b.row,b.column)}c.selection.selectToPosition(d),c.$blockScrolling--,c.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var a=e(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),b=Date.now();(a>g||b-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(a){var b=a.getDocumentPosition(),c=this.editor,d=c.session,e=d.getBracketRange(b);e?(e.isEmpty()&&(e.start.column--,e.end.column++),this.setState("select")):(e=c.selection.getWordRange(b.row,b.column),this.setState("selectByWords")),this.$clickSelection=e,this.select()},this.onTripleClick=function(a){var b=a.getDocumentPosition(),c=this.editor;this.setState("selectByLines");var d=c.getSelectionRange();d.isMultiLine()&&d.contains(b.row,b.column)?(this.$clickSelection=c.selection.getLineRange(d.start.row),this.$clickSelection.end=c.selection.getLineRange(d.end.row).end):this.$clickSelection=c.selection.getLineRange(b.row),this.select()},this.onQuadClick=function(a){var b=this.editor;b.selectAll(),this.$clickSelection=b.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(a){if(!a.getAccelKey()){a.getShiftKey()&&a.wheelY&&!a.wheelX&&(a.wheelX=a.wheelY,a.wheelY=0);var b=a.domEvent.timeStamp,c=b-(this.$lastScrollTime||0),d=this.editor,e=d.renderer.isScrollableBy(a.wheelX*a.speed,a.wheelY*a.speed);return e||c<200?(this.$lastScrollTime=b,d.renderer.scrollBy(a.wheelX*a.speed,a.wheelY*a.speed),a.stop()):void 0}},this.onTouchMove=function(a){var b=a.domEvent.timeStamp,c=b-(this.$lastScrollTime||0),d=this.editor,e=d.renderer.isScrollableBy(a.wheelX*a.speed,a.wheelY*a.speed);if(e||c<200)return this.$lastScrollTime=b,d.renderer.scrollBy(a.wheelX*a.speed,a.wheelY*a.speed),a.stop()}}).call(d.prototype),b.DefaultHandlers=d}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(a,b,c){"use strict";function d(a){this.isOpen=!1,this.$element=null,this.$parentNode=a}var e=(a("./lib/oop"),a("./lib/dom"));(function(){this.$init=function(){return this.$element=e.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(a){e.setInnerText(this.getElement(),a)},this.setHtml=function(a){this.getElement().innerHTML=a},this.setPosition=function(a,b){this.getElement().style.left=a+"px",this.getElement().style.top=b+"px"},this.setClassName=function(a){e.addCssClass(this.getElement(),a)},this.show=function(a,b,c){null!=a&&this.setText(a),null!=b&&null!=c&&this.setPosition(b,c),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(d.prototype),b.Tooltip=d}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(a,b,c){"use strict";function d(a){function b(){var b=l.getDocumentPosition().row,e=i.$annotations[b];if(!e)return c();var f=g.session.getLength();if(b==f){var h=g.renderer.pixelToScreenCoordinates(0,l.y).row,k=l.$pos;if(h>g.session.documentToScreenRow(k.row,k.column))return c()}if(m!=e)if(m=e.text.join("
    "),j.setHtml(m),j.show(),g.on("mousewheel",c),a.$tooltipFollowsMouse)d(l);else{var n=l.domEvent.target,o=n.getBoundingClientRect(),p=j.getElement().style;p.left=o.right+"px",p.top=o.bottom+"px"}}function c(){k&&(k=clearTimeout(k)),m&&(j.hide(),m=null,g.removeEventListener("mousewheel",c))}function d(a){j.setPosition(a.x,a.y)}var g=a.editor,i=g.renderer.$gutterLayer,j=new e(g.container);a.editor.setDefaultHandler("guttermousedown",function(b){if(g.isFocused()&&0==b.getButton()){var c=i.getRegion(b);if("foldWidgets"!=c){var d=b.getDocumentPosition().row,e=g.session.selection;if(b.getShiftKey())e.selectTo(d,0);else{if(2==b.domEvent.detail)return g.selectAll(),b.preventDefault();a.$clickSelection=g.selection.getLineRange(d)}return a.setState("selectByLines"),a.captureMouse(b),b.preventDefault()}}});var k,l,m;a.editor.setDefaultHandler("guttermousemove",function(e){var g=e.domEvent.target||e.domEvent.srcElement;return f.hasCssClass(g,"ace_fold-widget")?c():(m&&a.$tooltipFollowsMouse&&d(e),l=e,void(k||(k=setTimeout(function(){k=null,l&&!a.isMousePressed?b():c()},50))))}),h.addListener(g.renderer.$gutter,"mouseout",function(a){l=null,m&&!k&&(k=setTimeout(function(){k=null,c()},50))}),g.on("changeSession",c)}function e(a){i.call(this,a)}var f=a("../lib/dom"),g=a("../lib/oop"),h=a("../lib/event"),i=a("../tooltip").Tooltip;g.inherits(e,i),function(){this.setPosition=function(a,b){var c=window.innerWidth||document.documentElement.clientWidth,d=window.innerHeight||document.documentElement.clientHeight,e=this.getWidth(),f=this.getHeight();a+=15,b+=15,a+e>c&&(a-=a+e-c),b+f>d&&(b-=20+f),i.prototype.setPosition.call(this,a,b)}}.call(e.prototype),b.GutterHandler=d}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(a,b,c){"use strict";var d=a("../lib/event"),e=a("../lib/useragent"),f=b.MouseEvent=function(a,b){this.domEvent=a,this.editor=b,this.x=this.clientX=a.clientX,this.y=this.clientY=a.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){d.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){d.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var a=this.editor,b=a.getSelectionRange();if(b.isEmpty())this.$inSelection=!1;else{var c=this.getDocumentPosition();this.$inSelection=b.contains(c.row,c.column)}return this.$inSelection},this.getButton=function(){return d.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=e.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(f.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(a,b,c){"use strict";function d(a){function b(a,b){var c=Date.now(),d=!b||a.row!=b.row,f=!b||a.column!=b.column;if(!C||d||f)q.$blockScrolling+=1,q.moveCursorToPosition(a),q.$blockScrolling-=1,C=c,D={x:u,y:v};else{var g=e(D.x,D.y,u,v);g>k?C=null:c-C>=j&&(q.renderer.scrollCursorIntoView(),C=null)}}function c(a,b){var c=Date.now(),d=q.renderer.layerConfig.lineHeight,e=q.renderer.layerConfig.characterWidth,f=q.renderer.scroller.getBoundingClientRect(),g={x:{left:u-f.left,right:f.right-u},y:{top:v-f.top,bottom:f.bottom-v}},h=Math.min(g.x.left,g.x.right),j=Math.min(g.y.top,g.y.bottom),k={row:a.row,column:a.column};h/e<=2&&(k.column+=g.x.left=i&&q.renderer.scrollCursorIntoView(k):B=c:B=null}function d(){var a=y;y=q.renderer.screenToTextCoordinates(u,v),b(y,a),c(y,a)}function l(){x=q.selection.toOrientedRange(),t=q.session.addMarker(x,"ace_selection",q.getSelectionStyle()),q.clearSelection(),q.isFocused()&&q.renderer.$cursorLayer.setBlinking(!1),clearInterval(w),d(),w=setInterval(d,20),F=0,g.addListener(document,"mousemove",n)}function m(){clearInterval(w),q.session.removeMarker(t),t=null,q.$blockScrolling+=1,q.selection.fromOrientedRange(x),q.$blockScrolling-=1,q.isFocused()&&!A&&q.renderer.$cursorLayer.setBlinking(!q.getReadOnly()),x=null,y=null,F=0,B=null,C=null,g.removeListener(document,"mousemove",n)}function n(){null==G&&(G=setTimeout(function(){null!=G&&t&&m()},20))}function o(a){var b=a.types;return!b||Array.prototype.some.call(b,function(a){return"text/plain"==a||"Text"==a})}function p(a){var b=["copy","copymove","all","uninitialized"],c=["move","copymove","linkmove","all","uninitialized"],d=h.isMac?a.altKey:a.ctrlKey,e="uninitialized";try{e=a.dataTransfer.effectAllowed.toLowerCase()}catch(a){}var f="none";return d&&b.indexOf(e)>=0?f="copy":c.indexOf(e)>=0?f="move":b.indexOf(e)>=0&&(f="copy"),f}var q=a.editor,r=f.createElement("img");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h.isOpera&&(r.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var s=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];s.forEach(function(b){a[b]=this[b]},this),q.addEventListener("mousedown",this.onMouseDown.bind(a));var t,u,v,w,x,y,z,A,B,C,D,E=q.container,F=0;this.onDragStart=function(a){if(this.cancelDrag||!E.draggable){var b=this;return setTimeout(function(){b.startSelect(),b.captureMouse(a)},0),a.preventDefault()}x=q.getSelectionRange();var c=a.dataTransfer;c.effectAllowed=q.getReadOnly()?"copy":"copyMove",h.isOpera&&(q.container.appendChild(r),r.scrollTop=0),c.setDragImage&&c.setDragImage(r,0,0),h.isOpera&&q.container.removeChild(r),c.clearData(),c.setData("Text",q.session.getTextRange()),A=!0,this.setState("drag")},this.onDragEnd=function(a){if(E.draggable=!1,A=!1,this.setState(null),!q.getReadOnly()){var b=a.dataTransfer.dropEffect;z||"move"!=b||q.session.remove(q.getSelectionRange()),q.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(a){if(!q.getReadOnly()&&o(a.dataTransfer))return u=a.clientX,v=a.clientY,t||l(),F++,a.dataTransfer.dropEffect=z=p(a),g.preventDefault(a)},this.onDragOver=function(a){if(!q.getReadOnly()&&o(a.dataTransfer))return u=a.clientX,v=a.clientY,t||(l(),F++),null!==G&&(G=null),a.dataTransfer.dropEffect=z=p(a),g.preventDefault(a)},this.onDragLeave=function(a){if(F--,F<=0&&t)return m(),z=null,g.preventDefault(a)},this.onDrop=function(a){if(y){var b=a.dataTransfer;if(A)switch(z){case"move":x=x.contains(y.row,y.column)?{start:y,end:y}:q.moveText(x,y);break;case"copy":x=q.moveText(x,y,!0)}else{var c=b.getData("Text");x={start:y,end:q.session.insert(y,c)},q.focus(),z=null}return m(),g.preventDefault(a)}},g.addListener(E,"dragstart",this.onDragStart.bind(a)),g.addListener(E,"dragend",this.onDragEnd.bind(a)),g.addListener(E,"dragenter",this.onDragEnter.bind(a)),g.addListener(E,"dragover",this.onDragOver.bind(a)),g.addListener(E,"dragleave",this.onDragLeave.bind(a)),g.addListener(E,"drop",this.onDrop.bind(a));var G=null}function e(a,b,c,d){return Math.sqrt(Math.pow(c-a,2)+Math.pow(d-b,2))}var f=a("../lib/dom"),g=a("../lib/event"),h=a("../lib/useragent"),i=200,j=200,k=5;(function(){this.dragWait=function(){var a=Date.now()-this.mousedownEvent.time;a>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var a=this.editor.container;a.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(a){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var a=this.editor,b=a.container;b.draggable=!0,a.renderer.$cursorLayer.setBlinking(!1),a.setStyle("ace_dragging");var c=h.isWin?"default":"move";a.renderer.setCursorStyle(c),this.setState("dragReady")},this.onMouseDrag=function(a){var b=this.editor.container;if(h.isIE&&"dragReady"==this.state){var c=e(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);c>3&&b.dragDrop()}if("dragWait"===this.state){var c=e(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);c>0&&(b.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(a){if(this.$dragEnabled){this.mousedownEvent=a;var b=this.editor,c=a.inSelection(),d=a.getButton(),e=a.domEvent.detail||1;if(1===e&&0===d&&c){if(a.editor.inMultiSelectMode&&(a.getAccelKey()||a.getShiftKey()))return;this.mousedownEvent.time=Date.now();var f=a.domEvent.target||a.domEvent.srcElement;if("unselectable"in f&&(f.unselectable="on"),b.getDragDelay()){if(h.isWebKit){this.cancelDrag=!0;var g=b.container;g.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(a,this.onMouseDrag.bind(this)),a.defaultPrevented=!0}}}}).call(d.prototype),b.DragdropHandler=d}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict";var d=a("./dom");b.get=function(a,b){var c=new XMLHttpRequest;c.open("GET",a,!0),c.onreadystatechange=function(){4===c.readyState&&b(c.responseText)},c.send(null)},b.loadScript=function(a,b){var c=d.getDocumentHead(),e=document.createElement("script");e.src=a,c.appendChild(e),e.onload=e.onreadystatechange=function(a,c){!c&&e.readyState&&"loaded"!=e.readyState&&"complete"!=e.readyState||(e=e.onload=e.onreadystatechange=null,c||b())}},b.qualifyURL=function(a){var b=document.createElement("a");return b.href=a,b.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(a,b,c){"use strict";var d={},e=function(){this.propagationStopped=!0},f=function(){this.defaultPrevented=!0};d._emit=d._dispatchEvent=function(a,b){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var c=this._eventRegistry[a]||[],d=this._defaultHandlers[a];if(c.length||d){"object"==typeof b&&b||(b={}),b.type||(b.type=a),b.stopPropagation||(b.stopPropagation=e),b.preventDefault||(b.preventDefault=f),c=c.slice();for(var g=0;g1&&(e=c[c.length-2]);var g=j[b+"Path"];return null==g?g=j.basePath:"/"==d&&(b=d=""),g&&"/"!=g.slice(-1)&&(g+="/"),g+b+d+e+this.get("suffix")},b.setModuleUrl=function(a,b){return j.$moduleUrls[a]=b},b.$loading={},b.loadModule=function(c,d){var e,f;Array.isArray(c)&&(f=c[0],c=c[1]);try{e=a(c)}catch(h){}if(e&&!b.$loading[c])return d&&d(e);if(b.$loading[c]||(b.$loading[c]=[]),b.$loading[c].push(d),!(b.$loading[c].length>1)){var i=function(){a([c],function(a){b._emit("load.module",{name:c,module:a});var d=b.$loading[c];b.$loading[c]=null,d.forEach(function(b){b&&b(a)})})};return b.get("packaged")?void g.loadScript(b.moduleUrl(c,f),i):i()}},d(!0),b.init=d}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(a,b,c){"use strict";var d=a("../lib/event"),e=a("../lib/useragent"),f=a("./default_handlers").DefaultHandlers,g=a("./default_gutter_handler").GutterHandler,h=a("./mouse_event").MouseEvent,i=a("./dragdrop_handler").DragdropHandler,j=a("../config"),k=function(a){var b=this;this.editor=a,new f(this),new g(this),new i(this);var c=function(b){var c=!document.hasFocus||!document.hasFocus()||!a.isFocused()&&document.activeElement==(a.textInput&&a.textInput.getElement());c&&window.focus(),a.focus()},h=a.renderer.getMouseEventTarget();d.addListener(h,"click",this.onMouseEvent.bind(this,"click")),d.addListener(h,"mousemove",this.onMouseMove.bind(this,"mousemove")),d.addMultiMouseDownListener([h,a.renderer.scrollBarV&&a.renderer.scrollBarV.inner,a.renderer.scrollBarH&&a.renderer.scrollBarH.inner,a.textInput&&a.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),d.addMouseWheelListener(a.container,this.onMouseWheel.bind(this,"mousewheel")),d.addTouchMoveListener(a.container,this.onTouchMove.bind(this,"touchmove"));var j=a.renderer.$gutter;d.addListener(j,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),d.addListener(j,"click",this.onMouseEvent.bind(this,"gutterclick")),d.addListener(j,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),d.addListener(j,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),d.addListener(h,"mousedown",c),d.addListener(j,"mousedown",c),e.isIE&&a.renderer.scrollBarV&&(d.addListener(a.renderer.scrollBarV.element,"mousedown",c),d.addListener(a.renderer.scrollBarH.element,"mousedown",c)),a.on("mousemove",function(c){if(!b.state&&!b.$dragDelay&&b.$dragEnabled){var d=a.renderer.screenToTextCoordinates(c.x,c.y),e=a.session.selection.getRange(),f=a.renderer;!e.isEmpty()&&e.insideStart(d.row,d.column)?f.setCursorStyle("default"):f.setCursorStyle("")}})};(function(){this.onMouseEvent=function(a,b){this.editor._emit(a,new h(b,this.editor))},this.onMouseMove=function(a,b){var c=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;c&&c.length&&this.editor._emit(a,new h(b,this.editor))},this.onMouseWheel=function(a,b){var c=new h(b,this.editor);c.speed=2*this.$scrollSpeed,c.wheelX=b.wheelX,c.wheelY=b.wheelY,this.editor._emit(a,c)},this.onTouchMove=function(a,b){var c=new h(b,this.editor);c.speed=1,c.wheelX=b.wheelX,c.wheelY=b.wheelY,this.editor._emit(a,c)},this.setState=function(a){this.state=a},this.captureMouse=function(a,b){this.x=a.x,this.y=a.y,this.isMousePressed=!0;var c=this.editor.renderer;c.$keepTextAreaAtCursor&&(c.$keepTextAreaAtCursor=null);var f=this,g=function(a){if(a){if(e.isWebKit&&!a.which&&f.releaseMouse)return f.releaseMouse();f.x=a.clientX,f.y=a.clientY,b&&b(a),f.mouseEvent=new h(a,f.editor),f.$mouseMoved=!0}\n-},i=function(a){clearInterval(k),j(),f[f.state+"End"]&&f[f.state+"End"](a),f.state="",null==c.$keepTextAreaAtCursor&&(c.$keepTextAreaAtCursor=!0,c.$moveTextAreaToCursor()),f.isMousePressed=!1,f.$onCaptureMouseMove=f.releaseMouse=null,a&&f.onMouseEvent("mouseup",a)},j=function(){f[f.state]&&f[f.state](),f.$mouseMoved=!1};if(e.isOldIE&&"dblclick"==a.domEvent.type)return setTimeout(function(){i(a)});f.$onCaptureMouseMove=g,f.releaseMouse=d.capture(this.editor.container,g,i);var k=setInterval(j,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var a=function(b){b&&b.domEvent&&"contextmenu"!=b.domEvent.type||(this.editor.off("nativecontextmenu",a),b&&b.domEvent&&d.stopEvent(b.domEvent))}.bind(this);setTimeout(a,10),this.editor.on("nativecontextmenu",a)}}).call(k.prototype),j.defineOptions(k.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:e.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),b.MouseHandler=k}),define("ace/mouse/fold_handler",["require","exports","module"],function(a,b,c){"use strict";function d(a){a.on("click",function(b){var c=b.getDocumentPosition(),d=a.session,e=d.getFoldAt(c.row,c.column,1);e&&(b.getAccelKey()?d.removeFold(e):d.expandFold(e),b.stop())}),a.on("gutterclick",function(b){var c=a.renderer.$gutterLayer.getRegion(b);if("foldWidgets"==c){var d=b.getDocumentPosition().row,e=a.session;e.foldWidgets&&e.foldWidgets[d]&&a.session.onFoldWidgetClick(d,b),a.isFocused()||a.focus(),b.stop()}}),a.on("gutterdblclick",function(b){var c=a.renderer.$gutterLayer.getRegion(b);if("foldWidgets"==c){var d=b.getDocumentPosition().row,e=a.session,f=e.getParentFoldRangeData(d,!0),g=f.range||f.firstRange;if(g){d=g.start.row;var h=e.getFoldAt(d,e.getLine(d).length,1);h?e.removeFold(h):(e.addFold("...",g),a.renderer.scrollCursorIntoView({row:g.start.row,column:0}))}b.stop()}})}b.FoldHandler=d}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(a,b,c){"use strict";var d=a("../lib/keys"),e=a("../lib/event"),f=function(a){this.$editor=a,this.$data={editor:a},this.$handlers=[],this.setDefaultHandler(a.commands)};(function(){this.setDefaultHandler=function(a){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=a,this.addKeyboardHandler(a,0)},this.setKeyboardHandler=function(a){var b=this.$handlers;if(b[b.length-1]!=a){for(;b[b.length-1]&&b[b.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(b[b.length-1]);this.addKeyboardHandler(a,1)}},this.addKeyboardHandler=function(a,b){if(a){"function"!=typeof a||a.handleKeyboard||(a.handleKeyboard=a);var c=this.$handlers.indexOf(a);c!=-1&&this.$handlers.splice(c,1),void 0==b?this.$handlers.push(a):this.$handlers.splice(b,0,a),c==-1&&a.attach&&a.attach(this.$editor)}},this.removeKeyboardHandler=function(a){var b=this.$handlers.indexOf(a);return b!=-1&&(this.$handlers.splice(b,1),a.detach&&a.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var a=this.$data,b=a.editor;return this.$handlers.map(function(c){return c.getStatusText&&c.getStatusText(b,a)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(a,b,c,d){for(var f,g=!1,h=this.$editor.commands,i=this.$handlers.length;i--&&(f=this.$handlers[i].handleKeyboard(this.$data,a,b,c,d),!(f&&f.command&&(g="null"==f.command||h.exec(f.command,this.$editor,f.args,d),g&&d&&a!=-1&&1!=f.passEvent&&1!=f.command.passEvent&&e.stopEvent(d),g))););return g||a!=-1||(f={command:"insertstring"},g=h.exec("insertstring",this.$editor,b)),g&&this.$editor._signal("keyboardActivity",f),g},this.onCommandKey=function(a,b,c){var e=d.keyCodeToString(c);this.$callKeyboardHandlers(b,e,c,a)},this.onTextInput=function(a){this.$callKeyboardHandlers(-1,a)}}).call(f.prototype),b.KeyBinding=f}),define("ace/range",["require","exports","module"],function(a,b,c){"use strict";var d=function(a,b){return a.row-b.row||a.column-b.column},e=function(a,b,c,d){this.start={row:a,column:b},this.end={row:c,column:d}};(function(){this.isEqual=function(a){return this.start.row===a.start.row&&this.end.row===a.end.row&&this.start.column===a.start.column&&this.end.column===a.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(a,b){return 0==this.compare(a,b)},this.compareRange=function(a){var b,c=a.end,d=a.start;return b=this.compare(c.row,c.column),1==b?(b=this.compare(d.row,d.column),1==b?2:0==b?1:0):b==-1?-2:(b=this.compare(d.row,d.column),b==-1?-1:1==b?42:0)},this.comparePoint=function(a){return this.compare(a.row,a.column)},this.containsRange=function(a){return 0==this.comparePoint(a.start)&&0==this.comparePoint(a.end)},this.intersects=function(a){var b=this.compareRange(a);return b==-1||0==b||1==b},this.isEnd=function(a,b){return this.end.row==a&&this.end.column==b},this.isStart=function(a,b){return this.start.row==a&&this.start.column==b},this.setStart=function(a,b){"object"==typeof a?(this.start.column=a.column,this.start.row=a.row):(this.start.row=a,this.start.column=b)},this.setEnd=function(a,b){"object"==typeof a?(this.end.column=a.column,this.end.row=a.row):(this.end.row=a,this.end.column=b)},this.inside=function(a,b){return 0==this.compare(a,b)&&(!this.isEnd(a,b)&&!this.isStart(a,b))},this.insideStart=function(a,b){return 0==this.compare(a,b)&&!this.isEnd(a,b)},this.insideEnd=function(a,b){return 0==this.compare(a,b)&&!this.isStart(a,b)},this.compare=function(a,b){return this.isMultiLine()||a!==this.start.row?athis.end.row?1:this.start.row===a?b>=this.start.column?0:-1:this.end.row===a?b<=this.end.column?0:1:0:bthis.end.column?1:0},this.compareStart=function(a,b){return this.start.row==a&&this.start.column==b?-1:this.compare(a,b)},this.compareEnd=function(a,b){return this.end.row==a&&this.end.column==b?1:this.compare(a,b)},this.compareInside=function(a,b){return this.end.row==a&&this.end.column==b?1:this.start.row==a&&this.start.column==b?-1:this.compare(a,b)},this.clipRows=function(a,b){if(this.end.row>b)var c={row:b+1,column:0};else if(this.end.rowb)var d={row:b+1,column:0};else if(this.start.rowb.row||a.row==b.row&&a.column>b.column},this.getRange=function(){var a=this.anchor,b=this.lead;return this.isEmpty()?g.fromPoints(b,b):this.isBackwards()?g.fromPoints(b,a):g.fromPoints(a,b)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var a=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(a,this.doc.getLine(a).length)},this.setRange=this.setSelectionRange=function(a,b){b?(this.setSelectionAnchor(a.end.row,a.end.column),this.selectTo(a.start.row,a.start.column)):(this.setSelectionAnchor(a.start.row,a.start.column),this.selectTo(a.end.row,a.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(a){var b=this.lead;this.$isEmpty&&this.setSelectionAnchor(b.row,b.column),a.call(this)},this.selectTo=function(a,b){this.$moveSelection(function(){this.moveCursorTo(a,b)})},this.selectToPosition=function(a){this.$moveSelection(function(){this.moveCursorToPosition(a)})},this.moveTo=function(a,b){this.clearSelection(),this.moveCursorTo(a,b)},this.moveToPosition=function(a){this.clearSelection(),this.moveCursorToPosition(a)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(a,b){if("undefined"==typeof b){var c=a||this.lead;a=c.row,b=c.column}return this.session.getWordRange(a,b)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var a=this.getCursor(),b=this.session.getAWordRange(a.row,a.column);this.setSelectionRange(b)},this.getLineRange=function(a,b){var c,d="number"==typeof a?a:this.lead.row,e=this.session.getFoldLine(d);return e?(d=e.start.row,c=e.end.row):c=d,b===!0?new g(d,0,c,this.session.getLine(c).length):new g(d,0,c+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var a,b=this.lead.getPosition();if(a=this.session.getFoldAt(b.row,b.column,-1))this.moveCursorTo(a.start.row,a.start.column);else if(0===b.column)b.row>0&&this.moveCursorTo(b.row-1,this.doc.getLine(b.row-1).length);else{var c=this.session.getTabSize();this.session.isTabStop(b)&&this.doc.getLine(b.row).slice(b.column-c,b.column).split(" ").length-1==c?this.moveCursorBy(0,-c):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var a,b=this.lead.getPosition();if(a=this.session.getFoldAt(b.row,b.column,1))this.moveCursorTo(a.end.row,a.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(b.column=d)}}this.moveCursorTo(b.row,b.column)},this.moveCursorFileEnd=function(){var a=this.doc.getLength()-1,b=this.doc.getLine(a).length;this.moveCursorTo(a,b)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var a,b=this.lead.row,c=this.lead.column,d=this.doc.getLine(b),e=d.substring(c);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var f=this.session.getFoldAt(b,c,1);return f?void this.moveCursorTo(f.end.row,f.end.column):((a=this.session.nonTokenRe.exec(e))&&(c+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,e=d.substring(c)),c>=d.length?(this.moveCursorTo(b,d.length),this.moveCursorRight(),void(b0&&this.moveCursorWordLeft())):((f=this.session.tokenRe.exec(g))&&(c-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(b,c))},this.$shortWordEndIndex=function(a){var b,c,d=0,e=/\\s/,f=this.session.tokenRe;if(f.lastIndex=0,b=this.session.tokenRe.exec(a))d=this.session.tokenRe.lastIndex;else{for(;(c=a[d])&&e.test(c);)d++;if(d<1)for(f.lastIndex=0;(c=a[d])&&!f.test(c);)if(f.lastIndex=0,d++,e.test(c)){if(d>2){d--;break}for(;(c=a[d])&&e.test(c);)d++;if(d>2)break}}return f.lastIndex=0,d},this.moveCursorShortWordRight=function(){var a=this.lead.row,b=this.lead.column,c=this.doc.getLine(a),d=c.substring(b),e=this.session.getFoldAt(a,b,1);if(e)return this.moveCursorTo(e.end.row,e.end.column);if(b==c.length){var f=this.doc.getLength();do a++,d=this.doc.getLine(a);while(a0&&/^\\s*$/.test(d));c=d.length,/\\s+$/.test(d)||(d="")}var f=e.stringReverse(d),g=this.$shortWordEndIndex(f);return this.moveCursorTo(b,c-g)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(a,b){var c=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===b&&(this.$desiredColumn?c.column=this.$desiredColumn:this.$desiredColumn=c.column);var d=this.session.screenToDocumentPosition(c.row+a,c.column);0!==a&&0===b&&d.row===this.lead.row&&d.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[d.row]&&(d.row>0||a>0)&&d.row++,this.moveCursorTo(d.row,d.column+b,0===b)},this.moveCursorToPosition=function(a){this.moveCursorTo(a.row,a.column)},this.moveCursorTo=function(a,b,c){var d=this.session.getFoldAt(a,b,1);d&&(a=d.start.row,b=d.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(a,b),this.$keepDesiredColumnOnChange=!1,c||(this.$desiredColumn=null)},this.moveCursorToScreen=function(a,b,c){var d=this.session.screenToDocumentPosition(a,b);this.moveCursorTo(d.row,d.column,c)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(a){this.setSelectionRange(a,a.cursor==a.start),this.$desiredColumn=a.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(a){var b=this.getRange();return a?(a.start.column=b.start.column,a.start.row=b.start.row,a.end.column=b.end.column,a.end.row=b.end.row):a=b,a.cursor=this.isBackwards()?a.start:a.end,a.desiredColumn=this.$desiredColumn,a},this.getRangeOfMovements=function(a){var b=this.getCursor();try{a(this);var c=this.getCursor();return g.fromPoints(b,c)}catch(d){return g.fromPoints(b,b)}finally{this.moveCursorToPosition(b)}},this.toJSON=function(){if(this.rangeCount)var a=this.ranges.map(function(a){var b=a.clone();return b.isBackwards=a.cursor==a.start,b});else{var a=this.getRange();a.isBackwards=this.isBackwards()}return a},this.fromJSON=function(a){if(void 0==a.start){if(this.rangeList){this.toSingleRange(a[0]);for(var b=a.length;b--;){var c=g.fromPoints(a[b].start,a[b].end);a[b].isBackwards&&(c.cursor=c.start),this.addRange(c,!0)}return}a=a[0]}this.rangeList&&this.toSingleRange(a),this.setSelectionRange(a,a.isBackwards)},this.isEqual=function(a){if((a.length||this.rangeCount)&&a.length!=this.rangeCount)return!1;if(!a.length||!this.ranges)return this.getRange().isEqual(a);for(var b=this.ranges.length;b--;)if(!this.ranges[b].isEqual(a[b]))return!1;return!0}}).call(h.prototype),b.Selection=h}),define("ace/tokenizer",["require","exports","module","ace/config"],function(a,b,c){"use strict";var d=a("./config"),e=2e3,f=function(a){this.states=a,this.regExps={},this.matchMappings={};for(var b in this.states){for(var c=this.states[b],d=[],e=0,f=this.matchMappings[b]={defaultToken:"text"},g="g",h=[],i=0;i1?j.onMatch=this.$applyToken:j.onMatch=j.token),l>1&&(/\\\\\\d/.test(j.regex)?k=j.regex.replace(/\\\\([0-9]+)/g,function(a,b){return"\\\\"+(parseInt(b,10)+e+1)}):(l=1,k=this.removeCapturingGroups(j.regex)),j.splitRegex||"string"==typeof j.token||h.push(j)),f[e]=i,e+=l,d.push(k),j.onMatch||(j.onMatch=null)}}d.length||(f[0]=0,d.push("$")),h.forEach(function(a){a.splitRegex=this.createSplitterRegexp(a.regex,g)},this),this.regExps[b]=new RegExp("("+d.join(")|(")+")|($)",g)}};(function(){this.$setMaxTokenCount=function(a){e=0|a},this.$applyToken=function(a){var b=this.splitRegex.exec(a).slice(1),c=this.token.apply(this,b);if("string"==typeof c)return[{type:c,value:a}];for(var d=[],e=0,f=c.length;ek){var r=a.substring(k,q-p.length);m.type==n?m.value+=r:(m.type&&j.push(m),m={type:n,value:r})}for(var s=0;se){for(l>2*a.length&&this.reportError("infinite loop with in ace tokenizer",{startState:b,line:a});k1&&c[0]!==d&&c.unshift("#tmp",d),{tokens:j,state:c.length?c:d}},this.reportError=d.reportError}).call(f.prototype),b.Tokenizer=f}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(a,b,c){"use strict";var d=a("../lib/lang"),e=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(a,b){if(b)for(var c in a){for(var d=a[c],e=0;e=this.$rowTokens.length;){if(this.$row+=1,a||(a=this.$session.getLength()),this.$row>=a)return this.$row=a-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var a=this.$rowTokens,b=this.$tokenIndex,c=a[b].start;if(void 0!==c)return c;for(c=0;b>0;)b-=1,c+=a[b].value.length;return c},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(d.prototype),b.TokenIterator=d}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(a,b,c){"use strict";var d=a("../tokenizer").Tokenizer,e=a("./text_highlight_rules").TextHighlightRules,f=a("./behaviour").Behaviour,g=a("../unicode"),h=a("../lib/lang"),i=a("../token_iterator").TokenIterator,j=a("../range").Range,k=function(){this.HighlightRules=e,this.$behaviour=new f};(function(){this.tokenRe=new RegExp("^["+g.packages.L+g.packages.Mn+g.packages.Mc+g.packages.Nd+g.packages.Pc+"\\\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+g.packages.L+g.packages.Mn+g.packages.Mc+g.packages.Nd+g.packages.Pc+"\\\\$_]|\\\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new d(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(a,b,c,d){function e(a){for(var b=c;b<=d;b++)a(f.getLine(b),b)}var f=b.doc,g=!0,i=!0,j=1/0,k=b.getTabSize(),l=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var m=this.lineCommentStart.map(h.escapeRegExp).join("|"),n=this.lineCommentStart[0];else var m=h.escapeRegExp(this.lineCommentStart),n=this.lineCommentStart;m=new RegExp("^(\\\\s*)(?:"+m+") ?"),l=b.getUseSoftTabs();var o=function(a,b){var c=a.match(m);if(c){var d=c[1].length,e=c[0].length;s(a,d,e)||" "!=c[0][e-1]||e--,f.removeInLine(b,d,e)}},p=n+" ",q=function(a,b){g&&!/\\S/.test(a)||(s(a,j,j)?f.insertInLine({row:b,column:j},p):f.insertInLine({row:b,column:j},n))},r=function(a,b){return m.test(a)},s=function(a,b,c){for(var d=0;b--&&" "==a.charAt(b);)d++;if(d%k!=0)return!1;for(var d=0;" "==a.charAt(c++);)d++;return k>2?d%k!=k-1:d%k==0}}else{if(!this.blockComment)return!1;var n=this.blockComment.start,t=this.blockComment.end,m=new RegExp("^(\\\\s*)(?:"+h.escapeRegExp(n)+")"),u=new RegExp("(?:"+h.escapeRegExp(t)+")\\\\s*$"),q=function(a,b){r(a,b)||g&&!/\\S/.test(a)||(f.insertInLine({row:b,column:a.length},t),f.insertInLine({row:b,column:j},n))},o=function(a,b){var c;(c=a.match(u))&&f.removeInLine(b,a.length-c[0].length,a.length),(c=a.match(m))&&f.removeInLine(b,c[1].length,c[0].length)},r=function(a,c){if(m.test(a))return!0;for(var d=b.getTokens(c),e=0;ea.length&&(v=a.length)}),j==1/0&&(j=v,g=!1,i=!1),l&&j%k!=0&&(j=Math.floor(j/k)*k),e(i?o:q)},this.toggleBlockComment=function(a,b,c,d){var e=this.blockComment;if(e){!e.start&&e[0]&&(e=e[0]);var f,g,h=new i(b,d.row,d.column),k=h.getCurrentToken(),l=(b.selection,b.selection.toOrientedRange());if(k&&/comment/.test(k.type)){for(var m,n;k&&/comment/.test(k.type);){var o=k.value.indexOf(e.start);if(o!=-1){var p=h.getCurrentTokenRow(),q=h.getCurrentTokenColumn()+o;m=new j(p,q,p,q+e.start.length);break}k=h.stepBackward()}for(var h=new i(b,d.row,d.column),k=h.getCurrentToken();k&&/comment/.test(k.type);){var o=k.value.indexOf(e.end);if(o!=-1){var p=h.getCurrentTokenRow(),q=h.getCurrentTokenColumn()+o;n=new j(p,q,p,q+e.end.length);break}k=h.stepForward()}n&&b.remove(n),m&&(b.remove(m),f=m.start.row,g=-e.start.length)}else g=e.start.length,f=c.start.row,b.insert(c.end,e.end),b.insert(c.start,e.start);l.start.row==f&&(l.start.column+=g),l.end.row==f&&(l.end.column+=g),b.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(a,b,c){return this.$getIndent(b)},this.checkOutdent=function(a,b,c){return!1},this.autoOutdent=function(a,b,c){},this.$getIndent=function(a){return a.match(/^\\s*/)[0]},this.createWorker=function(a){return null},this.createModeDelegates=function(a){this.$embeds=[],this.$modes={};for(var b in a)a[b]&&(this.$embeds.push(b),this.$modes[b]=new a[b]);for(var c=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],b=0;bthis.row)){var c=b(a,{row:this.row,column:this.column},this.$insertRight);this.setPosition(c.row,c.column,!0)}},this.setPosition=function(a,b,c){var d;if(d=c?{row:a,column:b}:this.$clipPositionToDocument(a,b),this.row!=d.row||this.column!=d.column){var e={row:this.row,column:this.column};this.row=d.row,this.column=d.column,this._signal("change",{old:e,value:d})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(a){this.document=a||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(a,b){var c={};return a>=this.document.getLength()?(c.row=Math.max(0,this.document.getLength()-1),c.column=this.document.getLine(c.row).length):a<0?(c.row=0,c.column=0):(c.row=a,c.column=Math.min(this.document.getLine(c.row).length,Math.max(0,b))),b<0&&(c.column=0),c}}).call(f.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(a,b,c){"use strict";var d=a("./lib/oop"),e=a("./apply_delta").applyDelta,f=a("./lib/event_emitter").EventEmitter,g=a("./range").Range,h=a("./anchor").Anchor,i=function(a){this.$lines=[""],0===a.length?this.$lines=[""]:Array.isArray(a)?this.insertMergedLines({row:0,column:0},a):this.insert({row:0,column:0},a)};(function(){d.implement(this,f),this.setValue=function(a){var b=this.getLength()-1;this.remove(new g(0,0,b,this.getLine(b).length)),this.insert({row:0,column:0},a)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(a,b){return new h(this,a,b)},0==="aaa".split(/a/).length?this.$split=function(a){return a.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:this.$split=function(a){return a.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(a){var b=a.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=b?b[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(a){this.$newLineMode!==a&&(this.$newLineMode=a,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(a){return"\\r\\n"==a||"\\r"==a||"\\n"==a},this.getLine=function(a){return this.$lines[a]||""},this.getLines=function(a,b){return this.$lines.slice(a,b+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(a){return this.getLinesForRange(a).join(this.getNewLineCharacter())},this.getLinesForRange=function(a){var b;if(a.start.row===a.end.row)b=[this.getLine(a.start.row).substring(a.start.column,a.end.column)];else{b=this.getLines(a.start.row,a.end.row),b[0]=(b[0]||"").substring(a.start.column);var c=b.length-1;a.end.row-a.start.row==c&&(b[c]=b[c].substring(0,a.end.column))}return b},this.insertLines=function(a,b){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(a,b)},this.removeLines=function(a,b){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(a,b)},this.insertNewLine=function(a){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(a,["",""])},this.insert=function(a,b){return this.getLength()<=1&&this.$detectNewLine(b),this.insertMergedLines(a,this.$split(b))},this.insertInLine=function(a,b){var c=this.clippedPos(a.row,a.column),d=this.pos(a.row,a.column+b.length);return this.applyDelta({start:c,end:d,action:"insert",lines:[b]},!0),this.clonePos(d)},this.clippedPos=function(a,b){var c=this.getLength();void 0===a?a=c:a<0?a=0:a>=c&&(a=c-1,b=void 0);var d=this.getLine(a);return void 0==b&&(b=d.length),b=Math.min(Math.max(b,0),d.length),{row:a,column:b}},this.clonePos=function(a){return{row:a.row,column:a.column}},this.pos=function(a,b){return{row:a,column:b}},this.$clipPosition=function(a){var b=this.getLength();return a.row>=b?(a.row=Math.max(0,b-1),a.column=this.getLine(b-1).length):(a.row=Math.max(0,a.row),a.column=Math.min(Math.max(a.column,0),this.getLine(a.row).length)),a},this.insertFullLines=function(a,b){a=Math.min(Math.max(a,0),this.getLength());var c=0;a0,d=b=0&&this.applyDelta({start:this.pos(a,this.getLine(a).length),end:this.pos(a+1,0),action:"remove",lines:["",""]})},this.replace=function(a,b){if(a instanceof g||(a=g.fromPoints(a.start,a.end)),0===b.length&&a.isEmpty())return a.start;if(b==this.getTextRange(a))return a.end;this.remove(a);var c;return c=b?this.insert(a.start,b):a.start},this.applyDeltas=function(a){for(var b=0;b=0;b--)this.revertDelta(a[b]);\n-},this.applyDelta=function(a,b){var c="insert"==a.action;(c?a.lines.length<=1&&!a.lines[0]:!g.comparePoints(a.start,a.end))||(c&&a.lines.length>2e4&&this.$splitAndapplyLargeDelta(a,2e4),e(this.$lines,a,b),this._signal("change",a))},this.$splitAndapplyLargeDelta=function(a,b){for(var c=a.lines,d=c.length,e=a.start.row,f=a.start.column,g=0,h=0;;){g=h,h+=b-1;var i=c.slice(g,h);if(h>d){a.lines=i,a.start.row=e+g,a.start.column=f;break}i.push(""),this.applyDelta({start:this.pos(e+g,f),end:this.pos(e+h,f=0),action:a.action,lines:i},!0)}},this.revertDelta=function(a){this.applyDelta({start:this.clonePos(a.start),end:this.clonePos(a.end),action:"insert"==a.action?"remove":"insert",lines:a.lines.slice()})},this.indexToPosition=function(a,b){for(var c=this.$lines||this.getAllLines(),d=this.getNewLineCharacter().length,e=b||0,f=c.length;e20){c.running=setTimeout(c.$worker,20);break}}c.currentLine=b,f<=d&&c.fireUpdateEvent(f,d)}}};(function(){d.implement(this,e),this.setTokenizer=function(a){this.tokenizer=a,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(a){this.doc=a,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(a,b){var c={first:a,last:b};this._signal("update",{data:c})},this.start=function(a){this.currentLine=Math.min(a||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(a){var b=a.start.row,c=a.end.row-b;if(0===c)this.lines[b]=null;else if("remove"==a.action)this.lines.splice(b,c+1,null),this.states.splice(b,c+1,null);else{var d=Array(c+1);d.unshift(b,1),this.lines.splice.apply(this.lines,d),this.states.splice.apply(this.states,d)}this.currentLine=Math.min(b,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(a){return this.lines[a]||this.$tokenizeRow(a)},this.getState=function(a){return this.currentLine==a&&this.$tokenizeRow(a),this.states[a]||"start"},this.$tokenizeRow=function(a){var b=this.doc.getLine(a),c=this.states[a-1],d=this.tokenizer.getLineTokens(b,c,a);return this.states[a]+""!=d.state+""?(this.states[a]=d.state,this.lines[a+1]=null,this.currentLine>a+1&&(this.currentLine=a+1)):this.currentLine==a&&(this.currentLine=a+1),this.lines[a]=d.tokens}}).call(f.prototype),b.BackgroundTokenizer=f}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(a,b,c){"use strict";var d=a("./lib/lang"),e=(a("./lib/oop"),a("./range").Range),f=function(a,b,c){this.setRegexp(a),this.clazz=b,this.type=c||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(a){this.regExp+""!=a+""&&(this.regExp=a,this.cache=[])},this.update=function(a,b,c,f){if(this.regExp)for(var g=f.firstRow,h=f.lastRow,i=g;i<=h;i++){var j=this.cache[i];null==j&&(j=d.getMatchOffsets(c.getLine(i),this.regExp),j.length>this.MAX_RANGES&&(j=j.slice(0,this.MAX_RANGES)),j=j.map(function(a){return new e(i,a.offset,i,a.offset+a.length)}),this.cache[i]=j.length?j:"");for(var k=j.length;k--;)b.drawSingleLineMarker(a,j[k].toScreenRange(c),this.clazz,f)}}}).call(f.prototype),b.SearchHighlight=f}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(a,b,c){"use strict";function d(a,b){this.foldData=a,Array.isArray(b)?this.folds=b:b=this.folds=[b];var c=b[b.length-1];this.range=new e(b[0].start.row,b[0].start.column,c.end.row,c.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(a){a.setFoldLine(this)},this)}var e=a("../range").Range;(function(){this.shiftRow=function(a){this.start.row+=a,this.end.row+=a,this.folds.forEach(function(b){b.start.row+=a,b.end.row+=a})},this.addFold=function(a){if(a.sameRow){if(a.start.rowthis.endRow)throw new Error("Can\'t add a fold to this FoldLine as it has no connection");this.folds.push(a),this.folds.sort(function(a,b){return-a.range.compareEnd(b.start.row,b.start.column)}),this.range.compareEnd(a.start.row,a.start.column)>0?(this.end.row=a.end.row,this.end.column=a.end.column):this.range.compareStart(a.end.row,a.end.column)<0&&(this.start.row=a.start.row,this.start.column=a.start.column)}else if(a.start.row==this.end.row)this.folds.push(a),this.end.row=a.end.row,this.end.column=a.end.column;else{if(a.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn\'t have a matching row");this.folds.unshift(a),this.start.row=a.start.row,this.start.column=a.start.column}a.foldLine=this},this.containsRow=function(a){return a>=this.start.row&&a<=this.end.row},this.walk=function(a,b,c){var d,e,f,g=0,h=this.folds,i=!0;null==b&&(b=this.end.row,c=this.end.column);for(var j=0;j0)){var i=e(a,g.start);return 0===h?b&&0!==i?-f-2:f:i>0||0===i&&!b?f:-f-1}}return-f-1},this.add=function(a){var b=!a.isEmpty(),c=this.pointIndex(a.start,b);c<0&&(c=-c-1);var d=this.pointIndex(a.end,b,c);return d<0?d=-d-1:d++,this.ranges.splice(c,d-c,a)},this.addList=function(a){for(var b=[],c=a.length;c--;)b.push.apply(b,this.add(a[c]));return b},this.substractPoint=function(a){var b=this.pointIndex(a);if(b>=0)return this.ranges.splice(b,1)},this.merge=function(){var a=[],b=this.ranges;b=b.sort(function(a,b){return e(a.start,b.start)});for(var c,d=b[0],f=1;f=0},this.containsPoint=function(a){return this.pointIndex(a)>=0},this.rangeAtPoint=function(a){var b=this.pointIndex(a);if(b>=0)return this.ranges[b]},this.clipRows=function(a,b){var c=this.ranges;if(c[0].start.row>b||c[c.length-1].start.rowd)break;if(k.start.row==d&&k.start.column>=b.column&&(k.start.column==b.column&&this.$insertRight||(k.start.column+=g,k.start.row+=f)),k.end.row==d&&k.end.column>=b.column){if(k.end.column==b.column&&this.$insertRight)continue;k.end.column==b.column&&g>0&&ik.start.column&&k.end.column==h[i+1].start.column&&(k.end.column-=g),k.end.column+=g,k.end.row+=f}}}if(0!=f&&i=a)return e;if(e.end.row>a)return null}return null},this.getNextFoldLine=function(a,b){var c=this.$foldData,d=0;for(b&&(d=c.indexOf(b)),d==-1&&(d=0),d;d=a)return e}return null},this.getFoldedRowCount=function(a,b){for(var c=this.$foldData,d=b-a+1,e=0;e=b){h=a?d-=b-h:d=0);break}g>=a&&(d-=h>=a?g-h:g-a+1)}return d},this.$addFoldLine=function(a){return this.$foldData.push(a),this.$foldData.sort(function(a,b){return a.start.row-b.start.row}),a},this.addFold=function(a,b){var c,d=this.$foldData,e=!1;a instanceof g?c=a:(c=new g(b,a),c.collapseChildren=b.collapseChildren),this.$clipRangeToDocument(c.range);var h=c.start.row,i=c.start.column,j=c.end.row,k=c.end.column;if(!(h0&&(this.removeFolds(n),n.forEach(function(a){c.addSubFold(a)}));for(var o=0;o0&&this.foldAll(a.start.row+1,a.end.row,a.collapseChildren-1),a.subFolds=[]},this.expandFolds=function(a){a.forEach(function(a){this.expandFold(a)},this)},this.unfold=function(a,b){var c,d;if(null==a?(c=new e(0,0,this.getLength(),0),b=!0):c="number"==typeof a?new e(a,0,a,this.getLine(a).length):"row"in a?e.fromPoints(a,a):a,d=this.getFoldsInRangeList(c),b)this.removeFolds(d);else for(var f=d;f.length;)this.expandFolds(f),f=this.getFoldsInRangeList(c);if(d.length)return d},this.isRowFolded=function(a,b){return!!this.getFoldLine(a,b)},this.getRowFoldEnd=function(a,b){var c=this.getFoldLine(a,b);return c?c.end.row:a},this.getRowFoldStart=function(a,b){var c=this.getFoldLine(a,b);return c?c.start.row:a},this.getFoldDisplayLine=function(a,b,c,d,e){null==d&&(d=a.start.row),null==e&&(e=0),null==b&&(b=a.end.row),null==c&&(c=this.getLine(b).length);var f=this.doc,g="";return a.walk(function(a,b,c,h){if(!(b=a){e=f.end.row;try{var g=this.addFold("...",f);g&&(g.collapseChildren=c)}catch(h){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(a){if(!this.$foldStyles[a])throw new Error("invalid fold style: "+a+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=a){this.$foldStyle=a,"manual"==a&&this.unfold();var b=this.$foldMode;this.$setFolding(null),this.$setFolding(b)}},this.$setFolding=function(a){if(this.$foldMode!=a){if(this.$foldMode=a,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!a||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=a.getFoldWidget.bind(a,this,this.$foldStyle),this.getFoldWidgetRange=a.getFoldWidgetRange.bind(a,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(a,b){var c=this.foldWidgets;if(!c||b&&c[a])return{};for(var d,e=a-1;e>=0;){var f=c[e];if(null==f&&(f=c[e]=this.getFoldWidget(e)),"start"==f){var g=this.getFoldWidgetRange(e);if(d||(d=g),g&&g.end.row>=a)break}e--}return{range:e!==-1&&g,firstRange:d}},this.onFoldWidgetClick=function(a,b){b=b.domEvent;var c={children:b.shiftKey,all:b.ctrlKey||b.metaKey,siblings:b.altKey},d=this.$toggleFoldWidget(a,c);if(!d){var e=b.target||b.srcElement;e&&/ace_fold-widget/.test(e.className)&&(e.className+=" ace_invalid")}},this.$toggleFoldWidget=function(a,b){if(this.getFoldWidget){var c=this.getFoldWidget(a),d=this.getLine(a),e="end"===c?-1:1,f=this.getFoldAt(a,e===-1?0:d.length,e);if(f)return void(b.children||b.all?this.removeFold(f):this.expandFold(f));var g=this.getFoldWidgetRange(a,!0);if(g&&!g.isMultiLine()&&(f=this.getFoldAt(g.start.row,g.start.column,1),f&&g.isEqual(f.range)))return void this.removeFold(f);if(b.siblings){var h=this.getParentFoldRangeData(a);if(h.range)var i=h.range.start.row+1,j=h.range.end.row;this.foldAll(i,j,b.all?1e4:0)}else b.children?(j=g?g.end.row:this.getLength(),this.foldAll(a+1,j,b.all?1e4:0)):g&&(b.all&&(g.collapseChildren=1e4),this.addFold("...",g));return g}},this.toggleFoldWidget=function(a){var b=this.selection.getCursor().row;b=this.getRowFoldStart(b);var c=this.$toggleFoldWidget(b,{});if(!c){var d=this.getParentFoldRangeData(b,!0);if(c=d.range||d.firstRange){b=c.start.row;var e=this.getFoldAt(b,this.getLine(b).length,1);e?this.removeFold(e):this.addFold("...",c)}}},this.updateFoldWidgets=function(a){var b=a.start.row,c=a.end.row-b;if(0===c)this.foldWidgets[b]=null;else if("remove"==a.action)this.foldWidgets.splice(b,c+1,null);else{var d=Array(c+1);d.unshift(b,1),this.foldWidgets.splice.apply(this.foldWidgets,d)}},this.tokenizerUpdateFoldWidgets=function(a){var b=a.data;b.first!=b.last&&this.foldWidgets.length>b.first&&this.foldWidgets.splice(b.first,this.foldWidgets.length)}}var e=a("../range").Range,f=a("./fold_line").FoldLine,g=a("./fold").Fold,h=a("../token_iterator").TokenIterator;b.Folding=d}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(a,b,c){"use strict";function d(){this.findMatchingBracket=function(a,b){if(0==a.column)return null;var c=b||this.getLine(a.row).charAt(a.column-1);if(""==c)return null;var d=c.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return d?d[1]?this.$findClosingBracket(d[1],a):this.$findOpeningBracket(d[2],a):null},this.getBracketRange=function(a){var b,c=this.getLine(a.row),d=!0,e=c.charAt(a.column-1),g=e&&e.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(g||(e=c.charAt(a.column),a={row:a.row,column:a.column+1},g=e&&e.match(/([\\(\\[\\{])|([\\)\\]\\}])/),d=!1),!g)return null;if(g[1]){var h=this.$findClosingBracket(g[1],a);if(!h)return null;b=f.fromPoints(a,h),d||(b.end.column++,b.start.column--),b.cursor=b.end}else{var h=this.$findOpeningBracket(g[2],a);if(!h)return null;b=f.fromPoints(h,a),d||(b.start.column++,b.end.column--),b.cursor=b.start}return b},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(a,b,c){var d=this.$brackets[a],f=1,g=new e(this,b.row,b.column),h=g.getCurrentToken();if(h||(h=g.stepForward()),h){c||(c=new RegExp("(\\\\.?"+h.type.replace(".","\\\\.").replace("rparen",".paren").replace(/\\b(?:end)\\b/,"(?:start|begin|end)")+")+"));for(var i=b.column-g.getCurrentTokenColumn()-2,j=h.value;;){for(;i>=0;){var k=j.charAt(i);if(k==d){if(f-=1,0==f)return{row:g.getCurrentTokenRow(),column:i+g.getCurrentTokenColumn()}}else k==a&&(f+=1);i-=1}do h=g.stepBackward();while(h&&!c.test(h.type));if(null==h)break;j=h.value,i=j.length-1}return null}},this.$findClosingBracket=function(a,b,c){var d=this.$brackets[a],f=1,g=new e(this,b.row,b.column),h=g.getCurrentToken();if(h||(h=g.stepForward()),h){c||(c=new RegExp("(\\\\.?"+h.type.replace(".","\\\\.").replace("lparen",".paren").replace(/\\b(?:start|begin)\\b/,"(?:start|begin|end)")+")+"));for(var i=b.column-g.getCurrentTokenColumn();;){for(var j=h.value,k=j.length;i=4352&&a<=4447||a>=4515&&a<=4519||a>=4602&&a<=4607||a>=9001&&a<=9002||a>=11904&&a<=11929||a>=11931&&a<=12019||a>=12032&&a<=12245||a>=12272&&a<=12283||a>=12288&&a<=12350||a>=12353&&a<=12438||a>=12441&&a<=12543||a>=12549&&a<=12589||a>=12593&&a<=12686||a>=12688&&a<=12730||a>=12736&&a<=12771||a>=12784&&a<=12830||a>=12832&&a<=12871||a>=12880&&a<=13054||a>=13056&&a<=19903||a>=19968&&a<=42124||a>=42128&&a<=42182||a>=43360&&a<=43388||a>=44032&&a<=55203||a>=55216&&a<=55238||a>=55243&&a<=55291||a>=63744&&a<=64255||a>=65040&&a<=65049||a>=65072&&a<=65106||a>=65108&&a<=65126||a>=65128&&a<=65131||a>=65281&&a<=65376||a>=65504&&a<=65510)}d.implement(this,g),this.setDocument=function(a){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=a,a.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(a){if(!a)return this.$docRowCache=[],void(this.$screenRowCache=[]);var b=this.$docRowCache.length,c=this.$getRowCacheIndex(this.$docRowCache,a)+1;b>c&&(this.$docRowCache.splice(c,b),this.$screenRowCache.splice(c,b))},this.$getRowCacheIndex=function(a,b){for(var c=0,d=a.length-1;c<=d;){var e=c+d>>1,f=a[e];if(b>f)c=e+1;else{if(!(b=b));f++);return(c=d[f])?(c.index=f,c.start=e-c.value.length,c):null},this.setUndoManager=function(a){if(this.$undoManager=a,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),a){var b=this;this.$syncInformUndoManager=function(){b.$informUndoManager.cancel(),b.$deltasFold.length&&(b.$deltas.push({group:"fold",deltas:b.$deltasFold}),b.$deltasFold=[]),b.$deltasDoc.length&&(b.$deltas.push({group:"doc",deltas:b.$deltasDoc}),b.$deltasDoc=[]),b.$deltas.length>0&&a.execute({action:"aceupdate",args:[b.$deltas,b],merge:b.mergeUndoDeltas}),b.mergeUndoDeltas=!1,b.$deltas=[]},this.$informUndoManager=e.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?e.stringRepeat(" ",this.getTabSize()):"\\t"},this.setUseSoftTabs=function(a){this.setOption("useSoftTabs",a)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(a){this.setOption("tabSize",a)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(a){return this.$useSoftTabs&&a.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(a){this.setOption("overwrite",a)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(a,b){this.$decorations[a]||(this.$decorations[a]=""),this.$decorations[a]+=" "+b,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(a,b){this.$decorations[a]=(this.$decorations[a]||"").replace(" "+b,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(a){this.$breakpoints=[];for(var b=0;b0&&(d=!!c.charAt(b-1).match(this.tokenRe)),d||(d=!!c.charAt(b).match(this.tokenRe)),d)var e=this.tokenRe;else if(/^\\s+$/.test(c.slice(b-1,b+1)))var e=/\\s/;else var e=this.nonTokenRe;var f=b;if(f>0){do f--;while(f>=0&&c.charAt(f).match(e));f++}for(var g=b;ga&&(a=b.screenWidth)}),this.lineWidgetWidth=a},this.$computeWidth=function(a){if(this.$modified||a){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var b=this.doc.getAllLines(),c=this.$rowLengthCache,d=0,e=0,f=this.$foldData[e],g=f?f.start.row:1/0,h=b.length,i=0;ig){if(i=f.end.row+1,i>=h)break;f=this.$foldData[e++],g=f?f.start.row:1/0}null==c[i]&&(c[i]=this.$getStringScreenWidth(b[i])[0]),c[i]>d&&(d=c[i])}this.screenWidth=d}},this.getLine=function(a){return this.doc.getLine(a)},this.getLines=function(a,b){return this.doc.getLines(a,b)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(a){return this.doc.getTextRange(a||this.selection.getRange())},this.insert=function(a,b){return this.doc.insert(a,b)},this.remove=function(a){return this.doc.remove(a)},this.removeFullLines=function(a,b){return this.doc.removeFullLines(a,b)},this.undoChanges=function(a,b){if(a.length){this.$fromUndo=!0;for(var c=null,d=a.length-1;d!=-1;d--){var e=a[d];"doc"==e.group?(this.doc.revertDeltas(e.deltas),c=this.$getUndoSelection(e.deltas,!0,c)):e.deltas.forEach(function(a){this.addFolds(a.folds)},this)}return this.$fromUndo=!1,c&&this.$undoSelect&&!b&&this.selection.setSelectionRange(c),c}},this.redoChanges=function(a,b){if(a.length){this.$fromUndo=!0;for(var c=null,d=0;da.end.column&&(f.start.column+=h),f.end.row==a.end.row&&f.end.column>a.end.column&&(f.end.column+=h)),g&&f.start.row>=a.end.row&&(f.start.row+=g,f.end.row+=g)}if(f.end=this.insert(f.start,d),e.length){var i=a.start,k=f.start,g=k.row-i.row,h=k.column-i.column;this.addFolds(e.map(function(a){return a=a.clone(),a.start.row==i.row&&(a.start.column+=h),a.end.row==i.row&&(a.end.column+=h),a.start.row+=g,a.end.row+=g,a}))}return f},this.indentRows=function(a,b,c){c=c.replace(/\\t/g,this.getTabString());for(var d=a;d<=b;d++)this.doc.insertInLine({row:d,column:0},c)},this.outdentRows=function(a){for(var b=a.collapseRows(),c=new j(0,0,0,0),d=this.getTabSize(),e=b.start.row;e<=b.end.row;++e){var f=this.getLine(e);c.start.row=e,c.end.row=e;for(var g=0;g0){var d=this.getRowFoldEnd(b+c);if(d>this.doc.getLength()-1)return 0;var e=d-b}else{a=this.$clipRowToDocument(a),b=this.$clipRowToDocument(b);var e=b-a+1}var f=new j(a,0,b,Number.MAX_VALUE),g=this.getFoldsInRange(f).map(function(a){return a=a.clone(),a.start.row+=e,a.end.row+=e,a}),h=0==c?this.doc.getLines(a,b):this.doc.removeFullLines(a,b);return this.doc.insertFullLines(a+e,h),g.length&&this.addFolds(g),e},this.moveLinesUp=function(a,b){return this.$moveLines(a,b,-1)},this.moveLinesDown=function(a,b){return this.$moveLines(a,b,1)},this.duplicateLines=function(a,b){return this.$moveLines(a,b,0)},this.$clipRowToDocument=function(a){return Math.max(0,Math.min(a,this.doc.getLength()-1))},this.$clipColumnToRow=function(a,b){return b<0?0:Math.min(this.doc.getLine(a).length,b)},this.$clipPositionToDocument=function(a,b){if(b=Math.max(0,b),a<0)a=0,b=0;else{var c=this.doc.getLength();a>=c?(a=c-1,b=this.doc.getLine(c-1).length):b=Math.min(this.doc.getLine(a).length,b)}return{row:a,column:b}},this.$clipRangeToDocument=function(a){a.start.row<0?(a.start.row=0,a.start.column=0):a.start.column=this.$clipColumnToRow(a.start.row,a.start.column);var b=this.doc.getLength()-1;return a.end.row>b?(a.end.row=b,a.end.column=this.doc.getLine(b).length):a.end.column=this.$clipColumnToRow(a.end.row,a.end.column),a},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(a){if(a!=this.$useWrapMode){if(this.$useWrapMode=a,this.$modified=!0,this.$resetRowCache(0),a){var b=this.getLength();this.$wrapData=Array(b),this.$updateWrapData(0,b-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(a,b){this.$wrapLimitRange.min===a&&this.$wrapLimitRange.max===b||(this.$wrapLimitRange={min:a,max:b},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(a,b){var c=this.$wrapLimitRange;c.max<0&&(c={min:b,max:b});var d=this.$constrainWrapLimit(a,c.min,c.max);return d!=this.$wrapLimit&&d>1&&(this.$wrapLimit=d,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(a,b,c){return b&&(a=Math.max(b,a)),c&&(a=Math.min(c,a)),a},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(a){this.setWrapLimitRange(a,a)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(a){var b=this.$useWrapMode,c=a.action,d=a.start,e=a.end,f=d.row,g=e.row,h=g-f,i=null;if(this.$updating=!0,0!=h)if("remove"===c){this[b?"$wrapData":"$rowLengthCache"].splice(f,h);var j=this.$foldData;i=this.getFoldsInRange(a),this.removeFolds(i);var k=this.getFoldLine(e.row),l=0;if(k){k.addRemoveChars(e.row,e.column,d.column-e.column),k.shiftRow(-h);var m=this.getFoldLine(f);m&&m!==k&&(m.merge(k),k=m),l=j.indexOf(k)+1}for(l;l=e.row&&k.shiftRow(-h)}g=f}else{var n=Array(h);n.unshift(f,0);var o=b?this.$wrapData:this.$rowLengthCache;o.splice.apply(o,n);var j=this.$foldData,k=this.getFoldLine(f),l=0;if(k){var p=k.range.compareInside(d.row,d.column);0==p?(k=k.split(d.row,d.column),k&&(k.shiftRow(h),k.addRemoveChars(g,0,e.column-d.column))):p==-1&&(k.addRemoveChars(f,0,e.column-d.column),k.shiftRow(h)),l=j.indexOf(k)+1}for(l;l=f&&k.shiftRow(h)}}else{h=Math.abs(a.start.column-a.end.column),"remove"===c&&(i=this.getFoldsInRange(a),this.removeFolds(i),h=-h);var k=this.getFoldLine(f);k&&k.addRemoveChars(f,d.column,h)}return b&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,b?this.$updateWrapData(f,g):this.$updateRowLengthCache(f,g),i},this.$updateRowLengthCache=function(a,b,c){this.$rowLengthCache[a]=null,this.$rowLengthCache[b]=null},this.$updateWrapData=function(a,b){var c,d,e=this.doc.getAllLines(),f=this.getTabSize(),g=this.$wrapData,i=this.$wrapLimit,j=a;for(b=Math.min(b,e.length-1);j<=b;)d=this.getFoldLine(j,d),d?(c=[],d.walk(function(a,b,d,f){var g;if(null!=a){g=this.$getDisplayTokens(a,c.length),g[0]=h;for(var i=1;ib-t;){var u=j+b-t;if(a[u-1]>=o&&a[u]>=o)f(u);else if(a[u]!=h&&a[u]!=k){for(var v=Math.max(u-(b-(b>>2)),j-1);u>v&&a[u]v&&a[u]v&&a[u]==n;)u--}else for(;u>v&&a[u]v?f(++u):(u=j+b,a[u]==c&&u--,f(u-t))}else{for(u;u!=j-1&&a[u]!=h;u--);if(u>j){f(u);continue}for(u=j+b;u39&&i<48||i>57&&i<64?g.push(n):i>=4352&&a(i)?g.push(b,c):g.push(b)}return g},this.$getStringScreenWidth=function(b,c,d){if(0==c)return[0,0];null==c&&(c=1/0),d=d||0;var e,f;for(f=0;f=4352&&a(e)?2:1,!(d>c));f++);return[d,f]},this.lineWidgets=null,this.getRowLength=function(a){if(this.lineWidgets)var b=this.lineWidgets[a]&&this.lineWidgets[a].rowCount||0;else b=0;return this.$useWrapMode&&this.$wrapData[a]?this.$wrapData[a].length+1+b:1+b},this.getRowLineCount=function(a){return this.$useWrapMode&&this.$wrapData[a]?this.$wrapData[a].length+1:1},this.getRowWrapIndent=function(a){if(this.$useWrapMode){var b=this.screenToDocumentPosition(a,Number.MAX_VALUE),c=this.$wrapData[b.row];return c.length&&c[0]=0)var g=i[j],e=this.$docRowCache[j],l=a>i[k-1];else var l=!k;for(var m=this.getLength()-1,n=this.getNextFoldLine(e),o=n?n.start.row:1/0;g<=a&&(h=this.getRowLength(e),!(g+h>a||e>=m));)g+=h,e++,e>o&&(e=n.end.row+1,n=this.getNextFoldLine(e,n),o=n?n.start.row:1/0),l&&(this.$docRowCache.push(e),this.$screenRowCache.push(g));if(n&&n.start.row<=e)c=this.getFoldDisplayLine(n),e=n.start.row;else{if(g+h<=a||e>m)return{row:m,column:this.getLine(m).length};c=this.getLine(e),n=null}var p=0;if(this.$useWrapMode){var q=this.$wrapData[e];if(q){var r=Math.floor(a-g);d=q[r],r>0&&q.length&&(p=q.indent,f=q[r-1]||q[q.length-1],c=c.substring(f))}}return f+=this.$getStringScreenWidth(c,b-p)[1],this.$useWrapMode&&f>=d&&(f=d-1),n?n.idxToPosition(f):{row:e,column:f}},this.documentToScreenPosition=function(a,b){if("undefined"==typeof b)var c=this.$clipPositionToDocument(a.row,a.column);else c=this.$clipPositionToDocument(a,b);a=c.row,b=c.column;var d=0,e=null,f=null;f=this.getFoldAt(a,b,1),f&&(a=f.start.row,b=f.start.column);var g,h=0,i=this.$docRowCache,j=this.$getRowCacheIndex(i,a),k=i.length;if(k&&j>=0)var h=i[j],d=this.$screenRowCache[j],l=a>i[k-1];else var l=!k;for(var m=this.getNextFoldLine(h),n=m?m.start.row:1/0;h=n){if(g=m.end.row+1,g>a)break;m=this.getNextFoldLine(g,m),n=m?m.start.row:1/0}else g=h+1;d+=this.getRowLength(h),h=g,l&&(this.$docRowCache.push(h),this.$screenRowCache.push(d))}var o="";m&&h>=n?(o=this.getFoldDisplayLine(m,a,b),e=m.start.row):(o=this.getLine(a).substring(0,b),e=a);var p=0;if(this.$useWrapMode){var q=this.$wrapData[e];if(q){for(var r=0;o.length>=q[r];)d++,r++;o=o.substring(q[r-1]||0,o.length),p=r>0?q.indent:0}}return{row:d,column:p+this.$getStringScreenWidth(o)[0]}},this.documentToScreenColumn=function(a,b){return this.documentToScreenPosition(a,b).column},this.documentToScreenRow=function(a,b){return this.documentToScreenPosition(a,b).row},this.getScreenLength=function(){var a=0,b=null;if(this.$useWrapMode)for(var c=this.$wrapData.length,d=0,e=0,b=this.$foldData[e++],f=b?b.start.row:1/0;df&&(d=b.end.row+1,b=this.$foldData[e++],f=b?b.start.row:1/0)}else{a=this.getLength();for(var h=this.$foldData,e=0;ec));f++);return[d,f]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(n.prototype),a("./edit_session/folding").Folding.call(n.prototype),a("./edit_session/bracket_match").BracketMatch.call(n.prototype),f.defineOptions(n.prototype,"session",{wrap:{set:function(a){if(a&&"off"!=a?"free"==a?a=!0:"printMargin"==a?a=-1:"string"==typeof a&&(a=parseInt(a,10)||!1):a=!1,this.$wrap!=a)if(this.$wrap=a,a){var b="number"==typeof a?a:null;this.setWrapLimitRange(b,b),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(a){a="auto"==a?"text"!=this.$mode.type:"text"!=a,a!=this.$wrapAsCode&&(this.$wrapAsCode=a,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(a){this.$useWorker=a,this.$stopWorker(),a&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(a){isNaN(a)||this.$tabSize===a||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=a,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(a){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(a){this.doc.setNewLineMode(a)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(a){this.setMode(a)},get:function(){return this.$modeId}}}),b.EditSession=n}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(a,b,c){"use strict";var d=a("./lib/lang"),e=a("./lib/oop"),f=a("./range").Range,g=function(){this.$options={}};(function(){this.set=function(a){return e.mixin(this.$options,a),this},this.getOptions=function(){return d.copyObject(this.$options)},this.setOptions=function(a){this.$options=a},this.find=function(a){var b=this.$options,c=this.$matchIterator(a,b);if(!c)return!1;var d=null;return c.forEach(function(a,c,e){if(a.start)d=a;else{var g=a.offset+(e||0);if(d=new f(c,g,c,g+a.length),!a.length&&b.start&&b.start.start&&0!=b.skipCurrent&&d.isEqual(b.start))return d=null,!1}return!0}),d},this.findAll=function(a){var b=this.$options;if(!b.needle)return[];this.$assembleRegExp(b);var c=b.range,e=c?a.getLines(c.start.row,c.end.row):a.doc.getAllLines(),g=[],h=b.re;if(b.$isMultiLine){var i,j=h.length,k=e.length-j;a:for(var l=h.offset||0;l<=k;l++){for(var m=0;mp||(g.push(i=new f(l,p,l+j-1,q)),j>2&&(l=l+j-2))}}else for(var r=0;rv&&g[m].end.row==c.end.row;)m--;for(g=g.slice(r,m+1),r=0,m=g.length;r=0;h--)if(e(g[h],b,f))return!0};else var h=function(a,b,f){for(var g=d.getMatchOffsets(a,c),h=0;h=g;d--)if(c(a.getLine(d),d))return;if(0!=b.wrap)for(d=h,g=f.row;d>=g;d--)if(c(a.getLine(d),d))return}}:function(c){var d=f.row,e=a.getLine(d).substr(f.column);if(!c(e,d,f.column)){for(d+=1;d<=h;d++)if(c(a.getLine(d),d))return;if(0!=b.wrap)for(d=g,h=f.row;d<=h;d++)if(c(a.getLine(d),d))return}};return{forEach:i}}}).call(g.prototype),b.Search=g}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(a,b,c){"use strict";function d(a,b){this.platform=b||(g.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(a),this.$singleCommand=!0}function e(a,b){d.call(this,a,b),this.$singleCommand=!1}var f=a("../lib/keys"),g=a("../lib/useragent"),h=f.KEY_MODS;e.prototype=d.prototype,function(){function a(a){return"object"==typeof a&&a.bindKey&&a.bindKey.position||0}this.addCommand=function(a){this.commands[a.name]&&this.removeCommand(a),this.commands[a.name]=a,a.bindKey&&this._buildKeyHash(a)},this.removeCommand=function(a,b){var c=a&&("string"==typeof a?a:a.name);a=this.commands[c],b||delete this.commands[c];var d=this.commandKeyBinding;for(var e in d){var f=d[e];if(f==a)delete d[e];else if(Array.isArray(f)){var g=f.indexOf(a);g!=-1&&(f.splice(g,1),1==f.length&&(d[e]=f[0]))}}},this.bindKey=function(a,b,c){if("object"==typeof a&&a&&(void 0==c&&(c=a.position),a=a[this.platform]),a)return"function"==typeof b?this.addCommand({exec:b,bindKey:a,name:b.name||a}):void a.split("|").forEach(function(a){var d="";if(a.indexOf(" ")!=-1){var e=a.split(/\\s+/);a=e.pop(),e.forEach(function(a){var b=this.parseKeys(a),c=h[b.hashId]+b.key;d+=(d?" ":"")+c,this._addCommandToBinding(d,"chainKeys")},this),d+=" "}var f=this.parseKeys(a),g=h[f.hashId]+f.key;this._addCommandToBinding(d+g,b,c)},this)},this._addCommandToBinding=function(b,c,d){var e,f=this.commandKeyBinding;if(c)if(!f[b]||this.$singleCommand)f[b]=c;else{Array.isArray(f[b])?(e=f[b].indexOf(c))!=-1&&f[b].splice(e,1):f[b]=[f[b]],"number"!=typeof d&&(d=d||c.isDefault?-100:a(c));var g=f[b];for(e=0;ed)break}g.splice(e,0,c)}else delete f[b]},this.addCommands=function(a){a&&Object.keys(a).forEach(function(b){var c=a[b];if(c){if("string"==typeof c)return this.bindKey(c,b);"function"==typeof c&&(c={exec:c}),"object"==typeof c&&(c.name||(c.name=b),this.addCommand(c))}},this)},this.removeCommands=function(a){Object.keys(a).forEach(function(b){this.removeCommand(a[b])},this)},this.bindKeys=function(a){Object.keys(a).forEach(function(b){this.bindKey(b,a[b])},this)},this._buildKeyHash=function(a){this.bindKey(a.bindKey,a)},this.parseKeys=function(a){var b=a.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(a){return a}),c=b.pop(),d=f[c];if(f.FUNCTION_KEYS[d])c=f.FUNCTION_KEYS[d].toLowerCase();else{if(!b.length)return{key:c,hashId:-1};if(1==b.length&&"shift"==b[0])return{key:c.toUpperCase(),hashId:-1}}for(var e=0,g=b.length;g--;){var h=f.KEY_MODS[b[g]];if(null==h)return"undefined"!=typeof console&&console.error("invalid modifier "+b[g]+" in "+a),!1;e|=h}return{key:c,hashId:e}},this.findKeyCommand=function(a,b){var c=h[a]+b;return this.commandKeyBinding[c]},this.handleKeyboard=function(a,b,c,d){if(!(d<0)){var e=h[b]+c,f=this.commandKeyBinding[e];return a.$keyChain&&(a.$keyChain+=" "+e,f=this.commandKeyBinding[a.$keyChain]||f),!f||"chainKeys"!=f&&"chainKeys"!=f[f.length-1]?(a.$keyChain&&(b&&4!=b||1!=c.length?(b==-1||d>0)&&(a.$keyChain=""):a.$keyChain=a.$keyChain.slice(0,-e.length-1)),{command:f}):(a.$keyChain=a.$keyChain||e,{command:"null"})}},this.getStatusText=function(a,b){return b.$keyChain||""}}.call(d.prototype),b.HashHandler=d,b.MultiHashHandler=e}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../keyboard/hash_handler").MultiHashHandler,f=a("../lib/event_emitter").EventEmitter,g=function(a,b){e.call(this,b,a),this.byName=this.commands,this.setDefaultHandler("exec",function(a){return a.command.exec(a.editor,a.args||{})})};d.inherits(g,e),function(){d.implement(this,f),this.exec=function(a,b,c){if(Array.isArray(a)){for(var d=a.length;d--;)if(this.exec(a[d],b,c))return!0;return!1}if("string"==typeof a&&(a=this.commands[a]),!a)return!1;if(b&&b.$readOnly&&!a.readOnly)return!1;var e={editor:b,command:a,args:c};return e.returnValue=this._emit("exec",e),this._signal("afterExec",e),e.returnValue!==!1},this.toggleRecording=function(a){if(!this.$inReplay)return a&&a._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(a){this.macro.push([a.command,a.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(a){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(a);try{this.$inReplay=!0,this.macro.forEach(function(b){"string"==typeof b?this.exec(b,a):this.exec(b[0],a,b[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(a){return a.map(function(a){return"string"!=typeof a[0]&&(a[0]=a[0].name),a[1]||(a=a[0]),a})}}.call(g.prototype),b.CommandManager=g}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(a,b,c){"use strict";function d(a,b){return{win:a,mac:b}}var e=a("../lib/lang"),f=a("../config"),g=a("../range").Range;b.commands=[{name:"showSettingsMenu",bindKey:d("Ctrl-,","Command-,"),exec:function(a){f.loadModule("ace/ext/settings_menu",function(b){b.init(a),a.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:d("Alt-E","Ctrl-E"),exec:function(a){f.loadModule("ace/ext/error_marker",function(b){b.showErrorMarker(a,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:d("Alt-Shift-E","Ctrl-Shift-E"),exec:function(a){f.loadModule("ace/ext/error_marker",function(b){b.showErrorMarker(a,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:d("Ctrl-A","Command-A"),exec:function(a){a.selectAll()},readOnly:!0},{name:"centerselection",bindKey:d(null,"Ctrl-L"),exec:function(a){a.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:d("Ctrl-L","Command-L"),exec:function(a){var b=parseInt(prompt("Enter line number:"),10);isNaN(b)||a.gotoLine(b)},readOnly:!0},{name:"fold",bindKey:d("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(a){a.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:d("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(a){a.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:d("F2","F2"),exec:function(a){a.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:d("Alt-F2","Alt-F2"),exec:function(a){a.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(a){a.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:d("Alt-0","Command-Option-0"),exec:function(a){a.session.foldAll(),a.session.unfold(a.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:d("Alt-Shift-0","Command-Option-Shift-0"),exec:function(a){a.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:d("Ctrl-K","Command-G"),exec:function(a){a.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:d("Ctrl-Shift-K","Command-Shift-G"),exec:function(a){a.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:d("Alt-K","Ctrl-G"),exec:function(a){a.selection.isEmpty()?a.selection.selectWord():a.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:d("Alt-Shift-K","Ctrl-Shift-G"),exec:function(a){a.selection.isEmpty()?a.selection.selectWord():a.findPrevious()},readOnly:!0},{name:"find",bindKey:d("Ctrl-F","Command-F"),exec:function(a){f.loadModule("ace/ext/searchbox",function(b){b.Search(a)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(a){a.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:d("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(a){a.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:d("Ctrl-Home","Command-Home|Command-Up"),exec:function(a){a.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:d("Shift-Up","Shift-Up"),exec:function(a){a.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:d("Up","Up|Ctrl-P"),exec:function(a,b){a.navigateUp(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:d("Ctrl-Shift-End","Command-Shift-Down"),exec:function(a){a.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:d("Ctrl-End","Command-End|Command-Down"),exec:function(a){a.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:d("Shift-Down","Shift-Down"),exec:function(a){a.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",\n-readOnly:!0},{name:"golinedown",bindKey:d("Down","Down|Ctrl-N"),exec:function(a,b){a.navigateDown(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:d("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(a){a.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:d("Ctrl-Left","Option-Left"),exec:function(a){a.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:d("Alt-Shift-Left","Command-Shift-Left"),exec:function(a){a.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:d("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(a){a.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:d("Shift-Left","Shift-Left"),exec:function(a){a.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:d("Left","Left|Ctrl-B"),exec:function(a,b){a.navigateLeft(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:d("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(a){a.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:d("Ctrl-Right","Option-Right"),exec:function(a){a.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:d("Alt-Shift-Right","Command-Shift-Right"),exec:function(a){a.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:d("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(a){a.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:d("Shift-Right","Shift-Right"),exec:function(a){a.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:d("Right","Right|Ctrl-F"),exec:function(a,b){a.navigateRight(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(a){a.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:d(null,"Option-PageDown"),exec:function(a){a.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:d("PageDown","PageDown|Ctrl-V"),exec:function(a){a.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(a){a.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:d(null,"Option-PageUp"),exec:function(a){a.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(a){a.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:d("Ctrl-Up",null),exec:function(a){a.renderer.scrollBy(0,-2*a.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:d("Ctrl-Down",null),exec:function(a){a.renderer.scrollBy(0,2*a.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(a){a.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(a){a.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:d("Ctrl-Alt-E","Command-Option-E"),exec:function(a){a.commands.toggleRecording(a)},readOnly:!0},{name:"replaymacro",bindKey:d("Ctrl-Shift-E","Command-Shift-E"),exec:function(a){a.commands.replay(a)},readOnly:!0},{name:"jumptomatching",bindKey:d("Ctrl-P","Ctrl-P"),exec:function(a){a.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:d("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(a){a.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:d("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(a){a.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:d(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(a){},readOnly:!0},{name:"cut",exec:function(a){var b=a.getSelectionRange();a._emit("cut",b),a.selection.isEmpty()||(a.session.remove(b),a.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(a,b){a.$handlePaste(b)},scrollIntoView:"cursor"},{name:"removeline",bindKey:d("Ctrl-D","Command-D"),exec:function(a){a.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:d("Ctrl-Shift-D","Command-Shift-D"),exec:function(a){a.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:d("Ctrl-Alt-S","Command-Alt-S"),exec:function(a){a.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:d("Ctrl-/","Command-/"),exec:function(a){a.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:d("Ctrl-Shift-/","Command-Shift-/"),exec:function(a){a.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:d("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(a){a.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:d("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(a){a.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:d("Ctrl-H","Command-Option-F"),exec:function(a){f.loadModule("ace/ext/searchbox",function(b){b.Search(a,!0)})}},{name:"undo",bindKey:d("Ctrl-Z","Command-Z"),exec:function(a){a.undo()}},{name:"redo",bindKey:d("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(a){a.redo()}},{name:"copylinesup",bindKey:d("Alt-Shift-Up","Command-Option-Up"),exec:function(a){a.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:d("Alt-Up","Option-Up"),exec:function(a){a.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:d("Alt-Shift-Down","Command-Option-Down"),exec:function(a){a.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:d("Alt-Down","Option-Down"),exec:function(a){a.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:d("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(a){a.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:d("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(a){a.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:d("Shift-Delete",null),exec:function(a){return!!a.selection.isEmpty()&&void a.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:d("Alt-Backspace","Command-Backspace"),exec:function(a){a.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:d("Alt-Delete","Ctrl-K"),exec:function(a){a.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:d("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(a){a.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:d("Ctrl-Delete","Alt-Delete"),exec:function(a){a.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:d("Shift-Tab","Shift-Tab"),exec:function(a){a.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:d("Tab","Tab"),exec:function(a){a.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:d("Ctrl-[","Ctrl-["),exec:function(a){a.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:d("Ctrl-]","Ctrl-]"),exec:function(a){a.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(a,b){a.insert(b)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(a,b){a.insert(e.stringRepeat(b.text||"",b.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:d(null,"Ctrl-O"),exec:function(a){a.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:d("Ctrl-T","Ctrl-T"),exec:function(a){a.transposeLetters()},multiSelectAction:function(a){a.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:d("Ctrl-U","Ctrl-U"),exec:function(a){a.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:d("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(a){a.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:d("Ctrl-Shift-L","Command-Shift-L"),exec:function(a){var b=a.selection.getRange();b.start.column=b.end.column=0,b.end.row++,a.selection.setRange(b,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:d(null,null),exec:function(a){for(var b=a.selection.isBackwards(),c=b?a.selection.getSelectionLead():a.selection.getSelectionAnchor(),d=b?a.selection.getSelectionAnchor():a.selection.getSelectionLead(),f=a.session.doc.getLine(c.row).length,h=a.session.doc.getTextRange(a.selection.getRange()),i=h.replace(/\\n\\s*/," ").length,j=a.session.doc.getLine(c.row),k=c.row+1;k<=d.row+1;k++){var l=e.stringTrimLeft(e.stringTrimRight(a.session.doc.getLine(k)));0!==l.length&&(l=" "+l),j+=l}d.row+10?(a.selection.moveCursorTo(c.row,c.column),a.selection.selectTo(c.row,c.column+i)):(f=a.session.doc.getLine(c.row).length>f?f+1:f,a.selection.moveCursorTo(c.row,f))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:d(null,null),exec:function(a){var b=a.session.doc.getLength()-1,c=a.session.doc.getLine(b).length,d=a.selection.rangeList.ranges,e=[];d.length<1&&(d=[a.selection.getRange()]);for(var f=0;f0&&this.$blockScrolling--;var c=b&&b.scrollIntoView;if(c){switch(c){case"center-animate":c="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var d=this.selection.getRange(),e=this.renderer.layerConfig;(d.start.row>=e.lastRow||d.end.row<=e.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==c&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(a){if(this.$mergeUndoDeltas){var b=this.prevOp,c=this.$mergeableCommands,d=b.command&&a.command.name==b.command.name;if("insertstring"==a.command.name){var e=a.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),d=d&&this.mergeNextCommand&&(!/\\s/.test(e)||/\\s/.test(b.args)),this.mergeNextCommand=!0}else d=d&&c.indexOf(a.command.name)!==-1;"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(d=!1),d?this.session.mergeUndoDeltas=!0:c.indexOf(a.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(a,b){if(a&&"string"==typeof a){this.$keybindingId=a;var c=this;r.loadModule(["keybinding",a],function(d){c.$keybindingId==a&&c.keyBinding.setKeyboardHandler(d&&d.handler),b&&b()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(a),b&&b()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(a){if(this.session!=a){this.curOp&&this.endOperation(),this.curOp={};var b=this.session;if(b){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var c=this.session.getSelection();c.off("changeCursor",this.$onCursorChange),c.off("changeSelection",this.$onSelectionChange)}this.session=a,a?(this.$onDocumentChange=this.onDocumentChange.bind(this),a.on("change",this.$onDocumentChange),this.renderer.setSession(a),this.$onChangeMode=this.onChangeMode.bind(this),a.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),a.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),a.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),a.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),a.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),a.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=a.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(a)),this._signal("changeSession",{session:a,oldSession:b}),this.curOp=null,b&&b._signal("changeEditor",{oldEditor:this}),a&&a._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(a,b){return this.session.doc.setValue(a),b?1==b?this.navigateFileEnd():b==-1&&this.navigateFileStart():this.selectAll(),a},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(a){this.renderer.onResize(a)},this.setTheme=function(a,b){this.renderer.setTheme(a,b)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(a){this.renderer.setStyle(a)},this.unsetStyle=function(a){this.renderer.unsetStyle(a)},this.getFontSize=function(){return this.getOption("fontSize")||e.computedStyle(this.container,"fontSize")},this.setFontSize=function(a){this.setOption("fontSize",a)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var a=this;this.$highlightPending=!0,setTimeout(function(){a.$highlightPending=!1;var b=a.session;if(b&&b.bgTokenizer){var c=b.findMatchingBracket(a.getCursorPosition());if(c)var d=new n(c.row,c.column,c.row,c.column+1);else if(b.$mode.getMatching)var d=b.$mode.getMatching(a.session);d&&(b.$bracketHighlight=b.addMarker(d,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var a=this;this.$highlightTagPending=!0,setTimeout(function(){a.$highlightTagPending=!1;var b=a.session;if(b&&b.bgTokenizer){var c=a.getCursorPosition(),d=new s(a.session,c.row,c.column),e=d.getCurrentToken();if(!e||!/\\b(?:tag-open|tag-name)/.test(e.type))return b.removeMarker(b.$tagHighlight),void(b.$tagHighlight=null);if(e.type.indexOf("tag-open")==-1||(e=d.stepForward())){var f=e.value,g=0,h=d.stepBackward();if("<"==h.value){do h=e,e=d.stepForward(),e&&e.value===f&&e.type.indexOf("tag-name")!==-1&&("<"===h.value?g++:"=0)}else{do e=h,h=d.stepBackward(),e&&e.value===f&&e.type.indexOf("tag-name")!==-1&&("<"===h.value?g++:"1||(a=!1)),b.$highlightLineMarker&&!a)b.removeMarker(b.$highlightLineMarker.id),b.$highlightLineMarker=null;else if(!b.$highlightLineMarker&&a){var c=new n(a.row,a.column,a.row,1/0);c.id=b.addMarker(c,"ace_active-line","screenLine"),b.$highlightLineMarker=c}else a&&(b.$highlightLineMarker.start.row=a.row,b.$highlightLineMarker.end.row=a.row,b.$highlightLineMarker.start.column=a.column,b._signal("changeBackMarker"))},this.onSelectionChange=function(a){var b=this.session;if(b.$selectionMarker&&b.removeMarker(b.$selectionMarker),b.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var c=this.selection.getRange(),d=this.getSelectionStyle();b.$selectionMarker=b.addMarker(c,"ace_selection",d)}var e=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(e),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var a=this.session,b=this.getSelectionRange();if(!b.isEmpty()&&!b.isMultiLine()){var c=b.start.column-1,d=b.end.column+1,e=a.getLine(b.start.row),f=e.length,g=e.substring(Math.max(c,0),Math.min(d,f));if(!(c>=0&&/^[\\w\\d]/.test(g)||d<=f&&/[\\w\\d]$/.test(g))&&(g=e.substring(b.start.column,b.end.column),/^[\\w\\d]+$/.test(g))){var h=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:g});return h}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(a){this.renderer.updateText(),this._emit("changeMode",a)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var a=this.getSelectedText();return this._signal("copy",a),a},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(a,b){var c={text:a,event:b};this.commands.exec("paste",this,c)},this.$handlePaste=function(a){"string"==typeof a&&(a={text:a}),this._signal("paste",a);var b=a.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(b);else{var c=b.split(/\\r\\n|\\r|\\n/),d=this.selection.rangeList.ranges;if(c.length>d.length||c.length<2||!c[1])return this.commands.exec("insertstring",this,b);for(var e=d.length;e--;){var f=d[e];f.isEmpty()||this.session.remove(f),this.session.insert(f.start,c[e])}}},this.execCommand=function(a,b){return this.commands.exec(a,this,b)},this.insert=function(a,b){var c=this.session,d=c.getMode(),e=this.getCursorPosition();if(this.getBehavioursEnabled()&&!b){var f=d.transformAction(c.getState(e.row),"insertion",this,c,a);f&&(a!==f.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),a=f.text)}if("\\t"==a&&(a=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var g=new n.fromPoints(e,e);g.end.column+=a.length,this.session.remove(g)}}else{var g=this.getSelectionRange();e=this.session.remove(g),this.clearSelection()}if("\\n"==a||"\\r\\n"==a){var h=c.getLine(e.row);if(e.column>h.search(/\\S|$/)){var i=h.substr(e.column).search(/\\S|$/);c.doc.removeInLine(e.row,e.column,e.column+i)}}this.clearSelection();var j=e.column,k=c.getState(e.row),h=c.getLine(e.row),l=d.checkOutdent(k,h,a);c.insert(e,a);if(f&&f.selection&&(2==f.selection.length?this.selection.setSelectionRange(new n(e.row,j+f.selection[0],e.row,j+f.selection[1])):this.selection.setSelectionRange(new n(e.row+f.selection[0],f.selection[1],e.row+f.selection[2],f.selection[3]))),c.getDocument().isNewLine(a)){var m=d.getNextLineIndent(k,h.slice(0,e.column),c.getTabString());c.insert({row:e.row+1,column:0},m)}l&&d.autoOutdent(k,c,e.row)},this.onTextInput=function(a){this.keyBinding.onTextInput(a)},this.onCommandKey=function(a,b,c){this.keyBinding.onCommandKey(a,b,c)},this.setOverwrite=function(a){this.session.setOverwrite(a)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(a){this.setOption("scrollSpeed",a)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(a){this.setOption("dragDelay",a)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(a){this.setOption("selectionStyle",a)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(a){this.setOption("highlightActiveLine",a)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(a){this.setOption("highlightGutterLine",a)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(a){this.setOption("highlightSelectedWord",a)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(a){this.renderer.setAnimatedScroll(a)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(a){this.renderer.setShowInvisibles(a)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(a){this.renderer.setDisplayIndentGuides(a)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(a){this.renderer.setShowPrintMargin(a)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(a){this.renderer.setPrintMarginColumn(a)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(a){this.setOption("readOnly",a)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(a){this.setOption("behavioursEnabled",a)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(a){this.setOption("wrapBehavioursEnabled",a)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(a){this.setOption("showFoldWidgets",a)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(a){this.setOption("fadeFoldWidgets",a)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(a){this.selection.isEmpty()&&("left"==a?this.selection.selectLeft():this.selection.selectRight());var b=this.getSelectionRange();if(this.getBehavioursEnabled()){var c=this.session,d=c.getState(b.start.row),e=c.getMode().transformAction(d,"deletion",this,c,b);if(0===b.end.column){var f=c.getTextRange(b);if("\\n"==f[f.length-1]){var g=c.getLine(b.end.row);/^\\s+$/.test(g)&&(b.end.column=g.length)}}e&&(b=e)}this.session.remove(b),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var a=this.getSelectionRange();a.start.column==a.end.column&&a.start.row==a.end.row&&(a.end.column=0,a.end.row++),this.session.remove(a),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var a=this.getCursorPosition();this.insert("\\n"),this.moveCursorToPosition(a)},this.transposeLetters=function(){if(this.selection.isEmpty()){var a=this.getCursorPosition(),b=a.column;if(0!==b){var c,d,e=this.session.getLine(a.row);bb.toLowerCase()?1:0});for(var d=new n(0,0,0,0),e=a.first;e<=a.last;e++){var f=b.getLine(e);d.start.row=e,d.end.row=e,d.end.column=f.length,b.replace(d,c[e-a.first])}},this.toggleCommentLines=function(){var a=this.session.getState(this.getCursorPosition().row),b=this.$getSelectedRows();this.session.getMode().toggleCommentLines(a,this.session,b.first,b.last)},this.toggleBlockComment=function(){var a=this.getCursorPosition(),b=this.session.getState(a.row),c=this.getSelectionRange();this.session.getMode().toggleBlockComment(b,this.session,c,a)},this.getNumberAt=function(a,b){var c=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;c.lastIndex=0;for(var d=this.session.getLine(a);c.lastIndex=b){var f={value:e[0],start:e.index,end:e.index+e[0].length};return f}}return null},this.modifyNumber=function(a){var b=this.selection.getCursor().row,c=this.selection.getCursor().column,d=new n(b,c-1,b,c),e=this.session.getTextRange(d);if(!isNaN(parseFloat(e))&&isFinite(e)){var f=this.getNumberAt(b,c);if(f){var g=f.value.indexOf(".")>=0?f.start+f.value.indexOf(".")+1:f.end,h=f.start+f.value.length-g,i=parseFloat(f.value);i*=Math.pow(10,h),a*=g!==f.end&&cn+1)break;n=o.last}for(k--,h=this.session.$moveLines(m,n,b?0:a),b&&a==-1&&(l=k+1);l<=k;)g[l].moveBy(h,0),l++;b||(h=0),i+=h}e.fromOrientedRange(e.ranges[0]),e.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(a){return a=(a||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(a.start.row),last:this.session.getRowFoldEnd(a.end.row)}},this.onCompositionStart=function(a){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(a){this.renderer.setCompositionText(a)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(a){return a>=this.getFirstVisibleRow()&&a<=this.getLastVisibleRow()},this.isRowFullyVisible=function(a){return a>=this.renderer.getFirstFullyVisibleRow()&&a<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(a,b){var c=this.renderer,d=this.renderer.layerConfig,e=a*Math.floor(d.height/d.lineHeight);this.$blockScrolling++,b===!0?this.selection.$moveSelection(function(){this.moveCursorBy(e,0)}):b===!1&&(this.selection.moveCursorBy(e,0),this.selection.clearSelection()),this.$blockScrolling--;var f=c.scrollTop;c.scrollBy(0,e*d.lineHeight),null!=b&&c.scrollCursorIntoView(null,.5),c.animateScrolling(f)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(a){this.renderer.scrollToRow(a)},this.scrollToLine=function(a,b,c,d){this.renderer.scrollToLine(a,b,c,d)},this.centerSelection=function(){var a=this.getSelectionRange(),b={row:Math.floor(a.start.row+(a.end.row-a.start.row)/2),column:Math.floor(a.start.column+(a.end.column-a.start.column)/2)};this.renderer.alignCursor(b,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(a,b){this.selection.moveCursorTo(a,b)},this.moveCursorToPosition=function(a){this.selection.moveCursorToPosition(a)},this.jumpToMatching=function(a,b){var c=this.getCursorPosition(),d=new s(this.session,c.row,c.column),e=d.getCurrentToken(),f=e||d.stepForward();if(f){var g,h,i=!1,j={},k=c.column-f.start,l={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(f.value.match(/[{}()\\[\\]]/g)){for(;k=0;--f)this.$tryReplace(c[f],a)&&d++;return this.selection.setSelectionRange(e),this.$blockScrolling-=1,d},this.$tryReplace=function(a,b){var c=this.session.getTextRange(a);return b=this.$search.replace(c,b),null!==b?(a.end=this.session.replace(a,b),a):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(a,b,c){b||(b={}),"string"==typeof a||a instanceof RegExp?b.needle=a:"object"==typeof a&&d.mixin(b,a);var e=this.selection.getRange();null==b.needle&&(a=this.session.getTextRange(e)||this.$search.$options.needle,a||(e=this.session.getWordRange(e.start.row,e.start.column),a=this.session.getTextRange(e)),this.$search.set({needle:a})),this.$search.set(b),b.start||this.$search.set({start:e});var f=this.$search.find(this.session);return b.preventScroll?f:f?(this.revealRange(f,c),f):(b.backwards?e.start=e.end:e.end=e.start,void this.selection.setRange(e))},this.findNext=function(a,b){this.find({skipCurrent:!0,backwards:!1},a,b)},this.findPrevious=function(a,b){this.find(a,{skipCurrent:!0,backwards:!0},b)},this.revealRange=function(a,b){this.$blockScrolling+=1,this.session.unfold(a),this.selection.setSelectionRange(a),this.$blockScrolling-=1;var c=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(a.start,a.end,.5),b!==!1&&this.renderer.animateScrolling(c)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(a){if(a){var b,c=this,d=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var e=this.$scrollAnchor;e.style.cssText="position:absolute",this.container.insertBefore(e,this.container.firstChild);var f=this.on("changeSelection",function(){d=!0}),g=this.renderer.on("beforeRender",function(){d&&(b=c.renderer.container.getBoundingClientRect())}),h=this.renderer.on("afterRender",function(){if(d&&b&&(c.isFocused()||c.searchBox&&c.searchBox.isFocused())){var a=c.renderer,f=a.$cursorLayer.$pixelPos,g=a.layerConfig,h=f.top-g.offset;d=f.top>=0&&h+b.top<0||!(f.topwindow.innerHeight)&&null,null!=d&&(e.style.top=h+"px",e.style.left=f.left+"px",e.style.height=g.lineHeight+"px",e.scrollIntoView(d)),d=b=null}});this.setAutoScrollEditorIntoView=function(a){a||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",f),this.renderer.off("afterRender",h),this.renderer.off("beforeRender",g))}}},this.$resetCursorStyle=function(){var a=this.$cursorStyle||"ace",b=this.renderer.$cursorLayer;b&&(b.setSmoothBlinking(/smooth/.test(a)),b.isBlinking=!this.$readOnly&&"wide"!=a,e.setCssClass(b.element,"ace_slim-cursors",/slim/.test(a)))}}).call(t.prototype),r.defineOptions(t.prototype,"editor",{selectionStyle:{set:function(a){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:a})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(a){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(a){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(a){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(a){this.setAutoScrollEditorIntoView(a)}},keyboardHandler:{set:function(a){this.setKeyboardHandler(a)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),b.Editor=t}),define("ace/undomanager",["require","exports","module"],function(a,b,c){"use strict";var d=function(){this.reset()};(function(){function a(a){return{action:a.action,start:a.start,end:a.end,lines:1==a.lines.length?null:a.lines,text:1==a.lines.length?a.lines[0]:null}}function b(a){return{action:a.action,start:a.start,end:a.end,lines:a.lines||[a.text]}}function c(a,b){for(var c=new Array(a.length),d=0;d0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(b){return c(b,a)},this.$deserializeDeltas=function(a){return c(a,b)}}).call(d.prototype),b.UndoManager=d}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("../lib/dom"),e=a("../lib/oop"),f=a("../lib/lang"),g=a("../lib/event_emitter").EventEmitter,h=function(a){this.element=d.createElement("div"),this.element.className="ace_layer ace_gutter-layer",a.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){e.implement(this,g),this.setSession=function(a){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=a,a&&a.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(a,b){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(a,b)},this.removeGutterDecoration=function(a,b){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(a,b)},this.setAnnotations=function(a){this.$annotations=[];for(var b=0;bg&&(p=f.end.row+1,f=b.getNextFoldLine(p,f),g=f?f.start.row:1/0),p>e){for(;this.$cells.length>o+1;)n=this.$cells.pop(),this.element.removeChild(n.element);break}n=this.$cells[++o],n||(n={element:null,textNode:null,foldWidget:null},n.element=d.createElement("div"),n.textNode=document.createTextNode(""),n.element.appendChild(n.textNode),this.element.appendChild(n.element),this.$cells[o]=n);var q="ace_gutter-cell ";i[p]&&(q+=i[p]),j[p]&&(q+=j[p]),this.$annotations[p]&&(q+=this.$annotations[p].className),n.element.className!=q&&(n.element.className=q);var r=b.getRowLength(p)*a.lineHeight+"px";if(r!=n.element.style.height&&(n.element.style.height=r),h){var s=h[p];null==s&&(s=h[p]=b.getFoldWidget(p))}if(s){n.foldWidget||(n.foldWidget=d.createElement("span"),n.element.appendChild(n.foldWidget));var q="ace_fold-widget ace_"+s;q+="start"==s&&p==g&&pc.right-b.right?"foldWidgets":void 0}}).call(h.prototype),b.Gutter=h}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(a,b,c){"use strict";var d=a("../range").Range,e=a("../lib/dom"),f=function(a){this.element=e.createElement("div"),this.element.className="ace_layer ace_marker-layer",a.appendChild(this.element)};(function(){function a(a,b,c,d){return(a?1:0)|(b?2:0)|(c?4:0)|(d?8:0)}this.$padding=0,this.setPadding=function(a){this.$padding=a},this.setSession=function(a){this.session=a},this.setMarkers=function(a){this.markers=a},this.update=function(a){var a=a||this.config;if(a){this.config=a;var b=[];for(var c in this.markers){var d=this.markers[c];if(d.range){var e=d.range.clipRows(a.firstRow,a.lastRow);if(!e.isEmpty())if(e=e.toScreenRange(this.session),d.renderer){var f=this.$getTop(e.start.row,a),g=this.$padding+e.start.column*a.characterWidth;d.renderer(b,e,g,f,a)}else"fullLine"==d.type?this.drawFullLineMarker(b,e,d.clazz,a):"screenLine"==d.type?this.drawScreenLineMarker(b,e,d.clazz,a):e.isMultiLine()?"text"==d.type?this.drawTextMarker(b,e,d.clazz,a):this.drawMultiLineMarker(b,e,d.clazz,a):this.drawSingleLineMarker(b,e,d.clazz+" ace_start ace_br15",a)}else d.update(b,this,this.session,a)}this.element.innerHTML=b.join("")}},this.$getTop=function(a,b){return(a-b.firstRowScreen)*b.lineHeight},this.drawTextMarker=function(b,c,e,f,g){for(var h=this.session,i=c.start.row,j=c.end.row,k=i,l=0,m=0,n=h.getScreenLastRowColumn(k),o=new d(k,c.start.column,k,m);k<=j;k++)o.start.row=o.end.row=k,o.start.column=k==i?c.start.column:h.getRowWrapIndent(k),o.end.column=n,l=m,m=n,n=k+1n,k==j),f,k==j?0:1,g)},this.drawMultiLineMarker=function(a,b,c,d,e){var f=this.$padding,g=d.lineHeight,h=this.$getTop(b.start.row,d),i=f+b.start.column*d.characterWidth;e=e||"",a.push("
    "),h=this.$getTop(b.end.row,d);var j=b.end.column*d.characterWidth;if(a.push("
    "),g=(b.end.row-b.start.row-1)*d.lineHeight,!(g<=0)){h=this.$getTop(b.start.row+1,d);var k=(b.start.column?1:0)|(b.end.column?0:8);a.push("
    ")}},this.drawSingleLineMarker=function(a,b,c,d,e,f){var g=d.lineHeight,h=(b.end.column+(e||0)-b.start.column)*d.characterWidth,i=this.$getTop(b.start.row,d),j=this.$padding+b.start.column*d.characterWidth;a.push("
    ")},this.drawFullLineMarker=function(a,b,c,d,e){var f=this.$getTop(b.start.row,d),g=d.lineHeight;b.start.row!=b.end.row&&(g+=this.$getTop(b.end.row,d)-f),a.push("
    ")},this.drawScreenLineMarker=function(a,b,c,d,e){var f=this.$getTop(b.start.row,d),g=d.lineHeight;a.push("
    ")}}).call(f.prototype),b.Marker=f}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../lib/dom"),f=a("../lib/lang"),g=(a("../lib/useragent"),a("../lib/event_emitter").EventEmitter),h=function(a){this.element=e.createElement("div"),this.element.className="ace_layer ace_text-layer",a.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){d.implement(this,g),this.EOF_CHAR="\xc2\xb6",this.EOL_CHAR_LF="\xc2\xac",this.EOL_CHAR_CRLF="\xc2\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\xe2\x80\x94",this.SPACE_CHAR="\xc2\xb7",this.$padding=0,this.$updateEolChar=function(){var a="\\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=a)return this.EOL_CHAR=a,!0},this.setPadding=function(a){this.$padding=a,this.element.style.padding="0 "+a+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(a){this.$fontMetrics=a,this.$fontMetrics.on("changeCharacterSize",function(a){this._signal("changeCharacterSize",a)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(a){this.session=a,a&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(a){return this.showInvisibles!=a&&(this.showInvisibles=a,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(a){return this.displayIndentGuides!=a&&(this.displayIndentGuides=a,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var a=this.session.getTabSize();this.tabSize=a;for(var b=this.$tabStrings=[0],c=1;c"+f.stringRepeat(this.TAB_CHAR,c)+""):b.push(f.stringRepeat(" ",c));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var d="ace_indent-guide",e="",g="";if(this.showInvisibles){d+=" ace_invisible",e=" ace_invisible_space",g=" ace_invisible_tab";var h=f.stringRepeat(this.SPACE_CHAR,this.tabSize),i=f.stringRepeat(this.TAB_CHAR,this.tabSize)}else var h=f.stringRepeat(" ",this.tabSize),i=h;this.$tabStrings[" "]=""+h+"",this.$tabStrings["\\t"]=""+i+""}},this.updateLines=function(a,b,c){this.config.lastRow==a.lastRow&&this.config.firstRow==a.firstRow||this.scrollLines(a),this.config=a;for(var d=Math.max(b,a.firstRow),e=Math.min(c,a.lastRow),f=this.element.childNodes,g=0,h=a.firstRow;hj&&(h=i.end.row+1,i=this.session.getNextFoldLine(h,i),j=i?i.start.row:1/0),h>e)break;var k=f[g++];if(k){var l=[];this.$renderLine(l,h,!this.$useLineGroups(),h==j&&i),k.style.height=a.lineHeight*this.session.getRowLength(h)+"px",k.innerHTML=l.join("")}h++}},this.scrollLines=function(a){var b=this.config;if(this.config=a,!b||b.lastRow0;d--)c.removeChild(c.firstChild);if(b.lastRow>a.lastRow)for(var d=this.session.getFoldedRowCount(a.lastRow+1,b.lastRow);d>0;d--)c.removeChild(c.lastChild);if(a.firstRowb.lastRow){var e=this.$renderLinesFragment(a,b.lastRow+1,a.lastRow);c.appendChild(e)}},this.$renderLinesFragment=function(a,b,c){for(var d=this.element.ownerDocument.createDocumentFragment(),f=b,g=this.session.getNextFoldLine(f),h=g?g.start.row:1/0;;){if(f>h&&(f=g.end.row+1,g=this.session.getNextFoldLine(f,g),h=g?g.start.row:1/0),f>c)break;var i=e.createElement("div"),j=[];if(this.$renderLine(j,f,!1,f==h&&g),i.innerHTML=j.join(""),this.$useLineGroups())i.className="ace_line_group",d.appendChild(i),i.style.height=a.lineHeight*this.session.getRowLength(f)+"px";else for(;i.firstChild;)d.appendChild(i.firstChild);f++}return d},this.update=function(a){this.config=a;for(var b=[],c=a.firstRow,d=a.lastRow,e=c,f=this.session.getNextFoldLine(e),g=f?f.start.row:1/0;;){if(e>g&&(e=f.end.row+1,f=this.session.getNextFoldLine(e,f),g=f?f.start.row:1/0),e>d)break;this.$useLineGroups()&&b.push("
    "),this.$renderLine(b,e,!1,e==g&&f),this.$useLineGroups()&&b.push("
    "),e++}this.element.innerHTML=b.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(a,b,c,d){var e=this,g=/\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,h=function(a,c,d,g,h){if(c)return e.showInvisibles?""+f.stringRepeat(e.SPACE_CHAR,a.length)+"":a;if("&"==a)return"&";if("<"==a)return"<";if(">"==a)return">";if("\\t"==a){var i=e.session.getScreenTabSize(b+g);return b+=i-1,e.$tabStrings[i]}if("\xe3\x80\x80"==a){var j=e.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",k=e.showInvisibles?e.SPACE_CHAR:"";return b+=1,""+k+""}return d?""+e.SPACE_CHAR+"":(b+=1,""+a+"")},i=d.replace(g,h);if(this.$textToken[c.type])a.push(i);else{var j="ace_"+c.type.replace(/\\./g," ace_"),k="";"fold"==c.type&&(k=" style=\'width:"+c.value.length*this.config.characterWidth+"px;\' "),a.push("",i,"")}return b+d.length},this.renderIndentGuide=function(a,b,c){var d=b.search(this.$indentGuideRe);return d<=0||d>=c?b:" "==b[0]?(d-=d%this.tabSize,a.push(f.stringRepeat(this.$tabStrings[" "],d/this.tabSize)),b.substr(d)):"\\t"==b[0]?(a.push(f.stringRepeat(this.$tabStrings["\\t"],d)),b.substr(d)):b},this.$renderWrappedLine=function(a,b,c,d){for(var e=0,g=0,h=c[0],i=0,j=0;j=h;)i=this.$renderToken(a,i,k,l.substring(0,h-e)),l=l.substring(h-e),e=h,d||a.push("
    ","
    "),a.push(f.stringRepeat("\xc2\xa0",c.indent)),g++,i=0,h=c[g]||Number.MAX_VALUE;0!=l.length&&(e+=l.length,i=this.$renderToken(a,i,k,l))}}},this.$renderSimpleLine=function(a,b){var c=0,d=b[0],e=d.value;this.displayIndentGuides&&(e=this.renderIndentGuide(a,e)),e&&(c=this.$renderToken(a,c,d,e));\n-for(var f=1;f"),e.length){var f=this.session.getRowSplitData(b);f&&f.length?this.$renderWrappedLine(a,e,f,c):this.$renderSimpleLine(a,e)}this.showInvisibles&&(d&&(b=d.end.row),a.push("",b==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),c||a.push("
    ")},this.$getFoldLineTokens=function(a,b){function c(a,b,c){for(var d=0,f=0;f+a[d].value.lengthc-b&&(g=g.substring(0,c-b)),e.push({type:a[d].type,value:g}),f=b+g.length,d+=1}for(;fc?e.push({type:a[d].type,value:g.substring(0,c-f)}):e.push(a[d]),f+=g.length,d+=1}}var d=this.session,e=[],f=d.getTokens(a);return b.walk(function(a,b,g,h,i){null!=a?e.push({type:"fold",value:a}):(i&&(f=d.getTokens(b)),f.length&&c(f,h,g))},b.end.row,this.session.getLine(b.end.row).length),e},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(h.prototype),b.Text=h}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict";var d,e=a("../lib/dom"),f=function(a){this.element=e.createElement("div"),this.element.className="ace_layer ace_cursor-layer",a.appendChild(this.element),void 0===d&&(d=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),e.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(d?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(a){for(var b=this.cursors,c=b.length;c--;)b[c].style.visibility=a?"":"hidden"},this.$updateOpacity=function(a){for(var b=this.cursors,c=b.length;c--;)b[c].style.opacity=a?"":"0"},this.$padding=0,this.setPadding=function(a){this.$padding=a},this.setSession=function(a){this.session=a},this.setBlinking=function(a){a!=this.isBlinking&&(this.isBlinking=a,this.restartTimer())},this.setBlinkInterval=function(a){a!=this.blinkInterval&&(this.blinkInterval=a,this.restartTimer())},this.setSmoothBlinking=function(a){a==this.smoothBlinking||d||(this.smoothBlinking=a,e.setCssClass(this.element,"ace_smooth-blinking",a),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var a=e.createElement("div");return a.className="ace_cursor",this.element.appendChild(a),this.cursors.push(a),a},this.removeCursor=function(){if(this.cursors.length>1){var a=this.cursors.pop();return a.parentNode.removeChild(a),a}},this.hideCursor=function(){this.isVisible=!1,e.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,e.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var a=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&e.removeCssClass(this.element,"ace_smooth-blinking"),a(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){e.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var b=function(){this.timeoutId=setTimeout(function(){a(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){a(!0),b()},this.blinkInterval),b()}},this.getPixelPosition=function(a,b){if(!this.config||!this.session)return{left:0,top:0};a||(a=this.session.selection.getCursor());var c=this.session.documentToScreenPosition(a),d=this.$padding+c.column*this.config.characterWidth,e=(c.row-(b?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:d,top:e}},this.update=function(a){this.config=a;var b=this.session.$selectionMarkers,c=0,d=0;void 0!==b&&0!==b.length||(b=[{cursor:null}]);for(var c=0,e=b.length;ca.height+a.offset||f.top<0)&&c>1)){var g=(this.cursors[d++]||this.addCursor()).style;this.drawCursor?this.drawCursor(g,f,a,b[c],this.session):(g.left=f.left+"px",g.top=f.top+"px",g.width=a.characterWidth+"px",g.height=a.lineHeight+"px")}}for(;this.cursors.length>d;)this.removeCursor();var h=this.session.getOverwrite();this.$setOverwrite(h),this.$pixelPos=f,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(a){a!=this.overwrite&&(this.overwrite=a,a?e.addCssClass(this.element,"ace_overwrite-cursors"):e.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(f.prototype),b.Cursor=f}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("./lib/oop"),e=a("./lib/dom"),f=a("./lib/event"),g=a("./lib/event_emitter").EventEmitter,h=function(a){this.element=e.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=e.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),a.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,f.addListener(this.element,"scroll",this.onScroll.bind(this)),f.addListener(this.element,"mousedown",f.preventDefault)};(function(){d.implement(this,g),this.setVisible=function(a){this.element.style.display=a?"":"none",this.isVisible=a}}).call(h.prototype);var i=function(a,b){h.call(this,a),this.scrollTop=0,b.$scrollbarWidth=this.width=e.scrollbarWidth(a.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};d.inherits(i,h),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(a){this.element.style.height=a+"px"},this.setInnerHeight=function(a){this.inner.style.height=a+"px"},this.setScrollHeight=function(a){this.inner.style.height=a+"px"},this.setScrollTop=function(a){this.scrollTop!=a&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=a)}}.call(i.prototype);var j=function(a,b){h.call(this,a),this.scrollLeft=0,this.height=b.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};d.inherits(j,h),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(a){this.element.style.width=a+"px"},this.setInnerWidth=function(a){this.inner.style.width=a+"px"},this.setScrollWidth=function(a){this.inner.style.width=a+"px"},this.setScrollLeft=function(a){this.scrollLeft!=a&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=a)}}.call(j.prototype),b.ScrollBar=i,b.ScrollBarV=i,b.ScrollBarH=j,b.VScrollBar=i,b.HScrollBar=j}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(a,b,c){"use strict";var d=a("./lib/event"),e=function(a,b){this.onRender=a,this.pending=!1,this.changes=0,this.window=b||window};(function(){this.schedule=function(a){if(this.changes=this.changes|a,!this.pending&&this.changes){this.pending=!0;var b=this;d.nextFrame(function(){b.pending=!1;for(var a;a=b.changes;)b.changes=0,b.onRender(a)},this.window)}}}).call(e.prototype),b.RenderLoop=e}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(a,b,c){var d=a("../lib/oop"),e=a("../lib/dom"),f=a("../lib/lang"),g=a("../lib/useragent"),h=a("../lib/event_emitter").EventEmitter,i=0,j=b.FontMetrics=function(a){this.el=e.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=e.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=e.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),a.appendChild(this.el),i||this.$testFractionalRect(),this.$measureNode.innerHTML=f.stringRepeat("X",i),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){d.implement(this,h),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var a=e.createElement("div");this.$setMeasureNodeStyles(a.style),a.style.width="0.2px",document.documentElement.appendChild(a);var b=a.getBoundingClientRect().width;i=b>0&&b<1?50:100,a.parentNode.removeChild(a)},this.$setMeasureNodeStyles=function(a,b){a.width=a.height="auto",a.left=a.top="0px",a.visibility="hidden",a.position="absolute",a.whiteSpace="pre",g.isIE<8?a["font-family"]="inherit":a.font="inherit",a.overflow=b?"hidden":"visible"},this.checkForSizeChanges=function(){var a=this.$measureSizes();if(a&&(this.$characterSize.width!==a.width||this.$characterSize.height!==a.height)){this.$measureNode.style.fontWeight="bold";var b=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=a,this.charSizes=Object.create(null),this.allowBoldFonts=b&&b.width===a.width&&b.height===a.height,this._emit("changeCharacterSize",{data:a})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var a=this;return this.$pollSizeChangesTimer=setInterval(function(){a.checkForSizeChanges()},500)},this.setPolling=function(a){a?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===i){var a=null;try{a=this.$measureNode.getBoundingClientRect()}catch(b){a={width:0,height:0}}var c={height:a.height,width:a.width/i}}else var c={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/i};return 0===c.width||0===c.height?null:c},this.$measureCharWidth=function(a){this.$main.innerHTML=f.stringRepeat(a,i);var b=this.$main.getBoundingClientRect();return b.width/i},this.getCharacterWidth=function(a){var b=this.charSizes[a];return void 0===b&&(b=this.charSizes[a]=this.$measureCharWidth(a)/this.$characterSize.width),b},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(j.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("./lib/oop"),e=a("./lib/dom"),f=a("./config"),g=a("./lib/useragent"),h=a("./layer/gutter").Gutter,i=a("./layer/marker").Marker,j=a("./layer/text").Text,k=a("./layer/cursor").Cursor,l=a("./scrollbar").HScrollBar,m=a("./scrollbar").VScrollBar,n=a("./renderloop").RenderLoop,o=a("./layer/font_metrics").FontMetrics,p=a("./lib/event_emitter").EventEmitter,q=\'.ace_editor {position: relative;overflow: hidden;font: 12px/normal \\\'Monaco\\\', \\\'Menlo\\\', \\\'Ubuntu Mono\\\', \\\'Consolas\\\', \\\'source-code-pro\\\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \\\'\\\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\';e.importCssString(q,"ace_editor.css");var r=function(a,b){var c=this;this.container=a||e.createElement("div"),this.$keepTextAreaAtCursor=!g.isOldIE,e.addCssClass(this.container,"ace_editor"),this.setTheme(b),this.$gutter=e.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=e.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=e.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new h(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new i(this.content);var d=this.$textLayer=new j(this.content);this.canvas=d.element,this.$markerFront=new i(this.content),this.$cursorLayer=new k(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new m(this.container,this),this.scrollBarH=new l(this.container,this),this.scrollBarV.addEventListener("scroll",function(a){c.$scrollAnimation||c.session.setScrollTop(a.data-c.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(a){c.$scrollAnimation||c.session.setScrollLeft(a.data-c.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new o(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(a){c.updateCharacterSize(),c.onResize(!0,c.gutterWidth,c.$size.width,c.$size.height),c._signal("changeCharacterSize",a)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new n(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),f.resetOptions(this),f._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,d.implement(this,p),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(a){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=a,a&&this.scrollMargin.top&&a.getScrollTop()<=0&&a.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(a),this.$markerBack.setSession(a),this.$markerFront.setSession(a),this.$gutterLayer.setSession(a),this.$textLayer.setSession(a),a&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(a,b,c){if(void 0===b&&(b=1/0),this.$changedLines?(this.$changedLines.firstRow>a&&(this.$changedLines.firstRow=a),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(a){a?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(a,b,c,d){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=a?1:0;var e=this.container;d||(d=e.clientHeight||e.scrollHeight),c||(c=e.clientWidth||e.scrollWidth);var f=this.$updateCachedSize(a,b,c,d);if(!this.$size.scrollerHeight||!c&&!d)return this.resizing=0;a&&(this.$gutterLayer.$padding=null),a?this.$renderChanges(f|this.$changes,!0):this.$loop.schedule(f|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(a,b,c,d){d-=this.$extraHeight||0;var e=0,f=this.$size,g={width:f.width,height:f.height,scrollerHeight:f.scrollerHeight,scrollerWidth:f.scrollerWidth};return d&&(a||f.height!=d)&&(f.height=d,e|=this.CHANGE_SIZE,f.scrollerHeight=f.height,this.$horizScroll&&(f.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",e|=this.CHANGE_SCROLL),c&&(a||f.width!=c)&&(e|=this.CHANGE_SIZE,f.width=c,null==b&&(b=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=b,this.scrollBarH.element.style.left=this.scroller.style.left=b+"px",f.scrollerWidth=Math.max(0,c-b-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||a)&&(e|=this.CHANGE_FULL)),f.$dirty=!c||!d,e&&this._signal("resize",g),e},this.onGutterResize=function(){var a=this.$showGutter?this.$gutter.offsetWidth:0;a!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,a,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var a=this.$size.scrollerWidth-2*this.$padding,b=Math.floor(a/this.characterWidth);return this.session.adjustWrapLimit(b,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(a){this.setOption("animatedScroll",a)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(a){this.setOption("showInvisibles",a)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(a){this.setOption("displayIndentGuides",a)},this.setShowPrintMargin=function(a){this.setOption("showPrintMargin",a)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(a){this.setOption("printMarginColumn",a)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(a){return this.setOption("showGutter",a)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(a){this.setOption("fadeFoldWidgets",a)},this.setHighlightGutterLine=function(a){this.setOption("highlightGutterLine",a)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var a=this.$cursorLayer.$pixelPos,b=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var c=this.session.selection.getCursor();c.column=0,a=this.$cursorLayer.getPixelPosition(c,!0),b*=this.session.getRowLength(c.row)}this.$gutterLineHighlight.style.top=a.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=b+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var a=e.createElement("div");a.className="ace_layer ace_print-margin-layer",this.$printMarginEl=e.createElement("div"),this.$printMarginEl.className="ace_print-margin",a.appendChild(this.$printMarginEl),this.content.insertBefore(a,this.content.firstChild);\n-}var b=this.$printMarginEl.style;b.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",b.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var a=this.layerConfig,b=this.$cursorLayer.$pixelPos.top,c=this.$cursorLayer.$pixelPos.left;b-=a.offset;var d=this.textarea.style,e=this.lineHeight;if(b<0||b>a.height-e)return void(d.top=d.left="0");var f=this.characterWidth;if(this.$composition){var g=this.textarea.value.replace(/^\\x01+/,"");f*=this.session.$getStringScreenWidth(g)[0]+2,e+=2}c-=this.scrollLeft,c>this.$size.scrollerWidth-f&&(c=this.$size.scrollerWidth-f),c+=this.gutterWidth,d.height=e+"px",d.width=f+"px",d.left=Math.min(c,this.$size.scrollerWidth-f)+"px",d.top=Math.min(b,this.$size.height-e)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var a=this.layerConfig,b=a.lastRow,c=this.session.documentToScreenRow(b,0)*a.lineHeight;return c-this.session.getScrollTop()>a.height-a.lineHeight?b-1:b},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(a){this.$padding=a,this.$textLayer.setPadding(a),this.$cursorLayer.setPadding(a),this.$markerFront.setPadding(a),this.$markerBack.setPadding(a),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(a,b,c,d){var e=this.scrollMargin;e.top=0|a,e.bottom=0|b,e.right=0|d,e.left=0|c,e.v=e.top+e.bottom,e.h=e.left+e.right,e.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-e.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(a){this.setOption("hScrollBarAlwaysVisible",a)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(a){this.setOption("vScrollBarAlwaysVisible",a)},this.$updateScrollBarV=function(){var a=this.layerConfig.maxHeight,b=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(a-=(b-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>a-b&&(a=this.scrollTop+b,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(a+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(a,b){if(this.$changes&&(a|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!a&&!b)return void(this.$changes|=a);if(this.$size.$dirty)return this.$changes|=a,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var c=this.layerConfig;if(a&this.CHANGE_FULL||a&this.CHANGE_SIZE||a&this.CHANGE_TEXT||a&this.CHANGE_LINES||a&this.CHANGE_SCROLL||a&this.CHANGE_H_SCROLL){if(a|=this.$computeLayerConfig(),c.firstRow!=this.layerConfig.firstRow&&c.firstRowScreen==this.layerConfig.firstRowScreen){var d=this.scrollTop+(c.firstRow-this.layerConfig.firstRow)*this.lineHeight;d>0&&(this.scrollTop=d,a|=this.CHANGE_SCROLL,a|=this.$computeLayerConfig())}c=this.layerConfig,this.$updateScrollBarV(),a&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-c.offset+"px",this.content.style.marginTop=-c.offset+"px",this.content.style.width=c.width+2*this.$padding+"px",this.content.style.height=c.minHeight+"px"}return a&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),a&this.CHANGE_FULL?(this.$textLayer.update(c),this.$showGutter&&this.$gutterLayer.update(c),this.$markerBack.update(c),this.$markerFront.update(c),this.$cursorLayer.update(c),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):a&this.CHANGE_SCROLL?(a&this.CHANGE_TEXT||a&this.CHANGE_LINES?this.$textLayer.update(c):this.$textLayer.scrollLines(c),this.$showGutter&&this.$gutterLayer.update(c),this.$markerBack.update(c),this.$markerFront.update(c),this.$cursorLayer.update(c),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(a&this.CHANGE_TEXT?(this.$textLayer.update(c),this.$showGutter&&this.$gutterLayer.update(c)):a&this.CHANGE_LINES?(this.$updateLines()||a&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(c):(a&this.CHANGE_TEXT||a&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(c),a&this.CHANGE_CURSOR&&(this.$cursorLayer.update(c),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),a&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(c),a&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(c),void this._signal("afterRender"))},this.$autosize=function(){var a=this.session.getScreenLength()*this.lineHeight,b=this.$maxLines*this.lineHeight,c=Math.max((this.$minLines||1)*this.lineHeight,Math.min(b,a))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(c+=this.scrollBarH.getHeight());var d=a>b;if(c!=this.desiredHeight||this.$size.height!=this.desiredHeight||d!=this.$vScroll){d!=this.$vScroll&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var e=this.container.clientWidth;this.container.style.height=c+"px",this.$updateCachedSize(!0,this.$gutterWidth,e,c),this.desiredHeight=c,this._signal("autosize")}},this.$computeLayerConfig=function(){var a=this.session,b=this.$size,c=b.height<=2*this.lineHeight,d=this.session.getScreenLength(),e=d*this.lineHeight,f=this.$getLongestLine(),g=!c&&(this.$hScrollBarAlwaysVisible||b.scrollerWidth-f-2*this.$padding<0),h=this.$horizScroll!==g;h&&(this.$horizScroll=g,this.scrollBarH.setVisible(g));var i=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var j=this.scrollTop%this.lineHeight,k=b.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(b.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;e+=l;var m=this.scrollMargin;this.session.setScrollTop(Math.max(-m.top,Math.min(this.scrollTop,e-b.scrollerHeight+m.bottom))),this.session.setScrollLeft(Math.max(-m.left,Math.min(this.scrollLeft,f+2*this.$padding-b.scrollerWidth+m.right)));var n=!c&&(this.$vScrollBarAlwaysVisible||b.scrollerHeight-e+l<0||this.scrollTop>m.top),o=i!==n;o&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var p,q,r=Math.ceil(k/this.lineHeight)-1,s=Math.max(0,Math.round((this.scrollTop-j)/this.lineHeight)),t=s+r,u=this.lineHeight;s=a.screenToDocumentRow(s,0);var v=a.getFoldLine(s);v&&(s=v.start.row),p=a.documentToScreenRow(s,0),q=a.getRowLength(s)*u,t=Math.min(a.screenToDocumentRow(t,0),a.getLength()-1),k=b.scrollerHeight+a.getRowLength(t)*u+q,j=this.scrollTop-p*u;var w=0;return this.layerConfig.width!=f&&(w=this.CHANGE_H_SCROLL),(h||o)&&(w=this.$updateCachedSize(!0,this.gutterWidth,b.width,b.height),this._signal("scrollbarVisibilityChanged"),o&&(f=this.$getLongestLine())),this.layerConfig={width:f,padding:this.$padding,firstRow:s,firstRowScreen:p,lastRow:t,lineHeight:u,characterWidth:this.characterWidth,minHeight:k,maxHeight:e,offset:j,gutterOffset:Math.max(0,Math.ceil((j+b.height-b.scrollerHeight)/u)),height:this.$size.scrollerHeight},w},this.$updateLines=function(){var a=this.$changedLines.firstRow,b=this.$changedLines.lastRow;this.$changedLines=null;var c=this.layerConfig;if(!(a>c.lastRow+1||bf?(b&&i+g>f+this.lineHeight&&(f-=b*this.$size.scrollerHeight),0===f&&(f=-this.scrollMargin.top),this.session.setScrollTop(f)):i+this.$size.scrollerHeight-he?(e=1-this.scrollMargin.top||(b>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(a<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(a>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(a,b){var c=this.scroller.getBoundingClientRect(),d=(a+this.scrollLeft-c.left-this.$padding)/this.characterWidth,e=Math.floor((b+this.scrollTop-c.top)/this.lineHeight),f=Math.round(d);return{row:e,column:f,side:d-f>0?1:-1}},this.screenToTextCoordinates=function(a,b){var c=this.scroller.getBoundingClientRect(),d=Math.round((a+this.scrollLeft-c.left-this.$padding)/this.characterWidth),e=(b+this.scrollTop-c.top)/this.lineHeight;return this.session.screenToDocumentPosition(e,Math.max(d,0))},this.textToScreenCoordinates=function(a,b){var c=this.scroller.getBoundingClientRect(),d=this.session.documentToScreenPosition(a,b),e=this.$padding+Math.round(d.column*this.characterWidth),f=d.row*this.lineHeight;return{pageX:c.left+e-this.scrollLeft,pageY:c.top+f-this.scrollTop}},this.visualizeFocus=function(){e.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){e.removeCssClass(this.container,"ace_focus")},this.showComposition=function(a){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,e.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(a){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(e.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(a,b){function c(c){if(d.$themeId!=a)return b&&b();if(c.cssClass){e.importCssString(c.cssText,c.cssClass,d.container.ownerDocument),d.theme&&e.removeCssClass(d.container,d.theme.cssClass);var f="padding"in c?c.padding:"padding"in(d.theme||{})?4:d.$padding;d.$padding&&f!=d.$padding&&d.setPadding(f),d.$theme=c.cssClass,d.theme=c,e.addCssClass(d.container,c.cssClass),e.setCssClass(d.container,"ace_dark",c.isDark),d.$size&&(d.$size.width=0,d.$updateSizeAsync()),d._dispatchEvent("themeLoaded",{theme:c}),b&&b()}}var d=this;if(this.$themeId=a,d._dispatchEvent("themeChange",{theme:a}),a&&"string"!=typeof a)c(a);else{var g=a||this.$options.theme.initialValue;f.loadModule(["theme",g],c)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(a,b){e.setCssClass(this.container,a,b!==!1)},this.unsetStyle=function(a){e.removeCssClass(this.container,a)},this.setCursorStyle=function(a){this.scroller.style.cursor!=a&&(this.scroller.style.cursor=a)},this.setMouseCursor=function(a){this.scroller.style.cursor=a},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(r.prototype),f.defineOptions(r.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(a){this.$textLayer.setShowInvisibles(a)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(a){"number"==typeof a&&(this.$printMarginColumn=a),this.$showPrintMargin=!!a,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(a){this.$gutter.style.display=a?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(a){e.setCssClass(this.$gutter,"ace_fade-fold-widgets",a)},initialValue:!1},showFoldWidgets:{set:function(a){this.$gutterLayer.setShowFoldWidgets(a)},initialValue:!0},showLineNumbers:{set:function(a){this.$gutterLayer.setShowLineNumbers(a),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(a){this.$textLayer.setDisplayIndentGuides(a)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(a){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=a?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=e.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(a){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(a){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(a){"number"==typeof a&&(a+="px"),this.container.style.fontSize=a,this.updateFontSize()},initialValue:12},fontFamily:{set:function(a){this.container.style.fontFamily=a,this.updateFontSize()}},maxLines:{set:function(a){this.updateFull()}},minLines:{set:function(a){this.updateFull()}},scrollPastEnd:{set:function(a){a=+a||0,this.$scrollPastEnd!=a&&(this.$scrollPastEnd=a,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(a){this.$gutterLayer.$fixedWidth=!!a,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(a){this.setTheme(a)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),b.VirtualRenderer=r}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../lib/net"),f=a("../lib/event_emitter").EventEmitter,g=a("../config"),h=function(b,c,d,e){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),a.nameToUrl&&!a.toUrl&&(a.toUrl=a.nameToUrl),g.get("packaged")||!a.toUrl)e=e||g.moduleUrl(c,"worker");else{var f=this.$normalizePath;e=e||f(a.toUrl("ace/worker/worker.js",null,"_"));var h={};b.forEach(function(b){h[b]=f(a.toUrl(b,null,"_").replace(/(\\.js)?(\\?.*)?$/,""))})}try{this.$worker=new Worker(e)}catch(i){if(!(i instanceof window.DOMException))throw i;var j=this.$workerBlob(e),k=window.URL||window.webkitURL,l=k.createObjectURL(j);this.$worker=new Worker(l),k.revokeObjectURL(l)}this.$worker.postMessage({init:!0,tlns:h,module:c,classname:d}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){d.implement(this,f),this.onMessage=function(a){var b=a.data;switch(b.type){case"event":this._signal(b.name,{data:b.data});break;case"call":var c=this.callbacks[b.id];c&&(c(b.data),delete this.callbacks[b.id]);break;case"error":this.reportError(b.data);break;case"log":window.console&&console.log&&console.log.apply(console,b.data)}},this.reportError=function(a){window.console&&console.error&&console.error(a)},this.$normalizePath=function(a){return e.qualifyURL(a)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(a,b){this.$worker.postMessage({command:a,args:b})},this.call=function(a,b,c){if(c){var d=this.callbackId++;this.callbacks[d]=c,b.push(d)}this.send(a,b)},this.emit=function(a,b){try{this.$worker.postMessage({event:a,data:{data:b.data}})}catch(c){console.error(c.stack)}},this.attachToDocument=function(a){this.$doc&&this.terminate(),this.$doc=a,this.call("setValue",[a.getValue()]),a.on("change",this.changeListener)},this.changeListener=function(a){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==a.action?this.deltaQueue.push(a.start,a.lines):this.deltaQueue.push(a.start,a.end)},this.$sendDeltaQueue=function(){var a=this.deltaQueue;a&&(this.deltaQueue=null,a.length>50&&a.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:a}))},this.$workerBlob=function(a){var b="importScripts(\'"+e.qualifyURL(a)+"\');";try{return new Blob([b],{type:"application/javascript"})}catch(c){var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,f=new d;return f.append(b),f.getBlob("application/javascript")}}}).call(h.prototype);var i=function(a,b,c){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var d=null,e=!1,h=Object.create(f),i=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(a){i.messageBuffer.push(a),d&&(e?setTimeout(j):j())},this.setEmitSync=function(a){e=a};var j=function(){var a=i.messageBuffer.shift();a.command?d[a.command].apply(d,a.args):a.event&&h._signal(a.event,a.data)};h.postMessage=function(a){i.onMessage({data:a})},h.callback=function(a,b){this.postMessage({type:"call",id:b,data:a})},h.emit=function(a,b){this.postMessage({type:"event",name:a,data:b})},g.loadModule(["worker",b],function(a){for(d=new a[c](h);i.messageBuffer.length;)j()})};i.prototype=h.prototype,b.UIWorkerClient=i,b.WorkerClient=h}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(a,b,c){"use strict";var d=a("./range").Range,e=a("./lib/event_emitter").EventEmitter,f=a("./lib/oop"),g=function(a,b,c,d,e,f){var g=this;this.length=b,this.session=a,this.doc=a.getDocument(),this.mainClass=e,this.othersClass=f,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=d,this.$onCursorChange=function(){setTimeout(function(){g.onCursorChange()})},this.$pos=c;var h=a.getUndoManager().$undoStack||a.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=h.length,this.setup(),a.selection.on("changeCursor",this.$onCursorChange)};(function(){f.implement(this,e),this.setup=function(){var a=this,b=this.doc,c=this.session;this.selectionBefore=c.selection.toJSON(),c.selection.inMultiSelectMode&&c.selection.toSingleRange(),this.pos=b.createAnchor(this.$pos.row,this.$pos.column);var e=this.pos;e.$insertRight=!0,e.detach(),e.markerId=c.addMarker(new d(e.row,e.column,e.row,e.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(c){var d=b.createAnchor(c.row,c.column);d.$insertRight=!0,d.detach(),a.others.push(d)}),c.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var a=this.session,b=this;this.othersActive=!0,this.others.forEach(function(c){c.markerId=a.addMarker(new d(c.row,c.column,c.row,c.column+b.length),b.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var a=0;a=this.pos.column&&b.start.column<=this.pos.column+this.length+1,f=b.start.column-this.pos.column;if(this.updateAnchors(a),e&&(this.length+=c),e&&!this.session.$fromUndo)if("insert"===a.action)for(var g=this.others.length-1;g>=0;g--){var h=this.others[g],i={row:h.row,column:h.column+f};this.doc.insertMergedLines(i,a.lines)}else if("remove"===a.action)for(var g=this.others.length-1;g>=0;g--){var h=this.others[g],i={row:h.row,column:h.column+f};this.doc.remove(new d(i.row,i.column,i.row,i.column-c))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(a){this.pos.onChange(a);for(var b=this.others.length;b--;)this.others[b].onChange(a);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var a=this,b=this.session,c=function(c,e){b.removeMarker(c.markerId),c.markerId=b.addMarker(new d(c.row,c.column,c.row,c.column+a.length),e,null,!1)};c(this.pos,this.mainClass);for(var e=this.others.length;e--;)c(this.others[e],this.othersClass)}},this.onCursorChange=function(a){if(!this.$updating&&this.session){var b=this.session.selection.getCursor();b.row===this.pos.row&&b.column>=this.pos.column&&b.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",a)):(this.hideOtherMarkers(),this._emit("cursorLeave",a))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth!==-1){for(var a=this.session.getUndoManager(),b=(a.$undoStack||a.$undostack).length-this.$undoStackDepth,c=0;c1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),b||this.fromOrientedRange(a)}},this.toSingleRange=function(a){a=a||this.ranges[0];var b=this.rangeList.removeAll();b.length&&this.$onRemoveRange(b),a&&this.fromOrientedRange(a)},this.substractPoint=function(a){var b=this.rangeList.substractPoint(a);if(b)return this.$onRemoveRange(b),b[0]},this.mergeOverlappingRanges=function(){var a=this.rangeList.merge();a.length?this.$onRemoveRange(a):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(a){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(a),this._signal("addRange",{range:a})},this.$onRemoveRange=function(a){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var b=this.rangeList.ranges.pop();a.push(b),this.rangeCount=0}for(var c=a.length;c--;){var d=this.ranges.indexOf(a[c]);this.ranges.splice(d,1)}this._signal("removeRange",{ranges:a}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),b=b||this.ranges[0],b&&!b.isEqual(this.getRange())&&this.fromOrientedRange(b)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new h,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var a=this.rangeList.ranges,b=a[a.length-1],c=i.fromPoints(a[0].start,b.end);this.toSingleRange(),this.setSelectionRange(c,b.cursor==b.start)}else{var c=this.getRange(),d=this.isBackwards(),e=c.start.row,f=c.end.row;if(e==f){if(d)var g=c.end,h=c.start;else var g=c.start,h=c.end;return this.addRange(i.fromPoints(h,h)),void this.addRange(i.fromPoints(g,g))}var j=[],k=this.getLineRange(e,!0);k.start.column=c.start.column,j.push(k);for(var l=e+1;l1){var a=this.rangeList.ranges,b=a[a.length-1],c=i.fromPoints(a[0].start,b.end);this.toSingleRange(),this.setSelectionRange(c,b.cursor==b.start)}else{var d=this.session.documentToScreenPosition(this.selectionLead),e=this.session.documentToScreenPosition(this.selectionAnchor),f=this.rectangularRangeBlock(d,e);f.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(a,b,c){var d=[],f=a.column0;)p--;if(p>0)for(var q=0;d[q].isEmpty();)q++;for(var r=p;r>=q;r--)d[r].isEmpty()&&d.splice(r,1)}return d}}.call(j.prototype);var r=a("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(a){a.cursor||(a.cursor=a.end);var b=this.getSelectionStyle();return a.marker=this.session.addMarker(a,"ace_selection",b),this.session.$selectionMarkers.push(a),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,a},this.removeSelectionMarker=function(a){if(a.marker){this.session.removeMarker(a.marker);var b=this.session.$selectionMarkers.indexOf(a);b!=-1&&this.session.$selectionMarkers.splice(b,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(a){for(var b=this.session.$selectionMarkers,c=a.length;c--;){var d=a[c];if(d.marker){this.session.removeMarker(d.marker);var e=b.indexOf(d);e!=-1&&b.splice(e,1)}}this.session.selectionMarkerCount=b.length},this.$onAddRange=function(a){this.addSelectionMarker(a.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(a){this.removeSelectionMarkers(a.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(a){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(n.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(a){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(n.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(a){var b=a.command,c=a.editor;if(c.multiSelect){if(b.multiSelectAction)"forEach"==b.multiSelectAction?d=c.forEachSelection(b,a.args):"forEachLine"==b.multiSelectAction?d=c.forEachSelection(b,a.args,!0):"single"==b.multiSelectAction?(c.exitMultiSelectMode(),d=b.exec(c,a.args||{})):d=b.multiSelectAction(c,a.args||{});else{var d=b.exec(c,a.args||{});c.multiSelect.addRange(c.multiSelect.toOrientedRange()),c.multiSelect.mergeOverlappingRanges()}return d}},this.forEachSelection=function(a,b,c){if(!this.inVirtualSelectionMode){var d,e=c&&c.keepOrder,f=1==c||c&&c.$byLines,g=this.session,h=this.selection,i=h.rangeList,k=(e?h:i).ranges;if(!k.length)return a.exec?a.exec(this,b||{}):a(this,b||{});var l=h._eventRegistry;h._eventRegistry={};var m=new j(g);this.inVirtualSelectionMode=!0;for(var n=k.length;n--;){if(f)for(;n>0&&k[n].start.row==k[n-1].end.row;)n--;m.fromOrientedRange(k[n]),m.index=n,this.selection=g.selection=m;var o=a.exec?a.exec(this,b||{}):a(this,b||{});d||void 0===o||(d=o),m.toOrientedRange(k[n])}m.detach(),this.selection=g.selection=h,this.inVirtualSelectionMode=!1,h._eventRegistry=l,h.mergeOverlappingRanges();var p=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),p&&p.from==p.to&&this.renderer.animateScrolling(p.from),d}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var a="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var b=this.multiSelect.rangeList.ranges,c=[],d=0;df&&(f=c.column),ej?a.insert(d,m.stringRepeat(" ",e-j)):a.remove(new i(d.row,d.column,d.row,d.column-e+j)),b.start.column=b.end.column=f,b.start.row=b.end.row=d.row,b.cursor=b.end}),b.fromOrientedRange(c[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var j=this.selection.getRange(),k=j.start.row,l=j.end.row,n=k==l;if(n){var o,p=this.session.getLength();do o=this.session.getLine(l);while(/[=:]/.test(o)&&++l0);k<0&&(k=0),l>=p&&(l=p-1)}var q=this.session.removeFullLines(k,l);q=this.$reAlignText(q,n),this.session.insert({row:k,column:0},q.join("\\n")+"\\n"),n||(j.start.column=0,j.end.column=q[q.length-1].length),this.selection.setRange(j)}},this.$reAlignText=function(a,b){function c(a){return m.stringRepeat(" ",a)}function d(a){return a[2]?c(g)+a[2]+c(h-a[2].length+i)+a[4].replace(/^([=:])\\s+/,"$1 "):a[0]}function e(a){return a[2]?c(g+h-a[2].length)+a[2]+c(i," ")+a[4].replace(/^([=:])\\s+/,"$1 "):a[0]}function f(a){return a[2]?c(g)+a[2]+c(i)+a[4].replace(/^([=:])\\s+/,"$1 "):a[0]}var g,h,i,j=!0,k=!0;return a.map(function(a){var b=a.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return b?null==g?(g=b[1].length,h=b[2].length,i=b[3].length,b):(g+h+i!=b[1].length+b[2].length+b[3].length&&(k=!1),g!=b[1].length&&(j=!1),g>b[1].length&&(g=b[1].length),hb[3].length&&(i=b[3].length),b):[a]}).map(b?d:j?k?e:d:f)}}).call(r.prototype),b.onSessionChange=function(a){var b=a.session;b&&!b.multiSelect&&(b.$selectionMarkers=[],b.selection.$initRangeList(),b.multiSelect=b.selection),this.multiSelect=b&&b.multiSelect;var c=a.oldSession;c&&(c.multiSelect.off("addRange",this.$onAddRange),c.multiSelect.off("removeRange",this.$onRemoveRange),c.multiSelect.off("multiSelect",this.$onMultiSelect),c.multiSelect.off("singleSelect",this.$onSingleSelect),c.multiSelect.lead.off("change",this.$checkMultiselectChange),c.multiSelect.anchor.off("change",this.$checkMultiselectChange)),b&&(b.multiSelect.on("addRange",this.$onAddRange),b.multiSelect.on("removeRange",this.$onRemoveRange),b.multiSelect.on("multiSelect",this.$onMultiSelect),b.multiSelect.on("singleSelect",this.$onSingleSelect),b.multiSelect.lead.on("change",this.$checkMultiselectChange),b.multiSelect.anchor.on("change",this.$checkMultiselectChange)),b&&this.inMultiSelectMode!=b.selection.inMultiSelectMode&&(b.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},b.MultiSelect=f,a("./config").defineOptions(r.prototype,"editor",{enableMultiselect:{set:function(a){f(this),a?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",k)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",k))},value:!0},enableBlockSelect:{set:function(a){this.$blockSelectEnabled=a},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(a,b,c){"use strict";var d=a("../../range").Range,e=b.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(a,b,c){var d=a.getLine(c);return this.foldingStartMarker.test(d)?"start":"markbeginend"==b&&this.foldingStopMarker&&this.foldingStopMarker.test(d)?"end":""},this.getFoldWidgetRange=function(a,b,c){return null},this.indentationBlock=function(a,b,c){var e=/\\S/,f=a.getLine(b),g=f.search(e);if(g!=-1){for(var h=c||f.length,i=a.getLength(),j=b,k=b;++bj){var m=a.getLine(k).length;return new d(j,h,k,m)}}},this.openingBracketBlock=function(a,b,c,e,f){var g={row:c,column:e+1},h=a.$findClosingBracket(b,g,f);if(h){var i=a.foldWidgets[h.row];return null==i&&(i=a.getFoldWidget(h.row)),"start"==i&&h.row>g.row&&(h.row--,h.column=a.getLine(h.row).length),d.fromPoints(g,h)}},this.closingBracketBlock=function(a,b,c,e,f){var g={row:c,column:e},h=a.$findOpeningBracket(b,g);if(h)return h.column++,g.column--,d.fromPoints(h,g)}}).call(e.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict";b.isDark=!1,b.cssClass="ace-tm",b.cssText=\'.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}\';var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(a,b,c){"use strict";function d(a){this.session=a,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var e=(a("./lib/oop"),a("./lib/dom"));a("./range").Range;(function(){this.getRowLength=function(a){var b;return b=this.lineWidgets?this.lineWidgets[a]&&this.lineWidgets[a].rowCount||0:0,this.$useWrapMode&&this.$wrapData[a]?this.$wrapData[a].length+1+b:1+b},this.$getWidgetScreenLength=function(){var a=0;return this.lineWidgets.forEach(function(b){b&&b.rowCount&&!b.hidden&&(a+=b.rowCount)}),a},this.$onChangeEditor=function(a){this.attach(a.editor)},this.attach=function(a){a&&a.widgetManager&&a.widgetManager!=this&&a.widgetManager.detach(),this.editor!=a&&(this.detach(),this.editor=a,a&&(a.widgetManager=this,a.renderer.on("beforeRender",this.measureWidgets),a.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(a){var b=this.editor;if(b){this.editor=null,b.widgetManager=null,b.renderer.off("beforeRender",this.measureWidgets),b.renderer.off("afterRender",this.renderWidgets);var c=this.session.lineWidgets;c&&c.forEach(function(a){a&&a.el&&a.el.parentNode&&(a._inDocument=!1,a.el.parentNode.removeChild(a.el))})}},this.updateOnFold=function(a,b){var c=b.lineWidgets;if(c&&a.action){for(var d=a.data,e=d.start.row,f=d.end.row,g="add"==a.action,h=e+1;h0&&!d[e];)e--;this.firstRow=c.firstRow,this.lastRow=c.lastRow,b.$cursorLayer.config=c;for(var g=e;g<=f;g++){var h=d[g];if(h&&h.el)if(h.hidden)h.el.style.top=-100-(h.pixelHeight||0)+"px";else{h._inDocument||(h._inDocument=!0,b.container.appendChild(h.el));var i=b.$cursorLayer.getPixelPosition({row:g,column:0},!0).top;h.coverLine||(i+=c.lineHeight*this.session.getRowLineCount(h.row)),h.el.style.top=i-c.offset+"px";var j=h.coverGutter?0:b.gutterWidth;h.fixedWidth||(j-=b.scrollLeft),h.el.style.left=j+"px",h.fullWidth&&h.screenWidth&&(h.el.style.minWidth=c.width+2*c.padding+"px"),h.fixedWidth?h.el.style.right=b.scrollBar.getWidth()+"px":h.el.style.right=""}}}}}).call(d.prototype),b.LineWidgets=d}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(a,b,c){"use strict";function d(a,b,c){for(var d=0,e=a.length-1;d<=e;){var f=d+e>>1,g=c(b,a[f]);if(g>0)d=f+1;else{if(!(g<0))return f;e=f-1}}return-(d+1)}function e(a,b,c){var e=a.getAnnotations().sort(h.comparePoints);if(e.length){var f=d(e,{row:b,column:-1},h.comparePoints);f<0&&(f=-f-1),f>=e.length?f=c>0?0:e.length-1:0===f&&c<0&&(f=e.length-1);var g=e[f];if(g&&c){if(g.row===b){do g=e[f+=c];while(g&&g.row===b);if(!g)return e.slice()}var i=[];b=g.row;do i[c<0?"unshift":"push"](g),g=e[f+=c];while(g&&g.row==b);return i.length&&i}}}var f=a("../line_widgets").LineWidgets,g=a("../lib/dom"),h=a("../range").Range;b.showErrorMarker=function(a,b){var c=a.session;c.widgetManager||(c.widgetManager=new f(c),c.widgetManager.attach(a));var d=a.getCursorPosition(),h=d.row,i=c.widgetManager.getWidgetsAtRow(h).filter(function(a){return"errorMarker"==a.type})[0];i?i.destroy():h-=b;var j,k=e(c,h,b);if(k){var l=k[0];d.column=(l.pos&&"number"!=typeof l.column?l.pos.sc:l.column)||0,d.row=l.row,j=a.renderer.$gutterLayer.$annotations[d.row]}else{if(i)return;j={text:["Looks good!"],className:"ace_ok"}}a.session.unfold(d.row),a.selection.moveToPosition(d);var m={row:d.row,fixedWidth:!0,coverGutter:!0,el:g.createElement("div"),type:"errorMarker"},n=m.el.appendChild(g.createElement("div")),o=m.el.appendChild(g.createElement("div"));o.className="error_widget_arrow "+j.className;var p=a.renderer.$cursorLayer.getPixelPosition(d).left;o.style.left=p+a.renderer.gutterWidth-5+"px",m.el.className="error_widget_wrapper",n.className="error_widget "+j.className,n.innerHTML=j.text.join("
    "),n.appendChild(g.createElement("div"));var q=function(a,b,c){if(0===b&&("esc"===c||"return"===c))return m.destroy(),{command:"null"}};m.destroy=function(){a.$mouseHandler.isMousePressed||(a.keyBinding.removeKeyboardHandler(q),c.widgetManager.removeLineWidget(m),a.off("changeSelection",m.destroy),a.off("changeSession",m.destroy),a.off("mouseup",m.destroy),a.off("change",m.destroy))},a.keyBinding.addKeyboardHandler(q),a.on("changeSelection",m.destroy),a.on("changeSession",m.destroy),a.on("mouseup",m.destroy),a.on("change",m.destroy),a.session.widgetManager.addLineWidget(m),m.el.onmousedown=a.focus.bind(a),a.renderer.scrollCursorIntoView(null,.5,{bottom:m.el.offsetHeight})},g.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(a,b,c){"use strict";a("./lib/fixoldbrowsers");var d=a("./lib/dom"),e=a("./lib/event"),f=a("./editor").Editor,g=a("./edit_session").EditSession,h=a("./undomanager").UndoManager,i=a("./virtual_renderer").VirtualRenderer;a("./worker/worker_client"),a("./keyboard/hash_handler"),a("./placeholder"),a("./multi_select"),a("./mode/folding/fold_mode"),a("./theme/textmate"),a("./ext/error_marker"),b.config=a("./config"),b.require=a,b.edit=function(a){if("string"==typeof a){var c=a;if(a=document.getElementById(c),!a)throw new Error("ace.edit can\'t find div #"+c)}if(a&&a.env&&a.env.editor instanceof f)return a.env.editor;var g="";if(a&&/input|textarea/i.test(a.tagName)){var h=a;g=h.value,a=d.createElement("pre"),h.parentNode.replaceChild(a,h)}else a&&(g=d.getInnerText(a),a.innerHTML="");var j=b.createEditSession(g),k=new f(new i(a));k.setSession(j);var l={document:j,editor:k,onResize:k.resize.bind(k,null)};return h&&(l.textarea=h),e.addListener(window,"resize",l.onResize),k.on("destroy",function(){e.removeListener(window,"resize",l.onResize),l.editor.container.env=null}),k.container.env=k.env=l,k},b.createEditSession=function(a,b){var c=new g(a,b);return c.setUndoManager(new h),c},b.EditSession=g,b.UndoManager=h,b.version="1.2.3"}),function(){window.require(["ace/ace"],function(a){a&&a.config.init(!0),window.ace||(window.ace=a);for(var b in a)a.hasOwnProperty(b)&&(window.ace[b]=a[b])})}()}.apply(a,arguments)})}(this),define("mockup-patterns-texteditor",["jquery","pat-base","mockup-utils","ace"],function(a,b,c){"use strict";var d=b.extend({name:"texteditor",trigger:".pat-texteditor",parser:"mockup",defaults:{theme:null,mode:"text",width:500,height:200,tabSize:4,softTabs:!0,wrapMode:!1,showGutter:!0,showPrintMargin:!1,readOnly:!1},init:function(){var b=this;if(!window.ace)return void setTimeout(function(){b.init()},200);var d=window.ace;d.config.set("packaged",!0),d.config.set("basePath","++plone++static/components/ace-builds/src/");var e=c.setId(b.$el);b.$wrapper=a(\'
    \').css({height:parseInt(b.options.height)+25,width:b.options.width,position:"relative"}),b.$el.parent().hasClass("editorWrapper")||b.$el.wrap(b.$wrapper),b.$el.css({width:b.options.width,height:b.options.height,position:"absolute"}),b.editor=d.edit(e),b.options.theme&&b.setTheme(b.options.theme),b.editor.getSession().setMode("ace/mode/"+b.options.mode),b.editor.getSession().setTabSize(parseInt(b.options.tabSize,10)),b.editor.getSession().setUseSoftTabs(c.bool(b.options.softTabs)),b.editor.getSession().setUseWrapMode(c.bool(b.options.wrapMode)),b.editor.renderer.setShowGutter(c.bool(b.options.showGutter)),b.editor.setShowPrintMargin(c.bool(b.options.showPrintMargin)),b.editor.setReadOnly(c.bool(b.options.readOnly))},setSyntax:function(a){var b=this,c={js:"javascript",txt:"text",css:"css",html:"html",xml:"xml",less:"less",py:"python",pt:"xml",cfg:"ini"},d=a.substr(a.lastIndexOf(".")+1),e=c[d];if(void 0!==e)return b.editor.getSession().setMode("ace/mode/"+e),!0},setTheme:function(a){var b=this;b.editor.setTheme("ace/theme/"+a)},setText:function(a){var b=this;b.editor&&b.editor.setValue(a)}});return d}),define("text!mockup-patterns-filemanager-url/templates/app.xml",[],function(){return\'
    \\n
    \\n
    \\n
    \\n
    \\n \'}),function(a,b){if("function"==typeof define&&define.amd)define("backbone",["underscore","jquery","exports"],function(c,d,e){a.Backbone=b(a,e,c,d)});else if("undefined"!=typeof exports){var c=require("underscore");b(a,exports,c)}else a.Backbone=b(a,{},a._,a.jQuery||a.Zepto||a.ender||a.$)}(this,function(a,b,c,d){var e=a.Backbone,f=[],g=(f.push,f.slice);f.splice;b.VERSION="1.1.2",b.$=d,b.noConflict=function(){return a.Backbone=e,this},b.emulateHTTP=!1,b.emulateJSON=!1;var h=b.Events={on:function(a,b,c){if(!j(this,"on",a,[b,c])||!b)return this;this._events||(this._events={});var d=this._events[a]||(this._events[a]=[]);return d.push({callback:b,context:c,ctx:c||this}),this},once:function(a,b,d){if(!j(this,"once",a,[b,d])||!b)return this;var e=this,f=c.once(function(){e.off(a,f),b.apply(this,arguments)});return f._callback=b,this.on(a,f,d)},off:function(a,b,d){var e,f,g,h,i,k,l,m;if(!this._events||!j(this,"off",a,[b,d]))return this;if(!a&&!b&&!d)return this._events=void 0,this;for(h=a?[a]:c.keys(this._events),i=0,k=h.length;i").attr(a);this.setElement(d,!1)}}}),b.sync=function(a,d,e){var f=x[a];c.defaults(e||(e={}),{emulateHTTP:b.emulateHTTP,emulateJSON:b.emulateJSON});var g={type:f,dataType:"json"};if(e.url||(g.url=c.result(d,"url")||K()),null!=e.data||!d||"create"!==a&&"update"!==a&&"patch"!==a||(g.contentType="application/json",g.data=JSON.stringify(e.attrs||d.toJSON(e))),e.emulateJSON&&(g.contentType="application/x-www-form-urlencoded",g.data=g.data?{model:g.data}:{}),e.emulateHTTP&&("PUT"===f||"DELETE"===f||"PATCH"===f)){g.type="POST",e.emulateJSON&&(g.data._method=f);var h=e.beforeSend;e.beforeSend=function(a){if(a.setRequestHeader("X-HTTP-Method-Override",f),h)return h.apply(this,arguments)}}"GET"===g.type||e.emulateJSON||(g.processData=!1),"PATCH"===g.type&&w&&(g.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var i=e.xhr=b.ajax(c.extend(g,e));return d.trigger("request",d,i,e),i};var w=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),x={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};b.ajax=function(){return b.$.ajax.apply(b.$,arguments)};var y=b.Router=function(a){a||(a={}),a.routes&&(this.routes=a.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},z=/\\((.*?)\\)/g,A=/(\\(\\?)?:\\w+/g,B=/\\*\\w+/g,C=/[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;c.extend(y.prototype,h,{initialize:function(){},route:function(a,d,e){c.isRegExp(a)||(a=this._routeToRegExp(a)),c.isFunction(d)&&(e=d,d=""),e||(e=this[d]);var f=this;return b.history.route(a,function(c){var g=f._extractParameters(a,c);f.execute(e,g),f.trigger.apply(f,["route:"+d].concat(g)),f.trigger("route",d,g),b.history.trigger("route",f,d,g)}),this},execute:function(a,b){a&&a.apply(this,b)},navigate:function(a,c){return b.history.navigate(a,c),this},_bindRoutes:function(){if(this.routes){this.routes=c.result(this,"routes");for(var a,b=c.keys(this.routes);null!=(a=b.pop());)this.route(a,this.routes[a])}},_routeToRegExp:function(a){return a=a.replace(C,"\\\\$&").replace(z,"(?:$1)?").replace(A,function(a,b){return b?a:"([^/?]+)"}).replace(B,"([^?]*?)"),new RegExp("^"+a+"(?:\\\\?([\\\\s\\\\S]*))?$")},_extractParameters:function(a,b){var d=a.exec(b).slice(1);return c.map(d,function(a,b){return b===d.length-1?a||null:a?decodeURIComponent(a):null})}});var D=b.History=function(){this.handlers=[],c.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},E=/^[#\\/]|\\s+$/g,F=/^\\/+|\\/+$/g,G=/msie [\\w.]+/,H=/\\/$/,I=/#.*$/;D.started=!1,c.extend(D.prototype,h,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\\/]$/,"$&/")===this.root},getHash:function(a){var b=(a||this).location.href.match(/#(.*)$/);return b?b[1]:""},getFragment:function(a,b){if(null==a)if(this._hasPushState||!this._wantsHashChange||b){a=decodeURI(this.location.pathname+this.location.search);var c=this.root.replace(H,"");a.indexOf(c)||(a=a.slice(c.length))}else a=this.getHash();return a.replace(E,"")},start:function(a){if(D.started)throw new Error("Backbone.history has already been started");D.started=!0,this.options=c.extend({root:"/"},this.options,a),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var d=this.getFragment(),e=document.documentMode,f=G.exec(navigator.userAgent.toLowerCase())&&(!e||e<=7);if(this.root=("/"+this.root+"/").replace(F,"/"),f&&this._wantsHashChange){var g=b.$(\'\\n\\n
    \\n \\n \\n
    \\n\\n \\n\\n \\n\\n
    \\n\'}),function(e){define("jqtree",["jquery"],function(){return function(){!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=19)}([function(e,t,n){t.__esModule=!0;var i;!function(e){e[e.Before=1]="Before",e[e.After=2]="After",e[e.Inside=3]="Inside",e[e.None=4]="None"}(i=t.Position||(t.Position={})),t.position_names={before:i.Before,after:i.After,inside:i.Inside,none:i.None},t.getPositionName=function(e){for(var n in t.position_names)if(t.position_names.hasOwnProperty(n)&&t.position_names[n]===e)return n;return""},t.getPosition=function(e){return t.position_names[e]};var o=function(){function e(t,n,i){void 0===n&&(n=!1),void 0===i&&(i=e),this.name="",this.setData(t),this.children=[],this.parent=null,n&&(this.id_mapping={},this.tree=this,this.node_class=i)}return e.prototype.setData=function(e){var t=this,n=function(e){null!=e&&(t.name=e)};if(e)if("object"!=typeof e)n(e);else for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];"label"===i?n(o):"children"!==i&&(this[i]=o)}},e.prototype.loadFromData=function(e){this.removeChildren();for(var t=0,n=e;t=0?this.parent.children[e]:null}return null},e.prototype.getNextSibling=function(){if(this.parent){var e=this.parent.getChildIndex(this)+1;return e/g,">").replace(/"/g,""").replace(/\'/g,"'").replace(/\\//g,"/")},t.getBoolString=function(e){return e?"true":"false"}},function(e,t,n){t.__esModule=!0;var i=function(){function e(e,t){this.$el=$(e);var n=this.constructor.defaults;this.options=$.extend({},n,t)}return e.register=function(t,n){function i(t,n){var i=$.data(t,n);return i&&i instanceof e?i:null}function o(e,n){for(var o=a(),r=0,s=e.get();rn.right||t>n.bottom)return null;for(var i=0,o=this.hit_areas.length;i>1,s=this.hit_areas[r];if(ts.bottom))return s;i=r+1}}return null},e.prototype.mustOpenFolderTimer=function(e){var t=e.node;return t.isFolder()&&!t.is_open&&e.position===o.Position.Inside},e.prototype.updateDropHint=function(){if(this.hovered_area){this.removeDropHint();var e=this.tree_widget._getNodeElementForNode(this.hovered_area.node);this.previous_ghost=e.addDropHint(this.hovered_area.position)}},e.prototype.startOpenFolderTimer=function(e){var t=this;this.stopOpenFolderTimer(),this.open_folder_timer=setTimeout(function(){t.tree_widget._openNode(e,t.tree_widget.options.slide,function(){t.refresh(),t.updateDropHint()})},this.tree_widget.options.openFolderDelay)},e.prototype.stopOpenFolderTimer=function(){this.open_folder_timer&&(clearTimeout(this.open_folder_timer),this.open_folder_timer=null)},e.prototype.moveItem=function(e){var t=this;if(this.current_item&&this.hovered_area&&this.hovered_area.position!==o.Position.None&&this.canMoveToArea(this.hovered_area)){var n=this.current_item.node,i=this.hovered_area.node,r=this.hovered_area.position,s=n.parent;r===o.Position.Inside&&(this.hovered_area.node.is_open=!0);var a=function(){t.tree_widget.tree.moveNode(n,i,r),t.tree_widget.element.empty(),t.tree_widget._refreshElements(null)};this.tree_widget._triggerEvent("tree.move",{move_info:{moved_node:n,target_node:i,position:o.getPositionName(r),previous_parent:s,do_move:a,original_event:e.original_event}}).isDefaultPrevented()||a()}},e.prototype.getTreeDimensions=function(){var e=this.tree_widget.element.offset();return{left:e.left,top:e.top,right:e.left+this.tree_widget.element.width(),bottom:e.top+this.tree_widget.element.height()+16}},e}();t.DragAndDropHandler=s;var a=function(e){function t(t,n,i){var o=e.call(this,t)||this;return o.current_node=n,o.tree_bottom=i,o}return i(t,e),t.prototype.generate=function(){return this.positions=[],this.last_top=0,this.iterate(),this.generateHitAreas(this.positions)},t.prototype.generateHitAreas=function(e){for(var t=-1,n=[],i=[],o=0,r=e;o\'+e+""),this.$element.css("position","absolute"),i.append(this.$element)}return e.prototype.move=function(e,t){this.$element.offset({left:e-this.offset_x,top:t-this.offset_y})},e.prototype.remove=function(){this.$element.remove()},e}();t.DragElement=l},function(e,t,n){t.__esModule=!0;var i=n(1),o=function(){function e(e){this.tree_widget=e,this.opened_icon_element=this.createButtonElement(e.options.openedIcon),this.closed_icon_element=this.createButtonElement(e.options.closedIcon)}return e.prototype.render=function(e){e&&e.parent?this.renderFromNode(e):this.renderFromRoot()},e.prototype.renderFromRoot=function(){var e=this.tree_widget.element;e.empty(),this.createDomElements(e[0],this.tree_widget.tree.children,!0,1)},e.prototype.renderFromNode=function(e){var t=$(e.element),n=this.createLi(e,e.getLevel());this.attachNodeData(e,n),t.after(n),t.remove(),e.children&&this.createDomElements(n,e.children,!1,e.getLevel()+1)},e.prototype.createDomElements=function(e,t,n,i){var o=this.createUl(n);e.appendChild(o);for(var r=0,s=t;r1)){var n=t.changedTouches[0];return this._handleMouseDown(this._getPositionInfo(n))}},t.prototype._touchMove=function(e){var t=e.originalEvent;if(!(t.touches.length>1)){var n=t.changedTouches[0];return this._handleMouseMove(e,this._getPositionInfo(n))}},t.prototype._touchEnd=function(e){var t=e.originalEvent;if(!(t.touches.length>1)){var n=t.changedTouches[0];return this._handleMouseUp(this._getPositionInfo(n))}},t}(n(2).default);t.default=o},function(e,t,n){var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();t.__esModule=!0;var o=n(0),r=function(){function e(e,t){this.init(e,t)}return e.prototype.init=function(e,t){this.node=e,this.tree_widget=t,e.element||(e.element=this.tree_widget.element.get(0)),this.$element=$(e.element)},e.prototype.addDropHint=function(e){return e===o.Position.Inside?new a(this.$element):new l(this.node,this.$element,e)},e.prototype.select=function(){var e=this.getLi();e.addClass("jqtree-selected"),e.attr("aria-selected","true");var t=this.getSpan();t.attr("tabindex",0),t.focus()},e.prototype.deselect=function(){var e=this.getLi();e.removeClass("jqtree-selected"),e.attr("aria-selected","false");var t=this.getSpan();t.attr("tabindex",-1),t.blur()},e.prototype.getUl=function(){return this.$element.children("ul:first")},e.prototype.getSpan=function(){return this.$element.children(".jqtree-element").find("span.jqtree-title")},e.prototype.getLi=function(){return this.$element},e}();t.NodeElement=r;var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.open=function(e,t){var n=this;if(void 0===t&&(t=!0),!this.node.is_open){this.node.is_open=!0;var i=this.getButton();i.removeClass("jqtree-closed"),i.html("");var o=i.get(0);if(o){var r=this.tree_widget.renderer.opened_icon_element.cloneNode(!1);o.appendChild(r)}var s=function(){n.getLi().removeClass("jqtree-closed"),n.getSpan().attr("aria-expanded","true"),e&&e(n.node),n.tree_widget._triggerEvent("tree.open",{node:n.node})};t?this.getUl().slideDown("fast",s):(this.getUl().show(),s())}},t.prototype.close=function(e){var t=this;if(void 0===e&&(e=!0),this.node.is_open){this.node.is_open=!1;var n=this.getButton();n.addClass("jqtree-closed"),n.html("");var i=n.get(0);if(i){var o=this.tree_widget.renderer.closed_icon_element.cloneNode(!1);i.appendChild(o)}var r=function(){t.getLi().addClass("jqtree-closed"),t.getSpan().attr("aria-expanded","false"),t.tree_widget._triggerEvent("tree.close",{node:t.node})};e?this.getUl().slideUp("fast",r):(this.getUl().hide(),r())}},t.prototype.addDropHint=function(e){return this.node.is_open||e!==o.Position.Inside?new l(this.node,this.$element,e):new a(this.$element)},t.prototype.getButton=function(){return this.$element.children(".jqtree-element").find("a.jqtree-toggler")},t}(r);t.FolderElement=s;var a=function(){function e(e){var t=e.children(".jqtree-element"),n=e.width()-4;this.$hint=$(\'\'),t.append(this.$hint),this.$hint.css({width:n,height:t.outerHeight()-4})}return e.prototype.remove=function(){this.$hint.remove()},e}();t.BorderDropHint=a;var l=function(){function e(e,t,n){this.$element=t,this.node=e,this.$ghost=$(\'
  • \\n
  • \'),n===o.Position.After?this.moveAfter():n===o.Position.Before?this.moveBefore():n===o.Position.Inside&&(e.isFolder()&&e.is_open?this.moveInsideOpenFolder():this.moveInside())}return e.prototype.remove=function(){this.$ghost.remove()},e.prototype.moveAfter=function(){this.$element.after(this.$ghost)},e.prototype.moveBefore=function(){this.$element.before(this.$ghost)},e.prototype.moveInsideOpenFolder=function(){$(this.node.children[0].element).before(this.$ghost)},e.prototype.moveInside=function(){this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")},e}();t.GhostDropHint=l},function(e,t,n){t.__esModule=!0;var i=n(1),o=function(){function e(e){this.tree_widget=e}return e.prototype.saveState=function(){var e=JSON.stringify(this.getState());this.tree_widget.options.onSetStateFromStorage?this.tree_widget.options.onSetStateFromStorage(e):this.supportsLocalStorage()&&localStorage.setItem(this.getKeyName(),e)},e.prototype.getStateFromStorage=function(){var e=this._loadFromStorage();return e?this._parseState(e):null},e.prototype.getState=function(){var e=this;return{open_nodes:function(){var t=[];return e.tree_widget.tree.iterate(function(e){return e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0}),t}(),selected_node:e.tree_widget.getSelectedNodes().map(function(e){return e.id})}},e.prototype.setInitialState=function(e){if(e){var t=!1;return e.open_nodes&&(t=this._openInitialNodes(e.open_nodes)),e.selected_node&&(this._resetSelection(),this._selectInitialNodes(e.selected_node)),t}return!1},e.prototype.setInitialStateOnDemand=function(e,t){e?this._setInitialStateOnDemand(e.open_nodes,e.selected_node,t):t()},e.prototype.getNodeIdToBeSelected=function(){var e=this.getStateFromStorage();return e&&e.selected_node?e.selected_node[0]:null},e.prototype._parseState=function(e){var t=$.parseJSON(e);return t&&t.selected_node&&i.isInt(t.selected_node)&&(t.selected_node=[t.selected_node]),t},e.prototype._loadFromStorage=function(){return this.tree_widget.options.onGetStateFromStorage?this.tree_widget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getKeyName()):void 0},e.prototype._openInitialNodes=function(e){for(var t=!1,n=0,i=e;n=o},e.prototype._initScrollParent=function(){var e=this,t=function(){e.scroll_parent_top=0,e.$scroll_parent=null};"fixed"===this.tree_widget.$el.css("position")&&t();var n=function(){var t=["overflow","overflow-y"],n=function(e){for(var n=0,i=t;nu&&(l-=c),h+a+5>d&&(a-=h),i.fadeIn(o.menuFadeDuration),i.offset({left:a,top:l});var p=function(){e(document).unbind("click.jqtreecontextmenu"),r.unbind("tree.click.jqtreecontextmenu"),i.fadeOut(o.menuFadeDuration)};e(document).bind("click.jqtreecontextmenu",function(e){a==e.pageX&&l==e.pageY||p()}),r.bind("tree.click.jqtreecontextmenu",function(){p()}),o.selectClickedNode&&r.tree("getSelectedNode")!==t.node&&r.tree("selectNode",t.node),i.find("li").off("click.contextmenu").on("click.contextmenu",function(n){n.stopImmediatePropagation(),p(),r.trigger("cm-jqtree.item.click",[t.node,e(this)])})}),this}}(jQuery)}.apply(e,arguments)})}(this),define("mockup-utils",["jquery"],function(e){"use strict";var t=function(t){var n=this;n.className="plone-loader";var i={backdrop:null,zIndex:10005};return t||(t={}),n.options=e.extend({},i,t),n.init=function(){n.$el=e("."+n.className),0===n.$el.length&&(n.$el=e("
    "),n.$el.addClass(n.className).hide().appendTo("body"))},n.show=function(t){n.init(),n.$el.show();var i=n.options.zIndex;"function"==typeof i?i=Math.max(i(),10005):(i=10005,e(".plone-modal-wrapper,.plone-modal-backdrop").each(function(){i=Math.max(i,e(this).css("zIndex")||10005)}),i+=1),n.$el.css("zIndex",i),void 0===t&&(t=!0),n.options.backdrop&&(n.options.backdrop.closeOnClick=t,n.options.backdrop.closeOnEsc=t,n.options.backdrop.init(),n.options.backdrop.show())},n.hide=function(){n.init(),n.$el.hide()},n},n=function(e){return void 0===e&&(e="id"),e+Math.floor(65536*(1+Math.random())).toString(16).substring(1)},i={get:function(e){if(window.localStorage){var t=window.localStorage[e];return"string"==typeof t?JSON.parse(t):void 0}},set:function(e,t){window.localStorage&&(window.localStorage[e]=JSON.stringify(t))}};return{bool:function(t){return"string"==typeof t&&(t=e.trim(t).toLowerCase()),-1===["false",!1,"0",0,"",void 0,null].indexOf(t)},escapeHTML:function(t){return e("
    ").text(t).html()},removeHTML:function(e){return e.replace(/<[^>]+>/gi,"")},featureSupport:{dragAndDrop:function(){return"draggable"in document.createElement("span")},fileApi:function(){return"undefined"!=typeof FileReader},history:function(){return!(!window.history||!window.history.pushState)}},generateId:n,getAuthenticator:function(){var t=e(\'input[name="_authenticator"]\');return 0===t.length?(t=e(\'a[href*="_authenticator"]\')).length>0?t.attr("href").split("_authenticator=")[1]:"":t.val()},getWindow:function(){var e=window;return e.parent!==window&&(e=e.parent),e},Loading:t,loading:new t,parseBodyTag:function(t){return e(/]*>[^]*<\\/body>/im.exec(t)[0].replace("","
    ")).eq(0).html()},QueryHelper:function(t){var n=this,i={pattern:null,vocabularyUrl:null,searchParam:"SearchableText",pathOperator:"plone.app.querystring.operation.string.path",attributes:["UID","Title","Description","getURL","portal_type"],batchSize:10,baseCriteria:[],sort_on:"is_folderish",sort_order:"reverse",pathDepth:1};return n.options=e.extend({},i,t),n.pattern=n.options.pattern,void 0!==n.pattern&&null!==n.pattern||(n.pattern={browsing:!1,basePath:"/"}),n.options.url&&!n.options.vocabularyUrl?n.options.vocabularyUrl=n.options.url:n.pattern.vocabularyUrl&&(n.options.vocabularyUrl=n.pattern.vocabularyUrl),n.valid=Boolean(n.options.vocabularyUrl),n.getBatch=function(e){return{page:e||1,size:n.options.batchSize}},n.getCurrentPath=function(){var e,t=n.pattern;"function"==typeof(e=n.currentPath?n.currentPath:t.currentPath)&&(e=e());var i=e;return i||(i=t.basePath?t.basePath:t.options.basePath?t.options.basePath:"/"),i},n.getCriterias=function(t,i){void 0===i&&(i={});var o=[];return(i=e.extend({},{useBaseCriteria:!0,additionalCriterias:[]},i)).useBaseCriteria&&(o=n.options.baseCriteria.slice(0)),t&&(t+="*",o.push({i:n.options.searchParam,o:"plone.app.querystring.operation.string.contains",v:t})),i.searchPath?o.push({i:"path",o:n.options.pathOperator,v:i.searchPath+"::"+n.options.pathDepth}):n.pattern.browsing&&o.push({i:"path",o:n.options.pathOperator,v:n.getCurrentPath()+"::"+n.options.pathDepth}),o=o.concat(i.additionalCriterias)},n.getQueryData=function(e,t){var i={query:JSON.stringify({criteria:n.getCriterias(e),sort_on:n.options.sort_on,sort_order:n.options.sort_order}),attributes:JSON.stringify(n.options.attributes)};return t&&(i.batch=JSON.stringify(n.getBatch(t))),i},n.getUrl=function(){var t=n.options.vocabularyUrl;return-1===t.indexOf("?")?t+="?":t+="&",t+e.param(n.getQueryData())},n.selectAjax=function(){return{url:n.options.vocabularyUrl,dataType:"JSON",quietMillis:100,data:function(e,t){return n.getQueryData(e,t)},results:function(e,t){var n=10*t1&&o(l,"")>-1&&(n=RegExp(this.source,r.replace.call(i(this),"g","")),r.replace.call(e.slice(l.index),n,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function i(){}function o(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}function r(e){return(e=+e)!==e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=f.call(arguments,1),o=function(){if(this instanceof o){var i=t.apply(this,n.concat(f.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(f.call(arguments)))};return t.prototype&&(i.prototype=t.prototype,o.prototype=new i,i.prototype=null),o});var s,a,l,c,h,u=Function.prototype.call,d=Array.prototype,p=Object.prototype,f=d.slice,g=u.bind(p.toString),m=u.bind(p.hasOwnProperty);if((h=m(p,"__defineGetter__"))&&(s=u.bind(p.__defineGetter__),a=u.bind(p.__defineSetter__),l=u.bind(p.__lookupGetter__),c=u.bind(p.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,n=[];if(n.splice.apply(n,e(20)),n.splice.apply(n,e(26)),t=n.length,n.splice(5,0,"XXX"),n.length,t+1==n.length)return!0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(f.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):void 0==e?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(u=c;u--;)this[l+u]=this[a+u];if(r&&e===h)this.length=h,this.push.apply(this,o);else for(this.length=h+r,u=0;u>>0;if("[object Function]"!=g(e))throw new TypeError;for(;++o>>0,o=Array(i),r=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,r=[],s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var r=0;r>>0,o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var r=0;r>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var o,r=0;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in n){o=n[r++];break}if(++r>=i)throw new TypeError("reduce of empty array with no initial value")}for(;r>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var o,r=i-1;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in n){o=n[r--];break}if(--r<0)throw new TypeError("reduceRight of empty array with no initial value")}do{r in this&&(o=e.call(void 0,o,n[r],r,t))}while(r--);return o}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=y&&"[object String]"==g(this)?this.split(""):B(this),n=t.length>>>0;if(!n)return-1;var i=0;for(arguments.length>1&&(i=r(arguments[1])),i=i>=0?i:Math.max(0,n+i);i>>0;if(!n)return-1;var i=n-1;for(arguments.length>1&&(i=Math.min(i,r(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:p)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(m(e,t)){var n;if(n={enumerable:!0,configurable:!0},h){var i=e.__proto__;e.__proto__=p;var o=l(e,t),r=c(e,t);if(e.__proto__=i,o||r)return o&&(n.get=o),r&&(n.set=r),n}return n.value=e[t],n}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var b;b=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=b();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != \'object\'");var i=function(){};i.prototype=e,(n=new i).__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var C=o({}),A="undefined"==typeof document||o(document.createElement("div"));if(!C||!A)var F=Object.defineProperty}if(!Object.defineProperty||F){Object.defineProperty=function(e,t,n){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof n&&"function"!=typeof n||null===n)throw new TypeError("Property description must be an object: "+n);if(F)try{return F.call(Object,e,t,n)}catch(e){}if(m(n,"value"))if(h&&(l(e,t)||c(e,t))){var i=e.__proto__;e.__proto__=p,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!h)throw new TypeError("getters & setters can not be defined on this javascript engine");m(n,"get")&&s(e,t,n.get),m(n,"set")&&a(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)m(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";m(e,t);)t+="?";e[t]=!0;var n=m(e,t);return delete e[t],n}),!Object.keys){var E=!0,S=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],$=S.length;for(var x in{toString:null})E=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var n in e)m(e,n)&&t.push(n);if(E)for(var i=0,o=$;i=0?parseFloat((o.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]):parseFloat((o.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((o.match(/rv:(\\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(o.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(o.split(" Chrome/")[1])||void 0,t.isAIR=o.indexOf("AdobeAIR")>=0,t.isIPad=o.indexOf("iPad")>=0,t.isTouchPad=o.indexOf("TouchPad")>=0,t.isChromeOS=o.indexOf(" CrOS ")>=0}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function i(e,t,n){var i=c(t);if(!s.isMac&&a){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(i|=8),a.altGr){if(3==(3&i))return;a.altGr=0}if(18===n||17===n){var o="location"in t?t.location:t.keyLocation;17===n&&1===o?1==a[n]&&(l=t.timeStamp):18===n&&3===i&&2===o&&t.timeStamp-l<50&&(a.altGr=!0)}}if(n in r.MODIFIER_KEYS&&(n=-1),8&i&&n>=91&&n<=93&&(n=-1),i||13!==n||3!==(o="location"in t?t.location:t.keyLocation)||(e(t,i,-n),!t.defaultPrevented)){if(s.isChromeOS&&8&i){if(e(t,i,n),t.defaultPrevented)return;i&=-9}return!!(i||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS)&&e(t,i,n)}}function o(){a=Object.create(null)}var r=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var i=function(){n.call(e,window.event)};n._wrapper=i,e.attachEvent("on"+t,i)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,i){function o(e){n&&n(e),i&&i(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",o,!0),t.removeListener(document,"dragstart",o,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",o,!0),t.addListener(document,"dragstart",o,!0),o},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var i,o;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];i=t.clientX,o=t.clientY}),t.addListener(e,"touchmove",function(e){var t=e.changedTouches[0];e.wheelX=-(t.clientX-i)/1,e.wheelY=-(t.clientY-o)/1,i=t.clientX,o=t.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),n(e)})},t.addMultiMouseDownListener=function(e,n,i,o){function r(e){if(0!==t.getButton(e)?u=0:e.detail>1?++u>4&&(u=1):u=1,s.isIE){var r=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;h&&!r||(u=1),h&&clearTimeout(h),h=setTimeout(function(){h=null},n[u-1]||600),1==u&&(l=e.clientX,c=e.clientY)}if(e._clicks=u,i[o]("mousedown",e),u>4)u=0;else if(u>1)return i[o](d[u],e)}function a(e){u=2,h&&clearTimeout(h),h=setTimeout(function(){h=null},n[u-1]||600),i[o]("mousedown",e),i[o](d[u],e)}var l,c,h,u=0,d={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",r),s.isOldIE&&t.addListener(e,"dblclick",a)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return r.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;r(e,"keydown",function(e){l=e.keyCode}),r(e,"keypress",function(e){return i(n,e,l)})}else{var c=null;r(e,"keydown",function(e){a[e.keyCode]=(a[e.keyCode]||0)+1;var t=i(n,e,e.keyCode);return c=e.defaultPrevented,t}),r(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),r(e,"keyup",function(e){a[e.keyCode]=null}),a||(o(),r(window,"focus",o))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,n){n=n||window;t.addListener(n,"message",function i(o){"zero-timeout-message-1"==o.data&&(t.stopPropagation(o),t.removeListener(n,"message",i),e())}),n.postMessage("zero-timeout-message-1","*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var n="";t>0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\\s\\s*/,o=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(o,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;n=53&&k()}},P=s.delayedCall(O,50);i.addListener(u,"compositionstart",M),o.isGecko?i.addListener(u,"text",function(){P.schedule()}):(i.addListener(u,"keyup",function(){P.schedule()}),i.addListener(u,"keydown",function(){P.schedule()})),i.addListener(u,"compositionend",I),this.getElement=function(){return u},this.setReadOnly=function(e){u.readOnly=e},this.onContextMenu=function(e){x=!0,n(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,n){if(n||!o.isOldIE){m||(m=u.style.cssText),u.style.cssText=(n?"z-index:100000;":"")+"height:"+u.style.height+";"+(o.isIE?"opacity:0.1;":"");var s=t.container.getBoundingClientRect(),a=r.computedStyle(t.container),l=s.top+(parseInt(a.borderTopWidth)||0),c=s.left+(parseInt(s.borderLeftWidth)||0),d=s.bottom-l-u.clientHeight-2,p=function(e){u.style.left=e.clientX-c-2+"px",u.style.top=Math.min(e.clientY-l-2,d)+"px"};p(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(N),o.isWin&&!o.isOldIE&&i.capture(t.container,p,h))}},this.onContextMenuClose=h;var N,z=function(e){t.textInput.onContextMenu(e),h()};i.addListener(u,"mouseup",z),i.addListener(u,"mousedown",function(e){e.preventDefault(),h()}),i.addListener(t.renderer.scroller,"contextmenu",z),i.addListener(u,"contextmenu",z)}}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function i(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function o(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}function r(e,t){if(e.start.row==e.end.row)n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else var n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}e("../lib/dom"),e("../lib/event"),e("../lib/useragent");(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,o=e.getButton();if(0!==o){var r=i.getSelectionRange().isEmpty();return i.$blockScrolling++,(r||1==o)&&i.selection.moveToPosition(n),i.$blockScrolling--,void(2==o&&i.textInput.onContextMenu(e.domEvent))}return this.mousedownEvent.time=Date.now(),!t||i.isFocused()||(i.focus(),!this.$focusTimout||this.$clickSelection||i.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var o=r(this.$clickSelection,n);n=o.cursor,e=o.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),o=n.selection[e](i.row,i.column);if(n.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(o.start),a=this.$clickSelection.comparePoint(o.end);if(-1==s&&a<=0)t=this.$clickSelection.end,o.end.row==i.row&&o.end.column==i.column||(i=o.start);else if(1==a&&s>=0)t=this.$clickSelection.start,o.start.row==i.row&&o.start.column==i.column||(i=o.end);else if(-1==s&&1==a)i=o.end,t=o.start;else{var l=r(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),i=this.editor;return i.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||n<200?(this.$lastScrollTime=t,i.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),i=this.editor;if(i.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||n<200)return this.$lastScrollTime=t,i.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(i.prototype),t.DefaultHandlers=i}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function i(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}e("./lib/oop");var o=e("./lib/dom");(function(){this.$init=function(){return this.$element=o.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){o.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){o.addCssClass(this.getElement(),e)},this.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(i.prototype),t.Tooltip=i}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function i(e){a.call(this,e)}var o=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/event"),a=e("../tooltip").Tooltip;r.inherits(i,a),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,o=this.getWidth(),r=this.getHeight();t+=15,(e+=15)+o>n&&(e-=e+o-n),t+r>i&&(t-=20+r),a.prototype.setPosition.call(this,e,t)}}.call(i.prototype),t.GutterHandler=function(e){function t(){var t=u.getDocumentPosition().row,i=l.$annotations[t];if(!i)return n();if(t==a.session.getLength()){var o=a.renderer.pixelToScreenCoordinates(0,u.y).row,s=u.$pos;if(o>a.session.documentToScreenRow(s.row,s.column))return n()}if(d!=i)if(d=i.text.join("
    "),c.setHtml(d),c.show(),a._signal("showGutterTooltip",c),a.on("mousewheel",n),e.$tooltipFollowsMouse)r(u);else{var h=u.domEvent.target.getBoundingClientRect(),p=c.getElement().style;p.left=h.right+"px",p.top=h.bottom+"px"}}function n(){h&&(h=clearTimeout(h)),d&&(c.hide(),d=null,a._signal("hideGutterTooltip",c),a.removeEventListener("mousewheel",n))}function r(e){c.setPosition(e.x,e.y)}var a=e.editor,l=a.renderer.$gutterLayer,c=new i(a.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(a.isFocused()&&0==t.getButton()&&"foldWidgets"!=l.getRegion(t)){var n=t.getDocumentPosition().row,i=a.session.selection;if(t.getShiftKey())i.selectTo(n,0);else{if(2==t.domEvent.detail)return a.selectAll(),t.preventDefault();e.$clickSelection=a.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}});var h,u,d;e.editor.setDefaultHandler("guttermousemove",function(i){var s=i.domEvent.target||i.domEvent.srcElement;if(o.hasCssClass(s,"ace_fold-widget"))return n();d&&e.$tooltipFollowsMouse&&r(i),u=i,h||(h=setTimeout(function(){h=null,u&&!e.isMousePressed?t():n()},50))}),s.addListener(a.renderer.$gutter,"mouseout",function(e){u=null,d&&!h&&(h=setTimeout(function(){h=null,n()},50))}),a.on("changeSession",n)}}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../lib/useragent"),r=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=o.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(r.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function i(e){function t(e,t){var n=Date.now(),i=!t||e.row!=t.row,r=!t||e.column!=t.column;!x||i||r?(m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,x=n,_={x:y,y:b}):o(_.x,_.y,y,b)>h?x=null:n-x>=c&&(m.renderer.scrollCursorIntoView(),x=null)}function n(e,t){var n=Date.now(),i=m.renderer.layerConfig.lineHeight,o=m.renderer.layerConfig.characterWidth,r=m.renderer.scroller.getBoundingClientRect(),s={x:{left:y-r.left,right:r.right-y},y:{top:b-r.top,bottom:r.bottom-b}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};a/o<=2&&(h.column+=s.x.left=l&&m.renderer.scrollCursorIntoView(h):$=n:$=null}function i(){var e=F;t(F=m.renderer.screenToTextCoordinates(y,b),e),n(F,e)}function u(){A=m.selection.toOrientedRange(),w=m.session.addMarker(A,"ace_selection",m.getSelectionStyle()),m.clearSelection(),m.isFocused()&&m.renderer.$cursorLayer.setBlinking(!1),clearInterval(C),i(),C=setInterval(i,20),D=0,s.addListener(document,"mousemove",p)}function d(){clearInterval(C),m.session.removeMarker(w),w=null,m.$blockScrolling+=1,m.selection.fromOrientedRange(A),m.$blockScrolling-=1,m.isFocused()&&!S&&m.renderer.$cursorLayer.setBlinking(!m.getReadOnly()),A=null,F=null,D=0,$=null,x=null,s.removeListener(document,"mousemove",p)}function p(){null==B&&(B=setTimeout(function(){null!=B&&w&&d()},20))}function f(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function g(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],i=a.isMac?e.altKey:e.ctrlKey,o="uninitialized";try{o=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var r="none";return i&&t.indexOf(o)>=0?r="copy":n.indexOf(o)>=0?r="move":t.indexOf(o)>=0&&(r="copy"),r}var m=e.editor,v=r.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),m.addEventListener("mousedown",this.onMouseDown.bind(e));var w,y,b,C,A,F,E,S,$,x,_,k=m.container,D=0;this.onDragStart=function(e){if(this.cancelDrag||!k.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}A=m.getSelectionRange();var n=e.dataTransfer;n.effectAllowed=m.getReadOnly()?"copy":"copyMove",a.isOpera&&(m.container.appendChild(v),v.scrollTop=0),n.setDragImage&&n.setDragImage(v,0,0),a.isOpera&&m.container.removeChild(v),n.clearData(),n.setData("Text",m.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(k.draggable=!1,S=!1,this.setState(null),!m.getReadOnly()){var t=e.dataTransfer.dropEffect;E||"move"!=t||m.session.remove(m.getSelectionRange()),m.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!m.getReadOnly()&&f(e.dataTransfer))return y=e.clientX,b=e.clientY,w||u(),D++,e.dataTransfer.dropEffect=E=g(e),s.preventDefault(e)},this.onDragOver=function(e){if(!m.getReadOnly()&&f(e.dataTransfer))return y=e.clientX,b=e.clientY,w||(u(),D++),null!==B&&(B=null),e.dataTransfer.dropEffect=E=g(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--D<=0&&w)return d(),E=null,s.preventDefault(e)},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(E){case"move":A=A.contains(F.row,F.column)?{start:F,end:F}:m.moveText(A,F);break;case"copy":A=m.moveText(A,F,!0)}else{var n=t.getData("Text");A={start:F,end:m.session.insert(F,n)},m.focus(),E=null}return d(),s.preventDefault(e)}},s.addListener(k,"dragstart",this.onDragStart.bind(e)),s.addListener(k,"dragend",this.onDragEnd.bind(e)),s.addListener(k,"dragenter",this.onDragEnter.bind(e)),s.addListener(k,"dragover",this.onDragOver.bind(e)),s.addListener(k,"dragleave",this.onDragLeave.bind(e)),s.addListener(k,"drop",this.onDrop.bind(e));var B=null}function o(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}var r=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=a.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state&&(n=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y))>3&&t.dragDrop(),"dragWait"===this.state){var n=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on"),t.getDragDelay()?(a.isWebKit&&(this.cancelDrag=!0,t.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(i.prototype),t.DragdropHandler=i}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var i=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),o=document.createElement("script");o.src=e,n.appendChild(o),o.onload=o.onreadystatechange=function(e,n){!n&&o.readyState&&"loaded"!=o.readyState&&"complete"!=o.readyState||(o=o.onload=o.onreadystatechange=null,n||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var i={},o=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],i=this._defaultHandlers[e];if(n.length||i){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=o),t.preventDefault||(t.preventDefault=r),n=n.slice();for(var s=0;s1&&(o=n[n.length-2]);var s=c[t+"Path"];return null==s?s=c.basePath:"/"==i&&(t=i=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+i+o+this.get("suffix")},t.setModuleUrl=function(e,t){return c.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,i){var o,r;Array.isArray(n)&&(r=n[0],n=n[1]);try{o=e(n)}catch(e){}if(o&&!t.$loading[n])return i&&i(o);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var i=t.$loading[n];t.$loading[n]=null,i.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,r),a)}},i(!0),t.init=i}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../lib/useragent"),r=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new r(this),new s(this),new l(this);var n=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();i.addListener(a,"click",this.onMouseEvent.bind(this,"click")),i.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),i.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),i.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;i.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(a,"mousedown",n),i.addListener(c,"mousedown",n),o.isIE&&e.renderer.scrollBarV&&(i.addListener(e.renderer.scrollBarV.element,"mousedown",n),i.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var i=e.renderer.screenToTextCoordinates(n.x,n.y),o=e.session.selection.getRange(),r=e.renderer;!o.isEmpty()&&o.insideStart(i.row,i.column)?r.setCursorStyle("default"):r.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;n&&n.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var n=new a(t,this.editor);n.speed=2*this.$scrollSpeed,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new a(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var r=this,s=function(e){if(e){if(o.isWebKit&&!e.which&&r.releaseMouse)return r.releaseMouse();r.x=e.clientX,r.y=e.clientY,t&&t(e),r.mouseEvent=new a(e,r.editor),r.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),r[r.state+"End"]&&r[r.state+"End"](e),r.state="",null==n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),r.isMousePressed=!1,r.$onCaptureMouseMove=r.releaseMouse=null,e&&r.onMouseEvent("mouseup",e)},c=function(){r[r.state]&&r[r.state](),r.$mouseMoved=!1};if(o.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});r.$onCaptureMouseMove=s,r.releaseMouse=i.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&i.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:o.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";t.FoldHandler=function(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e.session,o=i.getFoldAt(n.row,n.column,1);o&&(t.getAccelKey()?i.removeFold(o):i.expandFold(o),t.stop())}),e.on("gutterclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var n=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var n=t.getDocumentPosition().row,i=e.session,o=i.getParentFoldRangeData(n,!0),r=o.range||o.firstRange;if(r){n=r.start.row;var s=i.getFoldAt(n,i.getLine(n).length,1);s?i.removeFold(s):(i.addFold("...",r),e.renderer.scrollCursorIntoView({row:r.start.row,column:0}))}t.stop()}})}}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var i=e("../lib/keys"),o=e("../lib/event"),r=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);-1!=n&&this.$handlers.splice(n,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==n&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,i){for(var r,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((r=this.$handlers[l].handleKeyboard(this.$data,e,t,n,i))&&r.command&&((s="null"==r.command||a.exec(r.command,this.$editor,r.args,i))&&i&&-1!=e&&1!=r.passEvent&&1!=r.command.passEvent&&o.stopEvent(i),s)););return s||-1!=e||(r={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal&&this.$editor._signal("keyboardActivity",r),s},this.onCommandKey=function(e,t,n){var o=i.keyCodeToString(n);this.$callKeyboardHandlers(t,o,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(r.prototype),t.KeyBinding=r}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var i=function(e,t,n,i){this.start={row:e,column:t},this.end={row:n,column:i}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,i=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(i.row,i.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(i.row,i.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)n={row:t+1,column:0};else if(this.end.rowt)o={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,o=this.session.getFoldLine(i);return o?(i=o.start.row,n=o.end.row):n=i,!0===t?new s(i,0,n,this.session.getLine(n).length):new s(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-n,t.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(e,t,1);if(o)this.moveCursorTo(o.end.row,o.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(r)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},this.$shortWordEndIndex=function(e){var t,n=0,i=/\\s/,o=this.session.tokenRe;if(o.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(o.lastIndex=0;(t=e[n])&&!o.test(t);)if(o.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),o=this.session.getFoldAt(e,t,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(t==n.length){var r=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\\s*$/.test(i));n=i.length,/\\s+$/.test(i)||(i="")}var r=o.stringReverse(i),s=this.$shortWordEndIndex(r);return this.moveCursorTo(t,n-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var i=this.session.screenToDocumentPosition(n.row+e,n.column);0!==e&&0===t&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||e>0)&&i.row++,this.moveCursorTo(i.row,i.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return s.fromPoints(t,n)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else(e=this.getRange()).isBackwards=this.isBackwards();return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var i=e("./config"),o=2e3,r=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var n=this.states[t],i=[],o=0,r=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),u>1&&(/\\\\\\d/.test(c.regex)?h=c.regex.replace(/\\\\([0-9]+)/g,function(e,t){return"\\\\"+(parseInt(t,10)+o+1)}):(u=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=u,i.push(h),c.onMatch||(c.onMatch=null)}}i.length||(r[0]=0,i.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){o=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"==typeof n)return[{type:n,value:e}];for(var i=[],o=0,r=n.length;oh){var v=e.substring(h,m-g.length);d.type==p?d.value+=v:(d.type&&c.push(d),d={type:p,value:v})}for(w=0;wo){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},this.reportError=i.reportError}).call(r.prototype),t.Tokenizer=r}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var i=e("../lib/lang"),o=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],o=0;o=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)n+=e[t-=1].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},u=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t])return i=h[t];i=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},d=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){u(n);var c=n.getSelectionRange(),h=o.doc.getTextRange(c);if(""!==h&&"{"!==h&&n.getWrapBehavioursEnabled())return d(c,h,"{","}");if(p.isSaneInsertion(n,o))return/[\\]\\}\\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){if(u(n),"}"==(g=l.substring(s.column,s.column+1))&&null!==o.$findOpeningBracket("}",{column:s.column+1,row:s.row})&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\\n"==r||"\\r\\n"==r){u(n);var f="";p.isMaybeInsertedClosing(s,l)&&(f=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var g=l.substring(s.column,s.column+1);if("}"===g){var m=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;v=this.$getIndent(o.getLine(m.row))}else{if(!f)return void p.clearMaybeInsertedClosing();var v=this.$getIndent(l)}var w=v+o.getTabString();return{text:"\\n"+w+"\\n"+v+f,selection:[1,w.length,1,w.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){if(u(n),"}"==o.doc.getLine(r.start.row).substring(r.end.column,r.end.column+1))return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){u(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return d(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){u(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r&&(u(n),")"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){u(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return d(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){u(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r&&(u(n),"]"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if(\'"\'==o||"\'"==o){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(o))return;u(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"\'"!==a&&\'"\'!=a&&n.getWrapBehavioursEnabled())return d(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),h=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),g=i.getTokenAt(l.row,l.column+1);if("\\\\"==h&&f&&/escape/.test(f.type))return null;var m,v=f&&/string|escape/.test(f.type),w=!g||/string|escape/.test(g.type);if(p==r)(m=v!==w)&&/string\\.end/.test(g.type)&&(m=!1);else{if(v&&!w)return null;if(v&&w)return null;var y=i.$mode.tokenRe;y.lastIndex=0;var b=y.test(h);y.lastIndex=0;var C=y.test(h);if(b||C)return null;if(p&&!/[\\s;,.})\\]\\\\]/.test(p))return null;m=!0}return{text:m?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&(\'"\'==r||"\'"==r)&&(u(n),i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==r))return o.end.column++,o})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";t.packages={},function(e){var n=/\\w{4}/g;for(var i in e)t.packages[i]=e[i].replace(n,"\\\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var i=e("../tokenizer").Tokenizer,o=e("./text_highlight_rules").TextHighlightRules,r=e("./behaviour/cstyle").CstyleBehaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=o};(function(){this.$defaultBehaviour=new r,this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\\\$_]|\\\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,i){function o(e){for(var t=n;t<=i;t++)e(r.getLine(t),t)}var r=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),u=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var d=this.lineCommentStart.map(a.escapeRegExp).join("|"),p=this.lineCommentStart[0];else var d=a.escapeRegExp(this.lineCommentStart),p=this.lineCommentStart;d=new RegExp("^(\\\\s*)(?:"+d+") ?"),u=t.getUseSoftTabs();var f=function(e,t){var n=e.match(d);if(n){var i=n[1].length,o=n[0].length;w(e,i,o)||" "!=n[0][o-1]||o--,r.removeInLine(t,i,o)}},g=p+" ",m=function(e,t){s&&!/\\S/.test(e)||(w(e,c,c)?r.insertInLine({row:t,column:c},g):r.insertInLine({row:t,column:c},p))},v=function(e,t){return d.test(e)},w=function(e,t,n){for(i=0;t--&&" "==e.charAt(t);)i++;if(i%h!=0)return!1;for(var i=0;" "==e.charAt(n++);)i++;return h>2?i%h!=h-1:i%h==0}}else{if(!this.blockComment)return!1;var p=this.blockComment.start,y=this.blockComment.end,d=new RegExp("^(\\\\s*)(?:"+a.escapeRegExp(p)+")"),b=new RegExp("(?:"+a.escapeRegExp(y)+")\\\\s*$"),m=function(e,t){v(e,t)||s&&!/\\S/.test(e)||(r.insertInLine({row:t,column:e.length},y),r.insertInLine({row:t,column:c},p))},f=function(e,t){var n;(n=e.match(b))&&r.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(d))&&r.removeInLine(t,n[1].length,n[0].length)},v=function(e,n){if(d.test(e))return!0;for(var i=t.getTokens(n),o=0;oe.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),u&&c%h!=0&&(c=Math.floor(c/h)*h),o(l?f:m)},this.toggleBlockComment=function(e,t,n,i){var o=this.blockComment;if(o){!o.start&&o[0]&&(o=o[0]);var r,s,a=new l(t,i.row,i.column),h=a.getCurrentToken(),u=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var d,p;h&&/comment/.test(h.type);){if(-1!=(m=h.value.indexOf(o.start))){var f=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+m;d=new c(f,g,f,g+o.start.length);break}h=a.stepBackward()}for(h=(a=new l(t,i.row,i.column)).getCurrentToken();h&&/comment/.test(h.type);){var m=h.value.indexOf(o.end);if(-1!=m){var f=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+m;p=new c(f,g,f,g+o.end.length);break}h=a.stepForward()}p&&t.remove(p),d&&(t.remove(d),r=d.start.row,s=-o.start.length)}else s=o.start.length,r=n.start.row,t.insert(n.end,o.end),t.insert(n.start,o.start);u.start.row==r&&(u.start.column+=s),u.end.row==r&&(u.end.column+=s),t.selection.fromOrientedRange(u)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;tthis.row)){var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var o={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:o,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(r.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./apply_delta").applyDelta,r=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){i.implement(this,r),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=t?t[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\\r\\n"==e||"\\r"==e||"\\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(t=this.getLines(e.start.row,e.end.row))[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),i=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:i,action:"insert",lines:[t]},!0),this.clonePos(i)},this.clippedPos=function(e,t){var n=this.getLength();void 0===e?e=n:e<0?e=0:e>=n&&(e=n-1,t=void 0);var i=this.getLine(e);return void 0==t&&(t=i.length),t=Math.min(Math.max(t,0),i.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){var n=0;(e=Math.min(Math.max(e,0),this.getLength()))0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);return t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),o(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var n=e.lines,i=n.length,o=e.start.row,r=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=n.slice(s,a);if(a>i){e.lines=l,e.start.row=o+s,e.start.column=r;break}l.push(""),this.applyDelta({start:this.pos(o+s,r),end:this.pos(o+a,r=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var n=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,o=t||0,r=n.length;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r<=i&&n.fireUpdateEvent(r,i)}}};(function(){i.implement(this,o),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(r.prototype),t.BackgroundTokenizer=r}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var i=e("./lib/lang"),o=(e("./lib/oop"),e("./range").Range),r=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,n,r){if(this.regExp)for(var s=r.firstRow,a=r.lastRow,l=s;l<=a;l++){var c=this.cache[l];null==c&&((c=i.getMatchOffsets(n.getLine(l),this.regExp)).length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new o(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(n),this.clazz,r)}}}).call(r.prototype),t.SearchHighlight=r}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new o(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var o=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can\'t add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn\'t have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var i,o,r,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,n=this.end.column);for(var c=0;c0)){var l=i(e,s.start);return 0===a?t&&0!==l?-r-2:r:l>0||0===l&&!t?r:-r-1}}return-r-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},this.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){for(var e,t=[],n=this.ranges,o=(n=n.sort(function(e,t){return i(e.start,t.start)}))[0],r=1;r=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;if(c.start.row==i&&c.start.column>=t.column&&(c.start.column==t.column&&this.$insertRight||(c.start.column+=r,c.start.row+=o)),c.end.row==i&&c.end.column>=t.column){if(c.end.column==t.column&&this.$insertRight)continue;c.end.column==t.column&&r>0&&ac.start.column&&c.end.column==s[a+1].start.column&&(c.end.column-=r),c.end.column+=r,c.end.row+=o}}if(0!=o&&a=e)return o;if(o.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0),i;i=e)return o}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,o=0;o=t){a=e?i-=t-a:i=0);break}s>=e&&(i-=a>=e?s-a:s-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n,i=this.$foldData,s=!1;e instanceof r?n=e:(n=new r(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,h=n.end.column;if(!(a0&&(this.removeFolds(p),p.forEach(function(e){n.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,o;if(null==e?(n=new i(0,0,this.getLength(),0),t=!0):n="number"==typeof e?new i(e,0,e,this.getLine(e).length):"row"in e?i.fromPoints(e,e):e,o=this.getFoldsInRangeList(n),t)this.removeFolds(o);else for(var r=o;r.length;)this.expandFolds(r),r=this.getFoldsInRangeList(n);if(o.length)return o},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,o){null==i&&(i=e.start.row),null==o&&(o=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var r=this.doc,s="";return e.walk(function(e,t,n,a){if(!(t=e){o=r.end.row;try{var s=this.addFold("...",r);s&&(s.collapseChildren=n)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};for(var i,o=e-1;o>=0;){var r=n[o];if(null==r&&(r=n[o]=this.getFoldWidget(o)),"start"==r){var s=this.getFoldWidgetRange(o);if(i||(i=s),s&&s.end.row>=e)break}o--}return{range:-1!==o&&s,firstRange:i}},this.onFoldWidgetClick=function(e,t){var n={children:(t=t.domEvent).shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),o="end"===n?-1:1,r=this.getFoldAt(e,-1===o?0:i.length,o);if(r)return t.children||t.all?this.removeFold(r):this.expandFold(r),r;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(r=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(r.range))return this.removeFold(r),r;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var o=this.getFoldAt(t,this.getLine(t).length,1);o?this.removeFold(o):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,r=n.charAt(e.column-1),s=r&&r.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(s||(r=n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\\(\\[\\{])|([\\)\\]\\}])/),i=!1),!s)return null;if(s[1]){if(!(a=this.$findClosingBracket(s[1],e)))return null;t=o.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\\\.?"+a.type.replace(".","\\\\.").replace("rparen",".paren").replace(/\\b(?:end)\\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==o){if(0==(r-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(r+=1);l-=1}do{a=s.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\\\.?"+a.type.replace(".","\\\\.").replace("lparen",".paren").replace(/\\b(?:start|begin)\\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;l=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}i.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var o=n+i>>1,r=e[o];if(t>r)n=o+1;else{if(!(t=t);r++);return(n=i[r])?(n.index=r,n.start=o-n.value.length,n):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=o.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?o.stringRepeat(" ",this.getTabSize()):"\\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)o=this.tokenRe;else if(/^\\s+$/.test(n.slice(t-1,t+1)))o=/\\s/;else var o=this.nonTokenRe;var r=t;if(r>0){do{r--}while(r>=0&&n.charAt(r).match(o));r++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,o=0,r=this.$foldData[o],s=r?r.start.row:1/0,a=t.length,l=0;ls){if((l=r.end.row+1)>=a)break;s=(r=this.$foldData[o++])?r.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=e.length-1;-1!=i;i--){var o=e[i];"doc"==o.group?(this.doc.revertDeltas(o.deltas),n=this.$getUndoSelection(o.deltas,!0,n)):o.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=0;ie.end.column&&(r.start.column+=h),r.end.row==e.end.row&&r.end.column>e.end.column&&(r.end.column+=h)),l&&r.start.row>=e.end.row&&(r.start.row+=l,r.end.row+=l)}if(r.end=this.insert(r.start,i),o.length){var s=e.start,a=r.start,l=a.row-s.row,h=a.column-s.column;this.addFolds(o.map(function(e){return(e=e.clone()).start.row==s.row&&(e.start.column+=h),e.end.row==s.row&&(e.end.column+=h),e.start.row+=l,e.end.row+=l,e}))}return r},this.indentRows=function(e,t,n){n=n.replace(/\\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(e){for(var t=e.collapseRows(),n=new c(0,0,0,0),i=this.getTabSize(),o=t.start.row;o<=t.end.row;++o){var r=this.getLine(o);n.start.row=o,n.end.row=o;for(var s=0;s0){var i=this.getRowFoldEnd(t+n);if(i>this.doc.getLength()-1)return 0;o=i-t}else{e=this.$clipRowToDocument(e);var o=(t=this.$clipRowToDocument(t))-e+1}var r=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(r).map(function(e){return e=e.clone(),e.start.row+=o,e.end.row+=o,e}),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+o,a),s.length&&this.addFolds(s),o},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,o=e.end,r=i.row,s=o.row,a=s-r,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(r,a);d=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);p=0;if(g=this.getFoldLine(o.row)){g.addRemoveChars(o.row,o.column,i.column-o.column),g.shiftRow(-a);var c=this.getFoldLine(r);c&&c!==g&&(c.merge(g),g=c),p=d.indexOf(g)+1}for(p;p=o.row&&g.shiftRow(-a);s=r}else{var h=Array(a);h.unshift(r,0);var u=t?this.$wrapData:this.$rowLengthCache;u.splice.apply(u,h);var d=this.$foldData,p=0;if(g=this.getFoldLine(r)){var f=g.range.compareInside(i.row,i.column);0==f?(g=g.split(i.row,i.column))&&(g.shiftRow(a),g.addRemoveChars(s,0,o.column-i.column)):-1==f&&(g.addRemoveChars(r,0,o.column-i.column),g.shiftRow(a)),p=d.indexOf(g)+1}for(p;p=r&&g.shiftRow(a)}else{a=Math.abs(e.start.column-e.end.column),"remove"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var g=this.getFoldLine(r);g&&g.addRemoveChars(r,i.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(r,s):this.$updateRowLengthCache(r,s),l},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,i){var o,r,s=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,h=e;for(i=Math.min(i,s.length-1);h<=i;)(r=this.getFoldLine(h,r))?(o=[],r.walk(function(e,i,r,a){var l;if(null!=e){(l=this.$getDisplayTokens(e,o.length))[0]=t;for(var c=1;ci-v;){var w=u+i-v;if(e[w-1]>=a&&e[w]>=a)s(w);else if(e[w]!=t&&e[w]!=n){for(var y=Math.max(w-(i-(i>>2)),u-1);w>y&&e[w]y&&e[w]y&&9==e[w];)w--}else for(;w>y&&e[w]y?s(++w):(2==e[w=u+i]&&w--,s(w-v))}else{for(w;w!=u-1&&e[w]!=t;w--);if(w>u){s(w);continue}for(w=u+i;w39&&s<48||s>57&&s<64?o.push(9):s>=4352&&e(s)?o.push(1,2):o.push(1)}return o},this.$getStringScreenWidth=function(t,n,i){if(0==n)return[0,0];null==n&&(n=1/0),i=i||0;var o,r;for(r=0;r=4352&&e(o)?i+=2:i+=1,!(i>n));r++);return[i,r]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var s=l[c],o=this.$docRowCache[c],u=e>l[h-1];else u=!h;for(var d=this.getLength()-1,p=this.getNextFoldLine(o),f=p?p.start.row:1/0;s<=e&&(a=this.getRowLength(o),!(s+a>e||o>=d));)s+=a,++o>f&&(o=p.end.row+1,f=(p=this.getNextFoldLine(o,p))?p.start.row:1/0),u&&(this.$docRowCache.push(o),this.$screenRowCache.push(s));if(p&&p.start.row<=o)n=this.getFoldDisplayLine(p),o=p.start.row;else{if(s+a<=e||o>d)return{row:d,column:this.getLine(d).length};n=this.getLine(o),p=null}var g=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){var v=Math.floor(e-s);i=m[v],v>0&&m.length&&(g=m.indent,r=m[v-1]||m[m.length-1],n=n.substring(r))}}return r+=this.$getStringScreenWidth(n,t-g)[1],this.$useWrapMode&&r>=i&&(r=i-1),p?p.idxToPosition(r):{row:o,column:r}},this.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i=0,o=null,r=null;(r=this.getFoldAt(e,t,1))&&(e=r.start.row,t=r.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],i=this.$screenRowCache[c],u=e>l[h-1];else u=!h;for(var d=this.getNextFoldLine(a),p=d?d.start.row:1/0;a=p){if((s=d.end.row+1)>e)break;p=(d=this.getNextFoldLine(s,d))?d.start.row:1/0}else s=a+1;i+=this.getRowLength(a),a=s,u&&(this.$docRowCache.push(a),this.$screenRowCache.push(i))}var f="";d&&a>=p?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e);var g=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){for(var v=0;f.length>=m[v];)i++,v++;f=f.substring(m[v-1]||0,f.length),g=v>0?m.indent:0}}return{row:i,column:g+this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,o=0,r=(t=this.$foldData[o++])?t.start.row:1/0;ir&&(i=t.end.row+1,r=(t=this.$foldData[o++])?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,o=0;on));r++);return[i,r]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),r.defineOptions(p.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function i(e,t){function n(e){return/\\w/.test(e)||t.regExp?"\\\\b":""}return n(e[0])+e+n(e[e.length-1])}var o=e("./lib/lang"),r=e("./lib/oop"),s=e("./range").Range,a=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return o.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach(function(e,n,o){if(e.start)i=e;else{var r=e.offset+(o||0);if(i=new s(n,r,n,r+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start))return i=null,!1}return!0}),i},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),r=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=i.length-c;e:for(var u=a.offset||0;u<=h;u++){for(v=0;vf||(r.push(l=new s(u,f,u+c-1,g)),c>2&&(u=u+c-2))}}else for(C=0;Cb&&r[v].end.row==n.end.row;)v--;for(r=r.slice(C,v+1),C=0,v=r.length;C=0;a--)if(i(s[a],t,r))return!0};else a=function(e,t,r){for(var s=o.getMatchOffsets(e,n),a=0;a=s;i--)if(n(e.getLine(i),i))return;if(0!=t.wrap)for(i=a,s=r.row;i>=s;i--)if(n(e.getLine(i),i))return}}:function(n){var i=r.row;if(!n(e.getLine(i).substr(r.column),i,r.column)){for(i+=1;i<=a;i++)if(n(e.getLine(i),i))return;if(0!=t.wrap)for(i=s,a=r.row;i<=a;i++)if(n(e.getLine(i),i))return}}}}}).call(a.prototype),t.Search=a}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function i(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function o(e,t){i.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),s=e("../lib/useragent"),a=r.KEY_MODS;o.prototype=i.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&("string"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var o in i){var r=i[o];if(r==e)delete i[o];else if(Array.isArray(r)){var s=r.indexOf(e);-1!=s&&(r.splice(s,1),1==r.length&&(i[o]=r[0]))}}},this.bindKey=function(e,t,n){if("object"==typeof e&&e&&(void 0==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var i="";if(-1!=e.indexOf(" ")){var o=e.split(/\\s+/);e=o.pop(),o.forEach(function(e){var t=this.parseKeys(e),n=a[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")},this),i+=" "}var r=this.parseKeys(e),s=a[r.hashId]+r.key;this._addCommandToBinding(i+s,t,n)},this)},this._addCommandToBinding=function(t,n,i){var o,r=this.commandKeyBinding;if(n)if(!r[t]||this.$singleCommand)r[t]=n;else{Array.isArray(r[t])?-1!=(o=r[t].indexOf(n))&&r[t].splice(o,1):r[t]=[r[t]],"number"!=typeof i&&(i=i||n.isDefault?-100:e(n));var s=r[t];for(o=0;oi);o++);s.splice(o,0,n)}else delete r[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(n){if("string"==typeof n)return this.bindKey(n,t);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var o=0,s=t.length;s--;){var a=r.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;o|=a}return{key:n,hashId:o}},this.findKeyCommand=function(e,t){var n=a[e]+t;return this.commandKeyBinding[n]},this.handleKeyboard=function(e,t,n,i){if(!(i<0)){var o=a[t]+n,r=this.commandKeyBinding[o];return e.$keyChain&&(e.$keyChain+=" "+o,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-o.length-1)),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(i.prototype),t.HashHandler=i,t.MultiHashHandler=o}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../keyboard/hash_handler").MultiHashHandler,r=e("../lib/event_emitter").EventEmitter,s=function(e,t){o.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};i.inherits(s,o),function(){i.implement(this,r),this.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var o={editor:t,command:e,args:n};return o.returnValue=this._emit("exec",o),this._signal("afterExec",o),!1!==o.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function i(e,t){return{win:e,mac:t}}var o=e("../lib/lang"),r=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:i("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:i("Alt-E","F4"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:i("Alt-Shift-E","Shift-F4"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:i("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:i(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:i("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:i("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:i("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:i(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:i("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:i("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:i("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:i("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:i("Ctrl-F","Command-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:i("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:i("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:i("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:i("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:i("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:i("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:i("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:i("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:i("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:i("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:i("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:i("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:i("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:i("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:i(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:i(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:i("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:i("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:i("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:i("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:i("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:i(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:i("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:i("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:i("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:i("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:i("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:i("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:i("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:i("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:i("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:i("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:i("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:i("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:i("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(o.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:i(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:i("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:i("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:i(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),r=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\\n\\s*/," ").length,l=e.session.doc.getLine(n.row),c=n.row+1;c<=i.row+1;c++){var h=o.stringTrimLeft(o.stringTrimRight(e.session.doc.getLine(c)));0!==h.length&&(h=" "+h),l+=h}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(r=e.session.doc.getLine(n.row).length>r?r+1:r,e.selection.moveCursorTo(n.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:i(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,o=[];i.length<1&&(i=[e.selection.getRange()]);for(r=0;r0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),o=this.renderer.layerConfig;(i.start.row>=o.lastRow||i.end.row<=o.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var o=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\\s/.test(o)||/\\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var n=this;v.loadModule(["keybinding",e],function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||o.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=t.findMatchingBracket(e.getCursorPosition());if(n)i=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var i=t.$mode.getMatching(e.session);i&&(t.$bracketHighlight=t.addMarker(i,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=e.getCursorPosition(),i=new w(e.session,n.row,n.column),o=i.getCurrentToken();if(!o||!/\\b(?:tag-open|tag-name)/.test(o.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==o.type.indexOf("tag-open")||(o=i.stepForward())){var r=o.value,s=0,a=i.stepBackward();if("<"==a.value)do{a=o,(o=i.stepForward())&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"=0);else{do{o=a,a=i.stepBackward(),o&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new p(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var o=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(o),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column-1,i=t.end.column+1,o=e.getLine(t.start.row),r=o.length,s=o.substring(Math.max(n,0),Math.min(i,r));if(!(n>=0&&/^[\\w\\d]/.test(s)||i<=r&&/[\\w\\d]$/.test(s))&&(s=o.substring(t.start.column,t.end.column),/^[\\w\\d]+$/.test(s)))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s})}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\\r\\n|\\r|\\n/),i=this.selection.rangeList.ranges;if(n.length>i.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var o=i.length;o--;){var r=i[o];r.isEmpty()||this.session.remove(r),this.session.insert(r.start,n[o])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,i=n.getMode(),o=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var r=i.transformAction(n.getState(o.row),"insertion",this,n,e);r&&(e!==r.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=r.text)}if("\\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty())this.session.getOverwrite()&&((s=new p.fromPoints(o,o)).end.column+=e.length,this.session.remove(s));else{var s=this.getSelectionRange();o=this.session.remove(s),this.clearSelection()}if("\\n"==e||"\\r\\n"==e){h=n.getLine(o.row);if(o.column>h.search(/\\S|$/)){var a=h.substr(o.column).search(/\\S|$/);n.doc.removeInLine(o.row,o.column,o.column+a)}}this.clearSelection();var l=o.column,c=n.getState(o.row),h=n.getLine(o.row),u=i.checkOutdent(c,h,e);n.insert(o,e);if(r&&r.selection&&(2==r.selection.length?this.selection.setSelectionRange(new p(o.row,l+r.selection[0],o.row,l+r.selection[1])):this.selection.setSelectionRange(new p(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3]))),n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(c,h.slice(0,o.column),n.getTabString());n.insert({row:o.row+1,column:0},d)}u&&i.autoOutdent(c,n,o.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),o=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var r=n.getTextRange(t);if("\\n"==r[r.length-1]){var s=n.getLine(t.end.row);/^\\s+$/.test(s)&&(t.end.column=s.length)}}o&&(t=o)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,o=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var i=new p(0,0,0,0),o=e.first;o<=e.last;o++){var r=t.getLine(o);i.start.row=o,i.end.row=o,i.end.column=r.length,t.replace(i,n[o-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex=t)return{value:o[0],start:o.index,end:o.index+o[0].length}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new p(t,n-1,t,n),o=this.session.getTextRange(i);if(!isNaN(parseFloat(o))&&isFinite(o)){var r=this.getNumberAt(t,n);if(r){var s=r.value.indexOf(".")>=0?r.start+r.value.indexOf(".")+1:r.end,a=r.start+r.value.length-s,l=parseFloat(r.value);l*=Math.pow(10,a),s!==r.end&&np+1)break;p=f.last}for(h--,a=this.session.$moveLines(d,p,t?0:e),t&&-1==e&&(u=h+1);u<=h;)s[u].moveBy(a,0),u++;t||(a=0),l+=a}o.fromOrientedRange(o.ranges[0]),o.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,o=e*Math.floor(i.height/i.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(o,0)}):!1===t&&(this.selection.moveCursorBy(o,0),this.selection.clearSelection()),this.$blockScrolling--;var r=n.scrollTop;n.scrollBy(0,o*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(r)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new w(this.session,n.row,n.column),o=i.getCurrentToken(),r=o||i.stepForward();if(r){var s,a,l=!1,c={},h=n.column-r.start,u={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(r.value.match(/[{}()\\[\\]]/g)){for(;h=0;--r)this.$tryReplace(n[r],e)&&i++;return this.selection.setSelectionRange(o),this.$blockScrolling-=1,i},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return null!==(t=this.$search.replace(n,t))?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var o=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(o)||this.$search.$options.needle)||(o=this.session.getWordRange(o.start.row,o.start.column),e=this.session.getTextRange(o)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:o});var r=this.$search.find(this.session);return t.preventScroll?r:r?(this.revealRange(r,n),r):(t.backwards?o.start=o.end:o.end=o.start,void this.selection.setRange(o))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var o=this.$scrollAnchor;o.style.cssText="position:absolute",this.container.insertBefore(o,this.container.firstChild);var r=this.on("changeSelection",function(){i=!0}),s=this.renderer.on("beforeRender",function(){i&&(t=n.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,r=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=r.top-s.offset;null!=(i=r.top>=0&&a+t.top<0||!(r.topwindow.innerHeight)&&null)&&(o.style.top=a+"px",o.style.left=r.left+"px",o.style.height=s.lineHeight+"px",o.scrollIntoView(i)),i=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",r),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,o.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(y.prototype),v.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var i=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){for(var n=new Array(e.length),i=0;i0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(i.prototype),t.UndoManager=i}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/oop"),r=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){o.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(g=r.end.row+1,s=(r=t.getNextFoldLine(g,r))?r.start.row:1/0),g>o){for(;this.$cells.length>f+1;)p=this.$cells.pop(),this.element.removeChild(p.element);break}(p=this.$cells[++f])||((p={element:null,textNode:null,foldWidget:null}).element=i.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[f]=p);v="ace_gutter-cell ";if(l[g]&&(v+=l[g]),c[g]&&(v+=c[g]),this.$annotations[g]&&(v+=this.$annotations[g].className),p.element.className!=v&&(p.element.className=v),(w=t.getRowLength(g)*e.lineHeight+"px")!=p.element.style.height&&(p.element.style.height=w),a){var m=a[g];null==m&&(m=a[g]=t.getFoldWidget(g))}if(m){p.foldWidget||(p.foldWidget=i.createElement("span"),p.element.appendChild(p.foldWidget));var v="ace_fold-widget ace_"+m;"start"==m&&g==s&&gn.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var i=e("../range").Range,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,i){return(e?1:0)|(t?2:0)|(n?4:0)|(i?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(e=e||this.config){this.config=e;var t=[];for(var n in this.markers){var i=this.markers[n];if(i.range){var o=i.range.clipRows(e.firstRow,e.lastRow);if(!o.isEmpty())if(o=o.toScreenRange(this.session),i.renderer){var r=this.$getTop(o.start.row,e),s=this.$padding+o.start.column*e.characterWidth;i.renderer(t,o,s,r,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,o,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,o,i.clazz,e):o.isMultiLine()?"text"==i.type?this.drawTextMarker(t,o,i.clazz,e):this.drawMultiLineMarker(t,o,i.clazz,e):this.drawSingleLineMarker(t,o,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,o,r,s){for(var a=this.session,l=n.start.row,c=n.end.row,h=l,u=0,d=0,p=a.getScreenLastRowColumn(h),f=new i(h,n.start.column,h,d);h<=c;h++)f.start.row=f.end.row=h,f.start.column=h==l?n.start.column:a.getRowWrapIndent(h),f.end.column=p,u=d,d=p,p=h+1p,h==c),r,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,n,i,o){var r=this.$padding,s=i.lineHeight,a=this.$getTop(t.start.row,i),l=r+t.start.column*i.characterWidth;o=o||"",e.push("
    "),a=this.$getTop(t.end.row,i);var c=t.end.column*i.characterWidth;if(e.push("
    "),!((s=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
    ")}},this.drawSingleLineMarker=function(e,t,n,i,o,r){var s=i.lineHeight,a=(t.end.column+(o||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;e.push("
    ")},this.drawFullLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,i)-r),e.push("
    ")},this.drawScreenLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;e.push("
    ")}}).call(r.prototype),t.Marker=r}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,s),this.EOF_CHAR="\xc2\xb6",this.EOL_CHAR_LF="\xc2\xac",this.EOL_CHAR_CRLF="\xc2\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\xe2\x80\x94",this.SPACE_CHAR="\xc2\xb7",this.$padding=0,this.$updateEolChar=function(){var e="\\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;n"+r.stringRepeat(this.TAB_CHAR,n)+""):t.push(r.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var i="ace_indent-guide",o="",s="";if(this.showInvisibles){i+=" ace_invisible",o=" ace_invisible_space",s=" ace_invisible_tab";var a=r.stringRepeat(this.SPACE_CHAR,this.tabSize),l=r.stringRepeat(this.TAB_CHAR,this.tabSize)}else l=a=r.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]=""+a+"",this.$tabStrings["\\t"]=""+l+""}},this.updateLines=function(e,t,n){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var i=Math.max(t,e.firstRow),o=Math.min(n,e.lastRow),r=this.element.childNodes,s=0,a=e.firstRow;ac&&(a=l.end.row+1,c=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),a>o)break;var h=r[s++];if(h){var u=[];this.$renderLine(u,a,!this.$useLineGroups(),a==c&&l),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=u.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;i--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var o=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(o)}},this.$renderLinesFragment=function(e,t,n){for(var i=this.element.ownerDocument.createDocumentFragment(),r=t,s=this.session.getNextFoldLine(r),a=s?s.start.row:1/0;;){if(r>a&&(r=s.end.row+1,a=(s=this.session.getNextFoldLine(r,s))?s.start.row:1/0),r>n)break;var l=o.createElement("div"),c=[];if(this.$renderLine(c,r,!1,r==a&&s),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",i.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(r)+"px";else for(;l.firstChild;)i.appendChild(l.firstChild);r++}return i},this.update=function(e){this.config=e;for(var t=[],n=e.firstRow,i=e.lastRow,o=n,r=this.session.getNextFoldLine(o),s=r?r.start.row:1/0;;){if(o>s&&(o=r.end.row+1,s=(r=this.session.getNextFoldLine(o,r))?r.start.row:1/0),o>i)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,o,!1,o==s&&r),this.$useLineGroups()&&t.push("
    "),o++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,i){var o=this,s=/\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,a=i.replace(s,function(e,n,i,s,a){if(n)return o.showInvisibles?""+r.stringRepeat(o.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\\t"==e){var l=o.session.getScreenTabSize(t+s);return t+=l-1,o.$tabStrings[l]}if("\xe3\x80\x80"==e){var c=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=o.showInvisibles?o.SPACE_CHAR:"";return t+=1,""+h+""}return i?""+o.SPACE_CHAR+"":(t+=1,""+e+"")});if(this.$textToken[n.type])e.push(a);else{var l="ace_"+n.type.replace(/\\./g," ace_"),c="";"fold"==n.type&&(c=" style=\'width:"+n.value.length*this.config.characterWidth+"px;\' "),e.push("",a,"")}return t+i.length},this.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);return i<=0||i>=n?t:" "==t[0]?(i-=i%this.tabSize,e.push(r.stringRepeat(this.$tabStrings[" "],i/this.tabSize)),t.substr(i)):"\\t"==t[0]?(e.push(r.stringRepeat(this.$tabStrings["\\t"],i)),t.substr(i)):t},this.$renderWrappedLine=function(e,t,n,i){for(var o=0,s=0,a=n[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,u.substring(0,a-o)),u=u.substring(a-o),o=a,i||e.push("
    ","
    "),e.push(r.stringRepeat("\xc2\xa0",n.indent)),l=0,a=n[++s]||Number.MAX_VALUE;0!=u.length&&(o+=u.length,l=this.$renderToken(e,l,h,u))}}},this.$renderSimpleLine=function(e,t){var n=0,i=t[0],o=i.value;this.displayIndentGuides&&(o=this.renderIndentGuide(e,o)),o&&(n=this.$renderToken(e,n,i,o));for(var r=1;r"),o.length){var r=this.session.getRowSplitData(t);r&&r.length?this.$renderWrappedLine(e,o,r,n):this.$renderSimpleLine(e,o)}this.showInvisibles&&(i&&(t=i.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function n(e,t,n){for(var i=0,r=0;r+e[i].value.lengthn-t&&(s=s.substring(0,n-t)),o.push({type:e[i].type,value:s}),r=t+s.length,i+=1);rn?o.push({type:e[i].type,value:s.substring(0,n-r)}):o.push(e[i]),r+=s.length,i+=1}}var i=this.session,o=[],r=i.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?o.push({type:"fold",value:e}):(l&&(r=i.getTokens(t)),r.length&&n(r,a,s))},t.end.row,this.session.getLine(t.end.row).length),o},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var i,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===i&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),o.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||i||(this.smoothBlinking=e,o.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=o.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,o.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,o.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&o.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){o.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+n.column*this.config.characterWidth,top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,i=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var n=0,o=t.length;ne.height+e.offset||r.top<0)&&n>1)){var s=(this.cursors[i++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,r,e,t[n],this.session):(s.left=r.left+"px",s.top=r.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>i;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=r,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?o.addCssClass(this.element,"ace_overwrite-cursors"):o.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),t.Cursor=r}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/dom"),r=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=o.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=o.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,r.addListener(this.element,"scroll",this.onScroll.bind(this)),r.addListener(this.element,"mousedown",r.preventDefault)};(function(){i.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=o.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};i.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var i=e("./lib/event"),o=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;i.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(o.prototype),t.RenderLoop=o}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=r.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=o.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}t={height:e.height,width:e.width/l}}else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=r.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/dom"),r=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,g=e("./lib/event_emitter").EventEmitter;o.importCssString(\'.ace_editor {position: relative;overflow: hidden;font: 12px/normal \\\'Monaco\\\', \\\'Menlo\\\', \\\'Ubuntu Mono\\\', \\\'Consolas\\\', \\\'source-code-pro\\\', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \\\'\\\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\',"ace_editor.css");var m=function(e,t){var n=this;this.container=e||o.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,o.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var i=this.$textLayer=new c(this.content);this.canvas=i.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new f(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),r.resetOptions(this),r._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,g),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var o=this.container;i||(i=o.clientHeight||o.scrollHeight),n||(n=o.clientWidth||o.scrollWidth);var r=this.$updateCachedSize(e,t,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(r|this.$changes,!0):this.$loop.schedule(r|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var o=0,r=this.$size,s={width:r.width,height:r.height,scrollerHeight:r.scrollerHeight,scrollerWidth:r.scrollerWidth};return i&&(e||r.height!=i)&&(r.height=i,o|=this.CHANGE_SIZE,r.scrollerHeight=r.height,this.$horizScroll&&(r.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",o|=this.CHANGE_SCROLL),n&&(e||r.width!=n)&&(o|=this.CHANGE_SIZE,r.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",r.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(o|=this.CHANGE_FULL)),r.$dirty=!n||!i,o&&this._signal("resize",s),o},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=o.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var i=this.textarea.style,o=this.lineHeight;if(t<0||t>e.height-o)i.top=i.left="0";else{var r=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\\x01+/,"");r*=this.session.$getStringScreenWidth(s)[0]+2,o+=2}(n-=this.scrollLeft)>this.$size.scrollerWidth-r&&(n=this.$size.scrollerWidth-r),n+=this.gutterWidth,i.height=o+"px",i.width=r+"px",i.left=Math.min(n,this.$size.scrollerWidth-r)+"px",i.top=Math.min(t,this.$size.height-o)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,i){var o=this.scrollMargin;o.top=0|e,o.bottom=0|t,o.right=0|i,o.left=0|n,o.v=o.top+o.bottom,o.h=o.left+o.right,o.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-o.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}if(e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var o=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,o,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,o=this.$getLongestLine(),r=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),s=this.$horizScroll!==r;s&&(this.$horizScroll=r,this.scrollBarH.setVisible(r));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=this.scrollTop%this.lineHeight,c=t.scrollerHeight+this.lineHeight,h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=h;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var d=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+h<0||this.scrollTop>u.top),p=a!==d;p&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var f,g,m=Math.ceil(c/this.lineHeight)-1,v=Math.max(0,Math.round((this.scrollTop-l)/this.lineHeight)),w=v+m,y=this.lineHeight;v=e.screenToDocumentRow(v,0);var b=e.getFoldLine(v);b&&(v=b.start.row),f=e.documentToScreenRow(v,0),g=e.getRowLength(v)*y,w=Math.min(e.screenToDocumentRow(w,0),e.getLength()-1),c=t.scrollerHeight+e.getRowLength(w)*y+g,l=this.scrollTop-f*y;var C=0;return this.layerConfig.width!=o&&(C=this.CHANGE_H_SCROLL),(s||p)&&(C=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:v,firstRowScreen:f,lastRow:w,lineHeight:y,characterWidth:this.characterWidth,minHeight:c,maxHeight:i,offset:l,gutterOffset:y?Math.max(0,Math.ceil((l+t.height-t.scrollerHeight)/y)):0,height:this.$size.scrollerHeight},C},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||tr?(t&&l+s>r+this.lineHeight&&(r-=t*this.$size.scrollerHeight),0===r&&(r=-this.scrollMargin.top),this.session.setScrollTop(r)):l+this.$size.scrollerHeight-ao?(o=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),r=Math.round(i);return{row:o,column:r,side:i-r>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),o=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(i,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),o=this.$padding+Math.round(i.column*this.characterWidth),r=i.row*this.lineHeight;return{pageX:n.left+o-this.scrollLeft,pageY:n.top+r-this.scrollTop}},this.visualizeFocus=function(){o.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(o.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function n(n){if(i.$themeId!=e)return t&&t();if(!n||!n.cssClass)throw new Error("couldn\'t load module "+e+" or it didn\'t call define");o.importCssString(n.cssText,n.cssClass,i.container.ownerDocument),i.theme&&o.removeCssClass(i.container,i.theme.cssClass);var r="padding"in n?n.padding:"padding"in(i.theme||{})?4:i.$padding;i.$padding&&r!=i.$padding&&i.setPadding(r),i.$theme=n.cssClass,i.theme=n,o.addCssClass(i.container,n.cssClass),o.setCssClass(i.container,"ace_dark",n.isDark),i.$size&&(i.$size.width=0,i.$updateSizeAsync()),i._dispatchEvent("themeLoaded",{theme:n}),t&&t()}var i=this;if(this.$themeId=e,i._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)n(e);else{var s=e||this.$options.theme.initialValue;r.loadModule(["theme",s],n)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){o.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){o.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),r.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){o.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=o.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/net"),r=e("../lib/event_emitter").EventEmitter,s=e("../config"),a=function(t,n,i,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),s.get("packaged")||!e.toUrl)o=o||s.moduleUrl(n,"worker");else{var r=this.$normalizePath;o=o||r(e.toUrl("ace/worker/worker.js",null,"_"));var a={};t.forEach(function(t){a[t]=r(e.toUrl(t,null,"_").replace(/(\\.js)?(\\?.*)?$/,""))})}try{this.$worker=new Worker(o)}catch(e){if(!(e instanceof window.DOMException))throw e;var l=this.$workerBlob(o),c=window.URL||window.webkitURL,h=c.createObjectURL(l);this.$worker=new Worker(h),c.revokeObjectURL(h)}this.$worker.postMessage({init:!0,tlns:a,module:n,classname:i}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,r),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var i=this.callbackId++;this.callbacks[i]=n,t.push(i)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts(\'"+o.qualifyURL(e)+"\');";try{return new Blob([t],{type:"application/javascript"})}catch(e){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return n.append(t),n.getBlob("application/javascript")}}}).call(a.prototype);var l=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var i=null,o=!1,a=Object.create(r),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),i&&(o?setTimeout(c):c())},this.setEmitSync=function(e){o=e};var c=function(){var e=l.messageBuffer.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){l.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){for(i=new e[n](a);l.messageBuffer.length;)c()})};l.prototype=a.prototype,t.UIWorkerClient=l,t.WorkerClient=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var i=e("./range").Range,o=e("./lib/event_emitter").EventEmitter,r=e("./lib/oop"),s=function(e,t,n,i,o,r){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=o,this.othersClass=r,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){r.implement(this,o),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=n.addMarker(new i(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,r=t.start.column-this.pos.column;if(this.updateAnchors(e),o&&(this.length+=n),o&&!this.session.$fromUndo)if("insert"===e.action)for(s=this.others.length-1;s>=0;s--){l={row:(a=this.others[s]).row,column:a.column+r};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};this.doc.remove(new i(l.row,l.column,l.row,l.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,o){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),o,null,!1)};n(this.pos,this.mainClass);for(var o=this.others.length;o--;)n(this.others[o],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),i=this.isBackwards(),o=n.start.row,r=n.end.row;if(o==r){if(i)var s=n.end,a=n.start;else var s=n.start,a=n.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(o,!0);h.start.column=n.start.column,c.push(h);for(var u=o+1;u1){var e=this.rangeList.ranges,t=e[e.length-1],n=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.selectionLead),o=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(i,o).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],r=e.column0;)g--;if(g>0)for(var m=0;i[m].isEmpty();)m++;for(var v=g;v>=m;v--)i[v].isEmpty()&&i.splice(v,1)}return i}}.call(c.prototype);var m=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var o=t.indexOf(i);-1!=o&&t.splice(o,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(p.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(p.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,o=n&&n.keepOrder,r=1==n||n&&n.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(o?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=a._eventRegistry;a._eventRegistry={};var d=new c(s);this.inVirtualSelectionMode=!0;for(var p=h.length;p--;){if(r)for(;p>0&&h[p].start.row==h[p-1].end.row;)p--;d.fromOrientedRange(h[p]),d.index=p,this.selection=s.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===f||(i=f),d.toOrientedRange(h[p])}d.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=u,a.mergeOverlappingRanges();var g=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),g&&g.from==g.to&&this.renderer.animateScrolling(g.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;ir&&(r=n.column),ic?e.insert(i,d.stringRepeat(" ",o-c)):e.remove(new l(i.row,i.column,i.row,i.column-o+c)),t.start.column=t.end.column=r,t.start.row=t.end.row=i.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,u=c.end.row,p=h==u;if(p){var f,g=this.session.getLength();do{f=this.session.getLine(u)}while(/[=:]/.test(f)&&++u0);h<0&&(h=0),u>=g&&(u=g-1)}var m=this.session.removeFullLines(h,u);m=this.$reAlignText(m,p),this.session.insert({row:h,column:0},m.join("\\n")+"\\n"),p||(c.start.column=0,c.end.column=m[m.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function n(e){return d.stringRepeat(" ",e)}function i(e){return e[2]?n(o)+e[2]+n(r-e[2].length+s)+e[4].replace(/^([=:])\\s+/,"$1 "):e[0]}var o,r,s,a=!0,l=!0;return e.map(function(e){var t=e.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return t?null==o?(o=t[1].length,r=t[2].length,s=t[3].length,t):(o+r+s!=t[1].length+t[2].length+t[3].length&&(l=!1),o!=t[1].length&&(a=!1),o>t[1].length&&(o=t[1].length),rt[3].length&&(s=t[3].length),t):[e]}).map(t?i:a?l?function(e){return e[2]?n(o+r-e[2].length)+e[2]+n(s," ")+e[4].replace(/^([=:])\\s+/,"$1 "):e[0]}:i:function(e){return e[2]?n(o)+e[2]+n(s)+e[4].replace(/^([=:])\\s+/,"$1 "):e[0]})}}).call(m.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=r,e("./config").defineOptions(m.prototype,"editor",{enableMultiselect:{set:function(e){r(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../../range").Range,o=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var o=/\\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=n||r.length,l=e.getLength(),c=t,h=t;++tc){var d=e.getLine(h).length;return new i(c,a,h,d)}}},this.openingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o+1},a=e.$findClosingBracket(t,s,r);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,i.fromPoints(a,s)}}).call(o.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText=\'.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}\',e("../lib/dom").importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function i(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}e("./lib/oop");var o=e("./lib/dom");e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(n&&e.action){for(var i=e.data,o=i.start.row,r=i.end.row,s="add"==e.action,a=o+1;a0&&!i[o];)o--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var s=o;s<=r;s++){var a=i[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(i.prototype),t.LineWidgets=i}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function i(e,t,n){for(var i=0,o=e.length-1;i<=o;){var r=i+o>>1,s=n(t,e[r]);if(s>0)i=r+1;else{if(!(s<0))return r;o=r-1}}return-(i+1)}function o(e,t,n){var o=e.getAnnotations().sort(a.comparePoints);if(o.length){var r=i(o,{row:t,column:-1},a.comparePoints);r<0&&(r=-r-1),r>=o.length?r=n>0?0:o.length-1:0===r&&n<0&&(r=o.length-1);var s=o[r];if(s&&n){if(s.row===t){do{s=o[r+=n]}while(s&&s.row===t);if(!s)return o.slice()}var l=[];t=s.row;do{l[n<0?"unshift":"push"](s),s=o[r+=n]}while(s&&s.row==t);return l.length&&l}}}var r=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var i=e.getCursorPosition(),a=i.row,l=n.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=o(n,a,t);if(h){var u=h[0];i.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,i.row=u.row,c=e.renderer.$gutterLayer.$annotations[i.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(i.row),e.selection.moveToPosition(i);var d={row:i.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},p=d.el.appendChild(s.createElement("div")),f=d.el.appendChild(s.createElement("div"));f.className="error_widget_arrow "+c.className;var g=e.renderer.$cursorLayer.getPixelPosition(i).left;f.style.left=g+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",p.className="error_widget "+c.className,p.innerHTML=c.text.join("
    "),p.appendChild(s.createElement("div"));var m=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return d.destroy(),{command:"null"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var i=e("./lib/dom"),o=e("./lib/event"),r=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,"function"==typeof define&&(t.define=define),t.edit=function(e){if("string"==typeof e){var n=e;if(!(e=document.getElementById(n)))throw new Error("ace.edit can\'t find div #"+n)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=i.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=i.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new r(new l(e));h.setSession(c);var u={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(u.textarea=a),o.addListener(window,"resize",u.onResize),h.on("destroy",function(){o.removeListener(window,"resize",u.onResize),u.editor.container.env=null}),h.container.env=h.env=u,h},t.createEditSession=function(e,t){var n=new s(e,t);return n.setUndoManager(new a),n},t.EditSession=s,t.UndoManager=a,t.version="1.2.6"}),window.require(["ace/ace"],function(e){e&&(e.config.init(!0),e.define=window.define),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}.apply(e,arguments)})}(this),define("mockup-patterns-texteditor",["jquery","pat-base","mockup-utils","ace"],function(e,t,n){"use strict";return t.extend({name:"texteditor",trigger:".pat-texteditor",parser:"mockup",defaults:{theme:null,mode:"text",width:500,height:200,tabSize:4,softTabs:!0,wrapMode:!1,showGutter:!0,showPrintMargin:!1,readOnly:!1},init:function(){var t=this;if(window.ace){var i=window.ace;i.config.set("packaged",!0),i.config.set("basePath","++plone++static/components/ace-builds/src/");var o=n.setId(t.$el);t.$wrapper=e(\'
    \').css({height:parseInt(t.options.height)+25,width:t.options.width,position:"relative"}),t.$el.parent().hasClass("editorWrapper")||t.$el.wrap(t.$wrapper),t.$el.css({width:t.options.width,height:t.options.height,position:"absolute"}),t.editor=i.edit(o),t.options.theme&&t.setTheme(t.options.theme),t.editor.getSession().setMode("ace/mode/"+t.options.mode),t.editor.getSession().setTabSize(parseInt(t.options.tabSize,10)),t.editor.getSession().setUseSoftTabs(n.bool(t.options.softTabs)),t.editor.getSession().setUseWrapMode(n.bool(t.options.wrapMode)),t.editor.renderer.setShowGutter(n.bool(t.options.showGutter)),t.editor.setShowPrintMargin(n.bool(t.options.showPrintMargin)),t.editor.setReadOnly(n.bool(t.options.readOnly))}else setTimeout(function(){t.init()},200)},setSyntax:function(e){var t=this,n={js:"javascript",txt:"text",css:"css",html:"html",xml:"xml",less:"less",py:"python",pt:"xml",cfg:"ini"}[e.substr(e.lastIndexOf(".")+1)];if(void 0!==n)return t.editor.getSession().setMode("ace/mode/"+n),!0},setTheme:function(e){this.editor.setTheme("ace/theme/"+e)},setText:function(e){var t=this;t.editor&&t.editor.setValue(e)}})}),define("text!mockup-patterns-filemanager-url/templates/app.xml",[],function(){return\'
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n\\n\'}),function(e,t){if("function"==typeof define&&define.amd)define("backbone",["underscore","jquery","exports"],function(n,i,o){e.Backbone=t(e,o,n,i)});else if("undefined"!=typeof exports){var n=require("underscore");t(e,exports,n)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(this,function(e,t,n,i){var o=e.Backbone,r=[],s=r.slice;t.VERSION="1.1.2",t.$=i,t.noConflict=function(){return e.Backbone=o,this},t.emulateHTTP=!1,t.emulateJSON=!1;var a=t.Events={on:function(e,t,n){return c(this,"on",e,[t,n])&&t?(this._events||(this._events={}),(this._events[e]||(this._events[e]=[])).push({callback:t,context:n,ctx:n||this}),this):this},once:function(e,t,i){if(!c(this,"once",e,[t,i])||!t)return this;var o=this,r=n.once(function(){o.off(e,r),t.apply(this,arguments)});return r._callback=t,this.on(e,r,i)},off:function(e,t,i){var o,r,s,a,l,h,u,d;if(!this._events||!c(this,"off",e,[t,i]))return this;if(!e&&!t&&!i)return this._events=void 0,this;for(l=0,h=(a=e?[e]:n.keys(this._events)).length;l").attr(e);this.setElement(i,!1)}}}),t.sync=function(e,i,o){var r=F[e];n.defaults(o||(o={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON});var s={type:r,dataType:"json"};if(o.url||(s.url=n.result(i,"url")||M()),null!=o.data||!i||"create"!==e&&"update"!==e&&"patch"!==e||(s.contentType="application/json",s.data=JSON.stringify(o.attrs||i.toJSON(o))),o.emulateJSON&&(s.contentType="application/x-www-form-urlencoded",s.data=s.data?{model:s.data}:{}),o.emulateHTTP&&("PUT"===r||"DELETE"===r||"PATCH"===r)){s.type="POST",o.emulateJSON&&(s.data._method=r);var a=o.beforeSend;o.beforeSend=function(e){if(e.setRequestHeader("X-HTTP-Method-Override",r),a)return a.apply(this,arguments)}}"GET"===s.type||o.emulateJSON||(s.processData=!1),"PATCH"===s.type&&A&&(s.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var l=o.xhr=t.ajax(n.extend(s,o));return i.trigger("request",i,l,o),l};var A=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),F={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};t.ajax=function(){return t.$.ajax.apply(t.$,arguments)};var E=t.Router=function(e){e||(e={}),e.routes&&(this.routes=e.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},S=/\\((.*?)\\)/g,$=/(\\(\\?)?:\\w+/g,x=/\\*\\w+/g,_=/[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;n.extend(E.prototype,a,{initialize:function(){},route:function(e,i,o){n.isRegExp(e)||(e=this._routeToRegExp(e)),n.isFunction(i)&&(o=i,i=""),o||(o=this[i]);var r=this;return t.history.route(e,function(n){var s=r._extractParameters(e,n);r.execute(o,s),r.trigger.apply(r,["route:"+i].concat(s)),r.trigger("route",i,s),t.history.trigger("route",r,i,s)}),this},execute:function(e,t){e&&e.apply(this,t)},navigate:function(e,n){return t.history.navigate(e,n),this},_bindRoutes:function(){if(this.routes){this.routes=n.result(this,"routes");for(var e,t=n.keys(this.routes);null!=(e=t.pop());)this.route(e,this.routes[e])}},_routeToRegExp:function(e){return e=e.replace(_,"\\\\$&").replace(S,"(?:$1)?").replace($,function(e,t){return t?e:"([^/?]+)"}).replace(x,"([^?]*?)"),new RegExp("^"+e+"(?:\\\\?([\\\\s\\\\S]*))?$")},_extractParameters:function(e,t){var i=e.exec(t).slice(1);return n.map(i,function(e,t){return t===i.length-1?e||null:e?decodeURIComponent(e):null})}});var k=t.History=function(){this.handlers=[],n.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},D=/^[#\\/]|\\s+$/g,B=/^\\/+|\\/+$/g,T=/msie [\\w.]+/,L=/\\/$/,R=/#.*$/;k.started=!1,n.extend(k.prototype,a,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\\/]$/,"$&/")===this.root},getHash:function(e){var t=(e||this).location.href.match(/#(.*)$/);return t?t[1]:""},getFragment:function(e,t){if(null==e)if(this._hasPushState||!this._wantsHashChange||t){e=decodeURI(this.location.pathname+this.location.search);var n=this.root.replace(L,"");e.indexOf(n)||(e=e.slice(n.length))}else e=this.getHash();return e.replace(D,"")},start:function(e){if(k.started)throw new Error("Backbone.history has already been started");k.started=!0,this.options=n.extend({root:"/"},this.options,e),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var i=this.getFragment(),o=document.documentMode,r=T.exec(navigator.userAgent.toLowerCase())&&(!o||o<=7);if(this.root=("/"+this.root+"/").replace(B,"/"),r&&this._wantsHashChange){var s=t.$(\'\\n\\n
    \\n \\n \\n
    \\n\\n \\n\\n \\n\\n
    \\n\';});\n \n-/* Pattern utils\n+(function(root) {\n+define("jqtree", ["jquery"], function() {\n+ return (function() {\n+/*!\n+ * JqTree 1.4.1\n+ * \n+ * Copyright 2017 Marco Braak\n+ * \n+ * Licensed under the Apache License, Version 2.0 (the "License");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ * \n+ * http://www.apache.org/licenses/LICENSE-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 */\n+/******/ (function(modules) { // webpackBootstrap\n+/******/ \t// The module cache\n+/******/ \tvar installedModules = {};\n+/******/\n+/******/ \t// The require function\n+/******/ \tfunction __webpack_require__(moduleId) {\n+/******/\n+/******/ \t\t// Check if module is in cache\n+/******/ \t\tif(installedModules[moduleId]) {\n+/******/ \t\t\treturn installedModules[moduleId].exports;\n+/******/ \t\t}\n+/******/ \t\t// Create a new module (and put it into the cache)\n+/******/ \t\tvar module = installedModules[moduleId] = {\n+/******/ \t\t\ti: moduleId,\n+/******/ \t\t\tl: false,\n+/******/ \t\t\texports: {}\n+/******/ \t\t};\n+/******/\n+/******/ \t\t// Execute the module function\n+/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+/******/\n+/******/ \t\t// Flag the module as loaded\n+/******/ \t\tmodule.l = true;\n+/******/\n+/******/ \t\t// Return the exports of the module\n+/******/ \t\treturn module.exports;\n+/******/ \t}\n+/******/\n+/******/\n+/******/ \t// expose the modules object (__webpack_modules__)\n+/******/ \t__webpack_require__.m = modules;\n+/******/\n+/******/ \t// expose the module cache\n+/******/ \t__webpack_require__.c = installedModules;\n+/******/\n+/******/ \t// identity function for calling harmony imports with the correct context\n+/******/ \t__webpack_require__.i = function(value) { return value; };\n+/******/\n+/******/ \t// define getter function for harmony exports\n+/******/ \t__webpack_require__.d = function(exports, name, getter) {\n+/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n+/******/ \t\t\tObject.defineProperty(exports, name, {\n+/******/ \t\t\t\tconfigurable: false,\n+/******/ \t\t\t\tenumerable: true,\n+/******/ \t\t\t\tget: getter\n+/******/ \t\t\t});\n+/******/ \t\t}\n+/******/ \t};\n+/******/\n+/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n+/******/ \t__webpack_require__.n = function(module) {\n+/******/ \t\tvar getter = module && module.__esModule ?\n+/******/ \t\t\tfunction getDefault() { return module[\'default\']; } :\n+/******/ \t\t\tfunction getModuleExports() { return module; };\n+/******/ \t\t__webpack_require__.d(getter, \'a\', getter);\n+/******/ \t\treturn getter;\n+/******/ \t};\n+/******/\n+/******/ \t// Object.prototype.hasOwnProperty.call\n+/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n+/******/\n+/******/ \t// __webpack_public_path__\n+/******/ \t__webpack_require__.p = "";\n+/******/\n+/******/ \t// Load entry module and return exports\n+/******/ \treturn __webpack_require__(__webpack_require__.s = 19);\n+/******/ })\n+/************************************************************************/\n+/******/ ([\n+/* 0 */\n+/***/ (function(module, exports, __webpack_require__) {\n+\n+\n+\n+exports.__esModule = true;\n+var Position;\n+(function (Position) {\n+ Position[Position["Before"] = 1] = "Before";\n+ Position[Position["After"] = 2] = "After";\n+ Position[Position["Inside"] = 3] = "Inside";\n+ Position[Position["None"] = 4] = "None";\n+})(Position = exports.Position || (exports.Position = {}));\n+exports.position_names = {\n+ before: Position.Before,\n+ after: Position.After,\n+ inside: Position.Inside,\n+ none: Position.None\n+};\n+function getPositionName(position) {\n+ for (var name_1 in exports.position_names) {\n+ if (exports.position_names.hasOwnProperty(name_1)) {\n+ if (exports.position_names[name_1] === position) {\n+ return name_1;\n+ }\n+ }\n+ }\n+ return "";\n+}\n+exports.getPositionName = getPositionName;\n+function getPosition(name) {\n+ return exports.position_names[name];\n+}\n+exports.getPosition = getPosition;\n+var Node = (function () {\n+ function Node(o, is_root, node_class) {\n+ if (is_root === void 0) { is_root = false; }\n+ if (node_class === void 0) { node_class = Node; }\n+ this.name = "";\n+ this.setData(o);\n+ this.children = [];\n+ this.parent = null;\n+ if (is_root) {\n+ this.id_mapping = {};\n+ this.tree = this;\n+ this.node_class = node_class;\n+ }\n+ }\n+ /*\n+ Set the data of this node.\n \n+ setData(string): set the name of the node\n+ setdata(object): set attributes of the node\n \n-define(\'mockup-utils\',[\n- \'jquery\'\n-], function($) {\n- \'use strict\';\n-\n- var QueryHelper = function(options) {\n- /* if pattern argument provided, it can implement the interface of:\n- * - browsing: boolean if currently browsing\n- * - currentPath: string of current path to apply to search if browsing\n- * - basePath: default path to provide if no subpath used\n- */\n-\n- var self = this;\n- var defaults = {\n- pattern: null, // must be passed in\n- vocabularyUrl: null,\n- searchParam: \'SearchableText\', // query string param to pass to search url\n- pathOperator: \'plone.app.querystring.operation.string.path\',\n- attributes: [\'UID\', \'Title\', \'Description\', \'getURL\', \'portal_type\'],\n- batchSize: 10, // number of results to retrive\n- baseCriteria: [],\n- sort_on: \'is_folderish\',\n- sort_order: \'reverse\',\n- pathDepth: 1\n- };\n- self.options = $.extend({}, defaults, options);\n+ Examples:\n+ setdata(\'node1\')\n \n- self.pattern = self.options.pattern;\n- if (self.pattern === undefined || self.pattern === null) {\n- self.pattern = {\n- browsing: false,\n- basePath: \'/\'\n- };\n- }\n+ setData({ name: \'node1\', id: 1});\n \n- if (self.options.url && !self.options.vocabularyUrl) {\n- self.options.vocabularyUrl = self.options.url;\n- } else if (self.pattern.vocabularyUrl) {\n- self.options.vocabularyUrl = self.pattern.vocabularyUrl;\n- }\n- self.valid = Boolean(self.options.vocabularyUrl);\n+ setData({ name: \'node2\', id: 2, color: \'green\'});\n \n- self.getBatch = function(page) {\n- return {\n- page: page ? page : 1,\n- size: self.options.batchSize\n- };\n+ * This is an internal function; it is not in the docs\n+ * Does not remove existing node values\n+ */\n+ Node.prototype.setData = function (o) {\n+ var _this = this;\n+ var setName = function (name) {\n+ if (name != null) {\n+ _this.name = name;\n+ }\n+ };\n+ if (!o) {\n+ return;\n+ }\n+ else if (typeof o !== "object") {\n+ setName(o);\n+ }\n+ else {\n+ for (var key in o) {\n+ if (o.hasOwnProperty(key)) {\n+ var value = o[key];\n+ if (key === "label") {\n+ // You can use the \'label\' key instead of \'name\'; this is a legacy feature\n+ setName(value);\n+ }\n+ else if (key !== "children") {\n+ // You can\'t update the children using this function\n+ this[key] = value;\n+ }\n+ }\n+ }\n+ }\n };\n+ /*\n+ Create tree from data.\n \n- self.getCurrentPath = function() {\n- var pattern = self.pattern;\n- var currentPath;\n- /* If currentPath is set on the QueryHelper object, use that first.\n- * Then, check on the pattern.\n- * Finally, see if it is a function and call it if it is.\n- */\n- if (self.currentPath) {\n- currentPath = self.currentPath;\n- } else {\n- currentPath = pattern.currentPath;\n- }\n- if (typeof currentPath === \'function\') {\n- currentPath = currentPath();\n- }\n- var path = currentPath;\n- if (!path) {\n- if (pattern.basePath) {\n- path = pattern.basePath;\n- } else if (pattern.options.basePath) {\n- path = pattern.options.basePath;\n- } else {\n- path = \'/\';\n+ Structure of data is:\n+ [\n+ {\n+ label: \'node1\',\n+ children: [\n+ { label: \'child1\' },\n+ { label: \'child2\' }\n+ ]\n+ },\n+ {\n+ label: \'node2\'\n+ }\n+ ]\n+ */\n+ Node.prototype.loadFromData = function (data) {\n+ this.removeChildren();\n+ for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n+ var o = data_1[_i];\n+ var node = new this.tree.node_class(o);\n+ this.addChild(node);\n+ if (typeof o === "object" && o["children"]) {\n+ node.loadFromData(o["children"]);\n+ }\n }\n- }\n- return path;\n };\n+ /*\n+ Add child.\n \n- self.getCriterias = function(term, searchOptions) {\n- if (searchOptions === undefined) {\n- searchOptions = {};\n- }\n- searchOptions = $.extend({}, {\n- useBaseCriteria: true,\n- additionalCriterias: []\n- }, searchOptions);\n+ tree.addChild(\n+ new Node(\'child1\')\n+ );\n+ */\n+ Node.prototype.addChild = function (node) {\n+ this.children.push(node);\n+ node._setParent(this);\n+ };\n+ /*\n+ Add child at position. Index starts at 0.\n \n- var criterias = [];\n- if (searchOptions.useBaseCriteria) {\n- criterias = self.options.baseCriteria.slice(0);\n- }\n- if (term) {\n- term += \'*\';\n- criterias.push({\n- i: self.options.searchParam,\n- o: \'plone.app.querystring.operation.string.contains\',\n- v: term\n- });\n- }\n- if (searchOptions.searchPath) {\n- criterias.push({\n- i: \'path\',\n- o: self.options.pathOperator,\n- v: searchOptions.searchPath + \'::\' + self.options.pathDepth\n- });\n- } else if (self.pattern.browsing) {\n- criterias.push({\n- i: \'path\',\n- o: self.options.pathOperator,\n- v: self.getCurrentPath() + \'::\' + self.options.pathDepth\n- });\n- }\n- criterias = criterias.concat(searchOptions.additionalCriterias);\n- return criterias;\n+ tree.addChildAtPosition(\n+ new Node(\'abc\'),\n+ 1\n+ );\n+ */\n+ Node.prototype.addChildAtPosition = function (node, index) {\n+ this.children.splice(index, 0, node);\n+ node._setParent(this);\n };\n+ /*\n+ Remove child. This also removes the children of the node.\n \n- self.getQueryData = function(term, page) {\n- var data = {\n- query: JSON.stringify({\n- criteria: self.getCriterias(term),\n- sort_on: self.options.sort_on,\n- sort_order: self.options.sort_order\n- }),\n- attributes: JSON.stringify(self.options.attributes)\n- };\n- if (page) {\n- data.batch = JSON.stringify(self.getBatch(page));\n- }\n- return data;\n+ tree.removeChild(tree.children[0]);\n+ */\n+ Node.prototype.removeChild = function (node) {\n+ // remove children from the index\n+ node.removeChildren();\n+ this._removeChild(node);\n };\n+ /*\n+ Get child index.\n \n- self.getUrl = function() {\n- var url = self.options.vocabularyUrl;\n- if (url.indexOf(\'?\') === -1) {\n- url += \'?\';\n- } else {\n- url += \'&\';\n- }\n- return url + $.param(self.getQueryData());\n+ var index = getChildIndex(node);\n+ */\n+ Node.prototype.getChildIndex = function (node) {\n+ return $.inArray(node, this.children);\n };\n+ /*\n+ Does the tree have children?\n \n- self.selectAjax = function() {\n- return {\n- url: self.options.vocabularyUrl,\n- dataType: \'JSON\',\n- quietMillis: 100,\n- data: function(term, page) {\n- return self.getQueryData(term, page);\n- },\n- results: function(data, page) {\n- var more = (page * 10) < data.total; // whether or not there are more results available\n- // notice we return the value of more so Select2 knows if more results can be loaded\n- return {\n- results: data.results,\n- more: more\n- };\n- }\n- };\n+ if (tree.hasChildren()) {\n+ //\n+ }\n+ */\n+ Node.prototype.hasChildren = function () {\n+ return this.children.length !== 0;\n+ };\n+ Node.prototype.isFolder = function () {\n+ return this.hasChildren() || this.load_on_demand;\n };\n+ /*\n+ Iterate over all the nodes in the tree.\n \n- self.search = function(term, operation, value, callback, useBaseCriteria, type) {\n- if (useBaseCriteria === undefined) {\n- useBaseCriteria = true;\n- }\n- if (type === undefined) {\n- type = \'GET\';\n- }\n- var criteria = [];\n- if (useBaseCriteria) {\n- criteria = self.options.baseCriteria.slice(0);\n- }\n- criteria.push({\n- i: term,\n- o: operation,\n- v: value\n- });\n- var data = {\n- query: JSON.stringify({\n- criteria: criteria\n- }),\n- attributes: JSON.stringify(self.options.attributes)\n- };\n- $.ajax({\n- url: self.options.vocabularyUrl,\n- dataType: \'JSON\',\n- data: data,\n- type: type,\n- success: callback\n- });\n+ Calls callback with (node, level).\n+\n+ The callback must return true to continue the iteration on current node.\n+\n+ tree.iterate(\n+ function(node, level) {\n+ console.log(node.name);\n+\n+ // stop iteration after level 2\n+ return (level <= 2);\n+ }\n+ );\n+\n+ */\n+ Node.prototype.iterate = function (callback) {\n+ var _iterate = function (node, level) {\n+ if (node.children) {\n+ for (var _i = 0, _a = node.children; _i < _a.length; _i++) {\n+ var child = _a[_i];\n+ var result = callback(child, level);\n+ if (result && child.hasChildren()) {\n+ _iterate(child, level + 1);\n+ }\n+ }\n+ }\n+ };\n+ _iterate(this, 0);\n };\n+ /*\n+ Move node relative to another node.\n \n- return self;\n- };\n+ Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n \n- var Loading = function(options) {\n+ // move node1 after node2\n+ tree.moveNode(node1, node2, Position.AFTER);\n+ */\n+ Node.prototype.moveNode = function (moved_node, target_node, position) {\n+ if (!moved_node.parent || moved_node.isParentOf(target_node)) {\n+ // - Node is parent of target node\n+ // - Or, parent is empty\n+ return;\n+ }\n+ else {\n+ moved_node.parent._removeChild(moved_node);\n+ if (position === Position.After) {\n+ if (target_node.parent) {\n+ target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);\n+ }\n+ }\n+ else if (position === Position.Before) {\n+ if (target_node.parent) {\n+ target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));\n+ }\n+ }\n+ else if (position === Position.Inside) {\n+ // move inside as first child\n+ target_node.addChildAtPosition(moved_node, 0);\n+ }\n+ }\n+ };\n /*\n- * Options:\n- * backdrop(pattern): if you want to have the progress indicator work\n- * seamlessly with backdrop pattern\n- * zIndex(integer or function): to override default z-index used\n- */\n- var self = this;\n- self.className = \'plone-loader\';\n- var defaults = {\n- backdrop: null,\n- zIndex: 10005 // can be a function\n+ Get the tree as data.\n+ */\n+ Node.prototype.getData = function (include_parent) {\n+ if (include_parent === void 0) { include_parent = false; }\n+ function getDataFromNodes(nodes) {\n+ return nodes.map(function (node) {\n+ var tmp_node = {};\n+ for (var k in node) {\n+ if (["parent", "children", "element", "tree"].indexOf(k) === -1 &&\n+ Object.prototype.hasOwnProperty.call(node, k)) {\n+ var v = node[k];\n+ tmp_node[k] = v;\n+ }\n+ }\n+ if (node.hasChildren()) {\n+ tmp_node["children"] = getDataFromNodes(node.children);\n+ }\n+ return tmp_node;\n+ });\n+ }\n+ if (include_parent) {\n+ return getDataFromNodes([this]);\n+ }\n+ else {\n+ return getDataFromNodes(this.children);\n+ }\n };\n- if (!options) {\n- options = {};\n- }\n- self.options = $.extend({}, defaults, options);\n-\n- self.init = function() {\n- self.$el = $(\'.\' + self.className);\n- if (self.$el.length === 0) {\n- self.$el = $(\'
    \');\n- self.$el.addClass(self.className).hide().appendTo(\'body\');\n- }\n+ Node.prototype.getNodeByName = function (name) {\n+ return this.getNodeByCallback(function (node) { return node.name === name; });\n };\n-\n- self.show = function(closable) {\n- self.init();\n- self.$el.show();\n- var zIndex = self.options.zIndex;\n- if (typeof(zIndex) === \'function\') {\n- zIndex = Math.max(zIndex(), 10005);\n- } else {\n- // go through all modals and backdrops and make sure we have a higher\n- // z-index to use\n- zIndex = 10005;\n- $(\'.plone-modal-wrapper,.plone-modal-backdrop\').each(function() {\n- zIndex = Math.max(zIndex, $(this).css(\'zIndex\') || 10005);\n+ Node.prototype.getNodeByCallback = function (callback) {\n+ var result = null;\n+ this.iterate(function (node) {\n+ if (callback(node)) {\n+ result = node;\n+ return false;\n+ }\n+ else {\n+ return true;\n+ }\n });\n- zIndex += 1;\n- }\n- self.$el.css(\'zIndex\', zIndex);\n-\n- if (closable === undefined) {\n- closable = true;\n- }\n- if (self.options.backdrop) {\n- self.options.backdrop.closeOnClick = closable;\n- self.options.backdrop.closeOnEsc = closable;\n- self.options.backdrop.init();\n- self.options.backdrop.show();\n- }\n+ return result;\n };\n-\n- self.hide = function() {\n- self.init();\n- self.$el.hide();\n+ Node.prototype.addAfter = function (node_info) {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var node = new this.tree.node_class(node_info);\n+ var child_index = this.parent.getChildIndex(this);\n+ this.parent.addChildAtPosition(node, child_index + 1);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ }\n+ };\n+ Node.prototype.addBefore = function (node_info) {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var node = new this.tree.node_class(node_info);\n+ var child_index = this.parent.getChildIndex(this);\n+ this.parent.addChildAtPosition(node, child_index);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ }\n+ };\n+ Node.prototype.addParent = function (node_info) {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var new_parent = new this.tree.node_class(node_info);\n+ new_parent._setParent(this.tree);\n+ var original_parent = this.parent;\n+ for (var _i = 0, _a = original_parent.children; _i < _a.length; _i++) {\n+ var child = _a[_i];\n+ new_parent.addChild(child);\n+ }\n+ original_parent.children = [];\n+ original_parent.addChild(new_parent);\n+ return new_parent;\n+ }\n+ };\n+ Node.prototype.remove = function () {\n+ if (this.parent) {\n+ this.parent.removeChild(this);\n+ this.parent = null;\n+ }\n+ };\n+ Node.prototype.append = function (node_info) {\n+ var node = new this.tree.node_class(node_info);\n+ this.addChild(node);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ };\n+ Node.prototype.prepend = function (node_info) {\n+ var node = new this.tree.node_class(node_info);\n+ this.addChildAtPosition(node, 0);\n+ if (typeof node_info === "object" && node_info["children"] && node_info["children"].length) {\n+ node.loadFromData(node_info["children"]);\n+ }\n+ return node;\n+ };\n+ Node.prototype.isParentOf = function (node) {\n+ var parent = node.parent;\n+ while (parent) {\n+ if (parent === this) {\n+ return true;\n+ }\n+ parent = parent.parent;\n+ }\n+ return false;\n+ };\n+ Node.prototype.getLevel = function () {\n+ var level = 0;\n+ var node = this;\n+ while (node.parent) {\n+ level += 1;\n+ node = node.parent;\n+ }\n+ return level;\n+ };\n+ Node.prototype.getNodeById = function (node_id) {\n+ return this.id_mapping[node_id];\n+ };\n+ Node.prototype.addNodeToIndex = function (node) {\n+ if (node.id != null) {\n+ this.id_mapping[node.id] = node;\n+ }\n+ };\n+ Node.prototype.removeNodeFromIndex = function (node) {\n+ if (node.id != null) {\n+ delete this.id_mapping[node.id];\n+ }\n+ };\n+ Node.prototype.removeChildren = function () {\n+ var _this = this;\n+ this.iterate(function (child) {\n+ _this.tree.removeNodeFromIndex(child);\n+ return true;\n+ });\n+ this.children = [];\n+ };\n+ Node.prototype.getPreviousSibling = function () {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var previous_index = this.parent.getChildIndex(this) - 1;\n+ if (previous_index >= 0) {\n+ return this.parent.children[previous_index];\n+ }\n+ else {\n+ return null;\n+ }\n+ }\n+ };\n+ Node.prototype.getNextSibling = function () {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var next_index = this.parent.getChildIndex(this) + 1;\n+ if (next_index < this.parent.children.length) {\n+ return this.parent.children[next_index];\n+ }\n+ else {\n+ return null;\n+ }\n+ }\n+ };\n+ Node.prototype.getNodesByProperty = function (key, value) {\n+ return this.filter(function (node) { return node[key] === value; });\n+ };\n+ Node.prototype.filter = function (f) {\n+ var result = [];\n+ this.iterate(function (node) {\n+ if (f(node)) {\n+ result.push(node);\n+ }\n+ return true;\n+ });\n+ return result;\n+ };\n+ Node.prototype.getNextNode = function (include_children) {\n+ if (include_children === void 0) { include_children = true; }\n+ if (include_children && this.hasChildren() && this.is_open) {\n+ // First child\n+ return this.children[0];\n+ }\n+ else {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var next_sibling = this.getNextSibling();\n+ if (next_sibling) {\n+ // Next sibling\n+ return next_sibling;\n+ }\n+ else {\n+ // Next node of parent\n+ return this.parent.getNextNode(false);\n+ }\n+ }\n+ }\n+ };\n+ Node.prototype.getPreviousNode = function () {\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else {\n+ var previous_sibling = this.getPreviousSibling();\n+ if (previous_sibling) {\n+ if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {\n+ // Previous sibling\n+ return previous_sibling;\n+ }\n+ else {\n+ // Last child of previous sibling\n+ return previous_sibling.getLastChild();\n+ }\n+ }\n+ else {\n+ return this.getParent();\n+ }\n+ }\n+ };\n+ Node.prototype.getParent = function () {\n+ // Return parent except if it is the root node\n+ if (!this.parent) {\n+ return null;\n+ }\n+ else if (!this.parent.parent) {\n+ // Root node -> null\n+ return null;\n+ }\n+ else {\n+ return this.parent;\n+ }\n+ };\n+ Node.prototype.getLastChild = function () {\n+ if (!this.hasChildren()) {\n+ return null;\n+ }\n+ else {\n+ var last_child = this.children[this.children.length - 1];\n+ if (!last_child.hasChildren() || !last_child.is_open) {\n+ return last_child;\n+ }\n+ else {\n+ return last_child.getLastChild();\n+ }\n+ }\n+ };\n+ // Init Node from data without making it the root of the tree\n+ Node.prototype.initFromData = function (data) {\n+ var _this = this;\n+ var addNode = function (node_data) {\n+ _this.setData(node_data);\n+ if (node_data["children"]) {\n+ addChildren(node_data["children"]);\n+ }\n+ };\n+ var addChildren = function (children_data) {\n+ for (var _i = 0, children_data_1 = children_data; _i < children_data_1.length; _i++) {\n+ var child = children_data_1[_i];\n+ var node = new _this.tree.node_class("");\n+ node.initFromData(child);\n+ _this.addChild(node);\n+ }\n+ };\n+ addNode(data);\n };\n+ Node.prototype._setParent = function (parent) {\n+ this.parent = parent;\n+ this.tree = parent.tree;\n+ this.tree.addNodeToIndex(this);\n+ };\n+ Node.prototype._removeChild = function (node) {\n+ this.children.splice(this.getChildIndex(node), 1);\n+ this.tree.removeNodeFromIndex(node);\n+ };\n+ return Node;\n+}());\n+exports.Node = Node;\n \n- return self;\n- };\n \n- var getAuthenticator = function() {\n- var $el = $(\'input[name="_authenticator"]\');\n- if ($el.length === 0) {\n- $el = $(\'a[href*="_authenticator"]\');\n- if ($el.length > 0) {\n- return $el.attr(\'href\').split(\'_authenticator=\')[1];\n- }\n- return \'\';\n- } else {\n- return $el.val();\n- }\n- };\n+/***/ }),\n+/* 1 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- var generateId = function(prefix) {\n- if (prefix === undefined) {\n- prefix = \'id\';\n- }\n- return prefix + (Math.floor((1 + Math.random()) * 0x10000)\n- .toString(16).substring(1));\n- };\n \n- var setId = function($el, prefix) {\n- if (prefix === undefined) {\n- prefix = \'id\';\n- }\n- var id = $el.attr(\'id\');\n- if (id === undefined) {\n- id = generateId(prefix);\n- } else {\n- /* hopefully we don\'t screw anything up here... changing the id\n- * in some cases so we get a decent selector */\n- id = id.replace(/\\./g, \'-\');\n- }\n- $el.attr(\'id\', id);\n- return id;\n- };\n \n- var getWindow = function() {\n- var win = window;\n- if (win.parent !== window) {\n- win = win.parent;\n+exports.__esModule = true;\n+function isInt(n) {\n+ return typeof n === "number" && n % 1 === 0;\n+}\n+exports.isInt = isInt;\n+function isFunction(v) {\n+ return typeof v === "function";\n+}\n+exports.isFunction = isFunction;\n+// Escape a string for HTML interpolation; copied from underscore js\n+function html_escape(text) {\n+ return ("" + text)\n+ .replace(/&/g, "&")\n+ .replace(//g, ">")\n+ .replace(/"/g, """)\n+ .replace(/\'/g, "'")\n+ .replace(/\\//g, "/");\n+}\n+exports.html_escape = html_escape;\n+function getBoolString(value) {\n+ if (value) {\n+ return "true";\n }\n- return win;\n- };\n-\n- var parseBodyTag = function(txt) {\n- return $((/]*>((.|[\\n\\r])*)<\\/body>/im).exec(txt)[0]\n- .replace(\'\', \'
    \')).eq(0).html();\n- };\n-\n- var featureSupport = {\n- /* Well tested feature support for things we use in mockup.\n- * All gathered from: http://diveintohtml5.info/everything.html\n- * Alternative to using some form of modernizr.\n- */\n- dragAndDrop: function() {\n- return \'draggable\' in document.createElement(\'span\');\n- },\n- fileApi: function() {\n- return typeof FileReader != \'undefined\'; // jshint ignore:line\n- },\n- history: function() {\n- return !!(window.history && window.history.pushState);\n+ else {\n+ return "false";\n }\n- };\n+}\n+exports.getBoolString = getBoolString;\n \n- var bool = function(val) {\n- if (typeof val === \'string\') {\n- val = $.trim(val).toLowerCase();\n- }\n- return [\'false\', false, \'0\', 0, \'\', undefined, null].indexOf(val) === -1;\n- };\n \n- var escapeHTML = function(val) {\n- return $(\'
    \').text(val).html();\n- };\n+/***/ }),\n+/* 2 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- var removeHTML = function(val) {\n- return val.replace(/<[^>]+>/ig, "");\n- };\n \n- return {\n- bool: bool,\n- escapeHTML: escapeHTML,\n- removeHTML: removeHTML,\n- featureSupport: featureSupport,\n- generateId: generateId,\n- getAuthenticator: getAuthenticator,\n- getWindow: getWindow,\n- Loading: Loading,\n- loading: new Loading(), // provide default loader\n- parseBodyTag: parseBodyTag,\n- QueryHelper: QueryHelper,\n- setId: setId\n- };\n-});\n-\n-(function(root) {\n-define("jqtree", ["jquery"], function() {\n- return (function() {\n-/*\n-JqTree 1.3.3\n-\n-Copyright 2015 Marco Braak\n-\n-Licensed under the Apache License, Version 2.0 (the "License");\n-you may not use this file except in compliance with the License.\n-You may obtain a copy of the License at\n-\n- http://www.apache.org/licenses/LICENSE-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 e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module \'"+o+"\'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o dimensions.right || y > dimensions.bottom) {\n- return null;\n- }\n- low = 0;\n- high = this.hit_areas.length;\n- while (low < high) {\n- mid = (low + high) >> 1;\n- area = this.hit_areas[mid];\n- if (y < area.top) {\n- high = mid;\n- } else if (y > area.bottom) {\n- low = mid + 1;\n- } else {\n- return area;\n- }\n- }\n- return null;\n- };\n-\n- DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) {\n- var node;\n- node = area.node;\n- return node.isFolder() && !node.is_open && area.position === Position.INSIDE;\n- };\n-\n- DragAndDropHandler.prototype.updateDropHint = function() {\n- var node_element;\n- if (!this.hovered_area) {\n- return;\n- }\n- this.removeDropHint();\n- node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node);\n- return this.previous_ghost = node_element.addDropHint(this.hovered_area.position);\n- };\n-\n- DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) {\n- var openFolder;\n- openFolder = (function(_this) {\n- return function() {\n- return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() {\n- _this.refresh();\n- return _this.updateDropHint();\n- });\n- };\n- })(this);\n- this.stopOpenFolderTimer();\n- return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay);\n- };\n-\n- DragAndDropHandler.prototype.stopOpenFolderTimer = function() {\n- if (this.open_folder_timer) {\n- clearTimeout(this.open_folder_timer);\n- return this.open_folder_timer = null;\n- }\n- };\n-\n- DragAndDropHandler.prototype.moveItem = function(position_info) {\n- var doMove, event, moved_node, position, previous_parent, target_node;\n- if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) {\n- moved_node = this.current_item.node;\n- target_node = this.hovered_area.node;\n- position = this.hovered_area.position;\n- previous_parent = moved_node.parent;\n- if (position === Position.INSIDE) {\n- this.hovered_area.node.is_open = true;\n- }\n- doMove = (function(_this) {\n- return function() {\n- _this.tree_widget.tree.moveNode(moved_node, target_node, position);\n- _this.tree_widget.element.empty();\n- return _this.tree_widget._refreshElements();\n- };\n- })(this);\n- event = this.tree_widget._triggerEvent(\'tree.move\', {\n- move_info: {\n- moved_node: moved_node,\n- target_node: target_node,\n- position: Position.getName(position),\n- previous_parent: previous_parent,\n- do_move: doMove,\n- original_event: position_info.original_event\n+ function createWidget($el, options) {\n+ var data_key = getDataKey();\n+ for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var existing_widget = getWidgetData(el, data_key);\n+ if (!existing_widget) {\n+ var widget = new widget_class(el, options);\n+ if (!$.data(el, data_key)) {\n+ $.data(el, data_key, widget);\n+ }\n+ // Call init after setting data, so we can call methods\n+ widget._init();\n+ }\n+ }\n+ return $el;\n }\n- });\n- if (!event.isDefaultPrevented()) {\n- return doMove();\n- }\n- }\n- };\n-\n- DragAndDropHandler.prototype.getTreeDimensions = function() {\n- var offset;\n- offset = this.tree_widget.element.offset();\n- return {\n- left: offset.left,\n- top: offset.top,\n- right: offset.left + this.tree_widget.element.width(),\n- bottom: offset.top + this.tree_widget.element.height() + 16\n- };\n- };\n-\n- return DragAndDropHandler;\n-\n-})();\n-\n-VisibleNodeIterator = (function() {\n- function VisibleNodeIterator(tree) {\n- this.tree = tree;\n- }\n-\n- VisibleNodeIterator.prototype.iterate = function() {\n- var _iterateNode, is_first_node;\n- is_first_node = true;\n- _iterateNode = (function(_this) {\n- return function(node, next_node) {\n- var $element, child, children_length, i, j, len, must_iterate_inside, ref;\n- must_iterate_inside = (node.is_open || !node.element) && node.hasChildren();\n- if (node.element) {\n- $element = $(node.element);\n- if (!$element.is(\':visible\')) {\n- return;\n- }\n- if (is_first_node) {\n- _this.handleFirstNode(node, $element);\n- is_first_node = false;\n- }\n- if (!node.hasChildren()) {\n- _this.handleNode(node, next_node, $element);\n- } else if (node.is_open) {\n- if (!_this.handleOpenFolder(node, $element)) {\n- must_iterate_inside = false;\n+ function destroyWidget($el) {\n+ var data_key = getDataKey();\n+ for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var widget = getWidgetData(el, data_key);\n+ if (widget) {\n+ widget.destroy();\n+ }\n+ $.removeData(el, data_key);\n }\n- } else {\n- _this.handleClosedFolder(node, next_node, $element);\n- }\n }\n- if (must_iterate_inside) {\n- children_length = node.children.length;\n- ref = node.children;\n- for (i = j = 0, len = ref.length; j < len; i = ++j) {\n- child = ref[i];\n- if (i === (children_length - 1)) {\n- _iterateNode(node.children[i], null);\n- } else {\n- _iterateNode(node.children[i], node.children[i + 1]);\n+ function callFunction($el, function_name, args) {\n+ var result = null;\n+ for (var _i = 0, _a = $el.get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var widget = $.data(el, getDataKey());\n+ if (widget && (widget instanceof SimpleWidget)) {\n+ var widget_function = widget[function_name];\n+ if (widget_function && (typeof widget_function === "function")) {\n+ result = widget_function.apply(widget, args);\n+ }\n+ }\n }\n- }\n- if (node.is_open) {\n- return _this.handleAfterOpenFolder(node, next_node, $element);\n- }\n+ return result;\n }\n- };\n- })(this);\n- return _iterateNode(this.tree, null);\n- };\n-\n- VisibleNodeIterator.prototype.handleNode = function(node, next_node, $element) {};\n-\n- VisibleNodeIterator.prototype.handleOpenFolder = function(node, $element) {};\n+ // tslint:disable-next-line: only-arrow-functions\n+ $.fn[widget_name] = function (argument1) {\n+ var args = [];\n+ for (var _i = 1; _i < arguments.length; _i++) {\n+ args[_i - 1] = arguments[_i];\n+ }\n+ var $el = this;\n+ if (argument1 === undefined || typeof argument1 === "object") {\n+ var options = argument1;\n+ return createWidget($el, options);\n+ }\n+ else if (typeof argument1 === "string" && argument1[0] !== "_") {\n+ var function_name = argument1;\n+ if (function_name === "destroy") {\n+ return destroyWidget($el);\n+ }\n+ else if (function_name === "get_widget_class") {\n+ return widget_class;\n+ }\n+ else {\n+ return callFunction($el, function_name, args);\n+ }\n+ }\n+ };\n+ };\n+ SimpleWidget.prototype.destroy = function () {\n+ this._deinit();\n+ };\n+ SimpleWidget.prototype._init = function () {\n+ //\n+ };\n+ SimpleWidget.prototype._deinit = function () {\n+ //\n+ };\n+ return SimpleWidget;\n+}());\n+SimpleWidget.defaults = {};\n+exports["default"] = SimpleWidget;\n \n- VisibleNodeIterator.prototype.handleClosedFolder = function(node, next_node, $element) {};\n \n- VisibleNodeIterator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {};\n+/***/ }),\n+/* 3 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- VisibleNodeIterator.prototype.handleFirstNode = function(node, $element) {};\n \n- return VisibleNodeIterator;\n \n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n })();\n-\n-HitAreasGenerator = (function(superClass) {\n- extend(HitAreasGenerator, superClass);\n-\n- function HitAreasGenerator(tree, current_node, tree_bottom) {\n- HitAreasGenerator.__super__.constructor.call(this, tree);\n- this.current_node = current_node;\n- this.tree_bottom = tree_bottom;\n- }\n-\n- HitAreasGenerator.prototype.generate = function() {\n- this.positions = [];\n- this.last_top = 0;\n- this.iterate();\n- return this.generateHitAreas(this.positions);\n- };\n-\n- HitAreasGenerator.prototype.getTop = function($element) {\n- return $element.offset().top;\n- };\n-\n- HitAreasGenerator.prototype.addPosition = function(node, position, top) {\n- var area;\n- area = {\n- top: top,\n- node: node,\n- position: position\n+exports.__esModule = true;\n+var version_1 = __webpack_require__(12);\n+var drag_and_drop_handler_1 = __webpack_require__(4);\n+var elements_renderer_1 = __webpack_require__(5);\n+var key_handler_1 = __webpack_require__(6);\n+var mouse_widget_1 = __webpack_require__(7);\n+var save_state_handler_1 = __webpack_require__(9);\n+var scroll_handler_1 = __webpack_require__(10);\n+var select_node_handler_1 = __webpack_require__(11);\n+var simple_widget_1 = __webpack_require__(2);\n+var node_1 = __webpack_require__(0);\n+var util_1 = __webpack_require__(1);\n+var node_element_1 = __webpack_require__(8);\n+var JqTreeWidget = (function (_super) {\n+ __extends(JqTreeWidget, _super);\n+ function JqTreeWidget() {\n+ return _super !== null && _super.apply(this, arguments) || this;\n+ }\n+ JqTreeWidget.prototype.toggle = function (node, slide_param) {\n+ var slide = slide_param == null ? this.options.slide : slide_param;\n+ if (node.is_open) {\n+ this.closeNode(node, slide);\n+ }\n+ else {\n+ this.openNode(node, slide);\n+ }\n+ return this.element;\n };\n- this.positions.push(area);\n- return this.last_top = top;\n- };\n-\n- HitAreasGenerator.prototype.handleNode = function(node, next_node, $element) {\n- var top;\n- top = this.getTop($element);\n- if (node === this.current_node) {\n- this.addPosition(node, Position.NONE, top);\n- } else {\n- this.addPosition(node, Position.INSIDE, top);\n- }\n- if (next_node === this.current_node || node === this.current_node) {\n- return this.addPosition(node, Position.NONE, top);\n- } else {\n- return this.addPosition(node, Position.AFTER, top);\n- }\n- };\n-\n- HitAreasGenerator.prototype.handleOpenFolder = function(node, $element) {\n- if (node === this.current_node) {\n- return false;\n- }\n- if (node.children[0] !== this.current_node) {\n- this.addPosition(node, Position.INSIDE, this.getTop($element));\n- }\n- return true;\n- };\n-\n- HitAreasGenerator.prototype.handleClosedFolder = function(node, next_node, $element) {\n- var top;\n- top = this.getTop($element);\n- if (node === this.current_node) {\n- return this.addPosition(node, Position.NONE, top);\n- } else {\n- this.addPosition(node, Position.INSIDE, top);\n- if (next_node !== this.current_node) {\n- return this.addPosition(node, Position.AFTER, top);\n- }\n- }\n- };\n-\n- HitAreasGenerator.prototype.handleFirstNode = function(node, $element) {\n- if (node !== this.current_node) {\n- return this.addPosition(node, Position.BEFORE, this.getTop($(node.element)));\n- }\n- };\n-\n- HitAreasGenerator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {\n- if (node === this.current_node.node || next_node === this.current_node.node) {\n- return this.addPosition(node, Position.NONE, this.last_top);\n- } else {\n- return this.addPosition(node, Position.AFTER, this.last_top);\n- }\n- };\n-\n- HitAreasGenerator.prototype.generateHitAreas = function(positions) {\n- var group, hit_areas, j, len, position, previous_top;\n- previous_top = -1;\n- group = [];\n- hit_areas = [];\n- for (j = 0, len = positions.length; j < len; j++) {\n- position = positions[j];\n- if (position.top !== previous_top && group.length) {\n- if (group.length) {\n- this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top);\n+ JqTreeWidget.prototype.getTree = function () {\n+ return this.tree;\n+ };\n+ JqTreeWidget.prototype.selectNode = function (node) {\n+ this._selectNode(node, false);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getSelectedNode = function () {\n+ if (this.select_node_handler) {\n+ return this.select_node_handler.getSelectedNode();\n+ }\n+ else {\n+ return false;\n }\n- previous_top = position.top;\n- group = [];\n- }\n- group.push(position);\n- }\n- this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom);\n- return hit_areas;\n- };\n-\n- HitAreasGenerator.prototype.generateHitAreasForGroup = function(hit_areas, positions_in_group, top, bottom) {\n- var area_height, area_top, i, position, position_count;\n- position_count = Math.min(positions_in_group.length, 4);\n- area_height = Math.round((bottom - top) / position_count);\n- area_top = top;\n- i = 0;\n- while (i < position_count) {\n- position = positions_in_group[i];\n- hit_areas.push({\n- top: area_top,\n- bottom: area_top + area_height,\n- node: position.node,\n- position: position.position\n- });\n- area_top += area_height;\n- i += 1;\n- }\n- return null;\n- };\n-\n- return HitAreasGenerator;\n-\n-})(VisibleNodeIterator);\n-\n-DragElement = (function() {\n- function DragElement(node, offset_x, offset_y, $tree) {\n- this.offset_x = offset_x;\n- this.offset_y = offset_y;\n- this.$element = $("" + node.name + "");\n- this.$element.css("position", "absolute");\n- $tree.append(this.$element);\n- }\n-\n- DragElement.prototype.move = function(page_x, page_y) {\n- return this.$element.offset({\n- left: page_x - this.offset_x,\n- top: page_y - this.offset_y\n- });\n- };\n-\n- DragElement.prototype.remove = function() {\n- return this.$element.remove();\n- };\n-\n- return DragElement;\n-\n-})();\n-\n-module.exports = {\n- DragAndDropHandler: DragAndDropHandler,\n- DragElement: DragElement,\n- HitAreasGenerator: HitAreasGenerator\n-};\n-\n-},{"./node":5}],2:[function(require,module,exports){\n-var $, ElementsRenderer, NodeElement, html_escape, node_element, util;\n-\n-node_element = require(\'./node_element\');\n-\n-NodeElement = node_element.NodeElement;\n-\n-util = require(\'./util\');\n-\n-html_escape = util.html_escape;\n-\n-$ = jQuery;\n-\n-ElementsRenderer = (function() {\n- function ElementsRenderer(tree_widget) {\n- this.tree_widget = tree_widget;\n- this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon);\n- this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon);\n- }\n-\n- ElementsRenderer.prototype.render = function(from_node) {\n- if (from_node && from_node.parent) {\n- return this.renderFromNode(from_node);\n- } else {\n- return this.renderFromRoot();\n- }\n- };\n-\n- ElementsRenderer.prototype.renderFromRoot = function() {\n- var $element;\n- $element = this.tree_widget.element;\n- $element.empty();\n- return this.createDomElements($element[0], this.tree_widget.tree.children, true, true, 1);\n- };\n-\n- ElementsRenderer.prototype.renderFromNode = function(node) {\n- var $previous_li, li;\n- $previous_li = $(node.element);\n- li = this.createLi(node, node.getLevel());\n- this.attachNodeData(node, li);\n- $previous_li.after(li);\n- $previous_li.remove();\n- if (node.children) {\n- return this.createDomElements(li, node.children, false, false, node.getLevel() + 1);\n- }\n- };\n-\n- ElementsRenderer.prototype.createDomElements = function(element, children, is_root_node, is_open, level) {\n- var child, i, len, li, ul;\n- ul = this.createUl(is_root_node);\n- element.appendChild(ul);\n- for (i = 0, len = children.length; i < len; i++) {\n- child = children[i];\n- li = this.createLi(child, level);\n- ul.appendChild(li);\n- this.attachNodeData(child, li);\n- if (child.hasChildren()) {\n- this.createDomElements(li, child.children, false, child.is_open, level + 1);\n- }\n- }\n- return null;\n- };\n-\n- ElementsRenderer.prototype.attachNodeData = function(node, li) {\n- node.element = li;\n- return $(li).data(\'node\', node);\n- };\n-\n- ElementsRenderer.prototype.createUl = function(is_root_node) {\n- var class_string, role, ul;\n- if (!is_root_node) {\n- class_string = \'\';\n- role = \'group\';\n- } else {\n- class_string = \'jqtree-tree\';\n- role = \'tree\';\n- if (this.tree_widget.options.rtl) {\n- class_string += \' jqtree-rtl\';\n- }\n- }\n- ul = document.createElement(\'ul\');\n- ul.className = "jqtree_common " + class_string;\n- ul.setAttribute(\'role\', role);\n- return ul;\n- };\n-\n- ElementsRenderer.prototype.createLi = function(node, level) {\n- var is_selected, li;\n- is_selected = this.tree_widget.select_node_handler && this.tree_widget.select_node_handler.isNodeSelected(node);\n- if (node.isFolder()) {\n- li = this.createFolderLi(node, level, is_selected);\n- } else {\n- li = this.createNodeLi(node, level, is_selected);\n- }\n- if (this.tree_widget.options.onCreateLi) {\n- this.tree_widget.options.onCreateLi(node, $(li));\n- }\n- return li;\n- };\n-\n- ElementsRenderer.prototype.createFolderLi = function(node, level, is_selected) {\n- var button_classes, button_link, div, folder_classes, icon_element, is_folder, li;\n- button_classes = this.getButtonClasses(node);\n- folder_classes = this.getFolderClasses(node, is_selected);\n- if (node.is_open) {\n- icon_element = this.opened_icon_element;\n- } else {\n- icon_element = this.closed_icon_element;\n- }\n- li = document.createElement(\'li\');\n- li.className = "jqtree_common " + folder_classes;\n- li.setAttribute(\'role\', \'presentation\');\n- div = document.createElement(\'div\');\n- div.className = "jqtree-element jqtree_common";\n- div.setAttribute(\'role\', \'presentation\');\n- li.appendChild(div);\n- button_link = document.createElement(\'a\');\n- button_link.className = button_classes;\n- button_link.appendChild(icon_element.cloneNode(false));\n- button_link.setAttribute(\'role\', \'presentation\');\n- button_link.setAttribute(\'aria-hidden\', \'true\');\n- if (this.tree_widget.options.buttonLeft) {\n- div.appendChild(button_link);\n- }\n- div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = true));\n- if (!this.tree_widget.options.buttonLeft) {\n- div.appendChild(button_link);\n- }\n- return li;\n- };\n-\n- ElementsRenderer.prototype.createNodeLi = function(node, level, is_selected) {\n- var class_string, div, is_folder, li, li_classes;\n- li_classes = [\'jqtree_common\'];\n- if (is_selected) {\n- li_classes.push(\'jqtree-selected\');\n- }\n- class_string = li_classes.join(\' \');\n- li = document.createElement(\'li\');\n- li.className = class_string;\n- li.setAttribute(\'role\', \'presentation\');\n- div = document.createElement(\'div\');\n- div.className = "jqtree-element jqtree_common";\n- div.setAttribute(\'role\', \'presentation\');\n- li.appendChild(div);\n- div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, is_folder = false));\n- return li;\n- };\n-\n- ElementsRenderer.prototype.createTitleSpan = function(node_name, level, is_selected, is_open, is_folder) {\n- var classes, title_span;\n- title_span = document.createElement(\'span\');\n- classes = "jqtree-title jqtree_common";\n- if (is_folder) {\n- classes += " jqtree-title-folder";\n- }\n- title_span.className = classes;\n- title_span.setAttribute(\'role\', \'treeitem\');\n- title_span.setAttribute(\'aria-level\', level);\n- title_span.setAttribute(\'aria-selected\', util.getBoolString(is_selected));\n- title_span.setAttribute(\'aria-expanded\', util.getBoolString(is_open));\n- if (is_selected) {\n- title_span.setAttribute(\'tabindex\', 0);\n- }\n- title_span.innerHTML = this.escapeIfNecessary(node_name);\n- return title_span;\n- };\n-\n- ElementsRenderer.prototype.getButtonClasses = function(node) {\n- var classes;\n- classes = [\'jqtree-toggler\', \'jqtree_common\'];\n- if (!node.is_open) {\n- classes.push(\'jqtree-closed\');\n- }\n- if (this.tree_widget.options.buttonLeft) {\n- classes.push(\'jqtree-toggler-left\');\n- } else {\n- classes.push(\'jqtree-toggler-right\');\n- }\n- return classes.join(\' \');\n- };\n-\n- ElementsRenderer.prototype.getFolderClasses = function(node, is_selected) {\n- var classes;\n- classes = [\'jqtree-folder\'];\n- if (!node.is_open) {\n- classes.push(\'jqtree-closed\');\n- }\n- if (is_selected) {\n- classes.push(\'jqtree-selected\');\n- }\n- if (node.is_loading) {\n- classes.push(\'jqtree-loading\');\n- }\n- return classes.join(\' \');\n- };\n-\n- ElementsRenderer.prototype.escapeIfNecessary = function(value) {\n- if (this.tree_widget.options.autoEscape) {\n- return html_escape(value);\n- } else {\n- return value;\n- }\n- };\n-\n- ElementsRenderer.prototype.createButtonElement = function(value) {\n- var div;\n- if (typeof value === \'string\') {\n- div = document.createElement(\'div\');\n- div.innerHTML = value;\n- return document.createTextNode(div.innerHTML);\n- } else {\n- return $(value)[0];\n- }\n- };\n-\n- return ElementsRenderer;\n-\n-})();\n-\n-module.exports = ElementsRenderer;\n-\n-},{"./node_element":6,"./util":12}],3:[function(require,module,exports){\n-var $, KeyHandler,\n- bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n-\n-$ = jQuery;\n-\n-KeyHandler = (function() {\n- var DOWN, LEFT, RIGHT, UP;\n-\n- LEFT = 37;\n-\n- UP = 38;\n-\n- RIGHT = 39;\n-\n- DOWN = 40;\n-\n- function KeyHandler(tree_widget) {\n- this.selectNode = bind(this.selectNode, this);\n- this.tree_widget = tree_widget;\n- if (tree_widget.options.keyboardSupport) {\n- $(document).bind(\'keydown.jqtree\', $.proxy(this.handleKeyDown, this));\n- }\n- }\n-\n- KeyHandler.prototype.deinit = function() {\n- return $(document).unbind(\'keydown.jqtree\');\n- };\n-\n- KeyHandler.prototype.moveDown = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (node) {\n- return this.selectNode(node.getNextNode());\n- } else {\n- return false;\n- }\n- };\n-\n- KeyHandler.prototype.moveUp = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (node) {\n- return this.selectNode(node.getPreviousNode());\n- } else {\n- return false;\n- }\n- };\n-\n- KeyHandler.prototype.moveRight = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (!node) {\n- return true;\n- } else if (!node.isFolder()) {\n- return true;\n- } else {\n- if (node.is_open) {\n- return this.selectNode(node.getNextNode());\n- } else {\n- this.tree_widget.openNode(node);\n- return false;\n- }\n- }\n- };\n-\n- KeyHandler.prototype.moveLeft = function() {\n- var node;\n- node = this.tree_widget.getSelectedNode();\n- if (!node) {\n- return true;\n- } else if (node.isFolder() && node.is_open) {\n- this.tree_widget.closeNode(node);\n- return false;\n- } else {\n- return this.selectNode(node.getParent());\n- }\n- };\n-\n- KeyHandler.prototype.handleKeyDown = function(e) {\n- var key;\n- if (!this.tree_widget.options.keyboardSupport) {\n- return true;\n- }\n- if ($(document.activeElement).is(\'textarea,input,select\')) {\n- return true;\n- }\n- if (!this.tree_widget.getSelectedNode()) {\n- return true;\n- }\n- key = e.which;\n- switch (key) {\n- case DOWN:\n- return this.moveDown();\n- case UP:\n- return this.moveUp();\n- case RIGHT:\n- return this.moveRight();\n- case LEFT:\n- return this.moveLeft();\n- }\n- return true;\n- };\n-\n- KeyHandler.prototype.selectNode = function(node) {\n- if (!node) {\n- return true;\n- } else {\n- this.tree_widget.selectNode(node);\n- if (this.tree_widget.scroll_handler && (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find(\'.jqtree-element\')))) {\n- this.tree_widget.scrollToNode(node);\n- }\n- return false;\n- }\n- };\n-\n- return KeyHandler;\n-\n-})();\n-\n-module.exports = KeyHandler;\n-\n-},{}],4:[function(require,module,exports){\n-\n-/*\n-This widget does the same a the mouse widget in jqueryui.\n- */\n-var $, MouseWidget, SimpleWidget,\n- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n- hasProp = {}.hasOwnProperty;\n-\n-SimpleWidget = require(\'./simple.widget\');\n-\n-$ = jQuery;\n-\n-MouseWidget = (function(superClass) {\n- extend(MouseWidget, superClass);\n-\n- function MouseWidget() {\n- return MouseWidget.__super__.constructor.apply(this, arguments);\n- }\n-\n- MouseWidget.is_mouse_handled = false;\n-\n- MouseWidget.prototype._init = function() {\n- this.$el.bind(\'mousedown.mousewidget\', $.proxy(this._mouseDown, this));\n- this.$el.bind(\'touchstart.mousewidget\', $.proxy(this._touchStart, this));\n- this.is_mouse_started = false;\n- this.mouse_delay = 0;\n- this._mouse_delay_timer = null;\n- this._is_mouse_delay_met = true;\n- return this.mouse_down_info = null;\n- };\n-\n- MouseWidget.prototype._deinit = function() {\n- var $document;\n- this.$el.unbind(\'mousedown.mousewidget\');\n- this.$el.unbind(\'touchstart.mousewidget\');\n- $document = $(document);\n- $document.unbind(\'mousemove.mousewidget\');\n- return $document.unbind(\'mouseup.mousewidget\');\n- };\n-\n- MouseWidget.prototype._mouseDown = function(e) {\n- var result;\n- if (e.which !== 1) {\n- return;\n- }\n- result = this._handleMouseDown(e, this._getPositionInfo(e));\n- if (result) {\n- e.preventDefault();\n- }\n- return result;\n- };\n-\n- MouseWidget.prototype._handleMouseDown = function(e, position_info) {\n- if (MouseWidget.is_mouse_handled) {\n- return;\n- }\n- if (this.is_mouse_started) {\n- this._handleMouseUp(position_info);\n- }\n- this.mouse_down_info = position_info;\n- if (!this._mouseCapture(position_info)) {\n- return;\n- }\n- this._handleStartMouse();\n- this.is_mouse_handled = true;\n- return true;\n- };\n-\n- MouseWidget.prototype._handleStartMouse = function() {\n- var $document;\n- $document = $(document);\n- $document.bind(\'mousemove.mousewidget\', $.proxy(this._mouseMove, this));\n- $document.bind(\'touchmove.mousewidget\', $.proxy(this._touchMove, this));\n- $document.bind(\'mouseup.mousewidget\', $.proxy(this._mouseUp, this));\n- $document.bind(\'touchend.mousewidget\', $.proxy(this._touchEnd, this));\n- if (this.mouse_delay) {\n- return this._startMouseDelayTimer();\n- }\n- };\n-\n- MouseWidget.prototype._startMouseDelayTimer = function() {\n- if (this._mouse_delay_timer) {\n- clearTimeout(this._mouse_delay_timer);\n- }\n- this._mouse_delay_timer = setTimeout((function(_this) {\n- return function() {\n- return _this._is_mouse_delay_met = true;\n- };\n- })(this), this.mouse_delay);\n- return this._is_mouse_delay_met = false;\n- };\n-\n- MouseWidget.prototype._mouseMove = function(e) {\n- return this._handleMouseMove(e, this._getPositionInfo(e));\n- };\n-\n- MouseWidget.prototype._handleMouseMove = function(e, position_info) {\n- if (this.is_mouse_started) {\n- this._mouseDrag(position_info);\n- return e.preventDefault();\n- }\n- if (this.mouse_delay && !this._is_mouse_delay_met) {\n- return true;\n- }\n- this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false;\n- if (this.is_mouse_started) {\n- this._mouseDrag(position_info);\n- } else {\n- this._handleMouseUp(position_info);\n- }\n- return !this.is_mouse_started;\n- };\n-\n- MouseWidget.prototype._getPositionInfo = function(e) {\n- return {\n- page_x: e.pageX,\n- page_y: e.pageY,\n- target: e.target,\n- original_event: e\n };\n- };\n-\n- MouseWidget.prototype._mouseUp = function(e) {\n- return this._handleMouseUp(this._getPositionInfo(e));\n- };\n-\n- MouseWidget.prototype._handleMouseUp = function(position_info) {\n- var $document;\n- $document = $(document);\n- $document.unbind(\'mousemove.mousewidget\');\n- $document.unbind(\'touchmove.mousewidget\');\n- $document.unbind(\'mouseup.mousewidget\');\n- $document.unbind(\'touchend.mousewidget\');\n- if (this.is_mouse_started) {\n- this.is_mouse_started = false;\n- this._mouseStop(position_info);\n- }\n- };\n-\n- MouseWidget.prototype._mouseCapture = function(position_info) {\n- return true;\n- };\n-\n- MouseWidget.prototype._mouseStart = function(position_info) {\n- return null;\n- };\n-\n- MouseWidget.prototype._mouseDrag = function(position_info) {\n- return null;\n- };\n-\n- MouseWidget.prototype._mouseStop = function(position_info) {\n- return null;\n- };\n-\n- MouseWidget.prototype.setMouseDelay = function(mouse_delay) {\n- return this.mouse_delay = mouse_delay;\n- };\n-\n- MouseWidget.prototype._touchStart = function(e) {\n- var touch;\n- if (e.originalEvent.touches.length > 1) {\n- return;\n- }\n- touch = e.originalEvent.changedTouches[0];\n- return this._handleMouseDown(e, this._getPositionInfo(touch));\n- };\n-\n- MouseWidget.prototype._touchMove = function(e) {\n- var touch;\n- if (e.originalEvent.touches.length > 1) {\n- return;\n- }\n- touch = e.originalEvent.changedTouches[0];\n- return this._handleMouseMove(e, this._getPositionInfo(touch));\n- };\n-\n- MouseWidget.prototype._touchEnd = function(e) {\n- var touch;\n- if (e.originalEvent.touches.length > 1) {\n- return;\n- }\n- touch = e.originalEvent.changedTouches[0];\n- return this._handleMouseUp(this._getPositionInfo(touch));\n- };\n-\n- return MouseWidget;\n-\n-})(SimpleWidget);\n-\n-module.exports = MouseWidget;\n-\n-},{"./simple.widget":10}],5:[function(require,module,exports){\n-var $, Node, Position;\n-\n-$ = jQuery;\n-\n-Position = {\n- getName: function(position) {\n- return Position.strings[position - 1];\n- },\n- nameToIndex: function(name) {\n- var i, j, ref;\n- for (i = j = 1, ref = Position.strings.length; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n- if (Position.strings[i - 1] === name) {\n- return i;\n- }\n- }\n- return 0;\n- }\n-};\n-\n-Position.BEFORE = 1;\n-\n-Position.AFTER = 2;\n-\n-Position.INSIDE = 3;\n-\n-Position.NONE = 4;\n-\n-Position.strings = [\'before\', \'after\', \'inside\', \'none\'];\n-\n-Node = (function() {\n- function Node(o, is_root, node_class) {\n- if (is_root == null) {\n- is_root = false;\n- }\n- if (node_class == null) {\n- node_class = Node;\n- }\n- this.name = \'\';\n- this.setData(o);\n- this.children = [];\n- this.parent = null;\n- if (is_root) {\n- this.id_mapping = {};\n- this.tree = this;\n- this.node_class = node_class;\n- }\n- }\n-\n- Node.prototype.setData = function(o) {\n-\n+ JqTreeWidget.prototype.toJson = function () {\n+ return JSON.stringify(this.tree.getData());\n+ };\n+ JqTreeWidget.prototype.loadData = function (data, parent_node) {\n+ this._loadData(data, parent_node);\n+ return this.element;\n+ };\n /*\n- Set the data of this node.\n- \n- setData(string): set the name of the node\n- setdata(object): set attributes of the node\n- \n- Examples:\n- setdata(\'node1\')\n- \n- setData({ name: \'node1\', id: 1});\n- \n- setData({ name: \'node2\', id: 2, color: \'green\'});\n- \n- * This is an internal function; it is not in the docs\n- * Does not remove existing node values\n- */\n- var key, setName, value;\n- setName = (function(_this) {\n- return function(name) {\n- if (name !== null) {\n- return _this.name = name;\n+ signatures:\n+ - loadDataFromUrl(url, parent_node=null, on_finished=null)\n+ loadDataFromUrl(\'/my_data\');\n+ loadDataFromUrl(\'/my_data\', node1);\n+ loadDataFromUrl(\'/my_data\', node1, function() { console.log(\'finished\'); });\n+ loadDataFromUrl(\'/my_data\', null, function() { console.log(\'finished\'); });\n+\n+ - loadDataFromUrl(parent_node=null, on_finished=null)\n+ loadDataFromUrl();\n+ loadDataFromUrl(node1);\n+ loadDataFromUrl(null, function() { console.log(\'finished\'); });\n+ loadDataFromUrl(node1, function() { console.log(\'finished\'); });\n+ */\n+ JqTreeWidget.prototype.loadDataFromUrl = function (param1, param2, param3) {\n+ if ($.type(param1) === "string") {\n+ // first parameter is url\n+ this._loadDataFromUrl(param1, param2, param3);\n }\n- };\n- })(this);\n- if (typeof o !== \'object\') {\n- setName(o);\n- } else {\n- for (key in o) {\n- value = o[key];\n- if (key === \'label\') {\n- setName(value);\n- } else if (key !== \'children\') {\n- this[key] = value;\n+ else {\n+ // first parameter is not url\n+ this._loadDataFromUrl(null, param1, param2);\n }\n- }\n- }\n- return null;\n- };\n-\n- Node.prototype.initFromData = function(data) {\n- var addChildren, addNode;\n- addNode = (function(_this) {\n- return function(node_data) {\n- _this.setData(node_data);\n- if (node_data.children) {\n- return addChildren(node_data.children);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.reload = function (on_finished) {\n+ this._loadDataFromUrl(null, null, on_finished);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getNodeById = function (node_id) {\n+ return this.tree.getNodeById(node_id);\n+ };\n+ JqTreeWidget.prototype.getNodeByName = function (name) {\n+ return this.tree.getNodeByName(name);\n+ };\n+ JqTreeWidget.prototype.getNodesByProperty = function (key, value) {\n+ return this.tree.getNodesByProperty(key, value);\n+ };\n+ JqTreeWidget.prototype.getNodeByHtmlElement = function (element) {\n+ return this._getNode($(element));\n+ };\n+ JqTreeWidget.prototype.getNodeByCallback = function (callback) {\n+ return this.tree.getNodeByCallback(callback);\n+ };\n+ JqTreeWidget.prototype.openNode = function (node, param1, param2) {\n+ var _this = this;\n+ var parseParams = function () {\n+ var on_finished;\n+ var slide;\n+ if (util_1.isFunction(param1)) {\n+ on_finished = param1;\n+ slide = null;\n+ }\n+ else {\n+ slide = param1;\n+ on_finished = param2;\n+ }\n+ if (slide == null) {\n+ slide = _this.options.slide;\n+ }\n+ return [slide, on_finished];\n+ };\n+ var _a = parseParams(), slide = _a[0], on_finished = _a[1];\n+ if (node) {\n+ this._openNode(node, slide, on_finished);\n }\n- };\n- })(this);\n- addChildren = (function(_this) {\n- return function(children_data) {\n- var child, j, len, node;\n- for (j = 0, len = children_data.length; j < len; j++) {\n- child = children_data[j];\n- node = new _this.tree.node_class(\'\');\n- node.initFromData(child);\n- _this.addChild(node);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.closeNode = function (node, slide_param) {\n+ var slide = slide_param == null ? this.options.slide : slide_param;\n+ if (node.isFolder()) {\n+ new node_element_1.FolderElement(node, this).close(slide);\n+ this._saveState();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.isDragging = function () {\n+ if (this.dnd_handler) {\n+ return this.dnd_handler.is_dragging;\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype.refreshHitAreas = function () {\n+ if (this.dnd_handler) {\n+ this.dnd_handler.refresh();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.addNodeAfter = function (new_node_info, existing_node) {\n+ var new_node = existing_node.addAfter(new_node_info);\n+ if (new_node) {\n+ this._refreshElements(existing_node.parent);\n+ }\n+ return new_node;\n+ };\n+ JqTreeWidget.prototype.addNodeBefore = function (new_node_info, existing_node) {\n+ var new_node = existing_node.addBefore(new_node_info);\n+ if (new_node) {\n+ this._refreshElements(existing_node.parent);\n+ }\n+ return new_node;\n+ };\n+ JqTreeWidget.prototype.addParentNode = function (new_node_info, existing_node) {\n+ var new_node = existing_node.addParent(new_node_info);\n+ if (new_node) {\n+ this._refreshElements(new_node.parent);\n+ }\n+ return new_node;\n+ };\n+ JqTreeWidget.prototype.removeNode = function (node) {\n+ if (node.parent && this.select_node_handler) {\n+ this.select_node_handler.removeFromSelection(node, true); // including children\n+ node.remove();\n+ this._refreshElements(node.parent);\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.appendNode = function (new_node_info, parent_node_param) {\n+ var parent_node = parent_node_param || this.tree;\n+ var node = parent_node.append(new_node_info);\n+ this._refreshElements(parent_node);\n+ return node;\n+ };\n+ JqTreeWidget.prototype.prependNode = function (new_node_info, parent_node_param) {\n+ var parent_node = !parent_node_param ? this.tree : parent_node_param;\n+ var node = parent_node.prepend(new_node_info);\n+ this._refreshElements(parent_node);\n+ return node;\n+ };\n+ JqTreeWidget.prototype.updateNode = function (node, data) {\n+ var id_is_changed = data.id && data.id !== node.id;\n+ if (id_is_changed) {\n+ this.tree.removeNodeFromIndex(node);\n+ }\n+ node.setData(data);\n+ if (id_is_changed) {\n+ this.tree.addNodeToIndex(node);\n+ }\n+ if (typeof data === "object" && data.children) {\n+ node.removeChildren();\n+ if (data.children.length) {\n+ node.loadFromData(data.children);\n+ }\n+ }\n+ this.renderer.renderFromNode(node);\n+ this._selectCurrentNode();\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.moveNode = function (node, target_node, position) {\n+ var position_index = node_1.getPosition(position);\n+ this.tree.moveNode(node, target_node, position_index);\n+ this._refreshElements(null);\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getStateFromStorage = function () {\n+ if (this.save_state_handler) {\n+ return this.save_state_handler.getStateFromStorage();\n+ }\n+ };\n+ JqTreeWidget.prototype.addToSelection = function (node) {\n+ if (node && this.select_node_handler) {\n+ this.select_node_handler.addToSelection(node);\n+ this._getNodeElementForNode(node).select();\n+ this._saveState();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getSelectedNodes = function () {\n+ if (!this.select_node_handler) {\n+ return [];\n+ }\n+ else {\n+ return this.select_node_handler.getSelectedNodes();\n+ }\n+ };\n+ JqTreeWidget.prototype.isNodeSelected = function (node) {\n+ if (!this.select_node_handler) {\n+ return false;\n+ }\n+ else {\n+ return this.select_node_handler.isNodeSelected(node);\n+ }\n+ };\n+ JqTreeWidget.prototype.removeFromSelection = function (node) {\n+ if (this.select_node_handler) {\n+ this.select_node_handler.removeFromSelection(node);\n+ this._getNodeElementForNode(node).deselect();\n+ this._saveState();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.scrollToNode = function (node) {\n+ if (this.scroll_handler) {\n+ var $element = $(node.element);\n+ var top_1 = $element.offset().top - this.$el.offset().top;\n+ this.scroll_handler.scrollTo(top_1);\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getState = function () {\n+ if (this.save_state_handler) {\n+ return this.save_state_handler.getState();\n+ }\n+ };\n+ JqTreeWidget.prototype.setState = function (state) {\n+ if (this.save_state_handler) {\n+ this.save_state_handler.setInitialState(state);\n+ this._refreshElements(null);\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.setOption = function (option, value) {\n+ this.options[option] = value;\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.moveDown = function () {\n+ if (this.key_handler) {\n+ this.key_handler.moveDown();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.moveUp = function () {\n+ if (this.key_handler) {\n+ this.key_handler.moveUp();\n+ }\n+ return this.element;\n+ };\n+ JqTreeWidget.prototype.getVersion = function () {\n+ return version_1["default"];\n+ };\n+ JqTreeWidget.prototype.testGenerateHitAreas = function (moving_node) {\n+ if (!this.dnd_handler) {\n+ return [];\n+ }\n+ else {\n+ this.dnd_handler.current_item = this._getNodeElementForNode(moving_node);\n+ this.dnd_handler.generateHitAreas();\n+ return this.dnd_handler.hit_areas;\n+ }\n+ };\n+ JqTreeWidget.prototype._triggerEvent = function (event_name, values) {\n+ var event = $.Event(event_name);\n+ $.extend(event, values);\n+ this.element.trigger(event);\n+ return event;\n+ };\n+ JqTreeWidget.prototype._openNode = function (node, slide, on_finished) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ var doOpenNode = function (_node, _slide, _on_finished) {\n+ var folder_element = new node_element_1.FolderElement(_node, _this);\n+ folder_element.open(_on_finished, _slide);\n+ };\n+ if (node.isFolder()) {\n+ if (node.load_on_demand) {\n+ this._loadFolderOnDemand(node, slide, on_finished);\n+ }\n+ else {\n+ var parent_1 = node.parent;\n+ while (parent_1) {\n+ // nb: do not open root element\n+ if (parent_1.parent) {\n+ doOpenNode(parent_1, false, null);\n+ }\n+ parent_1 = parent_1.parent;\n+ }\n+ doOpenNode(node, slide, on_finished);\n+ this._saveState();\n+ }\n+ }\n+ };\n+ /*\n+ Redraw the tree or part of the tree.\n+ from_node: redraw this subtree\n+ */\n+ JqTreeWidget.prototype._refreshElements = function (from_node) {\n+ this.renderer.render(from_node);\n+ this._triggerEvent("tree.refresh");\n+ };\n+ JqTreeWidget.prototype._getNodeElementForNode = function (node) {\n+ if (node.isFolder()) {\n+ return new node_element_1.FolderElement(node, this);\n+ }\n+ else {\n+ return new node_element_1.NodeElement(node, this);\n+ }\n+ };\n+ JqTreeWidget.prototype._getNodeElement = function ($element) {\n+ var node = this._getNode($element);\n+ if (node) {\n+ return this._getNodeElementForNode(node);\n+ }\n+ else {\n+ return null;\n+ }\n+ };\n+ JqTreeWidget.prototype._containsElement = function (element) {\n+ var node = this._getNode($(element));\n+ return node != null && node.tree === this.tree;\n+ };\n+ JqTreeWidget.prototype._init = function () {\n+ _super.prototype._init.call(this);\n+ this.element = this.$el;\n+ this.mouse_delay = 300;\n+ this.is_initialized = false;\n+ this.options.rtl = this._getRtlOption();\n+ if (!this.options.closedIcon) {\n+ this.options.closedIcon = this._getDefaultClosedIcon();\n+ }\n+ this.renderer = new elements_renderer_1["default"](this);\n+ if (save_state_handler_1["default"] != null) {\n+ this.save_state_handler = new save_state_handler_1["default"](this);\n+ }\n+ else {\n+ this.options.saveState = false;\n+ }\n+ if (select_node_handler_1["default"] != null) {\n+ this.select_node_handler = new select_node_handler_1["default"](this);\n+ }\n+ if (drag_and_drop_handler_1.DragAndDropHandler != null) {\n+ this.dnd_handler = new drag_and_drop_handler_1.DragAndDropHandler(this);\n+ }\n+ else {\n+ this.options.dragAndDrop = false;\n+ }\n+ if (scroll_handler_1["default"] != null) {\n+ this.scroll_handler = new scroll_handler_1["default"](this);\n+ }\n+ if (key_handler_1["default"] != null && select_node_handler_1["default"] != null) {\n+ this.key_handler = new key_handler_1["default"](this);\n+ }\n+ this._initData();\n+ this.element.click($.proxy(this._click, this));\n+ this.element.dblclick($.proxy(this._dblclick, this));\n+ if (this.options.useContextMenu) {\n+ this.element.on("contextmenu", $.proxy(this._contextmenu, this));\n+ }\n+ };\n+ JqTreeWidget.prototype._deinit = function () {\n+ this.element.empty();\n+ this.element.off();\n+ if (this.key_handler) {\n+ this.key_handler.deinit();\n+ }\n+ this.tree = new node_1.Node({}, true);\n+ _super.prototype._deinit.call(this);\n+ };\n+ JqTreeWidget.prototype._mouseCapture = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ return this.dnd_handler.mouseCapture(position_info);\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._mouseStart = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ return this.dnd_handler.mouseStart(position_info);\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._mouseDrag = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ var result = this.dnd_handler.mouseDrag(position_info);\n+ if (this.scroll_handler) {\n+ this.scroll_handler.checkScrolling();\n+ }\n+ return result;\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._mouseStop = function (position_info) {\n+ if (this.options.dragAndDrop && this.dnd_handler) {\n+ return this.dnd_handler.mouseStop(position_info);\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ JqTreeWidget.prototype._initData = function () {\n+ if (this.options.data) {\n+ this._loadData(this.options.data, null);\n+ }\n+ else {\n+ var data_url = this._getDataUrlInfo(null);\n+ if (data_url) {\n+ this._loadDataFromUrl(null, null, null);\n+ }\n+ else {\n+ this._loadData([], null);\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._getDataUrlInfo = function (node) {\n+ var _this = this;\n+ var data_url = this.options.dataUrl || this.element.data("url");\n+ var getUrlFromString = function () {\n+ var url_info = { url: data_url };\n+ if (node && node.id) {\n+ // Load on demand of a subtree; add node parameter\n+ var data = { node: node.id };\n+ // tslint:disable-next-line: no-string-literal\n+ url_info["data"] = data;\n+ }\n+ else {\n+ // Add selected_node parameter\n+ var selected_node_id = _this._getNodeIdToBeSelected();\n+ if (selected_node_id) {\n+ var data = { selected_node: selected_node_id };\n+ // tslint:disable-next-line: no-string-literal\n+ url_info["data"] = data;\n+ }\n+ }\n+ return url_info;\n+ };\n+ if ($.isFunction(data_url)) {\n+ return data_url(node);\n+ }\n+ else if ($.type(data_url) === "string") {\n+ return getUrlFromString();\n+ }\n+ else {\n+ return data_url;\n+ }\n+ };\n+ JqTreeWidget.prototype._getNodeIdToBeSelected = function () {\n+ if (this.options.saveState && this.save_state_handler) {\n+ return this.save_state_handler.getNodeIdToBeSelected();\n+ }\n+ else {\n+ return null;\n+ }\n+ };\n+ JqTreeWidget.prototype._initTree = function (data) {\n+ var _this = this;\n+ var doInit = function () {\n+ if (!_this.is_initialized) {\n+ _this.is_initialized = true;\n+ _this._triggerEvent("tree.init");\n+ }\n+ };\n+ this.tree = new this.options.nodeClass(null, true, this.options.nodeClass);\n+ if (this.select_node_handler) {\n+ this.select_node_handler.clear();\n+ }\n+ this.tree.loadFromData(data);\n+ var must_load_on_demand = this._setInitialState();\n+ this._refreshElements(null);\n+ if (!must_load_on_demand) {\n+ doInit();\n+ }\n+ else {\n+ // Load data on demand and then init the tree\n+ this._setInitialStateOnDemand(doInit);\n+ }\n+ };\n+ // Set initial state, either by restoring the state or auto-opening nodes\n+ // result: must load nodes on demand?\n+ JqTreeWidget.prototype._setInitialState = function () {\n+ var _this = this;\n+ var restoreState = function () {\n+ // result: is state restored, must load on demand?\n+ if (!(_this.options.saveState && _this.save_state_handler)) {\n+ return [false, false];\n+ }\n+ else {\n+ var state = _this.save_state_handler.getStateFromStorage();\n+ if (!state) {\n+ return [false, false];\n+ }\n+ else {\n+ var must_load_on_demand_1 = _this.save_state_handler.setInitialState(state);\n+ // return true: the state is restored\n+ return [true, must_load_on_demand_1];\n+ }\n+ }\n+ };\n+ var autoOpenNodes = function () {\n+ // result: must load on demand?\n+ if (_this.options.autoOpen === false) {\n+ return false;\n+ }\n+ var max_level = _this._getAutoOpenMaxLevel();\n+ var must_load_on_demand = false;\n+ _this.tree.iterate(function (node, level) {\n+ if (node.load_on_demand) {\n+ must_load_on_demand = true;\n+ return false;\n+ }\n+ else if (!node.hasChildren()) {\n+ return false;\n+ }\n+ else {\n+ node.is_open = true;\n+ return (level !== max_level);\n+ }\n+ });\n+ return must_load_on_demand;\n+ };\n+ // tslint:disable-next-line: prefer-const\n+ var _a = restoreState(), is_restored = _a[0], must_load_on_demand = _a[1];\n+ if (!is_restored) {\n+ must_load_on_demand = autoOpenNodes();\n+ }\n+ return must_load_on_demand;\n+ };\n+ // Set the initial state for nodes that are loaded on demand\n+ // Call cb_finished when done\n+ JqTreeWidget.prototype._setInitialStateOnDemand = function (cb_finished) {\n+ var _this = this;\n+ var restoreState = function () {\n+ if (!(_this.options.saveState && _this.save_state_handler)) {\n+ return false;\n+ }\n+ else {\n+ var state = _this.save_state_handler.getStateFromStorage();\n+ if (!state) {\n+ return false;\n+ }\n+ else {\n+ _this.save_state_handler.setInitialStateOnDemand(state, cb_finished);\n+ return true;\n+ }\n+ }\n+ };\n+ var autoOpenNodes = function () {\n+ var max_level = _this._getAutoOpenMaxLevel();\n+ var loading_count = 0;\n+ var loadAndOpenNode = function (node) {\n+ loading_count += 1;\n+ _this._openNode(node, false, function () {\n+ loading_count -= 1;\n+ openNodes();\n+ });\n+ };\n+ var openNodes = function () {\n+ _this.tree.iterate(function (node, level) {\n+ if (node.load_on_demand) {\n+ if (!node.is_loading) {\n+ loadAndOpenNode(node);\n+ }\n+ return false;\n+ }\n+ else {\n+ _this._openNode(node, false, null);\n+ return (level !== max_level);\n+ }\n+ });\n+ if (loading_count === 0) {\n+ cb_finished();\n+ }\n+ };\n+ openNodes();\n+ };\n+ if (!restoreState()) {\n+ autoOpenNodes();\n+ }\n+ };\n+ JqTreeWidget.prototype._getAutoOpenMaxLevel = function () {\n+ if (this.options.autoOpen === true) {\n+ return -1;\n+ }\n+ else {\n+ return parseInt(this.options.autoOpen, 10);\n+ }\n+ };\n+ JqTreeWidget.prototype._click = function (e) {\n+ var click_target = this._getClickTarget(e.target);\n+ if (click_target) {\n+ if (click_target.type === "button") {\n+ this.toggle(click_target.node, this.options.slide);\n+ e.preventDefault();\n+ e.stopPropagation();\n+ }\n+ else if (click_target.type === "label") {\n+ var node = click_target.node;\n+ var event_1 = this._triggerEvent("tree.click", {\n+ node: node,\n+ click_event: e\n+ });\n+ if (!event_1.isDefaultPrevented()) {\n+ this._selectNode(node, true);\n+ }\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._dblclick = function (e) {\n+ var click_target = this._getClickTarget(e.target);\n+ if (click_target && click_target.type === "label") {\n+ this._triggerEvent("tree.dblclick", {\n+ node: click_target.node,\n+ click_event: e\n+ });\n+ }\n+ };\n+ JqTreeWidget.prototype._getClickTarget = function (element) {\n+ var $target = $(element);\n+ var $button = $target.closest(".jqtree-toggler");\n+ if ($button.length) {\n+ var node = this._getNode($button);\n+ if (node) {\n+ return {\n+ type: "button",\n+ node: node\n+ };\n+ }\n+ }\n+ else {\n+ var $el = $target.closest(".jqtree-element");\n+ if ($el.length) {\n+ var node = this._getNode($el);\n+ if (node) {\n+ return {\n+ type: "label",\n+ node: node\n+ };\n+ }\n+ }\n }\n return null;\n- };\n- })(this);\n- addNode(data);\n- return null;\n- };\n-\n-\n- /*\n- Create tree from data.\n- \n- Structure of data is:\n- [\n- {\n- label: \'node1\',\n- children: [\n- { label: \'child1\' },\n- { label: \'child2\' }\n- ]\n- },\n- {\n- label: \'node2\'\n- }\n- ]\n- */\n-\n- Node.prototype.loadFromData = function(data) {\n- var j, len, node, o;\n- this.removeChildren();\n- for (j = 0, len = data.length; j < len; j++) {\n- o = data[j];\n- node = new this.tree.node_class(o);\n- this.addChild(node);\n- if (typeof o === \'object\' && o.children) {\n- node.loadFromData(o.children);\n- }\n- }\n- return null;\n- };\n-\n-\n- /*\n- Add child.\n- \n- tree.addChild(\n- new Node(\'child1\')\n- );\n- */\n-\n- Node.prototype.addChild = function(node) {\n- this.children.push(node);\n- return node._setParent(this);\n- };\n-\n-\n- /*\n- Add child at position. Index starts at 0.\n- \n- tree.addChildAtPosition(\n- new Node(\'abc\'),\n- 1\n- );\n- */\n-\n- Node.prototype.addChildAtPosition = function(node, index) {\n- this.children.splice(index, 0, node);\n- return node._setParent(this);\n- };\n-\n- Node.prototype._setParent = function(parent) {\n- this.parent = parent;\n- this.tree = parent.tree;\n- return this.tree.addNodeToIndex(this);\n- };\n-\n-\n- /*\n- Remove child. This also removes the children of the node.\n- \n- tree.removeChild(tree.children[0]);\n- */\n-\n- Node.prototype.removeChild = function(node) {\n- node.removeChildren();\n- return this._removeChild(node);\n- };\n-\n- Node.prototype._removeChild = function(node) {\n- this.children.splice(this.getChildIndex(node), 1);\n- return this.tree.removeNodeFromIndex(node);\n- };\n-\n-\n- /*\n- Get child index.\n- \n- var index = getChildIndex(node);\n- */\n-\n- Node.prototype.getChildIndex = function(node) {\n- return $.inArray(node, this.children);\n- };\n-\n-\n- /*\n- Does the tree have children?\n- \n- if (tree.hasChildren()) {\n- //\n- }\n- */\n+ };\n+ JqTreeWidget.prototype._getNode = function ($element) {\n+ var $li = $element.closest("li.jqtree_common");\n+ if ($li.length === 0) {\n+ return null;\n+ }\n+ else {\n+ return $li.data("node");\n+ }\n+ };\n+ JqTreeWidget.prototype._contextmenu = function (e) {\n+ var $div = $(e.target).closest("ul.jqtree-tree .jqtree-element");\n+ if ($div.length) {\n+ var node = this._getNode($div);\n+ if (node) {\n+ e.preventDefault();\n+ e.stopPropagation();\n+ this._triggerEvent("tree.contextmenu", {\n+ node: node,\n+ click_event: e\n+ });\n+ return false;\n+ }\n+ }\n+ return null;\n+ };\n+ JqTreeWidget.prototype._saveState = function () {\n+ if (this.options.saveState && this.save_state_handler) {\n+ this.save_state_handler.saveState();\n+ }\n+ };\n+ JqTreeWidget.prototype._selectCurrentNode = function () {\n+ var node = this.getSelectedNode();\n+ if (node) {\n+ var node_element = this._getNodeElementForNode(node);\n+ if (node_element) {\n+ node_element.select();\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._deselectCurrentNode = function () {\n+ var node = this.getSelectedNode();\n+ if (node) {\n+ this.removeFromSelection(node);\n+ }\n+ };\n+ JqTreeWidget.prototype._getDefaultClosedIcon = function () {\n+ if (this.options.rtl) {\n+ // triangle to the left\n+ return "◀";\n+ }\n+ else {\n+ // triangle to the right\n+ return "►";\n+ }\n+ };\n+ JqTreeWidget.prototype._getRtlOption = function () {\n+ if (this.options.rtl != null) {\n+ return this.options.rtl;\n+ }\n+ else {\n+ var data_rtl = this.element.data("rtl");\n+ if (data_rtl != null && data_rtl !== false) {\n+ return true;\n+ }\n+ else {\n+ return false;\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._notifyLoading = function (is_loading, node, $el) {\n+ if (this.options.onLoading) {\n+ this.options.onLoading(is_loading, node, $el);\n+ }\n+ };\n+ JqTreeWidget.prototype._selectNode = function (node, must_toggle) {\n+ var _this = this;\n+ if (must_toggle === void 0) { must_toggle = false; }\n+ if (!this.select_node_handler) {\n+ return;\n+ }\n+ var canSelect = function () {\n+ if (_this.options.onCanSelectNode) {\n+ return _this.options.selectable && _this.options.onCanSelectNode(node);\n+ }\n+ else {\n+ return _this.options.selectable;\n+ }\n+ };\n+ var openParents = function () {\n+ var parent = node.parent;\n+ if (parent && parent.parent && !parent.is_open) {\n+ _this.openNode(parent, false);\n+ }\n+ };\n+ var saveState = function () {\n+ if (_this.options.saveState && _this.save_state_handler) {\n+ _this.save_state_handler.saveState();\n+ }\n+ };\n+ if (!node) {\n+ // Called with empty node -> deselect current node\n+ this._deselectCurrentNode();\n+ saveState();\n+ return;\n+ }\n+ if (!canSelect()) {\n+ return;\n+ }\n+ if (this.select_node_handler.isNodeSelected(node)) {\n+ if (must_toggle) {\n+ this._deselectCurrentNode();\n+ this._triggerEvent("tree.select", {\n+ node: null,\n+ previous_node: node\n+ });\n+ }\n+ }\n+ else {\n+ var deselected_node = this.getSelectedNode();\n+ this._deselectCurrentNode();\n+ this.addToSelection(node);\n+ this._triggerEvent("tree.select", {\n+ node: node,\n+ deselected_node: deselected_node\n+ });\n+ openParents();\n+ }\n+ saveState();\n+ };\n+ JqTreeWidget.prototype._loadData = function (data, parent_node) {\n+ if (!data) {\n+ return;\n+ }\n+ else {\n+ this._triggerEvent("tree.load_data", { tree_data: data });\n+ if (parent_node) {\n+ this._deselectNodes(parent_node);\n+ this._loadSubtree(data, parent_node);\n+ }\n+ else {\n+ this._initTree(data);\n+ }\n+ if (this.isDragging() && this.dnd_handler) {\n+ this.dnd_handler.refresh();\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._deselectNodes = function (parent_node) {\n+ if (this.select_node_handler) {\n+ var selected_nodes_under_parent = this.select_node_handler.getSelectedNodesUnder(parent_node);\n+ for (var _i = 0, selected_nodes_under_parent_1 = selected_nodes_under_parent; _i < selected_nodes_under_parent_1.length; _i++) {\n+ var n = selected_nodes_under_parent_1[_i];\n+ this.select_node_handler.removeFromSelection(n);\n+ }\n+ }\n+ };\n+ JqTreeWidget.prototype._loadSubtree = function (data, parent_node) {\n+ parent_node.loadFromData(data);\n+ parent_node.load_on_demand = false;\n+ parent_node.is_loading = false;\n+ this._refreshElements(parent_node);\n+ };\n+ JqTreeWidget.prototype._loadDataFromUrl = function (url_info_param, parent_node, on_finished) {\n+ var _this = this;\n+ var $el = null;\n+ var url_info = url_info_param;\n+ var addLoadingClass = function () {\n+ $el = parent_node ? $(parent_node.element) : _this.element;\n+ $el.addClass("jqtree-loading");\n+ _this._notifyLoading(true, parent_node, $el);\n+ };\n+ var removeLoadingClass = function () {\n+ if ($el) {\n+ $el.removeClass("jqtree-loading");\n+ _this._notifyLoading(false, parent_node, $el);\n+ }\n+ };\n+ var parseUrlInfo = function () {\n+ if ($.type(url_info) === "string") {\n+ return { url: url_info };\n+ }\n+ if (!url_info.method) {\n+ url_info.method = "get";\n+ }\n+ return url_info;\n+ };\n+ var handeLoadData = function (data) {\n+ removeLoadingClass();\n+ _this._loadData(data, parent_node);\n+ if (on_finished && $.isFunction(on_finished)) {\n+ on_finished();\n+ }\n+ };\n+ var getDataFromResponse = function (response) { return ($.isArray(response) || typeof response === "object"\n+ ? response\n+ : response != null ? $.parseJSON(response) : []); };\n+ var filterData = function (data) { return (_this.options.dataFilter ? _this.options.dataFilter(data) : data); };\n+ var handleSuccess = function (response) {\n+ var data = filterData(getDataFromResponse(response));\n+ handeLoadData(data);\n+ };\n+ var handleError = function (response) {\n+ removeLoadingClass();\n+ if (_this.options.onLoadFailed) {\n+ _this.options.onLoadFailed(response);\n+ }\n+ };\n+ var loadDataFromUrlInfo = function () {\n+ var _url_info = parseUrlInfo();\n+ $.ajax($.extend({}, _url_info, {\n+ method: url_info.method != null ? url_info.method.toUpperCase() : "GET",\n+ cache: false,\n+ dataType: "json",\n+ success: handleSuccess,\n+ error: handleError\n+ }));\n+ };\n+ if (!url_info_param) {\n+ // Generate url for node\n+ url_info = this._getDataUrlInfo(parent_node);\n+ }\n+ addLoadingClass();\n+ if (!url_info) {\n+ removeLoadingClass();\n+ return;\n+ }\n+ else if ($.isArray(url_info)) {\n+ handeLoadData(url_info);\n+ return;\n+ }\n+ else {\n+ loadDataFromUrlInfo();\n+ return;\n+ }\n+ };\n+ JqTreeWidget.prototype._loadFolderOnDemand = function (node, slide, on_finished) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ node.is_loading = true;\n+ this._loadDataFromUrl(null, node, function () {\n+ _this._openNode(node, slide, on_finished);\n+ });\n+ };\n+ return JqTreeWidget;\n+}(mouse_widget_1["default"]));\n+JqTreeWidget.defaults = {\n+ autoOpen: false,\n+ saveState: false,\n+ dragAndDrop: false,\n+ selectable: true,\n+ useContextMenu: true,\n+ onCanSelectNode: null,\n+ onSetStateFromStorage: null,\n+ onGetStateFromStorage: null,\n+ onCreateLi: null,\n+ onIsMoveHandle: null,\n+ // Can this node be moved?\n+ onCanMove: null,\n+ // Can this node be moved to this position? function(moved_node, target_node, position)\n+ onCanMoveTo: null,\n+ onLoadFailed: null,\n+ autoEscape: true,\n+ dataUrl: null,\n+ // The symbol to use for a closed node - \xe2\x96\xba BLACK RIGHT-POINTING POINTER\n+ // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n+ closedIcon: null,\n+ // The symbol to use for an open node - \xe2\x96\xbc BLACK DOWN-POINTING TRIANGLE\n+ // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n+ openedIcon: "▼",\n+ slide: true,\n+ nodeClass: node_1.Node,\n+ dataFilter: null,\n+ keyboardSupport: true,\n+ openFolderDelay: 500,\n+ rtl: false,\n+ onDragMove: null,\n+ onDragStop: null,\n+ buttonLeft: true,\n+ onLoading: null\n+};\n+simple_widget_1["default"].register(JqTreeWidget, "tree");\n \n- Node.prototype.hasChildren = function() {\n- return this.children.length !== 0;\n- };\n \n- Node.prototype.isFolder = function() {\n- return this.hasChildren() || this.load_on_demand;\n- };\n+/***/ }),\n+/* 4 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n \n- /*\n- Iterate over all the nodes in the tree.\n- \n- Calls callback with (node, level).\n- \n- The callback must return true to continue the iteration on current node.\n- \n- tree.iterate(\n- function(node, level) {\n- console.log(node.name);\n- \n- // stop iteration after level 2\n- return (level <= 2);\n- }\n- );\n- */\n \n- Node.prototype.iterate = function(callback) {\n- var _iterate;\n- _iterate = function(node, level) {\n- var child, j, len, ref, result;\n- if (node.children) {\n- ref = node.children;\n- for (j = 0, len = ref.length; j < len; j++) {\n- child = ref[j];\n- result = callback(child, level);\n- if (result && child.hasChildren()) {\n- _iterate(child, level + 1);\n- }\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+exports.__esModule = true;\n+var node_1 = __webpack_require__(0);\n+var util_1 = __webpack_require__(1);\n+var DragAndDropHandler = (function () {\n+ function DragAndDropHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.hovered_area = null;\n+ this.$ghost = null;\n+ this.hit_areas = [];\n+ this.is_dragging = false;\n+ this.current_item = null;\n+ }\n+ DragAndDropHandler.prototype.mouseCapture = function (position_info) {\n+ var $element = $(position_info.target);\n+ if (!this.mustCaptureElement($element)) {\n+ return null;\n }\n- return null;\n- }\n+ if (this.tree_widget.options.onIsMoveHandle && !this.tree_widget.options.onIsMoveHandle($element)) {\n+ return null;\n+ }\n+ var node_element = this.tree_widget._getNodeElement($element);\n+ if (node_element && this.tree_widget.options.onCanMove) {\n+ if (!this.tree_widget.options.onCanMove(node_element.node)) {\n+ node_element = null;\n+ }\n+ }\n+ this.current_item = node_element;\n+ return (this.current_item != null);\n };\n- _iterate(this, 0);\n- return null;\n- };\n-\n-\n- /*\n- Move node relative to another node.\n- \n- Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n- \n- // move node1 after node2\n- tree.moveNode(node1, node2, Position.AFTER);\n- */\n-\n- Node.prototype.moveNode = function(moved_node, target_node, position) {\n- if (moved_node.isParentOf(target_node)) {\n- return;\n- }\n- moved_node.parent._removeChild(moved_node);\n- if (position === Position.AFTER) {\n- return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1);\n- } else if (position === Position.BEFORE) {\n- return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node));\n- } else if (position === Position.INSIDE) {\n- return target_node.addChildAtPosition(moved_node, 0);\n- }\n- };\n-\n-\n- /*\n- Get the tree as data.\n- */\n-\n- Node.prototype.getData = function(include_parent) {\n- var getDataFromNodes;\n- if (include_parent == null) {\n- include_parent = false;\n- }\n- getDataFromNodes = function(nodes) {\n- var data, j, k, len, node, tmp_node, v;\n- data = [];\n- for (j = 0, len = nodes.length; j < len; j++) {\n- node = nodes[j];\n- tmp_node = {};\n- for (k in node) {\n- v = node[k];\n- if ((k !== \'parent\' && k !== \'children\' && k !== \'element\' && k !== \'tree\') && Object.prototype.hasOwnProperty.call(node, k)) {\n- tmp_node[k] = v;\n- }\n+ DragAndDropHandler.prototype.generateHitAreas = function () {\n+ if (!this.current_item) {\n+ this.hit_areas = [];\n }\n- if (node.hasChildren()) {\n- tmp_node.children = getDataFromNodes(node.children);\n+ else {\n+ var hit_areas_generator = new HitAreasGenerator(this.tree_widget.tree, this.current_item.node, this.getTreeDimensions().bottom);\n+ this.hit_areas = hit_areas_generator.generate();\n }\n- data.push(tmp_node);\n- }\n- return data;\n };\n- if (include_parent) {\n- return getDataFromNodes([this]);\n- } else {\n- return getDataFromNodes(this.children);\n- }\n- };\n-\n- Node.prototype.getNodeByName = function(name) {\n- var result;\n- result = null;\n- this.iterate(function(node) {\n- if (node.name === name) {\n- result = node;\n+ DragAndDropHandler.prototype.mouseStart = function (position_info) {\n+ if (!this.current_item) {\n+ return false;\n+ }\n+ else {\n+ this.refresh();\n+ var offset = $(position_info.target).offset();\n+ var node = this.current_item.node;\n+ var node_name = this.tree_widget.options.autoEscape ? util_1.html_escape(node.name) : node.name;\n+ this.drag_element = new DragElement(node_name, position_info.page_x - offset.left, position_info.page_y - offset.top, this.tree_widget.element);\n+ this.is_dragging = true;\n+ this.current_item.$element.addClass("jqtree-moving");\n+ return true;\n+ }\n+ };\n+ DragAndDropHandler.prototype.mouseDrag = function (position_info) {\n+ if (!this.current_item || !this.drag_element) {\n+ return false;\n+ }\n+ else {\n+ this.drag_element.move(position_info.page_x, position_info.page_y);\n+ var area = this.findHoveredArea(position_info.page_x, position_info.page_y);\n+ var can_move_to = this.canMoveToArea(area);\n+ if (can_move_to && area) {\n+ if (!area.node.isFolder()) {\n+ this.stopOpenFolderTimer();\n+ }\n+ if (this.hovered_area !== area) {\n+ this.hovered_area = area;\n+ // If this is a closed folder, start timer to open it\n+ if (this.mustOpenFolderTimer(area)) {\n+ this.startOpenFolderTimer(area.node);\n+ }\n+ else {\n+ this.stopOpenFolderTimer();\n+ }\n+ this.updateDropHint();\n+ }\n+ }\n+ else {\n+ this.removeHover();\n+ this.removeDropHint();\n+ this.stopOpenFolderTimer();\n+ }\n+ if (!area) {\n+ if (this.tree_widget.options.onDragMove) {\n+ this.tree_widget.options.onDragMove(this.current_item.node, position_info.original_event);\n+ }\n+ }\n+ return true;\n+ }\n+ };\n+ DragAndDropHandler.prototype.mouseStop = function (position_info) {\n+ this.moveItem(position_info);\n+ this.clear();\n+ this.removeHover();\n+ this.removeDropHint();\n+ this.removeHitAreas();\n+ var current_item = this.current_item;\n+ if (this.current_item) {\n+ this.current_item.$element.removeClass("jqtree-moving");\n+ this.current_item = null;\n+ }\n+ this.is_dragging = false;\n+ if (!this.hovered_area && current_item) {\n+ if (this.tree_widget.options.onDragStop) {\n+ this.tree_widget.options.onDragStop(current_item.node, position_info.original_event);\n+ }\n+ }\n return false;\n- } else {\n- return true;\n- }\n- });\n- return result;\n- };\n-\n- Node.prototype.addAfter = function(node_info) {\n- var child_index, node;\n- if (!this.parent) {\n- return null;\n- } else {\n- node = new this.tree.node_class(node_info);\n- child_index = this.parent.getChildIndex(this);\n- this.parent.addChildAtPosition(node, child_index + 1);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- }\n- };\n-\n- Node.prototype.addBefore = function(node_info) {\n- var child_index, node;\n- if (!this.parent) {\n- return null;\n- } else {\n- node = new this.tree.node_class(node_info);\n- child_index = this.parent.getChildIndex(this);\n- this.parent.addChildAtPosition(node, child_index);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- }\n- };\n-\n- Node.prototype.addParent = function(node_info) {\n- var child, j, len, new_parent, original_parent, ref;\n- if (!this.parent) {\n- return null;\n- } else {\n- new_parent = new this.tree.node_class(node_info);\n- new_parent._setParent(this.tree);\n- original_parent = this.parent;\n- ref = original_parent.children;\n- for (j = 0, len = ref.length; j < len; j++) {\n- child = ref[j];\n- new_parent.addChild(child);\n- }\n- original_parent.children = [];\n- original_parent.addChild(new_parent);\n- return new_parent;\n- }\n- };\n-\n- Node.prototype.remove = function() {\n- if (this.parent) {\n- this.parent.removeChild(this);\n- return this.parent = null;\n- }\n- };\n-\n- Node.prototype.append = function(node_info) {\n- var node;\n- node = new this.tree.node_class(node_info);\n- this.addChild(node);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- };\n-\n- Node.prototype.prepend = function(node_info) {\n- var node;\n- node = new this.tree.node_class(node_info);\n- this.addChildAtPosition(node, 0);\n- if (typeof node_info === \'object\' && node_info.children && node_info.children.length) {\n- node.loadFromData(node_info.children);\n- }\n- return node;\n- };\n-\n- Node.prototype.isParentOf = function(node) {\n- var parent;\n- parent = node.parent;\n- while (parent) {\n- if (parent === this) {\n- return true;\n- }\n- parent = parent.parent;\n- }\n- return false;\n- };\n-\n- Node.prototype.getLevel = function() {\n- var level, node;\n- level = 0;\n- node = this;\n- while (node.parent) {\n- level += 1;\n- node = node.parent;\n- }\n- return level;\n- };\n-\n- Node.prototype.getNodeById = function(node_id) {\n- return this.id_mapping[node_id];\n- };\n-\n- Node.prototype.addNodeToIndex = function(node) {\n- if (node.id != null) {\n- return this.id_mapping[node.id] = node;\n- }\n- };\n-\n- Node.prototype.removeNodeFromIndex = function(node) {\n- if (node.id != null) {\n- return delete this.id_mapping[node.id];\n- }\n- };\n-\n- Node.prototype.removeChildren = function() {\n- this.iterate((function(_this) {\n- return function(child) {\n- _this.tree.removeNodeFromIndex(child);\n- return true;\n- };\n- })(this));\n- return this.children = [];\n- };\n-\n- Node.prototype.getPreviousSibling = function() {\n- var previous_index;\n- if (!this.parent) {\n- return null;\n- } else {\n- previous_index = this.parent.getChildIndex(this) - 1;\n- if (previous_index >= 0) {\n- return this.parent.children[previous_index];\n- } else {\n- return null;\n- }\n- }\n- };\n-\n- Node.prototype.getNextSibling = function() {\n- var next_index;\n- if (!this.parent) {\n- return null;\n- } else {\n- next_index = this.parent.getChildIndex(this) + 1;\n- if (next_index < this.parent.children.length) {\n- return this.parent.children[next_index];\n- } else {\n- return null;\n- }\n- }\n- };\n-\n- Node.prototype.getNodesByProperty = function(key, value) {\n- return this.filter(function(node) {\n- return node[key] === value;\n- });\n- };\n-\n- Node.prototype.filter = function(f) {\n- var result;\n- result = [];\n- this.iterate(function(node) {\n- if (f(node)) {\n- result.push(node);\n- }\n- return true;\n- });\n- return result;\n- };\n-\n- Node.prototype.getNextNode = function(include_children) {\n- var next_sibling;\n- if (include_children == null) {\n- include_children = true;\n- }\n- if (include_children && this.hasChildren() && this.is_open) {\n- return this.children[0];\n- } else {\n- if (!this.parent) {\n+ };\n+ DragAndDropHandler.prototype.refresh = function () {\n+ this.removeHitAreas();\n+ if (this.current_item) {\n+ this.generateHitAreas();\n+ this.current_item = this.tree_widget._getNodeElementForNode(this.current_item.node);\n+ if (this.is_dragging) {\n+ this.current_item.$element.addClass("jqtree-moving");\n+ }\n+ }\n+ };\n+ DragAndDropHandler.prototype.mustCaptureElement = function ($element) {\n+ return !$element.is("input,select,textarea");\n+ };\n+ DragAndDropHandler.prototype.canMoveToArea = function (area) {\n+ if (!area || !this.current_item) {\n+ return false;\n+ }\n+ else if (this.tree_widget.options.onCanMoveTo) {\n+ var position_name = node_1.getPositionName(area.position);\n+ return this.tree_widget.options.onCanMoveTo(this.current_item.node, area.node, position_name);\n+ }\n+ else {\n+ return true;\n+ }\n+ };\n+ DragAndDropHandler.prototype.removeHitAreas = function () {\n+ this.hit_areas = [];\n+ };\n+ DragAndDropHandler.prototype.clear = function () {\n+ if (this.drag_element) {\n+ this.drag_element.remove();\n+ this.drag_element = null;\n+ }\n+ };\n+ DragAndDropHandler.prototype.removeDropHint = function () {\n+ if (this.previous_ghost) {\n+ this.previous_ghost.remove();\n+ }\n+ };\n+ DragAndDropHandler.prototype.removeHover = function () {\n+ this.hovered_area = null;\n+ };\n+ DragAndDropHandler.prototype.findHoveredArea = function (x, y) {\n+ var dimensions = this.getTreeDimensions();\n+ if (x < dimensions.left ||\n+ y < dimensions.top ||\n+ x > dimensions.right ||\n+ y > dimensions.bottom) {\n+ return null;\n+ }\n+ var low = 0;\n+ var high = this.hit_areas.length;\n+ while (low < high) {\n+ // tslint:disable-next-line: no-bitwise\n+ var mid = (low + high) >> 1;\n+ var area = this.hit_areas[mid];\n+ if (y < area.top) {\n+ high = mid;\n+ }\n+ else if (y > area.bottom) {\n+ low = mid + 1;\n+ }\n+ else {\n+ return area;\n+ }\n+ }\n return null;\n- } else {\n- next_sibling = this.getNextSibling();\n- if (next_sibling) {\n- return next_sibling;\n- } else {\n- return this.parent.getNextNode(false);\n+ };\n+ DragAndDropHandler.prototype.mustOpenFolderTimer = function (area) {\n+ var node = area.node;\n+ return (node.isFolder() &&\n+ !node.is_open &&\n+ area.position === node_1.Position.Inside);\n+ };\n+ DragAndDropHandler.prototype.updateDropHint = function () {\n+ if (!this.hovered_area) {\n+ return;\n }\n- }\n- }\n- };\n-\n- Node.prototype.getPreviousNode = function() {\n- var previous_sibling;\n- if (!this.parent) {\n- return null;\n- } else {\n- previous_sibling = this.getPreviousSibling();\n- if (previous_sibling) {\n- if (!previous_sibling.hasChildren() || !previous_sibling.is_open) {\n- return previous_sibling;\n- } else {\n- return previous_sibling.getLastChild();\n+ // remove previous drop hint\n+ this.removeDropHint();\n+ // add new drop hint\n+ var node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node);\n+ this.previous_ghost = node_element.addDropHint(this.hovered_area.position);\n+ };\n+ DragAndDropHandler.prototype.startOpenFolderTimer = function (folder) {\n+ var _this = this;\n+ var openFolder = function () {\n+ _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function () {\n+ _this.refresh();\n+ _this.updateDropHint();\n+ });\n+ };\n+ this.stopOpenFolderTimer();\n+ this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay);\n+ };\n+ DragAndDropHandler.prototype.stopOpenFolderTimer = function () {\n+ if (this.open_folder_timer) {\n+ clearTimeout(this.open_folder_timer);\n+ this.open_folder_timer = null;\n+ }\n+ };\n+ DragAndDropHandler.prototype.moveItem = function (position_info) {\n+ var _this = this;\n+ if (this.current_item &&\n+ this.hovered_area &&\n+ this.hovered_area.position !== node_1.Position.None &&\n+ this.canMoveToArea(this.hovered_area)) {\n+ var moved_node_1 = this.current_item.node;\n+ var target_node_1 = this.hovered_area.node;\n+ var position_1 = this.hovered_area.position;\n+ var previous_parent = moved_node_1.parent;\n+ if (position_1 === node_1.Position.Inside) {\n+ this.hovered_area.node.is_open = true;\n+ }\n+ var doMove = function () {\n+ _this.tree_widget.tree.moveNode(moved_node_1, target_node_1, position_1);\n+ _this.tree_widget.element.empty();\n+ _this.tree_widget._refreshElements(null);\n+ };\n+ var event_1 = this.tree_widget._triggerEvent("tree.move", {\n+ move_info: {\n+ moved_node: moved_node_1,\n+ target_node: target_node_1,\n+ position: node_1.getPositionName(position_1),\n+ previous_parent: previous_parent,\n+ do_move: doMove,\n+ original_event: position_info.original_event\n+ }\n+ });\n+ if (!event_1.isDefaultPrevented()) {\n+ doMove();\n+ }\n }\n- } else {\n- return this.getParent();\n- }\n- }\n- };\n-\n- Node.prototype.getParent = function() {\n- if (!this.parent) {\n- return null;\n- } else if (!this.parent.parent) {\n- return null;\n- } else {\n- return this.parent;\n- }\n- };\n-\n- Node.prototype.getLastChild = function() {\n- var last_child;\n- if (!this.hasChildren()) {\n- return null;\n- } else {\n- last_child = this.children[this.children.length - 1];\n- if (!last_child.hasChildren() || !last_child.is_open) {\n- return last_child;\n- } else {\n- return last_child.getLastChild();\n- }\n- }\n- };\n-\n- return Node;\n-\n-})();\n-\n-module.exports = {\n- Node: Node,\n- Position: Position\n-};\n-\n-},{}],6:[function(require,module,exports){\n-var $, BorderDropHint, FolderElement, GhostDropHint, NodeElement, Position, node,\n- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n- hasProp = {}.hasOwnProperty;\n-\n-node = require(\'./node\');\n-\n-Position = node.Position;\n-\n-$ = jQuery;\n-\n-NodeElement = (function() {\n- function NodeElement(node, tree_widget) {\n- this.init(node, tree_widget);\n- }\n-\n- NodeElement.prototype.init = function(node, tree_widget) {\n- this.node = node;\n- this.tree_widget = tree_widget;\n- if (!node.element) {\n- node.element = this.tree_widget.element;\n- }\n- return this.$element = $(node.element);\n- };\n-\n- NodeElement.prototype.getUl = function() {\n- return this.$element.children(\'ul:first\');\n- };\n-\n- NodeElement.prototype.getSpan = function() {\n- return this.$element.children(\'.jqtree-element\').find(\'span.jqtree-title\');\n- };\n-\n- NodeElement.prototype.getLi = function() {\n- return this.$element;\n- };\n-\n- NodeElement.prototype.addDropHint = function(position) {\n- if (position === Position.INSIDE) {\n- return new BorderDropHint(this.$element);\n- } else {\n- return new GhostDropHint(this.node, this.$element, position);\n- }\n- };\n-\n- NodeElement.prototype.select = function() {\n- var $li, $span;\n- $li = this.getLi();\n- $li.addClass(\'jqtree-selected\');\n- $li.attr(\'aria-selected\', \'true\');\n- $span = this.getSpan();\n- return $span.attr(\'tabindex\', 0);\n- };\n-\n- NodeElement.prototype.deselect = function() {\n- var $li, $span;\n- $li = this.getLi();\n- $li.removeClass(\'jqtree-selected\');\n- $li.attr(\'aria-selected\', \'false\');\n- $span = this.getSpan();\n- return $span.attr(\'tabindex\', -1);\n- };\n-\n- return NodeElement;\n-\n-})();\n-\n-FolderElement = (function(superClass) {\n- extend(FolderElement, superClass);\n-\n- function FolderElement() {\n- return FolderElement.__super__.constructor.apply(this, arguments);\n- }\n-\n- FolderElement.prototype.open = function(on_finished, slide) {\n- var $button, doOpen;\n- if (slide == null) {\n- slide = true;\n- }\n- if (!this.node.is_open) {\n- this.node.is_open = true;\n- $button = this.getButton();\n- $button.removeClass(\'jqtree-closed\');\n- $button.html(\'\');\n- $button.append(this.tree_widget.renderer.opened_icon_element.cloneNode(false));\n- doOpen = (function(_this) {\n- return function() {\n- var $li, $span;\n- $li = _this.getLi();\n- $li.removeClass(\'jqtree-closed\');\n- $span = _this.getSpan();\n- $span.attr(\'aria-expanded\', \'true\');\n- if (on_finished) {\n- on_finished();\n- }\n- return _this.tree_widget._triggerEvent(\'tree.open\', {\n- node: _this.node\n- });\n+ };\n+ DragAndDropHandler.prototype.getTreeDimensions = function () {\n+ // Return the dimensions of the tree. Add a margin to the bottom to allow\n+ // for some to drag-and-drop the last element.\n+ var offset = this.tree_widget.element.offset();\n+ return {\n+ left: offset.left,\n+ top: offset.top,\n+ right: offset.left + this.tree_widget.element.width(),\n+ bottom: offset.top + this.tree_widget.element.height() + 16\n };\n- })(this);\n- if (slide) {\n- return this.getUl().slideDown(\'fast\', doOpen);\n- } else {\n- this.getUl().show();\n- return doOpen();\n- }\n- }\n- };\n-\n- FolderElement.prototype.close = function(slide) {\n- var $button, doClose;\n- if (slide == null) {\n- slide = true;\n- }\n- if (this.node.is_open) {\n- this.node.is_open = false;\n- $button = this.getButton();\n- $button.addClass(\'jqtree-closed\');\n- $button.html(\'\');\n- $button.append(this.tree_widget.renderer.closed_icon_element.cloneNode(false));\n- doClose = (function(_this) {\n- return function() {\n- var $li, $span;\n- $li = _this.getLi();\n- $li.addClass(\'jqtree-closed\');\n- $span = _this.getSpan();\n- $span.attr(\'aria-expanded\', \'false\');\n- return _this.tree_widget._triggerEvent(\'tree.close\', {\n- node: _this.node\n- });\n+ };\n+ return DragAndDropHandler;\n+}());\n+exports.DragAndDropHandler = DragAndDropHandler;\n+var VisibleNodeIterator = (function () {\n+ function VisibleNodeIterator(tree) {\n+ this.tree = tree;\n+ }\n+ VisibleNodeIterator.prototype.iterate = function () {\n+ var _this = this;\n+ var is_first_node = true;\n+ var _iterateNode = function (node, next_node) {\n+ var must_iterate_inside = ((node.is_open || !node.element) && node.hasChildren());\n+ var $element = null;\n+ if (node.element) {\n+ $element = $(node.element);\n+ if (!$element.is(":visible")) {\n+ return;\n+ }\n+ if (is_first_node) {\n+ _this.handleFirstNode(node);\n+ is_first_node = false;\n+ }\n+ if (!node.hasChildren()) {\n+ _this.handleNode(node, next_node, $element);\n+ }\n+ else if (node.is_open) {\n+ if (!_this.handleOpenFolder(node, $element)) {\n+ must_iterate_inside = false;\n+ }\n+ }\n+ else {\n+ _this.handleClosedFolder(node, next_node, $element);\n+ }\n+ }\n+ if (must_iterate_inside) {\n+ var children_length_1 = node.children.length;\n+ node.children.forEach(function (_, i) {\n+ if (i === (children_length_1 - 1)) {\n+ _iterateNode(node.children[i], null);\n+ }\n+ else {\n+ _iterateNode(node.children[i], node.children[i + 1]);\n+ }\n+ });\n+ if (node.is_open && $element) {\n+ _this.handleAfterOpenFolder(node, next_node);\n+ }\n+ }\n };\n- })(this);\n- if (slide) {\n- return this.getUl().slideUp(\'fast\', doClose);\n- } else {\n- this.getUl().hide();\n- return doClose();\n- }\n- }\n- };\n-\n- FolderElement.prototype.getButton = function() {\n- return this.$element.children(\'.jqtree-element\').find(\'a.jqtree-toggler\');\n- };\n-\n- FolderElement.prototype.addDropHint = function(position) {\n- if (!this.node.is_open && position === Position.INSIDE) {\n- return new BorderDropHint(this.$element);\n- } else {\n- return new GhostDropHint(this.node, this.$element, position);\n- }\n- };\n-\n- return FolderElement;\n-\n-})(NodeElement);\n-\n-BorderDropHint = (function() {\n- function BorderDropHint($element) {\n- var $div, width;\n- $div = $element.children(\'.jqtree-element\');\n- width = $element.width() - 4;\n- this.$hint = $(\'\');\n- $div.append(this.$hint);\n- this.$hint.css({\n- width: width,\n- height: $div.outerHeight() - 4\n- });\n- }\n-\n- BorderDropHint.prototype.remove = function() {\n- return this.$hint.remove();\n- };\n-\n- return BorderDropHint;\n-\n-})();\n-\n-GhostDropHint = (function() {\n- function GhostDropHint(node, $element, position) {\n- this.$element = $element;\n- this.node = node;\n- this.$ghost = $(\'
  • \');\n- if (position === Position.AFTER) {\n- this.moveAfter();\n- } else if (position === Position.BEFORE) {\n- this.moveBefore();\n- } else if (position === Position.INSIDE) {\n- if (node.isFolder() && node.is_open) {\n- this.moveInsideOpenFolder();\n- } else {\n- this.moveInside();\n- }\n- }\n- }\n-\n- GhostDropHint.prototype.remove = function() {\n- return this.$ghost.remove();\n- };\n-\n- GhostDropHint.prototype.moveAfter = function() {\n- return this.$element.after(this.$ghost);\n- };\n-\n- GhostDropHint.prototype.moveBefore = function() {\n- return this.$element.before(this.$ghost);\n- };\n-\n- GhostDropHint.prototype.moveInsideOpenFolder = function() {\n- return $(this.node.children[0].element).before(this.$ghost);\n- };\n-\n- GhostDropHint.prototype.moveInside = function() {\n- this.$element.after(this.$ghost);\n- return this.$ghost.addClass(\'jqtree-inside\');\n- };\n-\n- return GhostDropHint;\n-\n-})();\n-\n-module.exports = {\n- BorderDropHint: BorderDropHint,\n- FolderElement: FolderElement,\n- GhostDropHint: GhostDropHint,\n- NodeElement: NodeElement\n-};\n-\n-},{"./node":5}],7:[function(require,module,exports){\n-var $, SaveStateHandler, indexOf, isInt, util;\n-\n-util = require(\'./util\');\n-\n-indexOf = util.indexOf;\n-\n-isInt = util.isInt;\n-\n-$ = jQuery;\n-\n-SaveStateHandler = (function() {\n- function SaveStateHandler(tree_widget) {\n- this.tree_widget = tree_widget;\n- }\n-\n- SaveStateHandler.prototype.saveState = function() {\n- var state;\n- state = JSON.stringify(this.getState());\n- if (this.tree_widget.options.onSetStateFromStorage) {\n- return this.tree_widget.options.onSetStateFromStorage(state);\n- } else if (this.supportsLocalStorage()) {\n- return localStorage.setItem(this.getCookieName(), state);\n- } else if ($.cookie) {\n- $.cookie.raw = true;\n- return $.cookie(this.getCookieName(), state, {\n- path: \'/\'\n- });\n- }\n- };\n-\n- SaveStateHandler.prototype.getStateFromStorage = function() {\n- var json_data;\n- json_data = this._loadFromStorage();\n- if (json_data) {\n- return this._parseState(json_data);\n- } else {\n- return null;\n- }\n- };\n-\n- SaveStateHandler.prototype._parseState = function(json_data) {\n- var state;\n- state = $.parseJSON(json_data);\n- if (state && state.selected_node && isInt(state.selected_node)) {\n- state.selected_node = [state.selected_node];\n- }\n- return state;\n- };\n-\n- SaveStateHandler.prototype._loadFromStorage = function() {\n- if (this.tree_widget.options.onGetStateFromStorage) {\n- return this.tree_widget.options.onGetStateFromStorage();\n- } else if (this.supportsLocalStorage()) {\n- return localStorage.getItem(this.getCookieName());\n- } else if ($.cookie) {\n- $.cookie.raw = true;\n- return $.cookie(this.getCookieName());\n- } else {\n- return null;\n- }\n- };\n-\n- SaveStateHandler.prototype.getState = function() {\n- var getOpenNodeIds, getSelectedNodeIds;\n- getOpenNodeIds = (function(_this) {\n- return function() {\n- var open_nodes;\n- open_nodes = [];\n- _this.tree_widget.tree.iterate(function(node) {\n- if (node.is_open && node.id && node.hasChildren()) {\n- open_nodes.push(node.id);\n- }\n- return true;\n- });\n- return open_nodes;\n- };\n- })(this);\n- getSelectedNodeIds = (function(_this) {\n- return function() {\n- var n;\n- return (function() {\n- var i, len, ref, results;\n- ref = this.tree_widget.getSelectedNodes();\n- results = [];\n- for (i = 0, len = ref.length; i < len; i++) {\n- n = ref[i];\n- results.push(n.id);\n- }\n- return results;\n- }).call(_this);\n- };\n- })(this);\n- return {\n- open_nodes: getOpenNodeIds(),\n- selected_node: getSelectedNodeIds()\n+ _iterateNode(this.tree, null);\n+ };\n+ return VisibleNodeIterator;\n+}());\n+var HitAreasGenerator = (function (_super) {\n+ __extends(HitAreasGenerator, _super);\n+ function HitAreasGenerator(tree, current_node, tree_bottom) {\n+ var _this = _super.call(this, tree) || this;\n+ _this.current_node = current_node;\n+ _this.tree_bottom = tree_bottom;\n+ return _this;\n+ }\n+ HitAreasGenerator.prototype.generate = function () {\n+ this.positions = [];\n+ this.last_top = 0;\n+ this.iterate();\n+ return this.generateHitAreas(this.positions);\n+ };\n+ HitAreasGenerator.prototype.generateHitAreas = function (positions) {\n+ var previous_top = -1;\n+ var group = [];\n+ var hit_areas = [];\n+ for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n+ var position = positions_1[_i];\n+ if (position.top !== previous_top && group.length) {\n+ if (group.length) {\n+ this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top);\n+ }\n+ previous_top = position.top;\n+ group = [];\n+ }\n+ group.push(position);\n+ }\n+ this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom);\n+ return hit_areas;\n+ };\n+ HitAreasGenerator.prototype.handleOpenFolder = function (node, $element) {\n+ if (node === this.current_node) {\n+ // Cannot move inside current item\n+ // Stop iterating\n+ return false;\n+ }\n+ // Cannot move before current item\n+ if (node.children[0] !== this.current_node) {\n+ this.addPosition(node, node_1.Position.Inside, this.getTop($element));\n+ }\n+ // Continue iterating\n+ return true;\n };\n- };\n-\n- SaveStateHandler.prototype.setInitialState = function(state) {\n- var must_load_on_demand;\n- if (!state) {\n- return false;\n- } else {\n- must_load_on_demand = this._openInitialNodes(state.open_nodes);\n- this._selectInitialNodes(state.selected_node);\n- return must_load_on_demand;\n- }\n- };\n-\n- SaveStateHandler.prototype._openInitialNodes = function(node_ids) {\n- var i, len, must_load_on_demand, node, node_id;\n- must_load_on_demand = false;\n- for (i = 0, len = node_ids.length; i < len; i++) {\n- node_id = node_ids[i];\n- node = this.tree_widget.getNodeById(node_id);\n- if (node) {\n- if (!node.load_on_demand) {\n- node.is_open = true;\n- } else {\n- must_load_on_demand = true;\n+ HitAreasGenerator.prototype.handleClosedFolder = function (node, next_node, $element) {\n+ var top = this.getTop($element);\n+ if (node === this.current_node) {\n+ // Cannot move after current item\n+ this.addPosition(node, node_1.Position.None, top);\n }\n- }\n- }\n- return must_load_on_demand;\n- };\n-\n- SaveStateHandler.prototype._selectInitialNodes = function(node_ids) {\n- var i, len, node, node_id, select_count;\n- select_count = 0;\n- for (i = 0, len = node_ids.length; i < len; i++) {\n- node_id = node_ids[i];\n- node = this.tree_widget.getNodeById(node_id);\n- if (node) {\n- select_count += 1;\n- this.tree_widget.select_node_handler.addToSelection(node);\n- }\n- }\n- return select_count !== 0;\n- };\n-\n- SaveStateHandler.prototype.setInitialStateOnDemand = function(state, cb_finished) {\n- if (state) {\n- return this._setInitialStateOnDemand(state.open_nodes, state.selected_node, cb_finished);\n- } else {\n- return cb_finished();\n- }\n- };\n-\n- SaveStateHandler.prototype._setInitialStateOnDemand = function(node_ids, selected_nodes, cb_finished) {\n- var loadAndOpenNode, loading_count, openNodes;\n- loading_count = 0;\n- openNodes = (function(_this) {\n- return function() {\n- var i, len, new_nodes_ids, node, node_id;\n- new_nodes_ids = [];\n- for (i = 0, len = node_ids.length; i < len; i++) {\n- node_id = node_ids[i];\n- node = _this.tree_widget.getNodeById(node_id);\n- if (!node) {\n- new_nodes_ids.push(node_id);\n- } else {\n- if (!node.is_loading) {\n- if (node.load_on_demand) {\n- loadAndOpenNode(node);\n- } else {\n- _this.tree_widget._openNode(node, false);\n- }\n+ else {\n+ this.addPosition(node, node_1.Position.Inside, top);\n+ // Cannot move before current item\n+ if (next_node !== this.current_node) {\n+ this.addPosition(node, node_1.Position.After, top);\n }\n- }\n }\n- node_ids = new_nodes_ids;\n- if (_this._selectInitialNodes(selected_nodes)) {\n- _this.tree_widget._refreshElements();\n+ };\n+ HitAreasGenerator.prototype.handleFirstNode = function (node) {\n+ if (node !== this.current_node) {\n+ this.addPosition(node, node_1.Position.Before, this.getTop($(node.element)));\n }\n- if (loading_count === 0) {\n- return cb_finished();\n+ };\n+ HitAreasGenerator.prototype.handleAfterOpenFolder = function (node, next_node) {\n+ if (node === this.current_node ||\n+ next_node === this.current_node) {\n+ // Cannot move before or after current item\n+ this.addPosition(node, node_1.Position.None, this.last_top);\n }\n- };\n- })(this);\n- loadAndOpenNode = (function(_this) {\n- return function(node) {\n- loading_count += 1;\n- return _this.tree_widget._openNode(node, false, function() {\n- loading_count -= 1;\n- return openNodes();\n- });\n- };\n- })(this);\n- return openNodes();\n- };\n-\n- SaveStateHandler.prototype.getCookieName = function() {\n- if (typeof this.tree_widget.options.saveState === \'string\') {\n- return this.tree_widget.options.saveState;\n- } else {\n- return \'tree\';\n- }\n- };\n-\n- SaveStateHandler.prototype.supportsLocalStorage = function() {\n- var testSupport;\n- testSupport = function() {\n- var error, error1, key;\n- if (typeof localStorage === "undefined" || localStorage === null) {\n- return false;\n- } else {\n- try {\n- key = \'_storage_test\';\n- sessionStorage.setItem(key, true);\n- sessionStorage.removeItem(key);\n- } catch (error1) {\n- error = error1;\n- return false;\n+ else {\n+ this.addPosition(node, node_1.Position.After, this.last_top);\n }\n- return true;\n- }\n };\n- if (this._supportsLocalStorage == null) {\n- this._supportsLocalStorage = testSupport();\n- }\n- return this._supportsLocalStorage;\n- };\n-\n- SaveStateHandler.prototype.getNodeIdToBeSelected = function() {\n- var state;\n- state = this.getStateFromStorage();\n- if (state && state.selected_node) {\n- return state.selected_node[0];\n- } else {\n- return null;\n- }\n- };\n-\n- return SaveStateHandler;\n-\n-})();\n-\n-module.exports = SaveStateHandler;\n-\n-},{"./util":12}],8:[function(require,module,exports){\n-var $, ScrollHandler;\n-\n-$ = jQuery;\n-\n-ScrollHandler = (function() {\n- function ScrollHandler(tree_widget) {\n- this.tree_widget = tree_widget;\n- this.previous_top = -1;\n- this.is_initialized = false;\n- this._initScrollParent();\n- }\n-\n- ScrollHandler.prototype._initScrollParent = function() {\n- var $scroll_parent, getParentWithOverflow, setDocumentAsScrollParent;\n- getParentWithOverflow = (function(_this) {\n- return function() {\n- var css_values, el, hasOverFlow, i, len, ref;\n- css_values = [\'overflow\', \'overflow-y\'];\n- hasOverFlow = function(el) {\n- var css_value, i, len, ref;\n- for (i = 0, len = css_values.length; i < len; i++) {\n- css_value = css_values[i];\n- if ((ref = $.css(el, css_value)) === \'auto\' || ref === \'scroll\') {\n- return true;\n- }\n- }\n- return false;\n- };\n- if (hasOverFlow(_this.tree_widget.$el[0])) {\n- return _this.tree_widget.$el;\n- }\n- ref = _this.tree_widget.$el.parents();\n- for (i = 0, len = ref.length; i < len; i++) {\n- el = ref[i];\n- if (hasOverFlow(el)) {\n- return $(el);\n- }\n+ HitAreasGenerator.prototype.handleNode = function (node, next_node, $element) {\n+ var top = this.getTop($element);\n+ if (node === this.current_node) {\n+ // Cannot move inside current item\n+ this.addPosition(node, node_1.Position.None, top);\n }\n- return null;\n- };\n- })(this);\n- setDocumentAsScrollParent = (function(_this) {\n- return function() {\n- _this.scroll_parent_top = 0;\n- return _this.$scroll_parent = null;\n- };\n- })(this);\n- if (this.tree_widget.$el.css(\'position\') === \'fixed\') {\n- setDocumentAsScrollParent();\n- }\n- $scroll_parent = getParentWithOverflow();\n- if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== \'HTML\') {\n- this.$scroll_parent = $scroll_parent;\n- this.scroll_parent_top = this.$scroll_parent.offset().top;\n- } else {\n- setDocumentAsScrollParent();\n- }\n- return this.is_initialized = true;\n- };\n-\n- ScrollHandler.prototype._ensureInit = function() {\n- if (!this.is_initialized) {\n- return this._initScrollParent();\n- }\n- };\n-\n- ScrollHandler.prototype.checkScrolling = function() {\n- var hovered_area;\n- this._ensureInit();\n- hovered_area = this.tree_widget.dnd_handler.hovered_area;\n- if (hovered_area && hovered_area.top !== this.previous_top) {\n- this.previous_top = hovered_area.top;\n- if (this.$scroll_parent) {\n- return this._handleScrollingWithScrollParent(hovered_area);\n- } else {\n- return this._handleScrollingWithDocument(hovered_area);\n- }\n- }\n- };\n-\n- ScrollHandler.prototype._handleScrollingWithScrollParent = function(area) {\n- var distance_bottom;\n- distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;\n- if (distance_bottom < 20) {\n- this.$scroll_parent[0].scrollTop += 20;\n- this.tree_widget.refreshHitAreas();\n- return this.previous_top = -1;\n- } else if ((area.top - this.scroll_parent_top) < 20) {\n- this.$scroll_parent[0].scrollTop -= 20;\n- this.tree_widget.refreshHitAreas();\n- return this.previous_top = -1;\n- }\n- };\n-\n- ScrollHandler.prototype._handleScrollingWithDocument = function(area) {\n- var distance_top;\n- distance_top = area.top - $(document).scrollTop();\n- if (distance_top < 20) {\n- return $(document).scrollTop($(document).scrollTop() - 20);\n- } else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {\n- return $(document).scrollTop($(document).scrollTop() + 20);\n- }\n- };\n-\n- ScrollHandler.prototype.scrollTo = function(top) {\n- var tree_top;\n- this._ensureInit();\n- if (this.$scroll_parent) {\n- return this.$scroll_parent[0].scrollTop = top;\n- } else {\n- tree_top = this.tree_widget.$el.offset().top;\n- return $(document).scrollTop(top + tree_top);\n- }\n- };\n-\n- ScrollHandler.prototype.isScrolledIntoView = function(element) {\n- var $element, element_bottom, element_top, view_bottom, view_top;\n- this._ensureInit();\n- $element = $(element);\n- if (this.$scroll_parent) {\n- view_top = 0;\n- view_bottom = this.$scroll_parent.height();\n- element_top = $element.offset().top - this.scroll_parent_top;\n- element_bottom = element_top + $element.height();\n- } else {\n- view_top = $(window).scrollTop();\n- view_bottom = view_top + $(window).height();\n- element_top = $element.offset().top;\n- element_bottom = element_top + $element.height();\n- }\n- return (element_bottom <= view_bottom) && (element_top >= view_top);\n- };\n-\n- return ScrollHandler;\n-\n-})();\n+ else {\n+ this.addPosition(node, node_1.Position.Inside, top);\n+ }\n+ if (next_node === this.current_node ||\n+ node === this.current_node) {\n+ // Cannot move before or after current item\n+ this.addPosition(node, node_1.Position.None, top);\n+ }\n+ else {\n+ this.addPosition(node, node_1.Position.After, top);\n+ }\n+ };\n+ HitAreasGenerator.prototype.getTop = function ($element) {\n+ return $element.offset().top;\n+ };\n+ HitAreasGenerator.prototype.addPosition = function (node, position, top) {\n+ var area = {\n+ top: top,\n+ bottom: 0,\n+ node: node,\n+ position: position\n+ };\n+ this.positions.push(area);\n+ this.last_top = top;\n+ };\n+ HitAreasGenerator.prototype.generateHitAreasForGroup = function (hit_areas, positions_in_group, top, bottom) {\n+ // limit positions in group\n+ var position_count = Math.min(positions_in_group.length, 4);\n+ var area_height = Math.round((bottom - top) / position_count);\n+ var area_top = top;\n+ var i = 0;\n+ while (i < position_count) {\n+ var position = positions_in_group[i];\n+ hit_areas.push({\n+ top: area_top,\n+ bottom: area_top + area_height,\n+ node: position.node,\n+ position: position.position\n+ });\n+ area_top += area_height;\n+ i += 1;\n+ }\n+ };\n+ return HitAreasGenerator;\n+}(VisibleNodeIterator));\n+exports.HitAreasGenerator = HitAreasGenerator;\n+var DragElement = (function () {\n+ function DragElement(node_name, offset_x, offset_y, $tree) {\n+ this.offset_x = offset_x;\n+ this.offset_y = offset_y;\n+ this.$element = $("" + node_name + "");\n+ this.$element.css("position", "absolute");\n+ $tree.append(this.$element);\n+ }\n+ DragElement.prototype.move = function (page_x, page_y) {\n+ this.$element.offset({\n+ left: page_x - this.offset_x,\n+ top: page_y - this.offset_y\n+ });\n+ };\n+ DragElement.prototype.remove = function () {\n+ this.$element.remove();\n+ };\n+ return DragElement;\n+}());\n+exports.DragElement = DragElement;\n \n-module.exports = ScrollHandler;\n \n-},{}],9:[function(require,module,exports){\n-var $, SelectNodeHandler;\n+/***/ }),\n+/* 5 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n-$ = jQuery;\n \n-SelectNodeHandler = (function() {\n- function SelectNodeHandler(tree_widget) {\n- this.tree_widget = tree_widget;\n- this.clear();\n- }\n \n- SelectNodeHandler.prototype.getSelectedNode = function() {\n- var selected_nodes;\n- selected_nodes = this.getSelectedNodes();\n- if (selected_nodes.length) {\n- return selected_nodes[0];\n- } else {\n- return false;\n+exports.__esModule = true;\n+var util_1 = __webpack_require__(1);\n+var ElementsRenderer = (function () {\n+ function ElementsRenderer(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon);\n+ this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon);\n }\n- };\n-\n- SelectNodeHandler.prototype.getSelectedNodes = function() {\n- var id, node, selected_nodes;\n- if (this.selected_single_node) {\n- return [this.selected_single_node];\n- } else {\n- selected_nodes = [];\n- for (id in this.selected_nodes) {\n- node = this.tree_widget.getNodeById(id);\n- if (node) {\n- selected_nodes.push(node);\n+ ElementsRenderer.prototype.render = function (from_node) {\n+ if (from_node && from_node.parent) {\n+ this.renderFromNode(from_node);\n }\n- }\n- return selected_nodes;\n- }\n- };\n-\n- SelectNodeHandler.prototype.getSelectedNodesUnder = function(parent) {\n- var id, node, selected_nodes;\n- if (this.selected_single_node) {\n- if (parent.isParentOf(this.selected_single_node)) {\n- return [this.selected_single_node];\n- } else {\n- return [];\n- }\n- } else {\n- selected_nodes = [];\n- for (id in this.selected_nodes) {\n- node = this.tree_widget.getNodeById(id);\n- if (node && parent.isParentOf(node)) {\n- selected_nodes.push(node);\n+ else {\n+ this.renderFromRoot();\n+ }\n+ };\n+ ElementsRenderer.prototype.renderFromRoot = function () {\n+ var $element = this.tree_widget.element;\n+ $element.empty();\n+ this.createDomElements($element[0], this.tree_widget.tree.children, true, 1);\n+ };\n+ ElementsRenderer.prototype.renderFromNode = function (node) {\n+ // remember current li\n+ var $previous_li = $(node.element);\n+ // create element\n+ var li = this.createLi(node, node.getLevel());\n+ this.attachNodeData(node, li);\n+ // add element to dom\n+ $previous_li.after(li);\n+ // remove previous li\n+ $previous_li.remove();\n+ // create children\n+ if (node.children) {\n+ this.createDomElements(li, node.children, false, node.getLevel() + 1);\n+ }\n+ };\n+ ElementsRenderer.prototype.createDomElements = function (element, children, is_root_node, level) {\n+ var ul = this.createUl(is_root_node);\n+ element.appendChild(ul);\n+ for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n+ var child = children_1[_i];\n+ var li = this.createLi(child, level);\n+ ul.appendChild(li);\n+ this.attachNodeData(child, li);\n+ if (child.hasChildren()) {\n+ this.createDomElements(li, child.children, false, level + 1);\n+ }\n+ }\n+ };\n+ ElementsRenderer.prototype.attachNodeData = function (node, li) {\n+ node.element = li;\n+ $(li).data("node", node);\n+ };\n+ ElementsRenderer.prototype.createUl = function (is_root_node) {\n+ var class_string;\n+ var role;\n+ if (!is_root_node) {\n+ class_string = "";\n+ role = "group";\n }\n- }\n- return selected_nodes;\n- }\n- };\n-\n- SelectNodeHandler.prototype.isNodeSelected = function(node) {\n- if (node.id) {\n- return this.selected_nodes[node.id];\n- } else if (this.selected_single_node) {\n- return this.selected_single_node.element === node.element;\n- } else {\n- return false;\n- }\n- };\n-\n- SelectNodeHandler.prototype.clear = function() {\n- this.selected_nodes = {};\n- return this.selected_single_node = null;\n- };\n-\n- SelectNodeHandler.prototype.removeFromSelection = function(node, include_children) {\n- if (include_children == null) {\n- include_children = false;\n- }\n- if (!node.id) {\n- if (this.selected_single_node && node.element === this.selected_single_node.element) {\n- return this.selected_single_node = null;\n- }\n- } else {\n- delete this.selected_nodes[node.id];\n- if (include_children) {\n- return node.iterate((function(_this) {\n- return function(n) {\n- delete _this.selected_nodes[node.id];\n- return true;\n- };\n- })(this));\n- }\n- }\n- };\n-\n- SelectNodeHandler.prototype.addToSelection = function(node) {\n- if (node.id) {\n- return this.selected_nodes[node.id] = true;\n- } else {\n- return this.selected_single_node = node;\n- }\n- };\n-\n- return SelectNodeHandler;\n-\n-})();\n-\n-module.exports = SelectNodeHandler;\n-\n-},{}],10:[function(require,module,exports){\n-\n-/*\n-Copyright 2013 Marco Braak\n-\n-Licensed under the Apache License, Version 2.0 (the "License");\n-you may not use this file except in compliance with the License.\n-You may obtain a copy of the License at\n-\n- http://www.apache.org/licenses/LICENSE-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-var $, SimpleWidget,\n- slice = [].slice;\n-\n-$ = jQuery;\n-\n-SimpleWidget = (function() {\n- SimpleWidget.prototype.defaults = {};\n+ else {\n+ class_string = "jqtree-tree";\n+ role = "tree";\n+ if (this.tree_widget.options.rtl) {\n+ class_string += " jqtree-rtl";\n+ }\n+ }\n+ var ul = document.createElement("ul");\n+ ul.className = "jqtree_common " + class_string;\n+ ul.setAttribute("role", role);\n+ return ul;\n+ };\n+ ElementsRenderer.prototype.createLi = function (node, level) {\n+ var is_selected = Boolean(this.tree_widget.select_node_handler &&\n+ this.tree_widget.select_node_handler.isNodeSelected(node));\n+ var li = node.isFolder()\n+ ? this.createFolderLi(node, level, is_selected)\n+ : this.createNodeLi(node, level, is_selected);\n+ if (this.tree_widget.options.onCreateLi) {\n+ this.tree_widget.options.onCreateLi(node, $(li), is_selected);\n+ }\n+ return li;\n+ };\n+ ElementsRenderer.prototype.createFolderLi = function (node, level, is_selected) {\n+ var button_classes = this.getButtonClasses(node);\n+ var folder_classes = this.getFolderClasses(node, is_selected);\n+ var icon_element = node.is_open ? this.opened_icon_element : this.closed_icon_element;\n+ // li\n+ var li = document.createElement("li");\n+ li.className = "jqtree_common " + folder_classes;\n+ li.setAttribute("role", "presentation");\n+ // div\n+ var div = document.createElement("div");\n+ div.className = "jqtree-element jqtree_common";\n+ div.setAttribute("role", "presentation");\n+ li.appendChild(div);\n+ // button link\n+ var button_link = document.createElement("a");\n+ button_link.className = button_classes;\n+ button_link.appendChild(icon_element.cloneNode(false));\n+ button_link.setAttribute("role", "presentation");\n+ button_link.setAttribute("aria-hidden", "true");\n+ if (this.tree_widget.options.buttonLeft) {\n+ div.appendChild(button_link);\n+ }\n+ // title span\n+ div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, true));\n+ if (!this.tree_widget.options.buttonLeft) {\n+ div.appendChild(button_link);\n+ }\n+ return li;\n+ };\n+ ElementsRenderer.prototype.createNodeLi = function (node, level, is_selected) {\n+ var li_classes = ["jqtree_common"];\n+ if (is_selected) {\n+ li_classes.push("jqtree-selected");\n+ }\n+ var class_string = li_classes.join(" ");\n+ // li\n+ var li = document.createElement("li");\n+ li.className = class_string;\n+ li.setAttribute("role", "presentation");\n+ // div\n+ var div = document.createElement("div");\n+ div.className = "jqtree-element jqtree_common";\n+ div.setAttribute("role", "presentation");\n+ li.appendChild(div);\n+ // title span\n+ div.appendChild(this.createTitleSpan(node.name, level, is_selected, node.is_open, false));\n+ return li;\n+ };\n+ ElementsRenderer.prototype.createTitleSpan = function (node_name, level, is_selected, is_open, is_folder) {\n+ var title_span = document.createElement("span");\n+ var classes = "jqtree-title jqtree_common";\n+ if (is_folder) {\n+ classes += " jqtree-title-folder";\n+ }\n+ title_span.className = classes;\n+ title_span.setAttribute("role", "treeitem");\n+ title_span.setAttribute("aria-level", "" + level);\n+ title_span.setAttribute("aria-selected", util_1.getBoolString(is_selected));\n+ title_span.setAttribute("aria-expanded", util_1.getBoolString(is_open));\n+ if (is_selected) {\n+ title_span.setAttribute("tabindex", "0");\n+ }\n+ title_span.innerHTML = this.escapeIfNecessary(node_name);\n+ return title_span;\n+ };\n+ ElementsRenderer.prototype.getButtonClasses = function (node) {\n+ var classes = ["jqtree-toggler", "jqtree_common"];\n+ if (!node.is_open) {\n+ classes.push("jqtree-closed");\n+ }\n+ if (this.tree_widget.options.buttonLeft) {\n+ classes.push("jqtree-toggler-left");\n+ }\n+ else {\n+ classes.push("jqtree-toggler-right");\n+ }\n+ return classes.join(" ");\n+ };\n+ ElementsRenderer.prototype.getFolderClasses = function (node, is_selected) {\n+ var classes = ["jqtree-folder"];\n+ if (!node.is_open) {\n+ classes.push("jqtree-closed");\n+ }\n+ if (is_selected) {\n+ classes.push("jqtree-selected");\n+ }\n+ if (node.is_loading) {\n+ classes.push("jqtree-loading");\n+ }\n+ return classes.join(" ");\n+ };\n+ ElementsRenderer.prototype.escapeIfNecessary = function (value) {\n+ if (this.tree_widget.options.autoEscape) {\n+ return util_1.html_escape(value);\n+ }\n+ else {\n+ return value;\n+ }\n+ };\n+ ElementsRenderer.prototype.createButtonElement = function (value) {\n+ if (typeof value === "string") {\n+ // convert value to html\n+ var div = document.createElement("div");\n+ div.innerHTML = value;\n+ return document.createTextNode(div.innerHTML);\n+ }\n+ else {\n+ return $(value)[0];\n+ }\n+ };\n+ return ElementsRenderer;\n+}());\n+exports["default"] = ElementsRenderer;\n \n- function SimpleWidget(el, options) {\n- this.$el = $(el);\n- this.options = $.extend({}, this.defaults, options);\n- }\n \n- SimpleWidget.prototype.destroy = function() {\n- return this._deinit();\n- };\n+/***/ }),\n+/* 6 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- SimpleWidget.prototype._init = function() {\n- return null;\n- };\n \n- SimpleWidget.prototype._deinit = function() {\n- return null;\n- };\n \n- SimpleWidget.register = function(widget_class, widget_name) {\n- var callFunction, createWidget, destroyWidget, getDataKey, getWidgetData;\n- getDataKey = function() {\n- return "simple_widget_" + widget_name;\n+exports.__esModule = true;\n+var KeyHandler = (function () {\n+ function KeyHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ if (tree_widget.options.keyboardSupport) {\n+ $(document).on("keydown.jqtree", $.proxy(this.handleKeyDown, this));\n+ }\n+ }\n+ KeyHandler.prototype.deinit = function () {\n+ $(document).off("keydown.jqtree");\n };\n- getWidgetData = function(el, data_key) {\n- var widget;\n- widget = $.data(el, data_key);\n- if (widget && (widget instanceof SimpleWidget)) {\n- return widget;\n- } else {\n- return null;\n- }\n+ KeyHandler.prototype.moveDown = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (node) {\n+ return this.selectNode(node.getNextNode());\n+ }\n+ else {\n+ return false;\n+ }\n };\n- createWidget = function($el, options) {\n- var data_key, el, existing_widget, i, len, widget;\n- data_key = getDataKey();\n- for (i = 0, len = $el.length; i < len; i++) {\n- el = $el[i];\n- existing_widget = getWidgetData(el, data_key);\n- if (!existing_widget) {\n- widget = new widget_class(el, options);\n- if (!$.data(el, data_key)) {\n- $.data(el, data_key, widget);\n- }\n- widget._init();\n+ KeyHandler.prototype.moveUp = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (node) {\n+ return this.selectNode(node.getPreviousNode());\n+ }\n+ else {\n+ return false;\n }\n- }\n- return $el;\n };\n- destroyWidget = function($el) {\n- var data_key, el, i, len, results, widget;\n- data_key = getDataKey();\n- results = [];\n- for (i = 0, len = $el.length; i < len; i++) {\n- el = $el[i];\n- widget = getWidgetData(el, data_key);\n- if (widget) {\n- widget.destroy();\n+ KeyHandler.prototype.moveRight = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (!node) {\n+ return true;\n+ }\n+ else if (!node.isFolder()) {\n+ return true;\n+ }\n+ else {\n+ // folder node\n+ if (node.is_open) {\n+ // Right moves to the first child of an open node\n+ return this.selectNode(node.getNextNode());\n+ }\n+ else {\n+ // Right expands a closed node\n+ this.tree_widget.openNode(node);\n+ return false;\n+ }\n }\n- results.push($.removeData(el, data_key));\n- }\n- return results;\n };\n- callFunction = function($el, function_name, args) {\n- var el, i, len, result, widget, widget_function;\n- result = null;\n- for (i = 0, len = $el.length; i < len; i++) {\n- el = $el[i];\n- widget = $.data(el, getDataKey());\n- if (widget && (widget instanceof SimpleWidget)) {\n- widget_function = widget[function_name];\n- if (widget_function && (typeof widget_function === \'function\')) {\n- result = widget_function.apply(widget, args);\n- }\n+ KeyHandler.prototype.moveLeft = function () {\n+ var node = this.tree_widget.getSelectedNode();\n+ if (!node) {\n+ return true;\n+ }\n+ else if (node.isFolder() && node.is_open) {\n+ // Left on an open node closes the node\n+ this.tree_widget.closeNode(node);\n+ return false;\n+ }\n+ else {\n+ // Left on a closed or end node moves focus to the node\'s parent\n+ return this.selectNode(node.getParent());\n }\n- }\n- return result;\n };\n- return $.fn[widget_name] = function() {\n- var $el, args, argument1, function_name, options;\n- argument1 = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n- $el = this;\n- if (argument1 === void 0 || typeof argument1 === \'object\') {\n- options = argument1;\n- return createWidget($el, options);\n- } else if (typeof argument1 === \'string\' && argument1[0] !== \'_\') {\n- function_name = argument1;\n- if (function_name === \'destroy\') {\n- return destroyWidget($el);\n- } else if (function_name === \'get_widget_class\') {\n- return widget_class;\n- } else {\n- return callFunction($el, function_name, args);\n+ KeyHandler.prototype.handleKeyDown = function (e) {\n+ if (!this.canHandleKeyboard()) {\n+ return true;\n+ }\n+ else {\n+ var key = e.which;\n+ switch (key) {\n+ case KeyHandler.DOWN:\n+ return this.moveDown();\n+ case KeyHandler.UP:\n+ return this.moveUp();\n+ case KeyHandler.RIGHT:\n+ return this.moveRight();\n+ case KeyHandler.LEFT:\n+ return this.moveLeft();\n+ default:\n+ return true;\n+ }\n }\n- }\n };\n- };\n-\n- return SimpleWidget;\n-\n-})();\n-\n-module.exports = SimpleWidget;\n-\n-},{}],11:[function(require,module,exports){\n-var $, BorderDropHint, DragAndDropHandler, DragElement, ElementsRenderer, FolderElement, GhostDropHint, HitAreasGenerator, JqTreeWidget, KeyHandler, MouseWidget, Node, NodeElement, Position, SaveStateHandler, ScrollHandler, SelectNodeHandler, SimpleWidget, __version__, node_module, ref, ref1, util_module,\n- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n- hasProp = {}.hasOwnProperty;\n-\n-__version__ = require(\'./version\');\n-\n-ref = require(\'./drag_and_drop_handler\'), DragAndDropHandler = ref.DragAndDropHandler, DragElement = ref.DragElement, HitAreasGenerator = ref.HitAreasGenerator;\n-\n-ElementsRenderer = require(\'./elements_renderer\');\n-\n-KeyHandler = require(\'./key_handler\');\n-\n-MouseWidget = require(\'./mouse.widget\');\n-\n-SaveStateHandler = require(\'./save_state_handler\');\n-\n-ScrollHandler = require(\'./scroll_handler\');\n-\n-SelectNodeHandler = require(\'./select_node_handler\');\n-\n-SimpleWidget = require(\'./simple.widget\');\n-\n-node_module = require(\'./node\');\n-\n-Node = node_module.Node;\n-\n-Position = node_module.Position;\n-\n-util_module = require(\'./util\');\n-\n-ref1 = require(\'./node_element\'), BorderDropHint = ref1.BorderDropHint, FolderElement = ref1.FolderElement, GhostDropHint = ref1.GhostDropHint, NodeElement = ref1.NodeElement;\n-\n-$ = jQuery;\n-\n-JqTreeWidget = (function(superClass) {\n- extend(JqTreeWidget, superClass);\n-\n- function JqTreeWidget() {\n- return JqTreeWidget.__super__.constructor.apply(this, arguments);\n- }\n-\n- JqTreeWidget.prototype.BorderDropHint = BorderDropHint;\n-\n- JqTreeWidget.prototype.DragElement = DragElement;\n-\n- JqTreeWidget.prototype.DragAndDropHandler = DragAndDropHandler;\n-\n- JqTreeWidget.prototype.ElementsRenderer = ElementsRenderer;\n-\n- JqTreeWidget.prototype.GhostDropHint = GhostDropHint;\n+ KeyHandler.prototype.selectNode = function (node) {\n+ if (!node) {\n+ return true;\n+ }\n+ else {\n+ this.tree_widget.selectNode(node);\n+ if (this.tree_widget.scroll_handler &&\n+ (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find(".jqtree-element")))) {\n+ this.tree_widget.scrollToNode(node);\n+ }\n+ return false;\n+ }\n+ };\n+ KeyHandler.prototype.canHandleKeyboard = function () {\n+ return (this.tree_widget.options.keyboardSupport &&\n+ this.isFocusOnTree() &&\n+ this.tree_widget.getSelectedNode() != null);\n+ };\n+ KeyHandler.prototype.isFocusOnTree = function () {\n+ var active_element = document.activeElement;\n+ return (active_element &&\n+ active_element.tagName === "SPAN" &&\n+ this.tree_widget._containsElement(active_element));\n+ };\n+ return KeyHandler;\n+}());\n+KeyHandler.LEFT = 37;\n+KeyHandler.UP = 38;\n+KeyHandler.RIGHT = 39;\n+KeyHandler.DOWN = 40;\n+exports["default"] = KeyHandler;\n \n- JqTreeWidget.prototype.HitAreasGenerator = HitAreasGenerator;\n \n- JqTreeWidget.prototype.Node = Node;\n+/***/ }),\n+/* 7 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.SaveStateHandler = SaveStateHandler;\n \n- JqTreeWidget.prototype.ScrollHandler = ScrollHandler;\n \n- JqTreeWidget.prototype.SelectNodeHandler = SelectNodeHandler;\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+exports.__esModule = true;\n+/*\n+This widget does the same a the mouse widget in jqueryui.\n+*/\n+var simple_widget_1 = __webpack_require__(2);\n+var MouseWidget = (function (_super) {\n+ __extends(MouseWidget, _super);\n+ function MouseWidget() {\n+ return _super !== null && _super.apply(this, arguments) || this;\n+ }\n+ MouseWidget.prototype.setMouseDelay = function (mouse_delay) {\n+ this.mouse_delay = mouse_delay;\n+ };\n+ MouseWidget.prototype._init = function () {\n+ this.$el.on("mousedown.mousewidget", $.proxy(this._mouseDown, this));\n+ this.$el.on("touchstart.mousewidget", $.proxy(this._touchStart, this));\n+ this.is_mouse_started = false;\n+ this.mouse_delay = 0;\n+ this._mouse_delay_timer = null;\n+ this._is_mouse_delay_met = true;\n+ this.mouse_down_info = null;\n+ };\n+ MouseWidget.prototype._deinit = function () {\n+ this.$el.off("mousedown.mousewidget");\n+ this.$el.off("touchstart.mousewidget");\n+ var $document = $(document);\n+ $document.off("mousemove.mousewidget");\n+ $document.off("mouseup.mousewidget");\n+ };\n+ MouseWidget.prototype._mouseDown = function (e) {\n+ // Is left mouse button?\n+ if (e.which !== 1) {\n+ return;\n+ }\n+ var result = this._handleMouseDown(this._getPositionInfo(e));\n+ if (result) {\n+ e.preventDefault();\n+ }\n+ return result;\n+ };\n+ MouseWidget.prototype._handleMouseDown = function (position_info) {\n+ // We may have missed mouseup (out of window)\n+ if (this.is_mouse_started) {\n+ this._handleMouseUp(position_info);\n+ }\n+ this.mouse_down_info = position_info;\n+ if (!this._mouseCapture(position_info)) {\n+ return;\n+ }\n+ this._handleStartMouse();\n+ return true;\n+ };\n+ MouseWidget.prototype._handleStartMouse = function () {\n+ var $document = $(document);\n+ $document.on("mousemove.mousewidget", $.proxy(this._mouseMove, this));\n+ $document.on("touchmove.mousewidget", $.proxy(this._touchMove, this));\n+ $document.on("mouseup.mousewidget", $.proxy(this._mouseUp, this));\n+ $document.on("touchend.mousewidget", $.proxy(this._touchEnd, this));\n+ if (this.mouse_delay) {\n+ this._startMouseDelayTimer();\n+ }\n+ };\n+ MouseWidget.prototype._startMouseDelayTimer = function () {\n+ var _this = this;\n+ if (this._mouse_delay_timer) {\n+ clearTimeout(this._mouse_delay_timer);\n+ }\n+ this._mouse_delay_timer = setTimeout(function () {\n+ _this._is_mouse_delay_met = true;\n+ }, this.mouse_delay);\n+ this._is_mouse_delay_met = false;\n+ };\n+ MouseWidget.prototype._mouseMove = function (e) {\n+ return this._handleMouseMove(e, this._getPositionInfo(e));\n+ };\n+ MouseWidget.prototype._handleMouseMove = function (e, position_info) {\n+ if (this.is_mouse_started) {\n+ this._mouseDrag(position_info);\n+ return e.preventDefault();\n+ }\n+ if (this.mouse_delay && !this._is_mouse_delay_met) {\n+ return true;\n+ }\n+ if (this.mouse_down_info) {\n+ this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false;\n+ }\n+ if (this.is_mouse_started) {\n+ this._mouseDrag(position_info);\n+ }\n+ else {\n+ this._handleMouseUp(position_info);\n+ }\n+ return !this.is_mouse_started;\n+ };\n+ MouseWidget.prototype._getPositionInfo = function (e) {\n+ return {\n+ page_x: e.pageX,\n+ page_y: e.pageY,\n+ target: e.target,\n+ original_event: e\n+ };\n+ };\n+ MouseWidget.prototype._mouseUp = function (e) {\n+ return this._handleMouseUp(this._getPositionInfo(e));\n+ };\n+ MouseWidget.prototype._handleMouseUp = function (position_info) {\n+ var $document = $(document);\n+ $document.off("mousemove.mousewidget");\n+ $document.off("touchmove.mousewidget");\n+ $document.off("mouseup.mousewidget");\n+ $document.off("touchend.mousewidget");\n+ if (this.is_mouse_started) {\n+ this.is_mouse_started = false;\n+ this._mouseStop(position_info);\n+ }\n+ };\n+ MouseWidget.prototype._touchStart = function (e) {\n+ var touch_event = e.originalEvent;\n+ if (touch_event.touches.length > 1) {\n+ return;\n+ }\n+ var touch = touch_event.changedTouches[0];\n+ return this._handleMouseDown(this._getPositionInfo(touch));\n+ };\n+ MouseWidget.prototype._touchMove = function (e) {\n+ var touch_event = e.originalEvent;\n+ if (touch_event.touches.length > 1) {\n+ return;\n+ }\n+ var touch = touch_event.changedTouches[0];\n+ return this._handleMouseMove(e, this._getPositionInfo(touch));\n+ };\n+ MouseWidget.prototype._touchEnd = function (e) {\n+ var touch_event = e.originalEvent;\n+ if (touch_event.touches.length > 1) {\n+ return;\n+ }\n+ var touch = touch_event.changedTouches[0];\n+ return this._handleMouseUp(this._getPositionInfo(touch));\n+ };\n+ return MouseWidget;\n+}(simple_widget_1["default"]));\n+exports["default"] = MouseWidget;\n \n- JqTreeWidget.prototype.defaults = {\n- autoOpen: false,\n- saveState: false,\n- dragAndDrop: false,\n- selectable: true,\n- useContextMenu: true,\n- onCanSelectNode: null,\n- onSetStateFromStorage: null,\n- onGetStateFromStorage: null,\n- onCreateLi: null,\n- onIsMoveHandle: null,\n- onCanMove: null,\n- onCanMoveTo: null,\n- onLoadFailed: null,\n- autoEscape: true,\n- dataUrl: null,\n- closedIcon: null,\n- openedIcon: \'▼\',\n- slide: true,\n- nodeClass: Node,\n- dataFilter: null,\n- keyboardSupport: true,\n- openFolderDelay: 500,\n- rtl: null,\n- onDragMove: null,\n- onDragStop: null,\n- buttonLeft: true,\n- onLoading: null\n- };\n \n- JqTreeWidget.prototype.toggle = function(node, slide) {\n- if (slide == null) {\n- slide = null;\n- }\n- if (slide === null) {\n- slide = this.options.slide;\n- }\n- if (node.is_open) {\n- this.closeNode(node, slide);\n- } else {\n- this.openNode(node, slide);\n- }\n- return this.element;\n- };\n+/***/ }),\n+/* 8 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.getTree = function() {\n- return this.tree;\n- };\n \n- JqTreeWidget.prototype.selectNode = function(node) {\n- this._selectNode(node, false);\n- return this.element;\n- };\n \n- JqTreeWidget.prototype._selectNode = function(node, must_toggle) {\n- var canSelect, deselected_node, openParents, saveState;\n- if (must_toggle == null) {\n- must_toggle = false;\n- }\n- if (!this.select_node_handler) {\n- return;\n+var __extends = (this && this.__extends) || (function () {\n+ var extendStatics = Object.setPrototypeOf ||\n+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n+ return function (d, b) {\n+ extendStatics(d, b);\n+ function __() { this.constructor = d; }\n+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n+ };\n+})();\n+exports.__esModule = true;\n+var node_1 = __webpack_require__(0);\n+var NodeElement = (function () {\n+ function NodeElement(node, tree_widget) {\n+ this.init(node, tree_widget);\n }\n- canSelect = (function(_this) {\n- return function() {\n- if (_this.options.onCanSelectNode) {\n- return _this.options.selectable && _this.options.onCanSelectNode(node);\n- } else {\n- return _this.options.selectable;\n+ NodeElement.prototype.init = function (node, tree_widget) {\n+ this.node = node;\n+ this.tree_widget = tree_widget;\n+ if (!node.element) {\n+ node.element = this.tree_widget.element.get(0);\n }\n- };\n- })(this);\n- openParents = (function(_this) {\n- return function() {\n- var parent;\n- parent = node.parent;\n- if (parent && parent.parent && !parent.is_open) {\n- return _this.openNode(parent, false);\n+ this.$element = $(node.element);\n+ };\n+ NodeElement.prototype.addDropHint = function (position) {\n+ if (position === node_1.Position.Inside) {\n+ return new BorderDropHint(this.$element);\n }\n- };\n- })(this);\n- saveState = (function(_this) {\n- return function() {\n- if (_this.options.saveState) {\n- return _this.save_state_handler.saveState();\n+ else {\n+ return new GhostDropHint(this.node, this.$element, position);\n }\n- };\n- })(this);\n- if (!node) {\n- this._deselectCurrentNode();\n- saveState();\n- return;\n- }\n- if (!canSelect()) {\n- return;\n- }\n- if (this.select_node_handler.isNodeSelected(node)) {\n- if (must_toggle) {\n- this._deselectCurrentNode();\n- this._triggerEvent(\'tree.select\', {\n- node: null,\n- previous_node: node\n+ };\n+ NodeElement.prototype.select = function () {\n+ var $li = this.getLi();\n+ $li.addClass("jqtree-selected");\n+ $li.attr("aria-selected", "true");\n+ var $span = this.getSpan();\n+ $span.attr("tabindex", 0);\n+ $span.focus();\n+ };\n+ NodeElement.prototype.deselect = function () {\n+ var $li = this.getLi();\n+ $li.removeClass("jqtree-selected");\n+ $li.attr("aria-selected", "false");\n+ var $span = this.getSpan();\n+ $span.attr("tabindex", -1);\n+ $span.blur();\n+ };\n+ NodeElement.prototype.getUl = function () {\n+ return this.$element.children("ul:first");\n+ };\n+ NodeElement.prototype.getSpan = function () {\n+ return this.$element.children(".jqtree-element").find("span.jqtree-title");\n+ };\n+ NodeElement.prototype.getLi = function () {\n+ return this.$element;\n+ };\n+ return NodeElement;\n+}());\n+exports.NodeElement = NodeElement;\n+var FolderElement = (function (_super) {\n+ __extends(FolderElement, _super);\n+ function FolderElement() {\n+ return _super !== null && _super.apply(this, arguments) || this;\n+ }\n+ FolderElement.prototype.open = function (on_finished, slide) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ if (!this.node.is_open) {\n+ this.node.is_open = true;\n+ var $button = this.getButton();\n+ $button.removeClass("jqtree-closed");\n+ $button.html("");\n+ var button_el = $button.get(0);\n+ if (button_el) {\n+ var icon = this.tree_widget.renderer.opened_icon_element.cloneNode(false);\n+ button_el.appendChild(icon);\n+ }\n+ var doOpen = function () {\n+ var $li = _this.getLi();\n+ $li.removeClass("jqtree-closed");\n+ var $span = _this.getSpan();\n+ $span.attr("aria-expanded", "true");\n+ if (on_finished) {\n+ on_finished(_this.node);\n+ }\n+ _this.tree_widget._triggerEvent("tree.open", { node: _this.node });\n+ };\n+ if (slide) {\n+ this.getUl().slideDown("fast", doOpen);\n+ }\n+ else {\n+ this.getUl().show();\n+ doOpen();\n+ }\n+ }\n+ };\n+ FolderElement.prototype.close = function (slide) {\n+ var _this = this;\n+ if (slide === void 0) { slide = true; }\n+ if (this.node.is_open) {\n+ this.node.is_open = false;\n+ var $button = this.getButton();\n+ $button.addClass("jqtree-closed");\n+ $button.html("");\n+ var button_el = $button.get(0);\n+ if (button_el) {\n+ var icon = this.tree_widget.renderer.closed_icon_element.cloneNode(false);\n+ button_el.appendChild(icon);\n+ }\n+ var doClose = function () {\n+ var $li = _this.getLi();\n+ $li.addClass("jqtree-closed");\n+ var $span = _this.getSpan();\n+ $span.attr("aria-expanded", "false");\n+ _this.tree_widget._triggerEvent("tree.close", { node: _this.node });\n+ };\n+ if (slide) {\n+ this.getUl().slideUp("fast", doClose);\n+ }\n+ else {\n+ this.getUl().hide();\n+ doClose();\n+ }\n+ }\n+ };\n+ FolderElement.prototype.addDropHint = function (position) {\n+ if (!this.node.is_open && position === node_1.Position.Inside) {\n+ return new BorderDropHint(this.$element);\n+ }\n+ else {\n+ return new GhostDropHint(this.node, this.$element, position);\n+ }\n+ };\n+ FolderElement.prototype.getButton = function () {\n+ return this.$element.children(".jqtree-element").find("a.jqtree-toggler");\n+ };\n+ return FolderElement;\n+}(NodeElement));\n+exports.FolderElement = FolderElement;\n+var BorderDropHint = (function () {\n+ function BorderDropHint($element) {\n+ var $div = $element.children(".jqtree-element");\n+ var width = $element.width() - 4;\n+ this.$hint = $(\'\');\n+ $div.append(this.$hint);\n+ this.$hint.css({\n+ width: width,\n+ height: $div.outerHeight() - 4\n });\n- }\n- } else {\n- deselected_node = this.getSelectedNode();\n- this._deselectCurrentNode();\n- this.addToSelection(node);\n- this._triggerEvent(\'tree.select\', {\n- node: node,\n- deselected_node: deselected_node\n- });\n- openParents();\n }\n- return saveState();\n- };\n-\n- JqTreeWidget.prototype.getSelectedNode = function() {\n- if (this.select_node_handler) {\n- return this.select_node_handler.getSelectedNode();\n- } else {\n- return null;\n+ BorderDropHint.prototype.remove = function () {\n+ this.$hint.remove();\n+ };\n+ return BorderDropHint;\n+}());\n+exports.BorderDropHint = BorderDropHint;\n+var GhostDropHint = (function () {\n+ function GhostDropHint(node, $element, position) {\n+ this.$element = $element;\n+ this.node = node;\n+ this.$ghost = $("
  • \\n
  • ");\n+ if (position === node_1.Position.After) {\n+ this.moveAfter();\n+ }\n+ else if (position === node_1.Position.Before) {\n+ this.moveBefore();\n+ }\n+ else if (position === node_1.Position.Inside) {\n+ if (node.isFolder() && node.is_open) {\n+ this.moveInsideOpenFolder();\n+ }\n+ else {\n+ this.moveInside();\n+ }\n+ }\n }\n- };\n+ GhostDropHint.prototype.remove = function () {\n+ this.$ghost.remove();\n+ };\n+ GhostDropHint.prototype.moveAfter = function () {\n+ this.$element.after(this.$ghost);\n+ };\n+ GhostDropHint.prototype.moveBefore = function () {\n+ this.$element.before(this.$ghost);\n+ };\n+ GhostDropHint.prototype.moveInsideOpenFolder = function () {\n+ $(this.node.children[0].element).before(this.$ghost);\n+ };\n+ GhostDropHint.prototype.moveInside = function () {\n+ this.$element.after(this.$ghost);\n+ this.$ghost.addClass("jqtree-inside");\n+ };\n+ return GhostDropHint;\n+}());\n+exports.GhostDropHint = GhostDropHint;\n \n- JqTreeWidget.prototype.toJson = function() {\n- return JSON.stringify(this.tree.getData());\n- };\n \n- JqTreeWidget.prototype.loadData = function(data, parent_node) {\n- this._loadData(data, parent_node);\n- return this.element;\n- };\n+/***/ }),\n+/* 9 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n \n- /*\n- signatures:\n- - loadDataFromUrl(url, parent_node=null, on_finished=null)\n- loadDataFromUrl(\'/my_data\');\n- loadDataFromUrl(\'/my_data\', node1);\n- loadDataFromUrl(\'/my_data\', node1, function() { console.log(\'finished\'); });\n- loadDataFromUrl(\'/my_data\', null, function() { console.log(\'finished\'); });\n- \n- - loadDataFromUrl(parent_node=null, on_finished=null)\n- loadDataFromUrl();\n- loadDataFromUrl(node1);\n- loadDataFromUrl(null, function() { console.log(\'finished\'); });\n- loadDataFromUrl(node1, function() { console.log(\'finished\'); });\n- */\n \n- JqTreeWidget.prototype.loadDataFromUrl = function(param1, param2, param3) {\n- if ($.type(param1) === \'string\') {\n- this._loadDataFromUrl(param1, param2, param3);\n- } else {\n- this._loadDataFromUrl(null, param1, param2);\n+exports.__esModule = true;\n+var util_1 = __webpack_require__(1);\n+var SaveStateHandler = (function () {\n+ function SaveStateHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n }\n- return this.element;\n- };\n-\n- JqTreeWidget.prototype.reload = function(on_finished) {\n- this._loadDataFromUrl(null, null, on_finished);\n- return this.element;\n- };\n-\n- JqTreeWidget.prototype._loadDataFromUrl = function(url_info, parent_node, on_finished) {\n- var $el, addLoadingClass, handeLoadData, handleError, handleSuccess, loadDataFromUrlInfo, parseUrlInfo, removeLoadingClass;\n- $el = null;\n- addLoadingClass = (function(_this) {\n- return function() {\n- if (parent_node) {\n- $el = $(parent_node.element);\n- } else {\n- $el = _this.element;\n+ SaveStateHandler.prototype.saveState = function () {\n+ var state = JSON.stringify(this.getState());\n+ if (this.tree_widget.options.onSetStateFromStorage) {\n+ this.tree_widget.options.onSetStateFromStorage(state);\n }\n- $el.addClass(\'jqtree-loading\');\n- return _this._notifyLoading(true, parent_node, $el);\n- };\n- })(this);\n- removeLoadingClass = (function(_this) {\n- return function() {\n- if ($el) {\n- $el.removeClass(\'jqtree-loading\');\n- return _this._notifyLoading(false, parent_node, $el);\n+ else if (this.supportsLocalStorage()) {\n+ localStorage.setItem(this.getKeyName(), state);\n }\n- };\n- })(this);\n- parseUrlInfo = function() {\n- if ($.type(url_info) === \'string\') {\n+ };\n+ SaveStateHandler.prototype.getStateFromStorage = function () {\n+ var json_data = this._loadFromStorage();\n+ if (json_data) {\n+ return this._parseState(json_data);\n+ }\n+ else {\n+ return null;\n+ }\n+ };\n+ SaveStateHandler.prototype.getState = function () {\n+ var _this = this;\n+ var getOpenNodeIds = function () {\n+ var open_nodes = [];\n+ _this.tree_widget.tree.iterate(function (node) {\n+ if (node.is_open &&\n+ node.id &&\n+ node.hasChildren()) {\n+ open_nodes.push(node.id);\n+ }\n+ return true;\n+ });\n+ return open_nodes;\n+ };\n+ var getSelectedNodeIds = function () { return _this.tree_widget.getSelectedNodes().map(function (n) { return n.id; }); };\n return {\n- url: url_info\n+ open_nodes: getOpenNodeIds(),\n+ selected_node: getSelectedNodeIds()\n };\n- }\n- if (!url_info.method) {\n- url_info.method = \'get\';\n- }\n- return url_info;\n };\n- handeLoadData = (function(_this) {\n- return function(data) {\n- removeLoadingClass();\n- _this._loadData(data, parent_node);\n- if (on_finished && $.isFunction(on_finished)) {\n- return on_finished();\n+ /*\n+ Set initial state\n+ Don\'t handle nodes that are loaded on demand\n+\n+ result: must load on demand\n+ */\n+ SaveStateHandler.prototype.setInitialState = function (state) {\n+ if (!state) {\n+ return false;\n }\n- };\n- })(this);\n- handleSuccess = (function(_this) {\n- return function(response) {\n- var data;\n- if ($.isArray(response) || typeof response === \'object\') {\n- data = response;\n- } else if (data != null) {\n- data = $.parseJSON(response);\n- } else {\n- data = [];\n+ else {\n+ var must_load_on_demand = false;\n+ if (state.open_nodes) {\n+ must_load_on_demand = this._openInitialNodes(state.open_nodes);\n+ }\n+ if (state.selected_node) {\n+ this._resetSelection();\n+ this._selectInitialNodes(state.selected_node);\n+ }\n+ return must_load_on_demand;\n }\n- if (_this.options.dataFilter) {\n- data = _this.options.dataFilter(data);\n+ };\n+ SaveStateHandler.prototype.setInitialStateOnDemand = function (state, cb_finished) {\n+ if (state) {\n+ this._setInitialStateOnDemand(state.open_nodes, state.selected_node, cb_finished);\n }\n- return handeLoadData(data);\n- };\n- })(this);\n- handleError = (function(_this) {\n- return function(response) {\n- removeLoadingClass();\n- if (_this.options.onLoadFailed) {\n- return _this.options.onLoadFailed(response);\n+ else {\n+ cb_finished();\n }\n- };\n- })(this);\n- loadDataFromUrlInfo = function() {\n- url_info = parseUrlInfo();\n- return $.ajax($.extend({}, url_info, {\n- method: url_info.method != null ? url_info.method.toUpperCase() : \'GET\',\n- cache: false,\n- dataType: \'json\',\n- success: handleSuccess,\n- error: handleError\n- }));\n };\n- if (!url_info) {\n- url_info = this._getDataUrlInfo(parent_node);\n- }\n- addLoadingClass();\n- if (!url_info) {\n- removeLoadingClass();\n- } else if ($.isArray(url_info)) {\n- handeLoadData(url_info);\n- } else {\n- loadDataFromUrlInfo();\n- }\n- };\n-\n- JqTreeWidget.prototype._loadData = function(data, parent_node) {\n- var deselectNodes, loadSubtree;\n- if (parent_node == null) {\n- parent_node = null;\n- }\n- deselectNodes = (function(_this) {\n- return function() {\n- var i, len, n, selected_nodes_under_parent;\n- if (_this.select_node_handler) {\n- selected_nodes_under_parent = _this.select_node_handler.getSelectedNodesUnder(parent_node);\n- for (i = 0, len = selected_nodes_under_parent.length; i < len; i++) {\n- n = selected_nodes_under_parent[i];\n- _this.select_node_handler.removeFromSelection(n);\n- }\n+ SaveStateHandler.prototype.getNodeIdToBeSelected = function () {\n+ var state = this.getStateFromStorage();\n+ if (state && state.selected_node) {\n+ return state.selected_node[0];\n }\n- return null;\n- };\n- })(this);\n- loadSubtree = (function(_this) {\n- return function() {\n- parent_node.loadFromData(data);\n- parent_node.load_on_demand = false;\n- parent_node.is_loading = false;\n- return _this._refreshElements(parent_node);\n- };\n- })(this);\n- if (!data) {\n- return;\n- }\n- this._triggerEvent(\'tree.load_data\', {\n- tree_data: data\n- });\n- if (!parent_node) {\n- this._initTree(data);\n- } else {\n- deselectNodes();\n- loadSubtree();\n- }\n- if (this.isDragging()) {\n- return this.dnd_handler.refresh();\n- }\n- };\n+ else {\n+ return null;\n+ }\n+ };\n+ SaveStateHandler.prototype._parseState = function (json_data) {\n+ var state = $.parseJSON(json_data);\n+ // Check if selected_node is an int (instead of an array)\n+ if (state && state.selected_node && util_1.isInt(state.selected_node)) {\n+ // Convert to array\n+ state.selected_node = [state.selected_node];\n+ }\n+ return state;\n+ };\n+ SaveStateHandler.prototype._loadFromStorage = function () {\n+ if (this.tree_widget.options.onGetStateFromStorage) {\n+ return this.tree_widget.options.onGetStateFromStorage();\n+ }\n+ else if (this.supportsLocalStorage()) {\n+ return localStorage.getItem(this.getKeyName());\n+ }\n+ };\n+ SaveStateHandler.prototype._openInitialNodes = function (node_ids) {\n+ var must_load_on_demand = false;\n+ for (var _i = 0, node_ids_1 = node_ids; _i < node_ids_1.length; _i++) {\n+ var node_id = node_ids_1[_i];\n+ var node = this.tree_widget.getNodeById(node_id);\n+ if (node) {\n+ if (!node.load_on_demand) {\n+ node.is_open = true;\n+ }\n+ else {\n+ must_load_on_demand = true;\n+ }\n+ }\n+ }\n+ return must_load_on_demand;\n+ };\n+ SaveStateHandler.prototype._selectInitialNodes = function (node_ids) {\n+ var select_count = 0;\n+ for (var _i = 0, node_ids_2 = node_ids; _i < node_ids_2.length; _i++) {\n+ var node_id = node_ids_2[_i];\n+ var node = this.tree_widget.getNodeById(node_id);\n+ if (node) {\n+ select_count += 1;\n+ if (this.tree_widget.select_node_handler) {\n+ this.tree_widget.select_node_handler.addToSelection(node);\n+ }\n+ }\n+ }\n+ return select_count !== 0;\n+ };\n+ SaveStateHandler.prototype._resetSelection = function () {\n+ var select_node_handler = this.tree_widget.select_node_handler;\n+ if (select_node_handler) {\n+ var selected_nodes = select_node_handler.getSelectedNodes();\n+ selected_nodes.forEach(function (node) {\n+ select_node_handler.removeFromSelection(node);\n+ });\n+ }\n+ };\n+ SaveStateHandler.prototype._setInitialStateOnDemand = function (node_ids_param, selected_nodes, cb_finished) {\n+ var _this = this;\n+ var loading_count = 0;\n+ var node_ids = node_ids_param;\n+ var openNodes = function () {\n+ var new_nodes_ids = [];\n+ for (var _i = 0, node_ids_3 = node_ids; _i < node_ids_3.length; _i++) {\n+ var node_id = node_ids_3[_i];\n+ var node = _this.tree_widget.getNodeById(node_id);\n+ if (!node) {\n+ new_nodes_ids.push(node_id);\n+ }\n+ else {\n+ if (!node.is_loading) {\n+ if (node.load_on_demand) {\n+ loadAndOpenNode(node);\n+ }\n+ else {\n+ _this.tree_widget._openNode(node, false, null);\n+ }\n+ }\n+ }\n+ }\n+ node_ids = new_nodes_ids;\n+ if (_this._selectInitialNodes(selected_nodes)) {\n+ _this.tree_widget._refreshElements(null);\n+ }\n+ if (loading_count === 0) {\n+ cb_finished();\n+ }\n+ };\n+ var loadAndOpenNode = function (node) {\n+ loading_count += 1;\n+ _this.tree_widget._openNode(node, false, function () {\n+ loading_count -= 1;\n+ openNodes();\n+ });\n+ };\n+ openNodes();\n+ };\n+ SaveStateHandler.prototype.getKeyName = function () {\n+ if (typeof this.tree_widget.options.saveState === "string") {\n+ return this.tree_widget.options.saveState;\n+ }\n+ else {\n+ return "tree";\n+ }\n+ };\n+ SaveStateHandler.prototype.supportsLocalStorage = function () {\n+ var testSupport = function () {\n+ // Is local storage supported?\n+ if (localStorage == null) {\n+ return false;\n+ }\n+ else {\n+ // Check if it\'s possible to store an item. Safari does not allow this in private browsing mode.\n+ try {\n+ var key = "_storage_test";\n+ sessionStorage.setItem(key, "value");\n+ sessionStorage.removeItem(key);\n+ }\n+ catch (error) {\n+ return false;\n+ }\n+ return true;\n+ }\n+ };\n+ if (this._supportsLocalStorage == null) {\n+ this._supportsLocalStorage = testSupport();\n+ }\n+ return this._supportsLocalStorage;\n+ };\n+ return SaveStateHandler;\n+}());\n+exports["default"] = SaveStateHandler;\n \n- JqTreeWidget.prototype.getNodeById = function(node_id) {\n- return this.tree.getNodeById(node_id);\n- };\n \n- JqTreeWidget.prototype.getNodeByName = function(name) {\n- return this.tree.getNodeByName(name);\n- };\n+/***/ }),\n+/* 10 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.getNodesByProperty = function(key, value) {\n- return this.tree.getNodesByProperty(key, value);\n- };\n \n- JqTreeWidget.prototype.openNode = function(node, slide) {\n- if (slide == null) {\n- slide = null;\n- }\n- if (slide === null) {\n- slide = this.options.slide;\n- }\n- this._openNode(node, slide);\n- return this.element;\n- };\n \n- JqTreeWidget.prototype._openNode = function(node, slide, on_finished) {\n- var doOpenNode, parent;\n- if (slide == null) {\n- slide = true;\n+exports.__esModule = true;\n+var ScrollHandler = (function () {\n+ function ScrollHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.previous_top = -1;\n+ this.is_initialized = false;\n }\n- doOpenNode = (function(_this) {\n- return function(_node, _slide, _on_finished) {\n- var folder_element;\n- folder_element = new FolderElement(_node, _this);\n- return folder_element.open(_on_finished, _slide);\n- };\n- })(this);\n- if (node.isFolder()) {\n- if (node.load_on_demand) {\n- return this._loadFolderOnDemand(node, slide, on_finished);\n- } else {\n- parent = node.parent;\n- while (parent) {\n- if (parent.parent) {\n- doOpenNode(parent, false, null);\n- }\n- parent = parent.parent;\n+ ScrollHandler.prototype.checkScrolling = function () {\n+ this._ensureInit();\n+ if (this.tree_widget.dnd_handler) {\n+ var hovered_area = this.tree_widget.dnd_handler.hovered_area;\n+ if (hovered_area && hovered_area.top !== this.previous_top) {\n+ this.previous_top = hovered_area.top;\n+ if (this.$scroll_parent) {\n+ this._handleScrollingWithScrollParent(hovered_area);\n+ }\n+ else {\n+ this._handleScrollingWithDocument(hovered_area);\n+ }\n+ }\n }\n- doOpenNode(node, slide, on_finished);\n- return this._saveState();\n- }\n- }\n- };\n+ };\n+ ScrollHandler.prototype.scrollTo = function (top) {\n+ this._ensureInit();\n+ if (this.$scroll_parent) {\n+ this.$scroll_parent[0].scrollTop = top;\n+ }\n+ else {\n+ var tree_top = this.tree_widget.$el.offset().top;\n+ $(document).scrollTop(top + tree_top);\n+ }\n+ };\n+ ScrollHandler.prototype.isScrolledIntoView = function ($element) {\n+ this._ensureInit();\n+ var element_bottom;\n+ var view_bottom;\n+ var element_top;\n+ var view_top;\n+ if (this.$scroll_parent) {\n+ view_top = 0;\n+ view_bottom = this.$scroll_parent.height();\n+ element_top = $element.offset().top - this.scroll_parent_top;\n+ element_bottom = element_top + $element.height();\n+ }\n+ else {\n+ view_top = $(window).scrollTop();\n+ view_bottom = view_top + $(window).height();\n+ element_top = $element.offset().top;\n+ element_bottom = element_top + $element.height();\n+ }\n+ return ((element_bottom <= view_bottom) && (element_top >= view_top));\n+ };\n+ ScrollHandler.prototype._initScrollParent = function () {\n+ var _this = this;\n+ var getParentWithOverflow = function () {\n+ var css_attributes = ["overflow", "overflow-y"];\n+ var hasOverFlow = function ($el) {\n+ for (var _i = 0, css_attributes_1 = css_attributes; _i < css_attributes_1.length; _i++) {\n+ var attr = css_attributes_1[_i];\n+ var overflow_value = $el.css(attr);\n+ if (overflow_value === "auto" || overflow_value === "scroll") {\n+ return true;\n+ }\n+ }\n+ return false;\n+ };\n+ if (hasOverFlow(_this.tree_widget.$el)) {\n+ return _this.tree_widget.$el;\n+ }\n+ for (var _i = 0, _a = _this.tree_widget.$el.parents().get(); _i < _a.length; _i++) {\n+ var el = _a[_i];\n+ var $el = $(el);\n+ if (hasOverFlow($el)) {\n+ return $el;\n+ }\n+ }\n+ return null;\n+ };\n+ var setDocumentAsScrollParent = function () {\n+ _this.scroll_parent_top = 0;\n+ _this.$scroll_parent = null;\n+ };\n+ if (this.tree_widget.$el.css("position") === "fixed") {\n+ setDocumentAsScrollParent();\n+ }\n+ var $scroll_parent = getParentWithOverflow();\n+ if ($scroll_parent && $scroll_parent.length && $scroll_parent[0].tagName !== "HTML") {\n+ this.$scroll_parent = $scroll_parent;\n+ this.scroll_parent_top = this.$scroll_parent.offset().top;\n+ }\n+ else {\n+ setDocumentAsScrollParent();\n+ }\n+ this.is_initialized = true;\n+ };\n+ ScrollHandler.prototype._ensureInit = function () {\n+ if (!this.is_initialized) {\n+ this._initScrollParent();\n+ }\n+ };\n+ ScrollHandler.prototype._handleScrollingWithScrollParent = function (area) {\n+ if (!this.$scroll_parent) {\n+ return;\n+ }\n+ else {\n+ var distance_bottom = this.scroll_parent_top + this.$scroll_parent[0].offsetHeight - area.bottom;\n+ if (distance_bottom < 20) {\n+ this.$scroll_parent[0].scrollTop += 20;\n+ this.tree_widget.refreshHitAreas();\n+ this.previous_top = -1;\n+ }\n+ else if ((area.top - this.scroll_parent_top) < 20) {\n+ this.$scroll_parent[0].scrollTop -= 20;\n+ this.tree_widget.refreshHitAreas();\n+ this.previous_top = -1;\n+ }\n+ }\n+ };\n+ ScrollHandler.prototype._handleScrollingWithDocument = function (area) {\n+ var distance_top = area.top - $(document).scrollTop();\n+ if (distance_top < 20) {\n+ $(document).scrollTop($(document).scrollTop() - 20);\n+ }\n+ else if ($(window).height() - (area.bottom - $(document).scrollTop()) < 20) {\n+ $(document).scrollTop($(document).scrollTop() + 20);\n+ }\n+ };\n+ return ScrollHandler;\n+}());\n+exports["default"] = ScrollHandler;\n \n- JqTreeWidget.prototype._loadFolderOnDemand = function(node, slide, on_finished) {\n- if (slide == null) {\n- slide = true;\n- }\n- node.is_loading = true;\n- return this._loadDataFromUrl(null, node, (function(_this) {\n- return function() {\n- return _this._openNode(node, slide, on_finished);\n- };\n- })(this));\n- };\n \n- JqTreeWidget.prototype.closeNode = function(node, slide) {\n- if (slide == null) {\n- slide = null;\n- }\n- if (slide === null) {\n- slide = this.options.slide;\n- }\n- if (node.isFolder()) {\n- new FolderElement(node, this).close(slide);\n- this._saveState();\n- }\n- return this.element;\n- };\n+/***/ }),\n+/* 11 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.isDragging = function() {\n- if (this.dnd_handler) {\n- return this.dnd_handler.is_dragging;\n- } else {\n- return false;\n+\n+\n+exports.__esModule = true;\n+var SelectNodeHandler = (function () {\n+ function SelectNodeHandler(tree_widget) {\n+ this.tree_widget = tree_widget;\n+ this.clear();\n }\n- };\n+ SelectNodeHandler.prototype.getSelectedNode = function () {\n+ var selected_nodes = this.getSelectedNodes();\n+ if (selected_nodes.length) {\n+ return selected_nodes[0];\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ SelectNodeHandler.prototype.getSelectedNodes = function () {\n+ if (this.selected_single_node) {\n+ return [this.selected_single_node];\n+ }\n+ else {\n+ var selected_nodes = [];\n+ for (var id in this.selected_nodes) {\n+ if (this.selected_nodes.hasOwnProperty(id)) {\n+ var node = this.tree_widget.getNodeById(id);\n+ if (node) {\n+ selected_nodes.push(node);\n+ }\n+ }\n+ }\n+ return selected_nodes;\n+ }\n+ };\n+ SelectNodeHandler.prototype.getSelectedNodesUnder = function (parent) {\n+ if (this.selected_single_node) {\n+ if (parent.isParentOf(this.selected_single_node)) {\n+ return [this.selected_single_node];\n+ }\n+ else {\n+ return [];\n+ }\n+ }\n+ else {\n+ var selected_nodes = [];\n+ for (var id in this.selected_nodes) {\n+ if (this.selected_nodes.hasOwnProperty(id)) {\n+ var node = this.tree_widget.getNodeById(id);\n+ if (node && parent.isParentOf(node)) {\n+ selected_nodes.push(node);\n+ }\n+ }\n+ }\n+ return selected_nodes;\n+ }\n+ };\n+ SelectNodeHandler.prototype.isNodeSelected = function (node) {\n+ if (!node) {\n+ return false;\n+ }\n+ else if (node.id != null) {\n+ if (this.selected_nodes[node.id]) {\n+ return true;\n+ }\n+ else {\n+ return false;\n+ }\n+ }\n+ else if (this.selected_single_node) {\n+ return this.selected_single_node.element === node.element;\n+ }\n+ else {\n+ return false;\n+ }\n+ };\n+ SelectNodeHandler.prototype.clear = function () {\n+ this.selected_nodes = {};\n+ this.selected_single_node = null;\n+ };\n+ SelectNodeHandler.prototype.removeFromSelection = function (node, include_children) {\n+ var _this = this;\n+ if (include_children === void 0) { include_children = false; }\n+ if (node.id == null) {\n+ if (this.selected_single_node && node.element === this.selected_single_node.element) {\n+ this.selected_single_node = null;\n+ }\n+ }\n+ else {\n+ delete this.selected_nodes[node.id];\n+ if (include_children) {\n+ node.iterate(function () {\n+ delete _this.selected_nodes[node.id];\n+ return true;\n+ });\n+ }\n+ }\n+ };\n+ SelectNodeHandler.prototype.addToSelection = function (node) {\n+ if (node.id != null) {\n+ this.selected_nodes[node.id] = true;\n+ }\n+ else {\n+ this.selected_single_node = node;\n+ }\n+ };\n+ return SelectNodeHandler;\n+}());\n+exports["default"] = SelectNodeHandler;\n \n- JqTreeWidget.prototype.refreshHitAreas = function() {\n- this.dnd_handler.refresh();\n- return this.element;\n- };\n \n- JqTreeWidget.prototype.addNodeAfter = function(new_node_info, existing_node) {\n- var new_node;\n- new_node = existing_node.addAfter(new_node_info);\n- this._refreshElements(existing_node.parent);\n- return new_node;\n- };\n+/***/ }),\n+/* 12 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.addNodeBefore = function(new_node_info, existing_node) {\n- var new_node;\n- new_node = existing_node.addBefore(new_node_info);\n- this._refreshElements(existing_node.parent);\n- return new_node;\n- };\n \n- JqTreeWidget.prototype.addParentNode = function(new_node_info, existing_node) {\n- var new_node;\n- new_node = existing_node.addParent(new_node_info);\n- this._refreshElements(new_node.parent);\n- return new_node;\n- };\n \n- JqTreeWidget.prototype.removeNode = function(node) {\n- var parent;\n- parent = node.parent;\n- if (parent) {\n- this.select_node_handler.removeFromSelection(node, true);\n- node.remove();\n- this._refreshElements(parent);\n- }\n- return this.element;\n- };\n+exports.__esModule = true;\n+var version = "1.4.1";\n+exports["default"] = version;\n \n- JqTreeWidget.prototype.appendNode = function(new_node_info, parent_node) {\n- var node;\n- parent_node = parent_node || this.tree;\n- node = parent_node.append(new_node_info);\n- this._refreshElements(parent_node);\n- return node;\n- };\n \n- JqTreeWidget.prototype.prependNode = function(new_node_info, parent_node) {\n- var node;\n- if (!parent_node) {\n- parent_node = this.tree;\n- }\n- node = parent_node.prepend(new_node_info);\n- this._refreshElements(parent_node);\n- return node;\n- };\n+/***/ }),\n+/* 13 */,\n+/* 14 */,\n+/* 15 */,\n+/* 16 */,\n+/* 17 */,\n+/* 18 */,\n+/* 19 */\n+/***/ (function(module, exports, __webpack_require__) {\n \n- JqTreeWidget.prototype.updateNode = function(node, data) {\n- var id_is_changed;\n- id_is_changed = data.id && data.id !== node.id;\n- if (id_is_changed) {\n- this.tree.removeNodeFromIndex(node);\n- }\n- node.setData(data);\n- if (id_is_changed) {\n- this.tree.addNodeToIndex(node);\n- }\n- if (typeof data === \'object\' && data.children && data.children.length) {\n- node.removeChildren();\n- node.loadFromData(data.children);\n- }\n- this.renderer.renderFromNode(node);\n- this._selectCurrentNode();\n- return this.element;\n- };\n+module.exports = __webpack_require__(3);\n \n- JqTreeWidget.prototype.moveNode = function(node, target_node, position) {\n- var position_index;\n- position_index = Position.nameToIndex(position);\n- this.tree.moveNode(node, target_node, position_index);\n- this._refreshElements();\n- return this.element;\n- };\n \n- JqTreeWidget.prototype.getStateFromStorage = function() {\n- return this.save_state_handler.getStateFromStorage();\n- };\n+/***/ })\n+/******/ ]);\n+\n+ }).apply(root, arguments);\n+});\n+}(this));\n \n- JqTreeWidget.prototype.addToSelection = function(node) {\n- if (node) {\n- this.select_node_handler.addToSelection(node);\n- this._getNodeElementForNode(node).select();\n- this._saveState();\n+(function(root) {\n+define("jqtree-contextmenu", ["jqtree"], function() {\n+ return (function() {\n+(function ($) {\n+ if (!$.fn.tree) {\n+ throw "Error jqTree is not loaded.";\n }\n- return this.element;\n- };\n \n- JqTreeWidget.prototype.getSelectedNodes = function() {\n- return this.select_node_handler.getSelectedNodes();\n- };\n+ $.fn.jqTreeContextMenu = function (options) {\n+ var defaults = {\n+ menuFadeDuration: 250,\n+ selectClickedNode: true,\n+ onContextMenuItem: null,\n+ contextMenuDecider: null\n+ };\n+ var settings = $.extend({}, defaults, options);\n+ var $el = this;\n+ var $menuEl;\n \n- JqTreeWidget.prototype.isNodeSelected = function(node) {\n- return this.select_node_handler.isNodeSelected(node);\n- };\n+ // Check if useContextMenu option is set\n+ var jqTree = $el.data(\'simple_widget_tree\');\n+ if(!jqTree || !jqTree.options.useContextMenu){\n+ throw \'Either jqTree was not found or useContextMenu in jqTree is set to false.\';\n+ }\n \n- JqTreeWidget.prototype.removeFromSelection = function(node) {\n- this.select_node_handler.removeFromSelection(node);\n- this._getNodeElementForNode(node).deselect();\n- this._saveState();\n- return this.element;\n- };\n+ // Check if the parameter is a jquery object\n+ if(settings.menu instanceof jQuery) {\n+ $menuEl = settings.menu;\n+ } else if (typeof settings.menu == "string") {\n+ $menuEl = $(settings.menu);\n+ } else {\n+ throw \'You must pass a menu selector string or jquery element to the jqTreeContextMenu.\';\n+ }\n+ $menuEl.hide();\n+ if (settings.onContextMenuItem) {\n+ this.bind(\'cm-jqtree.item.click\', settings.onContextMenuItem);\n+ }\n \n- JqTreeWidget.prototype.scrollToNode = function(node) {\n- var $element, top;\n- $element = $(node.element);\n- top = $element.offset().top - this.$el.offset().top;\n- this.scroll_handler.scrollTo(top);\n- return this.element;\n- };\n+ // Handle the contextmenu event sent from jqTree when user clicks right mouse button.\n+ $el.bind(\'tree.contextmenu\', function (event) {\n+ var menu = $menuEl;\n+ if (typeof(settings.contextMenuDecider) == "function") {\n+ var menuChoice = settings.contextMenuDecider(event.node);\n+ menu = (typeof menuChoice == "string") ? $(menuChoice) : $menuEl;\n+ }\n+ var x = event.click_event.pageX;\n+ var y = event.click_event.pageY;\n+ var yPadding = 5;\n+ var xPadding = 5;\n \n- JqTreeWidget.prototype.getState = function() {\n- return this.save_state_handler.getState();\n- };\n+ var menuHeight = menu.height();\n+ var menuWidth = menu.width();\n+ var windowHeight = $(window).height();\n+ var windowWidth = $(window).width();\n \n- JqTreeWidget.prototype.setState = function(state) {\n- this.save_state_handler.setInitialState(state);\n- this._refreshElements();\n- return this.element;\n- };\n+ // Make sure the whole menu is rendered within the viewport.\n+ if (menuHeight + y + yPadding > windowHeight) {\n+ y = y - menuHeight;\n+ }\n+ if (menuWidth + x + xPadding > windowWidth) {\n+ x = x - menuWidth;\n+ }\n \n- JqTreeWidget.prototype.setOption = function(option, value) {\n- this.options[option] = value;\n- return this.element;\n- };\n+ // Must call show before we set the offset (offset can not be set on display: none elements).\n+ menu.fadeIn(settings.menuFadeDuration);\n+ menu.offset({ left: x, top: y });\n \n- JqTreeWidget.prototype.moveDown = function() {\n- if (this.key_handler) {\n- this.key_handler.moveDown();\n- }\n- return this.element;\n- };\n+ var dismissContextMenu = function () {\n+ $(document).unbind(\'click.jqtreecontextmenu\');\n+ $el.unbind(\'tree.click.jqtreecontextmenu\');\n+ menu.fadeOut(settings.menuFadeDuration);\n+ };\n \n- JqTreeWidget.prototype.moveUp = function() {\n- if (this.key_handler) {\n- this.key_handler.moveUp();\n- }\n- return this.element;\n- };\n+ // Make it possible to dismiss context menu by clicking somewhere in the document.\n+ $(document).bind(\'click.jqtreecontextmenu\', function (e) {\n+ if (x != e.pageX || y != e.pageY) {\n+ dismissContextMenu();\n+ }\n+ });\n+ // Dismiss context menu if another node in the tree is clicked.\n+ $el.bind(\'tree.click.jqtreecontextmenu\', function () {\n+ dismissContextMenu();\n+ });\n \n- JqTreeWidget.prototype.getVersion = function() {\n- return __version__;\n- };\n+ // Make the selection follow the node that was right clicked on (if desired).\n+ if (settings.selectClickedNode && $el.tree(\'getSelectedNode\') !== event.node) {\n+ $el.tree(\'selectNode\', event.node);\n+ }\n+\n+ // Handle click on menu items, if it\'s not disabled.\n+ menu.find(\'li\').off(\'click.contextmenu\').on(\'click.contextmenu\', function (e) {\n+ e.stopImmediatePropagation();\n+ dismissContextMenu();\n+ $el.trigger(\'cm-jqtree.item.click\', [event.node, $(this)]);\n+ });\n+ });\n+\n+ return this;\n+ };\n+} (jQuery));\n \n- JqTreeWidget.prototype._init = function() {\n- JqTreeWidget.__super__._init.call(this);\n- this.element = this.$el;\n- this.mouse_delay = 300;\n- this.is_initialized = false;\n- this.options.rtl = this._getRtlOption();\n- if (!this.options.closedIcon) {\n- this.options.closedIcon = this._getDefaultClosedIcon();\n- }\n- this.renderer = new ElementsRenderer(this);\n- if (SaveStateHandler != null) {\n- this.save_state_handler = new SaveStateHandler(this);\n- } else {\n- this.options.saveState = false;\n- }\n- if (SelectNodeHandler != null) {\n- this.select_node_handler = new SelectNodeHandler(this);\n- }\n- if (DragAndDropHandler != null) {\n- this.dnd_handler = new DragAndDropHandler(this);\n- } else {\n- this.options.dragAndDrop = false;\n- }\n- if (ScrollHandler != null) {\n- this.scroll_handler = new ScrollHandler(this);\n- }\n- if ((KeyHandler != null) && (SelectNodeHandler != null)) {\n- this.key_handler = new KeyHandler(this);\n- }\n- this._initData();\n- this.element.click($.proxy(this._click, this));\n- this.element.dblclick($.proxy(this._dblclick, this));\n- if (this.options.useContextMenu) {\n- return this.element.bind(\'contextmenu\', $.proxy(this._contextmenu, this));\n- }\n- };\n \n- JqTreeWidget.prototype._deinit = function() {\n- this.element.empty();\n- this.element.unbind();\n- if (this.key_handler) {\n- this.key_handler.deinit();\n- }\n- this.tree = null;\n- return JqTreeWidget.__super__._deinit.call(this);\n- };\n+ }).apply(root, arguments);\n+});\n+}(this));\n \n- JqTreeWidget.prototype._initData = function() {\n- if (this.options.data) {\n- return this._loadData(this.options.data);\n- } else {\n- return this._loadDataFromUrl(this._getDataUrlInfo());\n- }\n- };\n+/* Pattern utils\n+ */\n \n- JqTreeWidget.prototype._getDataUrlInfo = function(node) {\n- var data_url, getUrlFromString;\n- data_url = this.options.dataUrl || this.element.data(\'url\');\n- getUrlFromString = (function(_this) {\n- return function() {\n- var data, selected_node_id, url_info;\n- url_info = {\n- url: data_url\n- };\n- if (node && node.id) {\n- data = {\n- node: node.id\n- };\n- url_info[\'data\'] = data;\n- } else {\n- selected_node_id = _this._getNodeIdToBeSelected();\n- if (selected_node_id) {\n- data = {\n- selected_node: selected_node_id\n- };\n- url_info[\'data\'] = data;\n- }\n- }\n- return url_info;\n- };\n- })(this);\n- if ($.isFunction(data_url)) {\n- return data_url(node);\n- } else if ($.type(data_url) === \'string\') {\n- return getUrlFromString();\n- } else {\n- return data_url;\n- }\n- };\n \n- JqTreeWidget.prototype._getNodeIdToBeSelected = function() {\n- if (this.options.saveState) {\n- return this.save_state_handler.getNodeIdToBeSelected();\n- } else {\n- return null;\n- }\n- };\n+define(\'mockup-utils\',[\n+ \'jquery\'\n+], function($) {\n+ \'use strict\';\n \n- JqTreeWidget.prototype._initTree = function(data) {\n- var doInit, must_load_on_demand;\n- doInit = (function(_this) {\n- return function() {\n- if (!_this.is_initialized) {\n- _this.is_initialized = true;\n- return _this._triggerEvent(\'tree.init\');\n- }\n- };\n- })(this);\n- this.tree = new this.options.nodeClass(null, true, this.options.nodeClass);\n- if (this.select_node_handler) {\n- this.select_node_handler.clear();\n- }\n- this.tree.loadFromData(data);\n- must_load_on_demand = this._setInitialState();\n- this._refreshElements();\n- if (!must_load_on_demand) {\n- return doInit();\n- } else {\n- return this._setInitialStateOnDemand(doInit);\n- }\n- };\n+ var QueryHelper = function(options) {\n+ /* if pattern argument provided, it can implement the interface of:\n+ * - browsing: boolean if currently browsing\n+ * - currentPath: string of current path to apply to search if browsing\n+ * - basePath: default path to provide if no subpath used\n+ */\n \n- JqTreeWidget.prototype._setInitialState = function() {\n- var autoOpenNodes, is_restored, must_load_on_demand, ref2, restoreState;\n- restoreState = (function(_this) {\n- return function() {\n- var must_load_on_demand, state;\n- if (!(_this.options.saveState && _this.save_state_handler)) {\n- return [false, false];\n- } else {\n- state = _this.save_state_handler.getStateFromStorage();\n- if (!state) {\n- return [false, false];\n- } else {\n- must_load_on_demand = _this.save_state_handler.setInitialState(state);\n- return [true, must_load_on_demand];\n- }\n- }\n- };\n- })(this);\n- autoOpenNodes = (function(_this) {\n- return function() {\n- var max_level, must_load_on_demand;\n- if (_this.options.autoOpen === false) {\n- return false;\n- }\n- max_level = _this._getAutoOpenMaxLevel();\n- must_load_on_demand = false;\n- _this.tree.iterate(function(node, level) {\n- if (node.load_on_demand) {\n- must_load_on_demand = true;\n- return false;\n- } else if (!node.hasChildren()) {\n- return false;\n- } else {\n- node.is_open = true;\n- return level !== max_level;\n- }\n- });\n- return must_load_on_demand;\n- };\n- })(this);\n- ref2 = restoreState(), is_restored = ref2[0], must_load_on_demand = ref2[1];\n- if (!is_restored) {\n- must_load_on_demand = autoOpenNodes();\n- }\n- return must_load_on_demand;\n- };\n+ var self = this;\n+ var defaults = {\n+ pattern: null, // must be passed in\n+ vocabularyUrl: null,\n+ searchParam: \'SearchableText\', // query string param to pass to search url\n+ pathOperator: \'plone.app.querystring.operation.string.path\',\n+ attributes: [\'UID\', \'Title\', \'Description\', \'getURL\', \'portal_type\'],\n+ batchSize: 10, // number of results to retrive\n+ baseCriteria: [],\n+ sort_on: \'is_folderish\',\n+ sort_order: \'reverse\',\n+ pathDepth: 1\n+ };\n+ self.options = $.extend({}, defaults, options);\n \n- JqTreeWidget.prototype._setInitialStateOnDemand = function(cb_finished) {\n- var autoOpenNodes, restoreState;\n- restoreState = (function(_this) {\n- return function() {\n- var state;\n- if (!(_this.options.saveState && _this.save_state_handler)) {\n- return false;\n- } else {\n- state = _this.save_state_handler.getStateFromStorage();\n- if (!state) {\n- return false;\n- } else {\n- _this.save_state_handler.setInitialStateOnDemand(state, cb_finished);\n- return true;\n- }\n- }\n- };\n- })(this);\n- autoOpenNodes = (function(_this) {\n- return function() {\n- var loadAndOpenNode, loading_count, max_level, openNodes;\n- max_level = _this._getAutoOpenMaxLevel();\n- loading_count = 0;\n- loadAndOpenNode = function(node) {\n- loading_count += 1;\n- return _this._openNode(node, false, function() {\n- loading_count -= 1;\n- return openNodes();\n- });\n- };\n- openNodes = function() {\n- _this.tree.iterate(function(node, level) {\n- if (node.load_on_demand) {\n- if (!node.is_loading) {\n- loadAndOpenNode(node);\n- }\n- return false;\n- } else {\n- _this._openNode(node, false);\n- return level !== max_level;\n- }\n- });\n- if (loading_count === 0) {\n- return cb_finished();\n- }\n- };\n- return openNodes();\n+ self.pattern = self.options.pattern;\n+ if (self.pattern === undefined || self.pattern === null) {\n+ self.pattern = {\n+ browsing: false,\n+ basePath: \'/\'\n };\n- })(this);\n- if (!restoreState()) {\n- return autoOpenNodes();\n }\n- };\n \n- JqTreeWidget.prototype._getAutoOpenMaxLevel = function() {\n- if (this.options.autoOpen === true) {\n- return -1;\n- } else {\n- return parseInt(this.options.autoOpen);\n+ if (self.options.url && !self.options.vocabularyUrl) {\n+ self.options.vocabularyUrl = self.options.url;\n+ } else if (self.pattern.vocabularyUrl) {\n+ self.options.vocabularyUrl = self.pattern.vocabularyUrl;\n }\n- };\n+ self.valid = Boolean(self.options.vocabularyUrl);\n \n+ self.getBatch = function(page) {\n+ return {\n+ page: page ? page : 1,\n+ size: self.options.batchSize\n+ };\n+ };\n \n- /*\n- Redraw the tree or part of the tree.\n- * from_node: redraw this subtree\n- */\n+ self.getCurrentPath = function() {\n+ var pattern = self.pattern;\n+ var currentPath;\n+ /* If currentPath is set on the QueryHelper object, use that first.\n+ * Then, check on the pattern.\n+ * Finally, see if it is a function and call it if it is.\n+ */\n+ if (self.currentPath) {\n+ currentPath = self.currentPath;\n+ } else {\n+ currentPath = pattern.currentPath;\n+ }\n+ if (typeof currentPath === \'function\') {\n+ currentPath = currentPath();\n+ }\n+ var path = currentPath;\n+ if (!path) {\n+ if (pattern.basePath) {\n+ path = pattern.basePath;\n+ } else if (pattern.options.basePath) {\n+ path = pattern.options.basePath;\n+ } else {\n+ path = \'/\';\n+ }\n+ }\n+ return path;\n+ };\n \n- JqTreeWidget.prototype._refreshElements = function(from_node) {\n- if (from_node == null) {\n- from_node = null;\n- }\n- this.renderer.render(from_node);\n- return this._triggerEvent(\'tree.refresh\');\n- };\n+ self.getCriterias = function(term, searchOptions) {\n+ if (searchOptions === undefined) {\n+ searchOptions = {};\n+ }\n+ searchOptions = $.extend({}, {\n+ useBaseCriteria: true,\n+ additionalCriterias: []\n+ }, searchOptions);\n \n- JqTreeWidget.prototype._click = function(e) {\n- var click_target, event, node;\n- click_target = this._getClickTarget(e.target);\n- if (click_target) {\n- if (click_target.type === \'button\') {\n- this.toggle(click_target.node, this.options.slide);\n- e.preventDefault();\n- return e.stopPropagation();\n- } else if (click_target.type === \'label\') {\n- node = click_target.node;\n- event = this._triggerEvent(\'tree.click\', {\n- node: node,\n- click_event: e\n+ var criterias = [];\n+ if (searchOptions.useBaseCriteria) {\n+ criterias = self.options.baseCriteria.slice(0);\n+ }\n+ if (term) {\n+ term += \'*\';\n+ criterias.push({\n+ i: self.options.searchParam,\n+ o: \'plone.app.querystring.operation.string.contains\',\n+ v: term\n });\n- if (!event.isDefaultPrevented()) {\n- return this._selectNode(node, true);\n- }\n }\n- }\n- };\n+ if (searchOptions.searchPath) {\n+ criterias.push({\n+ i: \'path\',\n+ o: self.options.pathOperator,\n+ v: searchOptions.searchPath + \'::\' + self.options.pathDepth\n+ });\n+ } else if (self.pattern.browsing) {\n+ criterias.push({\n+ i: \'path\',\n+ o: self.options.pathOperator,\n+ v: self.getCurrentPath() + \'::\' + self.options.pathDepth\n+ });\n+ }\n+ criterias = criterias.concat(searchOptions.additionalCriterias);\n+ return criterias;\n+ };\n \n- JqTreeWidget.prototype._dblclick = function(e) {\n- var click_target;\n- click_target = this._getClickTarget(e.target);\n- if (click_target && click_target.type === \'label\') {\n- return this._triggerEvent(\'tree.dblclick\', {\n- node: click_target.node,\n- click_event: e\n- });\n- }\n- };\n+ self.getQueryData = function(term, page) {\n+ var data = {\n+ query: JSON.stringify({\n+ criteria: self.getCriterias(term),\n+ sort_on: self.options.sort_on,\n+ sort_order: self.options.sort_order\n+ }),\n+ attributes: JSON.stringify(self.options.attributes)\n+ };\n+ if (page) {\n+ data.batch = JSON.stringify(self.getBatch(page));\n+ }\n+ return data;\n+ };\n \n- JqTreeWidget.prototype._getClickTarget = function(element) {\n- var $button, $el, $target, node;\n- $target = $(element);\n- $button = $target.closest(\'.jqtree-toggler\');\n- if ($button.length) {\n- node = this._getNode($button);\n- if (node) {\n- return {\n- type: \'button\',\n- node: node\n- };\n+ self.getUrl = function() {\n+ var url = self.options.vocabularyUrl;\n+ if (url.indexOf(\'?\') === -1) {\n+ url += \'?\';\n+ } else {\n+ url += \'&\';\n }\n- } else {\n- $el = $target.closest(\'.jqtree-element\');\n- if ($el.length) {\n- node = this._getNode($el);\n- if (node) {\n+ return url + $.param(self.getQueryData());\n+ };\n+\n+ self.selectAjax = function() {\n+ return {\n+ url: self.options.vocabularyUrl,\n+ dataType: \'JSON\',\n+ quietMillis: 100,\n+ data: function(term, page) {\n+ return self.getQueryData(term, page);\n+ },\n+ results: function(data, page) {\n+ var more = (page * 10) < data.total; // whether or not there are more results available\n+ // notice we return the value of more so Select2 knows if more results can be loaded\n return {\n- type: \'label\',\n- node: node\n+ results: data.results,\n+ more: more\n };\n }\n+ };\n+ };\n+\n+ self.search = function(term, operation, value, callback, useBaseCriteria, type) {\n+ if (useBaseCriteria === undefined) {\n+ useBaseCriteria = true;\n }\n- }\n- return null;\n- };\n+ if (type === undefined) {\n+ type = \'GET\';\n+ }\n+ var criteria = [];\n+ if (useBaseCriteria) {\n+ criteria = self.options.baseCriteria.slice(0);\n+ }\n+ criteria.push({\n+ i: term,\n+ o: operation,\n+ v: value\n+ });\n+ var data = {\n+ query: JSON.stringify({\n+ criteria: criteria\n+ }),\n+ attributes: JSON.stringify(self.options.attributes)\n+ };\n+ $.ajax({\n+ url: self.options.vocabularyUrl,\n+ dataType: \'JSON\',\n+ data: data,\n+ type: type,\n+ success: callback\n+ });\n+ };\n \n- JqTreeWidget.prototype._getNode = function($element) {\n- var $li;\n- $li = $element.closest(\'li.jqtree_common\');\n- if ($li.length === 0) {\n- return null;\n- } else {\n- return $li.data(\'node\');\n- }\n+ return self;\n };\n \n- JqTreeWidget.prototype._getNodeElementForNode = function(node) {\n- if (node.isFolder()) {\n- return new FolderElement(node, this);\n- } else {\n- return new NodeElement(node, this);\n+ var Loading = function(options) {\n+ /*\n+ * Options:\n+ * backdrop(pattern): if you want to have the progress indicator work\n+ * seamlessly with backdrop pattern\n+ * zIndex(integer or function): to override default z-index used\n+ */\n+ var self = this;\n+ self.className = \'plone-loader\';\n+ var defaults = {\n+ backdrop: null,\n+ zIndex: 10005 // can be a function\n+ };\n+ if (!options) {\n+ options = {};\n }\n- };\n+ self.options = $.extend({}, defaults, options);\n \n- JqTreeWidget.prototype._getNodeElement = function($element) {\n- var node;\n- node = this._getNode($element);\n- if (node) {\n- return this._getNodeElementForNode(node);\n- } else {\n- return null;\n- }\n- };\n+ self.init = function() {\n+ self.$el = $(\'.\' + self.className);\n+ if (self.$el.length === 0) {\n+ self.$el = $(\'
    \');\n+ self.$el.addClass(self.className).hide().appendTo(\'body\');\n+ }\n+ };\n \n- JqTreeWidget.prototype._contextmenu = function(e) {\n- var $div, node;\n- $div = $(e.target).closest(\'ul.jqtree-tree .jqtree-element\');\n- if ($div.length) {\n- node = this._getNode($div);\n- if (node) {\n- e.preventDefault();\n- e.stopPropagation();\n- this._triggerEvent(\'tree.contextmenu\', {\n- node: node,\n- click_event: e\n+ self.show = function(closable) {\n+ self.init();\n+ self.$el.show();\n+ var zIndex = self.options.zIndex;\n+ if (typeof(zIndex) === \'function\') {\n+ zIndex = Math.max(zIndex(), 10005);\n+ } else {\n+ // go through all modals and backdrops and make sure we have a higher\n+ // z-index to use\n+ zIndex = 10005;\n+ $(\'.plone-modal-wrapper,.plone-modal-backdrop\').each(function() {\n+ zIndex = Math.max(zIndex, $(this).css(\'zIndex\') || 10005);\n });\n- return false;\n+ zIndex += 1;\n }\n- }\n- };\n+ self.$el.css(\'zIndex\', zIndex);\n \n- JqTreeWidget.prototype._saveState = function() {\n- if (this.options.saveState) {\n- return this.save_state_handler.saveState();\n- }\n+ if (closable === undefined) {\n+ closable = true;\n+ }\n+ if (self.options.backdrop) {\n+ self.options.backdrop.closeOnClick = closable;\n+ self.options.backdrop.closeOnEsc = closable;\n+ self.options.backdrop.init();\n+ self.options.backdrop.show();\n+ }\n+ };\n+\n+ self.hide = function() {\n+ self.init();\n+ self.$el.hide();\n+ };\n+\n+ return self;\n };\n \n- JqTreeWidget.prototype._mouseCapture = function(position_info) {\n- if (this.options.dragAndDrop) {\n- return this.dnd_handler.mouseCapture(position_info);\n+ var getAuthenticator = function() {\n+ var $el = $(\'input[name="_authenticator"]\');\n+ if ($el.length === 0) {\n+ $el = $(\'a[href*="_authenticator"]\');\n+ if ($el.length > 0) {\n+ return $el.attr(\'href\').split(\'_authenticator=\')[1];\n+ }\n+ return \'\';\n } else {\n- return false;\n+ return $el.val();\n }\n };\n \n- JqTreeWidget.prototype._mouseStart = function(position_info) {\n- if (this.options.dragAndDrop) {\n- return this.dnd_handler.mouseStart(position_info);\n- } else {\n- return false;\n+ var generateId = function(prefix) {\n+ if (prefix === undefined) {\n+ prefix = \'id\';\n }\n+ return prefix + (Math.floor((1 + Math.random()) * 0x10000)\n+ .toString(16).substring(1));\n };\n \n- JqTreeWidget.prototype._mouseDrag = function(position_info) {\n- var result;\n- if (this.options.dragAndDrop) {\n- result = this.dnd_handler.mouseDrag(position_info);\n- if (this.scroll_handler) {\n- this.scroll_handler.checkScrolling();\n- }\n- return result;\n+ var setId = function($el, prefix) {\n+ if (prefix === undefined) {\n+ prefix = \'id\';\n+ }\n+ var id = $el.attr(\'id\');\n+ if (id === undefined) {\n+ id = generateId(prefix);\n } else {\n- return false;\n+ /* hopefully we don\'t screw anything up here... changing the id\n+ * in some cases so we get a decent selector */\n+ id = id.replace(/\\./g, \'-\');\n }\n+ $el.attr(\'id\', id);\n+ return id;\n };\n \n- JqTreeWidget.prototype._mouseStop = function(position_info) {\n- if (this.options.dragAndDrop) {\n- return this.dnd_handler.mouseStop(position_info);\n- } else {\n- return false;\n+ var getWindow = function() {\n+ var win = window;\n+ if (win.parent !== window) {\n+ win = win.parent;\n }\n+ return win;\n };\n \n- JqTreeWidget.prototype._triggerEvent = function(event_name, values) {\n- var event;\n- event = $.Event(event_name);\n- $.extend(event, values);\n- this.element.trigger(event);\n- return event;\n+ var parseBodyTag = function(txt) {\n+ return $((/]*>[^]*<\\/body>/im).exec(txt)[0]\n+ .replace(\'\', \'
    \')).eq(0).html();\n };\n \n- JqTreeWidget.prototype.testGenerateHitAreas = function(moving_node) {\n- this.dnd_handler.current_item = this._getNodeElementForNode(moving_node);\n- this.dnd_handler.generateHitAreas();\n- return this.dnd_handler.hit_areas;\n+ var featureSupport = {\n+ /* Well tested feature support for things we use in mockup.\n+ * All gathered from: http://diveintohtml5.info/everything.html\n+ * Alternative to using some form of modernizr.\n+ */\n+ dragAndDrop: function() {\n+ return \'draggable\' in document.createElement(\'span\');\n+ },\n+ fileApi: function() {\n+ return typeof FileReader != \'undefined\'; // jshint ignore:line\n+ },\n+ history: function() {\n+ return !!(window.history && window.history.pushState);\n+ }\n };\n \n- JqTreeWidget.prototype._selectCurrentNode = function() {\n- var node, node_element;\n- node = this.getSelectedNode();\n- if (node) {\n- node_element = this._getNodeElementForNode(node);\n- if (node_element) {\n- return node_element.select();\n- }\n+ var bool = function(val) {\n+ if (typeof val === \'string\') {\n+ val = $.trim(val).toLowerCase();\n }\n+ return [\'false\', false, \'0\', 0, \'\', undefined, null].indexOf(val) === -1;\n };\n \n- JqTreeWidget.prototype._deselectCurrentNode = function() {\n- var node;\n- node = this.getSelectedNode();\n- if (node) {\n- return this.removeFromSelection(node);\n- }\n+ var escapeHTML = function(val) {\n+ return $(\'
    \').text(val).html();\n };\n \n- JqTreeWidget.prototype._getDefaultClosedIcon = function() {\n- if (this.options.rtl) {\n- return \'◀\';\n- } else {\n- return \'►\';\n- }\n+ var removeHTML = function(val) {\n+ return val.replace(/<[^>]+>/ig, \'\');\n };\n \n- JqTreeWidget.prototype._getRtlOption = function() {\n- var data_rtl;\n- if (this.options.rtl !== null) {\n- return this.options.rtl;\n- } else {\n- data_rtl = this.element.data(\'rtl\');\n- if ((data_rtl != null) && data_rtl !== false) {\n- return true;\n- } else {\n- return false;\n+ var storage = {\n+ // Simple local storage wrapper, which doesn\'t break down if it\'s not available.\n+ get: function (name) {\n+ if (window.localStorage) {\n+ var val = window.localStorage[name];\n+ return typeof(val) === \'string\' ? JSON.parse(val) : undefined;\n }\n- }\n- };\n+ },\n \n- JqTreeWidget.prototype._notifyLoading = function(is_loading, node, $el) {\n- if (this.options.onLoading) {\n- return this.options.onLoading(is_loading, node, $el);\n+ set: function (name, val) {\n+ if (window.localStorage) {\n+ window.localStorage[name] = JSON.stringify(val);\n+ }\n }\n };\n \n- return JqTreeWidget;\n-\n-})(MouseWidget);\n-\n-JqTreeWidget.getModule = function(name) {\n- var modules;\n- modules = {\n- \'node\': node_module,\n- \'util\': util_module\n+ return {\n+ bool: bool,\n+ escapeHTML: escapeHTML,\n+ removeHTML: removeHTML,\n+ featureSupport: featureSupport,\n+ generateId: generateId,\n+ getAuthenticator: getAuthenticator,\n+ getWindow: getWindow,\n+ Loading: Loading,\n+ loading: new Loading(), // provide default loader\n+ parseBodyTag: parseBodyTag,\n+ QueryHelper: QueryHelper,\n+ setId: setId,\n+ storage: storage\n };\n- return modules[name];\n-};\n-\n-SimpleWidget.register(JqTreeWidget, \'tree\');\n-\n-},{"./drag_and_drop_handler":1,"./elements_renderer":2,"./key_handler":3,"./mouse.widget":4,"./node":5,"./node_element":6,"./save_state_handler":7,"./scroll_handler":8,"./select_node_handler":9,"./simple.widget":10,"./util":12,"./version":13}],12:[function(require,module,exports){\n-var _indexOf, getBoolString, html_escape, indexOf, isInt;\n-\n-_indexOf = function(array, item) {\n- var i, j, len, value;\n- for (i = j = 0, len = array.length; j < len; i = ++j) {\n- value = array[i];\n- if (value === item) {\n- return i;\n- }\n- }\n- return -1;\n-};\n-\n-indexOf = function(array, item) {\n- if (array.indexOf) {\n- return array.indexOf(item);\n- } else {\n- return _indexOf(array, item);\n- }\n-};\n-\n-isInt = function(n) {\n- return typeof n === \'number\' && n % 1 === 0;\n-};\n-\n-html_escape = function(string) {\n- return (\'\' + string).replace(/&/g, \'&\').replace(//g, \'>\').replace(/"/g, \'"\').replace(/\'/g, \''\').replace(/\\//g, \'/\');\n-};\n-\n-getBoolString = function(value) {\n- if (value) {\n- return \'true\';\n- } else {\n- return \'false\';\n- }\n-};\n-\n-module.exports = {\n- _indexOf: _indexOf,\n- getBoolString: getBoolString,\n- html_escape: html_escape,\n- indexOf: indexOf,\n- isInt: isInt\n-};\n-\n-},{}],13:[function(require,module,exports){\n-module.exports = \'1.3.3\';\n-\n-},{}]},{},[11]);\n-\n-\n- }).apply(root, arguments);\n });\n-}(this));\n \n /* Tree pattern.\n *\n@@ -8092,11 +8048,14 @@ define(\'mockup-patterns-tree\',[\n }\n }\n \n- if (self.options.dragAndDrop && self.options.onCanMoveTo === undefined) {\n+ if (self.options.onCanMoveTo === undefined) {\n self.options.onCanMoveTo = function(moved, target, position) {\n /* if not using folder option, just allow, otherwise, only allow if folder */\n- return target.folder === undefined || target.folder === true;\n- };\n+ if (position === "inside") {\n+ return target.folder === undefined || target.folder === true;\n+ }\n+ return true;\n+ }\n }\n \n if (self.options.data && typeof(self.options.data) === \'string\') {\n@@ -9087,7 +9046,7 @@ exports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;\n-};\n+}\n \n exports.createElement = function(tag, ns) {\n return document.createElementNS ?\n@@ -9096,7 +9055,7 @@ exports.createElement = function(tag, ns) {\n };\n \n exports.hasCssClass = function(el, name) {\n- var classes = (el.className || "").split(/\\s+/g);\n+ var classes = (el.className + "").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n };\n exports.addCssClass = function(el, name) {\n@@ -9487,7 +9446,7 @@ exports.isIE =\n \n exports.isOldIE = exports.isIE && exports.isIE < 9;\n exports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === "Gecko";\n-exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv\\:(\\d+)/)||[])[1], 10) < 4;\n+exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\\d+)/)||[])[1], 10) < 4;\n exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]";\n exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;\n \n@@ -9724,7 +9683,7 @@ function normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n \n if (!useragent.isMac && pressedKeys) {\n- if (pressedKeys.OSKey)\n+ if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n@@ -9790,18 +9749,8 @@ exports.addCommandKeyListener = function(el, callback) {\n var lastDefaultPrevented = null;\n \n addListener(el, "keydown", function(e) {\n- var keyCode = e.keyCode;\n- pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1;\n- if (keyCode == 91 || keyCode == 92) {\n- pressedKeys.OSKey = true;\n- } else if (pressedKeys.OSKey) {\n- if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1)\n- resetPressedKeys();\n- }\n- if (pressedKeys[keyCode] == 1)\n- pressedKeys.count++;\n- pressedKeys.lastT = e.timeStamp;\n- var result = normalizeCommandKeys(callback, e, keyCode);\n+ pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n+ var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n });\n@@ -9814,16 +9763,7 @@ exports.addCommandKeyListener = function(el, callback) {\n });\n \n addListener(el, "keyup", function(e) {\n- var keyCode = e.keyCode;\n- if (!pressedKeys[keyCode]) {\n- resetPressedKeys();\n- } else {\n- pressedKeys.count = Math.max(pressedKeys.count - 1, 0);\n- }\n- if (keyCode == 91 || keyCode == 92) {\n- pressedKeys.OSKey = false;\n- }\n- pressedKeys[keyCode] = null;\n+ pressedKeys[e.keyCode] = null;\n });\n \n if (!pressedKeys) {\n@@ -9834,8 +9774,6 @@ exports.addCommandKeyListener = function(el, callback) {\n };\n function resetPressedKeys() {\n pressedKeys = Object.create(null);\n- pressedKeys.count = 0;\n- pressedKeys.lastT = 0;\n }\n \n if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {\n@@ -9915,7 +9853,7 @@ exports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i= 53) {\n+ onInput();\n+ }\n };\n \n \n@@ -10902,6 +10848,7 @@ function GutterHandler(mouseHandler) {\n \n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n+ editor._signal("showGutterTooltip", tooltip);\n editor.on("mousewheel", hideTooltip);\n \n if (mouseHandler.$tooltipFollowsMouse) {\n@@ -10921,6 +10868,7 @@ function GutterHandler(mouseHandler) {\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n+ editor._signal("hideGutterTooltip", tooltip);\n editor.removeEventListener("mousewheel", hideTooltip);\n }\n }\n@@ -12240,7 +12188,7 @@ var KeyBinding = function(editor) {\n success = commands.exec("insertstring", this.$editor, keyString);\n }\n \n- if (success)\n+ if (success && this.$editor._signal)\n this.$editor._signal("keyboardActivity", toExecute);\n \n return success;\n@@ -13513,6 +13461,11 @@ var TextHighlightRules = function() {\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n+ var toInsert = null;\n+ if (Array.isArray(rule)) {\n+ toInsert = rule;\n+ rule = {};\n+ }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n@@ -13560,11 +13513,14 @@ var TextHighlightRules = function() {\n }\n }\n }\n- if (rule.include || typeof rule == "string") {\n- var includeName = rule.include || rule;\n- var toInsert = rules[includeName];\n- } else if (Array.isArray(rule))\n- toInsert = rule;\n+ var includeName = typeof rule == "string"\n+ ? rule\n+ : typeof rule.include == "string"\n+ ? rule.include\n+ : "";\n+ if (includeName) {\n+ toInsert = rules[includeName];\n+ }\n \n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n@@ -13572,7 +13528,6 @@ var TextHighlightRules = function() {\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n- toInsert = null;\n }\n \n if (rule.keywordMap) {\n@@ -13676,58 +13631,6 @@ var Behaviour = function() {\n exports.Behaviour = Behaviour;\n });\n \n-define("ace/unicode",["require","exports","module"], function(require, exports, module) {\n-"use strict";\n-exports.packages = {};\n-\n-addUnicodePackage({\n- L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n- Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",\n- Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",\n- Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",\n- Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",\n- Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n- M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",\n- Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",\n- Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",\n- Me: "0488048906DE20DD-20E020E2-20E4A670-A672",\n- N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n- Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n- Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",\n- No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",\n- P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",\n- Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",\n- Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",\n- Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",\n- Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",\n- Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",\n- Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",\n- Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",\n- S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",\n- Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",\n- Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",\n- Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",\n- So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",\n- Z: "002000A01680180E2000-200A20282029202F205F3000",\n- Zs: "002000A01680180E2000-200A202F205F3000",\n- Zl: "2028",\n- Zp: "2029",\n- C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",\n- Cc: "0000-001F007F-009F",\n- Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",\n- Co: "E000-F8FF",\n- Cs: "D800-DFFF",\n- Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"\n-});\n-\n-function addUnicodePackage (pack) {\n- var codePoint = /\\w{4}/g;\n- for (var name in pack)\n- exports.packages[name] = pack[name].replace(codePoint, "\\\\u$&");\n-}\n-\n-});\n-\n define("ace/token_iterator",["require","exports","module"], function(require, exports, module) {\n "use strict";\n var TokenIterator = function(session, initialRow, initialColumn) {\n@@ -13804,12 +13707,425 @@ var TokenIterator = function(session, initialRow, initialColumn) {\n exports.TokenIterator = TokenIterator;\n });\n \n-define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) {\n+define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) {\n+"use strict";\n+\n+var oop = require("../../lib/oop");\n+var Behaviour = require("../behaviour").Behaviour;\n+var TokenIterator = require("../../token_iterator").TokenIterator;\n+var lang = require("../../lib/lang");\n+\n+var SAFE_INSERT_IN_TOKENS =\n+ ["text", "paren.rparen", "punctuation.operator"];\n+var SAFE_INSERT_BEFORE_TOKENS =\n+ ["text", "paren.rparen", "punctuation.operator", "comment"];\n+\n+var context;\n+var contextCache = {};\n+var initContext = function(editor) {\n+ var id = -1;\n+ if (editor.multiSelect) {\n+ id = editor.selection.index;\n+ if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n+ contextCache = {rangeCount: editor.multiSelect.rangeCount};\n+ }\n+ if (contextCache[id])\n+ return context = contextCache[id];\n+ context = contextCache[id] = {\n+ autoInsertedBrackets: 0,\n+ autoInsertedRow: -1,\n+ autoInsertedLineEnd: "",\n+ maybeInsertedBrackets: 0,\n+ maybeInsertedRow: -1,\n+ maybeInsertedLineStart: "",\n+ maybeInsertedLineEnd: ""\n+ };\n+};\n+\n+var getWrapped = function(selection, selected, opening, closing) {\n+ var rowDiff = selection.end.row - selection.start.row;\n+ return {\n+ text: opening + selected + closing,\n+ selection: [\n+ 0,\n+ selection.start.column + 1,\n+ rowDiff,\n+ selection.end.column + (rowDiff ? 0 : 1)\n+ ]\n+ };\n+};\n+\n+var CstyleBehaviour = function() {\n+ this.add("braces", "insertion", function(state, action, editor, session, text) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ if (text == \'{\') {\n+ initContext(editor);\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, \'{\', \'}\');\n+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n+ if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) {\n+ CstyleBehaviour.recordAutoInsert(editor, session, "}");\n+ return {\n+ text: \'{}\',\n+ selection: [1, 1]\n+ };\n+ } else {\n+ CstyleBehaviour.recordMaybeInsert(editor, session, "{");\n+ return {\n+ text: \'{\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ } else if (text == \'}\') {\n+ initContext(editor);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar == \'}\') {\n+ var matching = session.$findOpeningBracket(\'}\', {column: cursor.column + 1, row: cursor.row});\n+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n+ CstyleBehaviour.popAutoInsertedClosing();\n+ return {\n+ text: \'\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ } else if (text == "\\n" || text == "\\r\\n") {\n+ initContext(editor);\n+ var closing = "";\n+ if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n+ closing = lang.stringRepeat("}", context.maybeInsertedBrackets);\n+ CstyleBehaviour.clearMaybeInsertedClosing();\n+ }\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar === \'}\') {\n+ var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, \'}\');\n+ if (!openBracePos)\n+ return null;\n+ var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n+ } else if (closing) {\n+ var next_indent = this.$getIndent(line);\n+ } else {\n+ CstyleBehaviour.clearMaybeInsertedClosing();\n+ return;\n+ }\n+ var indent = next_indent + session.getTabString();\n+\n+ return {\n+ text: \'\\n\' + indent + \'\\n\' + next_indent + closing,\n+ selection: [1, indent.length, 1, indent.length]\n+ };\n+ } else {\n+ CstyleBehaviour.clearMaybeInsertedClosing();\n+ }\n+ });\n+\n+ this.add("braces", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && selected == \'{\') {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.end.column, range.end.column + 1);\n+ if (rightChar == \'}\') {\n+ range.end.column++;\n+ return range;\n+ } else {\n+ context.maybeInsertedBrackets--;\n+ }\n+ }\n+ });\n+\n+ this.add("parens", "insertion", function(state, action, editor, session, text) {\n+ if (text == \'(\') {\n+ initContext(editor);\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, \'(\', \')\');\n+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n+ CstyleBehaviour.recordAutoInsert(editor, session, ")");\n+ return {\n+ text: \'()\',\n+ selection: [1, 1]\n+ };\n+ }\n+ } else if (text == \')\') {\n+ initContext(editor);\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar == \')\') {\n+ var matching = session.$findOpeningBracket(\')\', {column: cursor.column + 1, row: cursor.row});\n+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n+ CstyleBehaviour.popAutoInsertedClosing();\n+ return {\n+ text: \'\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ }\n+ });\n+\n+ this.add("parens", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && selected == \'(\') {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n+ if (rightChar == \')\') {\n+ range.end.column++;\n+ return range;\n+ }\n+ }\n+ });\n+\n+ this.add("brackets", "insertion", function(state, action, editor, session, text) {\n+ if (text == \'[\') {\n+ initContext(editor);\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, \'[\', \']\');\n+ } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n+ CstyleBehaviour.recordAutoInsert(editor, session, "]");\n+ return {\n+ text: \'[]\',\n+ selection: [1, 1]\n+ };\n+ }\n+ } else if (text == \']\') {\n+ initContext(editor);\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ if (rightChar == \']\') {\n+ var matching = session.$findOpeningBracket(\']\', {column: cursor.column + 1, row: cursor.row});\n+ if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n+ CstyleBehaviour.popAutoInsertedClosing();\n+ return {\n+ text: \'\',\n+ selection: [1, 1]\n+ };\n+ }\n+ }\n+ }\n+ });\n+\n+ this.add("brackets", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && selected == \'[\') {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n+ if (rightChar == \']\') {\n+ range.end.column++;\n+ return range;\n+ }\n+ }\n+ });\n+\n+ this.add("string_dquotes", "insertion", function(state, action, editor, session, text) {\n+ if (text == \'"\' || text == "\'") {\n+ if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) \n+ return;\n+ initContext(editor);\n+ var quote = text;\n+ var selection = editor.getSelectionRange();\n+ var selected = session.doc.getTextRange(selection);\n+ if (selected !== "" && selected !== "\'" && selected != \'"\' && editor.getWrapBehavioursEnabled()) {\n+ return getWrapped(selection, selected, quote, quote);\n+ } else if (!selected) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ var leftChar = line.substring(cursor.column-1, cursor.column);\n+ var rightChar = line.substring(cursor.column, cursor.column + 1);\n+ \n+ var token = session.getTokenAt(cursor.row, cursor.column);\n+ var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n+ if (leftChar == "\\\\" && token && /escape/.test(token.type))\n+ return null;\n+ \n+ var stringBefore = token && /string|escape/.test(token.type);\n+ var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n+ \n+ var pair;\n+ if (rightChar == quote) {\n+ pair = stringBefore !== stringAfter;\n+ if (pair && /string\\.end/.test(rightToken.type))\n+ pair = false;\n+ } else {\n+ if (stringBefore && !stringAfter)\n+ return null; // wrap string with different quote\n+ if (stringBefore && stringAfter)\n+ return null; // do not pair quotes inside strings\n+ var wordRe = session.$mode.tokenRe;\n+ wordRe.lastIndex = 0;\n+ var isWordBefore = wordRe.test(leftChar);\n+ wordRe.lastIndex = 0;\n+ var isWordAfter = wordRe.test(leftChar);\n+ if (isWordBefore || isWordAfter)\n+ return null; // before or after alphanumeric\n+ if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n+ return null; // there is rightChar and it isn\'t closing\n+ pair = true;\n+ }\n+ return {\n+ text: pair ? quote + quote : "",\n+ selection: [1,1]\n+ };\n+ }\n+ }\n+ });\n+\n+ this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {\n+ var selected = session.doc.getTextRange(range);\n+ if (!range.isMultiLine() && (selected == \'"\' || selected == "\'")) {\n+ initContext(editor);\n+ var line = session.doc.getLine(range.start.row);\n+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n+ if (rightChar == selected) {\n+ range.end.column++;\n+ return range;\n+ }\n+ }\n+ });\n+\n+};\n+\n+ \n+CstyleBehaviour.isSaneInsertion = function(editor, session) {\n+ var cursor = editor.getCursorPosition();\n+ var iterator = new TokenIterator(session, cursor.row, cursor.column);\n+ if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) {\n+ var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n+ if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS))\n+ return false;\n+ }\n+ iterator.stepForward();\n+ return iterator.getCurrentTokenRow() !== cursor.row ||\n+ this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS);\n+};\n+\n+CstyleBehaviour.$matchTokenType = function(token, types) {\n+ return types.indexOf(token.type || token) > -1;\n+};\n+\n+CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n+ context.autoInsertedBrackets = 0;\n+ context.autoInsertedRow = cursor.row;\n+ context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n+ context.autoInsertedBrackets++;\n+};\n+\n+CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n+ var cursor = editor.getCursorPosition();\n+ var line = session.doc.getLine(cursor.row);\n+ if (!this.isMaybeInsertedClosing(cursor, line))\n+ context.maybeInsertedBrackets = 0;\n+ context.maybeInsertedRow = cursor.row;\n+ context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n+ context.maybeInsertedLineEnd = line.substr(cursor.column);\n+ context.maybeInsertedBrackets++;\n+};\n+\n+CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n+ return context.autoInsertedBrackets > 0 &&\n+ cursor.row === context.autoInsertedRow &&\n+ bracket === context.autoInsertedLineEnd[0] &&\n+ line.substr(cursor.column) === context.autoInsertedLineEnd;\n+};\n+\n+CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n+ return context.maybeInsertedBrackets > 0 &&\n+ cursor.row === context.maybeInsertedRow &&\n+ line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n+ line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n+};\n+\n+CstyleBehaviour.popAutoInsertedClosing = function() {\n+ context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n+ context.autoInsertedBrackets--;\n+};\n+\n+CstyleBehaviour.clearMaybeInsertedClosing = function() {\n+ if (context) {\n+ context.maybeInsertedBrackets = 0;\n+ context.maybeInsertedRow = -1;\n+ }\n+};\n+\n+\n+\n+oop.inherits(CstyleBehaviour, Behaviour);\n+\n+exports.CstyleBehaviour = CstyleBehaviour;\n+});\n+\n+define("ace/unicode",["require","exports","module"], function(require, exports, module) {\n+"use strict";\n+exports.packages = {};\n+\n+addUnicodePackage({\n+ L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n+ Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",\n+ Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",\n+ Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",\n+ Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",\n+ Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n+ M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",\n+ Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",\n+ Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",\n+ Me: "0488048906DE20DD-20E020E2-20E4A670-A672",\n+ N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n+ Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n+ Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",\n+ No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",\n+ P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",\n+ Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",\n+ Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",\n+ Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",\n+ Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",\n+ Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",\n+ Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",\n+ Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",\n+ S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",\n+ Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",\n+ Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",\n+ Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",\n+ So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",\n+ Z: "002000A01680180E2000-200A20282029202F205F3000",\n+ Zs: "002000A01680180E2000-200A202F205F3000",\n+ Zl: "2028",\n+ Zp: "2029",\n+ C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",\n+ Cc: "0000-001F007F-009F",\n+ Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",\n+ Co: "E000-F8FF",\n+ Cs: "D800-DFFF",\n+ Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"\n+});\n+\n+function addUnicodePackage (pack) {\n+ var codePoint = /\\w{4}/g;\n+ for (var name in pack)\n+ exports.packages[name] = pack[name].replace(codePoint, "\\\\u$&");\n+}\n+\n+});\n+\n+define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) {\n "use strict";\n \n var Tokenizer = require("../tokenizer").Tokenizer;\n var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;\n-var Behaviour = require("./behaviour").Behaviour;\n+var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;\n var unicode = require("../unicode");\n var lang = require("../lib/lang");\n var TokenIterator = require("../token_iterator").TokenIterator;\n@@ -13817,10 +14133,10 @@ var Range = require("../range").Range;\n \n var Mode = function() {\n this.HighlightRules = TextHighlightRules;\n- this.$behaviour = new Behaviour();\n };\n \n (function() {\n+ this.$defaultBehaviour = new CstyleBehaviour();\n \n this.tokenRe = new RegExp("^["\n + unicode.packages.L\n@@ -13838,7 +14154,7 @@ var Mode = function() {\n \n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n- this.$highlightRules = this.$highlightRules || new this.HighlightRules();\n+ this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n@@ -14460,7 +14776,7 @@ var Document = function(textOrLines) {\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n- console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\\\'\\\', \\\'\\\']) instead.");\n+ console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead.");\n return this.insertMergedLines(position, ["", ""]);\n };\n this.insert = function(position, text) {\n@@ -16082,7 +16398,7 @@ function Folding() {\n this.removeFold(fold);\n else\n this.expandFold(fold);\n- return;\n+ return fold;\n }\n \n var range = this.getFoldWidgetRange(row, true);\n@@ -16090,7 +16406,7 @@ function Folding() {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n- return;\n+ return fold;\n }\n }\n \n@@ -16369,6 +16685,7 @@ var EditSession = function(text, mode) {\n this.$undoSelect = true;\n \n this.$foldData = [];\n+ this.id = "session" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join("\\n");\n };\n@@ -18305,7 +18622,7 @@ var Search = function() {\n needle = lang.escapeRegExp(needle);\n \n if (options.wholeWord)\n- needle = "\\\\b" + needle + "\\\\b";\n+ needle = addWordBoundary(needle, options);\n \n var modifier = options.caseSensitive ? "gm" : "gmi";\n \n@@ -18394,6 +18711,15 @@ var Search = function() {\n \n }).call(Search.prototype);\n \n+function addWordBoundary(needle, options) {\n+ function wordBoundary(c) {\n+ if (/\\w/.test(c) || options.regExp) return "\\\\b";\n+ return "";\n+ }\n+ return wordBoundary(needle[0]) + needle\n+ + wordBoundary(needle[needle.length - 1]);\n+}\n+\n exports.Search = Search;\n });\n \n@@ -18748,7 +19074,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "goToNextError",\n- bindKey: bindKey("Alt-E", "Ctrl-E"),\n+ bindKey: bindKey("Alt-E", "F4"),\n exec: function(editor) {\n config.loadModule("ace/ext/error_marker", function(module) {\n module.showErrorMarker(editor, 1);\n@@ -18758,7 +19084,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "goToPreviousError",\n- bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"),\n+ bindKey: bindKey("Alt-Shift-E", "Shift-F4"),\n exec: function(editor) {\n config.loadModule("ace/ext/error_marker", function(module) {\n module.showErrorMarker(editor, -1);\n@@ -18883,7 +19209,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttostart",\n- bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"),\n+ bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: "forEach",\n readOnly: true,\n@@ -18899,7 +19225,7 @@ exports.commands = [{\n aceCommandGroup: "fileJump"\n }, {\n name: "selectup",\n- bindKey: bindKey("Shift-Up", "Shift-Up"),\n+ bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18913,7 +19239,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttoend",\n- bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"),\n+ bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: "forEach",\n readOnly: true,\n@@ -18929,7 +19255,7 @@ exports.commands = [{\n aceCommandGroup: "fileJump"\n }, {\n name: "selectdown",\n- bindKey: bindKey("Shift-Down", "Shift-Down"),\n+ bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18957,7 +19283,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttolinestart",\n- bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"),\n+ bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18971,7 +19297,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selectleft",\n- bindKey: bindKey("Shift-Left", "Shift-Left"),\n+ bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -18999,7 +19325,7 @@ exports.commands = [{\n readOnly: true\n }, {\n name: "selecttolineend",\n- bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"),\n+ bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n@@ -19863,7 +20189,8 @@ var Editor = function(renderer, session) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn();\n var range = new Range(row, column, row, column+token.value.length);\n- if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) {\n+ var sbm = session.$backMarkers[session.$tagHighlight];\n+ if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n }\n@@ -20440,7 +20767,7 @@ var Editor = function(renderer, session) {\n var indentString = lang.stringRepeat(" ", count);\n } else {\n var count = column % size;\n- while (line[range.start.column] == " " && count) {\n+ while (line[range.start.column - 1] == " " && count) {\n range.start.column--;\n count--;\n }\n@@ -22558,6 +22885,7 @@ var oop = require("./lib/oop");\n var dom = require("./lib/dom");\n var event = require("./lib/event");\n var EventEmitter = require("./lib/event_emitter").EventEmitter;\n+var MAX_SCROLL_H = 0x8000;\n var ScrollBar = function(parent) {\n this.element = dom.createElement("div");\n this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix;\n@@ -22581,11 +22909,13 @@ var ScrollBar = function(parent) {\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? "" : "none";\n this.isVisible = isVisible;\n+ this.coeff = 1;\n };\n }).call(ScrollBar.prototype);\n var VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n+ this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n@@ -22600,6 +22930,10 @@ oop.inherits(VScrollBar, ScrollBar);\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n+ if (this.coeff != 1) {\n+ var h = this.element.clientHeight / this.scrollHeight;\n+ this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n+ }\n this._emit("scroll", {data: this.scrollTop});\n }\n this.skipEvent = false;\n@@ -22610,16 +22944,22 @@ oop.inherits(VScrollBar, ScrollBar);\n this.setHeight = function(height) {\n this.element.style.height = height + "px";\n };\n- this.setInnerHeight = function(height) {\n- this.inner.style.height = height + "px";\n- };\n+ this.setInnerHeight = \n this.setScrollHeight = function(height) {\n+ this.scrollHeight = height;\n+ if (height > MAX_SCROLL_H) {\n+ this.coeff = MAX_SCROLL_H / height;\n+ height = MAX_SCROLL_H;\n+ } else if (this.coeff != 1) {\n+ this.coeff = 1\n+ }\n this.inner.style.height = height + "px";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n- this.scrollTop = this.element.scrollTop = scrollTop;\n+ this.scrollTop = scrollTop;\n+ this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n \n@@ -22877,6 +23217,7 @@ position: relative;\\\n overflow: hidden;\\\n font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\\\n direction: ltr;\\\n+text-align: left;\\\n }\\\n .ace_scroller {\\\n position: absolute;\\\n@@ -23402,6 +23743,7 @@ var VirtualRenderer = function(container, theme) {\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n+ this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode()\n@@ -23885,12 +24227,13 @@ var VirtualRenderer = function(container, theme) {\n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n- var desiredHeight = Math.max(\n- (this.$minLines||1) * this.lineHeight,\n- Math.min(maxHeight, height)\n+ var desiredHeight = Math.min(maxHeight, \n+ Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n+ if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n+ desiredHeight = this.$maxPixelHeight;\n var vScroll = height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n@@ -23995,7 +24338,7 @@ var VirtualRenderer = function(container, theme) {\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n- gutterOffset : Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)),\n+ gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n \n@@ -24306,8 +24649,8 @@ var VirtualRenderer = function(container, theme) {\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n- if (!module.cssClass)\n- return;\n+ if (!module || !module.cssClass)\n+ throw new Error("couldn\'t load module " + theme + " or it didn\'t call define");\n dom.importCssString(\n module.cssText,\n module.cssClass,\n@@ -24475,6 +24818,12 @@ config.defineOptions(VirtualRenderer.prototype, "renderer", {\n this.updateFull();\n }\n },\n+ maxPixelHeight: {\n+ set: function(val) {\n+ this.updateFull();\n+ },\n+ initialValue: 0\n+ },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n@@ -26363,7 +26712,7 @@ function LineWidgets(session) {\n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n- if (!w.pixelHeight) {\n+ if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n if (w.rowCount == null) {\n@@ -26738,6 +27087,9 @@ require("./ext/error_marker");\n \n exports.config = require("./config");\n exports.require = require;\n+\n+if (typeof define === "function")\n+ exports.define = define;\n exports.edit = function(el) {\n if (typeof el == "string") {\n var _id = el;\n@@ -26786,11 +27138,14 @@ exports.createEditSession = function(text, mode) {\n }\n exports.EditSession = EditSession;\n exports.UndoManager = UndoManager;\n-exports.version = "1.2.3";\n+exports.version = "1.2.6";\n });\n (function() {\n window.require(["ace/ace"], function(a) {\n- a && a.config.init(true);\n+ if (a) {\n+ a.config.init(true);\n+ a.define = window.define;\n+ }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n@@ -26966,7 +27321,7 @@ define(\'mockup-patterns-texteditor\',[\n });\n \n \n-define(\'text!mockup-patterns-filemanager-url/templates/app.xml\',[],function () { return \'
    \\n
    \\n
    \\n
    \\n
    \\n \';});\n+define(\'text!mockup-patterns-filemanager-url/templates/app.xml\',[],function () { return \'
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n\\n\';});\n \n // Backbone.js 1.1.2\n \n@@ -28820,7 +29175,7 @@ define(\'mockup-patterns-tooltip\',[\n \n bootstrapTooltip.DEFAULTS = {\n animation: true,\n- placement: \'top\',\n+ placement: \'auto\',\n selector: false,\n template: \'\',\n trigger: \'hover focus\',\n@@ -29336,6 +29691,127 @@ define(\'mockup-ui-url/views/buttongroup\',[\n return ButtonGroup;\n });\n \n+define(\'mockup-ui-url/views/anchor\',[\n+ \'underscore\',\n+ \'mockup-ui-url/views/base\',\n+ \'mockup-patterns-tooltip\'\n+], function(_, BaseView, Tooltip) {\n+ \'use strict\';\n+\n+ var AnchorView = BaseView.extend({\n+ tagName: \'a\',\n+ className: \'alink\',\n+ eventPrefix: \'button\',\n+ context: \'default\',\n+ idPrefix: \'alink-\',\n+ shortcut: \'\',\n+ attributes: {\n+ \'href\': \'#\'\n+ },\n+ extraClasses: [],\n+ tooltip: null,\n+ template: \'<% if (icon) { %><% } %> <%= title %> <%= shortcut %>\',\n+ events: {\n+ \'click\': \'handleClick\'\n+ },\n+ initialize: function(options) {\n+ if (!options.id) {\n+ var title = options.title || \'\';\n+ options.id = title !== \'\' ? title.toLowerCase().replace(\' \', \'-\') : this.cid;\n+ }\n+ BaseView.prototype.initialize.apply(this, [options]);\n+\n+ this.on(\'render\', function() {\n+ this.$el.attr(\'title\', this.options.tooltip || this.options.title || \'\');\n+ this.$el.attr(\'aria-label\', this.options.title || this.options.tooltip || \'\');\n+ _.each(this.extraClasses, function(klass) {\n+ this.$el.addClass(klass);\n+ });\n+ }, this);\n+ },\n+ handleClick: function(e) {\n+ e.preventDefault();\n+ if (!this.$el.prop(\'disabled\')) {\n+ this.uiEventTrigger(\'click\', this, e);\n+ }\n+ },\n+ serializedModel: function() {\n+ return _.extend({\'icon\': \'\', \'title\': \'\', \'shortcut\': \'\'}, this.options);\n+ },\n+ disable: function() {\n+ this.$el.prop(\'disabled\', true);\n+ },\n+ enable: function() {\n+ this.$el.prop(\'disabled\', false);\n+ }\n+ });\n+\n+ return AnchorView;\n+});\n+\n+\n+define(\'text!mockup-ui-url/templates/dropdown.xml\',[],function () { return \'\\n\\n \\n \\n\\n \\n \\n\\n\\n\';});\n+\n+define(\'mockup-ui-url/views/dropdown\',[\n+ \'jquery\',\n+ \'underscore\',\n+ \'mockup-ui-url/views/buttongroup\',\n+ \'text!mockup-ui-url/templates/dropdown.xml\',\n+], function($, _, ButtonGroup, DropdownTemplate) {\n+ \'use strict\';\n+\n+ var DropdownView = ButtonGroup.extend({\n+ idPrefix: \'btngroup-dropdown-\',\n+ template: DropdownTemplate,\n+ className: \'btn-group-dropdown\',\n+ itemContainer: "ul.dropdown-content",\n+ title: null,\n+\n+ initialize: function(options) {\n+ ButtonGroup.prototype.initialize.apply(this, [options]);\n+\n+ this.on(\'render\', function() {\n+ this.renderTitle();\n+ }, this);\n+ },\n+\n+ renderTitle: function() {\n+ var title = this.options.title;\n+ if(this.options.title === undefined) {\n+ title = this.title;\n+ if(this.title === null) {\n+ title = "Menu Option";\n+ }\n+ }\n+ this.$(\'.dropdown-title\').empty().append(title);\n+ },\n+\n+ renderItems: function() {\n+ var self = this;\n+ var $container;\n+\n+ if (this.itemContainer !== null) {\n+ $container = $(this.itemContainer, this.$el);\n+ if ($container.length === 0) {\n+ throw \'Item Container element not found.\';\n+ }\n+ } else {\n+ $container = this.$el;\n+ }\n+\n+ var $item = null;\n+ _.each(this.items, function(view) {\n+ $item = $("
  • ");\n+ $item.append(view.render().$el.removeClass("btn"));\n+ $container.append($item);\n+ }, this);\n+ },\n+\n+ });\n+\n+ return DropdownView;\n+});\n+\n /* Backdrop pattern.\n *\n * Options:\n@@ -29673,25 +30149,59 @@ define(\'mockup-ui-url/views/popover\',[\n return PopoverView;\n });\n \n+\n+define(\'text!mockup-patterns-filemanager-url/templates/popover.xml\',[],function () { return \'
    \\n
    \\n
    \\n
    \\n\\n \\n\\n
    \\n
    \\n
    \\n\\n\';});\n+\n define(\'mockup-patterns-filemanager-url/js/basepopover\',[\n+ \'jquery\',\n \'underscore\',\n- \'mockup-ui-url/views/popover\'\n-], function(_, PopoverView) {\n+ \'mockup-ui-url/views/popover\',\n+ \'text!mockup-patterns-filemanager-url/templates/popover.xml\',\n+], function($, _, PopoverView, PopoverTemplate) {\n \'use strict\';\n \n var FileManagerPopover = PopoverView.extend({\n className: \'popover\',\n title: _.template(\'nothing\'),\n content: _.template(\'
    \'),\n+ template: PopoverTemplate,\n initialize: function(options) {\n this.app = options.app;\n PopoverView.prototype.initialize.apply(this, [options]);\n },\n+ afterRender: function () {\n+ var self = this;\n+ self.$el.find(".popover-close").click(function(e){\n+ self.hide(true);\n+ });\n+ return self;\n+ },\n+ getBodyClassName: function(){\n+ var name = \'popover-\';\n+ if(this.options.id){\n+ name += this.options.id + \'-\';\n+ }\n+ name += \'active\';\n+ return name;\n+ },\n render: function() {\n var self = this;\n PopoverView.prototype.render.call(this);\n return self;\n },\n+ hide: function(closePopover) {\n+ if(this.closeOnOutClick || closePopover == true){\n+ this.opened = false;\n+ this.$el.removeClass(\'active\');\n+ if (this.triggerView) {\n+ this.triggerView.$el.removeClass(\'active\');\n+ this.triggerView.$el.attr(\'aria-hidden\', \'true\');\n+ }\n+ this.uiEventTrigger(\'hide\', this);\n+ this.$el.attr(\'aria-hidden\', \'true\');\n+ $(\'body\').removeClass(this.getBodyClassName());\n+ }\n+ },\n toggle: function(button, e) {\n PopoverView.prototype.toggle.apply(this, [button, e]);\n var self = this;\n@@ -29815,6 +30325,246 @@ define(\'mockup-patterns-filemanager-url/js/newfolder\',[\n return AddNewView;\n });\n \n+define(\'mockup-patterns-filemanager-url/js/findfile\',[\n+ \'jquery\',\n+ \'underscore\',\n+ \'mockup-patterns-filemanager-url/js/basepopover\',\n+ \'translate\'\n+], function($, _, PopoverView, _t) {\n+ \'use strict\';\n+\n+ var FindFile = PopoverView.extend({\n+ className: \'popover filesearch\',\n+ closeOnOutClick: false,\n+ backdropOptions: {\n+ zIndex: \'1009\',\n+ opacity: \'0.4\',\n+ className: \'backdrop backdrop-popover\',\n+ classActiveName: \'backdrop-active\',\n+ closeOnEsc: false,\n+ closeOnClick: false\n+ },\n+ title: _.template(\'<%= _t("Find File") %>\'),\n+ content: _.template(\n+ \'
    \' +\n+ \'
    \' +\n+ \'">\' +\n+ \'
    \' +\n+ \'
    \' +\n+ \'"/>\' +\n+ \'
    \' +\n+ \'

    \' +\n+ \'
      \' +\n+ \'
    \'\n+ ),\n+ appendToResults: function(item){\n+ var self = this;\n+ var $item = $(\n+ \'
  • \' +\n+ \'\' +\n+ _t(item.filename) + \'\' +\n+ \'
  • \');\n+ $(\'a\', $item).click(function(e) {\n+ e.preventDefault();\n+ self.findfile($(this).attr(\'data-target\'));\n+ });\n+ self.$results.append($item);\n+ },\n+ filterFiles: function(patt, data){\n+ var self = this;\n+ _.each(data, function(item) {\n+ if(item.folder){\n+ self.filterFiles(patt, item.children);\n+ }else{\n+ if(patt.test(item.filename)){\n+ self.appendToResults(item);\n+ self.noMatches++;\n+ }\n+ }\n+ });\n+ },\n+ render: function() {\n+ var self = this;\n+ PopoverView.prototype.render.call(this);\n+ self.$form = self.$(\'form\');\n+ self.$searchFor = self.$("input");\n+ self.$results = self.$(\'.results\');\n+ self.$form.submit(function(e) {\n+ e.preventDefault();\n+ $.ajax({\n+ url: self.app.options.actionUrl + \'?action=dataTree\',\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.$results.empty();\n+ self.noMatches = 0;\n+ var searchFor = self.$searchFor.val();\n+ var patt = new RegExp(searchFor, "g");\n+ self.filterFiles(patt, data);\n+ if(self.noMatches == 0){\n+ self.$results.append("No results found for " + searchFor + "");\n+ }\n+ }\n+ });\n+ });\n+ return self;\n+ },\n+ findfile: function(resource) {\n+ var self = this;\n+ self.app.doAction(\'getFile\', {\n+ data: {\n+ path: resource\n+ },\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.app.fileData[resource] = data;\n+ self.app.openEditor(resource);\n+ }\n+ });\n+ }\n+ });\n+\n+ return FindFile;\n+});\n+\n+define(\'mockup-patterns-filemanager-url/js/findinfiles\',[\n+ \'jquery\',\n+ \'underscore\',\n+ \'mockup-patterns-filemanager-url/js/basepopover\',\n+ \'translate\'\n+], function($, _, PopoverView, _t) {\n+ \'use strict\';\n+\n+ var FindInFiles = PopoverView.extend({\n+ className: \'popover filesearch\',\n+ closeOnOutClick: false,\n+ backdropOptions: {\n+ zIndex: \'1009\',\n+ opacity: \'0.4\',\n+ className: \'backdrop backdrop-popover\',\n+ classActiveName: \'backdrop-active\',\n+ closeOnEsc: false,\n+ closeOnClick: false\n+ },\n+ title: _.template(\'<%= _t("Find in File") %>\'),\n+ content: _.template(\n+ \'
    \' +\n+ \'
    \' +\n+ \'">\' +\n+ \'
    \' +\n+ \'
    \' +\n+ \'"/>\' +\n+ \'
    \' +\n+ \'

    \' +\n+ \'
      \' +\n+ \'
    \'\n+ ),\n+ appendToResults: function(item){\n+ var self = this, seen = null;\n+ var file_item =\n+ \'
  • \' +\n+ \'\' + _t(item.file.filename) + \'
  • \';\n+ var $item = $(file_item);\n+ $(\'a\', $item).click(function(e) {\n+ e.preventDefault();\n+ self.findinfiles(\n+ $(this).attr("data-target"),\n+ parseInt($(this).attr("target-line"))\n+ );\n+ });\n+ self.$results.append($item);\n+ },\n+\n+ filterFile: function(patt, item){\n+ var self = this;\n+ $.ajax({\n+ url: self.app.options.actionUrl + \'?action=getFile&path=\'+item.path.replace("/", "%2F"),\n+ dataType: \'json\',\n+ success: function(data) {\n+ var contents = data["contents"];\n+ if(contents == undefined){\n+ return;\n+ }\n+ var lines = contents.split("\\n");\n+ var seen = [], line = \'\';\n+ var result = null;\n+ for(var x in lines){\n+ line = lines[x];\n+ result = patt.exec(line);\n+ if(result != null){\n+ seen.push({\n+ "line": parseInt(x) + 1,\n+ "text": \'\'+result[0]+\'\'+line.substr(result["index"] + result[0].length, 20)\n+ });\n+ }\n+ }\n+ if(seen.length > 0){\n+ self.appendToResults({file: item, lines: seen});\n+ self.noMatches += seen.length;\n+ }\n+ }\n+ });\n+ },\n+ filterFiles: function(patt, data){\n+ var self = this;\n+ _.each(data, function(item) {\n+ if(item.folder){\n+ self.filterFiles(patt, item.children);\n+ }else{\n+ self.filterFile(patt, item);\n+ }\n+ });\n+ },\n+ render: function() {\n+ var self = this;\n+ PopoverView.prototype.render.call(this);\n+ self.$form = self.$(\'form\');\n+ self.$searchFor = self.$("input");\n+ self.$results = self.$(\'.results\');\n+ self.$form.submit(function(e) {\n+ e.preventDefault();\n+ $.ajax({\n+ url: self.app.options.actionUrl + \'?action=dataTree\',\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.$results.empty();\n+ self.noMatches = 0;\n+ var searchFor = self.$searchFor.val();\n+ var patt = new RegExp(searchFor, "g");\n+ self.filterFiles(patt, data);\n+ }\n+ });\n+ });\n+ return self;\n+ },\n+ findinfiles: function(resource, line) {\n+ var self = this;\n+ self.app.doAction(\'getFile\', {\n+ data: {\n+ path: resource\n+ },\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.app.fileData[resource] = data;\n+ self.app.openEditor(resource, {goToLine: line});\n+ }\n+ });\n+ }\n+ });\n+\n+ return FindInFiles;\n+});\n+\n define(\'mockup-patterns-filemanager-url/js/delete\',[\n \'underscore\',\n \'mockup-patterns-filemanager-url/js/basepopover\'\n@@ -34791,13 +35541,16 @@ define(\'text!mockup-patterns-relateditems-url/templates/breadcrumb.xml\',[],funct\n define(\'text!mockup-patterns-relateditems-url/templates/favorite.xml\',[],function () { return \'
  • <%- title %>
  • \\n\';});\n \n \n-define(\'text!mockup-patterns-relateditems-url/templates/result.xml\',[],function () { return \'\\n\';});\n+define(\'text!mockup-patterns-relateditems-url/templates/recentlyused.xml\',[],function () { return \'\\n\';});\n+\n \n+define(\'text!mockup-patterns-relateditems-url/templates/result.xml\',[],function () { return \'\\n\';});\n \n-define(\'text!mockup-patterns-relateditems-url/templates/selection.xml\',[],function () { return \'\\n <% if (typeof getURL !== \\\'undefined\\\' && ((typeof getIcon !== \\\'undefined\\\' && getIcon === true) || portal_type === "Image")) { %>
    <% } %>\\n <%- Title %>\\n <%- path %>\\n
    \\n\';});\n \n+define(\'text!mockup-patterns-relateditems-url/templates/selection.xml\',[],function () { return \'\\n <% if (getURL && (getIcon || portal_type === "Image")) { %>
    <% } %>\\n <%- Title %>\\n <%- path %>\\n
    \\n\';});\n \n-define(\'text!mockup-patterns-relateditems-url/templates/toolbar.xml\',[],function () { return \'<% if (mode!==\\\'auto\\\') { %>\\n
    \\n \\n \\n
    \\n<% } %>\\n
    \\n <%- searchText %>\\n \\n <%= items %>\\n
    \\n
    \\n <% if (favorites.length > 0) { %>\\n \\n <% } %>\\n
    \\n\';});\n+\n+define(\'text!mockup-patterns-relateditems-url/templates/toolbar.xml\',[],function () { return \'<% if (mode!==\\\'auto\\\') { %>\\n
    \\n \\n \\n
    \\n<% } %>\\n
    \\n <%- searchText %>\\n \\n <%= items %>\\n
    \\n
    \\n\\n <% if (recentlyUsedItems) { %>\\n \\n <% } %>\\n\\n <% if (favorites.length > 0) { %>\\n \\n <% } %>\\n
    \\n\';});\n \n (function(root) {\n define("bootstrap-dropdown", ["jquery"], function() {\n@@ -34988,11 +35741,15 @@ define("bootstrap-dropdown", ["jquery"], function() {\n * mode(string): Initial widget mode. Possible values: \'search\', \'browse\'. If set to \'search\', the catalog is searched for a searchterm. If set to \'browse\', browsing starts at basePath. Default: \'search\'.\n * orderable(boolean): Whether or not items should be drag-and-drop sortable. (true)\n * pageSize(int): Batch size to break down big result sets into multiple pages. (10).\n+ * recentlyUsed(boolen): Show the recently used items dropdown (false).\n+ * recentlyUsedMaxItems(integer): Maximum items to keep in recently used list. 0: no restriction. (20).\n * rootPath(string): Only display breadcrumb path elements deeper than this path. Default: "/"\n * rootUrl(string): Visible URL up to the rootPath. This is prepended to the currentPath to generate submission URLs.\n * scanSelection(boolean): Scan the list of selected elements for other patterns.\n * selectableTypes(array): If the value is null all types are selectable. Otherwise, provide a list of strings to match item types that are selectable. (null)\n * separator(string): Select2 option. String which separates multiple items. (\',\')\n+ * sortOn(string): Index on which to sort on. If null, will default to term relevance (no sort) when searching and folder order (getObjPositionInParent) when browsing. (null)\n+ * sortOrder(string): Sort ordering. (\'ascending\')\n * tokenSeparators(array): Select2 option, refer to select2 documentation. ([",", " "])\n * upload(boolen): Allow file and image uploads from within the related items widget.\n * uploadAllowView(string): View, which returns a JSON response in the form of {allowUpload: true}, if upload is allowed in the current context.\n@@ -35075,6 +35832,7 @@ define(\'mockup-patterns-relateditems\',[\n \'translate\',\n \'text!mockup-patterns-relateditems-url/templates/breadcrumb.xml\',\n \'text!mockup-patterns-relateditems-url/templates/favorite.xml\',\n+ \'text!mockup-patterns-relateditems-url/templates/recentlyused.xml\',\n \'text!mockup-patterns-relateditems-url/templates/result.xml\',\n \'text!mockup-patterns-relateditems-url/templates/selection.xml\',\n \'text!mockup-patterns-relateditems-url/templates/toolbar.xml\',\n@@ -35082,6 +35840,7 @@ define(\'mockup-patterns-relateditems\',[\n ], function($, _, Base, Select2, ButtonView, utils, registry, _t,\n BreadcrumbTemplate,\n FavoriteTemplate,\n+ RecentlyUsedTemplate,\n ResultTemplate,\n SelectionTemplate,\n ToolbarTemplate\n@@ -35093,6 +35852,7 @@ define(\'mockup-patterns-relateditems\',[\n trigger: \'.pat-relateditems\',\n parser: \'mockup\',\n currentPath: undefined,\n+ selectedUIDs: [],\n openAfterInit: undefined,\n defaults: {\n // main option\n@@ -35107,9 +35867,12 @@ define(\'mockup-patterns-relateditems\',[\n contextPath: undefined,\n dropdownCssClass: \'pattern-relateditems-dropdown\',\n favorites: [],\n+ recentlyUsed: false,\n+ recentlyUsedMaxItems: 20,\n+ recentlyUsedKey: \'relateditems_recentlyused\',\n maximumSelectionSize: -1,\n minimumInputLength: 0,\n- mode: \'auto\', // possible values are search and browse\n+ mode: \'auto\', // possible values are \'auto\', \'search\' and \'browse\'.\n orderable: true, // mockup-patterns-select2\n pathOperator: \'plone.app.querystring.operation.string.path\',\n rootPath: \'/\',\n@@ -35117,6 +35880,8 @@ define(\'mockup-patterns-relateditems\',[\n scanSelection: false, // False, to no unnecessarily use CPU time on this.\n selectableTypes: null, // null means everything is selectable, otherwise a list of strings to match types that are selectable\n separator: \',\',\n+ sortOn: null,\n+ sortOrder: \'ascending\',\n tokenSeparators: [\',\', \' \'],\n upload: false,\n uploadAllowView: undefined,\n@@ -35127,6 +35892,8 @@ define(\'mockup-patterns-relateditems\',[\n breadcrumbTemplateSelector: null,\n favoriteTemplate: FavoriteTemplate,\n favoriteTemplateSelector: null,\n+ recentlyusedTemplate: RecentlyUsedTemplate,\n+ recentlyusedTemplateSelector: null,\n resultTemplate: ResultTemplate,\n resultTemplateSelector: null,\n selectionTemplate: SelectionTemplate,\n@@ -35139,6 +35906,26 @@ define(\'mockup-patterns-relateditems\',[\n \n },\n \n+ recentlyUsed: function (filterSelectable) {\n+ var ret = utils.storage.get(this.options.recentlyUsedKey) || [];\n+ // hard-limit to 1000 entries\n+ ret = ret.slice(ret.length-1000, ret.length);\n+ if (filterSelectable) {\n+ // Filter out only selectable items.\n+ // This is used only to create the list of items to be displayed.\n+ // the list to be stored is unfiltered and can be reused among\n+ // different instances of this widget with different settings.\n+ ret.filter(this.isSelectable.bind(this));\n+ }\n+ // max is applied AFTER filtering selectable items.\n+ var max = parseInt(this.options.recentlyUsedMaxItems, 10);\n+ if (max) {\n+ // return the slice from the end, as we want to display newest items first.\n+ ret = ret.slice(ret.length-max, ret.length);\n+ }\n+ return ret;\n+ },\n+\n applyTemplate: function(tpl, item) {\n var self = this;\n var template;\n@@ -35151,18 +35938,20 @@ define(\'mockup-patterns-relateditems\',[\n template = self.options[tpl + \'Template\'];\n }\n // let\'s give all the options possible to the template generation\n- var options = $.extend(true, {}, self.options, item, {\'browsing\': self.browsing});\n+ var options = $.extend(true, {}, self.options, item, {\n+ \'browsing\': self.browsing,\n+ \'open_folder\': _t(\'Open folder\')\n+ });\n options._item = item;\n return _.template(template)(options);\n },\n \n setAjax: function () {\n-\n var ajax = {\n \n url: this.options.vocabularyUrl,\n dataType: \'JSON\',\n- quietMillis: 100,\n+ quietMillis: 500,\n \n data: function (term, page) {\n \n@@ -35191,11 +35980,18 @@ define(\'mockup-patterns-relateditems\',[\n v: this.options.rootPath + this.currentPath + (this.browsing ? \'::1\' : \'\')\n });\n \n+ var sort_on = this.options.sortOn;\n+ var sort_order = sort_on ? this.options.sortOrder : null;\n+ if (this.browsing && sort_on === null) {\n+ sort_on = \'getObjPositionInParent\';\n+ sort_order = \'ascending\';\n+ }\n+\n var data = {\n query: JSON.stringify({\n criteria: criterias,\n- sort_on: \'path\',\n- sort_order: \'ascending\'\n+ sort_on: sort_on,\n+ sort_order: sort_order\n }),\n attributes: JSON.stringify(this.options.attributes),\n batch: JSON.stringify({\n@@ -35211,17 +36007,25 @@ define(\'mockup-patterns-relateditems\',[\n var more = (page * this.options.pageSize) < data.total;\n var results = data.results;\n \n- // Filter out non-selectable and non-folderish while browsing.\n- if (this.browsing) {\n- results = results.filter(\n- function (item) {\n- if (!item.is_folderish && !this.isSelectable(item)) {\n- return false;\n- }\n+ this.selectedUIDs = (this.$el.select2(\'data\') || []).map(function (el) {\n+ // populate current selection. Reuse in formatResult\n+ return el.UID;\n+ });\n+\n+ // Filter out items:\n+ // While browsing: always include folderish items\n+ // Browsing and searching: Only include selectable items, which are not already selected.\n+ results = results.filter(\n+ function (item) {\n+ if (\n+ (this.browsing && item.is_folderish) ||\n+ (this.isSelectable(item) && this.selectedUIDs.indexOf(item.UID) == -1)\n+ ) {\n return true;\n- }.bind(this)\n- );\n- }\n+ }\n+ return false;\n+ }.bind(this)\n+ );\n \n // Extend ``data`` with a ``oneLevelUp`` item when browsing\n var path = this.currentPath.split(\'/\');\n@@ -35232,9 +36036,8 @@ define(\'mockup-patterns-relateditems\',[\n ) {\n results = [{\n \'oneLevelUp\': true,\n- \'Title\': _(\'One level up\'),\n+ \'Title\': _t(\'One level up\'),\n \'path\': path.slice(0, path.length - 1).join(\'/\') || \'/\',\n- \'portal_type\': \'Folder\',\n \'is_folderish\': true,\n \'selectable\': false\n }].concat(results);\n@@ -35246,13 +36049,10 @@ define(\'mockup-patterns-relateditems\',[\n }.bind(this)\n \n };\n-\n this.options.ajax = ajax;\n- this.$el.select2(this.options);\n-\n },\n \n- setBreadCrumbs: function () {\n+ renderToolbar: function () {\n var self = this;\n var path = self.currentPath;\n var html;\n@@ -35277,6 +36077,14 @@ define(\'mockup-patterns-relateditems\',[\n favoritesHtml = favoritesHtml + self.applyTemplate(\'favorite\', item_copy);\n });\n \n+ var recentlyUsedHtml = \'\';\n+ if (self.options.recentlyUsed) {\n+ var recentlyUsed = self.recentlyUsed(true); // filter out only those items which can actually be selected\n+ _.each(recentlyUsed.reverse(), function (item) { // reverse to get newest first.\n+ recentlyUsedHtml = recentlyUsedHtml + self.applyTemplate(\'recentlyused\', item);\n+ });\n+ }\n+\n html = self.applyTemplate(\'toolbar\', {\n items: itemsHtml,\n favItems: favoritesHtml,\n@@ -35284,6 +36092,8 @@ define(\'mockup-patterns-relateditems\',[\n searchText: _t(\'Current path:\'),\n searchModeText: _t(\'Search\'),\n browseModeText: _t(\'Browse\'),\n+ recentlyUsedItems: recentlyUsedHtml,\n+ recentlyUsedText: _t(\'Recently Used\'),\n });\n \n self.$toolbar.html(html);\n@@ -35342,6 +36152,26 @@ define(\'mockup-patterns-relateditems\',[\n self.browseTo($(this).attr(\'href\'));\n });\n \n+ if (self.options.recentlyUsed) {\n+ $(\'.pattern-relateditems-recentlyused-select\', self.$toolbar).on(\'click\', function(event) {\n+ event.preventDefault();\n+ var uid = $(this).data(\'uid\');\n+ var item = self.recentlyUsed().filter(function (it) { return it.UID === uid; });\n+ if (item.length > 0) {\n+ item = item[0];\n+ } else {\n+ return;\n+ }\n+ self.selectItem(item);\n+ if (self.options.maximumSelectionSize > 0) {\n+ var items = self.$el.select2(\'data\');\n+ if (items.length >= self.options.maximumSelectionSize) {\n+ return;\n+ }\n+ }\n+ });\n+ }\n+\n function initUploadView(UploadView, disabled) {\n var uploadButtonId = \'upload-\' + utils.generateId();\n var uploadButton = new ButtonView({\n@@ -35394,7 +36224,7 @@ define(\'mockup-patterns-relateditems\',[\n self.emit(\'before-browse\');\n self.currentPath = path;\n self.$el.select2(\'close\');\n- self.setBreadCrumbs();\n+ self.renderToolbar();\n self.$el.select2(\'open\');\n self.emit(\'after-browse\');\n },\n@@ -35405,6 +36235,18 @@ define(\'mockup-patterns-relateditems\',[\n var data = self.$el.select2(\'data\');\n data.push(item);\n self.$el.select2(\'data\', data, true);\n+\n+ if (self.options.recentlyUsed) {\n+ // add to recently added items\n+ var recentlyUsed = self.recentlyUsed(); // do not filter for selectable but get all. append to that list the new item.\n+ var alreadyPresent = recentlyUsed.filter(function (it) { return it.UID === item.UID; });\n+ if (alreadyPresent.length > 0) {\n+ recentlyUsed.splice(recentlyUsed.indexOf(alreadyPresent[0]), 1);\n+ }\n+ recentlyUsed.push(item);\n+ utils.storage.set(self.options.recentlyUsedKey, recentlyUsed);\n+ }\n+\n self.emit(\'selected\');\n },\n \n@@ -35426,9 +36268,6 @@ define(\'mockup-patterns-relateditems\',[\n if (item.selectable === false) {\n return false;\n }\n- if (self.options.contextPath === this.options.rootPath + item.path) {\n- return false;\n- }\n if (self.options.selectableTypes === null) {\n return true;\n } else {\n@@ -35456,11 +36295,31 @@ define(\'mockup-patterns-relateditems\',[\n Select2.prototype.initializeTags.call(self);\n \n self.options.formatSelection = function(item) {\n+\n+ item = $.extend(true, {\n+ \'Title\': \'\',\n+ \'getIcon\': \'\',\n+ \'getURL\': \'\',\n+ \'path\': \'\',\n+ \'portal_type\': \'\',\n+ \'review_state\': \'\'\n+ }, item);\n+\n // activate petterns on the result set.\n var $selection = $(self.applyTemplate(\'selection\', item));\n if (self.options.scanSelection) {\n registry.scan($selection);\n }\n+ if (self.options.maximumSelectionSize == 1){\n+ // If this related field accepts only 1 item, the breadcrumbs should\n+ // reflect the location for this particular item\n+ var itemPath = item.path;\n+ var path_split = itemPath.split(\'/\');\n+ path_split = path_split.slice(0,-1); // Remove last part of path, we always want the parent path\n+ itemPath = path_split.join(\'/\');\n+ self.currentPath = itemPath;\n+ self.renderToolbar();\n+ }\n return $selection;\n };\n \n@@ -35468,14 +36327,24 @@ define(\'mockup-patterns-relateditems\',[\n \n self.options.formatResult = function(item) {\n item.selectable = self.isSelectable(item);\n- var data = self.$el.select2(\'data\');\n \n- for (var i = 0; i < data.length; i = i + 1) {\n- if (data[i].UID === item.UID) {\n- // Exclude already selected items in result list.\n- return;\n- }\n+ item = $.extend(true, {\n+ \'Title\': \'\',\n+ \'getIcon\': \'\',\n+ \'getURL\': \'\',\n+ \'is_folderish\': false,\n+ \'oneLevelUp\': false,\n+ \'path\': \'\',\n+ \'portal_type\': \'\',\n+ \'review_state\': \'\',\n+ \'selectable\': false,\n+ }, item);\n+\n+ if (self.selectedUIDs.indexOf(item.UID) != -1) {\n+ // do not allow already selected items to be selected again.\n+ item.selectable = false;\n }\n+\n var result = $(self.applyTemplate(\'result\', item));\n \n $(\'.pattern-relateditems-result-select\', result).on(\'click\', function(event) {\n@@ -35486,14 +36355,14 @@ define(\'mockup-patterns-relateditems\',[\n $parent.removeClass(\'pattern-relateditems-active\');\n self.deselectItem(item);\n } else {\n- self.selectItem(item);\n- $parent.addClass(\'pattern-relateditems-active\');\n if (self.options.maximumSelectionSize > 0) {\n var items = self.$el.select2(\'data\');\n if (items.length >= self.options.maximumSelectionSize) {\n self.$el.select2(\'close\');\n }\n }\n+ self.selectItem(item);\n+ $parent.addClass(\'pattern-relateditems-active\');\n if (self.options.closeOnSelect) {\n self.$el.select2(\'close\');\n }\n@@ -35527,15 +36396,23 @@ define(\'mockup-patterns-relateditems\',[\n prev[item.UID] = item;\n return prev;\n }, {});\n- callback(\n- ids\n- .map(function(uid) {\n- return results[uid];\n- })\n- .filter(function(item) {\n- return item !== undefined;\n- })\n- );\n+\n+ try {\n+ callback(\n+ ids\n+ .map(function(uid) {\n+ return results[uid];\n+ })\n+ .filter(function(item) {\n+ return item !== undefined;\n+ })\n+ );\n+ } catch (e) {\n+ // Select2 3.5.4 throws an error in some cases in\n+ // updateSelection, ``this.selection.find(".select2-search-choice").remove();``\n+ // No idea why, hard to track.\n+ console.log(data);\n+ }\n \n if (self.openAfterInit) {\n // open after initialization\n@@ -35573,7 +36450,7 @@ define(\'mockup-patterns-relateditems\',[\n event.preventDefault();\n });\n \n- self.setBreadCrumbs();\n+ self.renderToolbar();\n \n }\n });\n@@ -37420,9 +38297,9 @@ define(\'mockup-patterns-upload\',[\n \'dropzone\',\n \'text!mockup-patterns-upload-url/templates/upload.xml\',\n \'text!mockup-patterns-upload-url/templates/preview.xml\',\n+ \'mockup-utils\',\n \'translate\'\n-], function($, _, Base, RelatedItems, Dropzone,\n- UploadTemplate, PreviewTemplate, _t) {\n+], function($, _, Base, RelatedItems, Dropzone, UploadTemplate, PreviewTemplate, utils, _t) {\n \'use strict\';\n \n /* we do not want this plugin to auto discover */\n@@ -37713,6 +38590,10 @@ define(\'mockup-patterns-upload\',[\n var options = $.extend({}, self.options);\n options.url = self.getUrl();\n \n+ options.headers = {\n+ \'X-CSRF-TOKEN\': utils.getAuthenticator()\n+ };\n+\n // XXX force to only upload one to the server at a time,\n // right now we don\'t support multiple for backends\n options.uploadMultiple = false;\n@@ -37814,7 +38695,8 @@ define(\'mockup-patterns-upload\',[\n window.tus.upload(file, {\n endpoint: self.dropzone.options.url,\n headers: {\n- \'FILENAME\': file.name\n+ \'FILENAME\': file.name,\n+ \'X-CSRF-TOKEN\': utils.getAuthenticator()\n },\n chunkSize: chunkSize\n }).fail(function() {\n@@ -37923,6 +38805,238 @@ define(\'mockup-patterns-filemanager-url/js/upload\',[\n return UploadView;\n });\n \n+(function(root) {\n+define("js-shortcuts", ["jquery"], function() {\n+ return (function() {\n+/**\n+ * http://www.openjs.com/scripts/events/keyboard_shortcuts/\n+ * Version : 2.01.B\n+ * By Binny V A\n+ * License : BSD\n+ */\n+shortcut = {\n+\t\'all_shortcuts\':{},//All the shortcuts are stored in this array\n+\t\'add\': function(shortcut_combination,callback,opt) {\n+\t\t//Provide a set of default options\n+\t\tvar default_options = {\n+\t\t\t\'type\':\'keydown\',\n+\t\t\t\'propagate\':false,\n+\t\t\t\'disable_in_input\':false,\n+\t\t\t\'target\':document,\n+\t\t\t\'keycode\':false\n+\t\t}\n+\t\tif(!opt) opt = default_options;\n+\t\telse {\n+\t\t\tfor(var dfo in default_options) {\n+\t\t\t\tif(typeof opt[dfo] == \'undefined\') opt[dfo] = default_options[dfo];\n+\t\t\t}\n+\t\t}\n+\n+\t\tvar ele = opt.target;\n+\t\tif(typeof opt.target == \'string\') ele = document.getElementById(opt.target);\n+\t\tvar ths = this;\n+\t\tshortcut_combination = shortcut_combination.toLowerCase();\n+\n+\t\t//The function to be called at keypress\n+\t\tvar func = function(e) {\n+\t\t\te = e || window.event;\n+\t\t\t\n+\t\t\tif(opt[\'disable_in_input\']) { //Don\'t enable shortcut keys in Input, Textarea fields\n+\t\t\t\tvar element;\n+\t\t\t\tif(e.target) element=e.target;\n+\t\t\t\telse if(e.srcElement) element=e.srcElement;\n+\t\t\t\tif(element.nodeType==3) element=element.parentNode;\n+\n+\t\t\t\tif(element.tagName == \'INPUT\' || element.tagName == \'TEXTAREA\') return;\n+\t\t\t}\n+\t\n+\t\t\t//Find Which key is pressed\n+\t\t\tif (e.keyCode) code = e.keyCode;\n+\t\t\telse if (e.which) code = e.which;\n+\t\t\tvar character = String.fromCharCode(code).toLowerCase();\n+\t\t\t\n+\t\t\tif(code == 188) character=","; //If the user presses , when the type is onkeydown\n+\t\t\tif(code == 190) character="."; //If the user presses , when the type is onkeydown\n+\n+\t\t\tvar keys = shortcut_combination.split("+");\n+\t\t\t//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked\n+\t\t\tvar kp = 0;\n+\t\t\t\n+\t\t\t//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken\n+\t\t\tvar shift_nums = {\n+\t\t\t\t"`":"~",\n+\t\t\t\t"1":"!",\n+\t\t\t\t"2":"@",\n+\t\t\t\t"3":"#",\n+\t\t\t\t"4":"$",\n+\t\t\t\t"5":"%",\n+\t\t\t\t"6":"^",\n+\t\t\t\t"7":"&",\n+\t\t\t\t"8":"*",\n+\t\t\t\t"9":"(",\n+\t\t\t\t"0":")",\n+\t\t\t\t"-":"_",\n+\t\t\t\t"=":"+",\n+\t\t\t\t";":":",\n+\t\t\t\t"\'":"\\"",\n+\t\t\t\t",":"<",\n+\t\t\t\t".":">",\n+\t\t\t\t"/":"?",\n+\t\t\t\t"\\\\":"|"\n+\t\t\t}\n+\t\t\t//Special Keys - and their codes\n+\t\t\tvar special_keys = {\n+\t\t\t\t\'esc\':27,\n+\t\t\t\t\'escape\':27,\n+\t\t\t\t\'tab\':9,\n+\t\t\t\t\'space\':32,\n+\t\t\t\t\'return\':13,\n+\t\t\t\t\'enter\':13,\n+\t\t\t\t\'backspace\':8,\n+\t\n+\t\t\t\t\'scrolllock\':145,\n+\t\t\t\t\'scroll_lock\':145,\n+\t\t\t\t\'scroll\':145,\n+\t\t\t\t\'capslock\':20,\n+\t\t\t\t\'caps_lock\':20,\n+\t\t\t\t\'caps\':20,\n+\t\t\t\t\'numlock\':144,\n+\t\t\t\t\'num_lock\':144,\n+\t\t\t\t\'num\':144,\n+\t\t\t\t\n+\t\t\t\t\'pause\':19,\n+\t\t\t\t\'break\':19,\n+\t\t\t\t\n+\t\t\t\t\'insert\':45,\n+\t\t\t\t\'home\':36,\n+\t\t\t\t\'delete\':46,\n+\t\t\t\t\'end\':35,\n+\t\t\t\t\n+\t\t\t\t\'pageup\':33,\n+\t\t\t\t\'page_up\':33,\n+\t\t\t\t\'pu\':33,\n+\t\n+\t\t\t\t\'pagedown\':34,\n+\t\t\t\t\'page_down\':34,\n+\t\t\t\t\'pd\':34,\n+\t\n+\t\t\t\t\'left\':37,\n+\t\t\t\t\'up\':38,\n+\t\t\t\t\'right\':39,\n+\t\t\t\t\'down\':40,\n+\t\n+\t\t\t\t\'f1\':112,\n+\t\t\t\t\'f2\':113,\n+\t\t\t\t\'f3\':114,\n+\t\t\t\t\'f4\':115,\n+\t\t\t\t\'f5\':116,\n+\t\t\t\t\'f6\':117,\n+\t\t\t\t\'f7\':118,\n+\t\t\t\t\'f8\':119,\n+\t\t\t\t\'f9\':120,\n+\t\t\t\t\'f10\':121,\n+\t\t\t\t\'f11\':122,\n+\t\t\t\t\'f12\':123\n+\t\t\t}\n+\t\n+\t\t\tvar modifiers = { \n+\t\t\t\tshift: { wanted:false, pressed:false},\n+\t\t\t\tctrl : { wanted:false, pressed:false},\n+\t\t\t\talt : { wanted:false, pressed:false},\n+\t\t\t\tmeta : { wanted:false, pressed:false}\t//Meta is Mac specific\n+\t\t\t};\n+ \n+\t\t\tif(e.ctrlKey)\tmodifiers.ctrl.pressed = true;\n+\t\t\tif(e.shiftKey)\tmodifiers.shift.pressed = true;\n+\t\t\tif(e.altKey)\tmodifiers.alt.pressed = true;\n+\t\t\tif(e.metaKey) modifiers.meta.pressed = true;\n+ \n+\t\t\tfor(var i=0; k=keys[i],i 1) { //If it is a special key\n+\t\t\t\t\tif(special_keys[k] == code) kp++;\n+\t\t\t\t\t\n+\t\t\t\t} else if(opt[\'keycode\']) {\n+\t\t\t\t\tif(opt[\'keycode\'] == code) kp++;\n+\n+\t\t\t\t} else { //The special keys did not match\n+\t\t\t\t\tif(character == k) kp++;\n+\t\t\t\t\telse {\n+\t\t\t\t\t\tif(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase\n+\t\t\t\t\t\t\tcharacter = shift_nums[character]; \n+\t\t\t\t\t\t\tif(character == k) kp++;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t\n+\t\t\tif(kp == keys.length && \n+\t\t\t\t\t\tmodifiers.ctrl.pressed == modifiers.ctrl.wanted &&\n+\t\t\t\t\t\tmodifiers.shift.pressed == modifiers.shift.wanted &&\n+\t\t\t\t\t\tmodifiers.alt.pressed == modifiers.alt.wanted &&\n+\t\t\t\t\t\tmodifiers.meta.pressed == modifiers.meta.wanted) {\n+\t\t\t\tcallback(e);\n+\t\n+\t\t\t\tif(!opt[\'propagate\']) { //Stop the event\n+\t\t\t\t\t//e.cancelBubble is supported by IE - this will kill the bubbling process.\n+\t\t\t\t\te.cancelBubble = true;\n+\t\t\t\t\te.returnValue = false;\n+\t\n+\t\t\t\t\t//e.stopPropagation works in Firefox.\n+\t\t\t\t\tif (e.stopPropagation) {\n+\t\t\t\t\t\te.stopPropagation();\n+\t\t\t\t\t\te.preventDefault();\n+\t\t\t\t\t}\n+\t\t\t\t\treturn false;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\tthis.all_shortcuts[shortcut_combination] = {\n+\t\t\t\'callback\':func, \n+\t\t\t\'target\':ele, \n+\t\t\t\'event\': opt[\'type\']\n+\t\t};\n+\t\t//Attach the function with the event\n+\t\tif(ele.addEventListener) ele.addEventListener(opt[\'type\'], func, false);\n+\t\telse if(ele.attachEvent) ele.attachEvent(\'on\'+opt[\'type\'], func);\n+\t\telse ele[\'on\'+opt[\'type\']] = func;\n+\t},\n+\n+\t//Remove the shortcut - just specify the shortcut and I will remove the binding\n+\t\'remove\':function(shortcut_combination) {\n+\t\tshortcut_combination = shortcut_combination.toLowerCase();\n+\t\tvar binding = this.all_shortcuts[shortcut_combination];\n+\t\tdelete(this.all_shortcuts[shortcut_combination])\n+\t\tif(!binding) return;\n+\t\tvar type = binding[\'event\'];\n+\t\tvar ele = binding[\'target\'];\n+\t\tvar callback = binding[\'callback\'];\n+\n+\t\tif(ele.detachEvent) ele.detachEvent(\'on\'+type, callback);\n+\t\telse if(ele.removeEventListener) ele.removeEventListener(type, callback, false);\n+\t\telse ele[\'on\'+type] = false;\n+\t}\n+}\n+;\n+\n+ }).apply(root, arguments);\n+});\n+}(this));\n+\n /* Filemanager pattern.\n *\n * Options:\n@@ -37959,24 +39073,32 @@ define(\'mockup-patterns-filemanager\',[\n \'jquery\',\n \'pat-base\',\n \'underscore\',\n+ \'jqtree-contextmenu\',\n \'mockup-patterns-tree\',\n \'mockup-patterns-texteditor\',\n \'text!mockup-patterns-filemanager-url/templates/app.xml\',\n \'mockup-ui-url/views/toolbar\',\n \'mockup-ui-url/views/button\',\n \'mockup-ui-url/views/buttongroup\',\n+ \'mockup-ui-url/views/anchor\',\n+ \'mockup-ui-url/views/dropdown\',\n \'mockup-patterns-filemanager-url/js/addnew\',\n \'mockup-patterns-filemanager-url/js/newfolder\',\n+ \'mockup-patterns-filemanager-url/js/findfile\',\n+ \'mockup-patterns-filemanager-url/js/findinfiles\',\n \'mockup-patterns-filemanager-url/js/delete\',\n \'mockup-patterns-filemanager-url/js/customize\',\n \'mockup-patterns-filemanager-url/js/rename\',\n \'mockup-patterns-filemanager-url/js/upload\',\n \'translate\',\n \'mockup-utils\',\n- \'text!mockup-ui-url/templates/popover.xml\'\n-], function($, Base, _, Tree, TextEditor, AppTemplate, Toolbar,\n- ButtonView, ButtonGroup, AddNewView, NewFolderView, DeleteView,\n- CustomizeView, RenameView, UploadView, _t, utils) {\n+ \'js-shortcuts\',\n+ \'text!mockup-ui-url/templates/popover.xml\',\n+ \'text!mockup-ui-url/templates/dropdown.xml\'\n+], function($, Base, _, ContextMenu, Tree, TextEditor, AppTemplate, Toolbar,\n+ ButtonView, ButtonGroup, AnchorView, DropdownView,\n+ AddNewView, NewFolderView, FindFileView, FindInFilesView, DeleteView,\n+ CustomizeView, RenameView, UploadView, _t, utils, jsShortcuts) {\n \'use strict\';\n \n var FileManager = Base.extend({\n@@ -38014,13 +39136,21 @@ define(\'mockup-patterns-filemanager\',[\n \n self.options.treeConfig = $.extend(true, {}, self.treeConfig, {\n dataUrl: self.options.actionUrl + \'?action=dataTree\',\n+ dragAndDrop: true,\n+ useContextMenu: true,\n+ onCanMoveTo: function(moved, target, position) {\n+ /* if not using folder option, just allow, otherwise, only allow if folder */\n+ if (position === "inside") {\n+ return target.folder === undefined || target.folder === true;\n+ }\n+ return true;\n+ },\n onCreateLi: function(node, li) {\n var imageTypes = [\'png\', \'jpg\', \'jpeg\', \'gif\', \'ico\'];\n var themeTypes = [\'css\', \'html\', \'htm\', \'txt\', \'xml\', \'js\', \'cfg\', \'less\'];\n-\n $(\'span\', li).addClass(\'glyphicon\');\n if (node.folder) {\n- $(\'span\', li).addClass(\'glyphicon-folder-close\');\n+ $(\'span\', li).addClass(\'glyphicon-folder-close\').addClass("droptarget");\n } else if ($.inArray(node.fileType, imageTypes) >= 0) {\n $(\'span\', li).addClass(\'glyphicon-picture\');\n } else if ($.inArray(node.fileType, themeTypes) >= 0) {\n@@ -38037,73 +39167,150 @@ define(\'mockup-patterns-filemanager\',[\n id: \'save\',\n title: _t(\'Save\'),\n icon: \'floppy-disk\',\n- context: \'primary\'\n+ context: \'primary\',\n+ shortcut: \'Ctrl-S\'\n });\n-\n- var newFolderView = new NewFolderView({\n- triggerView: new ButtonView({\n+ self.btns = {\n+ "newfolder": new AnchorView({\n id: \'newfolder\',\n title: _t(\'New folder\'),\n tooltip: _t(\'Add new folder to current directory\'),\n icon: \'folder-open\',\n- context: \'default\'\n+ context: \'default\',\n+ shortcut: \'Alt-Shift-N\'\n }),\n- app: self\n- });\n- var addNewView = new AddNewView({\n- triggerView: new ButtonView({\n+ "newfile": new AnchorView({\n id: \'addnew\',\n- title: _t(\'Add new file\'),\n+ title: _t(\'New file\'),\n tooltip: _t(\'Add new file to current folder\'),\n icon: \'file\',\n- context: \'default\'\n+ context: \'default\',\n+ shortcut: \'Alt-N\'\n }),\n- app: self\n- });\n- var renameView = new RenameView({\n- triggerView: new ButtonView({\n+ "findfile": new AnchorView({\n+ id: \'findfile\',\n+ title: _t(\'Find File\'),\n+ tooltip: _t(\'Find theme resource in plone\'),\n+ icon: \'search\',\n+ context: \'default\',\n+ shortcut: \'Ctrl-F\'\n+ }),\n+ "findtextinfile": new AnchorView({\n+ id: \'findinfiles\',\n+ title: _t(\'Find in Files\'),\n+ tooltip: _t(\'Find text within theme resource in plone\'),\n+ icon: \'search\',\n+ context: \'default\',\n+ shortcut: \'Ctrl-E\'\n+ }),\n+ "rename": new AnchorView({\n id: \'rename\',\n title: _t(\'Rename\'),\n tooltip: _t(\'Rename currently selected resource\'),\n icon: \'random\',\n context: \'default\'\n }),\n- app: self\n- });\n- var deleteView = new DeleteView({\n- triggerView: new ButtonView({\n+ "delete": new AnchorView({\n id: \'delete\',\n title: _t(\'Delete\'),\n tooltip: _t(\'Delete currently selected resource\'),\n icon: \'trash\',\n context: \'danger\'\n }),\n+ };\n+\n+ var newFolderView = new NewFolderView({\n+ triggerView: self.btns["newfolder"],\n+ app: self\n+ });\n+ var addNewView = new AddNewView({\n+ triggerView: self.btns["newfile"],\n+ app: self\n+ });\n+ var findFileView = new FindFileView({\n+ triggerView: self.btns["findfile"],\n+ app: self\n+ });\n+ var findinFilesView = new FindInFilesView({\n+ triggerView: self.btns["findtextinfile"],\n+ app: self\n+ });\n+ var renameView = new RenameView({\n+ triggerView: self.btns["rename"],\n+ app: self\n+ });\n+ var deleteView = new DeleteView({\n+ triggerView: self.btns["delete"],\n app: self\n });\n \n- self.views = [\n- newFolderView,\n- addNewView,\n- renameView,\n- deleteView\n- ];\n+ var file_menu = new DropdownView({\n+ title: _t(\'File\'),\n+ items: [\n+ addNewView.triggerView,\n+ newFolderView.triggerView\n+ ],\n+ id: \'file_menu\',\n+ app: self,\n+ icon: \'file\',\n+ disable: function() {}\n+ });\n+\n+ var edit_menu = new DropdownView({\n+ title: _t(\'Edit\'),\n+ items: [\n+ renameView.triggerView,\n+ deleteView.triggerView\n+ ],\n+ id: \'edit_menu\',\n+ app: self,\n+ icon: \'file\',\n+ disable: function() {}\n+ });\n+\n+ var find_menu = new DropdownView({\n+ title: _t(\'Find\'),\n+ items: [\n+ findFileView.triggerView,\n+ findinFilesView.triggerView\n+ ],\n+ id: \'find_menu\',\n+ icon: \'search\',\n+ app: self,\n+ disable: function() {}\n+ });\n+\n+ var views = {\n+ "file_menu": [\n+ newFolderView,\n+ addNewView\n+ ],\n+ "edit_menu": [\n+ renameView,\n+ deleteView,\n+ ],\n+ "find_menu": [\n+ findFileView,\n+ findinFilesView\n+ ],\n+ };\n var mainButtons = [\n self.saveBtn,\n- newFolderView.triggerView,\n- addNewView.triggerView,\n- renameView.triggerView,\n- deleteView.triggerView\n+ file_menu,\n+ edit_menu,\n+ find_menu,\n ];\n \n if (self.options.uploadUrl && utils.featureSupport.dragAndDrop() && utils.featureSupport.fileApi()) {\n- var uploadView = new UploadView({\n- triggerView: new ButtonView({\n+ self.btns["upload"] = new AnchorView({\n id: \'upload\',\n- title: _t(\'Upload\'),\n+ title: _t(\'Upload Local Files...\'),\n tooltip: _t(\'Upload file to current directory\'),\n icon: \'upload\',\n context: \'default\'\n- }),\n+ });\n+ var uploadView = new UploadView({\n+ triggerView: self.btns["upload"],\n app: self,\n callback: function(data) {\n var path = self.uploadFolder + \'/\' + data.name;\n@@ -38114,22 +39321,26 @@ define(\'mockup-patterns-filemanager\',[\n \n }\n });\n- self.views.push(uploadView);\n- mainButtons.push(uploadView.triggerView);\n+ \n+ views.file_menu.push(uploadView);\n+ file_menu.items.push(uploadView.triggerView);\n }\n if (self.options.resourceSearchUrl) {\n+ self.btns["customize"] = new AnchorView({\n+ id: \'customize\',\n+ title: _t(\'Add new override\'),\n+ tooltip: _t(\'Find resource in plone to override\'),\n+ context: \'default\'\n+ });\n var customizeView = new CustomizeView({\n- triggerView: new ButtonView({\n- id: \'customize\',\n- title: _t(\'Add new override\'),\n- tooltip: _t(\'Find resource in plone to override\'),\n- context: \'default\'\n- }),\n+ triggerView: self.btns["customize"],\n app: self\n });\n- self.views.push(customizeView);\n- mainButtons.push(customizeView.triggerView);\n+ views["edit_menu"].push(customizeView);\n+ edit_menu.items.push(customizeView.triggerView);\n }\n+ self.views = [];\n+ self.views = self.views.concat(views.file_menu).concat(views.edit_menu).concat(views.find_menu);\n \n self.toolbar = new Toolbar({\n items: [\n@@ -38168,7 +39379,29 @@ define(\'mockup-patterns-filemanager\',[\n self._save();\n });\n self.render();\n+ self.shortcuts();\n+ \n },\n+ \n+ shortcuts: function(){\n+ var self = this;\n+ shortcut.add("Alt+N", function () {\n+ self.btns.newfile.$el.click();\n+ });\n+ shortcut.add("Alt+Shift+N", function () {\n+ self.btns.newfolder.$el.click();\n+ });\n+ shortcut.add("Ctrl+S", function () {\n+ self.saveBtn.$el.click();\n+ });\n+ shortcut.add("Ctrl+F", function () {\n+ self.btns.findfile.$el.click();\n+ });\n+ shortcut.add("Ctrl+E", function () {\n+ self.btns.findtextinfile.$el.click();\n+ });\n+ },\n+ \n $: function(selector) {\n return this.$el.find(selector);\n },\n@@ -38215,6 +39448,19 @@ define(\'mockup-patterns-filemanager\',[\n }\n });\n \n+ // bind \'tree.contextmenu\' event\n+ self.$tree.jqTreeContextMenu({\n+ menu: \'#contextual-menu\',\n+ onContextMenuItem: function(e, node, $el) {\n+ var action = $el.data("item");\n+ try {\n+ self.btns[action].el.click();\n+ } catch($err) {\n+ console.log("Command does not exist: " + action);\n+ }\n+ }\n+ });\n+\n self.$tree.bind(\'tree.select\', function(e) {\n if (e.node === null) {\n self.toggleButtons(false);\n@@ -38224,6 +39470,33 @@ define(\'mockup-patterns-filemanager\',[\n }\n });\n \n+ self.$tree.bind(\'tree.move\', function(event) {\n+ \n+ var target_node = event.move_info.target_node;\n+ var srcpath = event.move_info.moved_node.path;\n+ var newpath = target_node.path;\n+ if (event.move_info.position !== "inside" ){\n+ newpath = newpath.substring(newpath.indexOf(\'/\'), newpath.lastIndexOf(\'/\'));\n+ }\n+ \n+ self.doAction(\'move\', {\n+ data: {\n+ source: srcpath,\n+ destination: newpath\n+ },\n+ dataType: \'json\',\n+ success: function(data) {\n+ self.$tree.tree(\'reload\', function() {\n+ self.$tree.tree(\'selectNode\', target_node);\n+ });\n+ var jdata = JSON.parse(data);\n+ if(jdata.error != \'\'){\n+ alert(jdata.error);\n+ }\n+ }\n+ });\n+ });\n+\n self.$tree.bind(\'tree.open\', function(e) {\n var element = $(e.node.element).find(\':first\').find(\'.glyphicon\');\n $(element).addClass(\'glyphicon-folder-open\');\n@@ -38450,12 +39723,15 @@ define(\'mockup-patterns-filemanager\',[\n failure: options.failure || function() {}\n });\n },\n- openEditor: function(path) {\n+ openEditor: function(path, options) {\n var self = this;\n \n if (path !== undefined) {\n self.updateTabs(path);\n }\n+ if (options === undefined) {\n+ options = {};\n+ }\n \n // first we need to save the current editor content\n if (self.currentPath) {\n@@ -38492,6 +39768,10 @@ define(\'mockup-patterns-filemanager\',[\n }\n \n self.resizeEditor();\n+ if(options.goToLine != undefined){\n+ self.ace.editor.gotoLine(options.goToLine, 0, true);\n+ }\n+\n self.$el.trigger(\'fileChange\');\n self.ace.editor.on(\'change\', function() {\n if (self.ace.editor.curOp && self.ace.editor.curOp.command.name) {\n@@ -39610,13 +40890,19 @@ define(\'mockup-patterns-thememapper\',[\n \'mockup-patterns-thememapper-url/js/cacheview\',\n \'mockup-ui-url/views/button\',\n \'mockup-ui-url/views/buttongroup\',\n+ \'mockup-ui-url/views/anchor\',\n+ \'mockup-ui-url/views/dropdown\',\n \'mockup-utils\'\n-], function($, Base, _, _t, InspectorTemplate, FileManager, RuleBuilder, RuleBuilderView, LessBuilderView, CacheView, ButtonView, ButtonGroup, utils) {\n+], function($, Base, _, _t, InspectorTemplate, FileManager, RuleBuilder, RuleBuilderView,\n+ LessBuilderView, CacheView, ButtonView, ButtonGroup,\n+ AnchorView, DropdownView, utils) {\n \'use strict\';\n \n var inspectorTemplate = _.template(InspectorTemplate);\n \n var Inspector = Base.extend({\n+ name: \'thememapper-inspector\',\n+ trigger: \'.pat-thememapper-inspector-dummy\',\n defaults: {\n name: \'name\',\n ruleBuilder: null,\n@@ -39888,6 +41174,8 @@ define(\'mockup-patterns-thememapper\',[\n self.fileManager = new FileManager(self.$fileManager, self.options.filemanagerConfig);\n self.fileManager.setUploadUrl();\n \n+ self.btns = {};\n+ self.menus = {};\n self.setupButtons();\n \n self.ruleBuilder = new RuleBuilder(self, self.ruleBuilderCallback);\n@@ -39908,7 +41196,7 @@ define(\'mockup-patterns-thememapper\',[\n ruleBuilder: self.ruleBuilder,\n url: self.options.unthemedUrl,\n });\n- self.buildLessButton.disable();\n+ self.btns.buildLessButton.disable();\n \n if(!self.options.editable) {\n if(self.fileManager.toolbar) {\n@@ -39953,10 +41241,10 @@ define(\'mockup-patterns-thememapper\',[\n var self = this;\n \n if(node.fileType === \'less\'){\n- self.buildLessButton.enable();\n+ self.btns.buildLessButton.enable();\n }\n else {\n- self.buildLessButton.disable();\n+ self.btns.buildLessButton.disable();\n }\n \n if (node.path !== \'\') {\n@@ -40040,8 +41328,8 @@ define(\'mockup-patterns-thememapper\',[\n var $parent = self.$mockupInspector.parent();\n $parent.slideDown();\n self.hidden = false;\n- self.showInspectorsButton.options.title = \'Hide inspectors\';\n- self.showInspectorsButton.applyTemplate();\n+ self.btns.showInspectorsButton.options.title = \'Hide inspectors\';\n+ self.btns.showInspectorsButton.applyTemplate();\n $(\'html, body\').animate({\n scrollTop: $parent.offset().top - 50\n }, 500);\n@@ -40051,19 +41339,19 @@ define(\'mockup-patterns-thememapper\',[\n var $parent = self.$mockupInspector.parent();\n $parent.slideUp();\n self.hidden = true;\n- self.showInspectorsButton.options.title = \'Show inspectors\';\n- self.showInspectorsButton.applyTemplate();\n+ self.btns.showInspectorsButton.options.title = \'Show inspectors\';\n+ self.btns.showInspectorsButton.applyTemplate();\n },\n setupButtons: function(){\n var self = this;\n- self.showInspectorsButton = new ButtonView({\n+ self.btns.showInspectorsButton = new ButtonView({\n id: \'showinspectors\',\n title: _t(\'Show inspectors\'),\n icon: \'search\',\n tooltip: _t(\'Show inspector panels\'),\n context: \'default\'\n });\n- self.showInspectorsButton.on(\'button:click\', function(){\n+ self.btns.showInspectorsButton.on(\'button:click\', function(){\n if (self.hidden) {\n self.showInspectors();\n } else {\n@@ -40071,21 +41359,21 @@ define(\'mockup-patterns-thememapper\',[\n }\n });\n \n- self.buildRuleButton = new ButtonView({\n+ self.btns.buildRuleButton = new AnchorView({\n id: \'buildrule\',\n title: _t(\'Build rule\'),\n icon: \'wrench\',\n tooltip: _t(\'rule building wizard\'),\n context: \'default\'\n });\n- self.fullscreenButton = new ButtonView({\n+ self.btns.fullscreenButton = new ButtonView({\n id: \'fullscreenEditor\',\n title: _t(\'Fullscreen\'),\n icon: \'fullscreen\',\n tooltip: _t(\'view the editor in fullscreen\'),\n context: \'default\'\n });\n- self.fullscreenButton.on(\'button:click\', function() {\n+ self.btns.fullscreenButton.on(\'button:click\', function() {\n var btn = $(\'\'+\n \'\' + _t(\'Close Fullscreen\') + \'\'+\n \'\').prependTo($(\'.tree\'));\n@@ -40107,62 +41395,75 @@ define(\'mockup-patterns-thememapper\',[\n self.previewThemeButton.on(\'button:click\', function(){\n window.open(self.options.previewUrl);\n });\n- self.buildLessButton = new ButtonView({\n+ self.btns.buildLessButton = new AnchorView({\n id: \'buildless\',\n title: _t(\'Build CSS\'),\n icon: \'cog\',\n tooltip: _t(\'Compile LESS file\'),\n context: \'default\'\n });\n- self.refreshButton = new ButtonView({\n+ self.btns.refreshButton = new ButtonView({\n id: \'refreshButton \',\n title: _t(\'Refresh\'),\n icon: \'refresh\',\n tooltip: _t(\'Reload the current file\'),\n context: \'default\'\n });\n- self.refreshButton.on(\'button:click\', function() {\n+ self.btns.refreshButton.on(\'button:click\', function() {\n self.fileManager.refreshFile();\n });\n- self.cacheButton = new ButtonView({\n+ self.btns.cacheButton = new ButtonView({\n id: \'cachebutton\',\n title: _t(\'Clear cache\'),\n icon: \'floppy-remove\',\n tooltip: _t(\'Clear site\\\'s theme cache\'),\n context: \'default\'\n });\n- self.helpButton = new ButtonView({\n+ self.btns.helpButton = new ButtonView({\n id: \'helpbutton\',\n title: _t(\'Help\'),\n icon: \'question-sign\',\n tooltip: _t(\'Show help\'),\n context: \'default\'\n });\n- self.helpButton.on(\'button:click\', function(){\n+ self.btns.helpButton.on(\'button:click\', function(){\n window.open(self.options.helpUrl);\n });\n self.rulebuilderView = new RuleBuilderView({\n- triggerView: self.buildRuleButton,\n+ triggerView: self.btns.buildRuleButton,\n app: self\n });\n self.cacheView = new CacheView({\n- triggerView: self.cacheButton,\n+ triggerView: self.btns.cacheButton,\n app: self\n });\n self.lessbuilderView = new LessBuilderView({\n- triggerView: self.buildLessButton,\n+ triggerView: self.btns.buildLessButton,\n app: self\n });\n+\n+\n+ self.menus.tools = new DropdownView({\n+ title: _t(\'Tools\'),\n+ items: [\n+ self.btns.buildRuleButton,\n+ self.btns.buildLessButton,\n+ ],\n+ id: \'file_menu\',\n+ app: self,\n+ icon: \'file\',\n+ disable: function() {}\n+ });\n+\n self.buttonGroup = new ButtonGroup({\n items: [\n- self.showInspectorsButton,\n- self.buildRuleButton,\n+ self.menus.tools,\n+ self.btns.showInspectorsButton,\n self.previewThemeButton,\n- self.fullscreenButton,\n- self.buildLessButton,\n- self.refreshButton,\n- self.cacheButton,\n- self.helpButton\n+ self.btns.fullscreenButton,\n+ self.btns.refreshButton,\n+ self.btns.cacheButton,\n+ self.btns.helpButton\n ],\n id: \'mapper\'\n });\n@@ -40207,5 +41508,5 @@ require([\n \'use strict\';\n });\n \n-define("/home/_thet/data/dev/plone/buildout.coredev/src/plone.app.theming/src/plone/app/theming/browser/resources/thememapper.js", function(){});\n+define("/work/playground/plone/plone.coredev-5.2/src/plone.app.theming/src/plone/app/theming/browser/resources/thememapper.js", function(){});\n \ndiff --git a/src/plone/app/theming/browser/resources/thememapper-compiled.min.js b/src/plone/app/theming/browser/resources/thememapper-compiled.min.js\nindex b1450d8..c7eadc8 100644\n--- a/src/plone/app/theming/browser/resources/thememapper-compiled.min.js\n+++ b/src/plone/app/theming/browser/resources/thememapper-compiled.min.js\n@@ -1,22 +1,2 @@\n-(function(){function a(a){function b(b,c,d,e,f,g){for(;f>=0&&f0?0:h-1;return arguments.length<3&&(e=c[g?g[i]:i],i+=a),b(c,d,e,g,i,h)}}function b(a){return function(b,c,d){c=u(c,d);for(var e=z(b),f=a>0?0:e-1;f>=0&&f0?g=f>=0?f:Math.max(f+h,g):h=f>=0?Math.min(f+1,h):f+h+1;else if(c&&f&&h)return f=c(d,e),d[f]===e?f:-1;if(e!==e)return f=b(k.call(d,g,h),s.isNaN),f>=0?f+g:-1;for(f=a>0?g:h-1;f>=0&&f=0&&b<=y};s.each=s.forEach=function(a,b,c){b=t(b,c);var d,e;if(A(a))for(d=0,e=a.length;d=0},s.invoke=function(a,b){var c=k.call(arguments,2),d=s.isFunction(b);return s.map(a,function(a){var e=d?b:a[b];return null==e?e:e.apply(a,c)})},s.pluck=function(a,b){return s.map(a,s.property(b))},s.where=function(a,b){return s.filter(a,s.matcher(b))},s.findWhere=function(a,b){return s.find(a,s.matcher(b))},s.max=function(a,b,c){var d,e,f=-(1/0),g=-(1/0);if(null==b&&null!=a){a=A(a)?a:s.values(a);for(var h=0,i=a.length;hf&&(f=d)}else b=u(b,c),s.each(a,function(a,c,d){e=b(a,c,d),(e>g||e===-(1/0)&&f===-(1/0))&&(f=a,g=e)});return f},s.min=function(a,b,c){var d,e,f=1/0,g=1/0;if(null==b&&null!=a){a=A(a)?a:s.values(a);for(var h=0,i=a.length;hd||void 0===c)return 1;if(cb?(g&&(clearTimeout(g),g=null),h=j,f=a.apply(d,e),g||(d=e=null)):g||c.trailing===!1||(g=setTimeout(i,k)),f}},s.debounce=function(a,b,c){var d,e,f,g,h,i=function(){var j=s.now()-g;j=0?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e),d||(f=e=null)))};return function(){f=this,e=arguments,g=s.now();var j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e),f=e=null),h}},s.wrap=function(a,b){return s.partial(b,a)},s.negate=function(a){return function(){return!a.apply(this,arguments)}},s.compose=function(){var a=arguments,b=a.length-1;return function(){for(var c=b,d=a[b].apply(this,arguments);c--;)d=a[c].call(this,d);return d}},s.after=function(a,b){return function(){if(--a<1)return b.apply(this,arguments)}},s.before=function(a,b){var c;return function(){return--a>0&&(c=b.apply(this,arguments)),a<=1&&(b=null),c}},s.once=s.partial(s.before,2);var E=!{toString:null}.propertyIsEnumerable("toString"),F=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];s.keys=function(a){if(!s.isObject(a))return[];if(o)return o(a);var b=[];for(var c in a)s.has(a,c)&&b.push(c);return E&&d(a,b),b},s.allKeys=function(a){if(!s.isObject(a))return[];var b=[];for(var c in a)b.push(c);return E&&d(a,b),b},s.values=function(a){for(var b=s.keys(a),c=b.length,d=Array(c),e=0;e":">",\'"\':""","\'":"'","`":"`"},I=s.invert(H),J=function(a){var b=function(b){return a[b]},c="(?:"+s.keys(a).join("|")+")",d=RegExp(c),e=RegExp(c,"g");return function(a){return a=null==a?"":""+a,d.test(a)?a.replace(e,b):a}};s.escape=J(H),s.unescape=J(I),s.result=function(a,b,c){var d=null==a?void 0:a[b];return void 0===d&&(d=c),s.isFunction(d)?d.call(a):d};var K=0;s.uniqueId=function(a){var b=++K+"";return a?a+b:b},s.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var L=/(.)^/,M={"\'":"\'","\\\\":"\\\\","\\r":"r","\\n":"n","\\u2028":"u2028","\\u2029":"u2029"},N=/\\\\|\'|\\r|\\n|\\u2028|\\u2029/g,O=function(a){return"\\\\"+M[a]};s.template=function(a,b,c){!b&&c&&(b=c),b=s.defaults({},b,s.templateSettings);var d=RegExp([(b.escape||L).source,(b.interpolate||L).source,(b.evaluate||L).source].join("|")+"|$","g"),e=0,f="__p+=\'";a.replace(d,function(b,c,d,g,h){return f+=a.slice(e,h).replace(N,O),e=h+b.length,c?f+="\'+\\n((__t=("+c+"))==null?\'\':_.escape(__t))+\\n\'":d?f+="\'+\\n((__t=("+d+"))==null?\'\':__t)+\\n\'":g&&(f+="\';\\n"+g+"\\n__p+=\'"),b}),f+="\';\\n",b.variable||(f="with(obj||{}){\\n"+f+"}\\n"),f="var __t,__p=\'\',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,\'\');};\\n"+f+"return __p;\\n";try{var g=new Function(b.variable||"obj","_",f)}catch(h){throw h.source=f,h}var i=function(a){return g.call(this,a,s)},j=b.variable||"obj";return i.source="function("+j+"){\\n"+f+"}",i},s.chain=function(a){var b=s(a);return b._chain=!0,b};var P=function(a,b){return a._chain?s(b).chain():b};s.mixin=function(a){s.each(s.functions(a),function(b){var c=s[b]=a[b];s.prototype[b]=function(){var a=[this._wrapped];return j.apply(a,arguments),P(this,c.apply(s,a))}})},s.mixin(s),s.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=g[a];s.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),"shift"!==a&&"splice"!==a||0!==c.length||delete c[0],P(this,c)}}),s.each(["concat","join","slice"],function(a){var b=g[a];s.prototype[a]=function(){return P(this,b.apply(this._wrapped,arguments))}}),s.prototype.value=function(){return this._wrapped},s.prototype.valueOf=s.prototype.toJSON=s.prototype.value,s.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return s})}).call(this),function(){function a(){}function b(){}function c(a,b){this._loggers={},this.name=a||"",this._parent=b||null,b||(this._enabled=!0,this._level=h.WARN)}function d(){return g}function e(a){g=a}Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d&&a?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e});var f,g,h={DEBUG:10,INFO:20,WARN:30,ERROR:40,FATAL:50};a.prototype={output:function(a,b,c){if("undefined"!=typeof window.console&&"undefined"!=typeof console.log){a&&c.unshift(a+":");var d=c.join(" ");if(void 0===typeof console.info){var e;e=b<=h.DEBUG?"DEBUG":b<=h.INFO?"INFO":b<=h.WARN?"WARN":b<=h.ERROR?"ERROR":"FATAL",console.log("["+e+"] "+d)}else b<=h.DEBUG?(d="[DEBUG] "+d,console.log(d)):b<=h.INFO?console.info(d):b<=h.WARN?console.warn(d):console.error(d)}}},b.prototype={output:function(a,b,c){a&&c.unshift(a+":"),b<=h.DEBUG?(c.unshift("[DEBUG]"),console.log.apply(console,c)):b<=h.INFO?console.info.apply(console,c):b<=h.WARN?console.warn.apply(console,c):console.error.apply(console,c)}},c.prototype={getLogger:function(a){for(var b=a.split("."),d=this,e=this.name?[this.name]:[];b.length;){var f=b.shift();e.push(f),f in d._loggers||(d._loggers[f]=new c(e.join("."),d)),d=d._loggers[f]}return d},_getFlag:function(a){var b=this;for(a="_"+a;null!==b;){if(void 0!==b[a])return b[a];b=b._parent}return null},setEnabled:function(a){this._enabled=!!a},isEnabled:function(){this._getFlag("enabled")},setLevel:function(a){"number"==typeof a?this._level=a:"string"==typeof a&&(a=a.toUpperCase(),a in h&&(this._level=h[a]))},getLevel:function(){return this._getFlag("level")},log:function(a,b){!b.length||!this._getFlag("enabled")||a=0&&/(rv)(?::| )([\\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(a)||[],c=/(ipad)/.exec(a)||/(ipod)/.exec(a)||/(iphone)/.exec(a)||/(kindle)/.exec(a)||/(silk)/.exec(a)||/(android)/.exec(a)||/(windows phone)/.exec(a)||/(win)/.exec(a)||/(mac)/.exec(a)||/(linux)/.exec(a)||/(cros)/.exec(a)||/(playbook)/.exec(a)||/(bb)/.exec(a)||/(blackberry)/.exec(a)||[],d={},e={browser:b[5]||b[3]||b[1]||"",version:b[2]||b[4]||"0",versionNumber:b[4]||b[2]||"0",platform:c[0]||""};if(e.browser&&(d[e.browser]=!0,d.version=e.version,d.versionNumber=parseInt(e.versionNumber,10)),e.platform&&(d[e.platform]=!0),(d.android||d.bb||d.blackberry||d.ipad||d.iphone||d.ipod||d.kindle||d.playbook||d.silk||d["windows phone"])&&(d.mobile=!0),(d.cros||d.mac||d.linux||d.win)&&(d.desktop=!0),(d.chrome||d.opr||d.safari)&&(d.webkit=!0),d.rv||d.edge){var f="msie";e.browser=f,d[f]=!0}if(d.safari&&d.blackberry){var g="blackberry";e.browser=g,d[g]=!0}if(d.safari&&d.playbook){var h="playbook";e.browser=h,d[h]=!0}if(d.bb){var i="blackberry";e.browser=i,d[i]=!0}if(d.opr){var j="opera";e.browser=j,d[j]=!0}if(d.safari&&d.android){var k="android";e.browser=k,d[k]=!0}if(d.safari&&d.kindle){var l="kindle";e.browser=l,d[l]=!0}if(d.safari&&d.silk){var m="silk";e.browser=m,d[m]=!0}return d.name=e.browser,d.platform=e.platform,d}return window.jQBrowser=b(window.navigator.userAgent),window.jQBrowser.uaMatch=b,a&&(a.browser=window.jQBrowser),window.jQBrowser}),define("pat-utils",["jquery","jquery.browser","underscore"],function(a){function b(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}}function c(a){var b=typeof a;return"function"===b||"object"===b&&!!a}function d(a){if(!c(a))return a;for(var b,d,e=1,f=arguments.length;ed||b.top>e)}function h(a){return a.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,"\\\\$&")}function i(b,c){if(c.indexOf("*")===-1)b.removeClass(c);else{var d=c.replace(/[\\-\\[\\]{}()+?.,\\\\\\^$|#\\s]/g,"\\\\$&");d=d.replace(/[*]/g,".*"),d=new RegExp("^"+d+"$"),b.filter("[class]").each(function(){for(var b=a(this),c=b.attr("class").split(/\\s+/),e=[],f=0;f
    "),c.$el.addClass(c.className).hide().appendTo("body"))},c.show=function(b){c.init(),c.$el.show();var d=c.options.zIndex;"function"==typeof d?d=Math.max(d(),10005):(d=10005,a(".plone-modal-wrapper,.plone-modal-backdrop").each(function(){d=Math.max(d,a(this).css("zIndex")||10005)}),d+=1),c.$el.css("zIndex",d),void 0===b&&(b=!0),c.options.backdrop&&(c.options.backdrop.closeOnClick=b,c.options.backdrop.closeOnEsc=b,c.options.backdrop.init(),c.options.backdrop.show())},c.hide=function(){c.init(),c.$el.hide()},c},d=function(){var b=a(\'input[name="_authenticator"]\');return 0===b.length?(b=a(\'a[href*="_authenticator"]\'),b.length>0?b.attr("href").split("_authenticator=")[1]:""):b.val()},e=function(a){return void 0===a&&(a="id"),a+Math.floor(65536*(1+Math.random())).toString(16).substring(1)},f=function(a,b){void 0===b&&(b="id");var c=a.attr("id");return c=void 0===c?e(b):c.replace(/\\./g,"-"),a.attr("id",c),c},g=function(){var a=window;return a.parent!==window&&(a=a.parent),a},h=function(b){return a(/]*>((.|[\\n\\r])*)<\\/body>/im.exec(b)[0].replace("","
    ")).eq(0).html()},i={dragAndDrop:function(){return"draggable"in document.createElement("span")},fileApi:function(){return"undefined"!=typeof FileReader},history:function(){return!(!window.history||!window.history.pushState)}},j=function(b){return"string"==typeof b&&(b=a.trim(b).toLowerCase()),["false",!1,"0",0,"",void 0,null].indexOf(b)===-1},k=function(b){return a("
    ").text(b).html()},l=function(a){return a.replace(/<[^>]+>/gi,"")};return{bool:j,escapeHTML:k,removeHTML:l,featureSupport:i,generateId:e,getAuthenticator:d,getWindow:g,Loading:c,loading:new c,parseBodyTag:h,QueryHelper:b,setId:f}}),function(a){define("jqtree",["jquery"],function(){return function(){!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module \'"+g+"\'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gd.right||b>d.bottom)return null;for(f=0,e=this.hit_areas.length;f>1,c=this.hit_areas[g],bc.bottom))return c;f=g+1}return null},a.prototype.mustOpenFolderTimer=function(a){var b;return b=a.node,b.isFolder()&&!b.is_open&&a.position===h.INSIDE},a.prototype.updateDropHint=function(){var a;if(this.hovered_area)return this.removeDropHint(),a=this.tree_widget._getNodeElementForNode(this.hovered_area.node),this.previous_ghost=a.addDropHint(this.hovered_area.position)},a.prototype.startOpenFolderTimer=function(a){var b;return b=function(b){return function(){return b.tree_widget._openNode(a,b.tree_widget.options.slide,function(){return b.refresh(),b.updateDropHint()})}}(this),this.stopOpenFolderTimer(),this.open_folder_timer=setTimeout(b,this.tree_widget.options.openFolderDelay)},a.prototype.stopOpenFolderTimer=function(){if(this.open_folder_timer)return clearTimeout(this.open_folder_timer),this.open_folder_timer=null},a.prototype.moveItem=function(a){var b,c,d,e,f,g;if(this.hovered_area&&this.hovered_area.position!==h.NONE&&this.canMoveToArea(this.hovered_area)&&(d=this.current_item.node,g=this.hovered_area.node,e=this.hovered_area.position,f=d.parent,e===h.INSIDE&&(this.hovered_area.node.is_open=!0),b=function(a){return function(){return a.tree_widget.tree.moveNode(d,g,e),a.tree_widget.element.empty(),a.tree_widget._refreshElements()}}(this),c=this.tree_widget._triggerEvent("tree.move",{move_info:{moved_node:d,target_node:g,position:h.getName(e),previous_parent:f,do_move:b,original_event:a.original_event}}),!c.isDefaultPrevented()))return b()},a.prototype.getTreeDimensions=function(){var a;return a=this.tree_widget.element.offset(),{left:a.left,top:a.top,right:a.left+this.tree_widget.element.width(),bottom:a.top+this.tree_widget.element.height()+16}},a}(),i=function(){function a(a){this.tree=a}return a.prototype.iterate=function(){var a,b;return b=!0,(a=function(c){return function(e,f){var g,h,i,j,k,l,m,n;if(m=(e.is_open||!e.element)&&e.hasChildren(),e.element){if(g=d(e.element),!g.is(":visible"))return;b&&(c.handleFirstNode(e,g),b=!1),e.hasChildren()?e.is_open?c.handleOpenFolder(e,g)||(m=!1):c.handleClosedFolder(e,f,g):c.handleNode(e,f,g)}if(m){for(i=e.children.length,n=e.children,j=k=0,l=n.length;k\'+a.name+""),this.$element.css("position","absolute"),e.append(this.$element)}return a.prototype.move=function(a,b){return this.$element.offset({left:a-this.offset_x,top:b-this.offset_y})},a.prototype.remove=function(){return this.$element.remove()},a}(),b.exports={DragAndDropHandler:e,DragElement:f,HitAreasGenerator:g}},{"./node":5}],2:[function(a,b,c){var d,e,f,g,h,i;h=a("./node_element"),f=h.NodeElement,i=a("./util"),g=i.html_escape,d=jQuery,e=function(){function a(a){this.tree_widget=a,this.opened_icon_element=this.createButtonElement(a.options.openedIcon),this.closed_icon_element=this.createButtonElement(a.options.closedIcon)}return a.prototype.render=function(a){return a&&a.parent?this.renderFromNode(a):this.renderFromRoot()},a.prototype.renderFromRoot=function(){var a;return a=this.tree_widget.element,a.empty(),this.createDomElements(a[0],this.tree_widget.tree.children,!0,!0,1)},a.prototype.renderFromNode=function(a){var b,c;if(b=d(a.element),c=this.createLi(a,a.getLevel()),this.attachNodeData(a,c),b.after(c),b.remove(),a.children)return this.createDomElements(c,a.children,!1,!1,a.getLevel()+1)},a.prototype.createDomElements=function(a,b,c,d,e){var f,g,h,i,j;for(j=this.createUl(c),a.appendChild(j),g=0,h=b.length;g1))return b=a.originalEvent.changedTouches[0],this._handleMouseDown(a,this._getPositionInfo(b))},b.prototype._touchMove=function(a){var b;if(!(a.originalEvent.touches.length>1))return b=a.originalEvent.changedTouches[0],this._handleMouseMove(a,this._getPositionInfo(b))},b.prototype._touchEnd=function(a){var b;if(!(a.originalEvent.touches.length>1))return b=a.originalEvent.changedTouches[0],this._handleMouseUp(this._getPositionInfo(b))},b}(f),b.exports=e},{"./simple.widget":10}],5:[function(a,b,c){var d,e,f;d=jQuery,f={getName:function(a){return f.strings[a-1]},nameToIndex:function(a){var b,c,d;for(b=c=1,d=f.strings.length;1<=d?c<=d:c>=d;b=1<=d?++c:--c)if(f.strings[b-1]===a)return b;return 0}},f.BEFORE=1,f.AFTER=2,f.INSIDE=3,f.NONE=4,f.strings=["before","after","inside","none"],e=function(){function a(b,c,d){null==c&&(c=!1),null==d&&(d=a),this.name="",this.setData(b),this.children=[],this.parent=null,c&&(this.id_mapping={},this.tree=this,this.node_class=d)}return a.prototype.setData=function(a){var b,c,d;if(c=function(a){return function(b){if(null!==b)return a.name=b}}(this),"object"!=typeof a)c(a);else for(b in a)d=a[b],"label"===b?c(d):"children"!==b&&(this[b]=d);return null},a.prototype.initFromData=function(a){var b,c;return c=function(a){return function(c){if(a.setData(c),c.children)return b(c.children)}}(this),b=function(a){return function(b){var c,d,e,f;for(d=0,e=b.length;d=0?this.parent.children[a]:null):null},a.prototype.getNextSibling=function(){var a;return this.parent?(a=this.parent.getChildIndex(this)+1,a\'),b.append(this.$hint),this.$hint.css({width:c,height:b.outerHeight()-4})}return a.prototype.remove=function(){return this.$hint.remove()},a}(),g=function(){function a(a,b,c){this.$element=b,this.node=a,this.$ghost=d(\'
  • \'),c===i.AFTER?this.moveAfter():c===i.BEFORE?this.moveBefore():c===i.INSIDE&&(a.isFolder()&&a.is_open?this.moveInsideOpenFolder():this.moveInside())}return a.prototype.remove=function(){return this.$ghost.remove()},a.prototype.moveAfter=function(){return this.$element.after(this.$ghost)},a.prototype.moveBefore=function(){return this.$element.before(this.$ghost)},a.prototype.moveInsideOpenFolder=function(){return d(this.node.children[0].element).before(this.$ghost)},a.prototype.moveInside=function(){return this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")},a}(),b.exports={BorderDropHint:e,FolderElement:f,GhostDropHint:g,NodeElement:h}},{"./node":5}],7:[function(a,b,c){var d,e,f,g,h;h=a("./util"),f=h.indexOf,g=h.isInt,d=jQuery,e=function(){function a(a){this.tree_widget=a}return a.prototype.saveState=function(){var a;return a=JSON.stringify(this.getState()),this.tree_widget.options.onSetStateFromStorage?this.tree_widget.options.onSetStateFromStorage(a):this.supportsLocalStorage()?localStorage.setItem(this.getCookieName(),a):d.cookie?(d.cookie.raw=!0,d.cookie(this.getCookieName(),a,{path:"/"})):void 0},a.prototype.getStateFromStorage=function(){var a;return a=this._loadFromStorage(),a?this._parseState(a):null},a.prototype._parseState=function(a){var b;return b=d.parseJSON(a),b&&b.selected_node&&g(b.selected_node)&&(b.selected_node=[b.selected_node]),b},a.prototype._loadFromStorage=function(){return this.tree_widget.options.onGetStateFromStorage?this.tree_widget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getCookieName()):d.cookie?(d.cookie.raw=!0,d.cookie(this.getCookieName())):null},a.prototype.getState=function(){var a,b;return a=function(a){return function(){var b;return b=[],a.tree_widget.tree.iterate(function(a){return a.is_open&&a.id&&a.hasChildren()&&b.push(a.id),!0}),b}}(this),b=function(a){return function(){var b;return function(){var a,c,d,e;for(d=this.tree_widget.getSelectedNodes(),e=[],a=0,c=d.length;a=g},a}(),b.exports=e},{}],9:[function(a,b,c){var d,e;d=jQuery,e=function(){function a(a){this.tree_widget=a,this.clear()}return a.prototype.getSelectedNode=function(){var a;return a=this.getSelectedNodes(),!!a.length&&a[0]},a.prototype.getSelectedNodes=function(){var a,b,c;if(this.selected_single_node)return[this.selected_single_node];c=[];for(a in this.selected_nodes)b=this.tree_widget.getNodeById(a),b&&c.push(b);return c},a.prototype.getSelectedNodesUnder=function(a){var b,c,d;if(this.selected_single_node)return a.isParentOf(this.selected_single_node)?[this.selected_single_node]:[];d=[];for(b in this.selected_nodes)c=this.tree_widget.getNodeById(b),c&&a.isParentOf(c)&&d.push(c);return d},a.prototype.isNodeSelected=function(a){return a.id?this.selected_nodes[a.id]:!!this.selected_single_node&&this.selected_single_node.element===a.element},a.prototype.clear=function(){return this.selected_nodes={},this.selected_single_node=null},a.prototype.removeFromSelection=function(a,b){if(null==b&&(b=!1),a.id){if(delete this.selected_nodes[a.id],b)return a.iterate(function(b){return function(c){return delete b.selected_nodes[a.id],!0}}(this))}else if(this.selected_single_node&&a.element===this.selected_single_node.element)return this.selected_single_node=null},a.prototype.addToSelection=function(a){return a.id?this.selected_nodes[a.id]=!0:this.selected_single_node=a},a}(),b.exports=e},{}],10:[function(a,b,c){var d,e,f=[].slice;d=jQuery,e=function(){function a(a,b){this.$el=d(a),this.options=d.extend({},this.defaults,b)}return a.prototype.defaults={},a.prototype.destroy=function(){return this._deinit()},a.prototype._init=function(){return null},a.prototype._deinit=function(){return null},a.register=function(b,c){var e,g,h,i,j;return i=function(){return"simple_widget_"+c},j=function(b,c){var e;return e=d.data(b,c),e&&e instanceof a?e:null},g=function(a,c){var e,f,g,h,k,l;for(e=i(),h=0,k=a.length;h/g,">").replace(/"/g,""").replace(/\'/g,"'").replace(/\\//g,"/")},e=function(a){return a?"true":"false"},b.exports={_indexOf:d,getBoolString:e,html_escape:f,indexOf:g,isInt:h}},{}],13:[function(a,b,c){b.exports="1.3.3"},{}]},{},[11])}.apply(a,arguments)})}(this),define("mockup-patterns-tree",["jquery","pat-base","mockup-utils","jqtree"],function(a,b,c){"use strict";var d=b.extend({name:"tree",trigger:".pat-tree",parser:"mockup",defaults:{dragAndDrop:!1,autoOpen:!1,selectable:!0,keyboardSupport:!0,onLoad:null},init:function(){var b=this;for(var d in b.options){var e=b.defaults[d];void 0!==e&&"boolean"==typeof e&&(b.options[d]=c.bool(b.options[d]))}if(b.options.dragAndDrop&&void 0===b.options.onCanMoveTo&&(b.options.onCanMoveTo=function(a,b,c){return void 0===b.folder||b.folder===!0}),b.options.data&&"string"==typeof b.options.data&&(b.options.data=a.parseJSON(b.options.data)),null!==b.options.onLoad){var f=a.extend({},b.options);a.getJSON(f.dataUrl,function(a){f.data=a,delete f.dataUrl,b.tree=b.$el.tree(f),b.options.onLoad(b)})}else b.tree=b.$el.tree(b.options)}});return d}),function(a){define("ace",[],function(){return function(){!function(){function a(a){var b=c;a&&(c[a]||(c[a]={}),b=c[a]),b.define&&b.define.packaged||(d.original=b.define,b.define=d,b.define.packaged=!0),b.require&&b.require.packaged||(f.original=b.require,b.require=f,b.require.packaged=!0)}var b="",c=function(){return this}();if(c||"undefined"==typeof window||(c=window),b||"undefined"==typeof requirejs){var d=function(a,b,c){return"string"!=typeof a?void(d.original?d.original.apply(this,arguments):(console.error("dropping module because define wasn\'t a string."),console.trace())):(2==arguments.length&&(c=b),void(d.modules[a]||(d.payloads[a]=c,d.modules[a]=null)))};d.modules={},d.payloads={};var e=function(a,b,c){if("string"==typeof b){var d=h(a,b);if(void 0!=d)return c&&c(),d}else if("[object Array]"===Object.prototype.toString.call(b)){for(var e=[],g=0,i=b.length;g1&&e(i,"")>-1&&(c=RegExp(this.source,f.replace.call(d(this),"g","")),f.replace.call(a.slice(i.index),c,function(){for(var a=1;ai.index&&this.lastIndex--}return i},h||(RegExp.prototype.test=function(a){var b=f.exec.call(this,a);return b&&this.global&&!b[0].length&&this.lastIndex>b.index&&this.lastIndex--,!!b}))}),define("ace/lib/es5-shim",["require","exports","module"],function(a,b,c){function d(){}function e(a){try{return Object.defineProperty(a,"sentinel",{}),"sentinel"in a}catch(b){}}function f(a){return a=+a,a!==a?a=0:0!==a&&a!==1/0&&a!==-(1/0)&&(a=(a>0||-1)*Math.floor(Math.abs(a))),a}Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError("Function.prototype.bind called on incompatible "+b);var c=o.call(arguments,1),e=function(){if(this instanceof e){var d=b.apply(this,c.concat(o.call(arguments)));return Object(d)===d?d:this}return b.apply(a,c.concat(o.call(arguments)))};return b.prototype&&(d.prototype=b.prototype,e.prototype=new d,d.prototype=null),e});var g,h,i,j,k,l=Function.prototype.call,m=Array.prototype,n=Object.prototype,o=m.slice,p=l.bind(n.toString),q=l.bind(n.hasOwnProperty);if((k=q(n,"__defineGetter__"))&&(g=l.bind(n.__defineGetter__),h=l.bind(n.__defineSetter__),i=l.bind(n.__lookupGetter__),j=l.bind(n.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function a(a){var b=new Array(a+2);return b[0]=b[1]=0,b}var b,c=[];if(c.splice.apply(c,a(20)),c.splice.apply(c,a(26)),b=c.length,c.splice(5,0,"XXX"),b+1==c.length,b+1==c.length)return!0}()){var r=Array.prototype.splice;Array.prototype.splice=function(a,b){return arguments.length?r.apply(this,[void 0===a?0:a,void 0===b?this.length-a:b].concat(o.call(arguments,2))):[]}}else Array.prototype.splice=function(a,b){var c=this.length;a>0?a>c&&(a=c):void 0==a?a=0:a<0&&(a=Math.max(c+a,0)),a+bh)for(l=j;l--;)this[i+l]=this[h+l];if(f&&a===k)this.length=k,this.push.apply(this,e);else for(this.length=k+f,l=0;l>>0;if("[object Function]"!=p(a))throw new TypeError;for(;++e>>0,e=Array(d),f=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var g=0;g>>0,f=[],g=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var h=0;h>>0,e=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var f=0;f>>0,e=arguments[1];if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");for(var f=0;f>>0;if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");if(!d&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var e,f=0;if(arguments.length>=2)e=arguments[1];else for(;;){if(f in c){e=c[f++];break}if(++f>=d)throw new TypeError("reduce of empty array with no initial value")}for(;f>>0;if("[object Function]"!=p(a))throw new TypeError(a+" is not a function");if(!d&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var e,f=d-1;if(arguments.length>=2)e=arguments[1];else for(;;){if(f in c){e=c[f--];break}if(--f<0)throw new TypeError("reduceRight of empty array with no initial value")}do f in this&&(e=a.call(void 0,e,c[f],f,b));while(f--);return e}),Array.prototype.indexOf&&[0,1].indexOf(1,2)==-1||(Array.prototype.indexOf=function(a){var b=t&&"[object String]"==p(this)?this.split(""):K(this),c=b.length>>>0;if(!c)return-1;var d=0;for(arguments.length>1&&(d=f(arguments[1])),d=d>=0?d:Math.max(0,c+d);d>>0;if(!c)return-1;var d=c-1;for(arguments.length>1&&(d=Math.min(d,f(arguments[1]))),d=d>=0?d:c-Math.abs(d);d>=0;d--)if(d in b&&a===b[d])return d;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(a){return a.__proto__||(a.constructor?a.constructor.prototype:n)}),!Object.getOwnPropertyDescriptor){var u="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(a,b){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError(u+a);if(q(a,b)){var c,d,e;if(c={enumerable:!0,configurable:!0},k){var f=a.__proto__;a.__proto__=n;var d=i(a,b),e=j(a,b);if(a.__proto__=f,d||e)return d&&(c.get=d),e&&(c.set=e),c}return c.value=a[b],c}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(a){return Object.keys(a)}),!Object.create){var v;v=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var a={};for(var b in a)a[b]=null;return a.constructor=a.hasOwnProperty=a.propertyIsEnumerable=a.isPrototypeOf=a.toLocaleString=a.toString=a.valueOf=a.__proto__=null,a},Object.create=function(a,b){var c;if(null===a)c=v();else{if("object"!=typeof a)throw new TypeError("typeof prototype["+typeof a+"] != \'object\'");var d=function(){};d.prototype=a,c=new d,c.__proto__=a}return void 0!==b&&Object.defineProperties(c,b),c}}if(Object.defineProperty){var w=e({}),x="undefined"==typeof document||e(document.createElement("div"));if(!w||!x)var y=Object.defineProperty}if(!Object.defineProperty||y){var z="Property description must be an object: ",A="Object.defineProperty called on non-object: ",B="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(a,b,c){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError(A+a);if("object"!=typeof c&&"function"!=typeof c||null===c)throw new TypeError(z+c);if(y)try{return y.call(Object,a,b,c)}catch(d){}if(q(c,"value"))if(k&&(i(a,b)||j(a,b))){var e=a.__proto__;a.__proto__=n,delete a[b],a[b]=c.value,a.__proto__=e}else a[b]=c.value;else{if(!k)throw new TypeError(B);q(c,"get")&&g(a,b,c.get),q(c,"set")&&h(a,b,c.set)}return a}}Object.defineProperties||(Object.defineProperties=function(a,b){for(var c in b)q(b,c)&&Object.defineProperty(a,c,b[c]);return a}),Object.seal||(Object.seal=function(a){return a}),Object.freeze||(Object.freeze=function(a){return a});try{Object.freeze(function(){})}catch(C){Object.freeze=function(a){return function(b){return"function"==typeof b?b:a(b)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(a){return a}),Object.isSealed||(Object.isSealed=function(a){return!1}),Object.isFrozen||(Object.isFrozen=function(a){return!1}),Object.isExtensible||(Object.isExtensible=function(a){if(Object(a)===a)throw new TypeError;for(var b="";q(a,b);)b+="?";a[b]=!0;var c=q(a,b);return delete a[b],c}),!Object.keys){var D=!0,E=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],F=E.length;for(var G in{toString:null})D=!1;Object.keys=function L(a){if("object"!=typeof a&&"function"!=typeof a||null===a)throw new TypeError("Object.keys called on a non-object");var L=[];for(var b in a)q(a,b)&&L.push(b);if(D)for(var c=0,d=F;c=0?parseFloat((e.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]):parseFloat((e.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]),b.isOldIE=b.isIE&&b.isIE<9,b.isGecko=b.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,b.isOldGecko=b.isGecko&&parseInt((e.match(/rv\\:(\\d+)/)||[])[1],10)<4,b.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),b.isWebKit=parseFloat(e.split("WebKit/")[1])||void 0,b.isChrome=parseFloat(e.split(" Chrome/")[1])||void 0,b.isAIR=e.indexOf("AdobeAIR")>=0,b.isIPad=e.indexOf("iPad")>=0,b.isTouchPad=e.indexOf("TouchPad")>=0,b.isChromeOS=e.indexOf(" CrOS ")>=0}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(a,b,c){"use strict";function d(a,b,c){var d=j(b);if(!g.isMac&&h){if(h.OSKey&&(d|=8),h.altGr){if(3==(3&d))return;h.altGr=0}if(18===c||17===c){var e="location"in b?b.location:b.keyLocation;if(17===c&&1===e)1==h[c]&&(i=b.timeStamp);else if(18===c&&3===d&&2===e){var k=b.timeStamp-i;k<50&&(h.altGr=!0)}}}if(c in f.MODIFIER_KEYS&&(c=-1),8&d&&c>=91&&c<=93&&(c=-1),!d&&13===c){var e="location"in b?b.location:b.keyLocation;if(3===e&&(a(b,d,-c),b.defaultPrevented))return}if(g.isChromeOS&&8&d){if(a(b,d,c),b.defaultPrevented)return;d&=-9}return!!(d||c in f.FUNCTION_KEYS||c in f.PRINTABLE_KEYS)&&a(b,d,c)}function e(){h=Object.create(null),h.count=0,h.lastT=0}var f=a("./keys"),g=a("./useragent"),h=null,i=0;b.addListener=function(a,b,c){if(a.addEventListener)return a.addEventListener(b,c,!1);if(a.attachEvent){var d=function(){c.call(a,window.event)};c._wrapper=d,a.attachEvent("on"+b,d)}},b.removeListener=function(a,b,c){return a.removeEventListener?a.removeEventListener(b,c,!1):void(a.detachEvent&&a.detachEvent("on"+b,c._wrapper||c))},b.stopEvent=function(a){return b.stopPropagation(a),b.preventDefault(a),!1},b.stopPropagation=function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},b.preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},b.getButton=function(a){return"dblclick"==a.type?0:"contextmenu"==a.type||g.isMac&&a.ctrlKey&&!a.altKey&&!a.shiftKey?2:a.preventDefault?a.button:{1:0,2:2,4:1}[a.button]},b.capture=function(a,c,d){function e(a){c&&c(a),d&&d(a),b.removeListener(document,"mousemove",c,!0),b.removeListener(document,"mouseup",e,!0),b.removeListener(document,"dragstart",e,!0)}return b.addListener(document,"mousemove",c,!0),b.addListener(document,"mouseup",e,!0),b.addListener(document,"dragstart",e,!0),e},b.addTouchMoveListener=function(a,c){if("ontouchmove"in a){var d,e;b.addListener(a,"touchstart",function(a){var b=a.changedTouches[0];d=b.clientX,e=b.clientY}),b.addListener(a,"touchmove",function(a){var b=1,f=a.changedTouches[0];a.wheelX=-(f.clientX-d)/b,a.wheelY=-(f.clientY-e)/b,d=f.clientX,e=f.clientY,c(a)})}},b.addMouseWheelListener=function(a,c){"onmousewheel"in a?b.addListener(a,"mousewheel",function(a){var b=8;void 0!==a.wheelDeltaX?(a.wheelX=-a.wheelDeltaX/b,a.wheelY=-a.wheelDeltaY/b):(a.wheelX=0,a.wheelY=-a.wheelDelta/b),c(a)}):"onwheel"in a?b.addListener(a,"wheel",function(a){var b=.35;switch(a.deltaMode){case a.DOM_DELTA_PIXEL:a.wheelX=a.deltaX*b||0,a.wheelY=a.deltaY*b||0;break;case a.DOM_DELTA_LINE:case a.DOM_DELTA_PAGE:a.wheelX=5*(a.deltaX||0),a.wheelY=5*(a.deltaY||0)}c(a)}):b.addListener(a,"DOMMouseScroll",function(a){a.axis&&a.axis==a.HORIZONTAL_AXIS?(a.wheelX=5*(a.detail||0),a.wheelY=0):(a.wheelX=0,a.wheelY=5*(a.detail||0)),c(a)})},b.addMultiMouseDownListener=function(a,c,d,e){function f(a){if(0!==b.getButton(a)?l=0:a.detail>1?(l++,l>4&&(l=1)):l=1,g.isIE){var f=Math.abs(a.clientX-i)>5||Math.abs(a.clientY-j)>5;k&&!f||(l=1),k&&clearTimeout(k),k=setTimeout(function(){k=null},c[l-1]||600),1==l&&(i=a.clientX,j=a.clientY)}if(a._clicks=l,d[e]("mousedown",a),l>4)l=0;else if(l>1)return d[e](m[l],a)}function h(a){l=2,k&&clearTimeout(k),k=setTimeout(function(){k=null},c[l-1]||600),d[e]("mousedown",a),d[e](m[l],a)}var i,j,k,l=0,m={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(a)||(a=[a]),a.forEach(function(a){b.addListener(a,"mousedown",f),g.isOldIE&&b.addListener(a,"dblclick",h)})};var j=!g.isMac||!g.isOpera||"KeyboardEvent"in window?function(a){return 0|(a.ctrlKey?1:0)|(a.altKey?2:0)|(a.shiftKey?4:0)|(a.metaKey?8:0)}:function(a){return 0|(a.metaKey?1:0)|(a.altKey?2:0)|(a.shiftKey?4:0)|(a.ctrlKey?8:0)};if(b.getModifierString=function(a){return f.KEY_MODS[j(a)]},b.addCommandKeyListener=function(a,c){var f=b.addListener;if(g.isOldGecko||g.isOpera&&!("KeyboardEvent"in window)){var i=null;f(a,"keydown",function(a){i=a.keyCode}),f(a,"keypress",function(a){return d(c,a,i)})}else{var j=null;f(a,"keydown",function(a){var b=a.keyCode;h[b]=(h[b]||0)+1,91==b||92==b?h.OSKey=!0:h.OSKey&&a.timeStamp-h.lastT>200&&1==h.count&&e(),1==h[b]&&h.count++,h.lastT=a.timeStamp;var f=d(c,a,b);return j=a.defaultPrevented,f}),f(a,"keypress",function(a){j&&(a.ctrlKey||a.altKey||a.shiftKey||a.metaKey)&&(b.stopEvent(a),j=null)}),f(a,"keyup",function(a){var b=a.keyCode;h[b]?h.count=Math.max(h.count-1,0):e(),91!=b&&92!=b||(h.OSKey=!1),h[b]=null}),h||(e(),f(window,"focus",e))}},"object"==typeof window&&window.postMessage&&!g.isOldIE){var k=1;b.nextTick=function(a,c){c=c||window;var d="zero-timeout-message-"+k;b.addListener(c,"message",function e(f){f.data==d&&(b.stopPropagation(f),b.removeListener(c,"message",e),a())}),c.postMessage(d,"*")}}b.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),b.nextFrame?b.nextFrame=b.nextFrame.bind(window):b.nextFrame=function(a){setTimeout(a,17)}}),define("ace/lib/lang",["require","exports","module"],function(a,b,c){"use strict";b.last=function(a){return a[a.length-1]},b.stringReverse=function(a){return a.split("").reverse().join("")},b.stringRepeat=function(a,b){for(var c="";b>0;)1&b&&(c+=a),(b>>=1)&&(a+=a);return c};var d=/^\\s\\s*/,e=/\\s\\s*$/;b.stringTrimLeft=function(a){return a.replace(d,"")},b.stringTrimRight=function(a){return a.replace(e,"")},b.copyObject=function(a){var b={};for(var c in a)b[c]=a[c];return b},b.copyArray=function(a){for(var b=[],c=0,d=a.length;c1),a.preventDefault()):(this.setState("focusWait"),void this.captureMouse(a))},this.startSelect=function(a,b){a=a||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var c=this.editor;c.$blockScrolling++,this.mousedownEvent.getShiftKey()?c.selection.selectToPosition(a):b||c.selection.moveToPosition(a),b||this.select(),c.renderer.scroller.setCapture&&c.renderer.scroller.setCapture(),c.setStyle("ace_selecting"),this.setState("select"),c.$blockScrolling--},this.select=function(){var a,b=this.editor,c=b.renderer.screenToTextCoordinates(this.x,this.y);if(b.$blockScrolling++,this.$clickSelection){var d=this.$clickSelection.comparePoint(c);if(d==-1)a=this.$clickSelection.end;else if(1==d)a=this.$clickSelection.start;else{var e=f(this.$clickSelection,c);c=e.cursor,a=e.anchor}b.selection.setSelectionAnchor(a.row,a.column)}b.selection.selectToPosition(c),b.$blockScrolling--,b.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(a){var b,c=this.editor,d=c.renderer.screenToTextCoordinates(this.x,this.y),e=c.selection[a](d.row,d.column);if(c.$blockScrolling++,this.$clickSelection){var g=this.$clickSelection.comparePoint(e.start),h=this.$clickSelection.comparePoint(e.end);if(g==-1&&h<=0)b=this.$clickSelection.end,e.end.row==d.row&&e.end.column==d.column||(d=e.start);else if(1==h&&g>=0)b=this.$clickSelection.start,e.start.row==d.row&&e.start.column==d.column||(d=e.end);else if(g==-1&&1==h)d=e.end,b=e.start;else{var i=f(this.$clickSelection,d);d=i.cursor,b=i.anchor}c.selection.setSelectionAnchor(b.row,b.column)}c.selection.selectToPosition(d),c.$blockScrolling--,c.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var a=e(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),b=Date.now();(a>g||b-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(a){var b=a.getDocumentPosition(),c=this.editor,d=c.session,e=d.getBracketRange(b);e?(e.isEmpty()&&(e.start.column--,e.end.column++),this.setState("select")):(e=c.selection.getWordRange(b.row,b.column),this.setState("selectByWords")),this.$clickSelection=e,this.select()},this.onTripleClick=function(a){var b=a.getDocumentPosition(),c=this.editor;this.setState("selectByLines");var d=c.getSelectionRange();d.isMultiLine()&&d.contains(b.row,b.column)?(this.$clickSelection=c.selection.getLineRange(d.start.row),this.$clickSelection.end=c.selection.getLineRange(d.end.row).end):this.$clickSelection=c.selection.getLineRange(b.row),this.select()},this.onQuadClick=function(a){var b=this.editor;b.selectAll(),this.$clickSelection=b.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(a){if(!a.getAccelKey()){a.getShiftKey()&&a.wheelY&&!a.wheelX&&(a.wheelX=a.wheelY,a.wheelY=0);var b=a.domEvent.timeStamp,c=b-(this.$lastScrollTime||0),d=this.editor,e=d.renderer.isScrollableBy(a.wheelX*a.speed,a.wheelY*a.speed);return e||c<200?(this.$lastScrollTime=b,d.renderer.scrollBy(a.wheelX*a.speed,a.wheelY*a.speed),a.stop()):void 0}},this.onTouchMove=function(a){var b=a.domEvent.timeStamp,c=b-(this.$lastScrollTime||0),d=this.editor,e=d.renderer.isScrollableBy(a.wheelX*a.speed,a.wheelY*a.speed);if(e||c<200)return this.$lastScrollTime=b,d.renderer.scrollBy(a.wheelX*a.speed,a.wheelY*a.speed),a.stop()}}).call(d.prototype),b.DefaultHandlers=d}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(a,b,c){"use strict";function d(a){this.isOpen=!1,this.$element=null,this.$parentNode=a}var e=(a("./lib/oop"),a("./lib/dom"));(function(){this.$init=function(){return this.$element=e.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(a){e.setInnerText(this.getElement(),a)},this.setHtml=function(a){this.getElement().innerHTML=a},this.setPosition=function(a,b){this.getElement().style.left=a+"px",this.getElement().style.top=b+"px"},this.setClassName=function(a){e.addCssClass(this.getElement(),a)},this.show=function(a,b,c){null!=a&&this.setText(a),null!=b&&null!=c&&this.setPosition(b,c),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(d.prototype),b.Tooltip=d}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(a,b,c){"use strict";function d(a){function b(){var b=l.getDocumentPosition().row,e=i.$annotations[b];if(!e)return c();var f=g.session.getLength();if(b==f){var h=g.renderer.pixelToScreenCoordinates(0,l.y).row,k=l.$pos;if(h>g.session.documentToScreenRow(k.row,k.column))return c()}if(m!=e)if(m=e.text.join("
    "),j.setHtml(m),j.show(),g.on("mousewheel",c),a.$tooltipFollowsMouse)d(l);else{var n=l.domEvent.target,o=n.getBoundingClientRect(),p=j.getElement().style;p.left=o.right+"px",p.top=o.bottom+"px"}}function c(){k&&(k=clearTimeout(k)),m&&(j.hide(),m=null,g.removeEventListener("mousewheel",c))}function d(a){j.setPosition(a.x,a.y)}var g=a.editor,i=g.renderer.$gutterLayer,j=new e(g.container);a.editor.setDefaultHandler("guttermousedown",function(b){if(g.isFocused()&&0==b.getButton()){var c=i.getRegion(b);if("foldWidgets"!=c){var d=b.getDocumentPosition().row,e=g.session.selection;if(b.getShiftKey())e.selectTo(d,0);else{if(2==b.domEvent.detail)return g.selectAll(),b.preventDefault();a.$clickSelection=g.selection.getLineRange(d)}return a.setState("selectByLines"),a.captureMouse(b),b.preventDefault()}}});var k,l,m;a.editor.setDefaultHandler("guttermousemove",function(e){var g=e.domEvent.target||e.domEvent.srcElement;return f.hasCssClass(g,"ace_fold-widget")?c():(m&&a.$tooltipFollowsMouse&&d(e),l=e,void(k||(k=setTimeout(function(){k=null,l&&!a.isMousePressed?b():c()},50))))}),h.addListener(g.renderer.$gutter,"mouseout",function(a){l=null,m&&!k&&(k=setTimeout(function(){k=null,c()},50))}),g.on("changeSession",c)}function e(a){i.call(this,a)}var f=a("../lib/dom"),g=a("../lib/oop"),h=a("../lib/event"),i=a("../tooltip").Tooltip;g.inherits(e,i),function(){this.setPosition=function(a,b){var c=window.innerWidth||document.documentElement.clientWidth,d=window.innerHeight||document.documentElement.clientHeight,e=this.getWidth(),f=this.getHeight();a+=15,b+=15,a+e>c&&(a-=a+e-c),b+f>d&&(b-=20+f),i.prototype.setPosition.call(this,a,b)}}.call(e.prototype),b.GutterHandler=d}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(a,b,c){"use strict";var d=a("../lib/event"),e=a("../lib/useragent"),f=b.MouseEvent=function(a,b){this.domEvent=a,this.editor=b,this.x=this.clientX=a.clientX,this.y=this.clientY=a.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){d.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){d.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var a=this.editor,b=a.getSelectionRange();if(b.isEmpty())this.$inSelection=!1;else{var c=this.getDocumentPosition();this.$inSelection=b.contains(c.row,c.column)}return this.$inSelection},this.getButton=function(){return d.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=e.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(f.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(a,b,c){"use strict";function d(a){function b(a,b){var c=Date.now(),d=!b||a.row!=b.row,f=!b||a.column!=b.column;if(!C||d||f)q.$blockScrolling+=1,q.moveCursorToPosition(a),q.$blockScrolling-=1,C=c,D={x:u,y:v};else{var g=e(D.x,D.y,u,v);g>k?C=null:c-C>=j&&(q.renderer.scrollCursorIntoView(),C=null)}}function c(a,b){var c=Date.now(),d=q.renderer.layerConfig.lineHeight,e=q.renderer.layerConfig.characterWidth,f=q.renderer.scroller.getBoundingClientRect(),g={x:{left:u-f.left,right:f.right-u},y:{top:v-f.top,bottom:f.bottom-v}},h=Math.min(g.x.left,g.x.right),j=Math.min(g.y.top,g.y.bottom),k={row:a.row,column:a.column};h/e<=2&&(k.column+=g.x.left=i&&q.renderer.scrollCursorIntoView(k):B=c:B=null}function d(){var a=y;y=q.renderer.screenToTextCoordinates(u,v),b(y,a),c(y,a)}function l(){x=q.selection.toOrientedRange(),t=q.session.addMarker(x,"ace_selection",q.getSelectionStyle()),q.clearSelection(),q.isFocused()&&q.renderer.$cursorLayer.setBlinking(!1),clearInterval(w),d(),w=setInterval(d,20),F=0,g.addListener(document,"mousemove",n)}function m(){clearInterval(w),q.session.removeMarker(t),t=null,q.$blockScrolling+=1,q.selection.fromOrientedRange(x),q.$blockScrolling-=1,q.isFocused()&&!A&&q.renderer.$cursorLayer.setBlinking(!q.getReadOnly()),x=null,y=null,F=0,B=null,C=null,g.removeListener(document,"mousemove",n)}function n(){null==G&&(G=setTimeout(function(){null!=G&&t&&m()},20))}function o(a){var b=a.types;return!b||Array.prototype.some.call(b,function(a){return"text/plain"==a||"Text"==a})}function p(a){var b=["copy","copymove","all","uninitialized"],c=["move","copymove","linkmove","all","uninitialized"],d=h.isMac?a.altKey:a.ctrlKey,e="uninitialized";try{e=a.dataTransfer.effectAllowed.toLowerCase()}catch(a){}var f="none";return d&&b.indexOf(e)>=0?f="copy":c.indexOf(e)>=0?f="move":b.indexOf(e)>=0&&(f="copy"),f}var q=a.editor,r=f.createElement("img");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h.isOpera&&(r.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var s=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];s.forEach(function(b){a[b]=this[b]},this),q.addEventListener("mousedown",this.onMouseDown.bind(a));var t,u,v,w,x,y,z,A,B,C,D,E=q.container,F=0;this.onDragStart=function(a){if(this.cancelDrag||!E.draggable){var b=this;return setTimeout(function(){b.startSelect(),b.captureMouse(a)},0),a.preventDefault()}x=q.getSelectionRange();var c=a.dataTransfer;c.effectAllowed=q.getReadOnly()?"copy":"copyMove",h.isOpera&&(q.container.appendChild(r),r.scrollTop=0),c.setDragImage&&c.setDragImage(r,0,0),h.isOpera&&q.container.removeChild(r),c.clearData(),c.setData("Text",q.session.getTextRange()),A=!0,this.setState("drag")},this.onDragEnd=function(a){if(E.draggable=!1,A=!1,this.setState(null),!q.getReadOnly()){var b=a.dataTransfer.dropEffect;z||"move"!=b||q.session.remove(q.getSelectionRange()),q.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(a){if(!q.getReadOnly()&&o(a.dataTransfer))return u=a.clientX,v=a.clientY,t||l(),F++,a.dataTransfer.dropEffect=z=p(a),g.preventDefault(a)},this.onDragOver=function(a){if(!q.getReadOnly()&&o(a.dataTransfer))return u=a.clientX,v=a.clientY,t||(l(),F++),null!==G&&(G=null),a.dataTransfer.dropEffect=z=p(a),g.preventDefault(a)},this.onDragLeave=function(a){if(F--,F<=0&&t)return m(),z=null,g.preventDefault(a)},this.onDrop=function(a){if(y){var b=a.dataTransfer;if(A)switch(z){case"move":x=x.contains(y.row,y.column)?{start:y,end:y}:q.moveText(x,y);break;case"copy":x=q.moveText(x,y,!0)}else{var c=b.getData("Text");x={start:y,end:q.session.insert(y,c)},q.focus(),z=null}return m(),g.preventDefault(a)}},g.addListener(E,"dragstart",this.onDragStart.bind(a)),g.addListener(E,"dragend",this.onDragEnd.bind(a)),g.addListener(E,"dragenter",this.onDragEnter.bind(a)),g.addListener(E,"dragover",this.onDragOver.bind(a)),g.addListener(E,"dragleave",this.onDragLeave.bind(a)),g.addListener(E,"drop",this.onDrop.bind(a));var G=null}function e(a,b,c,d){return Math.sqrt(Math.pow(c-a,2)+Math.pow(d-b,2))}var f=a("../lib/dom"),g=a("../lib/event"),h=a("../lib/useragent"),i=200,j=200,k=5;(function(){this.dragWait=function(){var a=Date.now()-this.mousedownEvent.time;a>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var a=this.editor.container;a.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(a){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var a=this.editor,b=a.container;b.draggable=!0,a.renderer.$cursorLayer.setBlinking(!1),a.setStyle("ace_dragging");var c=h.isWin?"default":"move";a.renderer.setCursorStyle(c),this.setState("dragReady")},this.onMouseDrag=function(a){var b=this.editor.container;if(h.isIE&&"dragReady"==this.state){var c=e(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);c>3&&b.dragDrop()}if("dragWait"===this.state){var c=e(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);c>0&&(b.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(a){if(this.$dragEnabled){this.mousedownEvent=a;var b=this.editor,c=a.inSelection(),d=a.getButton(),e=a.domEvent.detail||1;if(1===e&&0===d&&c){if(a.editor.inMultiSelectMode&&(a.getAccelKey()||a.getShiftKey()))return;this.mousedownEvent.time=Date.now();var f=a.domEvent.target||a.domEvent.srcElement;if("unselectable"in f&&(f.unselectable="on"),b.getDragDelay()){if(h.isWebKit){this.cancelDrag=!0;var g=b.container;g.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(a,this.onMouseDrag.bind(this)),a.defaultPrevented=!0}}}}).call(d.prototype),b.DragdropHandler=d}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict";var d=a("./dom");b.get=function(a,b){var c=new XMLHttpRequest;c.open("GET",a,!0),c.onreadystatechange=function(){4===c.readyState&&b(c.responseText)},c.send(null)},b.loadScript=function(a,b){var c=d.getDocumentHead(),e=document.createElement("script");e.src=a,c.appendChild(e),e.onload=e.onreadystatechange=function(a,c){!c&&e.readyState&&"loaded"!=e.readyState&&"complete"!=e.readyState||(e=e.onload=e.onreadystatechange=null,c||b())}},b.qualifyURL=function(a){var b=document.createElement("a");return b.href=a,b.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(a,b,c){"use strict";var d={},e=function(){this.propagationStopped=!0},f=function(){this.defaultPrevented=!0};d._emit=d._dispatchEvent=function(a,b){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var c=this._eventRegistry[a]||[],d=this._defaultHandlers[a];if(c.length||d){"object"==typeof b&&b||(b={}),b.type||(b.type=a),b.stopPropagation||(b.stopPropagation=e),b.preventDefault||(b.preventDefault=f),c=c.slice();for(var g=0;g1&&(e=c[c.length-2]);var g=j[b+"Path"];return null==g?g=j.basePath:"/"==d&&(b=d=""),g&&"/"!=g.slice(-1)&&(g+="/"),g+b+d+e+this.get("suffix")},b.setModuleUrl=function(a,b){return j.$moduleUrls[a]=b},b.$loading={},b.loadModule=function(c,d){var e,f;Array.isArray(c)&&(f=c[0],c=c[1]);try{e=a(c)}catch(h){}if(e&&!b.$loading[c])return d&&d(e);if(b.$loading[c]||(b.$loading[c]=[]),b.$loading[c].push(d),!(b.$loading[c].length>1)){var i=function(){a([c],function(a){b._emit("load.module",{name:c,module:a});var d=b.$loading[c];b.$loading[c]=null,d.forEach(function(b){b&&b(a)})})};return b.get("packaged")?void g.loadScript(b.moduleUrl(c,f),i):i()}},d(!0),b.init=d}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(a,b,c){"use strict";var d=a("../lib/event"),e=a("../lib/useragent"),f=a("./default_handlers").DefaultHandlers,g=a("./default_gutter_handler").GutterHandler,h=a("./mouse_event").MouseEvent,i=a("./dragdrop_handler").DragdropHandler,j=a("../config"),k=function(a){var b=this;this.editor=a,new f(this),new g(this),new i(this);var c=function(b){var c=!document.hasFocus||!document.hasFocus()||!a.isFocused()&&document.activeElement==(a.textInput&&a.textInput.getElement());c&&window.focus(),a.focus()},h=a.renderer.getMouseEventTarget();d.addListener(h,"click",this.onMouseEvent.bind(this,"click")),d.addListener(h,"mousemove",this.onMouseMove.bind(this,"mousemove")),d.addMultiMouseDownListener([h,a.renderer.scrollBarV&&a.renderer.scrollBarV.inner,a.renderer.scrollBarH&&a.renderer.scrollBarH.inner,a.textInput&&a.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),d.addMouseWheelListener(a.container,this.onMouseWheel.bind(this,"mousewheel")),d.addTouchMoveListener(a.container,this.onTouchMove.bind(this,"touchmove"));var j=a.renderer.$gutter;d.addListener(j,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),d.addListener(j,"click",this.onMouseEvent.bind(this,"gutterclick")),d.addListener(j,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),d.addListener(j,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),d.addListener(h,"mousedown",c),d.addListener(j,"mousedown",c),e.isIE&&a.renderer.scrollBarV&&(d.addListener(a.renderer.scrollBarV.element,"mousedown",c),d.addListener(a.renderer.scrollBarH.element,"mousedown",c)),a.on("mousemove",function(c){if(!b.state&&!b.$dragDelay&&b.$dragEnabled){var d=a.renderer.screenToTextCoordinates(c.x,c.y),e=a.session.selection.getRange(),f=a.renderer;!e.isEmpty()&&e.insideStart(d.row,d.column)?f.setCursorStyle("default"):f.setCursorStyle("")}})};(function(){this.onMouseEvent=function(a,b){this.editor._emit(a,new h(b,this.editor))},this.onMouseMove=function(a,b){var c=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;c&&c.length&&this.editor._emit(a,new h(b,this.editor))},this.onMouseWheel=function(a,b){var c=new h(b,this.editor);c.speed=2*this.$scrollSpeed,c.wheelX=b.wheelX,c.wheelY=b.wheelY,this.editor._emit(a,c)},this.onTouchMove=function(a,b){var c=new h(b,this.editor);c.speed=1,c.wheelX=b.wheelX,c.wheelY=b.wheelY,this.editor._emit(a,c)},this.setState=function(a){this.state=a},this.captureMouse=function(a,b){this.x=a.x,this.y=a.y,this.isMousePressed=!0;var c=this.editor.renderer;c.$keepTextAreaAtCursor&&(c.$keepTextAreaAtCursor=null);var f=this,g=function(a){if(a){if(e.isWebKit&&!a.which&&f.releaseMouse)return f.releaseMouse();f.x=a.clientX,f.y=a.clientY,b&&b(a),f.mouseEvent=new h(a,f.editor),f.$mouseMoved=!0}\n-},i=function(a){clearInterval(k),j(),f[f.state+"End"]&&f[f.state+"End"](a),f.state="",null==c.$keepTextAreaAtCursor&&(c.$keepTextAreaAtCursor=!0,c.$moveTextAreaToCursor()),f.isMousePressed=!1,f.$onCaptureMouseMove=f.releaseMouse=null,a&&f.onMouseEvent("mouseup",a)},j=function(){f[f.state]&&f[f.state](),f.$mouseMoved=!1};if(e.isOldIE&&"dblclick"==a.domEvent.type)return setTimeout(function(){i(a)});f.$onCaptureMouseMove=g,f.releaseMouse=d.capture(this.editor.container,g,i);var k=setInterval(j,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var a=function(b){b&&b.domEvent&&"contextmenu"!=b.domEvent.type||(this.editor.off("nativecontextmenu",a),b&&b.domEvent&&d.stopEvent(b.domEvent))}.bind(this);setTimeout(a,10),this.editor.on("nativecontextmenu",a)}}).call(k.prototype),j.defineOptions(k.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:e.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),b.MouseHandler=k}),define("ace/mouse/fold_handler",["require","exports","module"],function(a,b,c){"use strict";function d(a){a.on("click",function(b){var c=b.getDocumentPosition(),d=a.session,e=d.getFoldAt(c.row,c.column,1);e&&(b.getAccelKey()?d.removeFold(e):d.expandFold(e),b.stop())}),a.on("gutterclick",function(b){var c=a.renderer.$gutterLayer.getRegion(b);if("foldWidgets"==c){var d=b.getDocumentPosition().row,e=a.session;e.foldWidgets&&e.foldWidgets[d]&&a.session.onFoldWidgetClick(d,b),a.isFocused()||a.focus(),b.stop()}}),a.on("gutterdblclick",function(b){var c=a.renderer.$gutterLayer.getRegion(b);if("foldWidgets"==c){var d=b.getDocumentPosition().row,e=a.session,f=e.getParentFoldRangeData(d,!0),g=f.range||f.firstRange;if(g){d=g.start.row;var h=e.getFoldAt(d,e.getLine(d).length,1);h?e.removeFold(h):(e.addFold("...",g),a.renderer.scrollCursorIntoView({row:g.start.row,column:0}))}b.stop()}})}b.FoldHandler=d}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(a,b,c){"use strict";var d=a("../lib/keys"),e=a("../lib/event"),f=function(a){this.$editor=a,this.$data={editor:a},this.$handlers=[],this.setDefaultHandler(a.commands)};(function(){this.setDefaultHandler=function(a){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=a,this.addKeyboardHandler(a,0)},this.setKeyboardHandler=function(a){var b=this.$handlers;if(b[b.length-1]!=a){for(;b[b.length-1]&&b[b.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(b[b.length-1]);this.addKeyboardHandler(a,1)}},this.addKeyboardHandler=function(a,b){if(a){"function"!=typeof a||a.handleKeyboard||(a.handleKeyboard=a);var c=this.$handlers.indexOf(a);c!=-1&&this.$handlers.splice(c,1),void 0==b?this.$handlers.push(a):this.$handlers.splice(b,0,a),c==-1&&a.attach&&a.attach(this.$editor)}},this.removeKeyboardHandler=function(a){var b=this.$handlers.indexOf(a);return b!=-1&&(this.$handlers.splice(b,1),a.detach&&a.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var a=this.$data,b=a.editor;return this.$handlers.map(function(c){return c.getStatusText&&c.getStatusText(b,a)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(a,b,c,d){for(var f,g=!1,h=this.$editor.commands,i=this.$handlers.length;i--&&(f=this.$handlers[i].handleKeyboard(this.$data,a,b,c,d),!(f&&f.command&&(g="null"==f.command||h.exec(f.command,this.$editor,f.args,d),g&&d&&a!=-1&&1!=f.passEvent&&1!=f.command.passEvent&&e.stopEvent(d),g))););return g||a!=-1||(f={command:"insertstring"},g=h.exec("insertstring",this.$editor,b)),g&&this.$editor._signal("keyboardActivity",f),g},this.onCommandKey=function(a,b,c){var e=d.keyCodeToString(c);this.$callKeyboardHandlers(b,e,c,a)},this.onTextInput=function(a){this.$callKeyboardHandlers(-1,a)}}).call(f.prototype),b.KeyBinding=f}),define("ace/range",["require","exports","module"],function(a,b,c){"use strict";var d=function(a,b){return a.row-b.row||a.column-b.column},e=function(a,b,c,d){this.start={row:a,column:b},this.end={row:c,column:d}};(function(){this.isEqual=function(a){return this.start.row===a.start.row&&this.end.row===a.end.row&&this.start.column===a.start.column&&this.end.column===a.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(a,b){return 0==this.compare(a,b)},this.compareRange=function(a){var b,c=a.end,d=a.start;return b=this.compare(c.row,c.column),1==b?(b=this.compare(d.row,d.column),1==b?2:0==b?1:0):b==-1?-2:(b=this.compare(d.row,d.column),b==-1?-1:1==b?42:0)},this.comparePoint=function(a){return this.compare(a.row,a.column)},this.containsRange=function(a){return 0==this.comparePoint(a.start)&&0==this.comparePoint(a.end)},this.intersects=function(a){var b=this.compareRange(a);return b==-1||0==b||1==b},this.isEnd=function(a,b){return this.end.row==a&&this.end.column==b},this.isStart=function(a,b){return this.start.row==a&&this.start.column==b},this.setStart=function(a,b){"object"==typeof a?(this.start.column=a.column,this.start.row=a.row):(this.start.row=a,this.start.column=b)},this.setEnd=function(a,b){"object"==typeof a?(this.end.column=a.column,this.end.row=a.row):(this.end.row=a,this.end.column=b)},this.inside=function(a,b){return 0==this.compare(a,b)&&(!this.isEnd(a,b)&&!this.isStart(a,b))},this.insideStart=function(a,b){return 0==this.compare(a,b)&&!this.isEnd(a,b)},this.insideEnd=function(a,b){return 0==this.compare(a,b)&&!this.isStart(a,b)},this.compare=function(a,b){return this.isMultiLine()||a!==this.start.row?athis.end.row?1:this.start.row===a?b>=this.start.column?0:-1:this.end.row===a?b<=this.end.column?0:1:0:bthis.end.column?1:0},this.compareStart=function(a,b){return this.start.row==a&&this.start.column==b?-1:this.compare(a,b)},this.compareEnd=function(a,b){return this.end.row==a&&this.end.column==b?1:this.compare(a,b)},this.compareInside=function(a,b){return this.end.row==a&&this.end.column==b?1:this.start.row==a&&this.start.column==b?-1:this.compare(a,b)},this.clipRows=function(a,b){if(this.end.row>b)var c={row:b+1,column:0};else if(this.end.rowb)var d={row:b+1,column:0};else if(this.start.rowb.row||a.row==b.row&&a.column>b.column},this.getRange=function(){var a=this.anchor,b=this.lead;return this.isEmpty()?g.fromPoints(b,b):this.isBackwards()?g.fromPoints(b,a):g.fromPoints(a,b)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var a=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(a,this.doc.getLine(a).length)},this.setRange=this.setSelectionRange=function(a,b){b?(this.setSelectionAnchor(a.end.row,a.end.column),this.selectTo(a.start.row,a.start.column)):(this.setSelectionAnchor(a.start.row,a.start.column),this.selectTo(a.end.row,a.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(a){var b=this.lead;this.$isEmpty&&this.setSelectionAnchor(b.row,b.column),a.call(this)},this.selectTo=function(a,b){this.$moveSelection(function(){this.moveCursorTo(a,b)})},this.selectToPosition=function(a){this.$moveSelection(function(){this.moveCursorToPosition(a)})},this.moveTo=function(a,b){this.clearSelection(),this.moveCursorTo(a,b)},this.moveToPosition=function(a){this.clearSelection(),this.moveCursorToPosition(a)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(a,b){if("undefined"==typeof b){var c=a||this.lead;a=c.row,b=c.column}return this.session.getWordRange(a,b)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var a=this.getCursor(),b=this.session.getAWordRange(a.row,a.column);this.setSelectionRange(b)},this.getLineRange=function(a,b){var c,d="number"==typeof a?a:this.lead.row,e=this.session.getFoldLine(d);return e?(d=e.start.row,c=e.end.row):c=d,b===!0?new g(d,0,c,this.session.getLine(c).length):new g(d,0,c+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var a,b=this.lead.getPosition();if(a=this.session.getFoldAt(b.row,b.column,-1))this.moveCursorTo(a.start.row,a.start.column);else if(0===b.column)b.row>0&&this.moveCursorTo(b.row-1,this.doc.getLine(b.row-1).length);else{var c=this.session.getTabSize();this.session.isTabStop(b)&&this.doc.getLine(b.row).slice(b.column-c,b.column).split(" ").length-1==c?this.moveCursorBy(0,-c):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var a,b=this.lead.getPosition();if(a=this.session.getFoldAt(b.row,b.column,1))this.moveCursorTo(a.end.row,a.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(b.column=d)}}this.moveCursorTo(b.row,b.column)},this.moveCursorFileEnd=function(){var a=this.doc.getLength()-1,b=this.doc.getLine(a).length;this.moveCursorTo(a,b)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var a,b=this.lead.row,c=this.lead.column,d=this.doc.getLine(b),e=d.substring(c);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var f=this.session.getFoldAt(b,c,1);return f?void this.moveCursorTo(f.end.row,f.end.column):((a=this.session.nonTokenRe.exec(e))&&(c+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,e=d.substring(c)),c>=d.length?(this.moveCursorTo(b,d.length),this.moveCursorRight(),void(b0&&this.moveCursorWordLeft())):((f=this.session.tokenRe.exec(g))&&(c-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(b,c))},this.$shortWordEndIndex=function(a){var b,c,d=0,e=/\\s/,f=this.session.tokenRe;if(f.lastIndex=0,b=this.session.tokenRe.exec(a))d=this.session.tokenRe.lastIndex;else{for(;(c=a[d])&&e.test(c);)d++;if(d<1)for(f.lastIndex=0;(c=a[d])&&!f.test(c);)if(f.lastIndex=0,d++,e.test(c)){if(d>2){d--;break}for(;(c=a[d])&&e.test(c);)d++;if(d>2)break}}return f.lastIndex=0,d},this.moveCursorShortWordRight=function(){var a=this.lead.row,b=this.lead.column,c=this.doc.getLine(a),d=c.substring(b),e=this.session.getFoldAt(a,b,1);if(e)return this.moveCursorTo(e.end.row,e.end.column);if(b==c.length){var f=this.doc.getLength();do a++,d=this.doc.getLine(a);while(a0&&/^\\s*$/.test(d));c=d.length,/\\s+$/.test(d)||(d="")}var f=e.stringReverse(d),g=this.$shortWordEndIndex(f);return this.moveCursorTo(b,c-g)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(a,b){var c=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===b&&(this.$desiredColumn?c.column=this.$desiredColumn:this.$desiredColumn=c.column);var d=this.session.screenToDocumentPosition(c.row+a,c.column);0!==a&&0===b&&d.row===this.lead.row&&d.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[d.row]&&(d.row>0||a>0)&&d.row++,this.moveCursorTo(d.row,d.column+b,0===b)},this.moveCursorToPosition=function(a){this.moveCursorTo(a.row,a.column)},this.moveCursorTo=function(a,b,c){var d=this.session.getFoldAt(a,b,1);d&&(a=d.start.row,b=d.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(a,b),this.$keepDesiredColumnOnChange=!1,c||(this.$desiredColumn=null)},this.moveCursorToScreen=function(a,b,c){var d=this.session.screenToDocumentPosition(a,b);this.moveCursorTo(d.row,d.column,c)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(a){this.setSelectionRange(a,a.cursor==a.start),this.$desiredColumn=a.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(a){var b=this.getRange();return a?(a.start.column=b.start.column,a.start.row=b.start.row,a.end.column=b.end.column,a.end.row=b.end.row):a=b,a.cursor=this.isBackwards()?a.start:a.end,a.desiredColumn=this.$desiredColumn,a},this.getRangeOfMovements=function(a){var b=this.getCursor();try{a(this);var c=this.getCursor();return g.fromPoints(b,c)}catch(d){return g.fromPoints(b,b)}finally{this.moveCursorToPosition(b)}},this.toJSON=function(){if(this.rangeCount)var a=this.ranges.map(function(a){var b=a.clone();return b.isBackwards=a.cursor==a.start,b});else{var a=this.getRange();a.isBackwards=this.isBackwards()}return a},this.fromJSON=function(a){if(void 0==a.start){if(this.rangeList){this.toSingleRange(a[0]);for(var b=a.length;b--;){var c=g.fromPoints(a[b].start,a[b].end);a[b].isBackwards&&(c.cursor=c.start),this.addRange(c,!0)}return}a=a[0]}this.rangeList&&this.toSingleRange(a),this.setSelectionRange(a,a.isBackwards)},this.isEqual=function(a){if((a.length||this.rangeCount)&&a.length!=this.rangeCount)return!1;if(!a.length||!this.ranges)return this.getRange().isEqual(a);for(var b=this.ranges.length;b--;)if(!this.ranges[b].isEqual(a[b]))return!1;return!0}}).call(h.prototype),b.Selection=h}),define("ace/tokenizer",["require","exports","module","ace/config"],function(a,b,c){"use strict";var d=a("./config"),e=2e3,f=function(a){this.states=a,this.regExps={},this.matchMappings={};for(var b in this.states){for(var c=this.states[b],d=[],e=0,f=this.matchMappings[b]={defaultToken:"text"},g="g",h=[],i=0;i1?j.onMatch=this.$applyToken:j.onMatch=j.token),l>1&&(/\\\\\\d/.test(j.regex)?k=j.regex.replace(/\\\\([0-9]+)/g,function(a,b){return"\\\\"+(parseInt(b,10)+e+1)}):(l=1,k=this.removeCapturingGroups(j.regex)),j.splitRegex||"string"==typeof j.token||h.push(j)),f[e]=i,e+=l,d.push(k),j.onMatch||(j.onMatch=null)}}d.length||(f[0]=0,d.push("$")),h.forEach(function(a){a.splitRegex=this.createSplitterRegexp(a.regex,g)},this),this.regExps[b]=new RegExp("("+d.join(")|(")+")|($)",g)}};(function(){this.$setMaxTokenCount=function(a){e=0|a},this.$applyToken=function(a){var b=this.splitRegex.exec(a).slice(1),c=this.token.apply(this,b);if("string"==typeof c)return[{type:c,value:a}];for(var d=[],e=0,f=c.length;ek){var r=a.substring(k,q-p.length);m.type==n?m.value+=r:(m.type&&j.push(m),m={type:n,value:r})}for(var s=0;se){for(l>2*a.length&&this.reportError("infinite loop with in ace tokenizer",{startState:b,line:a});k1&&c[0]!==d&&c.unshift("#tmp",d),{tokens:j,state:c.length?c:d}},this.reportError=d.reportError}).call(f.prototype),b.Tokenizer=f}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(a,b,c){"use strict";var d=a("../lib/lang"),e=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(a,b){if(b)for(var c in a){for(var d=a[c],e=0;e=this.$rowTokens.length;){if(this.$row+=1,a||(a=this.$session.getLength()),this.$row>=a)return this.$row=a-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var a=this.$rowTokens,b=this.$tokenIndex,c=a[b].start;if(void 0!==c)return c;for(c=0;b>0;)b-=1,c+=a[b].value.length;return c},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(d.prototype),b.TokenIterator=d}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(a,b,c){"use strict";var d=a("../tokenizer").Tokenizer,e=a("./text_highlight_rules").TextHighlightRules,f=a("./behaviour").Behaviour,g=a("../unicode"),h=a("../lib/lang"),i=a("../token_iterator").TokenIterator,j=a("../range").Range,k=function(){this.HighlightRules=e,this.$behaviour=new f};(function(){this.tokenRe=new RegExp("^["+g.packages.L+g.packages.Mn+g.packages.Mc+g.packages.Nd+g.packages.Pc+"\\\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+g.packages.L+g.packages.Mn+g.packages.Mc+g.packages.Nd+g.packages.Pc+"\\\\$_]|\\\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new d(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(a,b,c,d){function e(a){for(var b=c;b<=d;b++)a(f.getLine(b),b)}var f=b.doc,g=!0,i=!0,j=1/0,k=b.getTabSize(),l=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var m=this.lineCommentStart.map(h.escapeRegExp).join("|"),n=this.lineCommentStart[0];else var m=h.escapeRegExp(this.lineCommentStart),n=this.lineCommentStart;m=new RegExp("^(\\\\s*)(?:"+m+") ?"),l=b.getUseSoftTabs();var o=function(a,b){var c=a.match(m);if(c){var d=c[1].length,e=c[0].length;s(a,d,e)||" "!=c[0][e-1]||e--,f.removeInLine(b,d,e)}},p=n+" ",q=function(a,b){g&&!/\\S/.test(a)||(s(a,j,j)?f.insertInLine({row:b,column:j},p):f.insertInLine({row:b,column:j},n))},r=function(a,b){return m.test(a)},s=function(a,b,c){for(var d=0;b--&&" "==a.charAt(b);)d++;if(d%k!=0)return!1;for(var d=0;" "==a.charAt(c++);)d++;return k>2?d%k!=k-1:d%k==0}}else{if(!this.blockComment)return!1;var n=this.blockComment.start,t=this.blockComment.end,m=new RegExp("^(\\\\s*)(?:"+h.escapeRegExp(n)+")"),u=new RegExp("(?:"+h.escapeRegExp(t)+")\\\\s*$"),q=function(a,b){r(a,b)||g&&!/\\S/.test(a)||(f.insertInLine({row:b,column:a.length},t),f.insertInLine({row:b,column:j},n))},o=function(a,b){var c;(c=a.match(u))&&f.removeInLine(b,a.length-c[0].length,a.length),(c=a.match(m))&&f.removeInLine(b,c[1].length,c[0].length)},r=function(a,c){if(m.test(a))return!0;for(var d=b.getTokens(c),e=0;ea.length&&(v=a.length)}),j==1/0&&(j=v,g=!1,i=!1),l&&j%k!=0&&(j=Math.floor(j/k)*k),e(i?o:q)},this.toggleBlockComment=function(a,b,c,d){var e=this.blockComment;if(e){!e.start&&e[0]&&(e=e[0]);var f,g,h=new i(b,d.row,d.column),k=h.getCurrentToken(),l=(b.selection,b.selection.toOrientedRange());if(k&&/comment/.test(k.type)){for(var m,n;k&&/comment/.test(k.type);){var o=k.value.indexOf(e.start);if(o!=-1){var p=h.getCurrentTokenRow(),q=h.getCurrentTokenColumn()+o;m=new j(p,q,p,q+e.start.length);break}k=h.stepBackward()}for(var h=new i(b,d.row,d.column),k=h.getCurrentToken();k&&/comment/.test(k.type);){var o=k.value.indexOf(e.end);if(o!=-1){var p=h.getCurrentTokenRow(),q=h.getCurrentTokenColumn()+o;n=new j(p,q,p,q+e.end.length);break}k=h.stepForward()}n&&b.remove(n),m&&(b.remove(m),f=m.start.row,g=-e.start.length)}else g=e.start.length,f=c.start.row,b.insert(c.end,e.end),b.insert(c.start,e.start);l.start.row==f&&(l.start.column+=g),l.end.row==f&&(l.end.column+=g),b.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(a,b,c){return this.$getIndent(b)},this.checkOutdent=function(a,b,c){return!1},this.autoOutdent=function(a,b,c){},this.$getIndent=function(a){return a.match(/^\\s*/)[0]},this.createWorker=function(a){return null},this.createModeDelegates=function(a){this.$embeds=[],this.$modes={};for(var b in a)a[b]&&(this.$embeds.push(b),this.$modes[b]=new a[b]);for(var c=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],b=0;bthis.row)){var c=b(a,{row:this.row,column:this.column},this.$insertRight);this.setPosition(c.row,c.column,!0)}},this.setPosition=function(a,b,c){var d;if(d=c?{row:a,column:b}:this.$clipPositionToDocument(a,b),this.row!=d.row||this.column!=d.column){var e={row:this.row,column:this.column};this.row=d.row,this.column=d.column,this._signal("change",{old:e,value:d})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(a){this.document=a||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(a,b){var c={};return a>=this.document.getLength()?(c.row=Math.max(0,this.document.getLength()-1),c.column=this.document.getLine(c.row).length):a<0?(c.row=0,c.column=0):(c.row=a,c.column=Math.min(this.document.getLine(c.row).length,Math.max(0,b))),b<0&&(c.column=0),c}}).call(f.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(a,b,c){"use strict";var d=a("./lib/oop"),e=a("./apply_delta").applyDelta,f=a("./lib/event_emitter").EventEmitter,g=a("./range").Range,h=a("./anchor").Anchor,i=function(a){this.$lines=[""],0===a.length?this.$lines=[""]:Array.isArray(a)?this.insertMergedLines({row:0,column:0},a):this.insert({row:0,column:0},a)};(function(){d.implement(this,f),this.setValue=function(a){var b=this.getLength()-1;this.remove(new g(0,0,b,this.getLine(b).length)),this.insert({row:0,column:0},a)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(a,b){return new h(this,a,b)},0==="aaa".split(/a/).length?this.$split=function(a){return a.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:this.$split=function(a){return a.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(a){var b=a.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=b?b[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(a){this.$newLineMode!==a&&(this.$newLineMode=a,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(a){return"\\r\\n"==a||"\\r"==a||"\\n"==a},this.getLine=function(a){return this.$lines[a]||""},this.getLines=function(a,b){return this.$lines.slice(a,b+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(a){return this.getLinesForRange(a).join(this.getNewLineCharacter())},this.getLinesForRange=function(a){var b;if(a.start.row===a.end.row)b=[this.getLine(a.start.row).substring(a.start.column,a.end.column)];else{b=this.getLines(a.start.row,a.end.row),b[0]=(b[0]||"").substring(a.start.column);var c=b.length-1;a.end.row-a.start.row==c&&(b[c]=b[c].substring(0,a.end.column))}return b},this.insertLines=function(a,b){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(a,b)},this.removeLines=function(a,b){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(a,b)},this.insertNewLine=function(a){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(a,["",""])},this.insert=function(a,b){return this.getLength()<=1&&this.$detectNewLine(b),this.insertMergedLines(a,this.$split(b))},this.insertInLine=function(a,b){var c=this.clippedPos(a.row,a.column),d=this.pos(a.row,a.column+b.length);return this.applyDelta({start:c,end:d,action:"insert",lines:[b]},!0),this.clonePos(d)},this.clippedPos=function(a,b){var c=this.getLength();void 0===a?a=c:a<0?a=0:a>=c&&(a=c-1,b=void 0);var d=this.getLine(a);return void 0==b&&(b=d.length),b=Math.min(Math.max(b,0),d.length),{row:a,column:b}},this.clonePos=function(a){return{row:a.row,column:a.column}},this.pos=function(a,b){return{row:a,column:b}},this.$clipPosition=function(a){var b=this.getLength();return a.row>=b?(a.row=Math.max(0,b-1),a.column=this.getLine(b-1).length):(a.row=Math.max(0,a.row),a.column=Math.min(Math.max(a.column,0),this.getLine(a.row).length)),a},this.insertFullLines=function(a,b){a=Math.min(Math.max(a,0),this.getLength());var c=0;a0,d=b=0&&this.applyDelta({start:this.pos(a,this.getLine(a).length),end:this.pos(a+1,0),action:"remove",lines:["",""]})},this.replace=function(a,b){if(a instanceof g||(a=g.fromPoints(a.start,a.end)),0===b.length&&a.isEmpty())return a.start;if(b==this.getTextRange(a))return a.end;this.remove(a);var c;return c=b?this.insert(a.start,b):a.start},this.applyDeltas=function(a){for(var b=0;b=0;b--)this.revertDelta(a[b]);\n-},this.applyDelta=function(a,b){var c="insert"==a.action;(c?a.lines.length<=1&&!a.lines[0]:!g.comparePoints(a.start,a.end))||(c&&a.lines.length>2e4&&this.$splitAndapplyLargeDelta(a,2e4),e(this.$lines,a,b),this._signal("change",a))},this.$splitAndapplyLargeDelta=function(a,b){for(var c=a.lines,d=c.length,e=a.start.row,f=a.start.column,g=0,h=0;;){g=h,h+=b-1;var i=c.slice(g,h);if(h>d){a.lines=i,a.start.row=e+g,a.start.column=f;break}i.push(""),this.applyDelta({start:this.pos(e+g,f),end:this.pos(e+h,f=0),action:a.action,lines:i},!0)}},this.revertDelta=function(a){this.applyDelta({start:this.clonePos(a.start),end:this.clonePos(a.end),action:"insert"==a.action?"remove":"insert",lines:a.lines.slice()})},this.indexToPosition=function(a,b){for(var c=this.$lines||this.getAllLines(),d=this.getNewLineCharacter().length,e=b||0,f=c.length;e20){c.running=setTimeout(c.$worker,20);break}}c.currentLine=b,f<=d&&c.fireUpdateEvent(f,d)}}};(function(){d.implement(this,e),this.setTokenizer=function(a){this.tokenizer=a,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(a){this.doc=a,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(a,b){var c={first:a,last:b};this._signal("update",{data:c})},this.start=function(a){this.currentLine=Math.min(a||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(a){var b=a.start.row,c=a.end.row-b;if(0===c)this.lines[b]=null;else if("remove"==a.action)this.lines.splice(b,c+1,null),this.states.splice(b,c+1,null);else{var d=Array(c+1);d.unshift(b,1),this.lines.splice.apply(this.lines,d),this.states.splice.apply(this.states,d)}this.currentLine=Math.min(b,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(a){return this.lines[a]||this.$tokenizeRow(a)},this.getState=function(a){return this.currentLine==a&&this.$tokenizeRow(a),this.states[a]||"start"},this.$tokenizeRow=function(a){var b=this.doc.getLine(a),c=this.states[a-1],d=this.tokenizer.getLineTokens(b,c,a);return this.states[a]+""!=d.state+""?(this.states[a]=d.state,this.lines[a+1]=null,this.currentLine>a+1&&(this.currentLine=a+1)):this.currentLine==a&&(this.currentLine=a+1),this.lines[a]=d.tokens}}).call(f.prototype),b.BackgroundTokenizer=f}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(a,b,c){"use strict";var d=a("./lib/lang"),e=(a("./lib/oop"),a("./range").Range),f=function(a,b,c){this.setRegexp(a),this.clazz=b,this.type=c||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(a){this.regExp+""!=a+""&&(this.regExp=a,this.cache=[])},this.update=function(a,b,c,f){if(this.regExp)for(var g=f.firstRow,h=f.lastRow,i=g;i<=h;i++){var j=this.cache[i];null==j&&(j=d.getMatchOffsets(c.getLine(i),this.regExp),j.length>this.MAX_RANGES&&(j=j.slice(0,this.MAX_RANGES)),j=j.map(function(a){return new e(i,a.offset,i,a.offset+a.length)}),this.cache[i]=j.length?j:"");for(var k=j.length;k--;)b.drawSingleLineMarker(a,j[k].toScreenRange(c),this.clazz,f)}}}).call(f.prototype),b.SearchHighlight=f}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(a,b,c){"use strict";function d(a,b){this.foldData=a,Array.isArray(b)?this.folds=b:b=this.folds=[b];var c=b[b.length-1];this.range=new e(b[0].start.row,b[0].start.column,c.end.row,c.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(a){a.setFoldLine(this)},this)}var e=a("../range").Range;(function(){this.shiftRow=function(a){this.start.row+=a,this.end.row+=a,this.folds.forEach(function(b){b.start.row+=a,b.end.row+=a})},this.addFold=function(a){if(a.sameRow){if(a.start.rowthis.endRow)throw new Error("Can\'t add a fold to this FoldLine as it has no connection");this.folds.push(a),this.folds.sort(function(a,b){return-a.range.compareEnd(b.start.row,b.start.column)}),this.range.compareEnd(a.start.row,a.start.column)>0?(this.end.row=a.end.row,this.end.column=a.end.column):this.range.compareStart(a.end.row,a.end.column)<0&&(this.start.row=a.start.row,this.start.column=a.start.column)}else if(a.start.row==this.end.row)this.folds.push(a),this.end.row=a.end.row,this.end.column=a.end.column;else{if(a.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn\'t have a matching row");this.folds.unshift(a),this.start.row=a.start.row,this.start.column=a.start.column}a.foldLine=this},this.containsRow=function(a){return a>=this.start.row&&a<=this.end.row},this.walk=function(a,b,c){var d,e,f,g=0,h=this.folds,i=!0;null==b&&(b=this.end.row,c=this.end.column);for(var j=0;j0)){var i=e(a,g.start);return 0===h?b&&0!==i?-f-2:f:i>0||0===i&&!b?f:-f-1}}return-f-1},this.add=function(a){var b=!a.isEmpty(),c=this.pointIndex(a.start,b);c<0&&(c=-c-1);var d=this.pointIndex(a.end,b,c);return d<0?d=-d-1:d++,this.ranges.splice(c,d-c,a)},this.addList=function(a){for(var b=[],c=a.length;c--;)b.push.apply(b,this.add(a[c]));return b},this.substractPoint=function(a){var b=this.pointIndex(a);if(b>=0)return this.ranges.splice(b,1)},this.merge=function(){var a=[],b=this.ranges;b=b.sort(function(a,b){return e(a.start,b.start)});for(var c,d=b[0],f=1;f=0},this.containsPoint=function(a){return this.pointIndex(a)>=0},this.rangeAtPoint=function(a){var b=this.pointIndex(a);if(b>=0)return this.ranges[b]},this.clipRows=function(a,b){var c=this.ranges;if(c[0].start.row>b||c[c.length-1].start.rowd)break;if(k.start.row==d&&k.start.column>=b.column&&(k.start.column==b.column&&this.$insertRight||(k.start.column+=g,k.start.row+=f)),k.end.row==d&&k.end.column>=b.column){if(k.end.column==b.column&&this.$insertRight)continue;k.end.column==b.column&&g>0&&ik.start.column&&k.end.column==h[i+1].start.column&&(k.end.column-=g),k.end.column+=g,k.end.row+=f}}}if(0!=f&&i=a)return e;if(e.end.row>a)return null}return null},this.getNextFoldLine=function(a,b){var c=this.$foldData,d=0;for(b&&(d=c.indexOf(b)),d==-1&&(d=0),d;d=a)return e}return null},this.getFoldedRowCount=function(a,b){for(var c=this.$foldData,d=b-a+1,e=0;e=b){h=a?d-=b-h:d=0);break}g>=a&&(d-=h>=a?g-h:g-a+1)}return d},this.$addFoldLine=function(a){return this.$foldData.push(a),this.$foldData.sort(function(a,b){return a.start.row-b.start.row}),a},this.addFold=function(a,b){var c,d=this.$foldData,e=!1;a instanceof g?c=a:(c=new g(b,a),c.collapseChildren=b.collapseChildren),this.$clipRangeToDocument(c.range);var h=c.start.row,i=c.start.column,j=c.end.row,k=c.end.column;if(!(h0&&(this.removeFolds(n),n.forEach(function(a){c.addSubFold(a)}));for(var o=0;o0&&this.foldAll(a.start.row+1,a.end.row,a.collapseChildren-1),a.subFolds=[]},this.expandFolds=function(a){a.forEach(function(a){this.expandFold(a)},this)},this.unfold=function(a,b){var c,d;if(null==a?(c=new e(0,0,this.getLength(),0),b=!0):c="number"==typeof a?new e(a,0,a,this.getLine(a).length):"row"in a?e.fromPoints(a,a):a,d=this.getFoldsInRangeList(c),b)this.removeFolds(d);else for(var f=d;f.length;)this.expandFolds(f),f=this.getFoldsInRangeList(c);if(d.length)return d},this.isRowFolded=function(a,b){return!!this.getFoldLine(a,b)},this.getRowFoldEnd=function(a,b){var c=this.getFoldLine(a,b);return c?c.end.row:a},this.getRowFoldStart=function(a,b){var c=this.getFoldLine(a,b);return c?c.start.row:a},this.getFoldDisplayLine=function(a,b,c,d,e){null==d&&(d=a.start.row),null==e&&(e=0),null==b&&(b=a.end.row),null==c&&(c=this.getLine(b).length);var f=this.doc,g="";return a.walk(function(a,b,c,h){if(!(b=a){e=f.end.row;try{var g=this.addFold("...",f);g&&(g.collapseChildren=c)}catch(h){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(a){if(!this.$foldStyles[a])throw new Error("invalid fold style: "+a+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=a){this.$foldStyle=a,"manual"==a&&this.unfold();var b=this.$foldMode;this.$setFolding(null),this.$setFolding(b)}},this.$setFolding=function(a){if(this.$foldMode!=a){if(this.$foldMode=a,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!a||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=a.getFoldWidget.bind(a,this,this.$foldStyle),this.getFoldWidgetRange=a.getFoldWidgetRange.bind(a,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(a,b){var c=this.foldWidgets;if(!c||b&&c[a])return{};for(var d,e=a-1;e>=0;){var f=c[e];if(null==f&&(f=c[e]=this.getFoldWidget(e)),"start"==f){var g=this.getFoldWidgetRange(e);if(d||(d=g),g&&g.end.row>=a)break}e--}return{range:e!==-1&&g,firstRange:d}},this.onFoldWidgetClick=function(a,b){b=b.domEvent;var c={children:b.shiftKey,all:b.ctrlKey||b.metaKey,siblings:b.altKey},d=this.$toggleFoldWidget(a,c);if(!d){var e=b.target||b.srcElement;e&&/ace_fold-widget/.test(e.className)&&(e.className+=" ace_invalid")}},this.$toggleFoldWidget=function(a,b){if(this.getFoldWidget){var c=this.getFoldWidget(a),d=this.getLine(a),e="end"===c?-1:1,f=this.getFoldAt(a,e===-1?0:d.length,e);if(f)return void(b.children||b.all?this.removeFold(f):this.expandFold(f));var g=this.getFoldWidgetRange(a,!0);if(g&&!g.isMultiLine()&&(f=this.getFoldAt(g.start.row,g.start.column,1),f&&g.isEqual(f.range)))return void this.removeFold(f);if(b.siblings){var h=this.getParentFoldRangeData(a);if(h.range)var i=h.range.start.row+1,j=h.range.end.row;this.foldAll(i,j,b.all?1e4:0)}else b.children?(j=g?g.end.row:this.getLength(),this.foldAll(a+1,j,b.all?1e4:0)):g&&(b.all&&(g.collapseChildren=1e4),this.addFold("...",g));return g}},this.toggleFoldWidget=function(a){var b=this.selection.getCursor().row;b=this.getRowFoldStart(b);var c=this.$toggleFoldWidget(b,{});if(!c){var d=this.getParentFoldRangeData(b,!0);if(c=d.range||d.firstRange){b=c.start.row;var e=this.getFoldAt(b,this.getLine(b).length,1);e?this.removeFold(e):this.addFold("...",c)}}},this.updateFoldWidgets=function(a){var b=a.start.row,c=a.end.row-b;if(0===c)this.foldWidgets[b]=null;else if("remove"==a.action)this.foldWidgets.splice(b,c+1,null);else{var d=Array(c+1);d.unshift(b,1),this.foldWidgets.splice.apply(this.foldWidgets,d)}},this.tokenizerUpdateFoldWidgets=function(a){var b=a.data;b.first!=b.last&&this.foldWidgets.length>b.first&&this.foldWidgets.splice(b.first,this.foldWidgets.length)}}var e=a("../range").Range,f=a("./fold_line").FoldLine,g=a("./fold").Fold,h=a("../token_iterator").TokenIterator;b.Folding=d}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(a,b,c){"use strict";function d(){this.findMatchingBracket=function(a,b){if(0==a.column)return null;var c=b||this.getLine(a.row).charAt(a.column-1);if(""==c)return null;var d=c.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return d?d[1]?this.$findClosingBracket(d[1],a):this.$findOpeningBracket(d[2],a):null},this.getBracketRange=function(a){var b,c=this.getLine(a.row),d=!0,e=c.charAt(a.column-1),g=e&&e.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(g||(e=c.charAt(a.column),a={row:a.row,column:a.column+1},g=e&&e.match(/([\\(\\[\\{])|([\\)\\]\\}])/),d=!1),!g)return null;if(g[1]){var h=this.$findClosingBracket(g[1],a);if(!h)return null;b=f.fromPoints(a,h),d||(b.end.column++,b.start.column--),b.cursor=b.end}else{var h=this.$findOpeningBracket(g[2],a);if(!h)return null;b=f.fromPoints(h,a),d||(b.start.column++,b.end.column--),b.cursor=b.start}return b},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(a,b,c){var d=this.$brackets[a],f=1,g=new e(this,b.row,b.column),h=g.getCurrentToken();if(h||(h=g.stepForward()),h){c||(c=new RegExp("(\\\\.?"+h.type.replace(".","\\\\.").replace("rparen",".paren").replace(/\\b(?:end)\\b/,"(?:start|begin|end)")+")+"));for(var i=b.column-g.getCurrentTokenColumn()-2,j=h.value;;){for(;i>=0;){var k=j.charAt(i);if(k==d){if(f-=1,0==f)return{row:g.getCurrentTokenRow(),column:i+g.getCurrentTokenColumn()}}else k==a&&(f+=1);i-=1}do h=g.stepBackward();while(h&&!c.test(h.type));if(null==h)break;j=h.value,i=j.length-1}return null}},this.$findClosingBracket=function(a,b,c){var d=this.$brackets[a],f=1,g=new e(this,b.row,b.column),h=g.getCurrentToken();if(h||(h=g.stepForward()),h){c||(c=new RegExp("(\\\\.?"+h.type.replace(".","\\\\.").replace("lparen",".paren").replace(/\\b(?:start|begin)\\b/,"(?:start|begin|end)")+")+"));for(var i=b.column-g.getCurrentTokenColumn();;){for(var j=h.value,k=j.length;i=4352&&a<=4447||a>=4515&&a<=4519||a>=4602&&a<=4607||a>=9001&&a<=9002||a>=11904&&a<=11929||a>=11931&&a<=12019||a>=12032&&a<=12245||a>=12272&&a<=12283||a>=12288&&a<=12350||a>=12353&&a<=12438||a>=12441&&a<=12543||a>=12549&&a<=12589||a>=12593&&a<=12686||a>=12688&&a<=12730||a>=12736&&a<=12771||a>=12784&&a<=12830||a>=12832&&a<=12871||a>=12880&&a<=13054||a>=13056&&a<=19903||a>=19968&&a<=42124||a>=42128&&a<=42182||a>=43360&&a<=43388||a>=44032&&a<=55203||a>=55216&&a<=55238||a>=55243&&a<=55291||a>=63744&&a<=64255||a>=65040&&a<=65049||a>=65072&&a<=65106||a>=65108&&a<=65126||a>=65128&&a<=65131||a>=65281&&a<=65376||a>=65504&&a<=65510)}d.implement(this,g),this.setDocument=function(a){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=a,a.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(a){if(!a)return this.$docRowCache=[],void(this.$screenRowCache=[]);var b=this.$docRowCache.length,c=this.$getRowCacheIndex(this.$docRowCache,a)+1;b>c&&(this.$docRowCache.splice(c,b),this.$screenRowCache.splice(c,b))},this.$getRowCacheIndex=function(a,b){for(var c=0,d=a.length-1;c<=d;){var e=c+d>>1,f=a[e];if(b>f)c=e+1;else{if(!(b=b));f++);return(c=d[f])?(c.index=f,c.start=e-c.value.length,c):null},this.setUndoManager=function(a){if(this.$undoManager=a,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),a){var b=this;this.$syncInformUndoManager=function(){b.$informUndoManager.cancel(),b.$deltasFold.length&&(b.$deltas.push({group:"fold",deltas:b.$deltasFold}),b.$deltasFold=[]),b.$deltasDoc.length&&(b.$deltas.push({group:"doc",deltas:b.$deltasDoc}),b.$deltasDoc=[]),b.$deltas.length>0&&a.execute({action:"aceupdate",args:[b.$deltas,b],merge:b.mergeUndoDeltas}),b.mergeUndoDeltas=!1,b.$deltas=[]},this.$informUndoManager=e.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?e.stringRepeat(" ",this.getTabSize()):"\\t"},this.setUseSoftTabs=function(a){this.setOption("useSoftTabs",a)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(a){this.setOption("tabSize",a)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(a){return this.$useSoftTabs&&a.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(a){this.setOption("overwrite",a)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(a,b){this.$decorations[a]||(this.$decorations[a]=""),this.$decorations[a]+=" "+b,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(a,b){this.$decorations[a]=(this.$decorations[a]||"").replace(" "+b,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(a){this.$breakpoints=[];for(var b=0;b0&&(d=!!c.charAt(b-1).match(this.tokenRe)),d||(d=!!c.charAt(b).match(this.tokenRe)),d)var e=this.tokenRe;else if(/^\\s+$/.test(c.slice(b-1,b+1)))var e=/\\s/;else var e=this.nonTokenRe;var f=b;if(f>0){do f--;while(f>=0&&c.charAt(f).match(e));f++}for(var g=b;ga&&(a=b.screenWidth)}),this.lineWidgetWidth=a},this.$computeWidth=function(a){if(this.$modified||a){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var b=this.doc.getAllLines(),c=this.$rowLengthCache,d=0,e=0,f=this.$foldData[e],g=f?f.start.row:1/0,h=b.length,i=0;ig){if(i=f.end.row+1,i>=h)break;f=this.$foldData[e++],g=f?f.start.row:1/0}null==c[i]&&(c[i]=this.$getStringScreenWidth(b[i])[0]),c[i]>d&&(d=c[i])}this.screenWidth=d}},this.getLine=function(a){return this.doc.getLine(a)},this.getLines=function(a,b){return this.doc.getLines(a,b)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(a){return this.doc.getTextRange(a||this.selection.getRange())},this.insert=function(a,b){return this.doc.insert(a,b)},this.remove=function(a){return this.doc.remove(a)},this.removeFullLines=function(a,b){return this.doc.removeFullLines(a,b)},this.undoChanges=function(a,b){if(a.length){this.$fromUndo=!0;for(var c=null,d=a.length-1;d!=-1;d--){var e=a[d];"doc"==e.group?(this.doc.revertDeltas(e.deltas),c=this.$getUndoSelection(e.deltas,!0,c)):e.deltas.forEach(function(a){this.addFolds(a.folds)},this)}return this.$fromUndo=!1,c&&this.$undoSelect&&!b&&this.selection.setSelectionRange(c),c}},this.redoChanges=function(a,b){if(a.length){this.$fromUndo=!0;for(var c=null,d=0;da.end.column&&(f.start.column+=h),f.end.row==a.end.row&&f.end.column>a.end.column&&(f.end.column+=h)),g&&f.start.row>=a.end.row&&(f.start.row+=g,f.end.row+=g)}if(f.end=this.insert(f.start,d),e.length){var i=a.start,k=f.start,g=k.row-i.row,h=k.column-i.column;this.addFolds(e.map(function(a){return a=a.clone(),a.start.row==i.row&&(a.start.column+=h),a.end.row==i.row&&(a.end.column+=h),a.start.row+=g,a.end.row+=g,a}))}return f},this.indentRows=function(a,b,c){c=c.replace(/\\t/g,this.getTabString());for(var d=a;d<=b;d++)this.doc.insertInLine({row:d,column:0},c)},this.outdentRows=function(a){for(var b=a.collapseRows(),c=new j(0,0,0,0),d=this.getTabSize(),e=b.start.row;e<=b.end.row;++e){var f=this.getLine(e);c.start.row=e,c.end.row=e;for(var g=0;g0){var d=this.getRowFoldEnd(b+c);if(d>this.doc.getLength()-1)return 0;var e=d-b}else{a=this.$clipRowToDocument(a),b=this.$clipRowToDocument(b);var e=b-a+1}var f=new j(a,0,b,Number.MAX_VALUE),g=this.getFoldsInRange(f).map(function(a){return a=a.clone(),a.start.row+=e,a.end.row+=e,a}),h=0==c?this.doc.getLines(a,b):this.doc.removeFullLines(a,b);return this.doc.insertFullLines(a+e,h),g.length&&this.addFolds(g),e},this.moveLinesUp=function(a,b){return this.$moveLines(a,b,-1)},this.moveLinesDown=function(a,b){return this.$moveLines(a,b,1)},this.duplicateLines=function(a,b){return this.$moveLines(a,b,0)},this.$clipRowToDocument=function(a){return Math.max(0,Math.min(a,this.doc.getLength()-1))},this.$clipColumnToRow=function(a,b){return b<0?0:Math.min(this.doc.getLine(a).length,b)},this.$clipPositionToDocument=function(a,b){if(b=Math.max(0,b),a<0)a=0,b=0;else{var c=this.doc.getLength();a>=c?(a=c-1,b=this.doc.getLine(c-1).length):b=Math.min(this.doc.getLine(a).length,b)}return{row:a,column:b}},this.$clipRangeToDocument=function(a){a.start.row<0?(a.start.row=0,a.start.column=0):a.start.column=this.$clipColumnToRow(a.start.row,a.start.column);var b=this.doc.getLength()-1;return a.end.row>b?(a.end.row=b,a.end.column=this.doc.getLine(b).length):a.end.column=this.$clipColumnToRow(a.end.row,a.end.column),a},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(a){if(a!=this.$useWrapMode){if(this.$useWrapMode=a,this.$modified=!0,this.$resetRowCache(0),a){var b=this.getLength();this.$wrapData=Array(b),this.$updateWrapData(0,b-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(a,b){this.$wrapLimitRange.min===a&&this.$wrapLimitRange.max===b||(this.$wrapLimitRange={min:a,max:b},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(a,b){var c=this.$wrapLimitRange;c.max<0&&(c={min:b,max:b});var d=this.$constrainWrapLimit(a,c.min,c.max);return d!=this.$wrapLimit&&d>1&&(this.$wrapLimit=d,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(a,b,c){return b&&(a=Math.max(b,a)),c&&(a=Math.min(c,a)),a},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(a){this.setWrapLimitRange(a,a)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(a){var b=this.$useWrapMode,c=a.action,d=a.start,e=a.end,f=d.row,g=e.row,h=g-f,i=null;if(this.$updating=!0,0!=h)if("remove"===c){this[b?"$wrapData":"$rowLengthCache"].splice(f,h);var j=this.$foldData;i=this.getFoldsInRange(a),this.removeFolds(i);var k=this.getFoldLine(e.row),l=0;if(k){k.addRemoveChars(e.row,e.column,d.column-e.column),k.shiftRow(-h);var m=this.getFoldLine(f);m&&m!==k&&(m.merge(k),k=m),l=j.indexOf(k)+1}for(l;l=e.row&&k.shiftRow(-h)}g=f}else{var n=Array(h);n.unshift(f,0);var o=b?this.$wrapData:this.$rowLengthCache;o.splice.apply(o,n);var j=this.$foldData,k=this.getFoldLine(f),l=0;if(k){var p=k.range.compareInside(d.row,d.column);0==p?(k=k.split(d.row,d.column),k&&(k.shiftRow(h),k.addRemoveChars(g,0,e.column-d.column))):p==-1&&(k.addRemoveChars(f,0,e.column-d.column),k.shiftRow(h)),l=j.indexOf(k)+1}for(l;l=f&&k.shiftRow(h)}}else{h=Math.abs(a.start.column-a.end.column),"remove"===c&&(i=this.getFoldsInRange(a),this.removeFolds(i),h=-h);var k=this.getFoldLine(f);k&&k.addRemoveChars(f,d.column,h)}return b&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,b?this.$updateWrapData(f,g):this.$updateRowLengthCache(f,g),i},this.$updateRowLengthCache=function(a,b,c){this.$rowLengthCache[a]=null,this.$rowLengthCache[b]=null},this.$updateWrapData=function(a,b){var c,d,e=this.doc.getAllLines(),f=this.getTabSize(),g=this.$wrapData,i=this.$wrapLimit,j=a;for(b=Math.min(b,e.length-1);j<=b;)d=this.getFoldLine(j,d),d?(c=[],d.walk(function(a,b,d,f){var g;if(null!=a){g=this.$getDisplayTokens(a,c.length),g[0]=h;for(var i=1;ib-t;){var u=j+b-t;if(a[u-1]>=o&&a[u]>=o)f(u);else if(a[u]!=h&&a[u]!=k){for(var v=Math.max(u-(b-(b>>2)),j-1);u>v&&a[u]v&&a[u]v&&a[u]==n;)u--}else for(;u>v&&a[u]v?f(++u):(u=j+b,a[u]==c&&u--,f(u-t))}else{for(u;u!=j-1&&a[u]!=h;u--);if(u>j){f(u);continue}for(u=j+b;u39&&i<48||i>57&&i<64?g.push(n):i>=4352&&a(i)?g.push(b,c):g.push(b)}return g},this.$getStringScreenWidth=function(b,c,d){if(0==c)return[0,0];null==c&&(c=1/0),d=d||0;var e,f;for(f=0;f=4352&&a(e)?2:1,!(d>c));f++);return[d,f]},this.lineWidgets=null,this.getRowLength=function(a){if(this.lineWidgets)var b=this.lineWidgets[a]&&this.lineWidgets[a].rowCount||0;else b=0;return this.$useWrapMode&&this.$wrapData[a]?this.$wrapData[a].length+1+b:1+b},this.getRowLineCount=function(a){return this.$useWrapMode&&this.$wrapData[a]?this.$wrapData[a].length+1:1},this.getRowWrapIndent=function(a){if(this.$useWrapMode){var b=this.screenToDocumentPosition(a,Number.MAX_VALUE),c=this.$wrapData[b.row];return c.length&&c[0]=0)var g=i[j],e=this.$docRowCache[j],l=a>i[k-1];else var l=!k;for(var m=this.getLength()-1,n=this.getNextFoldLine(e),o=n?n.start.row:1/0;g<=a&&(h=this.getRowLength(e),!(g+h>a||e>=m));)g+=h,e++,e>o&&(e=n.end.row+1,n=this.getNextFoldLine(e,n),o=n?n.start.row:1/0),l&&(this.$docRowCache.push(e),this.$screenRowCache.push(g));if(n&&n.start.row<=e)c=this.getFoldDisplayLine(n),e=n.start.row;else{if(g+h<=a||e>m)return{row:m,column:this.getLine(m).length};c=this.getLine(e),n=null}var p=0;if(this.$useWrapMode){var q=this.$wrapData[e];if(q){var r=Math.floor(a-g);d=q[r],r>0&&q.length&&(p=q.indent,f=q[r-1]||q[q.length-1],c=c.substring(f))}}return f+=this.$getStringScreenWidth(c,b-p)[1],this.$useWrapMode&&f>=d&&(f=d-1),n?n.idxToPosition(f):{row:e,column:f}},this.documentToScreenPosition=function(a,b){if("undefined"==typeof b)var c=this.$clipPositionToDocument(a.row,a.column);else c=this.$clipPositionToDocument(a,b);a=c.row,b=c.column;var d=0,e=null,f=null;f=this.getFoldAt(a,b,1),f&&(a=f.start.row,b=f.start.column);var g,h=0,i=this.$docRowCache,j=this.$getRowCacheIndex(i,a),k=i.length;if(k&&j>=0)var h=i[j],d=this.$screenRowCache[j],l=a>i[k-1];else var l=!k;for(var m=this.getNextFoldLine(h),n=m?m.start.row:1/0;h=n){if(g=m.end.row+1,g>a)break;m=this.getNextFoldLine(g,m),n=m?m.start.row:1/0}else g=h+1;d+=this.getRowLength(h),h=g,l&&(this.$docRowCache.push(h),this.$screenRowCache.push(d))}var o="";m&&h>=n?(o=this.getFoldDisplayLine(m,a,b),e=m.start.row):(o=this.getLine(a).substring(0,b),e=a);var p=0;if(this.$useWrapMode){var q=this.$wrapData[e];if(q){for(var r=0;o.length>=q[r];)d++,r++;o=o.substring(q[r-1]||0,o.length),p=r>0?q.indent:0}}return{row:d,column:p+this.$getStringScreenWidth(o)[0]}},this.documentToScreenColumn=function(a,b){return this.documentToScreenPosition(a,b).column},this.documentToScreenRow=function(a,b){return this.documentToScreenPosition(a,b).row},this.getScreenLength=function(){var a=0,b=null;if(this.$useWrapMode)for(var c=this.$wrapData.length,d=0,e=0,b=this.$foldData[e++],f=b?b.start.row:1/0;df&&(d=b.end.row+1,b=this.$foldData[e++],f=b?b.start.row:1/0)}else{a=this.getLength();for(var h=this.$foldData,e=0;ec));f++);return[d,f]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(n.prototype),a("./edit_session/folding").Folding.call(n.prototype),a("./edit_session/bracket_match").BracketMatch.call(n.prototype),f.defineOptions(n.prototype,"session",{wrap:{set:function(a){if(a&&"off"!=a?"free"==a?a=!0:"printMargin"==a?a=-1:"string"==typeof a&&(a=parseInt(a,10)||!1):a=!1,this.$wrap!=a)if(this.$wrap=a,a){var b="number"==typeof a?a:null;this.setWrapLimitRange(b,b),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(a){a="auto"==a?"text"!=this.$mode.type:"text"!=a,a!=this.$wrapAsCode&&(this.$wrapAsCode=a,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(a){this.$useWorker=a,this.$stopWorker(),a&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(a){isNaN(a)||this.$tabSize===a||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=a,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(a){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(a){this.doc.setNewLineMode(a)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(a){this.setMode(a)},get:function(){return this.$modeId}}}),b.EditSession=n}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(a,b,c){"use strict";var d=a("./lib/lang"),e=a("./lib/oop"),f=a("./range").Range,g=function(){this.$options={}};(function(){this.set=function(a){return e.mixin(this.$options,a),this},this.getOptions=function(){return d.copyObject(this.$options)},this.setOptions=function(a){this.$options=a},this.find=function(a){var b=this.$options,c=this.$matchIterator(a,b);if(!c)return!1;var d=null;return c.forEach(function(a,c,e){if(a.start)d=a;else{var g=a.offset+(e||0);if(d=new f(c,g,c,g+a.length),!a.length&&b.start&&b.start.start&&0!=b.skipCurrent&&d.isEqual(b.start))return d=null,!1}return!0}),d},this.findAll=function(a){var b=this.$options;if(!b.needle)return[];this.$assembleRegExp(b);var c=b.range,e=c?a.getLines(c.start.row,c.end.row):a.doc.getAllLines(),g=[],h=b.re;if(b.$isMultiLine){var i,j=h.length,k=e.length-j;a:for(var l=h.offset||0;l<=k;l++){for(var m=0;mp||(g.push(i=new f(l,p,l+j-1,q)),j>2&&(l=l+j-2))}}else for(var r=0;rv&&g[m].end.row==c.end.row;)m--;for(g=g.slice(r,m+1),r=0,m=g.length;r=0;h--)if(e(g[h],b,f))return!0};else var h=function(a,b,f){for(var g=d.getMatchOffsets(a,c),h=0;h=g;d--)if(c(a.getLine(d),d))return;if(0!=b.wrap)for(d=h,g=f.row;d>=g;d--)if(c(a.getLine(d),d))return}}:function(c){var d=f.row,e=a.getLine(d).substr(f.column);if(!c(e,d,f.column)){for(d+=1;d<=h;d++)if(c(a.getLine(d),d))return;if(0!=b.wrap)for(d=g,h=f.row;d<=h;d++)if(c(a.getLine(d),d))return}};return{forEach:i}}}).call(g.prototype),b.Search=g}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(a,b,c){"use strict";function d(a,b){this.platform=b||(g.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(a),this.$singleCommand=!0}function e(a,b){d.call(this,a,b),this.$singleCommand=!1}var f=a("../lib/keys"),g=a("../lib/useragent"),h=f.KEY_MODS;e.prototype=d.prototype,function(){function a(a){return"object"==typeof a&&a.bindKey&&a.bindKey.position||0}this.addCommand=function(a){this.commands[a.name]&&this.removeCommand(a),this.commands[a.name]=a,a.bindKey&&this._buildKeyHash(a)},this.removeCommand=function(a,b){var c=a&&("string"==typeof a?a:a.name);a=this.commands[c],b||delete this.commands[c];var d=this.commandKeyBinding;for(var e in d){var f=d[e];if(f==a)delete d[e];else if(Array.isArray(f)){var g=f.indexOf(a);g!=-1&&(f.splice(g,1),1==f.length&&(d[e]=f[0]))}}},this.bindKey=function(a,b,c){if("object"==typeof a&&a&&(void 0==c&&(c=a.position),a=a[this.platform]),a)return"function"==typeof b?this.addCommand({exec:b,bindKey:a,name:b.name||a}):void a.split("|").forEach(function(a){var d="";if(a.indexOf(" ")!=-1){var e=a.split(/\\s+/);a=e.pop(),e.forEach(function(a){var b=this.parseKeys(a),c=h[b.hashId]+b.key;d+=(d?" ":"")+c,this._addCommandToBinding(d,"chainKeys")},this),d+=" "}var f=this.parseKeys(a),g=h[f.hashId]+f.key;this._addCommandToBinding(d+g,b,c)},this)},this._addCommandToBinding=function(b,c,d){var e,f=this.commandKeyBinding;if(c)if(!f[b]||this.$singleCommand)f[b]=c;else{Array.isArray(f[b])?(e=f[b].indexOf(c))!=-1&&f[b].splice(e,1):f[b]=[f[b]],"number"!=typeof d&&(d=d||c.isDefault?-100:a(c));var g=f[b];for(e=0;ed)break}g.splice(e,0,c)}else delete f[b]},this.addCommands=function(a){a&&Object.keys(a).forEach(function(b){var c=a[b];if(c){if("string"==typeof c)return this.bindKey(c,b);"function"==typeof c&&(c={exec:c}),"object"==typeof c&&(c.name||(c.name=b),this.addCommand(c))}},this)},this.removeCommands=function(a){Object.keys(a).forEach(function(b){this.removeCommand(a[b])},this)},this.bindKeys=function(a){Object.keys(a).forEach(function(b){this.bindKey(b,a[b])},this)},this._buildKeyHash=function(a){this.bindKey(a.bindKey,a)},this.parseKeys=function(a){var b=a.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(a){return a}),c=b.pop(),d=f[c];if(f.FUNCTION_KEYS[d])c=f.FUNCTION_KEYS[d].toLowerCase();else{if(!b.length)return{key:c,hashId:-1};if(1==b.length&&"shift"==b[0])return{key:c.toUpperCase(),hashId:-1}}for(var e=0,g=b.length;g--;){var h=f.KEY_MODS[b[g]];if(null==h)return"undefined"!=typeof console&&console.error("invalid modifier "+b[g]+" in "+a),!1;e|=h}return{key:c,hashId:e}},this.findKeyCommand=function(a,b){var c=h[a]+b;return this.commandKeyBinding[c]},this.handleKeyboard=function(a,b,c,d){if(!(d<0)){var e=h[b]+c,f=this.commandKeyBinding[e];return a.$keyChain&&(a.$keyChain+=" "+e,f=this.commandKeyBinding[a.$keyChain]||f),!f||"chainKeys"!=f&&"chainKeys"!=f[f.length-1]?(a.$keyChain&&(b&&4!=b||1!=c.length?(b==-1||d>0)&&(a.$keyChain=""):a.$keyChain=a.$keyChain.slice(0,-e.length-1)),{command:f}):(a.$keyChain=a.$keyChain||e,{command:"null"})}},this.getStatusText=function(a,b){return b.$keyChain||""}}.call(d.prototype),b.HashHandler=d,b.MultiHashHandler=e}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../keyboard/hash_handler").MultiHashHandler,f=a("../lib/event_emitter").EventEmitter,g=function(a,b){e.call(this,b,a),this.byName=this.commands,this.setDefaultHandler("exec",function(a){return a.command.exec(a.editor,a.args||{})})};d.inherits(g,e),function(){d.implement(this,f),this.exec=function(a,b,c){if(Array.isArray(a)){for(var d=a.length;d--;)if(this.exec(a[d],b,c))return!0;return!1}if("string"==typeof a&&(a=this.commands[a]),!a)return!1;if(b&&b.$readOnly&&!a.readOnly)return!1;var e={editor:b,command:a,args:c};return e.returnValue=this._emit("exec",e),this._signal("afterExec",e),e.returnValue!==!1},this.toggleRecording=function(a){if(!this.$inReplay)return a&&a._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(a){this.macro.push([a.command,a.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(a){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(a);try{this.$inReplay=!0,this.macro.forEach(function(b){"string"==typeof b?this.exec(b,a):this.exec(b[0],a,b[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(a){return a.map(function(a){return"string"!=typeof a[0]&&(a[0]=a[0].name),a[1]||(a=a[0]),a})}}.call(g.prototype),b.CommandManager=g}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(a,b,c){"use strict";function d(a,b){return{win:a,mac:b}}var e=a("../lib/lang"),f=a("../config"),g=a("../range").Range;b.commands=[{name:"showSettingsMenu",bindKey:d("Ctrl-,","Command-,"),exec:function(a){f.loadModule("ace/ext/settings_menu",function(b){b.init(a),a.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:d("Alt-E","Ctrl-E"),exec:function(a){f.loadModule("ace/ext/error_marker",function(b){b.showErrorMarker(a,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:d("Alt-Shift-E","Ctrl-Shift-E"),exec:function(a){f.loadModule("ace/ext/error_marker",function(b){b.showErrorMarker(a,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:d("Ctrl-A","Command-A"),exec:function(a){a.selectAll()},readOnly:!0},{name:"centerselection",bindKey:d(null,"Ctrl-L"),exec:function(a){a.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:d("Ctrl-L","Command-L"),exec:function(a){var b=parseInt(prompt("Enter line number:"),10);isNaN(b)||a.gotoLine(b)},readOnly:!0},{name:"fold",bindKey:d("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(a){a.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:d("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(a){a.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:d("F2","F2"),exec:function(a){a.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:d("Alt-F2","Alt-F2"),exec:function(a){a.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(a){a.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:d("Alt-0","Command-Option-0"),exec:function(a){a.session.foldAll(),a.session.unfold(a.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:d("Alt-Shift-0","Command-Option-Shift-0"),exec:function(a){a.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:d("Ctrl-K","Command-G"),exec:function(a){a.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:d("Ctrl-Shift-K","Command-Shift-G"),exec:function(a){a.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:d("Alt-K","Ctrl-G"),exec:function(a){a.selection.isEmpty()?a.selection.selectWord():a.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:d("Alt-Shift-K","Ctrl-Shift-G"),exec:function(a){a.selection.isEmpty()?a.selection.selectWord():a.findPrevious()},readOnly:!0},{name:"find",bindKey:d("Ctrl-F","Command-F"),exec:function(a){f.loadModule("ace/ext/searchbox",function(b){b.Search(a)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(a){a.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:d("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(a){a.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:d("Ctrl-Home","Command-Home|Command-Up"),exec:function(a){a.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:d("Shift-Up","Shift-Up"),exec:function(a){a.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:d("Up","Up|Ctrl-P"),exec:function(a,b){a.navigateUp(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:d("Ctrl-Shift-End","Command-Shift-Down"),exec:function(a){a.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:d("Ctrl-End","Command-End|Command-Down"),exec:function(a){a.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:d("Shift-Down","Shift-Down"),exec:function(a){a.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",\n-readOnly:!0},{name:"golinedown",bindKey:d("Down","Down|Ctrl-N"),exec:function(a,b){a.navigateDown(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:d("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(a){a.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:d("Ctrl-Left","Option-Left"),exec:function(a){a.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:d("Alt-Shift-Left","Command-Shift-Left"),exec:function(a){a.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:d("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(a){a.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:d("Shift-Left","Shift-Left"),exec:function(a){a.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:d("Left","Left|Ctrl-B"),exec:function(a,b){a.navigateLeft(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:d("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(a){a.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:d("Ctrl-Right","Option-Right"),exec:function(a){a.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:d("Alt-Shift-Right","Command-Shift-Right"),exec:function(a){a.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:d("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(a){a.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:d("Shift-Right","Shift-Right"),exec:function(a){a.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:d("Right","Right|Ctrl-F"),exec:function(a,b){a.navigateRight(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(a){a.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:d(null,"Option-PageDown"),exec:function(a){a.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:d("PageDown","PageDown|Ctrl-V"),exec:function(a){a.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(a){a.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:d(null,"Option-PageUp"),exec:function(a){a.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(a){a.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:d("Ctrl-Up",null),exec:function(a){a.renderer.scrollBy(0,-2*a.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:d("Ctrl-Down",null),exec:function(a){a.renderer.scrollBy(0,2*a.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(a){a.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(a){a.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:d("Ctrl-Alt-E","Command-Option-E"),exec:function(a){a.commands.toggleRecording(a)},readOnly:!0},{name:"replaymacro",bindKey:d("Ctrl-Shift-E","Command-Shift-E"),exec:function(a){a.commands.replay(a)},readOnly:!0},{name:"jumptomatching",bindKey:d("Ctrl-P","Ctrl-P"),exec:function(a){a.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:d("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(a){a.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:d("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(a){a.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:d(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(a){},readOnly:!0},{name:"cut",exec:function(a){var b=a.getSelectionRange();a._emit("cut",b),a.selection.isEmpty()||(a.session.remove(b),a.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(a,b){a.$handlePaste(b)},scrollIntoView:"cursor"},{name:"removeline",bindKey:d("Ctrl-D","Command-D"),exec:function(a){a.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:d("Ctrl-Shift-D","Command-Shift-D"),exec:function(a){a.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:d("Ctrl-Alt-S","Command-Alt-S"),exec:function(a){a.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:d("Ctrl-/","Command-/"),exec:function(a){a.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:d("Ctrl-Shift-/","Command-Shift-/"),exec:function(a){a.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:d("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(a){a.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:d("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(a){a.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:d("Ctrl-H","Command-Option-F"),exec:function(a){f.loadModule("ace/ext/searchbox",function(b){b.Search(a,!0)})}},{name:"undo",bindKey:d("Ctrl-Z","Command-Z"),exec:function(a){a.undo()}},{name:"redo",bindKey:d("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(a){a.redo()}},{name:"copylinesup",bindKey:d("Alt-Shift-Up","Command-Option-Up"),exec:function(a){a.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:d("Alt-Up","Option-Up"),exec:function(a){a.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:d("Alt-Shift-Down","Command-Option-Down"),exec:function(a){a.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:d("Alt-Down","Option-Down"),exec:function(a){a.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:d("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(a){a.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:d("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(a){a.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:d("Shift-Delete",null),exec:function(a){return!!a.selection.isEmpty()&&void a.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:d("Alt-Backspace","Command-Backspace"),exec:function(a){a.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:d("Alt-Delete","Ctrl-K"),exec:function(a){a.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:d("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(a){a.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:d("Ctrl-Delete","Alt-Delete"),exec:function(a){a.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:d("Shift-Tab","Shift-Tab"),exec:function(a){a.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:d("Tab","Tab"),exec:function(a){a.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:d("Ctrl-[","Ctrl-["),exec:function(a){a.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:d("Ctrl-]","Ctrl-]"),exec:function(a){a.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(a,b){a.insert(b)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(a,b){a.insert(e.stringRepeat(b.text||"",b.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:d(null,"Ctrl-O"),exec:function(a){a.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:d("Ctrl-T","Ctrl-T"),exec:function(a){a.transposeLetters()},multiSelectAction:function(a){a.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:d("Ctrl-U","Ctrl-U"),exec:function(a){a.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:d("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(a){a.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:d("Ctrl-Shift-L","Command-Shift-L"),exec:function(a){var b=a.selection.getRange();b.start.column=b.end.column=0,b.end.row++,a.selection.setRange(b,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:d(null,null),exec:function(a){for(var b=a.selection.isBackwards(),c=b?a.selection.getSelectionLead():a.selection.getSelectionAnchor(),d=b?a.selection.getSelectionAnchor():a.selection.getSelectionLead(),f=a.session.doc.getLine(c.row).length,h=a.session.doc.getTextRange(a.selection.getRange()),i=h.replace(/\\n\\s*/," ").length,j=a.session.doc.getLine(c.row),k=c.row+1;k<=d.row+1;k++){var l=e.stringTrimLeft(e.stringTrimRight(a.session.doc.getLine(k)));0!==l.length&&(l=" "+l),j+=l}d.row+10?(a.selection.moveCursorTo(c.row,c.column),a.selection.selectTo(c.row,c.column+i)):(f=a.session.doc.getLine(c.row).length>f?f+1:f,a.selection.moveCursorTo(c.row,f))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:d(null,null),exec:function(a){var b=a.session.doc.getLength()-1,c=a.session.doc.getLine(b).length,d=a.selection.rangeList.ranges,e=[];d.length<1&&(d=[a.selection.getRange()]);for(var f=0;f0&&this.$blockScrolling--;var c=b&&b.scrollIntoView;if(c){switch(c){case"center-animate":c="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var d=this.selection.getRange(),e=this.renderer.layerConfig;(d.start.row>=e.lastRow||d.end.row<=e.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==c&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(a){if(this.$mergeUndoDeltas){var b=this.prevOp,c=this.$mergeableCommands,d=b.command&&a.command.name==b.command.name;if("insertstring"==a.command.name){var e=a.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),d=d&&this.mergeNextCommand&&(!/\\s/.test(e)||/\\s/.test(b.args)),this.mergeNextCommand=!0}else d=d&&c.indexOf(a.command.name)!==-1;"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(d=!1),d?this.session.mergeUndoDeltas=!0:c.indexOf(a.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(a,b){if(a&&"string"==typeof a){this.$keybindingId=a;var c=this;r.loadModule(["keybinding",a],function(d){c.$keybindingId==a&&c.keyBinding.setKeyboardHandler(d&&d.handler),b&&b()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(a),b&&b()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(a){if(this.session!=a){this.curOp&&this.endOperation(),this.curOp={};var b=this.session;if(b){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var c=this.session.getSelection();c.off("changeCursor",this.$onCursorChange),c.off("changeSelection",this.$onSelectionChange)}this.session=a,a?(this.$onDocumentChange=this.onDocumentChange.bind(this),a.on("change",this.$onDocumentChange),this.renderer.setSession(a),this.$onChangeMode=this.onChangeMode.bind(this),a.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),a.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),a.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),a.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),a.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),a.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=a.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(a)),this._signal("changeSession",{session:a,oldSession:b}),this.curOp=null,b&&b._signal("changeEditor",{oldEditor:this}),a&&a._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(a,b){return this.session.doc.setValue(a),b?1==b?this.navigateFileEnd():b==-1&&this.navigateFileStart():this.selectAll(),a},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(a){this.renderer.onResize(a)},this.setTheme=function(a,b){this.renderer.setTheme(a,b)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(a){this.renderer.setStyle(a)},this.unsetStyle=function(a){this.renderer.unsetStyle(a)},this.getFontSize=function(){return this.getOption("fontSize")||e.computedStyle(this.container,"fontSize")},this.setFontSize=function(a){this.setOption("fontSize",a)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var a=this;this.$highlightPending=!0,setTimeout(function(){a.$highlightPending=!1;var b=a.session;if(b&&b.bgTokenizer){var c=b.findMatchingBracket(a.getCursorPosition());if(c)var d=new n(c.row,c.column,c.row,c.column+1);else if(b.$mode.getMatching)var d=b.$mode.getMatching(a.session);d&&(b.$bracketHighlight=b.addMarker(d,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var a=this;this.$highlightTagPending=!0,setTimeout(function(){a.$highlightTagPending=!1;var b=a.session;if(b&&b.bgTokenizer){var c=a.getCursorPosition(),d=new s(a.session,c.row,c.column),e=d.getCurrentToken();if(!e||!/\\b(?:tag-open|tag-name)/.test(e.type))return b.removeMarker(b.$tagHighlight),void(b.$tagHighlight=null);if(e.type.indexOf("tag-open")==-1||(e=d.stepForward())){var f=e.value,g=0,h=d.stepBackward();if("<"==h.value){do h=e,e=d.stepForward(),e&&e.value===f&&e.type.indexOf("tag-name")!==-1&&("<"===h.value?g++:"=0)}else{do e=h,h=d.stepBackward(),e&&e.value===f&&e.type.indexOf("tag-name")!==-1&&("<"===h.value?g++:"1||(a=!1)),b.$highlightLineMarker&&!a)b.removeMarker(b.$highlightLineMarker.id),b.$highlightLineMarker=null;else if(!b.$highlightLineMarker&&a){var c=new n(a.row,a.column,a.row,1/0);c.id=b.addMarker(c,"ace_active-line","screenLine"),b.$highlightLineMarker=c}else a&&(b.$highlightLineMarker.start.row=a.row,b.$highlightLineMarker.end.row=a.row,b.$highlightLineMarker.start.column=a.column,b._signal("changeBackMarker"))},this.onSelectionChange=function(a){var b=this.session;if(b.$selectionMarker&&b.removeMarker(b.$selectionMarker),b.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var c=this.selection.getRange(),d=this.getSelectionStyle();b.$selectionMarker=b.addMarker(c,"ace_selection",d)}var e=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(e),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var a=this.session,b=this.getSelectionRange();if(!b.isEmpty()&&!b.isMultiLine()){var c=b.start.column-1,d=b.end.column+1,e=a.getLine(b.start.row),f=e.length,g=e.substring(Math.max(c,0),Math.min(d,f));if(!(c>=0&&/^[\\w\\d]/.test(g)||d<=f&&/[\\w\\d]$/.test(g))&&(g=e.substring(b.start.column,b.end.column),/^[\\w\\d]+$/.test(g))){var h=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:g});return h}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(a){this.renderer.updateText(),this._emit("changeMode",a)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var a=this.getSelectedText();return this._signal("copy",a),a},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(a,b){var c={text:a,event:b};this.commands.exec("paste",this,c)},this.$handlePaste=function(a){"string"==typeof a&&(a={text:a}),this._signal("paste",a);var b=a.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(b);else{var c=b.split(/\\r\\n|\\r|\\n/),d=this.selection.rangeList.ranges;if(c.length>d.length||c.length<2||!c[1])return this.commands.exec("insertstring",this,b);for(var e=d.length;e--;){var f=d[e];f.isEmpty()||this.session.remove(f),this.session.insert(f.start,c[e])}}},this.execCommand=function(a,b){return this.commands.exec(a,this,b)},this.insert=function(a,b){var c=this.session,d=c.getMode(),e=this.getCursorPosition();if(this.getBehavioursEnabled()&&!b){var f=d.transformAction(c.getState(e.row),"insertion",this,c,a);f&&(a!==f.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),a=f.text)}if("\\t"==a&&(a=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var g=new n.fromPoints(e,e);g.end.column+=a.length,this.session.remove(g)}}else{var g=this.getSelectionRange();e=this.session.remove(g),this.clearSelection()}if("\\n"==a||"\\r\\n"==a){var h=c.getLine(e.row);if(e.column>h.search(/\\S|$/)){var i=h.substr(e.column).search(/\\S|$/);c.doc.removeInLine(e.row,e.column,e.column+i)}}this.clearSelection();var j=e.column,k=c.getState(e.row),h=c.getLine(e.row),l=d.checkOutdent(k,h,a);c.insert(e,a);if(f&&f.selection&&(2==f.selection.length?this.selection.setSelectionRange(new n(e.row,j+f.selection[0],e.row,j+f.selection[1])):this.selection.setSelectionRange(new n(e.row+f.selection[0],f.selection[1],e.row+f.selection[2],f.selection[3]))),c.getDocument().isNewLine(a)){var m=d.getNextLineIndent(k,h.slice(0,e.column),c.getTabString());c.insert({row:e.row+1,column:0},m)}l&&d.autoOutdent(k,c,e.row)},this.onTextInput=function(a){this.keyBinding.onTextInput(a)},this.onCommandKey=function(a,b,c){this.keyBinding.onCommandKey(a,b,c)},this.setOverwrite=function(a){this.session.setOverwrite(a)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(a){this.setOption("scrollSpeed",a)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(a){this.setOption("dragDelay",a)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(a){this.setOption("selectionStyle",a)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(a){this.setOption("highlightActiveLine",a)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(a){this.setOption("highlightGutterLine",a)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(a){this.setOption("highlightSelectedWord",a)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(a){this.renderer.setAnimatedScroll(a)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(a){this.renderer.setShowInvisibles(a)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(a){this.renderer.setDisplayIndentGuides(a)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(a){this.renderer.setShowPrintMargin(a)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(a){this.renderer.setPrintMarginColumn(a)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(a){this.setOption("readOnly",a)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(a){this.setOption("behavioursEnabled",a)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(a){this.setOption("wrapBehavioursEnabled",a)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(a){this.setOption("showFoldWidgets",a)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(a){this.setOption("fadeFoldWidgets",a)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(a){this.selection.isEmpty()&&("left"==a?this.selection.selectLeft():this.selection.selectRight());var b=this.getSelectionRange();if(this.getBehavioursEnabled()){var c=this.session,d=c.getState(b.start.row),e=c.getMode().transformAction(d,"deletion",this,c,b);if(0===b.end.column){var f=c.getTextRange(b);if("\\n"==f[f.length-1]){var g=c.getLine(b.end.row);/^\\s+$/.test(g)&&(b.end.column=g.length)}}e&&(b=e)}this.session.remove(b),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var a=this.getSelectionRange();a.start.column==a.end.column&&a.start.row==a.end.row&&(a.end.column=0,a.end.row++),this.session.remove(a),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var a=this.getCursorPosition();this.insert("\\n"),this.moveCursorToPosition(a)},this.transposeLetters=function(){if(this.selection.isEmpty()){var a=this.getCursorPosition(),b=a.column;if(0!==b){var c,d,e=this.session.getLine(a.row);bb.toLowerCase()?1:0});for(var d=new n(0,0,0,0),e=a.first;e<=a.last;e++){var f=b.getLine(e);d.start.row=e,d.end.row=e,d.end.column=f.length,b.replace(d,c[e-a.first])}},this.toggleCommentLines=function(){var a=this.session.getState(this.getCursorPosition().row),b=this.$getSelectedRows();this.session.getMode().toggleCommentLines(a,this.session,b.first,b.last)},this.toggleBlockComment=function(){var a=this.getCursorPosition(),b=this.session.getState(a.row),c=this.getSelectionRange();this.session.getMode().toggleBlockComment(b,this.session,c,a)},this.getNumberAt=function(a,b){var c=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;c.lastIndex=0;for(var d=this.session.getLine(a);c.lastIndex=b){var f={value:e[0],start:e.index,end:e.index+e[0].length};return f}}return null},this.modifyNumber=function(a){var b=this.selection.getCursor().row,c=this.selection.getCursor().column,d=new n(b,c-1,b,c),e=this.session.getTextRange(d);if(!isNaN(parseFloat(e))&&isFinite(e)){var f=this.getNumberAt(b,c);if(f){var g=f.value.indexOf(".")>=0?f.start+f.value.indexOf(".")+1:f.end,h=f.start+f.value.length-g,i=parseFloat(f.value);i*=Math.pow(10,h),a*=g!==f.end&&cn+1)break;n=o.last}for(k--,h=this.session.$moveLines(m,n,b?0:a),b&&a==-1&&(l=k+1);l<=k;)g[l].moveBy(h,0),l++;b||(h=0),i+=h}e.fromOrientedRange(e.ranges[0]),e.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(a){return a=(a||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(a.start.row),last:this.session.getRowFoldEnd(a.end.row)}},this.onCompositionStart=function(a){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(a){this.renderer.setCompositionText(a)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(a){return a>=this.getFirstVisibleRow()&&a<=this.getLastVisibleRow()},this.isRowFullyVisible=function(a){return a>=this.renderer.getFirstFullyVisibleRow()&&a<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(a,b){var c=this.renderer,d=this.renderer.layerConfig,e=a*Math.floor(d.height/d.lineHeight);this.$blockScrolling++,b===!0?this.selection.$moveSelection(function(){this.moveCursorBy(e,0)}):b===!1&&(this.selection.moveCursorBy(e,0),this.selection.clearSelection()),this.$blockScrolling--;var f=c.scrollTop;c.scrollBy(0,e*d.lineHeight),null!=b&&c.scrollCursorIntoView(null,.5),c.animateScrolling(f)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(a){this.renderer.scrollToRow(a)},this.scrollToLine=function(a,b,c,d){this.renderer.scrollToLine(a,b,c,d)},this.centerSelection=function(){var a=this.getSelectionRange(),b={row:Math.floor(a.start.row+(a.end.row-a.start.row)/2),column:Math.floor(a.start.column+(a.end.column-a.start.column)/2)};this.renderer.alignCursor(b,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(a,b){this.selection.moveCursorTo(a,b)},this.moveCursorToPosition=function(a){this.selection.moveCursorToPosition(a)},this.jumpToMatching=function(a,b){var c=this.getCursorPosition(),d=new s(this.session,c.row,c.column),e=d.getCurrentToken(),f=e||d.stepForward();if(f){var g,h,i=!1,j={},k=c.column-f.start,l={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(f.value.match(/[{}()\\[\\]]/g)){for(;k=0;--f)this.$tryReplace(c[f],a)&&d++;return this.selection.setSelectionRange(e),this.$blockScrolling-=1,d},this.$tryReplace=function(a,b){var c=this.session.getTextRange(a);return b=this.$search.replace(c,b),null!==b?(a.end=this.session.replace(a,b),a):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(a,b,c){b||(b={}),"string"==typeof a||a instanceof RegExp?b.needle=a:"object"==typeof a&&d.mixin(b,a);var e=this.selection.getRange();null==b.needle&&(a=this.session.getTextRange(e)||this.$search.$options.needle,a||(e=this.session.getWordRange(e.start.row,e.start.column),a=this.session.getTextRange(e)),this.$search.set({needle:a})),this.$search.set(b),b.start||this.$search.set({start:e});var f=this.$search.find(this.session);return b.preventScroll?f:f?(this.revealRange(f,c),f):(b.backwards?e.start=e.end:e.end=e.start,void this.selection.setRange(e))},this.findNext=function(a,b){this.find({skipCurrent:!0,backwards:!1},a,b)},this.findPrevious=function(a,b){this.find(a,{skipCurrent:!0,backwards:!0},b)},this.revealRange=function(a,b){this.$blockScrolling+=1,this.session.unfold(a),this.selection.setSelectionRange(a),this.$blockScrolling-=1;var c=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(a.start,a.end,.5),b!==!1&&this.renderer.animateScrolling(c)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(a){if(a){var b,c=this,d=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var e=this.$scrollAnchor;e.style.cssText="position:absolute",this.container.insertBefore(e,this.container.firstChild);var f=this.on("changeSelection",function(){d=!0}),g=this.renderer.on("beforeRender",function(){d&&(b=c.renderer.container.getBoundingClientRect())}),h=this.renderer.on("afterRender",function(){if(d&&b&&(c.isFocused()||c.searchBox&&c.searchBox.isFocused())){var a=c.renderer,f=a.$cursorLayer.$pixelPos,g=a.layerConfig,h=f.top-g.offset;d=f.top>=0&&h+b.top<0||!(f.topwindow.innerHeight)&&null,null!=d&&(e.style.top=h+"px",e.style.left=f.left+"px",e.style.height=g.lineHeight+"px",e.scrollIntoView(d)),d=b=null}});this.setAutoScrollEditorIntoView=function(a){a||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",f),this.renderer.off("afterRender",h),this.renderer.off("beforeRender",g))}}},this.$resetCursorStyle=function(){var a=this.$cursorStyle||"ace",b=this.renderer.$cursorLayer;b&&(b.setSmoothBlinking(/smooth/.test(a)),b.isBlinking=!this.$readOnly&&"wide"!=a,e.setCssClass(b.element,"ace_slim-cursors",/slim/.test(a)))}}).call(t.prototype),r.defineOptions(t.prototype,"editor",{selectionStyle:{set:function(a){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:a})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(a){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(a){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(a){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(a){this.setAutoScrollEditorIntoView(a)}},keyboardHandler:{set:function(a){this.setKeyboardHandler(a)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),b.Editor=t}),define("ace/undomanager",["require","exports","module"],function(a,b,c){"use strict";var d=function(){this.reset()};(function(){function a(a){return{action:a.action,start:a.start,end:a.end,lines:1==a.lines.length?null:a.lines,text:1==a.lines.length?a.lines[0]:null}}function b(a){return{action:a.action,start:a.start,end:a.end,lines:a.lines||[a.text]}}function c(a,b){for(var c=new Array(a.length),d=0;d0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(b){return c(b,a)},this.$deserializeDeltas=function(a){return c(a,b)}}).call(d.prototype),b.UndoManager=d}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("../lib/dom"),e=a("../lib/oop"),f=a("../lib/lang"),g=a("../lib/event_emitter").EventEmitter,h=function(a){this.element=d.createElement("div"),this.element.className="ace_layer ace_gutter-layer",a.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){e.implement(this,g),this.setSession=function(a){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=a,a&&a.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(a,b){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(a,b)},this.removeGutterDecoration=function(a,b){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(a,b)},this.setAnnotations=function(a){this.$annotations=[];for(var b=0;bg&&(p=f.end.row+1,f=b.getNextFoldLine(p,f),g=f?f.start.row:1/0),p>e){for(;this.$cells.length>o+1;)n=this.$cells.pop(),this.element.removeChild(n.element);break}n=this.$cells[++o],n||(n={element:null,textNode:null,foldWidget:null},n.element=d.createElement("div"),n.textNode=document.createTextNode(""),n.element.appendChild(n.textNode),this.element.appendChild(n.element),this.$cells[o]=n);var q="ace_gutter-cell ";i[p]&&(q+=i[p]),j[p]&&(q+=j[p]),this.$annotations[p]&&(q+=this.$annotations[p].className),n.element.className!=q&&(n.element.className=q);var r=b.getRowLength(p)*a.lineHeight+"px";if(r!=n.element.style.height&&(n.element.style.height=r),h){var s=h[p];null==s&&(s=h[p]=b.getFoldWidget(p))}if(s){n.foldWidget||(n.foldWidget=d.createElement("span"),n.element.appendChild(n.foldWidget));var q="ace_fold-widget ace_"+s;q+="start"==s&&p==g&&pc.right-b.right?"foldWidgets":void 0}}).call(h.prototype),b.Gutter=h}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(a,b,c){"use strict";var d=a("../range").Range,e=a("../lib/dom"),f=function(a){this.element=e.createElement("div"),this.element.className="ace_layer ace_marker-layer",a.appendChild(this.element)};(function(){function a(a,b,c,d){return(a?1:0)|(b?2:0)|(c?4:0)|(d?8:0)}this.$padding=0,this.setPadding=function(a){this.$padding=a},this.setSession=function(a){this.session=a},this.setMarkers=function(a){this.markers=a},this.update=function(a){var a=a||this.config;if(a){this.config=a;var b=[];for(var c in this.markers){var d=this.markers[c];if(d.range){var e=d.range.clipRows(a.firstRow,a.lastRow);if(!e.isEmpty())if(e=e.toScreenRange(this.session),d.renderer){var f=this.$getTop(e.start.row,a),g=this.$padding+e.start.column*a.characterWidth;d.renderer(b,e,g,f,a)}else"fullLine"==d.type?this.drawFullLineMarker(b,e,d.clazz,a):"screenLine"==d.type?this.drawScreenLineMarker(b,e,d.clazz,a):e.isMultiLine()?"text"==d.type?this.drawTextMarker(b,e,d.clazz,a):this.drawMultiLineMarker(b,e,d.clazz,a):this.drawSingleLineMarker(b,e,d.clazz+" ace_start ace_br15",a)}else d.update(b,this,this.session,a)}this.element.innerHTML=b.join("")}},this.$getTop=function(a,b){return(a-b.firstRowScreen)*b.lineHeight},this.drawTextMarker=function(b,c,e,f,g){for(var h=this.session,i=c.start.row,j=c.end.row,k=i,l=0,m=0,n=h.getScreenLastRowColumn(k),o=new d(k,c.start.column,k,m);k<=j;k++)o.start.row=o.end.row=k,o.start.column=k==i?c.start.column:h.getRowWrapIndent(k),o.end.column=n,l=m,m=n,n=k+1n,k==j),f,k==j?0:1,g)},this.drawMultiLineMarker=function(a,b,c,d,e){var f=this.$padding,g=d.lineHeight,h=this.$getTop(b.start.row,d),i=f+b.start.column*d.characterWidth;e=e||"",a.push("
    "),h=this.$getTop(b.end.row,d);var j=b.end.column*d.characterWidth;if(a.push("
    "),g=(b.end.row-b.start.row-1)*d.lineHeight,!(g<=0)){h=this.$getTop(b.start.row+1,d);var k=(b.start.column?1:0)|(b.end.column?0:8);a.push("
    ")}},this.drawSingleLineMarker=function(a,b,c,d,e,f){var g=d.lineHeight,h=(b.end.column+(e||0)-b.start.column)*d.characterWidth,i=this.$getTop(b.start.row,d),j=this.$padding+b.start.column*d.characterWidth;a.push("
    ")},this.drawFullLineMarker=function(a,b,c,d,e){var f=this.$getTop(b.start.row,d),g=d.lineHeight;b.start.row!=b.end.row&&(g+=this.$getTop(b.end.row,d)-f),a.push("
    ")},this.drawScreenLineMarker=function(a,b,c,d,e){var f=this.$getTop(b.start.row,d),g=d.lineHeight;a.push("
    ")}}).call(f.prototype),b.Marker=f}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../lib/dom"),f=a("../lib/lang"),g=(a("../lib/useragent"),a("../lib/event_emitter").EventEmitter),h=function(a){this.element=e.createElement("div"),this.element.className="ace_layer ace_text-layer",a.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){d.implement(this,g),this.EOF_CHAR="\xc2\xb6",this.EOL_CHAR_LF="\xc2\xac",this.EOL_CHAR_CRLF="\xc2\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\xe2\x80\x94",this.SPACE_CHAR="\xc2\xb7",this.$padding=0,this.$updateEolChar=function(){var a="\\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=a)return this.EOL_CHAR=a,!0},this.setPadding=function(a){this.$padding=a,this.element.style.padding="0 "+a+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(a){this.$fontMetrics=a,this.$fontMetrics.on("changeCharacterSize",function(a){this._signal("changeCharacterSize",a)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(a){this.session=a,a&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(a){return this.showInvisibles!=a&&(this.showInvisibles=a,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(a){return this.displayIndentGuides!=a&&(this.displayIndentGuides=a,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var a=this.session.getTabSize();this.tabSize=a;for(var b=this.$tabStrings=[0],c=1;c"+f.stringRepeat(this.TAB_CHAR,c)+""):b.push(f.stringRepeat(" ",c));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var d="ace_indent-guide",e="",g="";if(this.showInvisibles){d+=" ace_invisible",e=" ace_invisible_space",g=" ace_invisible_tab";var h=f.stringRepeat(this.SPACE_CHAR,this.tabSize),i=f.stringRepeat(this.TAB_CHAR,this.tabSize)}else var h=f.stringRepeat(" ",this.tabSize),i=h;this.$tabStrings[" "]=""+h+"",this.$tabStrings["\\t"]=""+i+""}},this.updateLines=function(a,b,c){this.config.lastRow==a.lastRow&&this.config.firstRow==a.firstRow||this.scrollLines(a),this.config=a;for(var d=Math.max(b,a.firstRow),e=Math.min(c,a.lastRow),f=this.element.childNodes,g=0,h=a.firstRow;hj&&(h=i.end.row+1,i=this.session.getNextFoldLine(h,i),j=i?i.start.row:1/0),h>e)break;var k=f[g++];if(k){var l=[];this.$renderLine(l,h,!this.$useLineGroups(),h==j&&i),k.style.height=a.lineHeight*this.session.getRowLength(h)+"px",k.innerHTML=l.join("")}h++}},this.scrollLines=function(a){var b=this.config;if(this.config=a,!b||b.lastRow0;d--)c.removeChild(c.firstChild);if(b.lastRow>a.lastRow)for(var d=this.session.getFoldedRowCount(a.lastRow+1,b.lastRow);d>0;d--)c.removeChild(c.lastChild);if(a.firstRowb.lastRow){var e=this.$renderLinesFragment(a,b.lastRow+1,a.lastRow);c.appendChild(e)}},this.$renderLinesFragment=function(a,b,c){for(var d=this.element.ownerDocument.createDocumentFragment(),f=b,g=this.session.getNextFoldLine(f),h=g?g.start.row:1/0;;){if(f>h&&(f=g.end.row+1,g=this.session.getNextFoldLine(f,g),h=g?g.start.row:1/0),f>c)break;var i=e.createElement("div"),j=[];if(this.$renderLine(j,f,!1,f==h&&g),i.innerHTML=j.join(""),this.$useLineGroups())i.className="ace_line_group",d.appendChild(i),i.style.height=a.lineHeight*this.session.getRowLength(f)+"px";else for(;i.firstChild;)d.appendChild(i.firstChild);f++}return d},this.update=function(a){this.config=a;for(var b=[],c=a.firstRow,d=a.lastRow,e=c,f=this.session.getNextFoldLine(e),g=f?f.start.row:1/0;;){if(e>g&&(e=f.end.row+1,f=this.session.getNextFoldLine(e,f),g=f?f.start.row:1/0),e>d)break;this.$useLineGroups()&&b.push("
    "),this.$renderLine(b,e,!1,e==g&&f),this.$useLineGroups()&&b.push("
    "),e++}this.element.innerHTML=b.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(a,b,c,d){var e=this,g=/\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,h=function(a,c,d,g,h){if(c)return e.showInvisibles?""+f.stringRepeat(e.SPACE_CHAR,a.length)+"":a;if("&"==a)return"&";if("<"==a)return"<";if(">"==a)return">";if("\\t"==a){var i=e.session.getScreenTabSize(b+g);return b+=i-1,e.$tabStrings[i]}if("\xe3\x80\x80"==a){var j=e.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",k=e.showInvisibles?e.SPACE_CHAR:"";return b+=1,""+k+""}return d?""+e.SPACE_CHAR+"":(b+=1,""+a+"")},i=d.replace(g,h);if(this.$textToken[c.type])a.push(i);else{var j="ace_"+c.type.replace(/\\./g," ace_"),k="";"fold"==c.type&&(k=" style=\'width:"+c.value.length*this.config.characterWidth+"px;\' "),a.push("",i,"")}return b+d.length},this.renderIndentGuide=function(a,b,c){var d=b.search(this.$indentGuideRe);return d<=0||d>=c?b:" "==b[0]?(d-=d%this.tabSize,a.push(f.stringRepeat(this.$tabStrings[" "],d/this.tabSize)),b.substr(d)):"\\t"==b[0]?(a.push(f.stringRepeat(this.$tabStrings["\\t"],d)),b.substr(d)):b},this.$renderWrappedLine=function(a,b,c,d){for(var e=0,g=0,h=c[0],i=0,j=0;j=h;)i=this.$renderToken(a,i,k,l.substring(0,h-e)),l=l.substring(h-e),e=h,d||a.push("
    ","
    "),a.push(f.stringRepeat("\xc2\xa0",c.indent)),g++,i=0,h=c[g]||Number.MAX_VALUE;0!=l.length&&(e+=l.length,i=this.$renderToken(a,i,k,l))}}},this.$renderSimpleLine=function(a,b){var c=0,d=b[0],e=d.value;this.displayIndentGuides&&(e=this.renderIndentGuide(a,e)),e&&(c=this.$renderToken(a,c,d,e));\n-for(var f=1;f"),e.length){var f=this.session.getRowSplitData(b);f&&f.length?this.$renderWrappedLine(a,e,f,c):this.$renderSimpleLine(a,e)}this.showInvisibles&&(d&&(b=d.end.row),a.push("",b==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),c||a.push("
    ")},this.$getFoldLineTokens=function(a,b){function c(a,b,c){for(var d=0,f=0;f+a[d].value.lengthc-b&&(g=g.substring(0,c-b)),e.push({type:a[d].type,value:g}),f=b+g.length,d+=1}for(;fc?e.push({type:a[d].type,value:g.substring(0,c-f)}):e.push(a[d]),f+=g.length,d+=1}}var d=this.session,e=[],f=d.getTokens(a);return b.walk(function(a,b,g,h,i){null!=a?e.push({type:"fold",value:a}):(i&&(f=d.getTokens(b)),f.length&&c(f,h,g))},b.end.row,this.session.getLine(b.end.row).length),e},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(h.prototype),b.Text=h}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict";var d,e=a("../lib/dom"),f=function(a){this.element=e.createElement("div"),this.element.className="ace_layer ace_cursor-layer",a.appendChild(this.element),void 0===d&&(d=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),e.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(d?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(a){for(var b=this.cursors,c=b.length;c--;)b[c].style.visibility=a?"":"hidden"},this.$updateOpacity=function(a){for(var b=this.cursors,c=b.length;c--;)b[c].style.opacity=a?"":"0"},this.$padding=0,this.setPadding=function(a){this.$padding=a},this.setSession=function(a){this.session=a},this.setBlinking=function(a){a!=this.isBlinking&&(this.isBlinking=a,this.restartTimer())},this.setBlinkInterval=function(a){a!=this.blinkInterval&&(this.blinkInterval=a,this.restartTimer())},this.setSmoothBlinking=function(a){a==this.smoothBlinking||d||(this.smoothBlinking=a,e.setCssClass(this.element,"ace_smooth-blinking",a),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var a=e.createElement("div");return a.className="ace_cursor",this.element.appendChild(a),this.cursors.push(a),a},this.removeCursor=function(){if(this.cursors.length>1){var a=this.cursors.pop();return a.parentNode.removeChild(a),a}},this.hideCursor=function(){this.isVisible=!1,e.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,e.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var a=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&e.removeCssClass(this.element,"ace_smooth-blinking"),a(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){e.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var b=function(){this.timeoutId=setTimeout(function(){a(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){a(!0),b()},this.blinkInterval),b()}},this.getPixelPosition=function(a,b){if(!this.config||!this.session)return{left:0,top:0};a||(a=this.session.selection.getCursor());var c=this.session.documentToScreenPosition(a),d=this.$padding+c.column*this.config.characterWidth,e=(c.row-(b?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:d,top:e}},this.update=function(a){this.config=a;var b=this.session.$selectionMarkers,c=0,d=0;void 0!==b&&0!==b.length||(b=[{cursor:null}]);for(var c=0,e=b.length;ca.height+a.offset||f.top<0)&&c>1)){var g=(this.cursors[d++]||this.addCursor()).style;this.drawCursor?this.drawCursor(g,f,a,b[c],this.session):(g.left=f.left+"px",g.top=f.top+"px",g.width=a.characterWidth+"px",g.height=a.lineHeight+"px")}}for(;this.cursors.length>d;)this.removeCursor();var h=this.session.getOverwrite();this.$setOverwrite(h),this.$pixelPos=f,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(a){a!=this.overwrite&&(this.overwrite=a,a?e.addCssClass(this.element,"ace_overwrite-cursors"):e.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(f.prototype),b.Cursor=f}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("./lib/oop"),e=a("./lib/dom"),f=a("./lib/event"),g=a("./lib/event_emitter").EventEmitter,h=function(a){this.element=e.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=e.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),a.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,f.addListener(this.element,"scroll",this.onScroll.bind(this)),f.addListener(this.element,"mousedown",f.preventDefault)};(function(){d.implement(this,g),this.setVisible=function(a){this.element.style.display=a?"":"none",this.isVisible=a}}).call(h.prototype);var i=function(a,b){h.call(this,a),this.scrollTop=0,b.$scrollbarWidth=this.width=e.scrollbarWidth(a.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};d.inherits(i,h),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(a){this.element.style.height=a+"px"},this.setInnerHeight=function(a){this.inner.style.height=a+"px"},this.setScrollHeight=function(a){this.inner.style.height=a+"px"},this.setScrollTop=function(a){this.scrollTop!=a&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=a)}}.call(i.prototype);var j=function(a,b){h.call(this,a),this.scrollLeft=0,this.height=b.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};d.inherits(j,h),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(a){this.element.style.width=a+"px"},this.setInnerWidth=function(a){this.inner.style.width=a+"px"},this.setScrollWidth=function(a){this.inner.style.width=a+"px"},this.setScrollLeft=function(a){this.scrollLeft!=a&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=a)}}.call(j.prototype),b.ScrollBar=i,b.ScrollBarV=i,b.ScrollBarH=j,b.VScrollBar=i,b.HScrollBar=j}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(a,b,c){"use strict";var d=a("./lib/event"),e=function(a,b){this.onRender=a,this.pending=!1,this.changes=0,this.window=b||window};(function(){this.schedule=function(a){if(this.changes=this.changes|a,!this.pending&&this.changes){this.pending=!0;var b=this;d.nextFrame(function(){b.pending=!1;for(var a;a=b.changes;)b.changes=0,b.onRender(a)},this.window)}}}).call(e.prototype),b.RenderLoop=e}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(a,b,c){var d=a("../lib/oop"),e=a("../lib/dom"),f=a("../lib/lang"),g=a("../lib/useragent"),h=a("../lib/event_emitter").EventEmitter,i=0,j=b.FontMetrics=function(a){this.el=e.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=e.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=e.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),a.appendChild(this.el),i||this.$testFractionalRect(),this.$measureNode.innerHTML=f.stringRepeat("X",i),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){d.implement(this,h),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var a=e.createElement("div");this.$setMeasureNodeStyles(a.style),a.style.width="0.2px",document.documentElement.appendChild(a);var b=a.getBoundingClientRect().width;i=b>0&&b<1?50:100,a.parentNode.removeChild(a)},this.$setMeasureNodeStyles=function(a,b){a.width=a.height="auto",a.left=a.top="0px",a.visibility="hidden",a.position="absolute",a.whiteSpace="pre",g.isIE<8?a["font-family"]="inherit":a.font="inherit",a.overflow=b?"hidden":"visible"},this.checkForSizeChanges=function(){var a=this.$measureSizes();if(a&&(this.$characterSize.width!==a.width||this.$characterSize.height!==a.height)){this.$measureNode.style.fontWeight="bold";var b=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=a,this.charSizes=Object.create(null),this.allowBoldFonts=b&&b.width===a.width&&b.height===a.height,this._emit("changeCharacterSize",{data:a})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var a=this;return this.$pollSizeChangesTimer=setInterval(function(){a.checkForSizeChanges()},500)},this.setPolling=function(a){a?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===i){var a=null;try{a=this.$measureNode.getBoundingClientRect()}catch(b){a={width:0,height:0}}var c={height:a.height,width:a.width/i}}else var c={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/i};return 0===c.width||0===c.height?null:c},this.$measureCharWidth=function(a){this.$main.innerHTML=f.stringRepeat(a,i);var b=this.$main.getBoundingClientRect();return b.width/i},this.getCharacterWidth=function(a){var b=this.charSizes[a];return void 0===b&&(b=this.charSizes[a]=this.$measureCharWidth(a)/this.$characterSize.width),b},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(j.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(a,b,c){"use strict";var d=a("./lib/oop"),e=a("./lib/dom"),f=a("./config"),g=a("./lib/useragent"),h=a("./layer/gutter").Gutter,i=a("./layer/marker").Marker,j=a("./layer/text").Text,k=a("./layer/cursor").Cursor,l=a("./scrollbar").HScrollBar,m=a("./scrollbar").VScrollBar,n=a("./renderloop").RenderLoop,o=a("./layer/font_metrics").FontMetrics,p=a("./lib/event_emitter").EventEmitter,q=\'.ace_editor {position: relative;overflow: hidden;font: 12px/normal \\\'Monaco\\\', \\\'Menlo\\\', \\\'Ubuntu Mono\\\', \\\'Consolas\\\', \\\'source-code-pro\\\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \\\'\\\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\';e.importCssString(q,"ace_editor.css");var r=function(a,b){var c=this;this.container=a||e.createElement("div"),this.$keepTextAreaAtCursor=!g.isOldIE,e.addCssClass(this.container,"ace_editor"),this.setTheme(b),this.$gutter=e.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=e.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=e.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new h(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new i(this.content);var d=this.$textLayer=new j(this.content);this.canvas=d.element,this.$markerFront=new i(this.content),this.$cursorLayer=new k(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new m(this.container,this),this.scrollBarH=new l(this.container,this),this.scrollBarV.addEventListener("scroll",function(a){c.$scrollAnimation||c.session.setScrollTop(a.data-c.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(a){c.$scrollAnimation||c.session.setScrollLeft(a.data-c.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new o(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(a){c.updateCharacterSize(),c.onResize(!0,c.gutterWidth,c.$size.width,c.$size.height),c._signal("changeCharacterSize",a)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new n(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),f.resetOptions(this),f._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,d.implement(this,p),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(a){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=a,a&&this.scrollMargin.top&&a.getScrollTop()<=0&&a.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(a),this.$markerBack.setSession(a),this.$markerFront.setSession(a),this.$gutterLayer.setSession(a),this.$textLayer.setSession(a),a&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(a,b,c){if(void 0===b&&(b=1/0),this.$changedLines?(this.$changedLines.firstRow>a&&(this.$changedLines.firstRow=a),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(a){a?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(a,b,c,d){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=a?1:0;var e=this.container;d||(d=e.clientHeight||e.scrollHeight),c||(c=e.clientWidth||e.scrollWidth);var f=this.$updateCachedSize(a,b,c,d);if(!this.$size.scrollerHeight||!c&&!d)return this.resizing=0;a&&(this.$gutterLayer.$padding=null),a?this.$renderChanges(f|this.$changes,!0):this.$loop.schedule(f|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(a,b,c,d){d-=this.$extraHeight||0;var e=0,f=this.$size,g={width:f.width,height:f.height,scrollerHeight:f.scrollerHeight,scrollerWidth:f.scrollerWidth};return d&&(a||f.height!=d)&&(f.height=d,e|=this.CHANGE_SIZE,f.scrollerHeight=f.height,this.$horizScroll&&(f.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",e|=this.CHANGE_SCROLL),c&&(a||f.width!=c)&&(e|=this.CHANGE_SIZE,f.width=c,null==b&&(b=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=b,this.scrollBarH.element.style.left=this.scroller.style.left=b+"px",f.scrollerWidth=Math.max(0,c-b-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||a)&&(e|=this.CHANGE_FULL)),f.$dirty=!c||!d,e&&this._signal("resize",g),e},this.onGutterResize=function(){var a=this.$showGutter?this.$gutter.offsetWidth:0;a!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,a,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var a=this.$size.scrollerWidth-2*this.$padding,b=Math.floor(a/this.characterWidth);return this.session.adjustWrapLimit(b,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(a){this.setOption("animatedScroll",a)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(a){this.setOption("showInvisibles",a)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(a){this.setOption("displayIndentGuides",a)},this.setShowPrintMargin=function(a){this.setOption("showPrintMargin",a)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(a){this.setOption("printMarginColumn",a)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(a){return this.setOption("showGutter",a)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(a){this.setOption("fadeFoldWidgets",a)},this.setHighlightGutterLine=function(a){this.setOption("highlightGutterLine",a)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var a=this.$cursorLayer.$pixelPos,b=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var c=this.session.selection.getCursor();c.column=0,a=this.$cursorLayer.getPixelPosition(c,!0),b*=this.session.getRowLength(c.row)}this.$gutterLineHighlight.style.top=a.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=b+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var a=e.createElement("div");a.className="ace_layer ace_print-margin-layer",this.$printMarginEl=e.createElement("div"),this.$printMarginEl.className="ace_print-margin",a.appendChild(this.$printMarginEl),this.content.insertBefore(a,this.content.firstChild);\n-}var b=this.$printMarginEl.style;b.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",b.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var a=this.layerConfig,b=this.$cursorLayer.$pixelPos.top,c=this.$cursorLayer.$pixelPos.left;b-=a.offset;var d=this.textarea.style,e=this.lineHeight;if(b<0||b>a.height-e)return void(d.top=d.left="0");var f=this.characterWidth;if(this.$composition){var g=this.textarea.value.replace(/^\\x01+/,"");f*=this.session.$getStringScreenWidth(g)[0]+2,e+=2}c-=this.scrollLeft,c>this.$size.scrollerWidth-f&&(c=this.$size.scrollerWidth-f),c+=this.gutterWidth,d.height=e+"px",d.width=f+"px",d.left=Math.min(c,this.$size.scrollerWidth-f)+"px",d.top=Math.min(b,this.$size.height-e)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var a=this.layerConfig,b=a.lastRow,c=this.session.documentToScreenRow(b,0)*a.lineHeight;return c-this.session.getScrollTop()>a.height-a.lineHeight?b-1:b},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(a){this.$padding=a,this.$textLayer.setPadding(a),this.$cursorLayer.setPadding(a),this.$markerFront.setPadding(a),this.$markerBack.setPadding(a),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(a,b,c,d){var e=this.scrollMargin;e.top=0|a,e.bottom=0|b,e.right=0|d,e.left=0|c,e.v=e.top+e.bottom,e.h=e.left+e.right,e.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-e.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(a){this.setOption("hScrollBarAlwaysVisible",a)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(a){this.setOption("vScrollBarAlwaysVisible",a)},this.$updateScrollBarV=function(){var a=this.layerConfig.maxHeight,b=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(a-=(b-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>a-b&&(a=this.scrollTop+b,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(a+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(a,b){if(this.$changes&&(a|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!a&&!b)return void(this.$changes|=a);if(this.$size.$dirty)return this.$changes|=a,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var c=this.layerConfig;if(a&this.CHANGE_FULL||a&this.CHANGE_SIZE||a&this.CHANGE_TEXT||a&this.CHANGE_LINES||a&this.CHANGE_SCROLL||a&this.CHANGE_H_SCROLL){if(a|=this.$computeLayerConfig(),c.firstRow!=this.layerConfig.firstRow&&c.firstRowScreen==this.layerConfig.firstRowScreen){var d=this.scrollTop+(c.firstRow-this.layerConfig.firstRow)*this.lineHeight;d>0&&(this.scrollTop=d,a|=this.CHANGE_SCROLL,a|=this.$computeLayerConfig())}c=this.layerConfig,this.$updateScrollBarV(),a&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-c.offset+"px",this.content.style.marginTop=-c.offset+"px",this.content.style.width=c.width+2*this.$padding+"px",this.content.style.height=c.minHeight+"px"}return a&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),a&this.CHANGE_FULL?(this.$textLayer.update(c),this.$showGutter&&this.$gutterLayer.update(c),this.$markerBack.update(c),this.$markerFront.update(c),this.$cursorLayer.update(c),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):a&this.CHANGE_SCROLL?(a&this.CHANGE_TEXT||a&this.CHANGE_LINES?this.$textLayer.update(c):this.$textLayer.scrollLines(c),this.$showGutter&&this.$gutterLayer.update(c),this.$markerBack.update(c),this.$markerFront.update(c),this.$cursorLayer.update(c),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(a&this.CHANGE_TEXT?(this.$textLayer.update(c),this.$showGutter&&this.$gutterLayer.update(c)):a&this.CHANGE_LINES?(this.$updateLines()||a&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(c):(a&this.CHANGE_TEXT||a&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(c),a&this.CHANGE_CURSOR&&(this.$cursorLayer.update(c),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),a&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(c),a&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(c),void this._signal("afterRender"))},this.$autosize=function(){var a=this.session.getScreenLength()*this.lineHeight,b=this.$maxLines*this.lineHeight,c=Math.max((this.$minLines||1)*this.lineHeight,Math.min(b,a))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(c+=this.scrollBarH.getHeight());var d=a>b;if(c!=this.desiredHeight||this.$size.height!=this.desiredHeight||d!=this.$vScroll){d!=this.$vScroll&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var e=this.container.clientWidth;this.container.style.height=c+"px",this.$updateCachedSize(!0,this.$gutterWidth,e,c),this.desiredHeight=c,this._signal("autosize")}},this.$computeLayerConfig=function(){var a=this.session,b=this.$size,c=b.height<=2*this.lineHeight,d=this.session.getScreenLength(),e=d*this.lineHeight,f=this.$getLongestLine(),g=!c&&(this.$hScrollBarAlwaysVisible||b.scrollerWidth-f-2*this.$padding<0),h=this.$horizScroll!==g;h&&(this.$horizScroll=g,this.scrollBarH.setVisible(g));var i=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var j=this.scrollTop%this.lineHeight,k=b.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(b.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;e+=l;var m=this.scrollMargin;this.session.setScrollTop(Math.max(-m.top,Math.min(this.scrollTop,e-b.scrollerHeight+m.bottom))),this.session.setScrollLeft(Math.max(-m.left,Math.min(this.scrollLeft,f+2*this.$padding-b.scrollerWidth+m.right)));var n=!c&&(this.$vScrollBarAlwaysVisible||b.scrollerHeight-e+l<0||this.scrollTop>m.top),o=i!==n;o&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var p,q,r=Math.ceil(k/this.lineHeight)-1,s=Math.max(0,Math.round((this.scrollTop-j)/this.lineHeight)),t=s+r,u=this.lineHeight;s=a.screenToDocumentRow(s,0);var v=a.getFoldLine(s);v&&(s=v.start.row),p=a.documentToScreenRow(s,0),q=a.getRowLength(s)*u,t=Math.min(a.screenToDocumentRow(t,0),a.getLength()-1),k=b.scrollerHeight+a.getRowLength(t)*u+q,j=this.scrollTop-p*u;var w=0;return this.layerConfig.width!=f&&(w=this.CHANGE_H_SCROLL),(h||o)&&(w=this.$updateCachedSize(!0,this.gutterWidth,b.width,b.height),this._signal("scrollbarVisibilityChanged"),o&&(f=this.$getLongestLine())),this.layerConfig={width:f,padding:this.$padding,firstRow:s,firstRowScreen:p,lastRow:t,lineHeight:u,characterWidth:this.characterWidth,minHeight:k,maxHeight:e,offset:j,gutterOffset:Math.max(0,Math.ceil((j+b.height-b.scrollerHeight)/u)),height:this.$size.scrollerHeight},w},this.$updateLines=function(){var a=this.$changedLines.firstRow,b=this.$changedLines.lastRow;this.$changedLines=null;var c=this.layerConfig;if(!(a>c.lastRow+1||bf?(b&&i+g>f+this.lineHeight&&(f-=b*this.$size.scrollerHeight),0===f&&(f=-this.scrollMargin.top),this.session.setScrollTop(f)):i+this.$size.scrollerHeight-he?(e=1-this.scrollMargin.top||(b>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(a<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(a>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(a,b){var c=this.scroller.getBoundingClientRect(),d=(a+this.scrollLeft-c.left-this.$padding)/this.characterWidth,e=Math.floor((b+this.scrollTop-c.top)/this.lineHeight),f=Math.round(d);return{row:e,column:f,side:d-f>0?1:-1}},this.screenToTextCoordinates=function(a,b){var c=this.scroller.getBoundingClientRect(),d=Math.round((a+this.scrollLeft-c.left-this.$padding)/this.characterWidth),e=(b+this.scrollTop-c.top)/this.lineHeight;return this.session.screenToDocumentPosition(e,Math.max(d,0))},this.textToScreenCoordinates=function(a,b){var c=this.scroller.getBoundingClientRect(),d=this.session.documentToScreenPosition(a,b),e=this.$padding+Math.round(d.column*this.characterWidth),f=d.row*this.lineHeight;return{pageX:c.left+e-this.scrollLeft,pageY:c.top+f-this.scrollTop}},this.visualizeFocus=function(){e.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){e.removeCssClass(this.container,"ace_focus")},this.showComposition=function(a){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,e.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(a){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(e.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(a,b){function c(c){if(d.$themeId!=a)return b&&b();if(c.cssClass){e.importCssString(c.cssText,c.cssClass,d.container.ownerDocument),d.theme&&e.removeCssClass(d.container,d.theme.cssClass);var f="padding"in c?c.padding:"padding"in(d.theme||{})?4:d.$padding;d.$padding&&f!=d.$padding&&d.setPadding(f),d.$theme=c.cssClass,d.theme=c,e.addCssClass(d.container,c.cssClass),e.setCssClass(d.container,"ace_dark",c.isDark),d.$size&&(d.$size.width=0,d.$updateSizeAsync()),d._dispatchEvent("themeLoaded",{theme:c}),b&&b()}}var d=this;if(this.$themeId=a,d._dispatchEvent("themeChange",{theme:a}),a&&"string"!=typeof a)c(a);else{var g=a||this.$options.theme.initialValue;f.loadModule(["theme",g],c)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(a,b){e.setCssClass(this.container,a,b!==!1)},this.unsetStyle=function(a){e.removeCssClass(this.container,a)},this.setCursorStyle=function(a){this.scroller.style.cursor!=a&&(this.scroller.style.cursor=a)},this.setMouseCursor=function(a){this.scroller.style.cursor=a},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(r.prototype),f.defineOptions(r.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(a){this.$textLayer.setShowInvisibles(a)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(a){"number"==typeof a&&(this.$printMarginColumn=a),this.$showPrintMargin=!!a,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(a){this.$gutter.style.display=a?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(a){e.setCssClass(this.$gutter,"ace_fade-fold-widgets",a)},initialValue:!1},showFoldWidgets:{set:function(a){this.$gutterLayer.setShowFoldWidgets(a)},initialValue:!0},showLineNumbers:{set:function(a){this.$gutterLayer.setShowLineNumbers(a),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(a){this.$textLayer.setDisplayIndentGuides(a)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(a){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=a?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=e.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(a){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(a){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(a){"number"==typeof a&&(a+="px"),this.container.style.fontSize=a,this.updateFontSize()},initialValue:12},fontFamily:{set:function(a){this.container.style.fontFamily=a,this.updateFontSize()}},maxLines:{set:function(a){this.updateFull()}},minLines:{set:function(a){this.updateFull()}},scrollPastEnd:{set:function(a){a=+a||0,this.$scrollPastEnd!=a&&(this.$scrollPastEnd=a,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(a){this.$gutterLayer.$fixedWidth=!!a,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(a){this.setTheme(a)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),b.VirtualRenderer=r}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(a,b,c){"use strict";var d=a("../lib/oop"),e=a("../lib/net"),f=a("../lib/event_emitter").EventEmitter,g=a("../config"),h=function(b,c,d,e){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),a.nameToUrl&&!a.toUrl&&(a.toUrl=a.nameToUrl),g.get("packaged")||!a.toUrl)e=e||g.moduleUrl(c,"worker");else{var f=this.$normalizePath;e=e||f(a.toUrl("ace/worker/worker.js",null,"_"));var h={};b.forEach(function(b){h[b]=f(a.toUrl(b,null,"_").replace(/(\\.js)?(\\?.*)?$/,""))})}try{this.$worker=new Worker(e)}catch(i){if(!(i instanceof window.DOMException))throw i;var j=this.$workerBlob(e),k=window.URL||window.webkitURL,l=k.createObjectURL(j);this.$worker=new Worker(l),k.revokeObjectURL(l)}this.$worker.postMessage({init:!0,tlns:h,module:c,classname:d}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){d.implement(this,f),this.onMessage=function(a){var b=a.data;switch(b.type){case"event":this._signal(b.name,{data:b.data});break;case"call":var c=this.callbacks[b.id];c&&(c(b.data),delete this.callbacks[b.id]);break;case"error":this.reportError(b.data);break;case"log":window.console&&console.log&&console.log.apply(console,b.data)}},this.reportError=function(a){window.console&&console.error&&console.error(a)},this.$normalizePath=function(a){return e.qualifyURL(a)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(a,b){this.$worker.postMessage({command:a,args:b})},this.call=function(a,b,c){if(c){var d=this.callbackId++;this.callbacks[d]=c,b.push(d)}this.send(a,b)},this.emit=function(a,b){try{this.$worker.postMessage({event:a,data:{data:b.data}})}catch(c){console.error(c.stack)}},this.attachToDocument=function(a){this.$doc&&this.terminate(),this.$doc=a,this.call("setValue",[a.getValue()]),a.on("change",this.changeListener)},this.changeListener=function(a){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==a.action?this.deltaQueue.push(a.start,a.lines):this.deltaQueue.push(a.start,a.end)},this.$sendDeltaQueue=function(){var a=this.deltaQueue;a&&(this.deltaQueue=null,a.length>50&&a.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:a}))},this.$workerBlob=function(a){var b="importScripts(\'"+e.qualifyURL(a)+"\');";try{return new Blob([b],{type:"application/javascript"})}catch(c){var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,f=new d;return f.append(b),f.getBlob("application/javascript")}}}).call(h.prototype);var i=function(a,b,c){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var d=null,e=!1,h=Object.create(f),i=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(a){i.messageBuffer.push(a),d&&(e?setTimeout(j):j())},this.setEmitSync=function(a){e=a};var j=function(){var a=i.messageBuffer.shift();a.command?d[a.command].apply(d,a.args):a.event&&h._signal(a.event,a.data)};h.postMessage=function(a){i.onMessage({data:a})},h.callback=function(a,b){this.postMessage({type:"call",id:b,data:a})},h.emit=function(a,b){this.postMessage({type:"event",name:a,data:b})},g.loadModule(["worker",b],function(a){for(d=new a[c](h);i.messageBuffer.length;)j()})};i.prototype=h.prototype,b.UIWorkerClient=i,b.WorkerClient=h}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(a,b,c){"use strict";var d=a("./range").Range,e=a("./lib/event_emitter").EventEmitter,f=a("./lib/oop"),g=function(a,b,c,d,e,f){var g=this;this.length=b,this.session=a,this.doc=a.getDocument(),this.mainClass=e,this.othersClass=f,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=d,this.$onCursorChange=function(){setTimeout(function(){g.onCursorChange()})},this.$pos=c;var h=a.getUndoManager().$undoStack||a.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=h.length,this.setup(),a.selection.on("changeCursor",this.$onCursorChange)};(function(){f.implement(this,e),this.setup=function(){var a=this,b=this.doc,c=this.session;this.selectionBefore=c.selection.toJSON(),c.selection.inMultiSelectMode&&c.selection.toSingleRange(),this.pos=b.createAnchor(this.$pos.row,this.$pos.column);var e=this.pos;e.$insertRight=!0,e.detach(),e.markerId=c.addMarker(new d(e.row,e.column,e.row,e.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(c){var d=b.createAnchor(c.row,c.column);d.$insertRight=!0,d.detach(),a.others.push(d)}),c.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var a=this.session,b=this;this.othersActive=!0,this.others.forEach(function(c){c.markerId=a.addMarker(new d(c.row,c.column,c.row,c.column+b.length),b.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var a=0;a=this.pos.column&&b.start.column<=this.pos.column+this.length+1,f=b.start.column-this.pos.column;if(this.updateAnchors(a),e&&(this.length+=c),e&&!this.session.$fromUndo)if("insert"===a.action)for(var g=this.others.length-1;g>=0;g--){var h=this.others[g],i={row:h.row,column:h.column+f};this.doc.insertMergedLines(i,a.lines)}else if("remove"===a.action)for(var g=this.others.length-1;g>=0;g--){var h=this.others[g],i={row:h.row,column:h.column+f};this.doc.remove(new d(i.row,i.column,i.row,i.column-c))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(a){this.pos.onChange(a);for(var b=this.others.length;b--;)this.others[b].onChange(a);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var a=this,b=this.session,c=function(c,e){b.removeMarker(c.markerId),c.markerId=b.addMarker(new d(c.row,c.column,c.row,c.column+a.length),e,null,!1)};c(this.pos,this.mainClass);for(var e=this.others.length;e--;)c(this.others[e],this.othersClass)}},this.onCursorChange=function(a){if(!this.$updating&&this.session){var b=this.session.selection.getCursor();b.row===this.pos.row&&b.column>=this.pos.column&&b.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",a)):(this.hideOtherMarkers(),this._emit("cursorLeave",a))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth!==-1){for(var a=this.session.getUndoManager(),b=(a.$undoStack||a.$undostack).length-this.$undoStackDepth,c=0;c1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),b||this.fromOrientedRange(a)}},this.toSingleRange=function(a){a=a||this.ranges[0];var b=this.rangeList.removeAll();b.length&&this.$onRemoveRange(b),a&&this.fromOrientedRange(a)},this.substractPoint=function(a){var b=this.rangeList.substractPoint(a);if(b)return this.$onRemoveRange(b),b[0]},this.mergeOverlappingRanges=function(){var a=this.rangeList.merge();a.length?this.$onRemoveRange(a):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(a){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(a),this._signal("addRange",{range:a})},this.$onRemoveRange=function(a){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var b=this.rangeList.ranges.pop();a.push(b),this.rangeCount=0}for(var c=a.length;c--;){var d=this.ranges.indexOf(a[c]);this.ranges.splice(d,1)}this._signal("removeRange",{ranges:a}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),b=b||this.ranges[0],b&&!b.isEqual(this.getRange())&&this.fromOrientedRange(b)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new h,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var a=this.rangeList.ranges,b=a[a.length-1],c=i.fromPoints(a[0].start,b.end);this.toSingleRange(),this.setSelectionRange(c,b.cursor==b.start)}else{var c=this.getRange(),d=this.isBackwards(),e=c.start.row,f=c.end.row;if(e==f){if(d)var g=c.end,h=c.start;else var g=c.start,h=c.end;return this.addRange(i.fromPoints(h,h)),void this.addRange(i.fromPoints(g,g))}var j=[],k=this.getLineRange(e,!0);k.start.column=c.start.column,j.push(k);for(var l=e+1;l1){var a=this.rangeList.ranges,b=a[a.length-1],c=i.fromPoints(a[0].start,b.end);this.toSingleRange(),this.setSelectionRange(c,b.cursor==b.start)}else{var d=this.session.documentToScreenPosition(this.selectionLead),e=this.session.documentToScreenPosition(this.selectionAnchor),f=this.rectangularRangeBlock(d,e);f.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(a,b,c){var d=[],f=a.column0;)p--;if(p>0)for(var q=0;d[q].isEmpty();)q++;for(var r=p;r>=q;r--)d[r].isEmpty()&&d.splice(r,1)}return d}}.call(j.prototype);var r=a("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(a){a.cursor||(a.cursor=a.end);var b=this.getSelectionStyle();return a.marker=this.session.addMarker(a,"ace_selection",b),this.session.$selectionMarkers.push(a),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,a},this.removeSelectionMarker=function(a){if(a.marker){this.session.removeMarker(a.marker);var b=this.session.$selectionMarkers.indexOf(a);b!=-1&&this.session.$selectionMarkers.splice(b,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(a){for(var b=this.session.$selectionMarkers,c=a.length;c--;){var d=a[c];if(d.marker){this.session.removeMarker(d.marker);var e=b.indexOf(d);e!=-1&&b.splice(e,1)}}this.session.selectionMarkerCount=b.length},this.$onAddRange=function(a){this.addSelectionMarker(a.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(a){this.removeSelectionMarkers(a.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(a){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(n.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(a){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(n.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(a){var b=a.command,c=a.editor;if(c.multiSelect){if(b.multiSelectAction)"forEach"==b.multiSelectAction?d=c.forEachSelection(b,a.args):"forEachLine"==b.multiSelectAction?d=c.forEachSelection(b,a.args,!0):"single"==b.multiSelectAction?(c.exitMultiSelectMode(),d=b.exec(c,a.args||{})):d=b.multiSelectAction(c,a.args||{});else{var d=b.exec(c,a.args||{});c.multiSelect.addRange(c.multiSelect.toOrientedRange()),c.multiSelect.mergeOverlappingRanges()}return d}},this.forEachSelection=function(a,b,c){if(!this.inVirtualSelectionMode){var d,e=c&&c.keepOrder,f=1==c||c&&c.$byLines,g=this.session,h=this.selection,i=h.rangeList,k=(e?h:i).ranges;if(!k.length)return a.exec?a.exec(this,b||{}):a(this,b||{});var l=h._eventRegistry;h._eventRegistry={};var m=new j(g);this.inVirtualSelectionMode=!0;for(var n=k.length;n--;){if(f)for(;n>0&&k[n].start.row==k[n-1].end.row;)n--;m.fromOrientedRange(k[n]),m.index=n,this.selection=g.selection=m;var o=a.exec?a.exec(this,b||{}):a(this,b||{});d||void 0===o||(d=o),m.toOrientedRange(k[n])}m.detach(),this.selection=g.selection=h,this.inVirtualSelectionMode=!1,h._eventRegistry=l,h.mergeOverlappingRanges();var p=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),p&&p.from==p.to&&this.renderer.animateScrolling(p.from),d}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var a="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var b=this.multiSelect.rangeList.ranges,c=[],d=0;df&&(f=c.column),ej?a.insert(d,m.stringRepeat(" ",e-j)):a.remove(new i(d.row,d.column,d.row,d.column-e+j)),b.start.column=b.end.column=f,b.start.row=b.end.row=d.row,b.cursor=b.end}),b.fromOrientedRange(c[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var j=this.selection.getRange(),k=j.start.row,l=j.end.row,n=k==l;if(n){var o,p=this.session.getLength();do o=this.session.getLine(l);while(/[=:]/.test(o)&&++l0);k<0&&(k=0),l>=p&&(l=p-1)}var q=this.session.removeFullLines(k,l);q=this.$reAlignText(q,n),this.session.insert({row:k,column:0},q.join("\\n")+"\\n"),n||(j.start.column=0,j.end.column=q[q.length-1].length),this.selection.setRange(j)}},this.$reAlignText=function(a,b){function c(a){return m.stringRepeat(" ",a)}function d(a){return a[2]?c(g)+a[2]+c(h-a[2].length+i)+a[4].replace(/^([=:])\\s+/,"$1 "):a[0]}function e(a){return a[2]?c(g+h-a[2].length)+a[2]+c(i," ")+a[4].replace(/^([=:])\\s+/,"$1 "):a[0]}function f(a){return a[2]?c(g)+a[2]+c(i)+a[4].replace(/^([=:])\\s+/,"$1 "):a[0]}var g,h,i,j=!0,k=!0;return a.map(function(a){var b=a.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return b?null==g?(g=b[1].length,h=b[2].length,i=b[3].length,b):(g+h+i!=b[1].length+b[2].length+b[3].length&&(k=!1),g!=b[1].length&&(j=!1),g>b[1].length&&(g=b[1].length),hb[3].length&&(i=b[3].length),b):[a]}).map(b?d:j?k?e:d:f)}}).call(r.prototype),b.onSessionChange=function(a){var b=a.session;b&&!b.multiSelect&&(b.$selectionMarkers=[],b.selection.$initRangeList(),b.multiSelect=b.selection),this.multiSelect=b&&b.multiSelect;var c=a.oldSession;c&&(c.multiSelect.off("addRange",this.$onAddRange),c.multiSelect.off("removeRange",this.$onRemoveRange),c.multiSelect.off("multiSelect",this.$onMultiSelect),c.multiSelect.off("singleSelect",this.$onSingleSelect),c.multiSelect.lead.off("change",this.$checkMultiselectChange),c.multiSelect.anchor.off("change",this.$checkMultiselectChange)),b&&(b.multiSelect.on("addRange",this.$onAddRange),b.multiSelect.on("removeRange",this.$onRemoveRange),b.multiSelect.on("multiSelect",this.$onMultiSelect),b.multiSelect.on("singleSelect",this.$onSingleSelect),b.multiSelect.lead.on("change",this.$checkMultiselectChange),b.multiSelect.anchor.on("change",this.$checkMultiselectChange)),b&&this.inMultiSelectMode!=b.selection.inMultiSelectMode&&(b.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},b.MultiSelect=f,a("./config").defineOptions(r.prototype,"editor",{enableMultiselect:{set:function(a){f(this),a?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",k)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",k))},value:!0},enableBlockSelect:{set:function(a){this.$blockSelectEnabled=a},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(a,b,c){"use strict";var d=a("../../range").Range,e=b.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(a,b,c){var d=a.getLine(c);return this.foldingStartMarker.test(d)?"start":"markbeginend"==b&&this.foldingStopMarker&&this.foldingStopMarker.test(d)?"end":""},this.getFoldWidgetRange=function(a,b,c){return null},this.indentationBlock=function(a,b,c){var e=/\\S/,f=a.getLine(b),g=f.search(e);if(g!=-1){for(var h=c||f.length,i=a.getLength(),j=b,k=b;++bj){var m=a.getLine(k).length;return new d(j,h,k,m)}}},this.openingBracketBlock=function(a,b,c,e,f){var g={row:c,column:e+1},h=a.$findClosingBracket(b,g,f);if(h){var i=a.foldWidgets[h.row];return null==i&&(i=a.getFoldWidget(h.row)),"start"==i&&h.row>g.row&&(h.row--,h.column=a.getLine(h.row).length),d.fromPoints(g,h)}},this.closingBracketBlock=function(a,b,c,e,f){var g={row:c,column:e},h=a.$findOpeningBracket(b,g);if(h)return h.column++,g.column--,d.fromPoints(h,g)}}).call(e.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict";b.isDark=!1,b.cssClass="ace-tm",b.cssText=\'.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}\';var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(a,b,c){"use strict";function d(a){this.session=a,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var e=(a("./lib/oop"),a("./lib/dom"));a("./range").Range;(function(){this.getRowLength=function(a){var b;return b=this.lineWidgets?this.lineWidgets[a]&&this.lineWidgets[a].rowCount||0:0,this.$useWrapMode&&this.$wrapData[a]?this.$wrapData[a].length+1+b:1+b},this.$getWidgetScreenLength=function(){var a=0;return this.lineWidgets.forEach(function(b){b&&b.rowCount&&!b.hidden&&(a+=b.rowCount)}),a},this.$onChangeEditor=function(a){this.attach(a.editor)},this.attach=function(a){a&&a.widgetManager&&a.widgetManager!=this&&a.widgetManager.detach(),this.editor!=a&&(this.detach(),this.editor=a,a&&(a.widgetManager=this,a.renderer.on("beforeRender",this.measureWidgets),a.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(a){var b=this.editor;if(b){this.editor=null,b.widgetManager=null,b.renderer.off("beforeRender",this.measureWidgets),b.renderer.off("afterRender",this.renderWidgets);var c=this.session.lineWidgets;c&&c.forEach(function(a){a&&a.el&&a.el.parentNode&&(a._inDocument=!1,a.el.parentNode.removeChild(a.el))})}},this.updateOnFold=function(a,b){var c=b.lineWidgets;if(c&&a.action){for(var d=a.data,e=d.start.row,f=d.end.row,g="add"==a.action,h=e+1;h0&&!d[e];)e--;this.firstRow=c.firstRow,this.lastRow=c.lastRow,b.$cursorLayer.config=c;for(var g=e;g<=f;g++){var h=d[g];if(h&&h.el)if(h.hidden)h.el.style.top=-100-(h.pixelHeight||0)+"px";else{h._inDocument||(h._inDocument=!0,b.container.appendChild(h.el));var i=b.$cursorLayer.getPixelPosition({row:g,column:0},!0).top;h.coverLine||(i+=c.lineHeight*this.session.getRowLineCount(h.row)),h.el.style.top=i-c.offset+"px";var j=h.coverGutter?0:b.gutterWidth;h.fixedWidth||(j-=b.scrollLeft),h.el.style.left=j+"px",h.fullWidth&&h.screenWidth&&(h.el.style.minWidth=c.width+2*c.padding+"px"),h.fixedWidth?h.el.style.right=b.scrollBar.getWidth()+"px":h.el.style.right=""}}}}}).call(d.prototype),b.LineWidgets=d}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(a,b,c){"use strict";function d(a,b,c){for(var d=0,e=a.length-1;d<=e;){var f=d+e>>1,g=c(b,a[f]);if(g>0)d=f+1;else{if(!(g<0))return f;e=f-1}}return-(d+1)}function e(a,b,c){var e=a.getAnnotations().sort(h.comparePoints);if(e.length){var f=d(e,{row:b,column:-1},h.comparePoints);f<0&&(f=-f-1),f>=e.length?f=c>0?0:e.length-1:0===f&&c<0&&(f=e.length-1);var g=e[f];if(g&&c){if(g.row===b){do g=e[f+=c];while(g&&g.row===b);if(!g)return e.slice()}var i=[];b=g.row;do i[c<0?"unshift":"push"](g),g=e[f+=c];while(g&&g.row==b);return i.length&&i}}}var f=a("../line_widgets").LineWidgets,g=a("../lib/dom"),h=a("../range").Range;b.showErrorMarker=function(a,b){var c=a.session;c.widgetManager||(c.widgetManager=new f(c),c.widgetManager.attach(a));var d=a.getCursorPosition(),h=d.row,i=c.widgetManager.getWidgetsAtRow(h).filter(function(a){return"errorMarker"==a.type})[0];i?i.destroy():h-=b;var j,k=e(c,h,b);if(k){var l=k[0];d.column=(l.pos&&"number"!=typeof l.column?l.pos.sc:l.column)||0,d.row=l.row,j=a.renderer.$gutterLayer.$annotations[d.row]}else{if(i)return;j={text:["Looks good!"],className:"ace_ok"}}a.session.unfold(d.row),a.selection.moveToPosition(d);var m={row:d.row,fixedWidth:!0,coverGutter:!0,el:g.createElement("div"),type:"errorMarker"},n=m.el.appendChild(g.createElement("div")),o=m.el.appendChild(g.createElement("div"));o.className="error_widget_arrow "+j.className;var p=a.renderer.$cursorLayer.getPixelPosition(d).left;o.style.left=p+a.renderer.gutterWidth-5+"px",m.el.className="error_widget_wrapper",n.className="error_widget "+j.className,n.innerHTML=j.text.join("
    "),n.appendChild(g.createElement("div"));var q=function(a,b,c){if(0===b&&("esc"===c||"return"===c))return m.destroy(),{command:"null"}};m.destroy=function(){a.$mouseHandler.isMousePressed||(a.keyBinding.removeKeyboardHandler(q),c.widgetManager.removeLineWidget(m),a.off("changeSelection",m.destroy),a.off("changeSession",m.destroy),a.off("mouseup",m.destroy),a.off("change",m.destroy))},a.keyBinding.addKeyboardHandler(q),a.on("changeSelection",m.destroy),a.on("changeSession",m.destroy),a.on("mouseup",m.destroy),a.on("change",m.destroy),a.session.widgetManager.addLineWidget(m),m.el.onmousedown=a.focus.bind(a),a.renderer.scrollCursorIntoView(null,.5,{bottom:m.el.offsetHeight})},g.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(a,b,c){"use strict";a("./lib/fixoldbrowsers");var d=a("./lib/dom"),e=a("./lib/event"),f=a("./editor").Editor,g=a("./edit_session").EditSession,h=a("./undomanager").UndoManager,i=a("./virtual_renderer").VirtualRenderer;a("./worker/worker_client"),a("./keyboard/hash_handler"),a("./placeholder"),a("./multi_select"),a("./mode/folding/fold_mode"),a("./theme/textmate"),a("./ext/error_marker"),b.config=a("./config"),b.require=a,b.edit=function(a){if("string"==typeof a){var c=a;if(a=document.getElementById(c),!a)throw new Error("ace.edit can\'t find div #"+c)}if(a&&a.env&&a.env.editor instanceof f)return a.env.editor;var g="";if(a&&/input|textarea/i.test(a.tagName)){var h=a;g=h.value,a=d.createElement("pre"),h.parentNode.replaceChild(a,h)}else a&&(g=d.getInnerText(a),a.innerHTML="");var j=b.createEditSession(g),k=new f(new i(a));k.setSession(j);var l={document:j,editor:k,onResize:k.resize.bind(k,null)};return h&&(l.textarea=h),e.addListener(window,"resize",l.onResize),k.on("destroy",function(){e.removeListener(window,"resize",l.onResize),l.editor.container.env=null}),k.container.env=k.env=l,k},b.createEditSession=function(a,b){var c=new g(a,b);return c.setUndoManager(new h),c},b.EditSession=g,b.UndoManager=h,b.version="1.2.3"}),function(){window.require(["ace/ace"],function(a){a&&a.config.init(!0),window.ace||(window.ace=a);for(var b in a)a.hasOwnProperty(b)&&(window.ace[b]=a[b])})}()}.apply(a,arguments)})}(this),define("mockup-patterns-texteditor",["jquery","pat-base","mockup-utils","ace"],function(a,b,c){"use strict";var d=b.extend({name:"texteditor",trigger:".pat-texteditor",parser:"mockup",defaults:{theme:null,mode:"text",width:500,height:200,tabSize:4,softTabs:!0,wrapMode:!1,showGutter:!0,showPrintMargin:!1,readOnly:!1},init:function(){var b=this;if(!window.ace)return void setTimeout(function(){b.init()},200);var d=window.ace;d.config.set("packaged",!0),d.config.set("basePath","++plone++static/components/ace-builds/src/");var e=c.setId(b.$el);b.$wrapper=a(\'
    \').css({height:parseInt(b.options.height)+25,width:b.options.width,position:"relative"}),b.$el.parent().hasClass("editorWrapper")||b.$el.wrap(b.$wrapper),b.$el.css({width:b.options.width,height:b.options.height,position:"absolute"}),b.editor=d.edit(e),b.options.theme&&b.setTheme(b.options.theme),b.editor.getSession().setMode("ace/mode/"+b.options.mode),b.editor.getSession().setTabSize(parseInt(b.options.tabSize,10)),b.editor.getSession().setUseSoftTabs(c.bool(b.options.softTabs)),b.editor.getSession().setUseWrapMode(c.bool(b.options.wrapMode)),b.editor.renderer.setShowGutter(c.bool(b.options.showGutter)),b.editor.setShowPrintMargin(c.bool(b.options.showPrintMargin)),b.editor.setReadOnly(c.bool(b.options.readOnly))},setSyntax:function(a){var b=this,c={js:"javascript",txt:"text",css:"css",html:"html",xml:"xml",less:"less",py:"python",pt:"xml",cfg:"ini"},d=a.substr(a.lastIndexOf(".")+1),e=c[d];if(void 0!==e)return b.editor.getSession().setMode("ace/mode/"+e),!0},setTheme:function(a){var b=this;b.editor.setTheme("ace/theme/"+a)},setText:function(a){var b=this;b.editor&&b.editor.setValue(a)}});return d}),define("text!mockup-patterns-filemanager-url/templates/app.xml",[],function(){return\'
    \\n
    \\n
    \\n
    \\n
    \\n \'}),function(a,b){if("function"==typeof define&&define.amd)define("backbone",["underscore","jquery","exports"],function(c,d,e){a.Backbone=b(a,e,c,d)});else if("undefined"!=typeof exports){var c=require("underscore");b(a,exports,c)}else a.Backbone=b(a,{},a._,a.jQuery||a.Zepto||a.ender||a.$)}(this,function(a,b,c,d){var e=a.Backbone,f=[],g=(f.push,f.slice);f.splice;b.VERSION="1.1.2",b.$=d,b.noConflict=function(){return a.Backbone=e,this},b.emulateHTTP=!1,b.emulateJSON=!1;var h=b.Events={on:function(a,b,c){if(!j(this,"on",a,[b,c])||!b)return this;this._events||(this._events={});var d=this._events[a]||(this._events[a]=[]);return d.push({callback:b,context:c,ctx:c||this}),this},once:function(a,b,d){if(!j(this,"once",a,[b,d])||!b)return this;var e=this,f=c.once(function(){e.off(a,f),b.apply(this,arguments)});return f._callback=b,this.on(a,f,d)},off:function(a,b,d){var e,f,g,h,i,k,l,m;if(!this._events||!j(this,"off",a,[b,d]))return this;if(!a&&!b&&!d)return this._events=void 0,this;for(h=a?[a]:c.keys(this._events),i=0,k=h.length;i").attr(a);this.setElement(d,!1)}}}),b.sync=function(a,d,e){var f=x[a];c.defaults(e||(e={}),{emulateHTTP:b.emulateHTTP,emulateJSON:b.emulateJSON});var g={type:f,dataType:"json"};if(e.url||(g.url=c.result(d,"url")||K()),null!=e.data||!d||"create"!==a&&"update"!==a&&"patch"!==a||(g.contentType="application/json",g.data=JSON.stringify(e.attrs||d.toJSON(e))),e.emulateJSON&&(g.contentType="application/x-www-form-urlencoded",g.data=g.data?{model:g.data}:{}),e.emulateHTTP&&("PUT"===f||"DELETE"===f||"PATCH"===f)){g.type="POST",e.emulateJSON&&(g.data._method=f);var h=e.beforeSend;e.beforeSend=function(a){if(a.setRequestHeader("X-HTTP-Method-Override",f),h)return h.apply(this,arguments)}}"GET"===g.type||e.emulateJSON||(g.processData=!1),"PATCH"===g.type&&w&&(g.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var i=e.xhr=b.ajax(c.extend(g,e));return d.trigger("request",d,i,e),i};var w=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),x={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};b.ajax=function(){return b.$.ajax.apply(b.$,arguments)};var y=b.Router=function(a){a||(a={}),a.routes&&(this.routes=a.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},z=/\\((.*?)\\)/g,A=/(\\(\\?)?:\\w+/g,B=/\\*\\w+/g,C=/[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;c.extend(y.prototype,h,{initialize:function(){},route:function(a,d,e){c.isRegExp(a)||(a=this._routeToRegExp(a)),c.isFunction(d)&&(e=d,d=""),e||(e=this[d]);var f=this;return b.history.route(a,function(c){var g=f._extractParameters(a,c);f.execute(e,g),f.trigger.apply(f,["route:"+d].concat(g)),f.trigger("route",d,g),b.history.trigger("route",f,d,g)}),this},execute:function(a,b){a&&a.apply(this,b)},navigate:function(a,c){return b.history.navigate(a,c),this},_bindRoutes:function(){if(this.routes){this.routes=c.result(this,"routes");for(var a,b=c.keys(this.routes);null!=(a=b.pop());)this.route(a,this.routes[a])}},_routeToRegExp:function(a){return a=a.replace(C,"\\\\$&").replace(z,"(?:$1)?").replace(A,function(a,b){return b?a:"([^/?]+)"}).replace(B,"([^?]*?)"),new RegExp("^"+a+"(?:\\\\?([\\\\s\\\\S]*))?$")},_extractParameters:function(a,b){var d=a.exec(b).slice(1);return c.map(d,function(a,b){return b===d.length-1?a||null:a?decodeURIComponent(a):null})}});var D=b.History=function(){this.handlers=[],c.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},E=/^[#\\/]|\\s+$/g,F=/^\\/+|\\/+$/g,G=/msie [\\w.]+/,H=/\\/$/,I=/#.*$/;D.started=!1,c.extend(D.prototype,h,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\\/]$/,"$&/")===this.root},getHash:function(a){var b=(a||this).location.href.match(/#(.*)$/);return b?b[1]:""},getFragment:function(a,b){if(null==a)if(this._hasPushState||!this._wantsHashChange||b){a=decodeURI(this.location.pathname+this.location.search);var c=this.root.replace(H,"");a.indexOf(c)||(a=a.slice(c.length))}else a=this.getHash();return a.replace(E,"")},start:function(a){if(D.started)throw new Error("Backbone.history has already been started");D.started=!0,this.options=c.extend({root:"/"},this.options,a),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var d=this.getFragment(),e=document.documentMode,f=G.exec(navigator.userAgent.toLowerCase())&&(!e||e<=7);if(this.root=("/"+this.root+"/").replace(F,"/"),f&&this._wantsHashChange){var g=b.$(\'\\n\\n
    \\n \\n \\n
    \\n\\n \\n\\n \\n\\n
    \\n\'}),function(e){define("jqtree",["jquery"],function(){return function(){!function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=19)}([function(e,t,n){t.__esModule=!0;var i;!function(e){e[e.Before=1]="Before",e[e.After=2]="After",e[e.Inside=3]="Inside",e[e.None=4]="None"}(i=t.Position||(t.Position={})),t.position_names={before:i.Before,after:i.After,inside:i.Inside,none:i.None},t.getPositionName=function(e){for(var n in t.position_names)if(t.position_names.hasOwnProperty(n)&&t.position_names[n]===e)return n;return""},t.getPosition=function(e){return t.position_names[e]};var o=function(){function e(t,n,i){void 0===n&&(n=!1),void 0===i&&(i=e),this.name="",this.setData(t),this.children=[],this.parent=null,n&&(this.id_mapping={},this.tree=this,this.node_class=i)}return e.prototype.setData=function(e){var t=this,n=function(e){null!=e&&(t.name=e)};if(e)if("object"!=typeof e)n(e);else for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];"label"===i?n(o):"children"!==i&&(this[i]=o)}},e.prototype.loadFromData=function(e){this.removeChildren();for(var t=0,n=e;t=0?this.parent.children[e]:null}return null},e.prototype.getNextSibling=function(){if(this.parent){var e=this.parent.getChildIndex(this)+1;return e/g,">").replace(/"/g,""").replace(/\'/g,"'").replace(/\\//g,"/")},t.getBoolString=function(e){return e?"true":"false"}},function(e,t,n){t.__esModule=!0;var i=function(){function e(e,t){this.$el=$(e);var n=this.constructor.defaults;this.options=$.extend({},n,t)}return e.register=function(t,n){function i(t,n){var i=$.data(t,n);return i&&i instanceof e?i:null}function o(e,n){for(var o=a(),r=0,s=e.get();rn.right||t>n.bottom)return null;for(var i=0,o=this.hit_areas.length;i>1,s=this.hit_areas[r];if(ts.bottom))return s;i=r+1}}return null},e.prototype.mustOpenFolderTimer=function(e){var t=e.node;return t.isFolder()&&!t.is_open&&e.position===o.Position.Inside},e.prototype.updateDropHint=function(){if(this.hovered_area){this.removeDropHint();var e=this.tree_widget._getNodeElementForNode(this.hovered_area.node);this.previous_ghost=e.addDropHint(this.hovered_area.position)}},e.prototype.startOpenFolderTimer=function(e){var t=this;this.stopOpenFolderTimer(),this.open_folder_timer=setTimeout(function(){t.tree_widget._openNode(e,t.tree_widget.options.slide,function(){t.refresh(),t.updateDropHint()})},this.tree_widget.options.openFolderDelay)},e.prototype.stopOpenFolderTimer=function(){this.open_folder_timer&&(clearTimeout(this.open_folder_timer),this.open_folder_timer=null)},e.prototype.moveItem=function(e){var t=this;if(this.current_item&&this.hovered_area&&this.hovered_area.position!==o.Position.None&&this.canMoveToArea(this.hovered_area)){var n=this.current_item.node,i=this.hovered_area.node,r=this.hovered_area.position,s=n.parent;r===o.Position.Inside&&(this.hovered_area.node.is_open=!0);var a=function(){t.tree_widget.tree.moveNode(n,i,r),t.tree_widget.element.empty(),t.tree_widget._refreshElements(null)};this.tree_widget._triggerEvent("tree.move",{move_info:{moved_node:n,target_node:i,position:o.getPositionName(r),previous_parent:s,do_move:a,original_event:e.original_event}}).isDefaultPrevented()||a()}},e.prototype.getTreeDimensions=function(){var e=this.tree_widget.element.offset();return{left:e.left,top:e.top,right:e.left+this.tree_widget.element.width(),bottom:e.top+this.tree_widget.element.height()+16}},e}();t.DragAndDropHandler=s;var a=function(e){function t(t,n,i){var o=e.call(this,t)||this;return o.current_node=n,o.tree_bottom=i,o}return i(t,e),t.prototype.generate=function(){return this.positions=[],this.last_top=0,this.iterate(),this.generateHitAreas(this.positions)},t.prototype.generateHitAreas=function(e){for(var t=-1,n=[],i=[],o=0,r=e;o\'+e+""),this.$element.css("position","absolute"),i.append(this.$element)}return e.prototype.move=function(e,t){this.$element.offset({left:e-this.offset_x,top:t-this.offset_y})},e.prototype.remove=function(){this.$element.remove()},e}();t.DragElement=l},function(e,t,n){t.__esModule=!0;var i=n(1),o=function(){function e(e){this.tree_widget=e,this.opened_icon_element=this.createButtonElement(e.options.openedIcon),this.closed_icon_element=this.createButtonElement(e.options.closedIcon)}return e.prototype.render=function(e){e&&e.parent?this.renderFromNode(e):this.renderFromRoot()},e.prototype.renderFromRoot=function(){var e=this.tree_widget.element;e.empty(),this.createDomElements(e[0],this.tree_widget.tree.children,!0,1)},e.prototype.renderFromNode=function(e){var t=$(e.element),n=this.createLi(e,e.getLevel());this.attachNodeData(e,n),t.after(n),t.remove(),e.children&&this.createDomElements(n,e.children,!1,e.getLevel()+1)},e.prototype.createDomElements=function(e,t,n,i){var o=this.createUl(n);e.appendChild(o);for(var r=0,s=t;r1)){var n=t.changedTouches[0];return this._handleMouseDown(this._getPositionInfo(n))}},t.prototype._touchMove=function(e){var t=e.originalEvent;if(!(t.touches.length>1)){var n=t.changedTouches[0];return this._handleMouseMove(e,this._getPositionInfo(n))}},t.prototype._touchEnd=function(e){var t=e.originalEvent;if(!(t.touches.length>1)){var n=t.changedTouches[0];return this._handleMouseUp(this._getPositionInfo(n))}},t}(n(2).default);t.default=o},function(e,t,n){var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();t.__esModule=!0;var o=n(0),r=function(){function e(e,t){this.init(e,t)}return e.prototype.init=function(e,t){this.node=e,this.tree_widget=t,e.element||(e.element=this.tree_widget.element.get(0)),this.$element=$(e.element)},e.prototype.addDropHint=function(e){return e===o.Position.Inside?new a(this.$element):new l(this.node,this.$element,e)},e.prototype.select=function(){var e=this.getLi();e.addClass("jqtree-selected"),e.attr("aria-selected","true");var t=this.getSpan();t.attr("tabindex",0),t.focus()},e.prototype.deselect=function(){var e=this.getLi();e.removeClass("jqtree-selected"),e.attr("aria-selected","false");var t=this.getSpan();t.attr("tabindex",-1),t.blur()},e.prototype.getUl=function(){return this.$element.children("ul:first")},e.prototype.getSpan=function(){return this.$element.children(".jqtree-element").find("span.jqtree-title")},e.prototype.getLi=function(){return this.$element},e}();t.NodeElement=r;var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.open=function(e,t){var n=this;if(void 0===t&&(t=!0),!this.node.is_open){this.node.is_open=!0;var i=this.getButton();i.removeClass("jqtree-closed"),i.html("");var o=i.get(0);if(o){var r=this.tree_widget.renderer.opened_icon_element.cloneNode(!1);o.appendChild(r)}var s=function(){n.getLi().removeClass("jqtree-closed"),n.getSpan().attr("aria-expanded","true"),e&&e(n.node),n.tree_widget._triggerEvent("tree.open",{node:n.node})};t?this.getUl().slideDown("fast",s):(this.getUl().show(),s())}},t.prototype.close=function(e){var t=this;if(void 0===e&&(e=!0),this.node.is_open){this.node.is_open=!1;var n=this.getButton();n.addClass("jqtree-closed"),n.html("");var i=n.get(0);if(i){var o=this.tree_widget.renderer.closed_icon_element.cloneNode(!1);i.appendChild(o)}var r=function(){t.getLi().addClass("jqtree-closed"),t.getSpan().attr("aria-expanded","false"),t.tree_widget._triggerEvent("tree.close",{node:t.node})};e?this.getUl().slideUp("fast",r):(this.getUl().hide(),r())}},t.prototype.addDropHint=function(e){return this.node.is_open||e!==o.Position.Inside?new l(this.node,this.$element,e):new a(this.$element)},t.prototype.getButton=function(){return this.$element.children(".jqtree-element").find("a.jqtree-toggler")},t}(r);t.FolderElement=s;var a=function(){function e(e){var t=e.children(".jqtree-element"),n=e.width()-4;this.$hint=$(\'\'),t.append(this.$hint),this.$hint.css({width:n,height:t.outerHeight()-4})}return e.prototype.remove=function(){this.$hint.remove()},e}();t.BorderDropHint=a;var l=function(){function e(e,t,n){this.$element=t,this.node=e,this.$ghost=$(\'
  • \\n
  • \'),n===o.Position.After?this.moveAfter():n===o.Position.Before?this.moveBefore():n===o.Position.Inside&&(e.isFolder()&&e.is_open?this.moveInsideOpenFolder():this.moveInside())}return e.prototype.remove=function(){this.$ghost.remove()},e.prototype.moveAfter=function(){this.$element.after(this.$ghost)},e.prototype.moveBefore=function(){this.$element.before(this.$ghost)},e.prototype.moveInsideOpenFolder=function(){$(this.node.children[0].element).before(this.$ghost)},e.prototype.moveInside=function(){this.$element.after(this.$ghost),this.$ghost.addClass("jqtree-inside")},e}();t.GhostDropHint=l},function(e,t,n){t.__esModule=!0;var i=n(1),o=function(){function e(e){this.tree_widget=e}return e.prototype.saveState=function(){var e=JSON.stringify(this.getState());this.tree_widget.options.onSetStateFromStorage?this.tree_widget.options.onSetStateFromStorage(e):this.supportsLocalStorage()&&localStorage.setItem(this.getKeyName(),e)},e.prototype.getStateFromStorage=function(){var e=this._loadFromStorage();return e?this._parseState(e):null},e.prototype.getState=function(){var e=this;return{open_nodes:function(){var t=[];return e.tree_widget.tree.iterate(function(e){return e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0}),t}(),selected_node:e.tree_widget.getSelectedNodes().map(function(e){return e.id})}},e.prototype.setInitialState=function(e){if(e){var t=!1;return e.open_nodes&&(t=this._openInitialNodes(e.open_nodes)),e.selected_node&&(this._resetSelection(),this._selectInitialNodes(e.selected_node)),t}return!1},e.prototype.setInitialStateOnDemand=function(e,t){e?this._setInitialStateOnDemand(e.open_nodes,e.selected_node,t):t()},e.prototype.getNodeIdToBeSelected=function(){var e=this.getStateFromStorage();return e&&e.selected_node?e.selected_node[0]:null},e.prototype._parseState=function(e){var t=$.parseJSON(e);return t&&t.selected_node&&i.isInt(t.selected_node)&&(t.selected_node=[t.selected_node]),t},e.prototype._loadFromStorage=function(){return this.tree_widget.options.onGetStateFromStorage?this.tree_widget.options.onGetStateFromStorage():this.supportsLocalStorage()?localStorage.getItem(this.getKeyName()):void 0},e.prototype._openInitialNodes=function(e){for(var t=!1,n=0,i=e;n=o},e.prototype._initScrollParent=function(){var e=this,t=function(){e.scroll_parent_top=0,e.$scroll_parent=null};"fixed"===this.tree_widget.$el.css("position")&&t();var n=function(){var t=["overflow","overflow-y"],n=function(e){for(var n=0,i=t;nu&&(l-=c),h+a+5>d&&(a-=h),i.fadeIn(o.menuFadeDuration),i.offset({left:a,top:l});var p=function(){e(document).unbind("click.jqtreecontextmenu"),r.unbind("tree.click.jqtreecontextmenu"),i.fadeOut(o.menuFadeDuration)};e(document).bind("click.jqtreecontextmenu",function(e){a==e.pageX&&l==e.pageY||p()}),r.bind("tree.click.jqtreecontextmenu",function(){p()}),o.selectClickedNode&&r.tree("getSelectedNode")!==t.node&&r.tree("selectNode",t.node),i.find("li").off("click.contextmenu").on("click.contextmenu",function(n){n.stopImmediatePropagation(),p(),r.trigger("cm-jqtree.item.click",[t.node,e(this)])})}),this}}(jQuery)}.apply(e,arguments)})}(this),define("mockup-utils",["jquery"],function(e){"use strict";var t=function(t){var n=this;n.className="plone-loader";var i={backdrop:null,zIndex:10005};return t||(t={}),n.options=e.extend({},i,t),n.init=function(){n.$el=e("."+n.className),0===n.$el.length&&(n.$el=e("
    "),n.$el.addClass(n.className).hide().appendTo("body"))},n.show=function(t){n.init(),n.$el.show();var i=n.options.zIndex;"function"==typeof i?i=Math.max(i(),10005):(i=10005,e(".plone-modal-wrapper,.plone-modal-backdrop").each(function(){i=Math.max(i,e(this).css("zIndex")||10005)}),i+=1),n.$el.css("zIndex",i),void 0===t&&(t=!0),n.options.backdrop&&(n.options.backdrop.closeOnClick=t,n.options.backdrop.closeOnEsc=t,n.options.backdrop.init(),n.options.backdrop.show())},n.hide=function(){n.init(),n.$el.hide()},n},n=function(e){return void 0===e&&(e="id"),e+Math.floor(65536*(1+Math.random())).toString(16).substring(1)},i={get:function(e){if(window.localStorage){var t=window.localStorage[e];return"string"==typeof t?JSON.parse(t):void 0}},set:function(e,t){window.localStorage&&(window.localStorage[e]=JSON.stringify(t))}};return{bool:function(t){return"string"==typeof t&&(t=e.trim(t).toLowerCase()),-1===["false",!1,"0",0,"",void 0,null].indexOf(t)},escapeHTML:function(t){return e("
    ").text(t).html()},removeHTML:function(e){return e.replace(/<[^>]+>/gi,"")},featureSupport:{dragAndDrop:function(){return"draggable"in document.createElement("span")},fileApi:function(){return"undefined"!=typeof FileReader},history:function(){return!(!window.history||!window.history.pushState)}},generateId:n,getAuthenticator:function(){var t=e(\'input[name="_authenticator"]\');return 0===t.length?(t=e(\'a[href*="_authenticator"]\')).length>0?t.attr("href").split("_authenticator=")[1]:"":t.val()},getWindow:function(){var e=window;return e.parent!==window&&(e=e.parent),e},Loading:t,loading:new t,parseBodyTag:function(t){return e(/]*>[^]*<\\/body>/im.exec(t)[0].replace("","
    ")).eq(0).html()},QueryHelper:function(t){var n=this,i={pattern:null,vocabularyUrl:null,searchParam:"SearchableText",pathOperator:"plone.app.querystring.operation.string.path",attributes:["UID","Title","Description","getURL","portal_type"],batchSize:10,baseCriteria:[],sort_on:"is_folderish",sort_order:"reverse",pathDepth:1};return n.options=e.extend({},i,t),n.pattern=n.options.pattern,void 0!==n.pattern&&null!==n.pattern||(n.pattern={browsing:!1,basePath:"/"}),n.options.url&&!n.options.vocabularyUrl?n.options.vocabularyUrl=n.options.url:n.pattern.vocabularyUrl&&(n.options.vocabularyUrl=n.pattern.vocabularyUrl),n.valid=Boolean(n.options.vocabularyUrl),n.getBatch=function(e){return{page:e||1,size:n.options.batchSize}},n.getCurrentPath=function(){var e,t=n.pattern;"function"==typeof(e=n.currentPath?n.currentPath:t.currentPath)&&(e=e());var i=e;return i||(i=t.basePath?t.basePath:t.options.basePath?t.options.basePath:"/"),i},n.getCriterias=function(t,i){void 0===i&&(i={});var o=[];return(i=e.extend({},{useBaseCriteria:!0,additionalCriterias:[]},i)).useBaseCriteria&&(o=n.options.baseCriteria.slice(0)),t&&(t+="*",o.push({i:n.options.searchParam,o:"plone.app.querystring.operation.string.contains",v:t})),i.searchPath?o.push({i:"path",o:n.options.pathOperator,v:i.searchPath+"::"+n.options.pathDepth}):n.pattern.browsing&&o.push({i:"path",o:n.options.pathOperator,v:n.getCurrentPath()+"::"+n.options.pathDepth}),o=o.concat(i.additionalCriterias)},n.getQueryData=function(e,t){var i={query:JSON.stringify({criteria:n.getCriterias(e),sort_on:n.options.sort_on,sort_order:n.options.sort_order}),attributes:JSON.stringify(n.options.attributes)};return t&&(i.batch=JSON.stringify(n.getBatch(t))),i},n.getUrl=function(){var t=n.options.vocabularyUrl;return-1===t.indexOf("?")?t+="?":t+="&",t+e.param(n.getQueryData())},n.selectAjax=function(){return{url:n.options.vocabularyUrl,dataType:"JSON",quietMillis:100,data:function(e,t){return n.getQueryData(e,t)},results:function(e,t){var n=10*t1&&o(l,"")>-1&&(n=RegExp(this.source,r.replace.call(i(this),"g","")),r.replace.call(e.slice(l.index),n,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function i(){}function o(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}function r(e){return(e=+e)!==e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=f.call(arguments,1),o=function(){if(this instanceof o){var i=t.apply(this,n.concat(f.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(f.call(arguments)))};return t.prototype&&(i.prototype=t.prototype,o.prototype=new i,i.prototype=null),o});var s,a,l,c,h,u=Function.prototype.call,d=Array.prototype,p=Object.prototype,f=d.slice,g=u.bind(p.toString),m=u.bind(p.hasOwnProperty);if((h=m(p,"__defineGetter__"))&&(s=u.bind(p.__defineGetter__),a=u.bind(p.__defineSetter__),l=u.bind(p.__lookupGetter__),c=u.bind(p.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,n=[];if(n.splice.apply(n,e(20)),n.splice.apply(n,e(26)),t=n.length,n.splice(5,0,"XXX"),n.length,t+1==n.length)return!0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(f.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):void 0==e?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(u=c;u--;)this[l+u]=this[a+u];if(r&&e===h)this.length=h,this.push.apply(this,o);else for(this.length=h+r,u=0;u>>0;if("[object Function]"!=g(e))throw new TypeError;for(;++o>>0,o=Array(i),r=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,r=[],s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var r=0;r>>0,o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var r=0;r>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var o,r=0;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in n){o=n[r++];break}if(++r>=i)throw new TypeError("reduce of empty array with no initial value")}for(;r>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var o,r=i-1;if(arguments.length>=2)o=arguments[1];else for(;;){if(r in n){o=n[r--];break}if(--r<0)throw new TypeError("reduceRight of empty array with no initial value")}do{r in this&&(o=e.call(void 0,o,n[r],r,t))}while(r--);return o}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=y&&"[object String]"==g(this)?this.split(""):B(this),n=t.length>>>0;if(!n)return-1;var i=0;for(arguments.length>1&&(i=r(arguments[1])),i=i>=0?i:Math.max(0,n+i);i>>0;if(!n)return-1;var i=n-1;for(arguments.length>1&&(i=Math.min(i,r(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:p)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(m(e,t)){var n;if(n={enumerable:!0,configurable:!0},h){var i=e.__proto__;e.__proto__=p;var o=l(e,t),r=c(e,t);if(e.__proto__=i,o||r)return o&&(n.get=o),r&&(n.set=r),n}return n.value=e[t],n}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var b;b=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(null===e)n=b();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != \'object\'");var i=function(){};i.prototype=e,(n=new i).__proto__=e}return void 0!==t&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var C=o({}),A="undefined"==typeof document||o(document.createElement("div"));if(!C||!A)var F=Object.defineProperty}if(!Object.defineProperty||F){Object.defineProperty=function(e,t,n){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof n&&"function"!=typeof n||null===n)throw new TypeError("Property description must be an object: "+n);if(F)try{return F.call(Object,e,t,n)}catch(e){}if(m(n,"value"))if(h&&(l(e,t)||c(e,t))){var i=e.__proto__;e.__proto__=p,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!h)throw new TypeError("getters & setters can not be defined on this javascript engine");m(n,"get")&&s(e,t,n.get),m(n,"set")&&a(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)m(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";m(e,t);)t+="?";e[t]=!0;var n=m(e,t);return delete e[t],n}),!Object.keys){var E=!0,S=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],$=S.length;for(var x in{toString:null})E=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var n in e)m(e,n)&&t.push(n);if(E)for(var i=0,o=$;i=0?parseFloat((o.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]):parseFloat((o.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((o.match(/rv:(\\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(o.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(o.split(" Chrome/")[1])||void 0,t.isAIR=o.indexOf("AdobeAIR")>=0,t.isIPad=o.indexOf("iPad")>=0,t.isTouchPad=o.indexOf("TouchPad")>=0,t.isChromeOS=o.indexOf(" CrOS ")>=0}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function i(e,t,n){var i=c(t);if(!s.isMac&&a){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(i|=8),a.altGr){if(3==(3&i))return;a.altGr=0}if(18===n||17===n){var o="location"in t?t.location:t.keyLocation;17===n&&1===o?1==a[n]&&(l=t.timeStamp):18===n&&3===i&&2===o&&t.timeStamp-l<50&&(a.altGr=!0)}}if(n in r.MODIFIER_KEYS&&(n=-1),8&i&&n>=91&&n<=93&&(n=-1),i||13!==n||3!==(o="location"in t?t.location:t.keyLocation)||(e(t,i,-n),!t.defaultPrevented)){if(s.isChromeOS&&8&i){if(e(t,i,n),t.defaultPrevented)return;i&=-9}return!!(i||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS)&&e(t,i,n)}}function o(){a=Object.create(null)}var r=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var i=function(){n.call(e,window.event)};n._wrapper=i,e.attachEvent("on"+t,i)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,i){function o(e){n&&n(e),i&&i(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",o,!0),t.removeListener(document,"dragstart",o,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",o,!0),t.addListener(document,"dragstart",o,!0),o},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var i,o;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];i=t.clientX,o=t.clientY}),t.addListener(e,"touchmove",function(e){var t=e.changedTouches[0];e.wheelX=-(t.clientX-i)/1,e.wheelY=-(t.clientY-o)/1,i=t.clientX,o=t.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),n(e)})},t.addMultiMouseDownListener=function(e,n,i,o){function r(e){if(0!==t.getButton(e)?u=0:e.detail>1?++u>4&&(u=1):u=1,s.isIE){var r=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;h&&!r||(u=1),h&&clearTimeout(h),h=setTimeout(function(){h=null},n[u-1]||600),1==u&&(l=e.clientX,c=e.clientY)}if(e._clicks=u,i[o]("mousedown",e),u>4)u=0;else if(u>1)return i[o](d[u],e)}function a(e){u=2,h&&clearTimeout(h),h=setTimeout(function(){h=null},n[u-1]||600),i[o]("mousedown",e),i[o](d[u],e)}var l,c,h,u=0,d={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",r),s.isOldIE&&t.addListener(e,"dblclick",a)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return r.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;r(e,"keydown",function(e){l=e.keyCode}),r(e,"keypress",function(e){return i(n,e,l)})}else{var c=null;r(e,"keydown",function(e){a[e.keyCode]=(a[e.keyCode]||0)+1;var t=i(n,e,e.keyCode);return c=e.defaultPrevented,t}),r(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),r(e,"keyup",function(e){a[e.keyCode]=null}),a||(o(),r(window,"focus",o))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,n){n=n||window;t.addListener(n,"message",function i(o){"zero-timeout-message-1"==o.data&&(t.stopPropagation(o),t.removeListener(n,"message",i),e())}),n.postMessage("zero-timeout-message-1","*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var n="";t>0;)1&t&&(n+=e),(t>>=1)&&(e+=e);return n};var i=/^\\s\\s*/,o=/\\s\\s*$/;t.stringTrimLeft=function(e){return e.replace(i,"")},t.stringTrimRight=function(e){return e.replace(o,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){for(var t=[],n=0,i=e.length;n=53&&k()}},P=s.delayedCall(O,50);i.addListener(u,"compositionstart",M),o.isGecko?i.addListener(u,"text",function(){P.schedule()}):(i.addListener(u,"keyup",function(){P.schedule()}),i.addListener(u,"keydown",function(){P.schedule()})),i.addListener(u,"compositionend",I),this.getElement=function(){return u},this.setReadOnly=function(e){u.readOnly=e},this.onContextMenu=function(e){x=!0,n(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,n){if(n||!o.isOldIE){m||(m=u.style.cssText),u.style.cssText=(n?"z-index:100000;":"")+"height:"+u.style.height+";"+(o.isIE?"opacity:0.1;":"");var s=t.container.getBoundingClientRect(),a=r.computedStyle(t.container),l=s.top+(parseInt(a.borderTopWidth)||0),c=s.left+(parseInt(s.borderLeftWidth)||0),d=s.bottom-l-u.clientHeight-2,p=function(e){u.style.left=e.clientX-c-2+"px",u.style.top=Math.min(e.clientY-l-2,d)+"px"};p(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(N),o.isWin&&!o.isOldIE&&i.capture(t.container,p,h))}},this.onContextMenuClose=h;var N,z=function(e){t.textInput.onContextMenu(e),h()};i.addListener(u,"mouseup",z),i.addListener(u,"mousedown",function(e){e.preventDefault(),h()}),i.addListener(t.renderer.scroller,"contextmenu",z),i.addListener(u,"contextmenu",z)}}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function i(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function o(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}function r(e,t){if(e.start.row==e.end.row)n=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)n=2*t.row-e.start.row-e.end.row;else var n=t.column-4;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}e("../lib/dom"),e("../lib/event"),e("../lib/useragent");(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,o=e.getButton();if(0!==o){var r=i.getSelectionRange().isEmpty();return i.$blockScrolling++,(r||1==o)&&i.selection.moveToPosition(n),i.$blockScrolling--,void(2==o&&i.textInput.onContextMenu(e.domEvent))}return this.mousedownEvent.time=Date.now(),!t||i.isFocused()||(i.focus(),!this.$focusTimout||this.$clickSelection||i.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)e=this.$clickSelection.end;else if(1==i)e=this.$clickSelection.start;else{var o=r(this.$clickSelection,n);n=o.cursor,e=o.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),o=n.selection[e](i.row,i.column);if(n.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(o.start),a=this.$clickSelection.comparePoint(o.end);if(-1==s&&a<=0)t=this.$clickSelection.end,o.end.row==i.row&&o.end.column==i.column||(i=o.start);else if(1==a&&s>=0)t=this.$clickSelection.start,o.start.row==i.row&&o.start.column==i.column||(i=o.end);else if(-1==s&&1==a)i=o.end,t=o.start;else{var l=r(this.$clickSelection,i);i=l.cursor,t=l.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(i),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),i=this.editor;return i.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||n<200?(this.$lastScrollTime=t,i.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),i=this.editor;if(i.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||n<200)return this.$lastScrollTime=t,i.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(i.prototype),t.DefaultHandlers=i}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function i(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}e("./lib/oop");var o=e("./lib/dom");(function(){this.$init=function(){return this.$element=o.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){o.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){o.addCssClass(this.getElement(),e)},this.show=function(e,t,n){null!=e&&this.setText(e),null!=t&&null!=n&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(i.prototype),t.Tooltip=i}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function i(e){a.call(this,e)}var o=e("../lib/dom"),r=e("../lib/oop"),s=e("../lib/event"),a=e("../tooltip").Tooltip;r.inherits(i,a),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,o=this.getWidth(),r=this.getHeight();t+=15,(e+=15)+o>n&&(e-=e+o-n),t+r>i&&(t-=20+r),a.prototype.setPosition.call(this,e,t)}}.call(i.prototype),t.GutterHandler=function(e){function t(){var t=u.getDocumentPosition().row,i=l.$annotations[t];if(!i)return n();if(t==a.session.getLength()){var o=a.renderer.pixelToScreenCoordinates(0,u.y).row,s=u.$pos;if(o>a.session.documentToScreenRow(s.row,s.column))return n()}if(d!=i)if(d=i.text.join("
    "),c.setHtml(d),c.show(),a._signal("showGutterTooltip",c),a.on("mousewheel",n),e.$tooltipFollowsMouse)r(u);else{var h=u.domEvent.target.getBoundingClientRect(),p=c.getElement().style;p.left=h.right+"px",p.top=h.bottom+"px"}}function n(){h&&(h=clearTimeout(h)),d&&(c.hide(),d=null,a._signal("hideGutterTooltip",c),a.removeEventListener("mousewheel",n))}function r(e){c.setPosition(e.x,e.y)}var a=e.editor,l=a.renderer.$gutterLayer,c=new i(a.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(a.isFocused()&&0==t.getButton()&&"foldWidgets"!=l.getRegion(t)){var n=t.getDocumentPosition().row,i=a.session.selection;if(t.getShiftKey())i.selectTo(n,0);else{if(2==t.domEvent.detail)return a.selectAll(),t.preventDefault();e.$clickSelection=a.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}});var h,u,d;e.editor.setDefaultHandler("guttermousemove",function(i){var s=i.domEvent.target||i.domEvent.srcElement;if(o.hasCssClass(s,"ace_fold-widget"))return n();d&&e.$tooltipFollowsMouse&&r(i),u=i,h||(h=setTimeout(function(){h=null,u&&!e.isMousePressed?t():n()},50))}),s.addListener(a.renderer.$gutter,"mouseout",function(e){u=null,d&&!h&&(h=setTimeout(function(){h=null,n()},50))}),a.on("changeSession",n)}}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../lib/useragent"),r=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=o.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(r.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function i(e){function t(e,t){var n=Date.now(),i=!t||e.row!=t.row,r=!t||e.column!=t.column;!x||i||r?(m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,x=n,_={x:y,y:b}):o(_.x,_.y,y,b)>h?x=null:n-x>=c&&(m.renderer.scrollCursorIntoView(),x=null)}function n(e,t){var n=Date.now(),i=m.renderer.layerConfig.lineHeight,o=m.renderer.layerConfig.characterWidth,r=m.renderer.scroller.getBoundingClientRect(),s={x:{left:y-r.left,right:r.right-y},y:{top:b-r.top,bottom:r.bottom-b}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};a/o<=2&&(h.column+=s.x.left=l&&m.renderer.scrollCursorIntoView(h):$=n:$=null}function i(){var e=F;t(F=m.renderer.screenToTextCoordinates(y,b),e),n(F,e)}function u(){A=m.selection.toOrientedRange(),w=m.session.addMarker(A,"ace_selection",m.getSelectionStyle()),m.clearSelection(),m.isFocused()&&m.renderer.$cursorLayer.setBlinking(!1),clearInterval(C),i(),C=setInterval(i,20),D=0,s.addListener(document,"mousemove",p)}function d(){clearInterval(C),m.session.removeMarker(w),w=null,m.$blockScrolling+=1,m.selection.fromOrientedRange(A),m.$blockScrolling-=1,m.isFocused()&&!S&&m.renderer.$cursorLayer.setBlinking(!m.getReadOnly()),A=null,F=null,D=0,$=null,x=null,s.removeListener(document,"mousemove",p)}function p(){null==B&&(B=setTimeout(function(){null!=B&&w&&d()},20))}function f(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function g(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],i=a.isMac?e.altKey:e.ctrlKey,o="uninitialized";try{o=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var r="none";return i&&t.indexOf(o)>=0?r="copy":n.indexOf(o)>=0?r="move":t.indexOf(o)>=0&&(r="copy"),r}var m=e.editor,v=r.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),m.addEventListener("mousedown",this.onMouseDown.bind(e));var w,y,b,C,A,F,E,S,$,x,_,k=m.container,D=0;this.onDragStart=function(e){if(this.cancelDrag||!k.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}A=m.getSelectionRange();var n=e.dataTransfer;n.effectAllowed=m.getReadOnly()?"copy":"copyMove",a.isOpera&&(m.container.appendChild(v),v.scrollTop=0),n.setDragImage&&n.setDragImage(v,0,0),a.isOpera&&m.container.removeChild(v),n.clearData(),n.setData("Text",m.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(k.draggable=!1,S=!1,this.setState(null),!m.getReadOnly()){var t=e.dataTransfer.dropEffect;E||"move"!=t||m.session.remove(m.getSelectionRange()),m.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!m.getReadOnly()&&f(e.dataTransfer))return y=e.clientX,b=e.clientY,w||u(),D++,e.dataTransfer.dropEffect=E=g(e),s.preventDefault(e)},this.onDragOver=function(e){if(!m.getReadOnly()&&f(e.dataTransfer))return y=e.clientX,b=e.clientY,w||(u(),D++),null!==B&&(B=null),e.dataTransfer.dropEffect=E=g(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--D<=0&&w)return d(),E=null,s.preventDefault(e)},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(E){case"move":A=A.contains(F.row,F.column)?{start:F,end:F}:m.moveText(A,F);break;case"copy":A=m.moveText(A,F,!0)}else{var n=t.getData("Text");A={start:F,end:m.session.insert(F,n)},m.focus(),E=null}return d(),s.preventDefault(e)}},s.addListener(k,"dragstart",this.onDragStart.bind(e)),s.addListener(k,"dragend",this.onDragEnd.bind(e)),s.addListener(k,"dragenter",this.onDragEnter.bind(e)),s.addListener(k,"dragover",this.onDragOver.bind(e)),s.addListener(k,"dragleave",this.onDragLeave.bind(e)),s.addListener(k,"drop",this.onDrop.bind(e));var B=null}function o(e,t,n,i){return Math.sqrt(Math.pow(n-e,2)+Math.pow(i-t,2))}var r=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=a.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state&&(n=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y))>3&&t.dragDrop(),"dragWait"===this.state){var n=o(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),i=e.getButton();if(1===(e.domEvent.detail||1)&&0===i&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on"),t.getDragDelay()?(a.isWebKit&&(this.cancelDrag=!0,t.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(i.prototype),t.DragdropHandler=i}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var i=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=i.getDocumentHead(),o=document.createElement("script");o.src=e,n.appendChild(o),o.onload=o.onreadystatechange=function(e,n){!n&&o.readyState&&"loaded"!=o.readyState&&"complete"!=o.readyState||(o=o.onload=o.onreadystatechange=null,n||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var i={},o=function(){this.propagationStopped=!0},r=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],i=this._defaultHandlers[e];if(n.length||i){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=o),t.preventDefault||(t.preventDefault=r),n=n.slice();for(var s=0;s1&&(o=n[n.length-2]);var s=c[t+"Path"];return null==s?s=c.basePath:"/"==i&&(t=i=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+i+o+this.get("suffix")},t.setModuleUrl=function(e,t){return c.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,i){var o,r;Array.isArray(n)&&(r=n[0],n=n[1]);try{o=e(n)}catch(e){}if(o&&!t.$loading[n])return i&&i(o);if(t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(i),!(t.$loading[n].length>1)){var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var i=t.$loading[n];t.$loading[n]=null,i.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,r),a)}},i(!0),t.init=i}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var i=e("../lib/event"),o=e("../lib/useragent"),r=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new r(this),new s(this),new l(this);var n=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();i.addListener(a,"click",this.onMouseEvent.bind(this,"click")),i.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),i.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),i.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;i.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(a,"mousedown",n),i.addListener(c,"mousedown",n),o.isIE&&e.renderer.scrollBarV&&(i.addListener(e.renderer.scrollBarV.element,"mousedown",n),i.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var i=e.renderer.screenToTextCoordinates(n.x,n.y),o=e.session.selection.getRange(),r=e.renderer;!o.isEmpty()&&o.insideStart(i.row,i.column)?r.setCursorStyle("default"):r.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;n&&n.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var n=new a(t,this.editor);n.speed=2*this.$scrollSpeed,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new a(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var r=this,s=function(e){if(e){if(o.isWebKit&&!e.which&&r.releaseMouse)return r.releaseMouse();r.x=e.clientX,r.y=e.clientY,t&&t(e),r.mouseEvent=new a(e,r.editor),r.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),r[r.state+"End"]&&r[r.state+"End"](e),r.state="",null==n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),r.isMousePressed=!1,r.$onCaptureMouseMove=r.releaseMouse=null,e&&r.onMouseEvent("mouseup",e)},c=function(){r[r.state]&&r[r.state](),r.$mouseMoved=!1};if(o.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});r.$onCaptureMouseMove=s,r.releaseMouse=i.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&i.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:o.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";t.FoldHandler=function(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e.session,o=i.getFoldAt(n.row,n.column,1);o&&(t.getAccelKey()?i.removeFold(o):i.expandFold(o),t.stop())}),e.on("gutterclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var n=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var n=t.getDocumentPosition().row,i=e.session,o=i.getParentFoldRangeData(n,!0),r=o.range||o.firstRange;if(r){n=r.start.row;var s=i.getFoldAt(n,i.getLine(n).length,1);s?i.removeFold(s):(i.addFold("...",r),e.renderer.scrollCursorIntoView({row:r.start.row,column:0}))}t.stop()}})}}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var i=e("../lib/keys"),o=e("../lib/event"),r=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);-1!=n&&this.$handlers.splice(n,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==n&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,i){for(var r,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((r=this.$handlers[l].handleKeyboard(this.$data,e,t,n,i))&&r.command&&((s="null"==r.command||a.exec(r.command,this.$editor,r.args,i))&&i&&-1!=e&&1!=r.passEvent&&1!=r.command.passEvent&&o.stopEvent(i),s)););return s||-1!=e||(r={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal&&this.$editor._signal("keyboardActivity",r),s},this.onCommandKey=function(e,t,n){var o=i.keyCodeToString(n);this.$callKeyboardHandlers(t,o,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(r.prototype),t.KeyBinding=r}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var i=function(e,t,n,i){this.start={row:e,column:t},this.end={row:n,column:i}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,n=e.end,i=e.start;return 1==(t=this.compare(n.row,n.column))?1==(t=this.compare(i.row,i.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(i.row,i.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)n={row:t+1,column:0};else if(this.end.rowt)o={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n,i="number"==typeof e?e:this.lead.row,o=this.session.getFoldLine(i);return o?(i=o.start.row,n=o.end.row):n=i,!0===t?new s(i,0,n,this.session.getLine(n).length):new s(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-n,t.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=i)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(e,t,1);if(o)this.moveCursorTo(o.end.row,o.end.column);else{if(this.session.nonTokenRe.exec(i)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(t)),t>=n.length)return this.moveCursorTo(e,n.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(r)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)}},this.$shortWordEndIndex=function(e){var t,n=0,i=/\\s/,o=this.session.tokenRe;if(o.lastIndex=0,this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(t=e[n])&&i.test(t);)n++;if(n<1)for(o.lastIndex=0;(t=e[n])&&!o.test(t);)if(o.lastIndex=0,n++,i.test(t)){if(n>2){n--;break}for(;(t=e[n])&&i.test(t);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),i=n.substring(t),o=this.session.getFoldAt(e,t,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(t==n.length){var r=this.doc.getLength();do{e++,i=this.doc.getLine(e)}while(e0&&/^\\s*$/.test(i));n=i.length,/\\s+$/.test(i)||(i="")}var r=o.stringReverse(i),s=this.$shortWordEndIndex(r);return this.moveCursorTo(t,n-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var i=this.session.screenToDocumentPosition(n.row+e,n.column);0!==e&&0===t&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||e>0)&&i.row++,this.moveCursorTo(i.row,i.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var i=this.session.getFoldAt(e,t,1);i&&(e=i.start.row,t=i.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var i=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return s.fromPoints(t,n)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else(e=this.getRange()).isBackwards=this.isBackwards();return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var i=e("./config"),o=2e3,r=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var n=this.states[t],i=[],o=0,r=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),u>1&&(/\\\\\\d/.test(c.regex)?h=c.regex.replace(/\\\\([0-9]+)/g,function(e,t){return"\\\\"+(parseInt(t,10)+o+1)}):(u=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),r[o]=l,o+=u,i.push(h),c.onMatch||(c.onMatch=null)}}i.length||(r[0]=0,i.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+i.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){o=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if("string"==typeof n)return[{type:n,value:e}];for(var i=[],o=0,r=n.length;oh){var v=e.substring(h,m-g.length);d.type==p?d.value+=v:(d.type&&c.push(d),d={type:p,value:v})}for(w=0;wo){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},this.reportError=i.reportError}).call(r.prototype),t.Tokenizer=r}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var i=e("../lib/lang"),o=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var n in e){for(var i=e[n],o=0;o=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(void 0!==n)return n;for(n=0;t>0;)n+=e[t-=1].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},u=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t])return i=h[t];i=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},d=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){u(n);var c=n.getSelectionRange(),h=o.doc.getTextRange(c);if(""!==h&&"{"!==h&&n.getWrapBehavioursEnabled())return d(c,h,"{","}");if(p.isSaneInsertion(n,o))return/[\\]\\}\\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){if(u(n),"}"==(g=l.substring(s.column,s.column+1))&&null!==o.$findOpeningBracket("}",{column:s.column+1,row:s.row})&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\\n"==r||"\\r\\n"==r){u(n);var f="";p.isMaybeInsertedClosing(s,l)&&(f=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var g=l.substring(s.column,s.column+1);if("}"===g){var m=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;v=this.$getIndent(o.getLine(m.row))}else{if(!f)return void p.clearMaybeInsertedClosing();var v=this.$getIndent(l)}var w=v+o.getTabString();return{text:"\\n"+w+"\\n"+v+f,selection:[1,w.length,1,w.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){if(u(n),"}"==o.doc.getLine(r.start.row).substring(r.end.column,r.end.column+1))return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){u(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return d(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){u(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r&&(u(n),")"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){u(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return d(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){u(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1)&&null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r&&(u(n),"]"==i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)))return o.end.column++,o}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if(\'"\'==o||"\'"==o){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(o))return;u(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"\'"!==a&&\'"\'!=a&&n.getWrapBehavioursEnabled())return d(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),h=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),g=i.getTokenAt(l.row,l.column+1);if("\\\\"==h&&f&&/escape/.test(f.type))return null;var m,v=f&&/string|escape/.test(f.type),w=!g||/string|escape/.test(g.type);if(p==r)(m=v!==w)&&/string\\.end/.test(g.type)&&(m=!1);else{if(v&&!w)return null;if(v&&w)return null;var y=i.$mode.tokenRe;y.lastIndex=0;var b=y.test(h);y.lastIndex=0;var C=y.test(h);if(b||C)return null;if(p&&!/[\\s;,.})\\]\\\\]/.test(p))return null;m=!0}return{text:m?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&(\'"\'==r||"\'"==r)&&(u(n),i.doc.getLine(o.start.row).substring(o.start.column+1,o.start.column+2)==r))return o.end.column++,o})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";t.packages={},function(e){var n=/\\w{4}/g;for(var i in e)t.packages[i]=e[i].replace(n,"\\\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var i=e("../tokenizer").Tokenizer,o=e("./text_highlight_rules").TextHighlightRules,r=e("./behaviour/cstyle").CstyleBehaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=o};(function(){this.$defaultBehaviour=new r,this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\\\$_]|\\\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,i){function o(e){for(var t=n;t<=i;t++)e(r.getLine(t),t)}var r=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),u=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var d=this.lineCommentStart.map(a.escapeRegExp).join("|"),p=this.lineCommentStart[0];else var d=a.escapeRegExp(this.lineCommentStart),p=this.lineCommentStart;d=new RegExp("^(\\\\s*)(?:"+d+") ?"),u=t.getUseSoftTabs();var f=function(e,t){var n=e.match(d);if(n){var i=n[1].length,o=n[0].length;w(e,i,o)||" "!=n[0][o-1]||o--,r.removeInLine(t,i,o)}},g=p+" ",m=function(e,t){s&&!/\\S/.test(e)||(w(e,c,c)?r.insertInLine({row:t,column:c},g):r.insertInLine({row:t,column:c},p))},v=function(e,t){return d.test(e)},w=function(e,t,n){for(i=0;t--&&" "==e.charAt(t);)i++;if(i%h!=0)return!1;for(var i=0;" "==e.charAt(n++);)i++;return h>2?i%h!=h-1:i%h==0}}else{if(!this.blockComment)return!1;var p=this.blockComment.start,y=this.blockComment.end,d=new RegExp("^(\\\\s*)(?:"+a.escapeRegExp(p)+")"),b=new RegExp("(?:"+a.escapeRegExp(y)+")\\\\s*$"),m=function(e,t){v(e,t)||s&&!/\\S/.test(e)||(r.insertInLine({row:t,column:e.length},y),r.insertInLine({row:t,column:c},p))},f=function(e,t){var n;(n=e.match(b))&&r.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(d))&&r.removeInLine(t,n[1].length,n[0].length)},v=function(e,n){if(d.test(e))return!0;for(var i=t.getTokens(n),o=0;oe.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),u&&c%h!=0&&(c=Math.floor(c/h)*h),o(l?f:m)},this.toggleBlockComment=function(e,t,n,i){var o=this.blockComment;if(o){!o.start&&o[0]&&(o=o[0]);var r,s,a=new l(t,i.row,i.column),h=a.getCurrentToken(),u=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var d,p;h&&/comment/.test(h.type);){if(-1!=(m=h.value.indexOf(o.start))){var f=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+m;d=new c(f,g,f,g+o.start.length);break}h=a.stepBackward()}for(h=(a=new l(t,i.row,i.column)).getCurrentToken();h&&/comment/.test(h.type);){var m=h.value.indexOf(o.end);if(-1!=m){var f=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+m;p=new c(f,g,f,g+o.end.length);break}h=a.stepForward()}p&&t.remove(p),d&&(t.remove(d),r=d.start.row,s=-o.start.length)}else s=o.start.length,r=n.start.row,t.insert(n.end,o.end),t.insert(n.start,o.start);u.start.row==r&&(u.start.column+=s),u.end.row==r&&(u.end.column+=s),t.selection.fromOrientedRange(u)}},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;tthis.row)){var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(e,t,n){var i;if(i=n?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=i.row||this.column!=i.column){var o={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:o,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(r.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./apply_delta").applyDelta,r=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){i.implement(this,r),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:this.$split=function(e){return e.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=t?t[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\\r\\n"==e||"\\r"==e||"\\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(t=this.getLines(e.start.row,e.end.row))[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),i=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:i,action:"insert",lines:[t]},!0),this.clonePos(i)},this.clippedPos=function(e,t){var n=this.getLength();void 0===e?e=n:e<0?e=0:e>=n&&(e=n-1,t=void 0);var i=this.getLine(e);return void 0==t&&(t=i.length),t=Math.min(Math.max(t,0),i.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){var n=0;(e=Math.min(Math.max(e,0),this.getLength()))0,i=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);return t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n="insert"==e.action;(n?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),o(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var n=e.lines,i=n.length,o=e.start.row,r=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=n.slice(s,a);if(a>i){e.lines=l,e.start.row=o+s,e.start.column=r;break}l.push(""),this.applyDelta({start:this.pos(o+s,r),end:this.pos(o+a,r=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var n=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,o=t||0,r=n.length;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r<=i&&n.fireUpdateEvent(r,i)}}};(function(){i.implement(this,o),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],i=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=i.state+""?(this.states[e]=i.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=i.tokens}}).call(r.prototype),t.BackgroundTokenizer=r}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var i=e("./lib/lang"),o=(e("./lib/oop"),e("./range").Range),r=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,n,r){if(this.regExp)for(var s=r.firstRow,a=r.lastRow,l=s;l<=a;l++){var c=this.cache[l];null==c&&((c=i.getMatchOffsets(n.getLine(l),this.regExp)).length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new o(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(n),this.clazz,r)}}}).call(r.prototype),t.SearchHighlight=r}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new o(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var o=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can\'t add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn\'t have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var i,o,r,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,n=this.end.column);for(var c=0;c0)){var l=i(e,s.start);return 0===a?t&&0!==l?-r-2:r:l>0||0===l&&!t?r:-r-1}}return-r-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var i=this.pointIndex(e.end,t,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,e)},this.addList=function(e){for(var t=[],n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){for(var e,t=[],n=this.ranges,o=(n=n.sort(function(e,t){return i(e.start,t.start)}))[0],r=1;r=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;if(c.start.row==i&&c.start.column>=t.column&&(c.start.column==t.column&&this.$insertRight||(c.start.column+=r,c.start.row+=o)),c.end.row==i&&c.end.column>=t.column){if(c.end.column==t.column&&this.$insertRight)continue;c.end.column==t.column&&r>0&&ac.start.column&&c.end.column==s[a+1].start.column&&(c.end.column-=r),c.end.column+=r,c.end.row+=o}}if(0!=o&&a=e)return o;if(o.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,i=0;for(t&&(i=n.indexOf(t)),-1==i&&(i=0),i;i=e)return o}return null},this.getFoldedRowCount=function(e,t){for(var n=this.$foldData,i=t-e+1,o=0;o=t){a=e?i-=t-a:i=0);break}s>=e&&(i-=a>=e?s-a:s-e+1)}return i},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n,i=this.$foldData,s=!1;e instanceof r?n=e:(n=new r(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,h=n.end.column;if(!(a0&&(this.removeFolds(p),p.forEach(function(e){n.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,o;if(null==e?(n=new i(0,0,this.getLength(),0),t=!0):n="number"==typeof e?new i(e,0,e,this.getLine(e).length):"row"in e?i.fromPoints(e,e):e,o=this.getFoldsInRangeList(n),t)this.removeFolds(o);else for(var r=o;r.length;)this.expandFolds(r),r=this.getFoldsInRangeList(n);if(o.length)return o},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,i,o){null==i&&(i=e.start.row),null==o&&(o=0),null==t&&(t=e.end.row),null==n&&(n=this.getLine(t).length);var r=this.doc,s="";return e.walk(function(e,t,n,a){if(!(t=e){o=r.end.row;try{var s=this.addFold("...",r);s&&(s.collapseChildren=n)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};for(var i,o=e-1;o>=0;){var r=n[o];if(null==r&&(r=n[o]=this.getFoldWidget(o)),"start"==r){var s=this.getFoldWidgetRange(o);if(i||(i=s),s&&s.end.row>=e)break}o--}return{range:-1!==o&&s,firstRange:i}},this.onFoldWidgetClick=function(e,t){var n={children:(t=t.domEvent).shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,n)){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var n=this.getFoldWidget(e),i=this.getLine(e),o="end"===n?-1:1,r=this.getFoldAt(e,-1===o?0:i.length,o);if(r)return t.children||t.all?this.removeFold(r):this.expandFold(r),r;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(r=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(r.range))return this.removeFold(r),r;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(!n){var i=this.getParentFoldRangeData(t,!0);if(n=i.range||i.firstRange){t=n.start.row;var o=this.getFoldAt(t,this.getLine(t).length,1);o?this.removeFold(o):this.addFold("...",n)}}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(0===n)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,n+1,null);else{var i=Array(n+1);i.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var i=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(""==n)return null;var i=n.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return i?i[1]?this.$findClosingBracket(i[1],e):this.$findOpeningBracket(i[2],e):null},this.getBracketRange=function(e){var t,n=this.getLine(e.row),i=!0,r=n.charAt(e.column-1),s=r&&r.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(s||(r=n.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\\(\\[\\{])|([\\)\\]\\}])/),i=!1),!s)return null;if(s[1]){if(!(a=this.$findClosingBracket(s[1],e)))return null;t=o.fromPoints(e,a),i||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),i||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\\\.?"+a.type.replace(".","\\\\.").replace("rparen",".paren").replace(/\\b(?:end)\\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==o){if(0==(r-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(r+=1);l-=1}do{a=s.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,n){var o=this.$brackets[e],r=1,s=new i(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\\\.?"+a.type.replace(".","\\\\.").replace("lparen",".paren").replace(/\\b(?:start|begin)\\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;l=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}i.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){for(var n=0,i=e.length-1;n<=i;){var o=n+i>>1,r=e[o];if(t>r)n=o+1;else{if(!(t=t);r++);return(n=i[r])?(n.index=r,n.start=o-n.value.length,n):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=o.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?o.stringRepeat(" ",this.getTabSize()):"\\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(i=!!n.charAt(t-1).match(this.tokenRe)),i||(i=!!n.charAt(t).match(this.tokenRe)),i)o=this.tokenRe;else if(/^\\s+$/.test(n.slice(t-1,t+1)))o=/\\s/;else var o=this.nonTokenRe;var r=t;if(r>0){do{r--}while(r>=0&&n.charAt(r).match(o));r++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,o=0,r=this.$foldData[o],s=r?r.start.row:1/0,a=t.length,l=0;ls){if((l=r.end.row+1)>=a)break;s=(r=this.$foldData[o++])?r.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(t[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=e.length-1;-1!=i;i--){var o=e[i];"doc"==o.group?(this.doc.revertDeltas(o.deltas),n=this.$getUndoSelection(o.deltas,!0,n)):o.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var n=null,i=0;ie.end.column&&(r.start.column+=h),r.end.row==e.end.row&&r.end.column>e.end.column&&(r.end.column+=h)),l&&r.start.row>=e.end.row&&(r.start.row+=l,r.end.row+=l)}if(r.end=this.insert(r.start,i),o.length){var s=e.start,a=r.start,l=a.row-s.row,h=a.column-s.column;this.addFolds(o.map(function(e){return(e=e.clone()).start.row==s.row&&(e.start.column+=h),e.end.row==s.row&&(e.end.column+=h),e.start.row+=l,e.end.row+=l,e}))}return r},this.indentRows=function(e,t,n){n=n.replace(/\\t/g,this.getTabString());for(var i=e;i<=t;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(e){for(var t=e.collapseRows(),n=new c(0,0,0,0),i=this.getTabSize(),o=t.start.row;o<=t.end.row;++o){var r=this.getLine(o);n.start.row=o,n.end.row=o;for(var s=0;s0){var i=this.getRowFoldEnd(t+n);if(i>this.doc.getLength()-1)return 0;o=i-t}else{e=this.$clipRowToDocument(e);var o=(t=this.$clipRowToDocument(t))-e+1}var r=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(r).map(function(e){return e=e.clone(),e.start.row+=o,e.end.row+=o,e}),a=0==n?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+o,a),s.length&&this.addFolds(s),o},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var i=this.$constrainWrapLimit(e,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,i=e.start,o=e.end,r=i.row,s=o.row,a=s-r,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[t?"$wrapData":"$rowLengthCache"].splice(r,a);d=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);p=0;if(g=this.getFoldLine(o.row)){g.addRemoveChars(o.row,o.column,i.column-o.column),g.shiftRow(-a);var c=this.getFoldLine(r);c&&c!==g&&(c.merge(g),g=c),p=d.indexOf(g)+1}for(p;p=o.row&&g.shiftRow(-a);s=r}else{var h=Array(a);h.unshift(r,0);var u=t?this.$wrapData:this.$rowLengthCache;u.splice.apply(u,h);var d=this.$foldData,p=0;if(g=this.getFoldLine(r)){var f=g.range.compareInside(i.row,i.column);0==f?(g=g.split(i.row,i.column))&&(g.shiftRow(a),g.addRemoveChars(s,0,o.column-i.column)):-1==f&&(g.addRemoveChars(r,0,o.column-i.column),g.shiftRow(a)),p=d.indexOf(g)+1}for(p;p=r&&g.shiftRow(a)}else{a=Math.abs(e.start.column-e.end.column),"remove"===n&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var g=this.getFoldLine(r);g&&g.addRemoveChars(r,i.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(r,s):this.$updateRowLengthCache(r,s),l},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,i){var o,r,s=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,h=e;for(i=Math.min(i,s.length-1);h<=i;)(r=this.getFoldLine(h,r))?(o=[],r.walk(function(e,i,r,a){var l;if(null!=e){(l=this.$getDisplayTokens(e,o.length))[0]=t;for(var c=1;ci-v;){var w=u+i-v;if(e[w-1]>=a&&e[w]>=a)s(w);else if(e[w]!=t&&e[w]!=n){for(var y=Math.max(w-(i-(i>>2)),u-1);w>y&&e[w]y&&e[w]y&&9==e[w];)w--}else for(;w>y&&e[w]y?s(++w):(2==e[w=u+i]&&w--,s(w-v))}else{for(w;w!=u-1&&e[w]!=t;w--);if(w>u){s(w);continue}for(w=u+i;w39&&s<48||s>57&&s<64?o.push(9):s>=4352&&e(s)?o.push(1,2):o.push(1)}return o},this.$getStringScreenWidth=function(t,n,i){if(0==n)return[0,0];null==n&&(n=1/0),i=i||0;var o,r;for(r=0;r=4352&&e(o)?i+=2:i+=1,!(i>n));r++);return[i,r]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var s=l[c],o=this.$docRowCache[c],u=e>l[h-1];else u=!h;for(var d=this.getLength()-1,p=this.getNextFoldLine(o),f=p?p.start.row:1/0;s<=e&&(a=this.getRowLength(o),!(s+a>e||o>=d));)s+=a,++o>f&&(o=p.end.row+1,f=(p=this.getNextFoldLine(o,p))?p.start.row:1/0),u&&(this.$docRowCache.push(o),this.$screenRowCache.push(s));if(p&&p.start.row<=o)n=this.getFoldDisplayLine(p),o=p.start.row;else{if(s+a<=e||o>d)return{row:d,column:this.getLine(d).length};n=this.getLine(o),p=null}var g=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){var v=Math.floor(e-s);i=m[v],v>0&&m.length&&(g=m.indent,r=m[v-1]||m[m.length-1],n=n.substring(r))}}return r+=this.$getStringScreenWidth(n,t-g)[1],this.$useWrapMode&&r>=i&&(r=i-1),p?p.idxToPosition(r):{row:o,column:r}},this.documentToScreenPosition=function(e,t){if(void 0===t)var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var i=0,o=null,r=null;(r=this.getFoldAt(e,t,1))&&(e=r.start.row,t=r.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],i=this.$screenRowCache[c],u=e>l[h-1];else u=!h;for(var d=this.getNextFoldLine(a),p=d?d.start.row:1/0;a=p){if((s=d.end.row+1)>e)break;p=(d=this.getNextFoldLine(s,d))?d.start.row:1/0}else s=a+1;i+=this.getRowLength(a),a=s,u&&(this.$docRowCache.push(a),this.$screenRowCache.push(i))}var f="";d&&a>=p?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e);var g=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){for(var v=0;f.length>=m[v];)i++,v++;f=f.substring(m[v-1]||0,f.length),g=v>0?m.indent:0}}return{row:i,column:g+this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,o=0,r=(t=this.$foldData[o++])?t.start.row:1/0;ir&&(i=t.end.row+1,r=(t=this.$foldData[o++])?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,o=0;on));r++);return[i,r]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),r.defineOptions(p.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function i(e,t){function n(e){return/\\w/.test(e)||t.regExp?"\\\\b":""}return n(e[0])+e+n(e[e.length-1])}var o=e("./lib/lang"),r=e("./lib/oop"),s=e("./range").Range,a=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return o.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var i=null;return n.forEach(function(e,n,o){if(e.start)i=e;else{var r=e.offset+(o||0);if(i=new s(n,r,n,r+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&i.isEqual(t.start))return i=null,!1}return!0}),i},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),r=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=i.length-c;e:for(var u=a.offset||0;u<=h;u++){for(v=0;vf||(r.push(l=new s(u,f,u+c-1,g)),c>2&&(u=u+c-2))}}else for(C=0;Cb&&r[v].end.row==n.end.row;)v--;for(r=r.slice(C,v+1),C=0,v=r.length;C=0;a--)if(i(s[a],t,r))return!0};else a=function(e,t,r){for(var s=o.getMatchOffsets(e,n),a=0;a=s;i--)if(n(e.getLine(i),i))return;if(0!=t.wrap)for(i=a,s=r.row;i>=s;i--)if(n(e.getLine(i),i))return}}:function(n){var i=r.row;if(!n(e.getLine(i).substr(r.column),i,r.column)){for(i+=1;i<=a;i++)if(n(e.getLine(i),i))return;if(0!=t.wrap)for(i=s,a=r.row;i<=a;i++)if(n(e.getLine(i),i))return}}}}}).call(a.prototype),t.Search=a}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function i(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function o(e,t){i.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),s=e("../lib/useragent"),a=r.KEY_MODS;o.prototype=i.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&("string"==typeof e?e:e.name);e=this.commands[n],t||delete this.commands[n];var i=this.commandKeyBinding;for(var o in i){var r=i[o];if(r==e)delete i[o];else if(Array.isArray(r)){var s=r.indexOf(e);-1!=s&&(r.splice(s,1),1==r.length&&(i[o]=r[0]))}}},this.bindKey=function(e,t,n){if("object"==typeof e&&e&&(void 0==n&&(n=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var i="";if(-1!=e.indexOf(" ")){var o=e.split(/\\s+/);e=o.pop(),o.forEach(function(e){var t=this.parseKeys(e),n=a[t.hashId]+t.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")},this),i+=" "}var r=this.parseKeys(e),s=a[r.hashId]+r.key;this._addCommandToBinding(i+s,t,n)},this)},this._addCommandToBinding=function(t,n,i){var o,r=this.commandKeyBinding;if(n)if(!r[t]||this.$singleCommand)r[t]=n;else{Array.isArray(r[t])?-1!=(o=r[t].indexOf(n))&&r[t].splice(o,1):r[t]=[r[t]],"number"!=typeof i&&(i=i||n.isDefault?-100:e(n));var s=r[t];for(o=0;oi);o++);s.splice(o,0,n)}else delete r[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(n){if("string"==typeof n)return this.bindKey(n,t);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=t),this.addCommand(n))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:n.toUpperCase(),hashId:-1}}for(var o=0,s=t.length;s--;){var a=r.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;o|=a}return{key:n,hashId:o}},this.findKeyCommand=function(e,t){var n=a[e]+t;return this.commandKeyBinding[n]},this.handleKeyboard=function(e,t,n,i){if(!(i<0)){var o=a[t]+n,r=this.commandKeyBinding[o];return e.$keyChain&&(e.$keyChain+=" "+o,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&(t&&4!=t||1!=n.length?(-1==t||i>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-o.length-1)),{command:r}):(e.$keyChain=e.$keyChain||o,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(i.prototype),t.HashHandler=i,t.MultiHashHandler=o}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../keyboard/hash_handler").MultiHashHandler,r=e("../lib/event_emitter").EventEmitter,s=function(e,t){o.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};i.inherits(s,o),function(){i.implement(this,r),this.exec=function(e,t,n){if(Array.isArray(e)){for(var i=e.length;i--;)if(this.exec(e[i],t,n))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var o={editor:t,command:e,args:n};return o.returnValue=this._emit("exec",o),this._signal("afterExec",o),!1!==o.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function i(e,t){return{win:e,mac:t}}var o=e("../lib/lang"),r=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:i("Ctrl-,","Command-,"),exec:function(e){r.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:i("Alt-E","F4"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:i("Alt-Shift-E","Shift-F4"),exec:function(e){r.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:i("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:i(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:i("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:i("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:i("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:i(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:i("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:i("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:i("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:i("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:i("Ctrl-F","Command-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:i("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:i("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:i("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:i("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:i("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:i("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:i("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:i("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:i("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:i("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:i("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:i("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:i("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:i("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:i(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:i(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:i("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:i("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:i("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:i("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:i("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:i(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:i("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:i("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:i("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:i("Ctrl-H","Command-Option-F"),exec:function(e){r.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:i("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:i("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:i("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:i("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:i("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:i("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:i("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:i("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:i("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(o.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:i(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:i("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:i("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:i(null,null),exec:function(e){for(var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),r=e.session.doc.getLine(n.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\\n\\s*/," ").length,l=e.session.doc.getLine(n.row),c=n.row+1;c<=i.row+1;c++){var h=o.stringTrimLeft(o.stringTrimRight(e.session.doc.getLine(c)));0!==h.length&&(h=" "+h),l+=h}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(r=e.session.doc.getLine(n.row).length>r?r+1:r,e.selection.moveCursorTo(n.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:i(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,i=e.selection.rangeList.ranges,o=[];i.length<1&&(i=[e.selection.getRange()]);for(r=0;r0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),o=this.renderer.layerConfig;(i.start.row>=o.lastRow||i.end.row<=o.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,n=this.$mergeableCommands,i=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var o=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\\s/.test(o)||/\\s/.test(t.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var n=this;v.loadModule(["keybinding",e],function(i){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(i&&i.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||o.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=t.findMatchingBracket(e.getCursorPosition());if(n)i=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var i=t.$mode.getMatching(e.session);i&&(t.$bracketHighlight=t.addMarker(i,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var n=e.getCursorPosition(),i=new w(e.session,n.row,n.column),o=i.getCurrentToken();if(!o||!/\\b(?:tag-open|tag-name)/.test(o.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==o.type.indexOf("tag-open")||(o=i.stepForward())){var r=o.value,s=0,a=i.stepBackward();if("<"==a.value)do{a=o,(o=i.stepForward())&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"=0);else{do{o=a,a=i.stepBackward(),o&&o.value===r&&-1!==o.type.indexOf("tag-name")&&("<"===a.value?s++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var n=new p(e.row,e.column,e.row,1/0);n.id=t.addMarker(n,"ace_active-line","screenLine"),t.$highlightLineMarker=n}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",i)}var o=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(o),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var n=t.start.column-1,i=t.end.column+1,o=e.getLine(t.start.row),r=o.length,s=o.substring(Math.max(n,0),Math.min(i,r));if(!(n>=0&&/^[\\w\\d]/.test(s)||i<=r&&/[\\w\\d]$/.test(s))&&(s=o.substring(t.start.column,t.end.column),/^[\\w\\d]+$/.test(s)))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s})}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\\r\\n|\\r|\\n/),i=this.selection.rangeList.ranges;if(n.length>i.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var o=i.length;o--;){var r=i[o];r.isEmpty()||this.session.remove(r),this.session.insert(r.start,n[o])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,i=n.getMode(),o=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var r=i.transformAction(n.getState(o.row),"insertion",this,n,e);r&&(e!==r.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=r.text)}if("\\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty())this.session.getOverwrite()&&((s=new p.fromPoints(o,o)).end.column+=e.length,this.session.remove(s));else{var s=this.getSelectionRange();o=this.session.remove(s),this.clearSelection()}if("\\n"==e||"\\r\\n"==e){h=n.getLine(o.row);if(o.column>h.search(/\\S|$/)){var a=h.substr(o.column).search(/\\S|$/);n.doc.removeInLine(o.row,o.column,o.column+a)}}this.clearSelection();var l=o.column,c=n.getState(o.row),h=n.getLine(o.row),u=i.checkOutdent(c,h,e);n.insert(o,e);if(r&&r.selection&&(2==r.selection.length?this.selection.setSelectionRange(new p(o.row,l+r.selection[0],o.row,l+r.selection[1])):this.selection.setSelectionRange(new p(o.row+r.selection[0],r.selection[1],o.row+r.selection[2],r.selection[3]))),n.getDocument().isNewLine(e)){var d=i.getNextLineIndent(c,h.slice(0,o.column),n.getTabString());n.insert({row:o.row+1,column:0},d)}u&&i.autoOutdent(c,n,o.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(t.start.row),o=n.getMode().transformAction(i,"deletion",this,n,t);if(0===t.end.column){var r=n.getTextRange(t);if("\\n"==r[r.length-1]){var s=n.getLine(t.end.row);/^\\s+$/.test(s)&&(t.end.column=s.length)}}o&&(t=o)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var n,i,o=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var i=new p(0,0,0,0),o=e.first;o<=e.last;o++){var r=t.getLine(o);i.start.row=o,i.end.row=o,i.end.column=r.length,t.replace(i,n[o-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(e);n.lastIndex=t)return{value:o[0],start:o.index,end:o.index+o[0].length}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new p(t,n-1,t,n),o=this.session.getTextRange(i);if(!isNaN(parseFloat(o))&&isFinite(o)){var r=this.getNumberAt(t,n);if(r){var s=r.value.indexOf(".")>=0?r.start+r.value.indexOf(".")+1:r.end,a=r.start+r.value.length-s,l=parseFloat(r.value);l*=Math.pow(10,a),s!==r.end&&np+1)break;p=f.last}for(h--,a=this.session.$moveLines(d,p,t?0:e),t&&-1==e&&(u=h+1);u<=h;)s[u].moveBy(a,0),u++;t||(a=0),l+=a}o.fromOrientedRange(o.ranges[0]),o.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,i=this.renderer.layerConfig,o=e*Math.floor(i.height/i.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(o,0)}):!1===t&&(this.selection.moveCursorBy(o,0),this.selection.clearSelection()),this.$blockScrolling--;var r=n.scrollTop;n.scrollBy(0,o*i.lineHeight),null!=t&&n.scrollCursorIntoView(null,.5),n.animateScrolling(r)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,i){this.renderer.scrollToLine(e,t,n,i)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),i=new w(this.session,n.row,n.column),o=i.getCurrentToken(),r=o||i.stepForward();if(r){var s,a,l=!1,c={},h=n.column-r.start,u={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(r.value.match(/[{}()\\[\\]]/g)){for(;h=0;--r)this.$tryReplace(n[r],e)&&i++;return this.selection.setSelectionRange(o),this.$blockScrolling-=1,i},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return null!==(t=this.$search.replace(n,t))?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&i.mixin(t,e);var o=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(o)||this.$search.$options.needle)||(o=this.session.getWordRange(o.start.row,o.start.column),e=this.session.getTextRange(o)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:o});var r=this.$search.find(this.session);return t.preventScroll?r:r?(this.revealRange(r,n),r):(t.backwards?o.start=o.end:o.end=o.start,void this.selection.setRange(o))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var o=this.$scrollAnchor;o.style.cssText="position:absolute",this.container.insertBefore(o,this.container.firstChild);var r=this.on("changeSelection",function(){i=!0}),s=this.renderer.on("beforeRender",function(){i&&(t=n.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(i&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,r=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=r.top-s.offset;null!=(i=r.top>=0&&a+t.top<0||!(r.topwindow.innerHeight)&&null)&&(o.style.top=a+"px",o.style.left=r.left+"px",o.style.height=s.lineHeight+"px",o.scrollIntoView(i)),i=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",r),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,o.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(y.prototype),v.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var i=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){for(var n=new Array(e.length),i=0;i0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(i.prototype),t.UndoManager=i}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/oop"),r=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){o.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(g=r.end.row+1,s=(r=t.getNextFoldLine(g,r))?r.start.row:1/0),g>o){for(;this.$cells.length>f+1;)p=this.$cells.pop(),this.element.removeChild(p.element);break}(p=this.$cells[++f])||((p={element:null,textNode:null,foldWidget:null}).element=i.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[f]=p);v="ace_gutter-cell ";if(l[g]&&(v+=l[g]),c[g]&&(v+=c[g]),this.$annotations[g]&&(v+=this.$annotations[g].className),p.element.className!=v&&(p.element.className=v),(w=t.getRowLength(g)*e.lineHeight+"px")!=p.element.style.height&&(p.element.style.height=w),a){var m=a[g];null==m&&(m=a[g]=t.getFoldWidget(g))}if(m){p.foldWidget||(p.foldWidget=i.createElement("span"),p.element.appendChild(p.foldWidget));var v="ace_fold-widget ace_"+m;"start"==m&&g==s&&gn.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var i=e("../range").Range,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,i){return(e?1:0)|(t?2:0)|(n?4:0)|(i?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(e=e||this.config){this.config=e;var t=[];for(var n in this.markers){var i=this.markers[n];if(i.range){var o=i.range.clipRows(e.firstRow,e.lastRow);if(!o.isEmpty())if(o=o.toScreenRange(this.session),i.renderer){var r=this.$getTop(o.start.row,e),s=this.$padding+o.start.column*e.characterWidth;i.renderer(t,o,s,r,e)}else"fullLine"==i.type?this.drawFullLineMarker(t,o,i.clazz,e):"screenLine"==i.type?this.drawScreenLineMarker(t,o,i.clazz,e):o.isMultiLine()?"text"==i.type?this.drawTextMarker(t,o,i.clazz,e):this.drawMultiLineMarker(t,o,i.clazz,e):this.drawSingleLineMarker(t,o,i.clazz+" ace_start ace_br15",e)}else i.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,o,r,s){for(var a=this.session,l=n.start.row,c=n.end.row,h=l,u=0,d=0,p=a.getScreenLastRowColumn(h),f=new i(h,n.start.column,h,d);h<=c;h++)f.start.row=f.end.row=h,f.start.column=h==l?n.start.column:a.getRowWrapIndent(h),f.end.column=p,u=d,d=p,p=h+1p,h==c),r,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,n,i,o){var r=this.$padding,s=i.lineHeight,a=this.$getTop(t.start.row,i),l=r+t.start.column*i.characterWidth;o=o||"",e.push("
    "),a=this.$getTop(t.end.row,i);var c=t.end.column*i.characterWidth;if(e.push("
    "),!((s=(t.end.row-t.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(t.start.row+1,i);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
    ")}},this.drawSingleLineMarker=function(e,t,n,i,o,r){var s=i.lineHeight,a=(t.end.column+(o||0)-t.start.column)*i.characterWidth,l=this.$getTop(t.start.row,i),c=this.$padding+t.start.column*i.characterWidth;e.push("
    ")},this.drawFullLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,i)-r),e.push("
    ")},this.drawScreenLineMarker=function(e,t,n,i,o){var r=this.$getTop(t.start.row,i),s=i.lineHeight;e.push("
    ")}}).call(r.prototype),t.Marker=r}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,s),this.EOF_CHAR="\xc2\xb6",this.EOL_CHAR_LF="\xc2\xac",this.EOL_CHAR_CRLF="\xc2\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\xe2\x80\x94",this.SPACE_CHAR="\xc2\xb7",this.$padding=0,this.$updateEolChar=function(){var e="\\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],n=1;n"+r.stringRepeat(this.TAB_CHAR,n)+""):t.push(r.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var i="ace_indent-guide",o="",s="";if(this.showInvisibles){i+=" ace_invisible",o=" ace_invisible_space",s=" ace_invisible_tab";var a=r.stringRepeat(this.SPACE_CHAR,this.tabSize),l=r.stringRepeat(this.TAB_CHAR,this.tabSize)}else l=a=r.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]=""+a+"",this.$tabStrings["\\t"]=""+l+""}},this.updateLines=function(e,t,n){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var i=Math.max(t,e.firstRow),o=Math.min(n,e.lastRow),r=this.element.childNodes,s=0,a=e.firstRow;ac&&(a=l.end.row+1,c=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),a>o)break;var h=r[s++];if(h){var u=[];this.$renderLine(u,a,!this.$useLineGroups(),a==c&&l),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=u.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;i--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var o=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(o)}},this.$renderLinesFragment=function(e,t,n){for(var i=this.element.ownerDocument.createDocumentFragment(),r=t,s=this.session.getNextFoldLine(r),a=s?s.start.row:1/0;;){if(r>a&&(r=s.end.row+1,a=(s=this.session.getNextFoldLine(r,s))?s.start.row:1/0),r>n)break;var l=o.createElement("div"),c=[];if(this.$renderLine(c,r,!1,r==a&&s),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",i.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(r)+"px";else for(;l.firstChild;)i.appendChild(l.firstChild);r++}return i},this.update=function(e){this.config=e;for(var t=[],n=e.firstRow,i=e.lastRow,o=n,r=this.session.getNextFoldLine(o),s=r?r.start.row:1/0;;){if(o>s&&(o=r.end.row+1,s=(r=this.session.getNextFoldLine(o,r))?r.start.row:1/0),o>i)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,o,!1,o==s&&r),this.$useLineGroups()&&t.push("
    "),o++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,i){var o=this,s=/\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,a=i.replace(s,function(e,n,i,s,a){if(n)return o.showInvisibles?""+r.stringRepeat(o.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\\t"==e){var l=o.session.getScreenTabSize(t+s);return t+=l-1,o.$tabStrings[l]}if("\xe3\x80\x80"==e){var c=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=o.showInvisibles?o.SPACE_CHAR:"";return t+=1,""+h+""}return i?""+o.SPACE_CHAR+"":(t+=1,""+e+"")});if(this.$textToken[n.type])e.push(a);else{var l="ace_"+n.type.replace(/\\./g," ace_"),c="";"fold"==n.type&&(c=" style=\'width:"+n.value.length*this.config.characterWidth+"px;\' "),e.push("",a,"")}return t+i.length},this.renderIndentGuide=function(e,t,n){var i=t.search(this.$indentGuideRe);return i<=0||i>=n?t:" "==t[0]?(i-=i%this.tabSize,e.push(r.stringRepeat(this.$tabStrings[" "],i/this.tabSize)),t.substr(i)):"\\t"==t[0]?(e.push(r.stringRepeat(this.$tabStrings["\\t"],i)),t.substr(i)):t},this.$renderWrappedLine=function(e,t,n,i){for(var o=0,s=0,a=n[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,u.substring(0,a-o)),u=u.substring(a-o),o=a,i||e.push("
    ","
    "),e.push(r.stringRepeat("\xc2\xa0",n.indent)),l=0,a=n[++s]||Number.MAX_VALUE;0!=u.length&&(o+=u.length,l=this.$renderToken(e,l,h,u))}}},this.$renderSimpleLine=function(e,t){var n=0,i=t[0],o=i.value;this.displayIndentGuides&&(o=this.renderIndentGuide(e,o)),o&&(n=this.$renderToken(e,n,i,o));for(var r=1;r"),o.length){var r=this.session.getRowSplitData(t);r&&r.length?this.$renderWrappedLine(e,o,r,n):this.$renderSimpleLine(e,o)}this.showInvisibles&&(i&&(t=i.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function n(e,t,n){for(var i=0,r=0;r+e[i].value.lengthn-t&&(s=s.substring(0,n-t)),o.push({type:e[i].type,value:s}),r=t+s.length,i+=1);rn?o.push({type:e[i].type,value:s.substring(0,n-r)}):o.push(e[i]),r+=s.length,i+=1}}var i=this.session,o=[],r=i.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?o.push({type:"fold",value:e}):(l&&(r=i.getTokens(t)),r.length&&n(r,a,s))},t.end.row,this.session.getLine(t.end.row).length),o},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var i,o=e("../lib/dom"),r=function(e){this.element=o.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===i&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),o.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||i||(this.smoothBlinking=e,o.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=o.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,o.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,o.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&o.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){o.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e);return{left:this.$padding+n.column*this.config.characterWidth,top:(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,i=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var n=0,o=t.length;ne.height+e.offset||r.top<0)&&n>1)){var s=(this.cursors[i++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,r,e,t[n],this.session):(s.left=r.left+"px",s.top=r.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>i;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=r,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?o.addCssClass(this.element,"ace_overwrite-cursors"):o.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),t.Cursor=r}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/dom"),r=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=o.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=o.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,r.addListener(this.element,"scroll",this.onScroll.bind(this)),r.addListener(this.element,"mousedown",r.preventDefault)};(function(){i.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=o.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};i.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var i=e("./lib/event"),o=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;i.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(o.prototype),t.RenderLoop=o}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var i=e("../lib/oop"),o=e("../lib/dom"),r=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=r.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=o.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}t={height:e.height,width:e.width/l}}else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=r.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var i=e("./lib/oop"),o=e("./lib/dom"),r=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,g=e("./lib/event_emitter").EventEmitter;o.importCssString(\'.ace_editor {position: relative;overflow: hidden;font: 12px/normal \\\'Monaco\\\', \\\'Menlo\\\', \\\'Ubuntu Mono\\\', \\\'Consolas\\\', \\\'source-code-pro\\\', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \\\'\\\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\',"ace_editor.css");var m=function(e,t){var n=this;this.container=e||o.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,o.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var i=this.$textLayer=new c(this.content);this.canvas=i.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new f(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),r.resetOptions(this),r._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,g),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,n){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var o=this.container;i||(i=o.clientHeight||o.scrollHeight),n||(n=o.clientWidth||o.scrollWidth);var r=this.$updateCachedSize(e,t,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(r|this.$changes,!0):this.$loop.schedule(r|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,n,i){i-=this.$extraHeight||0;var o=0,r=this.$size,s={width:r.width,height:r.height,scrollerHeight:r.scrollerHeight,scrollerWidth:r.scrollerWidth};return i&&(e||r.height!=i)&&(r.height=i,o|=this.CHANGE_SIZE,r.scrollerHeight=r.height,this.$horizScroll&&(r.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",o|=this.CHANGE_SCROLL),n&&(e||r.width!=n)&&(o|=this.CHANGE_SIZE,r.width=n,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",r.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(o|=this.CHANGE_FULL)),r.$dirty=!n||!i,o&&this._signal("resize",s),o},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=o.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var i=this.textarea.style,o=this.lineHeight;if(t<0||t>e.height-o)i.top=i.left="0";else{var r=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\\x01+/,"");r*=this.session.$getStringScreenWidth(s)[0]+2,o+=2}(n-=this.scrollLeft)>this.$size.scrollerWidth-r&&(n=this.$size.scrollerWidth-r),n+=this.gutterWidth,i.height=o+"px",i.width=r+"px",i.left=Math.min(n,this.$size.scrollerWidth-r)+"px",i.top=Math.min(t,this.$size.height-o)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,i){var o=this.scrollMargin;o.top=0|e,o.bottom=0|t,o.right=0|i,o.left=0|n,o.v=o.top+o.bottom,o.h=o.left+o.right,o.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-o.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}if(e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var o=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,o,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,o=this.$getLongestLine(),r=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),s=this.$horizScroll!==r;s&&(this.$horizScroll=r,this.scrollBarH.setVisible(r));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=this.scrollTop%this.lineHeight,c=t.scrollerHeight+this.lineHeight,h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=h;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var d=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+h<0||this.scrollTop>u.top),p=a!==d;p&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var f,g,m=Math.ceil(c/this.lineHeight)-1,v=Math.max(0,Math.round((this.scrollTop-l)/this.lineHeight)),w=v+m,y=this.lineHeight;v=e.screenToDocumentRow(v,0);var b=e.getFoldLine(v);b&&(v=b.start.row),f=e.documentToScreenRow(v,0),g=e.getRowLength(v)*y,w=Math.min(e.screenToDocumentRow(w,0),e.getLength()-1),c=t.scrollerHeight+e.getRowLength(w)*y+g,l=this.scrollTop-f*y;var C=0;return this.layerConfig.width!=o&&(C=this.CHANGE_H_SCROLL),(s||p)&&(C=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:v,firstRowScreen:f,lastRow:w,lineHeight:y,characterWidth:this.characterWidth,minHeight:c,maxHeight:i,offset:l,gutterOffset:y?Math.max(0,Math.ceil((l+t.height-t.scrollerHeight)/y)):0,height:this.$size.scrollerHeight},C},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(e>n.lastRow+1||tr?(t&&l+s>r+this.lineHeight&&(r-=t*this.$size.scrollerHeight),0===r&&(r=-this.scrollMargin.top),this.session.setScrollTop(r)):l+this.$size.scrollerHeight-ao?(o=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),r=Math.round(i);return{row:o,column:r,side:i-r>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),o=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(i,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(e,t),o=this.$padding+Math.round(i.column*this.characterWidth),r=i.row*this.lineHeight;return{pageX:n.left+o-this.scrollLeft,pageY:n.top+r-this.scrollTop}},this.visualizeFocus=function(){o.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(o.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function n(n){if(i.$themeId!=e)return t&&t();if(!n||!n.cssClass)throw new Error("couldn\'t load module "+e+" or it didn\'t call define");o.importCssString(n.cssText,n.cssClass,i.container.ownerDocument),i.theme&&o.removeCssClass(i.container,i.theme.cssClass);var r="padding"in n?n.padding:"padding"in(i.theme||{})?4:i.$padding;i.$padding&&r!=i.$padding&&i.setPadding(r),i.$theme=n.cssClass,i.theme=n,o.addCssClass(i.container,n.cssClass),o.setCssClass(i.container,"ace_dark",n.isDark),i.$size&&(i.$size.width=0,i.$updateSizeAsync()),i._dispatchEvent("themeLoaded",{theme:n}),t&&t()}var i=this;if(this.$themeId=e,i._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)n(e);else{var s=e||this.$options.theme.initialValue;r.loadModule(["theme",s],n)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){o.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){o.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),r.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){o.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=o.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("../lib/net"),r=e("../lib/event_emitter").EventEmitter,s=e("../config"),a=function(t,n,i,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),s.get("packaged")||!e.toUrl)o=o||s.moduleUrl(n,"worker");else{var r=this.$normalizePath;o=o||r(e.toUrl("ace/worker/worker.js",null,"_"));var a={};t.forEach(function(t){a[t]=r(e.toUrl(t,null,"_").replace(/(\\.js)?(\\?.*)?$/,""))})}try{this.$worker=new Worker(o)}catch(e){if(!(e instanceof window.DOMException))throw e;var l=this.$workerBlob(o),c=window.URL||window.webkitURL,h=c.createObjectURL(l);this.$worker=new Worker(h),c.revokeObjectURL(h)}this.$worker.postMessage({init:!0,tlns:a,module:n,classname:i}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){i.implement(this,r),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var i=this.callbackId++;this.callbacks[i]=n,t.push(i)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts(\'"+o.qualifyURL(e)+"\');";try{return new Blob([t],{type:"application/javascript"})}catch(e){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return n.append(t),n.getBlob("application/javascript")}}}).call(a.prototype);var l=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var i=null,o=!1,a=Object.create(r),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),i&&(o?setTimeout(c):c())},this.setEmitSync=function(e){o=e};var c=function(){var e=l.messageBuffer.shift();e.command?i[e.command].apply(i,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){l.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){for(i=new e[n](a);l.messageBuffer.length;)c()})};l.prototype=a.prototype,t.UIWorkerClient=l,t.WorkerClient=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var i=e("./range").Range,o=e("./lib/event_emitter").EventEmitter,r=e("./lib/oop"),s=function(e,t,n,i,o,r){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=o,this.othersClass=r,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=n;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){r.implement(this,o),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var o=this.pos;o.$insertRight=!0,o.detach(),o.markerId=n.addMarker(new i(o.row,o.column,o.row,o.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var i=t.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),e.others.push(i)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,r=t.start.column-this.pos.column;if(this.updateAnchors(e),o&&(this.length+=n),o&&!this.session.$fromUndo)if("insert"===e.action)for(s=this.others.length-1;s>=0;s--){l={row:(a=this.others[s]).row,column:a.column+r};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+r};this.doc.remove(new i(l.row,l.column,l.row,l.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,n=function(n,o){t.removeMarker(n.markerId),n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),o,null,!1)};n(this.pos,this.mainClass);for(var o=this.others.length;o--;)n(this.others[o],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var i=this.ranges.indexOf(e[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),i=this.isBackwards(),o=n.start.row,r=n.end.row;if(o==r){if(i)var s=n.end,a=n.start;else var s=n.start,a=n.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(o,!0);h.start.column=n.start.column,c.push(h);for(var u=o+1;u1){var e=this.rangeList.ranges,t=e[e.length-1],n=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var i=this.session.documentToScreenPosition(this.selectionLead),o=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(i,o).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var i=[],r=e.column0;)g--;if(g>0)for(var m=0;i[m].isEmpty();)m++;for(var v=g;v>=m;v--)i[v].isEmpty()&&i.splice(v,1)}return i}}.call(c.prototype);var m=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,n=e.length;n--;){var i=e[n];if(i.marker){this.session.removeMarker(i.marker);var o=t.indexOf(i);-1!=o&&t.splice(o,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(p.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(p.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(n.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?i=n.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?i=n.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(n.exitMultiSelectMode(),i=t.exec(n,e.args||{})):i=t.multiSelectAction(n,e.args||{});else{var i=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(e,t,n){if(!this.inVirtualSelectionMode){var i,o=n&&n.keepOrder,r=1==n||n&&n.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(o?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=a._eventRegistry;a._eventRegistry={};var d=new c(s);this.inVirtualSelectionMode=!0;for(var p=h.length;p--;){if(r)for(;p>0&&h[p].start.row==h[p-1].end.row;)p--;d.fromOrientedRange(h[p]),d.index=p,this.selection=s.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});i||void 0===f||(i=f),d.toOrientedRange(h[p])}d.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=u,a.mergeOverlappingRanges();var g=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),g&&g.from==g.to&&this.renderer.animateScrolling(g.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,n=[],i=0;ir&&(r=n.column),ic?e.insert(i,d.stringRepeat(" ",o-c)):e.remove(new l(i.row,i.column,i.row,i.column-o+c)),t.start.column=t.end.column=r,t.start.row=t.end.row=i.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,u=c.end.row,p=h==u;if(p){var f,g=this.session.getLength();do{f=this.session.getLine(u)}while(/[=:]/.test(f)&&++u0);h<0&&(h=0),u>=g&&(u=g-1)}var m=this.session.removeFullLines(h,u);m=this.$reAlignText(m,p),this.session.insert({row:h,column:0},m.join("\\n")+"\\n"),p||(c.start.column=0,c.end.column=m[m.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function n(e){return d.stringRepeat(" ",e)}function i(e){return e[2]?n(o)+e[2]+n(r-e[2].length+s)+e[4].replace(/^([=:])\\s+/,"$1 "):e[0]}var o,r,s,a=!0,l=!0;return e.map(function(e){var t=e.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return t?null==o?(o=t[1].length,r=t[2].length,s=t[3].length,t):(o+r+s!=t[1].length+t[2].length+t[3].length&&(l=!1),o!=t[1].length&&(a=!1),o>t[1].length&&(o=t[1].length),rt[3].length&&(s=t[3].length),t):[e]}).map(t?i:a?l?function(e){return e[2]?n(o+r-e[2].length)+e[2]+n(s," ")+e[4].replace(/^([=:])\\s+/,"$1 "):e[0]}:i:function(e){return e[2]?n(o)+e[2]+n(s)+e[4].replace(/^([=:])\\s+/,"$1 "):e[0]})}}).call(m.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=r,e("./config").defineOptions(m.prototype,"editor",{enableMultiselect:{set:function(e){r(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../../range").Range,o=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var o=/\\S/,r=e.getLine(t),s=r.search(o);if(-1!=s){for(var a=n||r.length,l=e.getLength(),c=t,h=t;++tc){var d=e.getLine(h).length;return new i(c,a,h,d)}}},this.openingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o+1},a=e.$findClosingBracket(t,s,r);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,n,o,r){var s={row:n,column:o},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,i.fromPoints(a,s)}}).call(o.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText=\'.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}\',e("../lib/dom").importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function i(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}e("./lib/oop");var o=e("./lib/dom");e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(n&&e.action){for(var i=e.data,o=i.start.row,r=i.end.row,s="add"==e.action,a=o+1;a0&&!i[o];)o--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var s=o;s<=r;s++){var a=i[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(i.prototype),t.LineWidgets=i}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function i(e,t,n){for(var i=0,o=e.length-1;i<=o;){var r=i+o>>1,s=n(t,e[r]);if(s>0)i=r+1;else{if(!(s<0))return r;o=r-1}}return-(i+1)}function o(e,t,n){var o=e.getAnnotations().sort(a.comparePoints);if(o.length){var r=i(o,{row:t,column:-1},a.comparePoints);r<0&&(r=-r-1),r>=o.length?r=n>0?0:o.length-1:0===r&&n<0&&(r=o.length-1);var s=o[r];if(s&&n){if(s.row===t){do{s=o[r+=n]}while(s&&s.row===t);if(!s)return o.slice()}var l=[];t=s.row;do{l[n<0?"unshift":"push"](s),s=o[r+=n]}while(s&&s.row==t);return l.length&&l}}}var r=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var i=e.getCursorPosition(),a=i.row,l=n.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=o(n,a,t);if(h){var u=h[0];i.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,i.row=u.row,c=e.renderer.$gutterLayer.$annotations[i.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(i.row),e.selection.moveToPosition(i);var d={row:i.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},p=d.el.appendChild(s.createElement("div")),f=d.el.appendChild(s.createElement("div"));f.className="error_widget_arrow "+c.className;var g=e.renderer.$cursorLayer.getPixelPosition(i).left;f.style.left=g+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",p.className="error_widget "+c.className,p.innerHTML=c.text.join("
    "),p.appendChild(s.createElement("div"));var m=function(e,t,n){if(0===t&&("esc"===n||"return"===n))return d.destroy(),{command:"null"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var i=e("./lib/dom"),o=e("./lib/event"),r=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,"function"==typeof define&&(t.define=define),t.edit=function(e){if("string"==typeof e){var n=e;if(!(e=document.getElementById(n)))throw new Error("ace.edit can\'t find div #"+n)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=i.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=i.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new r(new l(e));h.setSession(c);var u={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(u.textarea=a),o.addListener(window,"resize",u.onResize),h.on("destroy",function(){o.removeListener(window,"resize",u.onResize),u.editor.container.env=null}),h.container.env=h.env=u,h},t.createEditSession=function(e,t){var n=new s(e,t);return n.setUndoManager(new a),n},t.EditSession=s,t.UndoManager=a,t.version="1.2.6"}),window.require(["ace/ace"],function(e){e&&(e.config.init(!0),e.define=window.define),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}.apply(e,arguments)})}(this),define("mockup-patterns-texteditor",["jquery","pat-base","mockup-utils","ace"],function(e,t,n){"use strict";return t.extend({name:"texteditor",trigger:".pat-texteditor",parser:"mockup",defaults:{theme:null,mode:"text",width:500,height:200,tabSize:4,softTabs:!0,wrapMode:!1,showGutter:!0,showPrintMargin:!1,readOnly:!1},init:function(){var t=this;if(window.ace){var i=window.ace;i.config.set("packaged",!0),i.config.set("basePath","++plone++static/components/ace-builds/src/");var o=n.setId(t.$el);t.$wrapper=e(\'
    \').css({height:parseInt(t.options.height)+25,width:t.options.width,position:"relative"}),t.$el.parent().hasClass("editorWrapper")||t.$el.wrap(t.$wrapper),t.$el.css({width:t.options.width,height:t.options.height,position:"absolute"}),t.editor=i.edit(o),t.options.theme&&t.setTheme(t.options.theme),t.editor.getSession().setMode("ace/mode/"+t.options.mode),t.editor.getSession().setTabSize(parseInt(t.options.tabSize,10)),t.editor.getSession().setUseSoftTabs(n.bool(t.options.softTabs)),t.editor.getSession().setUseWrapMode(n.bool(t.options.wrapMode)),t.editor.renderer.setShowGutter(n.bool(t.options.showGutter)),t.editor.setShowPrintMargin(n.bool(t.options.showPrintMargin)),t.editor.setReadOnly(n.bool(t.options.readOnly))}else setTimeout(function(){t.init()},200)},setSyntax:function(e){var t=this,n={js:"javascript",txt:"text",css:"css",html:"html",xml:"xml",less:"less",py:"python",pt:"xml",cfg:"ini"}[e.substr(e.lastIndexOf(".")+1)];if(void 0!==n)return t.editor.getSession().setMode("ace/mode/"+n),!0},setTheme:function(e){this.editor.setTheme("ace/theme/"+e)},setText:function(e){var t=this;t.editor&&t.editor.setValue(e)}})}),define("text!mockup-patterns-filemanager-url/templates/app.xml",[],function(){return\'
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n\\n\'}),function(e,t){if("function"==typeof define&&define.amd)define("backbone",["underscore","jquery","exports"],function(n,i,o){e.Backbone=t(e,o,n,i)});else if("undefined"!=typeof exports){var n=require("underscore");t(e,exports,n)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(this,function(e,t,n,i){var o=e.Backbone,r=[],s=r.slice;t.VERSION="1.1.2",t.$=i,t.noConflict=function(){return e.Backbone=o,this},t.emulateHTTP=!1,t.emulateJSON=!1;var a=t.Events={on:function(e,t,n){return c(this,"on",e,[t,n])&&t?(this._events||(this._events={}),(this._events[e]||(this._events[e]=[])).push({callback:t,context:n,ctx:n||this}),this):this},once:function(e,t,i){if(!c(this,"once",e,[t,i])||!t)return this;var o=this,r=n.once(function(){o.off(e,r),t.apply(this,arguments)});return r._callback=t,this.on(e,r,i)},off:function(e,t,i){var o,r,s,a,l,h,u,d;if(!this._events||!c(this,"off",e,[t,i]))return this;if(!e&&!t&&!i)return this._events=void 0,this;for(l=0,h=(a=e?[e]:n.keys(this._events)).length;l").attr(e);this.setElement(i,!1)}}}),t.sync=function(e,i,o){var r=F[e];n.defaults(o||(o={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON});var s={type:r,dataType:"json"};if(o.url||(s.url=n.result(i,"url")||M()),null!=o.data||!i||"create"!==e&&"update"!==e&&"patch"!==e||(s.contentType="application/json",s.data=JSON.stringify(o.attrs||i.toJSON(o))),o.emulateJSON&&(s.contentType="application/x-www-form-urlencoded",s.data=s.data?{model:s.data}:{}),o.emulateHTTP&&("PUT"===r||"DELETE"===r||"PATCH"===r)){s.type="POST",o.emulateJSON&&(s.data._method=r);var a=o.beforeSend;o.beforeSend=function(e){if(e.setRequestHeader("X-HTTP-Method-Override",r),a)return a.apply(this,arguments)}}"GET"===s.type||o.emulateJSON||(s.processData=!1),"PATCH"===s.type&&A&&(s.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var l=o.xhr=t.ajax(n.extend(s,o));return i.trigger("request",i,l,o),l};var A=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),F={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};t.ajax=function(){return t.$.ajax.apply(t.$,arguments)};var E=t.Router=function(e){e||(e={}),e.routes&&(this.routes=e.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},S=/\\((.*?)\\)/g,$=/(\\(\\?)?:\\w+/g,x=/\\*\\w+/g,_=/[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;n.extend(E.prototype,a,{initialize:function(){},route:function(e,i,o){n.isRegExp(e)||(e=this._routeToRegExp(e)),n.isFunction(i)&&(o=i,i=""),o||(o=this[i]);var r=this;return t.history.route(e,function(n){var s=r._extractParameters(e,n);r.execute(o,s),r.trigger.apply(r,["route:"+i].concat(s)),r.trigger("route",i,s),t.history.trigger("route",r,i,s)}),this},execute:function(e,t){e&&e.apply(this,t)},navigate:function(e,n){return t.history.navigate(e,n),this},_bindRoutes:function(){if(this.routes){this.routes=n.result(this,"routes");for(var e,t=n.keys(this.routes);null!=(e=t.pop());)this.route(e,this.routes[e])}},_routeToRegExp:function(e){return e=e.replace(_,"\\\\$&").replace(S,"(?:$1)?").replace($,function(e,t){return t?e:"([^/?]+)"}).replace(x,"([^?]*?)"),new RegExp("^"+e+"(?:\\\\?([\\\\s\\\\S]*))?$")},_extractParameters:function(e,t){var i=e.exec(t).slice(1);return n.map(i,function(e,t){return t===i.length-1?e||null:e?decodeURIComponent(e):null})}});var k=t.History=function(){this.handlers=[],n.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},D=/^[#\\/]|\\s+$/g,B=/^\\/+|\\/+$/g,T=/msie [\\w.]+/,L=/\\/$/,R=/#.*$/;k.started=!1,n.extend(k.prototype,a,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\\/]$/,"$&/")===this.root},getHash:function(e){var t=(e||this).location.href.match(/#(.*)$/);return t?t[1]:""},getFragment:function(e,t){if(null==e)if(this._hasPushState||!this._wantsHashChange||t){e=decodeURI(this.location.pathname+this.location.search);var n=this.root.replace(L,"");e.indexOf(n)||(e=e.slice(n.length))}else e=this.getHash();return e.replace(D,"")},start:function(e){if(k.started)throw new Error("Backbone.history has already been started");k.started=!0,this.options=n.extend({root:"/"},this.options,e),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var i=this.getFragment(),o=document.documentMode,r=T.exec(navigator.userAgent.toLowerCase())&&(!o||o<=7);if(this.root=("/"+this.root+"/").replace(B,"/"),r&&this._wantsHashChange){var s=t.$(\'