text: define("ace/keyboard/sublime",["require","exports","module","ace/lib/keys","ace/lib/oop","ace/lib/useragent","ace/keyboard/hash_handler"], function(require, exports, module) {
  "use strict";
  
  var keyUtil = require("../lib/keys");
  var oop = require("../lib/oop");
  var useragent = require("../lib/useragent");
  var HashHandler = require("../keyboard/hash_handler").HashHandler;
  
  function moveBySubWords(editor, direction, extend) {
      var selection = editor.selection;
      var row = selection.lead.row;
      var column = selection.lead.column;
  
      var line = editor.session.getLine(row);
      if (!line[column + direction]) {
          var method = (extend ? "selectWord" : "moveCursorShortWord")
              + (direction == 1 ? "Right" : "Left");
          return editor.selection[method]();
      }
      if (direction == -1) column--;
      while (line[column]) {
          var type = getType(line[column]) + getType(line[column + direction]);
          column += direction;
          if (direction == 1) {
              if (type == "WW" && getType(line[column + 1]) == "w")
                  break;
          }
          else {
              if (type == "wW") {
                  if (getType(line[column - 1]) == "W") {
                      column -= 1;
                      break;
                  } else {
                      continue;
                  }
              }
              if (type == "Ww")
                  break;
          }
          if (/w[s_oW]|_[sWo]|o[s_wW]|s[W]|W[so]/.test(type))
              break;
      }
      if (direction == -1) column++;
      if (extend)
          editor.selection.moveCursorTo(row, column);
      else
          editor.selection.moveTo(row, column);
      
      function getType(x) {
          if (!x) return "-";
          if (/\s/.test(x)) return "s";
          if (x == "_") return "_";
          if (x.toUpperCase() == x && x.toLowerCase() != x) return "W";
          if (x.toUpperCase() != x && x.toLowerCase() == x) return "w";
          return "o";
      }
  }
  
  exports.handler = new HashHandler();
   
  exports.handler.addCommands([{
      name: "find_all_under",
      exec: function(editor) {
          if (editor.selection.isEmpty())
              editor.selection.selectWord();
          editor.findAll();
      },
      readOnly: true
  }, {
      name: "find_under",
      exec: function(editor) {
          if (editor.selection.isEmpty())
              editor.selection.selectWord();
          editor.findNext();
      },
      readOnly: true
  }, {
      name: "find_under_prev",
      exec: function(editor) {
          if (editor.selection.isEmpty())
              editor.selection.selectWord();
          editor.findPrevious();
      },
      readOnly: true
  }, {
      name: "find_under_expand",
      exec: function(editor) {
          editor.selectMore(1, false, true);
      },
      scrollIntoView: "animate",
      readOnly: true
  }, {
      name: "find_under_expand_skip",
      exec: function(editor) {
          editor.selectMore(1, true, true);
      },
      scrollIntoView: "animate",
      readOnly: true
  }, {
      name: "delete_to_hard_bol",
      exec: function(editor) {
          var pos = editor.selection.getCursor();
          editor.session.remove({
              start: { row: pos.row, column: 0 },
              end: pos
          });
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor"
  }, {
      name: "delete_to_hard_eol",
      exec: function(editor) {
          var pos = editor.selection.getCursor();
          editor.session.remove({
              start: pos,
              end: { row: pos.row, column: Infinity }
          });
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor"
  }, {
      name: "moveToWordStartLeft",
      exec: function(editor) {
          editor.selection.moveCursorLongWordLeft();
          editor.clearSelection();
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor"
  }, {
      name: "moveToWordEndRight",
      exec: function(editor) {
          editor.selection.moveCursorLongWordRight();
          editor.clearSelection();
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor"
  }, {
      name: "selectToWordStartLeft",
      exec: function(editor) {
          var sel = editor.selection;
          sel.$moveSelection(sel.moveCursorLongWordLeft);
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor"
  }, {
      name: "selectToWordEndRight",
      exec: function(editor) {
          var sel = editor.selection;
          sel.$moveSelection(sel.moveCursorLongWordRight);
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor"
  }, {
      name: "selectSubWordRight",
      exec: function(editor) {
          moveBySubWords(editor, 1, true);
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor",
      readOnly: true
  }, {
      name: "selectSubWordLeft",
      exec: function(editor) {
          moveBySubWords(editor, -1, true);
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor",
      readOnly: true
  }, {
      name: "moveSubWordRight",
      exec: function(editor) {
          moveBySubWords(editor, 1);
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor",
      readOnly: true
  }, {
      name: "moveSubWordLeft",
      exec: function(editor) {
          moveBySubWords(editor, -1);
      },
      multiSelectAction: "forEach",
      scrollIntoView: "cursor",
      readOnly: true
  }]);
  
  
  [{
      bindKey: { mac: "cmd-k cmd-backspace|cmd-backspace", win: "ctrl-shift-backspace|ctrl-k ctrl-backspace" },
      name: "removetolinestarthard"
  }, {
      bindKey: { mac: "cmd-k cmd-k|cmd-delete|ctrl-k", win: "ctrl-shift-delete|ctrl-k ctrl-k" },
      name: "removetolineendhard"
  }, {
      bindKey: { mac: "cmd-shift-d", win: "ctrl-shift-d" },
      name: "duplicateSelection"
  }, {
      bindKey: { mac: "cmd-l", win: "ctrl-l" },
      name: "expandtoline"
  }, 
  {
      bindKey: {mac: "cmd-shift-a", win: "ctrl-shift-a"},
      name: "expandSelection",
      args: {to: "tag"}
  }, {
      bindKey: {mac: "cmd-shift-j", win: "ctrl-shift-j"},
      name: "expandSelection",
      args: {to: "indentation"}
  }, {
      bindKey: {mac: "ctrl-shift-m", win: "ctrl-shift-m"},
      name: "expandSelection",
      args: {to: "brackets"}
  }, {
      bindKey: {mac: "cmd-shift-space", win: "ctrl-shift-space"},
      name: "expandSelection",
      args: {to: "scope"}
  },
  {
      bindKey: { mac: "ctrl-cmd-g", win: "alt-f3" },
      name: "find_all_under"
  }, {
      bindKey: { mac: "alt-cmd-g", win: "ctrl-f3" },
      name: "find_under"
  }, {
      bindKey: { mac: "shift-alt-cmd-g", win: "ctrl-shift-f3" },
      name: "find_under_prev"
  }, {
      bindKey: { mac: "cmd-g", win: "f3" },
      name: "findnext"
  }, {
      bindKey: { mac: "shift-cmd-g", win: "shift-f3" },
      name: "findprevious"
  }, {
      bindKey: { mac: "cmd-d", win: "ctrl-d" },
      name: "find_under_expand"
  }, {
      bindKey: { mac: "cmd-k cmd-d", win: "ctrl-k ctrl-d" },
      name: "find_under_expand_skip"
  }, 
  {
      bindKey: { mac: "cmd-alt-[", win: "ctrl-shift-[" },
      name: "toggleFoldWidget"
  }, {
      bindKey: { mac: "cmd-alt-]", win: "ctrl-shift-]" },
      name: "unfold"
  }, {
      bindKey: { mac: "cmd-k cmd-0|cmd-k cmd-j", win: "ctrl-k ctrl-0|ctrl-k ctrl-j" },
      name: "unfoldall"
  }, {
      bindKey: { mac: "cmd-k cmd-1", win: "ctrl-k ctrl-1" },
      name: "foldOther",
      args: { level: 1 }
  },
  {
      bindKey: { win: "ctrl-left", mac: "alt-left" },
      name: "moveToWordStartLeft"
  }, {
      bindKey: { win: "ctrl-right", mac: "alt-right" },
      name: "moveToWordEndRight"
  }, {
      bindKey: { win: "ctrl-shift-left", mac: "alt-shift-left" },
      name: "selectToWordStartLeft"
  }, {
      bindKey: { win: "ctrl-shift-right", mac: "alt-shift-right" },
      name: "selectToWordEndRight"
  }, 
  {
      bindKey: {mac: "ctrl-alt-shift-right|ctrl-shift-right", win: "alt-shift-right"},
      name: "selectSubWordRight"
  }, {
      bindKey: {mac: "ctrl-alt-shift-left|ctrl-shift-left", win: "alt-shift-left"},
      name: "selectSubWordLeft"
  }, {
      bindKey: {mac: "ctrl-alt-right|ctrl-right", win: "alt-right"},
      name: "moveSubWordRight"
  }, {
      bindKey: {mac: "ctrl-alt-left|ctrl-left", win: "alt-left"},
      name: "moveSubWordLeft"
  }, 
  {
      bindKey: { mac: "ctrl-m", win: "ctrl-m" },
      name: "jumptomatching",
      args: { to: "brackets" }
  }, 
  {
      bindKey: { mac: "ctrl-f6", win: "ctrl-f6" },
      name: "goToNextError"
  }, {
      bindKey: { mac: "ctrl-shift-f6", win: "ctrl-shift-f6" },
      name: "goToPreviousError"
  },
  
  {
      bindKey: { mac: "ctrl-o" },
      name: "splitline"
  }, 
  {
      bindKey: {mac: "ctrl-shift-w", win: "alt-shift-w"},
      name: "surrowndWithTag"
  },{
      bindKey: {mac: "cmd-alt-.", win: "alt-."},
      name: "close_tag"
  }, 
  {
      bindKey: { mac: "cmd-j", win: "ctrl-j" },
      name: "joinlines"
  }, 
  
  {
      bindKey: {mac: "ctrl--", win: "alt--"},
      name: "jumpBack"
  }, {
      bindKey: {mac: "ctrl-shift--", win: "alt-shift--"},
      name: "jumpForward"
  }, 
  
  {
      bindKey: { mac: "cmd-k cmd-l", win: "ctrl-k ctrl-l" },
      name: "tolowercase"
  }, {
      bindKey: { mac: "cmd-k cmd-u", win: "ctrl-k ctrl-u" },
      name: "touppercase"
  }, 
  
  {
      bindKey: {mac: "cmd-shift-v", win: "ctrl-shift-v"},
      name: "paste_and_indent"
  }, {
      bindKey: {mac: "cmd-k cmd-v|cmd-alt-v", win: "ctrl-k ctrl-v"},
      name: "paste_from_history"
  }, 
  
  {
      bindKey: { mac: "cmd-shift-enter", win: "ctrl-shift-enter" },
      name: "addLineBefore"
  }, {
      bindKey: { mac: "cmd-enter", win: "ctrl-enter" },
      name: "addLineAfter"
  }, {
      bindKey: { mac: "ctrl-shift-k", win: "ctrl-shift-k" },
      name: "removeline"
  }, {
      bindKey: { mac: "ctrl-alt-up", win: "ctrl-up" },
      name: "scrollup"
  }, {
      bindKey: { mac: "ctrl-alt-down", win: "ctrl-down" },
      name: "scrolldown"
  }, {
      bindKey: { mac: "cmd-a", win: "ctrl-a" },
      name: "selectall"
  }, {
      bindKey: { linux: "alt-shift-down", mac: "ctrl-shift-down", win: "ctrl-alt-down" },
      name: "addCursorBelow"
  }, {
      bindKey: { linux: "alt-shift-up", mac: "ctrl-shift-up", win: "ctrl-alt-up" },
      name: "addCursorAbove"
  },
  
  
  {
      bindKey: { mac: "cmd-k cmd-c|ctrl-l", win: "ctrl-k ctrl-c" },
      name: "centerselection"
  }, 
  
  {
      bindKey: { mac: "f5", win: "f9" },
      name: "sortlines"
  }, 
  {
      bindKey: {mac: "ctrl-f5", win: "ctrl-f9"},
      name: "sortlines",
      args: {caseSensitive: true}
  },
  {
      bindKey: { mac: "cmd-shift-l", win: "ctrl-shift-l" },
      name: "splitIntoLines"
  }, {
      bindKey: { mac: "ctrl-cmd-down", win: "ctrl-shift-down" },
      name: "movelinesdown"
  }, {
      bindKey: { mac: "ctrl-cmd-up", win: "ctrl-shift-up" },
      name: "movelinesup"
  }, {
      bindKey: { mac: "alt-down", win: "alt-down" },
      name: "modifyNumberDown"
  }, {
      bindKey: { mac: "alt-up", win: "alt-up" },
      name: "modifyNumberUp"
  }, {
      bindKey: { mac: "cmd-/", win: "ctrl-/" },
      name: "togglecomment"
  }, {
      bindKey: { mac: "cmd-alt-/", win: "ctrl-shift-/" },
      name: "toggleBlockComment"
  },
  
  
  {
      bindKey: { linux: "ctrl-alt-q", mac: "ctrl-q", win: "ctrl-q" },
      name: "togglerecording"
  }, {
      bindKey: { linux: "ctrl-alt-shift-q", mac: "ctrl-shift-q", win: "ctrl-shift-q" },
      name: "replaymacro"
  }, 
  
  {
      bindKey: { mac: "ctrl-t", win: "ctrl-t" },
      name: "transpose"
  }
  
  ].forEach(function(binding) {
      var command = exports.handler.commands[binding.name];
      if (command)
          command.bindKey = binding.bindKey;
      exports.handler.bindKey(binding.bindKey, command || binding.name);
  });
  
  });                (function() {
                      window.require(["ace/keyboard/sublime"], function(m) {
                          if (typeof module == "object" && typeof exports == "object" && module) {
                              module.exports = m;
                          }
                      });
                  })();
              