1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-14 15:13:29 +01:00
invoiceninja/public/js/quill.min.js.map
2016-07-20 23:12:46 +02:00

1 line
507 KiB
Plaintext

{"version":3,"sources":["quill.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Quill","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","_dereq_","baseFindIndex","array","predicate","fromRight","index","baseIndexOf","value","fromIndex","indexOfNaN","baseIsFunction","baseToString","other","isObjectLike","replaceHolders","placeholder","resIndex","result","PLACEHOLDER","lodash","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__dropCount__","__filtered__","__iteratees__","__takeCount__","POSITIVE_INFINITY","__views__","SetCache","values","data","hash","nativeCreate","set","Set","push","cacheIndexOf","cache","isObject","has","cachePush","add","arrayCopy","source","Array","arrayEach","iteratee","arrayEvery","arrayMap","arrayReduce","accumulator","initFromArray","arraySome","assignDefaults","objectValue","sourceValue","undefined","assignWith","object","customizer","props","keys","key","baseAssign","baseCopy","baseCallback","func","thisArg","argCount","type","bindCallback","identity","baseMatches","property","baseMatchesProperty","baseClone","isDeep","stackA","stackB","isArr","isArray","initCloneArray","tag","objToString","isFunc","funcTag","objectTag","argsTag","cloneableTags","initCloneByTag","initCloneObject","baseForOwn","subValue","baseDelay","wait","args","TypeError","FUNC_ERROR_TEXT","setTimeout","apply","baseDifference","indexOf","getIndexOf","isCommon","createCache","valuesLength","outer","valuesIndex","baseEvery","collection","baseEach","baseFind","eachFunc","retKey","baseFlatten","isStrict","isArrayLike","isArguments","valIndex","valLength","baseForIn","baseFor","keysIn","baseGet","path","pathKey","toObject","baseIsEqual","isLoose","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","hasOwnProperty","othIsWrapped","equalArrays","equalObjects","pop","baseIsMatch","matchData","noCustomizer","objValue","srcValue","baseMap","getMatchData","isKey","isStrictComparable","toPath","baseSlice","last","baseProperty","basePropertyDeep","baseReduce","initFromCollection","start","end","baseValues","binaryIndex","retHighest","low","high","HALF_MAX_ARRAY_LENGTH","mid","computed","binaryIndexBy","valIsNaN","valIsNull","valIsUndef","floor","isDef","isReflexive","setLow","nativeMin","MAX_ARRAY_INDEX","arguments","bufferClone","buffer","bufferSlice","composeArgs","partials","holders","holdersLength","argsIndex","argsLength","nativeMax","leftIndex","leftLength","composeArgsRight","holdersIndex","rightIndex","rightLength","offset","createAggregator","setter","initializer","getCallback","createAssigner","assigner","restParam","sources","guard","isIterateeCall","createBaseEach","getLength","isLength","iterable","createBaseFor","keysFunc","createBindWrapper","wrapper","fn","root","Ctor","createCtorWrapper","thisBinding","baseCreate","prototype","createFind","createForEach","arrayFunc","createPartial","flag","partialFunc","createWrapper","createReduce","createHybridWrapper","bitmask","partialsRight","holdersRight","argPos","ary","arity","isCurry","isCurryRight","argsHolders","newArgPos","newArity","newsHolders","newHoldersRight","newPartials","newPartialsRight","PARTIAL_FLAG","PARTIAL_RIGHT_FLAG","isCurryBound","BIND_FLAG","BIND_KEY_FLAG","newData","isLaziable","setData","isBind","isBindKey","reorder","isAry","ARY_FLAG","CURRY_FLAG","CURRY_BOUND_FLAG","CURRY_RIGHT_FLAG","createPartialWrapper","getData","mergeData","baseSetData","arrLength","othLength","arrValue","othValue","boolTag","dateTag","errorTag","name","message","numberTag","regexpTag","stringTag","objProps","objLength","othProps","skipCtor","objCtor","constructor","othCtor","callback","getFuncName","realNames","otherFunc","target","pairs","getNative","isNative","input","Object","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","byteOffset","reFlags","exec","lastIndex","invokePath","isIndex","reIsUint","test","MAX_SAFE_INTEGER","reIsPlainProp","reIsDeepProp","funcName","srcBitmask","newBitmask","isCombo","REARG_FLAG","pickByArray","pickByCallback","indexes","oldArray","shimIsPlainObject","support","shimKeys","propsLength","allowIndexes","replace","rePropName","match","number","quote","string","reEscapeChar","every","map","rest","otherArgs","clone","isElement","nodeType","isEqual","reIsNative","fnToString","reIsHostCtor","isNumber","isString","typedArrayTags","isProto","skipIndexes","escapeRegExp","reHasRegExpChars","reRegExpChars","matches","constant","noop","uniqueId","prefix","id","idCounter","VERSION","HOT_COUNT","HOT_SPAN","mapTag","setTag","weakMapTag","RegExp","objectTypes","function","freeExports","freeModule","freeGlobal","freeSelf","freeWindow","moduleExports","objectProto","document","Function","toString","ArrayBuffer","Math","getPrototypeOf","Uint8Array","WeakMap","Float64Array","nativeIsArray","nativeKeys","max","min","nativeNow","Date","Number","MAX_ARRAY_LENGTH","FLOAT64_BYTES_PER_ELEMENT","BYTES_PER_ELEMENT","metaMap","x","valueOf","y","dom","createDocumentFragment","byteLength","floatLength","view","get","count","lastCalled","stamp","now","remaining","difference","intersection","arrays","othIndex","caches","seen","find","forEach","invoke","isProp","partition","reduce","getTime","bind","defer","partial","isPlainObject","isFunction","objProto","assign","defaults","omit","String","collect","each","extend","all","eq","detect","foldl","inject","methodName","_","2","init","_events","_conf","configure","conf","delimiter","maxListeners","wildcard","newListener","listenerTree","EventEmitter","searchListenerTree","handlers","tree","leaf","len","branch","xTree","xxTree","isolatedBranch","endReached","listeners","typeLength","currentType","nextType","_listeners","concat","**","growListenerTree","listener","split","slice","shift","warned","m","defaultMaxListeners","obj","setMaxListeners","event","once","many","ttl","off","_origin","on","emit","_all","error","handler","ns","onAny","addListener","leafs","iLeaf","position","splice","offAny","fns","removeListener","removeAllListeners","listenersAny","EventEmitter2","3","diff","is","op","NULL_CHARACTER","fromCharCode","Delta","ops","insert","text","attributes","newOp","delete","retain","lastOp","unshift","equal","chop","elem","Infinity","delta","iter","iterator","hasNext","nextOp","next","compose","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","strings","prep","join","diffResult","component","opLength","INSERT","DELETE","EQUAL","transform","priority","transformPosition","./is","./op","fast-diff","4","b","5","Iterator","lib","keepNull","memo","retOp","substr","6","diff_main","text1","text2","DIFF_EQUAL","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","DIFF_INSERT","DIFF_DELETE","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","d","k1","x1","k1_offset","y1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","j","best_common","prefixLength","suffixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","7","version","8","Document","Format","Line","LinkedList","Normalizer","options","normalizer","formats","addFormat","setHTML","innerHTML","config","FORMATS","appendLine","lineNode","insertLineBefore","findLeafAt","inclusive","line","ref","findLineAt","findLine","node","BLOCK_TAGS","tagName","parentNode","DATA_KEY","curLine","lines","toDelta","first","getHTML","newLineNode","refLine","insertBefore","insertAfter","prev","appendChild","append","mergeLines","lineToMerge","leaves","remove","childNodes","child","DEFAULT_BREAK_TAG","removeLine","rebuild","optimizeLines","toArray","optimize","results","firstChild","LIST_TAGS","_this","newLine","normalizeLine","nextLineNode","outerHTML","html","stripComments","stripWhitespace","splitLine","lineNode1","lineNode2","resetContent","../lib/dom","../lib/linked-list","./format","./line","./normalizer","rich-text/lib/delta","9","Editor","Selection","quill","setAttribute","doc","selection","timer","setInterval","checkUpdate","pollInterval","savedRange","range","readOnly","enable","API","SILENT","USER","destroy","clearInterval","disable","enabled","applyDelta","localDelta","_update","_trackDelta","_insertAt","_insertEmbed","_deleteAt","_formatAt","shiftAfter","events","TEXT_CHANGE","update","focus","setRange","getBounds","bounds","containerBounds","side","getBoundingClientRect","VOID_TAGS","createRange","setStart","setEnd","height","left","top","deleteLength","firstLine","mergeFirstLine","nextLine","deleteText","formatLength","formatText","format","insertEmbed","formatting","lineTexts","lineText","createElement","DEFAULT_BLOCK_TAG","insertText","ignored","newDelta","newIndex","newLeftDelta","newRightDelta","oldIndex","oldLeftDelta","oldRightDelta","ref1","getRange","_error","preserve","./document","./selection","10","types","LINE","EMBED","bold","prepare","italic","underline","strike","color","style","default","background","font","size","execCommand","convertFontSize","link","removeAttribute","getAttribute","image","attribute","align","bullet","exclude","parentTag","list","formatNode","inline","wrap","previousSibling","merge","nextSibling","isType","switchTag","isTextNode","DEFAULT_INLINE_TAG","addClass","c","hasAttribute","classes","removeClass","splitBefore","unwrap","hasAttributes","11","Leaf","parent","ctor","hasProp","__super__","superClass","node1","isLeafNode","textNode","EMBED_TAGS","createTextNode","Node","12","buildLeaves","nodeFormats","normalizeNode","findLeaf","leafNode","excludeFormat","leafOffset","leftNode","nextLeaf","ref2","rightNode","targetNode","_insert","nextNode","prevNode","formatName","optimizeLine","force","isAncestor","querySelector","./leaf","13","camelize","str","toUpperCase","toLowerCase","whitelist","styles","tags","ALIASES","STRONG","EM","DEL","STRIKE","ATTRIBUTES","face","wrapInline","handleBreaks","flattenList","pullBlocks","unwrapText","fontWeight","whitelistStyles","whitelistTags","original","listNode","innerItems","innerLists","querySelectorAll","item","breaks","br","isIE","lineNodeLength","nodes","normalize","descendants","curNode","isolate","trim","blockNode","spans","span","14","Range","emitter","nullDelay","checkFocus","activeElement","ignoreFocus","nativeRange","_getNativeRange","_positionToIndex","startContainer","startOffset","endContainer","endOffset","endNode","ref3","startNode","_encodePosition","_decodePosition","_setNativeRange","scrollIntoView","containerHeight","editor","endBounds","startBounds","isCollapsed","bottom","_indexToPosition","toEmit","compare","SELECTION_CHANGE","childIndex","lastChild","getSelection","rangeCount","getRangeAt","lineOffset","removeAllRanges","addRange","blur","body","../lib/range","15","./modules/authorship","./modules/image-tooltip","./modules/keyboard","./modules/link-tooltip","./modules/multi-cursor","./modules/paste-manager","./modules/toolbar","./modules/tooltip","./modules/undo-manager","./quill","16","ColorPicker","Picker","container","buildItem","picker","option","backgroundColor","./dom","./picker","17","SelectWrapper","Wrapper","lastKeyEvent","me","trigger","cssClass","hasClass","classList","className","attr","getElementsByTagName","contains","ancestor","ELEMENT_NODE","TEXT_NODE","$node","moveChildren","newParent","followingNode","eventName","addEventListener","arg","propagate","preventDefault","stopPropagation","removeChild","classArray","newNode","replaceChild","parentClone","refNode","cloneNode","after","childLeft","childRight","nextRight","nodeLength","right","splitText","overwrite","styleString","newTag","textContent","EMBED_TEXT","textNodes","walker","createTreeWalker","NodeFilter","SHOW_TEXT","toggleClass","state","initFn","modifiers","createEvent","initEvent","bubbles","cancelable","which","charCodeAt","altKey","ctrlKey","metaKey","shiftKey","initKeyboardEvent","dispatchEvent","ret","children","selectedIndex","reset","selected","NOBREAK_SPACE","ZERO_WIDTH_NOBREAK_SPACE","FONT_SIZES","10px","13px","16px","18px","24px","32px","48px","KEYS","BACKSPACE","TAB","ENTER","ESCAPE","LEFT","UP","RIGHT","DOWN","ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","CANVAS","DD","DIV","DL","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","LI","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL","VIDEO","IMG","LINE_TAGS","AREA","BASE","BR","COL","COMMAND","HR","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR","targets","parseInt","maxVersion","documentMode","isIOS","navigator","userAgent","isMac","platform","18","arr","cur","19","select","buildPicker","display","close","label","selectItem","TEMPLATE","20","r1","r2","equals","pos","21","Authorship","button","attachButton","class","authorId","PRE_EVENT","origin","authorDelta","authorFormat","author","updateContents","addAuthor","DEFAULTS","background-color","theme","addStyles","$button","$dom","registerModule","../quill","22","ImageTooltip","Tooltip","preview","textbox","initListeners","template","hide","insertImage","_preview","initTextbox","onModuleLoad","toolbar","initFormat","_onToolbar","url","_normalizeURL","setSelection","show","setSelectionRange","setActive","img","_matchImageURL","./tooltip","23","Keyboard","hotkeys","_initListeners","_initHotkeys","BOLD","INDENT","ITALIC","OUTDENT","UNDERLINE","addHotkey","hotkey","base","removeHotkeys","kept","removed","toggleFormat","getContents","prepareFormat","_initEnter","_initDeletes","formatLine","_onTab","prevent","24","LinkTooltip","maxLength","anchor","_findAnchor","setMode","href","HIDE_MARGIN","saveLink","removeLink","keyboard","_onKeyboard","_expandRange","edit","_toggle","_suggestURL","getText","25","MultiCursor","cursors","addContainer","_applyDelta","timeout","CURSOR_ADDED","CURSOR_MOVED","CURSOR_REMOVED","clearCursors","removeCursor","moveCursor","userId","cursor","clearTimeout","_updateCursor","setCursor","_buildCursor","shiftCursors","cursorCaret","cursorFlag","cursorName","scrollTop","offsetHeight","offsetWidth","eventemitter2","26","PasteManager","_onConvert","_paste","onConvert","lengthAdded","oldDocLength","../core/document","27","Toolbar","inputs","preventUpdate","triggering","TOOLTIP","_applyFormat","FORMAT_INIT","updateActive","SELECT","TOGGLE","selector","$input","selectValue","activeFormats","_getActive","leafFormats","lineFormats","_getLeafActive","_getLineActive","contents","formatsArr","_intersectFormats","lastLine","activeKeys","added","formatKeys","missing","28","enterCallback","escapeCallback","reference","offsetBottom","offsetLeft","offsetTop","parentBounds","referenceBounds","width","29","UndoManager","lastRecorded","ignoreChange","clear","delay","maxStack","userOnly","UNDO","REDO","redoKey","undo","redo","_transform","record","oldDelta","stack","changeDelta","change","timestamp","undoDelta","_change","_getLastChangeIndex","dest","len1","30","pkg","container1","moduleOptions","themeClass","modules","editors","themes","addModule","paste-manager","undo-manager","MODULE_INIT","POST_EVENT","registerTheme","before","moduleClass","OPTIONS","_buildParams","getModule","moduleName","setContents","setText","params","../package.json","./core/document","./core/editor","./core/format","./core/normalizer","./lib/dom","./lib/range","./themes/base","./themes/snow","31","32","BaseTheme","baseStyles","objToCss","innerStr","innerValue","innerKey","css","head","../../lib/dom","./base.styl","33","SnowTheme","pickers","extendMultiCursor","extendToolbar","COLORS","multi-cursor","bottomTriangle","topTriangle","borderTopColor","borderBottomColor","../../lib/color-picker","../../lib/picker","../base"],"mappings":"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","file":"quill.min.js","sourcesContent":["/*! Quill Editor v0.20.1\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Quill = f()}})(function(){var define,module,exports;return (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<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n/**\n * @license\n * lodash 3.9.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern include=\"difference,intersection,last,all,each,find,invoke,map,reduce,partition,bind,defer,partial,clone,extend,defaults,omit,values,isElement,isEqual,isFunction,isNumber,isObject,isString,uniqueId\" --development --output .build/lodash.js`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '3.9.3';\n\n /** Used to compose bitmasks for wrapper metadata. */\n var BIND_FLAG = 1,\n BIND_KEY_FLAG = 2,\n CURRY_BOUND_FLAG = 4,\n CURRY_FLAG = 8,\n CURRY_RIGHT_FLAG = 16,\n PARTIAL_FLAG = 32,\n PARTIAL_RIGHT_FLAG = 64,\n ARY_FLAG = 128,\n REARG_FLAG = 256;\n\n /** Used to detect when a function becomes hot. */\n var HOT_COUNT = 150,\n HOT_SPAN = 16;\n\n /** Used as the `TypeError` message for \"Functions\" methods. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g;\n\n /**\n * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).\n * In addition to special characters the forward slash is escaped to allow for\n * easier `eval` use and `Function` compilation.\n */\n var reRegExpChars = /[.*+?^${}()|[\\]\\/\\\\]/g,\n reHasRegExpChars = RegExp(reRegExpChars.source);\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect host constructors (Safari > 5). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^\\d+$/;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dateTag] = typedArrayTags[errorTag] =\n typedArrayTags[funcTag] = typedArrayTags[mapTag] =\n typedArrayTags[numberTag] = typedArrayTags[objectTag] =\n typedArrayTags[regexpTag] = typedArrayTags[setTag] =\n typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\n cloneableTags[dateTag] = cloneableTags[float32Tag] =\n cloneableTags[float64Tag] = cloneableTags[int8Tag] =\n cloneableTags[int16Tag] = cloneableTags[int32Tag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[stringTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[mapTag] = cloneableTags[setTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = objectTypes[typeof self] && self && self.Object && self;\n\n /** Detect free variable `window`. */\n var freeWindow = objectTypes[typeof window] && window && window.Object && window;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;\n\n /**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\n var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without support for binary searches.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return indexOfNaN(array, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isFunction` without support for environments\n * with incorrect `typeof` results.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n */\n function baseIsFunction(value) {\n // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n return typeof value == 'function' || false;\n }\n\n /**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n }\n\n /**\n * Gets the index at which the first occurrence of `NaN` is found in `array`.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n */\n function indexOfNaN(array, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 0 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n var other = array[index];\n if (other !== other) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\n function isObjectLike(value) {\n return !!value && typeof value == 'object';\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n if (array[index] === placeholder) {\n array[index] = PLACEHOLDER;\n result[++resIndex] = index;\n }\n }\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to detect DOM support. */\n var document = (document = root.window) ? document.document : null;\n\n /** Used to resolve the decompiled source of functions. */\n var fnToString = Function.prototype.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /**\n * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)\n * of values.\n */\n var objToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n escapeRegExp(fnToString.call(hasOwnProperty))\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Native method references. */\n var ArrayBuffer = getNative(root, 'ArrayBuffer'),\n bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),\n floor = Math.floor,\n getPrototypeOf = getNative(Object, 'getPrototypeOf'),\n Set = getNative(root, 'Set'),\n Uint8Array = getNative(root, 'Uint8Array'),\n WeakMap = getNative(root, 'WeakMap');\n\n /** Used to clone array buffers. */\n var Float64Array = (function() {\n // Safari 5 errors when using an array buffer to initialize a typed array\n // where the array buffer's `byteLength` is not a multiple of the typed\n // array's `BYTES_PER_ELEMENT`.\n try {\n var func = getNative(root, 'Float64Array'),\n result = new func(new ArrayBuffer(10), 0, 1) && func;\n } catch(e) {}\n return result || null;\n }());\n\n /* Native method references for those with the same name as other `lodash` methods. */\n var nativeCreate = getNative(Object, 'create'),\n nativeIsArray = getNative(Array, 'isArray'),\n nativeKeys = getNative(Object, 'keys'),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = getNative(Date, 'now');\n\n /** Used as references for `-Infinity` and `Infinity`. */\n var POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used as the size, in bytes, of each `Float64Array` element. */\n var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;\n\n /**\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\n * of an array-like value.\n */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit chaining.\n * Methods that operate on and return arrays, collections, and functions can\n * be chained together. Methods that return a boolean or single value will\n * automatically end the chain returning the unwrapped value. Explicit chaining\n * may be enabled using `_.chain`. The execution of chained methods is lazy,\n * that is, execution is deferred until `_#value` is implicitly or explicitly\n * called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion. Shortcut\n * fusion is an optimization that merges iteratees to avoid creating intermediate\n * arrays and reduce the number of iteratee executions.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,\n * `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,\n * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,\n * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,\n * and `where`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,\n * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,\n * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,\n * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,\n * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,\n * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,\n * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,\n * `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `method`, `methodOf`, `mixin`, `negate`, `omit`, `once`,\n * `pairs`, `partial`, `partialRight`, `partition`, `pick`, `plant`, `pluck`,\n * `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`, `rearg`,\n * `reject`, `remove`, `rest`, `restParam`, `reverse`, `set`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, `spread`,\n * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,\n * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,\n * `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `where`, `without`,\n * `wrap`, `xor`, `zip`, `zipObject`, `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,\n * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,\n * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `get`,\n * `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, `inRange`, `isArguments`,\n * `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,\n * `isFinite` `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,\n * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,\n * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lt`, `lte`,\n * `max`, `min`, `noConflict`, `noop`, `now`, `pad`, `padLeft`, `padRight`,\n * `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`,\n * `runInContext`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,\n * `sortedLastIndex`, `startCase`, `startsWith`, `sum`, `template`, `trim`,\n * `trimLeft`, `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`\n *\n * The wrapper method `sample` will return a wrapped value when `n` is provided,\n * otherwise an unwrapped value is returned.\n *\n * @name _\n * @constructor\n * @category Chain\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // returns an unwrapped value\n * wrapped.reduce(function(total, n) {\n * return total + n;\n * });\n * // => 6\n *\n * // returns a wrapped value\n * var squares = wrapped.map(function(n) {\n * return n * n;\n * });\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash() {\n // No operation performed.\n }\n\n /**\n * The function whose prototype all chaining wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\n var support = lodash.support = {};\n\n (function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if the DOM is supported.\n *\n * @memberOf _.support\n * @type boolean\n */\n try {\n support.dom = document.createDocumentFragment().nodeType === 11;\n } catch(e) {\n support.dom = false;\n }\n }(1, 0));\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = null;\n this.__dir__ = 1;\n this.__dropCount__ = 0;\n this.__filtered__ = false;\n this.__iteratees__ = null;\n this.__takeCount__ = POSITIVE_INFINITY;\n this.__views__ = null;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates a cache object to store unique values.\n *\n * @private\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var length = values ? values.length : 0;\n\n this.data = { 'hash': nativeCreate(null), 'set': new Set };\n while (length--) {\n this.push(values[length]);\n }\n }\n\n /**\n * Checks if `value` is in `cache` mimicking the return signature of\n * `_.indexOf` by returning `0` if the value is found, else `-1`.\n *\n * @private\n * @param {Object} cache The cache to search.\n * @param {*} value The value to search for.\n * @returns {number} Returns `0` if `value` is found, else `-1`.\n */\n function cacheIndexOf(cache, value) {\n var data = cache.data,\n result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];\n\n return result ? 0 : -1;\n }\n\n /**\n * Adds `value` to the cache.\n *\n * @private\n * @name push\n * @memberOf SetCache\n * @param {*} value The value to cache.\n */\n function cachePush(value) {\n var data = this.data;\n if (typeof value == 'string' || isObject(value)) {\n data.set.add(value);\n } else {\n data.hash[value] = true;\n }\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initFromArray] Specify using the first element of `array`\n * as the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initFromArray) {\n var index = -1,\n length = array.length;\n\n if (initFromArray && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assign` use.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function assignDefaults(objectValue, sourceValue) {\n return objectValue === undefined ? sourceValue : objectValue;\n }\n\n /**\n * A specialized version of `_.assign` for customizing assigned values without\n * support for argument juggling, multiple sources, and `this` binding `customizer`\n * functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n */\n function assignWith(object, source, customizer) {\n var index = -1,\n props = keys(source),\n length = props.length;\n\n while (++index < length) {\n var key = props[index],\n value = object[key],\n result = customizer(value, source[key], key, object, source);\n\n if ((result === result ? (result !== value) : (value === value)) ||\n (value === undefined && !(key in object))) {\n object[key] = result;\n }\n }\n return object;\n }\n\n /**\n * The base implementation of `_.assign` without support for argument juggling,\n * multiple sources, and `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return source == null\n ? object\n : baseCopy(source, keys(source), object);\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\n function baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `_.callback` which supports specifying the\n * number of arguments to provide to `func`.\n *\n * @private\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\n function baseCallback(func, thisArg, argCount) {\n var type = typeof func;\n if (type == 'function') {\n return thisArg === undefined\n ? func\n : bindCallback(func, thisArg, argCount);\n }\n if (func == null) {\n return identity;\n }\n if (type == 'object') {\n return baseMatches(func);\n }\n return thisArg === undefined\n ? property(func)\n : baseMatchesProperty(func, thisArg);\n }\n\n /**\n * The base implementation of `_.clone` without support for argument juggling\n * and `this` binding `customizer` functions.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The object `value` belongs to.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates clones with source counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return arrayCopy(value, result);\n }\n } else {\n var tag = objToString.call(value),\n isFunc = tag == funcTag;\n\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return baseAssign(result, value);\n }\n } else {\n return cloneableTags[tag]\n ? initCloneByTag(value, tag, isDeep)\n : (object ? value : {});\n }\n }\n // Check for circular references and return corresponding clone.\n stackA || (stackA = []);\n stackB || (stackB = []);\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == value) {\n return stackB[length];\n }\n }\n // Add the source value to the stack of traversed objects and associate it with its clone.\n stackA.push(value);\n stackB.push(result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(prototype) {\n if (isObject(prototype)) {\n object.prototype = prototype;\n var result = new object;\n object.prototype = null;\n }\n return result || {};\n };\n }());\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts an index\n * of where to slice the arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Object} args The arguments provide to `func`.\n * @returns {number} Returns the timer id.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.difference` which accepts a single array\n * of values to exclude.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values) {\n var length = array ? array.length : 0,\n result = [];\n\n if (!length) {\n return result;\n }\n var index = -1,\n indexOf = getIndexOf(),\n isCommon = indexOf == baseIndexOf,\n cache = (isCommon && values.length >= 200) ? createCache(values) : null,\n valuesLength = values.length;\n\n if (cache) {\n indexOf = cacheIndexOf;\n isCommon = false;\n values = cache;\n }\n outer:\n while (++index < length) {\n var value = array[index];\n\n if (isCommon && value === value) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === value) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (indexOf(values, value, 0) < 0) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object|string} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.every` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,\n * without support for callback shorthands and `this` binding, which iterates\n * over `collection` using the provided `eachFunc`.\n *\n * @private\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @param {boolean} [retKey] Specify returning the key of the found element\n * instead of the element itself.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFind(collection, predicate, eachFunc, retKey) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = retKey ? key : value;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with added support for restricting\n * flattening and specifying the start index.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {boolean} [isDeep] Specify a deep flatten.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, isDeep, isStrict) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (isObjectLike(value) && isArrayLike(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (isDeep) {\n // Recursively flatten arrays (susceptible to call stack limits).\n value = baseFlatten(value, isDeep, isStrict);\n }\n var valIndex = -1,\n valLength = value.length;\n\n while (++valIndex < valLength) {\n result[++resIndex] = value[valIndex];\n }\n } else if (!isStrict) {\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n }\n\n /**\n * The base implementation of `_.forOwn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `get` without support for string paths\n * and default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path of the property to get.\n * @param {string} [pathKey] The key representation of path.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path, pathKey) {\n if (object == null) {\n return;\n }\n if (pathKey !== undefined && pathKey in toObject(object)) {\n path = [pathKey];\n }\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `_.isEqual` without support for `this` binding\n * `customizer` functions.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparing values.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing objects.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA=[]] Tracks traversed `value` objects.\n * @param {Array} [stackB=[]] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = objToString.call(object);\n if (objTag == argsTag) {\n objTag = objectTag;\n } else if (objTag != objectTag) {\n objIsArr = isTypedArray(object);\n }\n }\n if (!othIsArr) {\n othTag = objToString.call(other);\n if (othTag == argsTag) {\n othTag = objectTag;\n } else if (othTag != objectTag) {\n othIsArr = isTypedArray(other);\n }\n }\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && !(objIsArr || objIsObj)) {\n return equalByTag(object, other, objTag);\n }\n if (!isLoose) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);\n }\n }\n if (!isSameTag) {\n return false;\n }\n // Assume cyclic values are equal.\n // For more information on detecting circular references see https://es5.github.io/#JO.\n stackA || (stackA = []);\n stackB || (stackB = []);\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == object) {\n return stackB[length] == other;\n }\n }\n // Add `object` and `other` to the stack of traversed objects.\n stackA.push(object);\n stackB.push(other);\n\n var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);\n\n stackA.pop();\n stackB.pop();\n\n return result;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} matchData The propery names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparing objects.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = toObject(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var result = customizer ? customizer(objValue, srcValue, key) : undefined;\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.map` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which does not clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value && (value !== undefined || (key in toObject(object)));\n };\n }\n return function(object) {\n return baseIsMatch(object, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which does not clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to compare.\n * @returns {Function} Returns the new function.\n */\n function baseMatchesProperty(path, srcValue) {\n var isArr = isArray(path),\n isCommon = isKey(path) && isStrictComparable(srcValue),\n pathKey = (path + '');\n\n path = toPath(path);\n return function(object) {\n if (object == null) {\n return false;\n }\n var key = pathKey;\n object = toObject(object);\n if ((isArr || !isCommon) && !(key in object)) {\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n if (object == null) {\n return false;\n }\n key = last(path);\n object = toObject(object);\n }\n return object[key] === srcValue\n ? (srcValue !== undefined || (key in object))\n : baseIsEqual(srcValue, object[key], undefined, true);\n };\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\n function basePropertyDeep(path) {\n var pathKey = (path + '');\n path = toPath(path);\n return function(object) {\n return baseGet(object, path, pathKey);\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight` without support\n * for callback shorthands and `this` binding, which iterates over `collection`\n * using the provided `eachFunc`.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initFromCollection Specify using the first or last element\n * of `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initFromCollection\n ? (initFromCollection = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop detection.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n start = start == null ? 0 : (+start || 0);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : (+end || 0);\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n var index = -1,\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = object[props[index]];\n }\n return result;\n }\n\n /**\n * Performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function binaryIndex(array, value, retHighest) {\n var low = 0,\n high = array ? array.length : low;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return binaryIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * This function is like `binaryIndex` except that it invokes `iteratee` for\n * `value` and each element of `array` to compute their sort ranking. The\n * iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function binaryIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array ? array.length : 0,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsUndef = value === undefined;\n\n while (low < high) {\n var mid = floor((low + high) / 2),\n computed = iteratee(array[mid]),\n isDef = computed !== undefined,\n isReflexive = computed === computed;\n\n if (valIsNaN) {\n var setLow = isReflexive || retHighest;\n } else if (valIsNull) {\n setLow = isReflexive && isDef && (retHighest || computed != null);\n } else if (valIsUndef) {\n setLow = isReflexive && (retHighest || isDef);\n } else if (computed == null) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\n function bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n }\n\n /**\n * Creates a clone of the given array buffer.\n *\n * @private\n * @param {ArrayBuffer} buffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function bufferClone(buffer) {\n return bufferSlice.call(buffer, 0);\n }\n if (!bufferSlice) {\n // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.\n bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {\n var byteLength = buffer.byteLength,\n floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,\n offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,\n result = new ArrayBuffer(byteLength);\n\n if (floatLength) {\n var view = new Float64Array(result, 0, floatLength);\n view.set(new Float64Array(buffer, 0, floatLength));\n }\n if (byteLength != offset) {\n view = new Uint8Array(result, offset);\n view.set(new Uint8Array(buffer, offset));\n }\n return result;\n };\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array|Object} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders) {\n var holdersLength = holders.length,\n argsIndex = -1,\n argsLength = nativeMax(args.length - holdersLength, 0),\n leftIndex = -1,\n leftLength = partials.length,\n result = Array(argsLength + leftLength);\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n while (argsLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array|Object} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders) {\n var holdersIndex = -1,\n holdersLength = holders.length,\n argsIndex = -1,\n argsLength = nativeMax(args.length - holdersLength, 0),\n rightIndex = -1,\n rightLength = partials.length,\n result = Array(argsLength + rightLength);\n\n while (++argsIndex < argsLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * Creates a function that aggregates a collection, creating an accumulator\n * object composed from the results of running each element in the collection\n * through an iteratee.\n *\n * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`,\n * and `_.partition`.\n *\n * @private\n * @param {Function} setter The function to set keys and values of the accumulator object.\n * @param {Function} [initializer] The function to initialize the accumulator object.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee, thisArg) {\n var result = initializer ? initializer() : {};\n iteratee = getCallback(iteratee, thisArg, 3);\n\n if (isArray(collection)) {\n var index = -1,\n length = collection.length;\n\n while (++index < length) {\n var value = collection[index];\n setter(result, value, iteratee(value, index, collection), collection);\n }\n } else {\n baseEach(collection, function(value, key, collection) {\n setter(result, value, iteratee(value, key, collection), collection);\n });\n }\n return result;\n };\n }\n\n /**\n * Creates a function that assigns properties of source object(s) to a given\n * destination object.\n *\n * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n var length = collection ? getLength(collection) : 0;\n if (!isLength(length)) {\n return eachFunc(collection, iteratee);\n }\n var index = fromRight ? length : -1,\n iterable = toObject(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with the `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new bound function.\n */\n function createBindWrapper(func, thisArg) {\n var Ctor = createCtorWrapper(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(thisArg, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a `Set` cache object to optimize linear searches of large arrays.\n *\n * @private\n * @param {Array} [values] The values to cache.\n * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.\n */\n var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {\n return new SetCache(values);\n };\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtorWrapper(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors.\n // See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new find function.\n */\n function createFind(eachFunc, fromRight) {\n return function(collection, predicate, thisArg) {\n predicate = getCallback(predicate, thisArg, 3);\n if (isArray(collection)) {\n var index = baseFindIndex(collection, predicate, fromRight);\n return index > -1 ? collection[index] : undefined;\n }\n return baseFind(collection, predicate, eachFunc);\n };\n }\n\n /**\n * Creates a function for `_.forEach` or `_.forEachRight`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over an array.\n * @param {Function} eachFunc The function to iterate over a collection.\n * @returns {Function} Returns the new each function.\n */\n function createForEach(arrayFunc, eachFunc) {\n return function(collection, iteratee, thisArg) {\n return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n ? arrayFunc(collection, iteratee)\n : eachFunc(collection, bindCallback(iteratee, thisArg, 3));\n };\n }\n\n /**\n * Creates a `_.partial` or `_.partialRight` function.\n *\n * @private\n * @param {boolean} flag The partial bit flag.\n * @returns {Function} Returns the new partial function.\n */\n function createPartial(flag) {\n var partialFunc = restParam(function(func, partials) {\n var holders = replaceHolders(partials, partialFunc.placeholder);\n return createWrapper(func, flag, null, partials, holders);\n });\n return partialFunc;\n }\n\n /**\n * Creates a function for `_.reduce` or `_.reduceRight`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over an array.\n * @param {Function} eachFunc The function to iterate over a collection.\n * @returns {Function} Returns the new each function.\n */\n function createReduce(arrayFunc, eachFunc) {\n return function(collection, iteratee, accumulator, thisArg) {\n var initFromArray = arguments.length < 3;\n return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n ? arrayFunc(collection, iteratee, accumulator, initFromArray)\n : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);\n };\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with optional `this`\n * binding of, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & ARY_FLAG,\n isBind = bitmask & BIND_FLAG,\n isBindKey = bitmask & BIND_KEY_FLAG,\n isCurry = bitmask & CURRY_FLAG,\n isCurryBound = bitmask & CURRY_BOUND_FLAG,\n isCurryRight = bitmask & CURRY_RIGHT_FLAG,\n Ctor = isBindKey ? null : createCtorWrapper(func);\n\n function wrapper() {\n // Avoid `arguments` object use disqualifying optimizations by\n // converting it to an array before providing it to other functions.\n var length = arguments.length,\n index = length,\n args = Array(length);\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (partials) {\n args = composeArgs(args, partials, holders);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight);\n }\n if (isCurry || isCurryRight) {\n var placeholder = wrapper.placeholder,\n argsHolders = replaceHolders(args, placeholder);\n\n length -= argsHolders.length;\n if (length < arity) {\n var newArgPos = argPos ? arrayCopy(argPos) : null,\n newArity = nativeMax(arity - length, 0),\n newsHolders = isCurry ? argsHolders : null,\n newHoldersRight = isCurry ? null : argsHolders,\n newPartials = isCurry ? args : null,\n newPartialsRight = isCurry ? null : args;\n\n bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n if (!isCurryBound) {\n bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n }\n var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],\n result = createHybridWrapper.apply(undefined, newData);\n\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return result;\n }\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n if (argPos) {\n args = reorder(args, argPos);\n }\n if (isAry && ary < args.length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtorWrapper(func);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with the optional `this`\n * binding of `thisArg` and the `partials` prepended to those provided to\n * the wrapper.\n *\n * @private\n * @param {Function} func The function to partially apply arguments to.\n * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to the new function.\n * @returns {Function} Returns the new bound function.\n */\n function createPartialWrapper(func, bitmask, thisArg, partials) {\n var isBind = bitmask & BIND_FLAG,\n Ctor = createCtorWrapper(func);\n\n function wrapper() {\n // Avoid `arguments` object use disqualifying optimizations by\n // converting it to an array before providing it `func`.\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(argsLength + leftLength);\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of flags.\n * The bitmask may be composed of the following flags:\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n partials = holders = null;\n }\n length -= (holders ? holders.length : 0);\n if (bitmask & PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = null;\n }\n var data = isBindKey ? null : getData(func),\n newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n\n if (data) {\n mergeData(newData, data);\n bitmask = newData[1];\n arity = newData[9];\n }\n newData[9] = arity == null\n ? (isBindKey ? 0 : func.length)\n : (nativeMax(arity - length, 0) || 0);\n\n if (bitmask == BIND_FLAG) {\n var result = createBindWrapper(newData[0], newData[2]);\n } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {\n result = createPartialWrapper.apply(undefined, newData);\n } else {\n result = createHybridWrapper.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setter(result, newData);\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing arrays.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var index = -1,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isLoose && othLength > arrLength)) {\n return false;\n }\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index],\n result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;\n\n if (result !== undefined) {\n if (result) {\n continue;\n }\n return false;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isLoose) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);\n })) {\n return false;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} value The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag) {\n switch (tag) {\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object)\n ? other != +other\n : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing values.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isLoose) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n var skipCtor = isLoose;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key],\n result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;\n\n // Recursively compare objects (susceptible to call stack limits).\n if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {\n return false;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (!skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Gets the appropriate \"callback\" function. If the `_.callback` method is\n * customized this function returns the custom method, otherwise it returns\n * the `baseCallback` function. If arguments are provided the chosen function\n * is invoked with them and its result is returned.\n *\n * @private\n * @returns {Function} Returns the chosen function or its result.\n */\n function getCallback(func, thisArg, argCount) {\n var result = lodash.callback || callback;\n result = result === callback ? baseCallback : result;\n return argCount ? result(func, thisArg, argCount) : result;\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = func.name,\n array = realNames[result],\n length = array ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the appropriate \"indexOf\" function. If the `_.indexOf` method is\n * customized this function returns the custom method, otherwise it returns\n * the `baseIndexOf` function. If arguments are provided the chosen function\n * is invoked with them and its result is returned.\n *\n * @private\n * @returns {Function|number} Returns the chosen function or its result.\n */\n function getIndexOf(collection, target, fromIndex) {\n var result = lodash.indexOf || indexOf;\n result = result === indexOf ? baseIndexOf : result;\n return collection ? result(collection, target, fromIndex) : result;\n }\n\n /**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\n var getLength = baseProperty('length');\n\n /**\n * Gets the propery names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = pairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add array properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n var Ctor = object.constructor;\n if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {\n Ctor = Object;\n }\n return new Ctor;\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return bufferClone(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n var buffer = object.buffer;\n return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n var result = new Ctor(object.source, reFlags.exec(object));\n result.lastIndex = object.lastIndex;\n }\n return result;\n }\n\n /**\n * Invokes the method at `path` on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function invokePath(object, path, args) {\n if (object != null && !isKey(path, object)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n path = last(path);\n }\n var func = object == null ? object : object[path];\n return func == null ? undefined : func.apply(object, args);\n }\n\n /**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\n function isArrayLike(value) {\n return value != null && isLength(getLength(value));\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n var type = typeof value;\n if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {\n return true;\n }\n if (isArray(value)) {\n return false;\n }\n var result = !reIsDeepProp.test(value);\n return result || (object != null && value in toObject(object));\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func);\n if (!(funcName in LazyWrapper.prototype)) {\n return false;\n }\n var other = lodash[funcName];\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers required to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`\n * augment function arguments, making the order in which they are executed important,\n * preventing the merging of metadata. However, we make an exception for a safe\n * common case where curried functions have `_.ary` and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < ARY_FLAG;\n\n var isCombo =\n (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||\n (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||\n (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = arrayCopy(value);\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * A specialized version of `_.pick` which picks `object` properties specified\n * by `props`.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\n function pickByArray(object, props) {\n object = toObject(object);\n\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index];\n if (key in object) {\n result[key] = object[key];\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.pick` which picks `object` properties `predicate`\n * returns truthy for.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Object} Returns the new object.\n */\n function pickByCallback(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key, object) {\n if (predicate(value, key, object)) {\n result[key] = value;\n }\n });\n return result;\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = arrayCopy(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity function\n * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = (function() {\n var count = 0,\n lastCalled = 0;\n\n return function(key, value) {\n var stamp = now(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return key;\n }\n } else {\n count = 0;\n }\n return baseSetData(key, value);\n };\n }());\n\n /**\n * A fallback implementation of `_.isPlainObject` which checks if `value`\n * is an object created by the `Object` constructor or has a `[[Prototype]]`\n * of `null`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\n function shimIsPlainObject(value) {\n var Ctor,\n support = lodash.support;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag) ||\n (!hasOwnProperty.call(value, 'constructor') &&\n (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n }\n\n /**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\n function toObject(value) {\n return isObject(value) ? value : Object(value);\n }\n\n /**\n * Converts `value` to property path array if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Array} Returns the property path array.\n */\n function toPath(value) {\n if (isArray(value)) {\n return value;\n }\n var result = [];\n baseToString(value).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of unique `array` values not included in the other\n * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The arrays of values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.difference([1, 2, 3], [4, 2]);\n * // => [1, 3]\n */\n var difference = restParam(function(array, values) {\n return isArrayLike(array)\n ? baseDifference(array, baseFlatten(values, false, true))\n : [];\n });\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`\n * performs a faster binary search.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {boolean|number} [fromIndex=0] The index to search from or `true`\n * to perform a binary search on a sorted array.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // using `fromIndex`\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n *\n * // performing a binary search\n * _.indexOf([1, 1, 2, 2], 2, true);\n * // => 2\n */\n function indexOf(array, value, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else if (fromIndex) {\n var index = binaryIndex(array, value),\n other = array[index];\n\n if (value === value ? (value === other) : (other !== other)) {\n return index;\n }\n return -1;\n }\n return baseIndexOf(array, value, fromIndex || 0);\n }\n\n /**\n * Creates an array of unique values that are included in all of the provided\n * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of shared values.\n * @example\n * _.intersection([1, 2], [4, 2], [2, 1]);\n * // => [2]\n */\n var intersection = restParam(function(arrays) {\n var othLength = arrays.length,\n othIndex = othLength,\n caches = Array(length),\n indexOf = getIndexOf(),\n isCommon = indexOf == baseIndexOf,\n result = [];\n\n while (othIndex--) {\n var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];\n caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;\n }\n var array = arrays[0],\n index = -1,\n length = array ? array.length : 0,\n seen = caches[0];\n\n outer:\n while (++index < length) {\n value = array[index];\n if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {\n var othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(value);\n }\n result.push(value);\n }\n }\n return result;\n });\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * The predicate is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias all\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.every(users, 'active', false);\n * // => true\n *\n * // using the `_.property` callback shorthand\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n predicate = null;\n }\n if (typeof predicate != 'function' || thisArg !== undefined) {\n predicate = getCallback(predicate, thisArg, 3);\n }\n return func(collection, predicate);\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias detect\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.result(_.find(users, function(chr) {\n * return chr.age < 40;\n * }), 'user');\n * // => 'barney'\n *\n * // using the `_.matches` callback shorthand\n * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');\n * // => 'pebbles'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.result(_.find(users, 'active', false), 'user');\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.result(_.find(users, 'active'), 'user');\n * // => 'barney'\n */\n var find = createFind(baseEach);\n\n /**\n * Iterates over elements of `collection` invoking `iteratee` for each element.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection). Iteratee functions may exit iteration early\n * by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\" property\n * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n * may be used for object iteration.\n *\n * @static\n * @memberOf _\n * @alias each\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2]).forEach(function(n) {\n * console.log(n);\n * }).value();\n * // => logs each value from left to right and returns the array\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {\n * console.log(n, key);\n * });\n * // => logs each value-key pair and returns the object (iteration order is not guaranteed)\n */\n var forEach = createForEach(arrayEach, baseEach);\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `methodName` is a function it is\n * invoked for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invoke([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invoke = restParam(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n isProp = isKey(path),\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n var func = isFunc ? path : ((isProp && value != null) ? value[path] : null);\n result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an array of values by running each element in `collection` through\n * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three\n * arguments: (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,\n * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,\n * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,\n * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,\n * `sum`, `uniq`, and `words`\n *\n * @static\n * @memberOf _\n * @alias collect\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function timesThree(n) {\n * return n * 3;\n * }\n *\n * _.map([1, 2], timesThree);\n * // => [3, 6]\n *\n * _.map({ 'a': 1, 'b': 2 }, timesThree);\n * // => [3, 6] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // using the `_.property` callback shorthand\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee, thisArg) {\n var func = isArray(collection) ? arrayMap : baseMap;\n iteratee = getCallback(iteratee, thisArg, 3);\n return func(collection, iteratee);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, while the second of which\n * contains elements `predicate` returns falsey for. The predicate is bound\n * to `thisArg` and invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * _.partition([1, 2, 3], function(n) {\n * return n % 2;\n * });\n * // => [[1, 3], [2]]\n *\n * _.partition([1.2, 2.3, 3.4], function(n) {\n * return this.floor(n) % 2;\n * }, Math);\n * // => [[1.2, 3.4], [2.3]]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * var mapper = function(array) {\n * return _.pluck(array, 'user');\n * };\n *\n * // using the `_.matches` callback shorthand\n * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);\n * // => [['pebbles'], ['barney', 'fred']]\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.map(_.partition(users, 'active', false), mapper);\n * // => [['barney', 'pebbles'], ['fred']]\n *\n * // using the `_.property` callback shorthand\n * _.map(_.partition(users, 'active'), mapper);\n * // => [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` through `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not provided the first element of `collection` is used as the initial\n * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`\n *\n * @static\n * @memberOf _\n * @alias foldl, inject\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.reduce([1, 2], function(total, n) {\n * return total + n;\n * });\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {\n * result[key] = n * 3;\n * return result;\n * }, {});\n * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)\n */\n var reduce = createReduce(arrayReduce, baseEach);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\n var now = nativeNow || function() {\n return new Date().getTime();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and prepends any additional `_.bind` arguments to those provided to the\n * bound function.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind` this method does not set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var greet = function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * };\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // using placeholders\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = restParam(function(func, thisArg, partials) {\n var bitmask = BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, bind.placeholder);\n bitmask |= PARTIAL_FLAG;\n }\n return createWrapper(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it is invoked.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke the function with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // logs 'deferred' after one or more milliseconds\n */\n var defer = restParam(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Creates a function that invokes `func` with `partial` arguments prepended\n * to those provided to the new function. This method is like `_.bind` except\n * it does **not** alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method does not set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * var greet = function(greeting, name) {\n * return greeting + ' ' + name;\n * };\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // using placeholders\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = createPartial(PARTIAL_FLAG);\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,\n * otherwise they are assigned by reference. If `customizer` is provided it is\n * invoked to produce the cloned values. If `customizer` returns `undefined`\n * cloning is handled by the method instead. The `customizer` is bound to\n * `thisArg` and invoked with two argument; (value [, index|key, object]).\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n * The enumerable properties of `arguments` objects and objects created by\n * constructors other than `Object` are cloned to plain `Object` objects. An\n * empty object is returned for uncloneable values such as functions, DOM nodes,\n * Maps, Sets, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {*} Returns the cloned value.\n * @example\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * var shallow = _.clone(users);\n * shallow[0] === users[0];\n * // => true\n *\n * var deep = _.clone(users, true);\n * deep[0] === users[0];\n * // => false\n *\n * // using a customizer callback\n * var el = _.clone(document.body, function(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * });\n *\n * el === document.body\n * // => false\n * el.nodeName\n * // => BODY\n * el.childNodes.length;\n * // => 0\n */\n function clone(value, isDeep, customizer, thisArg) {\n if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {\n isDeep = false;\n }\n else if (typeof isDeep == 'function') {\n thisArg = customizer;\n customizer = isDeep;\n isDeep = false;\n }\n return typeof customizer == 'function'\n ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))\n : baseClone(value, isDeep);\n }\n\n /**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\n var isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n };\n\n /**\n * Checks if `value` is a DOM element.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return !!value && value.nodeType === 1 && isObjectLike(value) &&\n (objToString.call(value).indexOf('Element') > -1);\n }\n // Fallback for environments without DOM support.\n if (!support.dom) {\n isElement = function(value) {\n return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);\n };\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent. If `customizer` is provided it is invoked to compare values.\n * If `customizer` returns `undefined` comparisons are handled by the method\n * instead. The `customizer` is bound to `thisArg` and invoked with three\n * arguments: (value, other [, index|key]).\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. Functions and DOM nodes\n * are **not** supported. Provide a customizer function to extend support\n * for comparing other values.\n *\n * @static\n * @memberOf _\n * @alias eq\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize value comparisons.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * object == other;\n * // => false\n *\n * _.isEqual(object, other);\n * // => true\n *\n * // using a customizer callback\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqual(array, other, function(value, other) {\n * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {\n * return true;\n * }\n * });\n * // => true\n */\n function isEqual(value, other, customizer, thisArg) {\n customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return objToString.call(value) == funcTag;\n };\n\n /**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\n function isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (value == null) {\n return false;\n }\n if (objToString.call(value) == funcTag) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(8.4);\n * // => true\n *\n * _.isNumber(NaN);\n * // => true\n *\n * _.isNumber('8.4');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n if (!(value && objToString.call(value) == objectTag)) {\n return false;\n }\n var valueOf = getNative(value, 'valueOf'),\n objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\n return objProto\n ? (value == objProto || getPrototypeOf(value) == objProto)\n : shimIsPlainObject(value);\n };\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n function isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object. Subsequent sources overwrite property assignments of previous sources.\n * If `customizer` is provided it is invoked to produce the assigned values.\n * The `customizer` is bound to `thisArg` and invoked with five arguments:\n * (objectValue, sourceValue, key, object, source).\n *\n * **Note:** This method mutates `object` and is based on\n * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).\n *\n * @static\n * @memberOf _\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n * // => { 'user': 'fred', 'age': 40 }\n *\n * // using a customizer callback\n * var defaults = _.partialRight(_.assign, function(value, other) {\n * return _.isUndefined(value) ? other : value;\n * });\n *\n * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\n var assign = createAssigner(function(object, source, customizer) {\n return customizer\n ? assignWith(object, source, customizer)\n : baseAssign(object, source);\n });\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object for all destination properties that resolve to `undefined`. Once a\n * property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\n var defaults = restParam(function(args) {\n var object = args[0];\n if (object == null) {\n return object;\n }\n args.push(assignDefaults);\n return assign.apply(undefined, args);\n });\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n var keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? null : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object != 'function' && isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n };\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable properties of `object` that are not omitted.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|...(string|string[])} [predicate] The function invoked per\n * iteration or property names to omit, specified as individual property\n * names or arrays of property names.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.omit(object, 'age');\n * // => { 'user': 'fred' }\n *\n * _.omit(object, _.isNumber);\n * // => { 'user': 'fred' }\n */\n var omit = restParam(function(object, props) {\n if (object == null) {\n return {};\n }\n if (typeof props[0] != 'function') {\n var props = arrayMap(baseFlatten(props), String);\n return pickByArray(object, baseDifference(keysIn(object), props));\n }\n var predicate = bindCallback(props[0], props[1], 3);\n return pickByCallback(object, function(value, key, object) {\n return !predicate(value, key, object);\n });\n });\n\n /**\n * Creates a two dimensional array of the key-value pairs for `object`,\n * e.g. `[[key1, value1], [key2, value2]]`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * _.pairs({ 'barney': 36, 'fred': 40 });\n * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)\n */\n function pairs(object) {\n object = toObject(object);\n\n var index = -1,\n props = keys(object),\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n var key = props[index];\n result[index] = [key, object[key]];\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return baseValues(object, keys(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n */\n function escapeRegExp(string) {\n string = baseToString(string);\n return (string && reHasRegExpChars.test(string))\n ? string.replace(reRegExpChars, '\\\\$&')\n : string;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and arguments of the created function. If `func` is a property name the\n * created callback returns the property value for a given element. If `func`\n * is an object the created callback returns `true` for elements that contain\n * the equivalent object properties, otherwise it returns `false`.\n *\n * @static\n * @memberOf _\n * @alias iteratee\n * @category Utility\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // wrap to create custom callback shorthands\n * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {\n * var match = /^(.+?)__([gl]t)(.+)$/.exec(func);\n * if (!match) {\n * return callback(func, thisArg);\n * }\n * return function(object) {\n * return match[2] == 'gt'\n * ? object[match[1]] > match[3]\n * : object[match[1]] < match[3];\n * };\n * });\n *\n * _.filter(users, 'age__gt36');\n * // => [{ 'user': 'fred', 'age': 40 }]\n */\n function callback(func, thisArg, guard) {\n if (guard && isIterateeCall(func, thisArg, guard)) {\n thisArg = null;\n }\n return isObjectLike(func)\n ? matches(func)\n : baseCallback(func, thisArg);\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var getter = _.constant(object);\n *\n * getter() === object;\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that performs a deep comparison between a given object\n * and `source`, returning `true` if the given object has equivalent property\n * values, else `false`.\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. For comparing a single\n * own or inherited property value see `_.matchesProperty`.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, _.matches({ 'age': 40, 'active': false }));\n * // => [{ 'user': 'fred', 'age': 40, 'active': false }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, true));\n }\n\n /**\n * A no-operation function that returns `undefined` regardless of the\n * arguments it receives.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.noop(object) === undefined;\n * // => true\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that returns the property value at `path` on a\n * given object.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': { 'c': 2 } } },\n * { 'a': { 'b': { 'c': 1 } } }\n * ];\n *\n * _.map(objects, _.property('a.b.c'));\n * // => [2, 1]\n *\n * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(path) : basePropertyDeep(path);\n }\n\n /**\n * Generates a unique ID. If `prefix` is provided the ID is appended to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {string} [prefix] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return baseToString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n // Add functions to the `Set` cache.\n SetCache.prototype.push = cachePush;\n\n // Add functions that return wrapped values when chaining.\n lodash.assign = assign;\n lodash.bind = bind;\n lodash.callback = callback;\n lodash.constant = constant;\n lodash.defaults = defaults;\n lodash.defer = defer;\n lodash.difference = difference;\n lodash.forEach = forEach;\n lodash.intersection = intersection;\n lodash.invoke = invoke;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.matches = matches;\n lodash.omit = omit;\n lodash.pairs = pairs;\n lodash.partial = partial;\n lodash.partition = partition;\n lodash.property = property;\n lodash.restParam = restParam;\n lodash.values = values;\n\n // Add aliases.\n lodash.collect = map;\n lodash.each = forEach;\n lodash.extend = assign;\n lodash.iteratee = callback;\n\n /*------------------------------------------------------------------------*/\n\n // Add functions that return unwrapped values when chaining.\n lodash.clone = clone;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.identity = identity;\n lodash.indexOf = indexOf;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isElement = isElement;\n lodash.isEqual = isEqual;\n lodash.isFunction = isFunction;\n lodash.isNative = isNative;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isPlainObject = isPlainObject;\n lodash.isString = isString;\n lodash.isTypedArray = isTypedArray;\n lodash.last = last;\n lodash.noop = noop;\n lodash.now = now;\n lodash.reduce = reduce;\n lodash.uniqueId = uniqueId;\n\n // Add aliases.\n lodash.all = every;\n lodash.eq = isEqual;\n lodash.detect = find;\n lodash.foldl = reduce;\n lodash.inject = reduce;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type string\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'partial'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Some AMD build optimizers like r.js check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose lodash to the global object when an AMD loader is present to avoid\n // errors in cases where lodash is loaded by a script tag and not intended\n // as an AMD module. See http://requirejs.org/docs/errors.html#mismatch for\n // more details.\n root._ = lodash;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return lodash;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for Node.js or RingoJS.\n if (moduleExports) {\n (freeModule.exports = lodash)._ = lodash;\n }\n // Export for Rhino with CommonJS support.\n else {\n freeExports._ = lodash;\n }\n }\n else {\n // Export for a browser or Rhino.\n root._ = lodash;\n }\n}.call(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n conf.maxListeners && (this._events.maxListeners = conf.maxListeners);\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this.newListener = conf.newListener);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this.newListener = false;\n configure.call(this, conf);\n }\n\n //\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i) {\n if (!tree) {\n return [];\n }\n var listeners=[], leaf, len, branch, xTree, xxTree, isolatedBranch, endReached,\n typeLength = type.length, currentType = type[i], nextType = type[i+1];\n if (i === typeLength && tree._listeners) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n return [tree];\n } else {\n for (leaf = 0, len = tree._listeners.length; leaf < len; leaf++) {\n handlers && handlers.push(tree._listeners[leaf]);\n }\n return [tree];\n }\n }\n\n if ((currentType === '*' || currentType === '**') || tree[currentType]) {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n if (currentType === '*') {\n for (branch in tree) {\n if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i+1));\n }\n }\n return listeners;\n } else if(currentType === '**') {\n endReached = (i+1 === typeLength || (i+2 === typeLength && nextType === '*'));\n if(endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = listeners.concat(searchListenerTree(handlers, type, tree, typeLength));\n }\n\n for (branch in tree) {\n if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {\n if(branch === '*' || branch === '**') {\n if(tree[branch]._listeners && !endReached) {\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], typeLength));\n }\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i));\n } else if(branch === nextType) {\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i+2));\n } else {\n // No match on this one, shift into the tree but not in the type array.\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i));\n }\n }\n }\n return listeners;\n }\n\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[currentType], i+1));\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i+1);\n }\n\n xxTree = tree['**'];\n if(xxTree) {\n if(i < typeLength) {\n if(xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n for(branch in xxTree) {\n if(branch !== '_listeners' && xxTree.hasOwnProperty(branch)) {\n if(branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i+2);\n } else if(branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i+1);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, { '**': isolatedBranch }, i+1);\n }\n }\n }\n } else if(xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength);\n } else if(xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener) {\n\n type = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n for(var i = 0, len = type.length; i+1 < len; i++) {\n if(type[i] === '**' && type[i+1] === '**') {\n return;\n }\n }\n\n var tree = this.listenerTree;\n var name = type.shift();\n\n while (name) {\n\n if (!tree[name]) {\n tree[name] = {};\n }\n\n tree = tree[name];\n\n if (type.length === 0) {\n\n if (!tree._listeners) {\n tree._listeners = listener;\n }\n else if(typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners, listener];\n }\n else if (isArray(tree._listeners)) {\n\n tree._listeners.push(listener);\n\n if (!tree._listeners.warned) {\n\n var m = defaultMaxListeners;\n\n if (typeof this._events.maxListeners !== 'undefined') {\n m = this._events.maxListeners;\n }\n\n if (m > 0 && tree._listeners.length > m) {\n\n tree._listeners.warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n tree._listeners.length);\n console.trace();\n }\n }\n }\n return true;\n }\n name = type.shift();\n }\n return true;\n }\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n this._events || init.call(this);\n this._events.maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn) {\n this.many(event, 1, fn);\n return this;\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n this.on(event, listener);\n\n return self;\n };\n\n EventEmitter.prototype.emit = function() {\n\n this._events || init.call(this);\n\n var type = arguments[0];\n\n if (type === 'newListener' && !this.newListener) {\n if (!this._events.newListener) { return false; }\n }\n\n // Loop through the *_all* functions and invoke them.\n if (this._all) {\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) args[i - 1] = arguments[i];\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n this._all[i].apply(this, args);\n }\n }\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n\n if (!this._all &&\n !this._events.error &&\n !(this.wildcard && this.listenerTree.error)) {\n\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n return false;\n }\n }\n\n var handler;\n\n if(this.wildcard) {\n handler = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n }\n else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n if (arguments.length === 1) {\n handler.call(this);\n }\n else if (arguments.length > 1)\n switch (arguments.length) {\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) args[i - 1] = arguments[i];\n handler.apply(this, args);\n }\n return true;\n }\n else if (handler) {\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) args[i - 1] = arguments[i];\n\n var listeners = handler.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n this.event = type;\n listeners[i].apply(this, args);\n }\n return (listeners.length > 0) || !!this._all;\n }\n else {\n return !!this._all;\n }\n\n };\n\n EventEmitter.prototype.on = function(type, listener) {\n\n if (typeof type === 'function') {\n this.onAny(type);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n this.emit('newListener', type, listener);\n\n if(this.wildcard) {\n growListenerTree.call(this, type, listener);\n return this;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n }\n else if(typeof this._events[type] === 'function') {\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n }\n else if (isArray(this._events[type])) {\n // If we've already got an array, just append.\n this._events[type].push(listener);\n\n // Check for listener leak\n if (!this._events[type].warned) {\n\n var m = defaultMaxListeners;\n\n if (typeof this._events.maxListeners !== 'undefined') {\n m = this._events.maxListeners;\n }\n\n if (m > 0 && this._events[type].length > m) {\n\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n console.trace();\n }\n }\n }\n return this;\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if(!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n this._all.push(fn);\n return this;\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n }\n else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n }\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n return this;\n }\n }\n } else {\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function(type) {\n if (arguments.length === 0) {\n !this._events || init.call(this);\n return this;\n }\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n var leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n leaf._listeners = null;\n }\n }\n else {\n if (!this._events[type]) return this;\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function(type) {\n if(this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers;\n }\n\n this._events || init.call(this);\n\n if (!this._events[type]) this._events[type] = [];\n if (!isArray(this._events[type])) {\n this._events[type] = [this._events[type]];\n }\n return this._events[type];\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n exports.EventEmitter2 = EventEmitter;\n }\n else {\n // Browser global.\n window.EventEmitter2 = EventEmitter;\n }\n}();\n\n},{}],3:[function(_dereq_,module,exports){\nvar diff = _dereq_('fast-diff');\nvar is = _dereq_('./is');\nvar op = _dereq_('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (is.array(ops)) {\n this.ops = ops;\n } else if (is.object(ops) && is.array(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (is.object(attributes) && Object.keys(attributes).length > 0) newOp.attributes = attributes;\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (is.object(attributes) && Object.keys(attributes).length > 0) newOp.attributes = attributes;\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = op.clone(newOp);\n if (is.object(lastOp)) {\n if (is.number(newOp['delete']) && is.number(lastOp['delete'])) {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (is.number(lastOp['delete']) && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (!is.object(lastOp)) {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (is.equal(newOp.attributes, lastOp.attributes)) {\n if (is.string(newOp.insert) && is.string(lastOp.insert)) {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (is.object(newOp.attributes)) this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (is.number(newOp.retain) && is.number(lastOp.retain)) {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (is.object(newOp.attributes)) this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.length = function () {\n return this.ops.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (!is.number(end)) end = Infinity;\n var delta = new Delta();\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n delta.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return delta;\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (is.number(otherOp.retain)) {\n var newOp = {};\n if (is.number(thisOp.retain)) {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, is.number(thisOp.retain));\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (is.number(otherOp['delete']) && is.number(thisOp.retain)) {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = this.slice();\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other) {\n var delta = new Delta();\n if (this.ops === other.ops) {\n return delta;\n }\n var strings = [this.ops, other.ops].map(function (ops) {\n return ops.map(function (op) {\n if (op.insert != null) {\n return is.string(op.insert) ? op.insert : NULL_CHARACTER;\n }\n var prep = (ops === other.ops) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var diffResult = diff(strings[0], strings[1]);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (is.equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (is.number(other)) {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n},{\"./is\":4,\"./op\":5,\"fast-diff\":6}],4:[function(_dereq_,module,exports){\nmodule.exports = {\n equal: function (a, b) {\n if (a === b) return true;\n if (a == null && b == null) return true;\n if (a == null || b == null) return false;\n if (!this.object(a) || !this.object(b)) return false;\n if (Object.keys(a).length != Object.keys(b).length) return false;\n for(var key in a) {\n // Only compare one level deep\n if (a[key] !== b[key]) return false;\n }\n return true;\n },\n\n array: function (value) {\n return Array.isArray(value);\n },\n\n number: function (value) {\n if (typeof value === 'number') return true;\n if (typeof value === 'object' && Object.prototype.toString.call(value) === '[object Number]') return true;\n return false;\n },\n\n object: function (value) {\n if (!value) return false;\n return (typeof value === 'function' || typeof value === 'object');\n },\n\n string: function (value) {\n if (typeof value === 'string') return true;\n if (typeof value === 'object' && Object.prototype.toString.call(value) === '[object String]') return true;\n return false;\n }\n};\n\n},{}],5:[function(_dereq_,module,exports){\nvar is = _dereq_('./is');\n\n\nvar lib = {\n attributes: {\n clone: function (attributes, keepNull) {\n if (!is.object(attributes)) return {};\n return Object.keys(attributes).reduce(function (memo, key) {\n if (attributes[key] !== undefined && (attributes[key] !== null || keepNull)) {\n memo[key] = attributes[key];\n }\n return memo;\n }, {});\n },\n\n compose: function (a, b, keepNull) {\n if (!is.object(a)) a = {};\n if (!is.object(b)) b = {};\n var attributes = this.clone(b, keepNull);\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (!is.object(a)) a = {};\n if (!is.object(b)) b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (a[key] !== b[key]) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (!is.object(a)) return b;\n if (!is.object(b)) return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n clone: function (op) {\n var newOp = this.attributes.clone(op);\n if (is.object(newOp.attributes)) {\n newOp.attributes = this.attributes.clone(newOp.attributes, true);\n }\n return newOp;\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (is.number(op['delete'])) {\n return op['delete'];\n } else if (is.number(op.retain)) {\n return op.retain;\n } else {\n return is.string(op.insert) ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (is.number(nextOp['delete'])) {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (is.number(nextOp.retain)) {\n retOp.retain = length;\n } else if (is.string(nextOp.insert)) {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (is.number(this.ops[this.index]['delete'])) {\n return 'delete';\n } else if (is.number(this.ops[this.index].retain)) {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\n\nmodule.exports = lib;\n\n},{\"./is\":4}],6:[function(_dereq_,module,exports){\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\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\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\n\nmodule.exports = diff;\n\n},{}],7:[function(_dereq_,module,exports){\nmodule.exports={\"version\":\"0.20.1\"}\n},{}],8:[function(_dereq_,module,exports){\nvar Delta, Document, Format, Line, LinkedList, Normalizer, _, dom;\n\n_ = _dereq_('lodash');\n\nDelta = _dereq_('rich-text/lib/delta');\n\ndom = _dereq_('../lib/dom');\n\nFormat = _dereq_('./format');\n\nLine = _dereq_('./line');\n\nLinkedList = _dereq_('../lib/linked-list');\n\nNormalizer = _dereq_('./normalizer');\n\nDocument = (function() {\n function Document(root, options) {\n this.root = root;\n if (options == null) {\n options = {};\n }\n this.normalizer = new Normalizer();\n this.formats = {};\n _.each(options.formats, _.bind(this.addFormat, this));\n this.setHTML(this.root.innerHTML);\n }\n\n Document.prototype.addFormat = function(name, config) {\n if (!_.isObject(config)) {\n config = Format.FORMATS[name];\n }\n if (this.formats[name] != null) {\n console.warn('Overwriting format', name, this.formats[name]);\n }\n this.formats[name] = new Format(config);\n return this.normalizer.addFormat(config);\n };\n\n Document.prototype.appendLine = function(lineNode) {\n return this.insertLineBefore(lineNode, null);\n };\n\n Document.prototype.findLeafAt = function(index, inclusive) {\n var line, offset, ref;\n ref = this.findLineAt(index), line = ref[0], offset = ref[1];\n if (line != null) {\n return line.findLeafAt(offset, inclusive);\n } else {\n return [void 0, offset];\n }\n };\n\n Document.prototype.findLine = function(node) {\n var line;\n while ((node != null) && (dom.BLOCK_TAGS[node.tagName] == null)) {\n node = node.parentNode;\n }\n line = node != null ? dom(node).data(Line.DATA_KEY) : void 0;\n if ((line != null ? line.node : void 0) === node) {\n return line;\n } else {\n return void 0;\n }\n };\n\n Document.prototype.findLineAt = function(index) {\n var curLine, length;\n if (!(this.lines.length > 0)) {\n return [void 0, index];\n }\n length = this.toDelta().length();\n if (index === length) {\n return [this.lines.last, this.lines.last.length];\n }\n if (index > length) {\n return [void 0, index - length];\n }\n curLine = this.lines.first;\n while (curLine != null) {\n if (index < curLine.length) {\n return [curLine, index];\n }\n index -= curLine.length;\n curLine = curLine.next;\n }\n return [void 0, index];\n };\n\n Document.prototype.getHTML = function() {\n return this.root.innerHTML.replace(/\\>\\s+\\</g, '>&nbsp;<');\n };\n\n Document.prototype.insertLineBefore = function(newLineNode, refLine) {\n var line;\n line = new Line(this, newLineNode);\n if (refLine != null) {\n if (!dom(newLineNode.parentNode).isElement()) {\n this.root.insertBefore(newLineNode, refLine.node);\n }\n this.lines.insertAfter(refLine.prev, line);\n } else {\n if (!dom(newLineNode.parentNode).isElement()) {\n this.root.appendChild(newLineNode);\n }\n this.lines.append(line);\n }\n return line;\n };\n\n Document.prototype.mergeLines = function(line, lineToMerge) {\n if (lineToMerge.length > 1) {\n if (line.length === 1) {\n dom(line.leaves.last.node).remove();\n }\n _.each(dom(lineToMerge.node).childNodes(), function(child) {\n if (child.tagName !== dom.DEFAULT_BREAK_TAG) {\n return line.node.appendChild(child);\n }\n });\n }\n this.removeLine(lineToMerge);\n return line.rebuild();\n };\n\n Document.prototype.optimizeLines = function() {\n return _.each(this.lines.toArray(), function(line, i) {\n line.optimize();\n return true;\n });\n };\n\n Document.prototype.rebuild = function() {\n var lineNode, lines, results;\n lines = this.lines.toArray();\n lineNode = this.root.firstChild;\n if ((lineNode != null) && (dom.LIST_TAGS[lineNode.tagName] != null)) {\n lineNode = lineNode.firstChild;\n }\n _.each(lines, (function(_this) {\n return function(line, index) {\n var newLine, ref;\n while (line.node !== lineNode) {\n if (line.node.parentNode === _this.root || ((ref = line.node.parentNode) != null ? ref.parentNode : void 0) === _this.root) {\n lineNode = _this.normalizer.normalizeLine(lineNode);\n newLine = _this.insertLineBefore(lineNode, line);\n lineNode = dom(lineNode).nextLineNode(_this.root);\n } else {\n return _this.removeLine(line);\n }\n }\n if (line.outerHTML !== lineNode.outerHTML) {\n line.node = _this.normalizer.normalizeLine(line.node);\n line.rebuild();\n }\n return lineNode = dom(lineNode).nextLineNode(_this.root);\n };\n })(this));\n results = [];\n while (lineNode != null) {\n lineNode = this.normalizer.normalizeLine(lineNode);\n this.appendLine(lineNode);\n results.push(lineNode = dom(lineNode).nextLineNode(this.root));\n }\n return results;\n };\n\n Document.prototype.removeLine = function(line) {\n if (line.node.parentNode != null) {\n if (dom.LIST_TAGS[line.node.parentNode.tagName] && line.node.parentNode.childNodes.length === 1) {\n dom(line.node.parentNode).remove();\n } else {\n dom(line.node).remove();\n }\n }\n return this.lines.remove(line);\n };\n\n Document.prototype.setHTML = function(html) {\n html = Normalizer.stripComments(html);\n html = Normalizer.stripWhitespace(html);\n this.root.innerHTML = html;\n this.lines = new LinkedList();\n return this.rebuild();\n };\n\n Document.prototype.splitLine = function(line, offset) {\n var lineNode1, lineNode2, newLine, ref;\n offset = Math.min(offset, line.length - 1);\n ref = dom(line.node).split(offset, true), lineNode1 = ref[0], lineNode2 = ref[1];\n line.node = lineNode1;\n line.rebuild();\n newLine = this.insertLineBefore(lineNode2, line.next);\n newLine.formats = _.clone(line.formats);\n newLine.resetContent();\n return newLine;\n };\n\n Document.prototype.toDelta = function() {\n var delta, lines;\n lines = this.lines.toArray();\n delta = new Delta();\n _.each(lines, function(line) {\n return _.each(line.delta.ops, function(op) {\n return delta.push(op);\n });\n });\n return delta;\n };\n\n return Document;\n\n})();\n\nmodule.exports = Document;\n\n\n},{\"../lib/dom\":17,\"../lib/linked-list\":18,\"./format\":10,\"./line\":12,\"./normalizer\":13,\"lodash\":1,\"rich-text/lib/delta\":3}],9:[function(_dereq_,module,exports){\nvar Delta, Document, Editor, Line, Selection, _, dom;\n\n_ = _dereq_('lodash');\n\nDelta = _dereq_('rich-text/lib/delta');\n\ndom = _dereq_('../lib/dom');\n\nDocument = _dereq_('./document');\n\nLine = _dereq_('./line');\n\nSelection = _dereq_('./selection');\n\nEditor = (function() {\n Editor.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n };\n\n function Editor(root, quill, options) {\n this.root = root;\n this.quill = quill;\n this.options = options != null ? options : {};\n this.root.setAttribute('id', this.options.id);\n this.doc = new Document(this.root, this.options);\n this.delta = this.doc.toDelta();\n this.length = this.delta.length();\n this.selection = new Selection(this.doc, this.quill);\n this.timer = setInterval(_.bind(this.checkUpdate, this), this.options.pollInterval);\n this.savedRange = null;\n this.quill.on(\"selection-change\", (function(_this) {\n return function(range) {\n return _this.savedRange = range;\n };\n })(this));\n if (!this.options.readOnly) {\n this.enable();\n }\n }\n\n Editor.prototype.destroy = function() {\n return clearInterval(this.timer);\n };\n\n Editor.prototype.disable = function() {\n return this.enable(false);\n };\n\n Editor.prototype.enable = function(enabled) {\n if (enabled == null) {\n enabled = true;\n }\n return this.root.setAttribute('contenteditable', enabled);\n };\n\n Editor.prototype.applyDelta = function(delta, source) {\n var localDelta;\n localDelta = this._update();\n if (localDelta) {\n delta = localDelta.transform(delta, true);\n localDelta = delta.transform(localDelta, false);\n }\n if (delta.ops.length > 0) {\n delta = this._trackDelta((function(_this) {\n return function() {\n var index;\n index = 0;\n _.each(delta.ops, function(op) {\n if (_.isString(op.insert)) {\n _this._insertAt(index, op.insert, op.attributes);\n return index += op.insert.length;\n } else if (_.isNumber(op.insert)) {\n _this._insertEmbed(index, op.attributes);\n return index += 1;\n } else if (_.isNumber(op[\"delete\"])) {\n return _this._deleteAt(index, op[\"delete\"]);\n } else if (_.isNumber(op.retain)) {\n _.each(op.attributes, function(value, name) {\n return _this._formatAt(index, op.retain, name, value);\n });\n return index += op.retain;\n }\n });\n return _this.selection.shiftAfter(0, 0, _.bind(_this.doc.optimizeLines, _this.doc));\n };\n })(this));\n this.delta = this.doc.toDelta();\n this.length = this.delta.length();\n this.innerHTML = this.root.innerHTML;\n if (delta && source !== Editor.sources.SILENT) {\n this.quill.emit(this.quill.constructor.events.TEXT_CHANGE, delta, source);\n }\n }\n if (localDelta && localDelta.ops.length > 0 && source !== Editor.sources.SILENT) {\n return this.quill.emit(this.quill.constructor.events.TEXT_CHANGE, localDelta, Editor.sources.USER);\n }\n };\n\n Editor.prototype.checkUpdate = function(source) {\n var delta;\n if (source == null) {\n source = 'user';\n }\n if (this.root.parentNode == null) {\n return clearInterval(this.timer);\n }\n delta = this._update();\n if (delta) {\n this.delta = this.delta.compose(delta);\n this.length = this.delta.length();\n this.quill.emit(this.quill.constructor.events.TEXT_CHANGE, delta, source);\n }\n if (delta) {\n source = Editor.sources.SILENT;\n }\n return this.selection.update(source);\n };\n\n Editor.prototype.focus = function() {\n if (this.selection.range != null) {\n return this.selection.setRange(this.selection.range);\n } else {\n return this.root.focus();\n }\n };\n\n Editor.prototype.getBounds = function(index) {\n var bounds, containerBounds, leaf, offset, range, ref, side;\n this.checkUpdate();\n ref = this.doc.findLeafAt(index, true), leaf = ref[0], offset = ref[1];\n if (leaf == null) {\n return null;\n }\n containerBounds = this.root.parentNode.getBoundingClientRect();\n side = 'left';\n if (leaf.length === 0) {\n bounds = leaf.node.parentNode.getBoundingClientRect();\n } else if (dom.VOID_TAGS[leaf.node.tagName]) {\n bounds = leaf.node.getBoundingClientRect();\n if (offset === 1) {\n side = 'right';\n }\n } else {\n range = document.createRange();\n if (offset < leaf.length) {\n range.setStart(leaf.node, offset);\n range.setEnd(leaf.node, offset + 1);\n } else {\n range.setStart(leaf.node, offset - 1);\n range.setEnd(leaf.node, offset);\n side = 'right';\n }\n bounds = range.getBoundingClientRect();\n }\n return {\n height: bounds.height,\n left: bounds[side] - containerBounds.left,\n top: bounds.top - containerBounds.top\n };\n };\n\n Editor.prototype._deleteAt = function(index, length) {\n if (length <= 0) {\n return;\n }\n return this.selection.shiftAfter(index, -1 * length, (function(_this) {\n return function() {\n var curLine, deleteLength, firstLine, mergeFirstLine, nextLine, offset, ref;\n ref = _this.doc.findLineAt(index), firstLine = ref[0], offset = ref[1];\n curLine = firstLine;\n mergeFirstLine = firstLine.length - offset <= length && offset > 0;\n while ((curLine != null) && length > 0) {\n nextLine = curLine.next;\n deleteLength = Math.min(curLine.length - offset, length);\n if (offset === 0 && length >= curLine.length) {\n _this.doc.removeLine(curLine);\n } else {\n curLine.deleteText(offset, deleteLength);\n }\n length -= deleteLength;\n curLine = nextLine;\n offset = 0;\n }\n if (mergeFirstLine && firstLine.next) {\n return _this.doc.mergeLines(firstLine, firstLine.next);\n }\n };\n })(this));\n };\n\n Editor.prototype._formatAt = function(index, length, name, value) {\n return this.selection.shiftAfter(index, 0, (function(_this) {\n return function() {\n var formatLength, line, offset, ref, results;\n ref = _this.doc.findLineAt(index), line = ref[0], offset = ref[1];\n results = [];\n while ((line != null) && length > 0) {\n formatLength = Math.min(length, line.length - offset - 1);\n line.formatText(offset, formatLength, name, value);\n length -= formatLength;\n if (length > 0) {\n line.format(name, value);\n }\n length -= 1;\n offset = 0;\n results.push(line = line.next);\n }\n return results;\n };\n })(this));\n };\n\n Editor.prototype._insertEmbed = function(index, attributes) {\n return this.selection.shiftAfter(index, 1, (function(_this) {\n return function() {\n var line, offset, ref;\n ref = _this.doc.findLineAt(index), line = ref[0], offset = ref[1];\n return line.insertEmbed(offset, attributes);\n };\n })(this));\n };\n\n Editor.prototype._insertAt = function(index, text, formatting) {\n if (formatting == null) {\n formatting = {};\n }\n return this.selection.shiftAfter(index, text.length, (function(_this) {\n return function() {\n var line, lineTexts, offset, ref;\n text = text.replace(/\\r\\n?/g, '\\n');\n lineTexts = text.split('\\n');\n ref = _this.doc.findLineAt(index), line = ref[0], offset = ref[1];\n return _.each(lineTexts, function(lineText, i) {\n var nextLine;\n if ((line == null) || line.length <= offset) {\n if (i < lineTexts.length - 1 || lineText.length > 0) {\n line = _this.doc.appendLine(document.createElement(dom.DEFAULT_BLOCK_TAG));\n offset = 0;\n line.insertText(offset, lineText, formatting);\n line.format(formatting);\n nextLine = null;\n }\n } else {\n line.insertText(offset, lineText, formatting);\n if (i < lineTexts.length - 1) {\n nextLine = _this.doc.splitLine(line, offset + lineText.length);\n _.each(_.defaults({}, formatting, line.formats), function(value, format) {\n return line.format(format, formatting[format]);\n });\n offset = 0;\n }\n }\n return line = nextLine;\n });\n };\n })(this));\n };\n\n Editor.prototype._trackDelta = function(fn) {\n var ignored, newDelta, newIndex, newLeftDelta, newRightDelta, oldIndex, oldLeftDelta, oldRightDelta, ref, ref1;\n oldIndex = (ref = this.savedRange) != null ? ref.start : void 0;\n fn();\n newDelta = this.doc.toDelta();\n this.savedRange = this.selection.getRange();\n newIndex = (ref1 = this.savedRange) != null ? ref1.start : void 0;\n try {\n if ((oldIndex != null) && (newIndex != null) && oldIndex <= this.delta.length() && newIndex <= newDelta.length()) {\n oldRightDelta = this.delta.slice(oldIndex);\n newRightDelta = newDelta.slice(newIndex);\n if (_.isEqual(oldRightDelta.ops, newRightDelta.ops)) {\n oldLeftDelta = this.delta.slice(0, oldIndex);\n newLeftDelta = newDelta.slice(0, newIndex);\n return oldLeftDelta.diff(newLeftDelta);\n }\n }\n } catch (_error) {\n ignored = _error;\n }\n return this.delta.diff(newDelta);\n };\n\n Editor.prototype._update = function() {\n var delta;\n if (this.innerHTML === this.root.innerHTML) {\n return false;\n }\n delta = this._trackDelta((function(_this) {\n return function() {\n _this.selection.preserve(_.bind(_this.doc.rebuild, _this.doc));\n return _this.selection.shiftAfter(0, 0, _.bind(_this.doc.optimizeLines, _this.doc));\n };\n })(this));\n this.innerHTML = this.root.innerHTML;\n if (delta.ops.length > 0) {\n return delta;\n } else {\n return false;\n }\n };\n\n return Editor;\n\n})();\n\nmodule.exports = Editor;\n\n\n},{\"../lib/dom\":17,\"./document\":8,\"./line\":12,\"./selection\":14,\"lodash\":1,\"rich-text/lib/delta\":3}],10:[function(_dereq_,module,exports){\nvar Format, _, dom;\n\n_ = _dereq_('lodash');\n\ndom = _dereq_('../lib/dom');\n\nFormat = (function() {\n Format.types = {\n LINE: 'line',\n EMBED: 'embed'\n };\n\n Format.FORMATS = {\n bold: {\n tag: 'B',\n prepare: 'bold'\n },\n italic: {\n tag: 'I',\n prepare: 'italic'\n },\n underline: {\n tag: 'U',\n prepare: 'underline'\n },\n strike: {\n tag: 'S',\n prepare: 'strikeThrough'\n },\n color: {\n style: 'color',\n \"default\": 'rgb(0, 0, 0)',\n prepare: 'foreColor'\n },\n background: {\n style: 'backgroundColor',\n \"default\": 'rgb(255, 255, 255)',\n prepare: 'backColor'\n },\n font: {\n style: 'fontFamily',\n \"default\": \"'Helvetica', 'Arial', sans-serif\",\n prepare: 'fontName'\n },\n size: {\n style: 'fontSize',\n \"default\": '13px',\n prepare: function(value) {\n return document.execCommand('fontSize', false, dom.convertFontSize(value));\n }\n },\n link: {\n tag: 'A',\n add: function(node, value) {\n node.setAttribute('href', value);\n return node;\n },\n remove: function(node) {\n node.removeAttribute('href');\n return node;\n },\n value: function(node) {\n return node.getAttribute('href');\n }\n },\n image: {\n type: Format.types.EMBED,\n tag: 'IMG',\n attribute: 'src'\n },\n align: {\n type: Format.types.LINE,\n style: 'textAlign',\n \"default\": 'left'\n },\n bullet: {\n type: Format.types.LINE,\n exclude: 'list',\n parentTag: 'UL',\n tag: 'LI'\n },\n list: {\n type: Format.types.LINE,\n exclude: 'bullet',\n parentTag: 'OL',\n tag: 'LI'\n }\n };\n\n function Format(config) {\n this.config = config;\n }\n\n Format.prototype.add = function(node, value) {\n var formatNode, inline, parentNode, ref, ref1;\n if (!value) {\n return this.remove(node);\n }\n if (this.value(node) === value) {\n return node;\n }\n if (_.isString(this.config.parentTag)) {\n parentNode = node.parentNode;\n if (parentNode.tagName !== this.config.parentTag) {\n parentNode = document.createElement(this.config.parentTag);\n dom(node).wrap(parentNode);\n }\n if (node.parentNode.tagName === ((ref = node.parentNode.previousSibling) != null ? ref.tagName : void 0)) {\n dom(node.parentNode.previousSibling).merge(node.parentNode);\n }\n if (node.parentNode.tagName === ((ref1 = node.parentNode.nextSibling) != null ? ref1.tagName : void 0)) {\n dom(node.parentNode).merge(node.parentNode.nextSibling);\n }\n }\n if (_.isString(this.config.tag) && node.tagName !== this.config.tag) {\n formatNode = document.createElement(this.config.tag);\n if (dom.VOID_TAGS[formatNode.tagName] != null) {\n if (node.parentNode != null) {\n dom(node).replace(formatNode);\n }\n node = formatNode;\n } else if (this.isType(Format.types.LINE)) {\n node = dom(node).switchTag(this.config.tag).get();\n } else {\n dom(node).wrap(formatNode);\n node = formatNode;\n }\n }\n if (_.isString(this.config.style) || _.isString(this.config.attribute) || _.isString(this.config[\"class\"])) {\n if (_.isString(this.config[\"class\"])) {\n node = this.remove(node);\n }\n if (dom(node).isTextNode()) {\n inline = document.createElement(dom.DEFAULT_INLINE_TAG);\n dom(node).wrap(inline);\n node = inline;\n }\n if (_.isString(this.config.style)) {\n if (value !== this.config[\"default\"]) {\n node.style[this.config.style] = value;\n }\n }\n if (_.isString(this.config.attribute)) {\n node.setAttribute(this.config.attribute, value);\n }\n if (_.isString(this.config[\"class\"])) {\n dom(node).addClass(this.config[\"class\"] + value);\n }\n }\n if (_.isFunction(this.config.add)) {\n node = this.config.add(node, value);\n }\n return node;\n };\n\n Format.prototype.isType = function(type) {\n return type === this.config.type;\n };\n\n Format.prototype.match = function(node) {\n var c, i, len, ref, ref1;\n if (!dom(node).isElement()) {\n return false;\n }\n if (_.isString(this.config.parentTag) && ((ref = node.parentNode) != null ? ref.tagName : void 0) !== this.config.parentTag) {\n return false;\n }\n if (_.isString(this.config.tag) && node.tagName !== this.config.tag) {\n return false;\n }\n if (_.isString(this.config.style) && (!node.style[this.config.style] || node.style[this.config.style] === this.config[\"default\"])) {\n return false;\n }\n if (_.isString(this.config.attribute) && !node.hasAttribute(this.config.attribute)) {\n return false;\n }\n if (_.isString(this.config[\"class\"])) {\n ref1 = dom(node).classes();\n for (i = 0, len = ref1.length; i < len; i++) {\n c = ref1[i];\n if (c.indexOf(this.config[\"class\"]) === 0) {\n return true;\n }\n }\n return false;\n }\n return true;\n };\n\n Format.prototype.prepare = function(value) {\n if (_.isString(this.config.prepare)) {\n return document.execCommand(this.config.prepare, false, value);\n } else if (_.isFunction(this.config.prepare)) {\n return this.config.prepare(value);\n }\n };\n\n Format.prototype.remove = function(node) {\n var c, i, len, ref;\n if (!this.match(node)) {\n return node;\n }\n if (_.isString(this.config.style)) {\n node.style[this.config.style] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n }\n if (_.isString(this.config.attribute)) {\n node.removeAttribute(this.config.attribute);\n }\n if (_.isString(this.config[\"class\"])) {\n ref = dom(node).classes();\n for (i = 0, len = ref.length; i < len; i++) {\n c = ref[i];\n if (c.indexOf(this.config[\"class\"]) === 0) {\n dom(node).removeClass(c);\n }\n }\n }\n if (_.isString(this.config.tag)) {\n if (this.isType(Format.types.LINE)) {\n if (_.isString(this.config.parentTag)) {\n if (node.previousSibling != null) {\n dom(node).splitBefore(node.parentNode.parentNode);\n }\n if (node.nextSibling != null) {\n dom(node.nextSibling).splitBefore(node.parentNode.parentNode);\n }\n }\n node = dom(node).switchTag(dom.DEFAULT_BLOCK_TAG).get();\n } else if (this.isType(Format.types.EMBED)) {\n dom(node).remove();\n return void 0;\n } else {\n node = dom(node).switchTag(dom.DEFAULT_INLINE_TAG).get();\n }\n }\n if (_.isString(this.config.parentTag)) {\n dom(node.parentNode).unwrap();\n }\n if (_.isFunction(this.config.remove)) {\n node = this.config.remove(node);\n }\n if (node.tagName === dom.DEFAULT_INLINE_TAG && !node.hasAttributes()) {\n node = dom(node).unwrap();\n }\n return node;\n };\n\n Format.prototype.value = function(node) {\n var c, i, len, ref;\n if (!this.match(node)) {\n return void 0;\n }\n if (this.config.value) {\n return this.config.value(node);\n }\n if (_.isString(this.config.attribute)) {\n return node.getAttribute(this.config.attribute) || void 0;\n } else if (_.isString(this.config.style)) {\n return node.style[this.config.style] || void 0;\n } else if (_.isString(this.config[\"class\"])) {\n ref = dom(node).classes();\n for (i = 0, len = ref.length; i < len; i++) {\n c = ref[i];\n if (c.indexOf(this.config[\"class\"]) === 0) {\n return c.slice(this.config[\"class\"].length);\n }\n }\n } else if (_.isString(this.config.tag)) {\n return true;\n }\n return void 0;\n };\n\n return Format;\n\n})();\n\nmodule.exports = Format;\n\n\n},{\"../lib/dom\":17,\"lodash\":1}],11:[function(_dereq_,module,exports){\nvar Format, Leaf, LinkedList, _, dom,\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_ = _dereq_('lodash');\n\ndom = _dereq_('../lib/dom');\n\nFormat = _dereq_('./format');\n\nLinkedList = _dereq_('../lib/linked-list');\n\nLeaf = (function(superClass) {\n extend(Leaf, superClass);\n\n Leaf.DATA_KEY = 'leaf';\n\n Leaf.isLeafNode = function(node) {\n return dom(node).isTextNode() || (node.firstChild == null);\n };\n\n function Leaf(node1, formats) {\n this.node = node1;\n this.formats = _.clone(formats);\n this.text = dom(this.node).text();\n this.length = this.text.length;\n dom(this.node).data(Leaf.DATA_KEY, this);\n }\n\n Leaf.prototype.deleteText = function(offset, length) {\n var textNode;\n if (!(length > 0)) {\n return;\n }\n this.text = this.text.slice(0, offset) + this.text.slice(offset + length);\n this.length = this.text.length;\n if (dom.EMBED_TAGS[this.node.tagName] != null) {\n textNode = document.createTextNode(this.text);\n dom(textNode).data(Leaf.DATA_KEY, this);\n return this.node = dom(this.node).replace(textNode).get();\n } else {\n return dom(this.node).text(this.text);\n }\n };\n\n Leaf.prototype.insertText = function(offset, text) {\n var textNode;\n this.text = this.text.slice(0, offset) + text + this.text.slice(offset);\n if (dom(this.node).isTextNode()) {\n dom(this.node).text(this.text);\n } else {\n textNode = document.createTextNode(text);\n dom(textNode).data(Leaf.DATA_KEY, this);\n if (this.node.tagName === dom.DEFAULT_BREAK_TAG) {\n this.node = dom(this.node).replace(textNode).get();\n } else {\n this.node.appendChild(textNode);\n this.node = textNode;\n }\n }\n return this.length = this.text.length;\n };\n\n return Leaf;\n\n})(LinkedList.Node);\n\nmodule.exports = Leaf;\n\n\n},{\"../lib/dom\":17,\"../lib/linked-list\":18,\"./format\":10,\"lodash\":1}],12:[function(_dereq_,module,exports){\nvar Delta, Format, Leaf, Line, LinkedList, Normalizer, _, dom,\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_ = _dereq_('lodash');\n\nDelta = _dereq_('rich-text/lib/delta');\n\ndom = _dereq_('../lib/dom');\n\nFormat = _dereq_('./format');\n\nLeaf = _dereq_('./leaf');\n\nLine = _dereq_('./line');\n\nLinkedList = _dereq_('../lib/linked-list');\n\nNormalizer = _dereq_('./normalizer');\n\nLine = (function(superClass) {\n extend(Line, superClass);\n\n Line.DATA_KEY = 'line';\n\n function Line(doc, node1) {\n this.doc = doc;\n this.node = node1;\n this.formats = {};\n this.rebuild();\n Line.__super__.constructor.call(this, this.node);\n }\n\n Line.prototype.buildLeaves = function(node, formats) {\n return _.each(dom(node).childNodes(), (function(_this) {\n return function(node) {\n var nodeFormats;\n node = _this.doc.normalizer.normalizeNode(node);\n nodeFormats = _.clone(formats);\n _.each(_this.doc.formats, function(format, name) {\n if (!format.isType(Format.types.LINE) && format.match(node)) {\n return nodeFormats[name] = format.value(node);\n }\n });\n if (Leaf.isLeafNode(node)) {\n return _this.leaves.append(new Leaf(node, nodeFormats));\n } else {\n return _this.buildLeaves(node, nodeFormats);\n }\n };\n })(this));\n };\n\n Line.prototype.deleteText = function(offset, length) {\n var deleteLength, leaf, ref;\n if (!(length > 0)) {\n return;\n }\n ref = this.findLeafAt(offset), leaf = ref[0], offset = ref[1];\n while ((leaf != null) && length > 0) {\n deleteLength = Math.min(length, leaf.length - offset);\n leaf.deleteText(offset, deleteLength);\n length -= deleteLength;\n leaf = leaf.next;\n offset = 0;\n }\n return this.rebuild();\n };\n\n Line.prototype.findLeaf = function(leafNode) {\n if (leafNode != null) {\n return dom(leafNode).data(Leaf.DATA_KEY);\n } else {\n return void 0;\n }\n };\n\n Line.prototype.findLeafAt = function(offset, inclusive) {\n var leaf;\n if (inclusive == null) {\n inclusive = false;\n }\n if (offset >= this.length - 1) {\n return [this.leaves.last, this.leaves.last.length];\n }\n leaf = this.leaves.first;\n while (leaf != null) {\n if (offset < leaf.length || (offset === leaf.length && inclusive)) {\n return [leaf, offset];\n }\n offset -= leaf.length;\n leaf = leaf.next;\n }\n return [this.leaves.last, offset - this.leaves.last.length];\n };\n\n Line.prototype.format = function(name, value) {\n var formats;\n if (_.isObject(name)) {\n formats = name;\n } else {\n formats = {};\n formats[name] = value;\n }\n _.each(formats, (function(_this) {\n return function(value, name) {\n var excludeFormat, format;\n format = _this.doc.formats[name];\n if (format == null) {\n return;\n }\n if (format.isType(Format.types.LINE)) {\n if (format.config.exclude && _this.formats[format.config.exclude]) {\n excludeFormat = _this.doc.formats[format.config.exclude];\n if (excludeFormat != null) {\n _this.node = excludeFormat.remove(_this.node);\n delete _this.formats[format.config.exclude];\n }\n }\n _this.node = format.add(_this.node, value);\n }\n if (value) {\n return _this.formats[name] = value;\n } else {\n return delete _this.formats[name];\n }\n };\n })(this));\n return this.resetContent();\n };\n\n Line.prototype.formatText = function(offset, length, name, value) {\n var format, leaf, leafOffset, leftNode, nextLeaf, ref, ref1, ref2, rightNode, targetNode;\n ref = this.findLeafAt(offset), leaf = ref[0], leafOffset = ref[1];\n format = this.doc.formats[name];\n if (!((format != null) && format.config.type !== Format.types.LINE)) {\n return;\n }\n while ((leaf != null) && length > 0) {\n nextLeaf = leaf.next;\n if ((value && leaf.formats[name] !== value) || (!value && (leaf.formats[name] != null))) {\n targetNode = leaf.node;\n if (leaf.formats[name] != null) {\n dom(targetNode).splitBefore(this.node);\n while (!format.match(targetNode)) {\n targetNode = targetNode.parentNode;\n }\n dom(targetNode).split(leaf.length);\n }\n if (leafOffset > 0) {\n ref1 = dom(targetNode).split(leafOffset), leftNode = ref1[0], targetNode = ref1[1];\n }\n if (leaf.length > leafOffset + length) {\n ref2 = dom(targetNode).split(length), targetNode = ref2[0], rightNode = ref2[1];\n }\n format.add(targetNode, value);\n }\n length -= leaf.length - leafOffset;\n leafOffset = 0;\n leaf = nextLeaf;\n }\n return this.rebuild();\n };\n\n Line.prototype._insert = function(offset, node, formats) {\n var leaf, leafOffset, nextNode, prevNode, ref, ref1;\n ref = this.findLeafAt(offset), leaf = ref[0], leafOffset = ref[1];\n node = _.reduce(formats, (function(_this) {\n return function(node, value, name) {\n var format;\n format = _this.doc.formats[name];\n if ((format != null) && !format.isType(Format.types.LINE)) {\n node = format.add(node, value);\n }\n return node;\n };\n })(this), node);\n ref1 = dom(leaf.node).split(leafOffset), prevNode = ref1[0], nextNode = ref1[1];\n if (nextNode) {\n nextNode = dom(nextNode).splitBefore(this.node).get();\n }\n this.node.insertBefore(node, nextNode);\n return this.rebuild();\n };\n\n Line.prototype.insertEmbed = function(offset, attributes) {\n var formatName, leaf, leafOffset, nextNode, node, prevNode, ref, ref1;\n ref = this.findLeafAt(offset), leaf = ref[0], leafOffset = ref[1];\n ref1 = dom(leaf.node).split(leafOffset), prevNode = ref1[0], nextNode = ref1[1];\n formatName = _.find(Object.keys(attributes), (function(_this) {\n return function(name) {\n return _this.doc.formats[name].isType(Format.types.EMBED);\n };\n })(this));\n node = this.doc.formats[formatName].add({}, attributes[formatName]);\n attributes = _.clone(attributes);\n delete attributes[formatName];\n return this._insert(offset, node, attributes);\n };\n\n Line.prototype.insertText = function(offset, text, formats) {\n var leaf, leafOffset, ref;\n if (formats == null) {\n formats = {};\n }\n if (!(text.length > 0)) {\n return;\n }\n ref = this.findLeafAt(offset), leaf = ref[0], leafOffset = ref[1];\n if (_.isEqual(leaf.formats, formats)) {\n leaf.insertText(leafOffset, text);\n return this.resetContent();\n } else {\n return this._insert(offset, document.createTextNode(text), formats);\n }\n };\n\n Line.prototype.optimize = function() {\n Normalizer.optimizeLine(this.node);\n return this.rebuild();\n };\n\n Line.prototype.rebuild = function(force) {\n if (force == null) {\n force = false;\n }\n if (!force && (this.outerHTML != null) && this.outerHTML === this.node.outerHTML) {\n if (_.all(this.leaves.toArray(), (function(_this) {\n return function(leaf) {\n return dom(leaf.node).isAncestor(_this.node);\n };\n })(this))) {\n return false;\n }\n }\n this.node = this.doc.normalizer.normalizeNode(this.node);\n if (dom(this.node).length() === 0 && !this.node.querySelector(dom.DEFAULT_BREAK_TAG)) {\n this.node.appendChild(document.createElement(dom.DEFAULT_BREAK_TAG));\n }\n this.leaves = new LinkedList();\n this.formats = _.reduce(this.doc.formats, (function(_this) {\n return function(formats, format, name) {\n if (format.isType(Format.types.LINE)) {\n if (format.match(_this.node)) {\n formats[name] = format.value(_this.node);\n } else {\n delete formats[name];\n }\n }\n return formats;\n };\n })(this), this.formats);\n this.buildLeaves(this.node, {});\n this.resetContent();\n return true;\n };\n\n Line.prototype.resetContent = function() {\n dom(this.node).data(Line.DATA_KEY, this);\n this.outerHTML = this.node.outerHTML;\n this.length = 1;\n this.delta = new Delta();\n _.each(this.leaves.toArray(), (function(_this) {\n return function(leaf) {\n _this.length += leaf.length;\n if (dom.EMBED_TAGS[leaf.node.tagName] != null) {\n return _this.delta.insert(1, leaf.formats);\n } else {\n return _this.delta.insert(leaf.text, leaf.formats);\n }\n };\n })(this));\n return this.delta.insert('\\n', this.formats);\n };\n\n return Line;\n\n})(LinkedList.Node);\n\nmodule.exports = Line;\n\n\n},{\"../lib/dom\":17,\"../lib/linked-list\":18,\"./format\":10,\"./leaf\":11,\"./line\":12,\"./normalizer\":13,\"lodash\":1,\"rich-text/lib/delta\":3}],13:[function(_dereq_,module,exports){\nvar Normalizer, _, camelize, dom;\n\n_ = _dereq_('lodash');\n\ndom = _dereq_('../lib/dom');\n\ncamelize = function(str) {\n str = str.replace(/(?:^|[-_])(\\w)/g, function(i, c) {\n if (c) {\n return c.toUpperCase();\n } else {\n return '';\n }\n });\n return str.charAt(0).toLowerCase() + str.slice(1);\n};\n\nNormalizer = (function() {\n Normalizer.ALIASES = {\n 'STRONG': 'B',\n 'EM': 'I',\n 'DEL': 'S',\n 'STRIKE': 'S'\n };\n\n Normalizer.ATTRIBUTES = {\n 'color': 'color',\n 'face': 'fontFamily',\n 'size': 'fontSize'\n };\n\n function Normalizer() {\n this.whitelist = {\n styles: {},\n tags: {}\n };\n this.whitelist.tags[dom.DEFAULT_BREAK_TAG] = true;\n this.whitelist.tags[dom.DEFAULT_BLOCK_TAG] = true;\n this.whitelist.tags[dom.DEFAULT_INLINE_TAG] = true;\n }\n\n Normalizer.prototype.addFormat = function(config) {\n if (config.tag != null) {\n this.whitelist.tags[config.tag] = true;\n }\n if (config.parentTag != null) {\n this.whitelist.tags[config.parentTag] = true;\n }\n if (config.style != null) {\n return this.whitelist.styles[config.style] = true;\n }\n };\n\n Normalizer.prototype.normalizeLine = function(lineNode) {\n lineNode = Normalizer.wrapInline(lineNode);\n lineNode = Normalizer.handleBreaks(lineNode);\n if (lineNode.tagName === 'LI') {\n Normalizer.flattenList(lineNode);\n }\n lineNode = Normalizer.pullBlocks(lineNode);\n lineNode = this.normalizeNode(lineNode);\n Normalizer.unwrapText(lineNode);\n if ((lineNode != null) && (dom.LIST_TAGS[lineNode.tagName] != null)) {\n lineNode = lineNode.firstChild;\n }\n return lineNode;\n };\n\n Normalizer.prototype.normalizeNode = function(node) {\n if (dom(node).isTextNode()) {\n return node;\n }\n _.each(Normalizer.ATTRIBUTES, function(style, attribute) {\n var value;\n if (node.hasAttribute(attribute)) {\n value = node.getAttribute(attribute);\n if (attribute === 'size') {\n value = dom.convertFontSize(value);\n }\n node.style[style] = value;\n return node.removeAttribute(attribute);\n }\n });\n if (node.style.fontWeight === 'bold' || node.style.fontWeight > 500) {\n node.style.fontWeight = '';\n dom(node).wrap(document.createElement('b'));\n node = node.parentNode;\n }\n this.whitelistStyles(node);\n return this.whitelistTags(node);\n };\n\n Normalizer.prototype.whitelistStyles = function(node) {\n var original, styles;\n original = dom(node).styles();\n styles = _.omit(original, (function(_this) {\n return function(value, key) {\n return _this.whitelist.styles[camelize(key)] == null;\n };\n })(this));\n if (Object.keys(styles).length < Object.keys(original).length) {\n if (Object.keys(styles).length > 0) {\n return dom(node).styles(styles, true);\n } else {\n return node.removeAttribute('style');\n }\n }\n };\n\n Normalizer.prototype.whitelistTags = function(node) {\n if (!dom(node).isElement()) {\n return node;\n }\n if (Normalizer.ALIASES[node.tagName] != null) {\n node = dom(node).switchTag(Normalizer.ALIASES[node.tagName]).get();\n } else if (this.whitelist.tags[node.tagName] == null) {\n if (dom.BLOCK_TAGS[node.tagName] != null) {\n node = dom(node).switchTag(dom.DEFAULT_BLOCK_TAG).get();\n } else if (!node.hasAttributes() && (node.firstChild != null)) {\n node = dom(node).unwrap();\n } else {\n node = dom(node).switchTag(dom.DEFAULT_INLINE_TAG).get();\n }\n }\n return node;\n };\n\n Normalizer.flattenList = function(listNode) {\n var innerItems, innerLists, ref;\n ref = listNode.nextSibling;\n innerItems = _.map(listNode.querySelectorAll('li'));\n innerItems.forEach(function(item) {\n listNode.parentNode.insertBefore(item, ref);\n return ref = item.nextSibling;\n });\n innerLists = _.map(listNode.querySelectorAll(Object.keys(dom.LIST_TAGS).join(',')));\n return innerLists.forEach(function(list) {\n return dom(list).remove();\n });\n };\n\n Normalizer.handleBreaks = function(lineNode) {\n var breaks;\n breaks = _.map(lineNode.querySelectorAll(dom.DEFAULT_BREAK_TAG));\n _.each(breaks, (function(_this) {\n return function(br) {\n if ((br.nextSibling != null) && (!dom.isIE(10) || (br.previousSibling != null))) {\n return dom(br.nextSibling).splitBefore(lineNode.parentNode);\n }\n };\n })(this));\n return lineNode;\n };\n\n Normalizer.optimizeLine = function(lineNode) {\n var lineNodeLength, node, nodes, results;\n lineNode.normalize();\n lineNodeLength = dom(lineNode).length();\n nodes = dom(lineNode).descendants();\n results = [];\n while (nodes.length > 0) {\n node = nodes.pop();\n if ((node != null ? node.parentNode : void 0) == null) {\n continue;\n }\n if (dom.EMBED_TAGS[node.tagName] != null) {\n continue;\n }\n if (node.tagName === dom.DEFAULT_BREAK_TAG) {\n if (lineNodeLength !== 0) {\n results.push(dom(node).remove());\n } else {\n results.push(void 0);\n }\n } else if (dom(node).length() === 0) {\n nodes.push(node.nextSibling);\n results.push(dom(node).unwrap());\n } else if ((node.previousSibling != null) && node.tagName === node.previousSibling.tagName) {\n if (_.isEqual(dom(node).attributes(), dom(node.previousSibling).attributes())) {\n nodes.push(node.firstChild);\n results.push(dom(node.previousSibling).merge(node));\n } else {\n results.push(void 0);\n }\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n\n Normalizer.pullBlocks = function(lineNode) {\n var curNode;\n curNode = lineNode.firstChild;\n while (curNode != null) {\n if ((dom.BLOCK_TAGS[curNode.tagName] != null) && curNode.tagName !== 'LI') {\n dom(curNode).isolate(lineNode.parentNode);\n if ((dom.LIST_TAGS[curNode.tagName] == null) || !curNode.firstChild) {\n dom(curNode).unwrap();\n Normalizer.pullBlocks(lineNode);\n } else {\n dom(curNode.parentNode).unwrap();\n if (lineNode.parentNode == null) {\n lineNode = curNode;\n }\n }\n break;\n }\n curNode = curNode.nextSibling;\n }\n return lineNode;\n };\n\n Normalizer.stripComments = function(html) {\n return html.replace(/<!--[\\s\\S]*?-->/g, '');\n };\n\n Normalizer.stripWhitespace = function(html) {\n html = html.trim();\n html = html.replace(/(\\r?\\n|\\r)+/g, ' ');\n html = html.replace(/\\>\\s+\\</g, '><');\n return html;\n };\n\n Normalizer.wrapInline = function(lineNode) {\n var blockNode, nextNode;\n if (dom.BLOCK_TAGS[lineNode.tagName] != null) {\n return lineNode;\n }\n blockNode = document.createElement(dom.DEFAULT_BLOCK_TAG);\n lineNode.parentNode.insertBefore(blockNode, lineNode);\n while ((lineNode != null) && (dom.BLOCK_TAGS[lineNode.tagName] == null)) {\n nextNode = lineNode.nextSibling;\n blockNode.appendChild(lineNode);\n lineNode = nextNode;\n }\n return blockNode;\n };\n\n Normalizer.unwrapText = function(lineNode) {\n var spans;\n spans = _.map(lineNode.querySelectorAll(dom.DEFAULT_INLINE_TAG));\n return _.each(spans, function(span) {\n if (!span.hasAttributes()) {\n return dom(span).unwrap();\n }\n });\n };\n\n return Normalizer;\n\n})();\n\nmodule.exports = Normalizer;\n\n\n},{\"../lib/dom\":17,\"lodash\":1}],14:[function(_dereq_,module,exports){\nvar Leaf, Normalizer, Range, Selection, _, dom;\n\n_ = _dereq_('lodash');\n\ndom = _dereq_('../lib/dom');\n\nLeaf = _dereq_('./leaf');\n\nNormalizer = _dereq_('./normalizer');\n\nRange = _dereq_('../lib/range');\n\nSelection = (function() {\n function Selection(doc, emitter) {\n this.doc = doc;\n this.emitter = emitter;\n this.focus = false;\n this.range = new Range(0, 0);\n this.nullDelay = false;\n this.update('silent');\n }\n\n Selection.prototype.checkFocus = function() {\n return document.activeElement === this.doc.root;\n };\n\n Selection.prototype.getRange = function(ignoreFocus) {\n var end, nativeRange, start;\n if (ignoreFocus == null) {\n ignoreFocus = false;\n }\n if (this.checkFocus()) {\n nativeRange = this._getNativeRange();\n if (nativeRange == null) {\n return null;\n }\n start = this._positionToIndex(nativeRange.startContainer, nativeRange.startOffset);\n if (nativeRange.startContainer === nativeRange.endContainer && nativeRange.startOffset === nativeRange.endOffset) {\n end = start;\n } else {\n end = this._positionToIndex(nativeRange.endContainer, nativeRange.endOffset);\n }\n return new Range(Math.min(start, end), Math.max(start, end));\n } else if (ignoreFocus) {\n return this.range;\n } else {\n return null;\n }\n };\n\n Selection.prototype.preserve = function(fn) {\n var endNode, endOffset, nativeRange, ref, ref1, ref2, ref3, startNode, startOffset;\n nativeRange = this._getNativeRange();\n if ((nativeRange != null) && this.checkFocus()) {\n ref = this._encodePosition(nativeRange.startContainer, nativeRange.startOffset), startNode = ref[0], startOffset = ref[1];\n ref1 = this._encodePosition(nativeRange.endContainer, nativeRange.endOffset), endNode = ref1[0], endOffset = ref1[1];\n fn();\n ref2 = this._decodePosition(startNode, startOffset), startNode = ref2[0], startOffset = ref2[1];\n ref3 = this._decodePosition(endNode, endOffset), endNode = ref3[0], endOffset = ref3[1];\n return this._setNativeRange(startNode, startOffset, endNode, endOffset);\n } else {\n return fn();\n }\n };\n\n Selection.prototype.scrollIntoView = function() {\n var containerBounds, containerHeight, editor, endBounds, line, offset, ref, ref1, startBounds;\n if (!this.range) {\n return;\n }\n editor = this.emitter.editor;\n startBounds = editor.getBounds(this.range.start);\n endBounds = this.range.isCollapsed() ? startBounds : editor.getBounds(this.range.end);\n containerBounds = editor.root.parentNode.getBoundingClientRect();\n containerHeight = containerBounds.bottom - containerBounds.top;\n if (containerHeight < endBounds.top + endBounds.height) {\n ref = editor.doc.findLineAt(this.range.end), line = ref[0], offset = ref[1];\n return line.node.scrollIntoView(false);\n } else if (startBounds.top < 0) {\n ref1 = editor.doc.findLineAt(this.range.start), line = ref1[0], offset = ref1[1];\n return line.node.scrollIntoView();\n }\n };\n\n Selection.prototype.setRange = function(range, source) {\n var endNode, endOffset, ref, ref1, ref2, startNode, startOffset;\n if (range != null) {\n ref = this._indexToPosition(range.start), startNode = ref[0], startOffset = ref[1];\n if (range.isCollapsed()) {\n ref1 = [startNode, startOffset], endNode = ref1[0], endOffset = ref1[1];\n } else {\n ref2 = this._indexToPosition(range.end), endNode = ref2[0], endOffset = ref2[1];\n }\n this._setNativeRange(startNode, startOffset, endNode, endOffset);\n } else {\n this._setNativeRange(null);\n }\n return this.update(source);\n };\n\n Selection.prototype.shiftAfter = function(index, length, fn) {\n var range;\n range = this.getRange();\n fn();\n if (range != null) {\n range.shift(index, length);\n return this.setRange(range, 'silent');\n }\n };\n\n Selection.prototype.update = function(source) {\n var emit, focus, range, toEmit;\n focus = this.checkFocus();\n range = this.getRange(true);\n emit = source !== 'silent' && (!Range.compare(range, this.range) || focus !== this.focus);\n toEmit = focus ? range : null;\n if (toEmit === null && source === 'user' && !this.nullDelay) {\n return this.nullDelay = true;\n } else {\n this.nullDelay = false;\n this.range = range;\n this.focus = focus;\n if (emit) {\n return this.emitter.emit(this.emitter.constructor.events.SELECTION_CHANGE, toEmit, source);\n }\n }\n };\n\n Selection.prototype._decodePosition = function(node, offset) {\n var childIndex;\n if (dom(node).isElement()) {\n childIndex = dom(node.parentNode).childNodes().indexOf(node);\n offset += childIndex;\n node = node.parentNode;\n }\n return [node, offset];\n };\n\n Selection.prototype._encodePosition = function(node, offset) {\n var text;\n while (true) {\n if (dom(node).isTextNode() || node.tagName === dom.DEFAULT_BREAK_TAG || (dom.EMBED_TAGS[node.tagName] != null)) {\n return [node, offset];\n } else if (offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === 0) {\n if (this.doc.normalizer.whitelist.tags[node.tagName] == null) {\n text = document.createTextNode('');\n node.appendChild(text);\n node = text;\n }\n return [node, 0];\n } else {\n node = node.lastChild;\n if (dom(node).isElement()) {\n if (node.tagName === dom.DEFAULT_BREAK_TAG || (dom.EMBED_TAGS[node.tagName] != null)) {\n return [node, 1];\n } else {\n offset = node.childNodes.length;\n }\n } else {\n return [node, dom(node).length()];\n }\n }\n }\n };\n\n Selection.prototype._getNativeRange = function() {\n var range, selection;\n selection = document.getSelection();\n if ((selection != null ? selection.rangeCount : void 0) > 0) {\n range = selection.getRangeAt(0);\n if (dom(range.startContainer).isAncestor(this.doc.root, true)) {\n if (range.startContainer === range.endContainer || dom(range.endContainer).isAncestor(this.doc.root, true)) {\n return range;\n }\n }\n }\n return null;\n };\n\n Selection.prototype._indexToPosition = function(index) {\n var leaf, offset, ref;\n if (this.doc.lines.length === 0) {\n return [this.doc.root, 0];\n }\n ref = this.doc.findLeafAt(index, true), leaf = ref[0], offset = ref[1];\n return this._decodePosition(leaf.node, offset);\n };\n\n Selection.prototype._positionToIndex = function(node, offset) {\n var leaf, leafNode, leafOffset, line, lineOffset, ref;\n if (dom.isIE(10) && node.tagName === 'BR' && offset === 1) {\n offset = 0;\n }\n ref = this._encodePosition(node, offset), leafNode = ref[0], offset = ref[1];\n line = this.doc.findLine(leafNode);\n if (line == null) {\n return 0;\n }\n leaf = line.findLeaf(leafNode);\n lineOffset = 0;\n while (line.prev != null) {\n line = line.prev;\n lineOffset += line.length;\n }\n if (leaf == null) {\n return lineOffset;\n }\n leafOffset = 0;\n while (leaf.prev != null) {\n leaf = leaf.prev;\n leafOffset += leaf.length;\n }\n return lineOffset + leafOffset + offset;\n };\n\n Selection.prototype._setNativeRange = function(startNode, startOffset, endNode, endOffset) {\n var nativeRange, selection;\n selection = document.getSelection();\n if (!selection) {\n return;\n }\n if (startNode != null) {\n if (!this.checkFocus()) {\n this.doc.root.focus();\n }\n nativeRange = this._getNativeRange();\n if ((nativeRange == null) || startNode !== nativeRange.startContainer || startOffset !== nativeRange.startOffset || endNode !== nativeRange.endContainer || endOffset !== nativeRange.endOffset) {\n selection.removeAllRanges();\n nativeRange = document.createRange();\n nativeRange.setStart(startNode, startOffset);\n nativeRange.setEnd(endNode, endOffset);\n return selection.addRange(nativeRange);\n }\n } else {\n selection.removeAllRanges();\n this.doc.root.blur();\n if (dom.isIE(11) && !dom.isIE(9)) {\n return document.body.focus();\n }\n }\n };\n\n return Selection;\n\n})();\n\nmodule.exports = Selection;\n\n\n},{\"../lib/dom\":17,\"../lib/range\":20,\"./leaf\":11,\"./normalizer\":13,\"lodash\":1}],15:[function(_dereq_,module,exports){\n_dereq_('./modules/authorship');\n\n_dereq_('./modules/image-tooltip');\n\n_dereq_('./modules/keyboard');\n\n_dereq_('./modules/link-tooltip');\n\n_dereq_('./modules/multi-cursor');\n\n_dereq_('./modules/paste-manager');\n\n_dereq_('./modules/toolbar');\n\n_dereq_('./modules/tooltip');\n\n_dereq_('./modules/undo-manager');\n\nmodule.exports = _dereq_('./quill');\n\n\n},{\"./modules/authorship\":21,\"./modules/image-tooltip\":22,\"./modules/keyboard\":23,\"./modules/link-tooltip\":24,\"./modules/multi-cursor\":25,\"./modules/paste-manager\":26,\"./modules/toolbar\":27,\"./modules/tooltip\":28,\"./modules/undo-manager\":29,\"./quill\":30}],16:[function(_dereq_,module,exports){\nvar ColorPicker, Picker, dom,\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\ndom = _dereq_('./dom');\n\nPicker = _dereq_('./picker');\n\nColorPicker = (function(superClass) {\n extend(ColorPicker, superClass);\n\n function ColorPicker() {\n ColorPicker.__super__.constructor.apply(this, arguments);\n dom(this.container).addClass('ql-color-picker');\n }\n\n ColorPicker.prototype.buildItem = function(picker, option, index) {\n var item;\n item = ColorPicker.__super__.buildItem.call(this, picker, option, index);\n item.style.backgroundColor = option.value;\n return item;\n };\n\n return ColorPicker;\n\n})(Picker);\n\nmodule.exports = ColorPicker;\n\n\n},{\"./dom\":17,\"./picker\":19}],17:[function(_dereq_,module,exports){\nvar SelectWrapper, Wrapper, _, dom, lastKeyEvent,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\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_ = _dereq_('lodash');\n\nlastKeyEvent = null;\n\nWrapper = (function() {\n function Wrapper(node1) {\n this.node = node1;\n this.trigger = bind(this.trigger, this);\n }\n\n Wrapper.prototype.addClass = function(cssClass) {\n if (this.hasClass(cssClass)) {\n return;\n }\n if (this.node.classList != null) {\n this.node.classList.add(cssClass);\n } else if (this.node.className != null) {\n this.node.className = (this.node.className + ' ' + cssClass).trim();\n }\n return this;\n };\n\n Wrapper.prototype.attributes = function(attributes) {\n var attr, i, j, len, ref, value;\n if (attributes) {\n _.each(attributes, (function(_this) {\n return function(value, name) {\n return _this.node.setAttribute(name, value);\n };\n })(this));\n return this;\n } else {\n if (this.node.attributes == null) {\n return {};\n }\n attributes = {};\n ref = this.node.attributes;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n value = ref[i];\n attr = this.node.attributes[i];\n attributes[attr.name] = attr.value;\n }\n return attributes;\n }\n };\n\n Wrapper.prototype.child = function(offset) {\n var child, length;\n child = this.node.firstChild;\n length = dom(child).length();\n while (child != null) {\n if (offset < length) {\n break;\n }\n offset -= length;\n child = child.nextSibling;\n length = dom(child).length();\n }\n if (child == null) {\n child = this.node.lastChild;\n offset = dom(child).length();\n }\n return [child, offset];\n };\n\n Wrapper.prototype.childNodes = function() {\n return _.map(this.node.childNodes);\n };\n\n Wrapper.prototype.classes = function() {\n return this.node.className.split(/\\s+/);\n };\n\n Wrapper.prototype.data = function(key, value) {\n var ref;\n if (value != null) {\n if (this.node['ql-data'] == null) {\n this.node['ql-data'] = {};\n }\n this.node['ql-data'][key] = value;\n return this;\n } else {\n return (ref = this.node['ql-data']) != null ? ref[key] : void 0;\n }\n };\n\n Wrapper.prototype.descendants = function() {\n return _.map(this.node.getElementsByTagName('*'));\n };\n\n Wrapper.prototype.get = function() {\n return this.node;\n };\n\n Wrapper.prototype.hasClass = function(cssClass) {\n if (this.node.classList != null) {\n return this.node.classList.contains(cssClass);\n } else if (this.node.className != null) {\n return this.classes().indexOf(cssClass) > -1;\n }\n return false;\n };\n\n Wrapper.prototype.isAncestor = function(ancestor, inclusive) {\n var node;\n if (inclusive == null) {\n inclusive = false;\n }\n if (ancestor === this.node) {\n return inclusive;\n }\n node = this.node;\n while (node) {\n if (node === ancestor) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n\n Wrapper.prototype.isElement = function() {\n var ref;\n return ((ref = this.node) != null ? ref.nodeType : void 0) === dom.ELEMENT_NODE;\n };\n\n Wrapper.prototype.isTextNode = function() {\n var ref;\n return ((ref = this.node) != null ? ref.nodeType : void 0) === dom.TEXT_NODE;\n };\n\n Wrapper.prototype.isolate = function(root) {\n if (this.node.nextSibling != null) {\n dom(this.node.nextSibling).splitBefore(root);\n }\n this.splitBefore(root);\n return this;\n };\n\n Wrapper.prototype.length = function() {\n var length;\n if (this.node == null) {\n return 0;\n }\n length = this.text().length;\n if (this.isElement()) {\n length += this.node.querySelectorAll(Object.keys(dom.EMBED_TAGS).join(',')).length;\n }\n return length;\n };\n\n Wrapper.prototype.merge = function(node) {\n var $node;\n $node = dom(node);\n if (this.isElement()) {\n $node.moveChildren(this.node);\n this.normalize();\n } else {\n this.text(this.text() + $node.text());\n }\n $node.remove();\n return this;\n };\n\n Wrapper.prototype.moveChildren = function(newParent) {\n _.each(this.childNodes(), function(child) {\n return newParent.appendChild(child);\n });\n return this;\n };\n\n Wrapper.prototype.nextLineNode = function(root) {\n var nextNode;\n nextNode = this.node.nextSibling;\n if ((nextNode == null) && this.node.parentNode !== root) {\n nextNode = this.node.parentNode.nextSibling;\n }\n if ((nextNode != null) && (dom.LIST_TAGS[nextNode.tagName] != null)) {\n nextNode = nextNode.firstChild;\n }\n return nextNode;\n };\n\n Wrapper.prototype.normalize = function() {\n var $node, curNode, followingNode, nextNode;\n curNode = this.node.firstChild;\n while (curNode != null) {\n nextNode = curNode.nextSibling;\n $node = dom(curNode);\n if ((nextNode != null) && dom(nextNode).isTextNode()) {\n if ($node.text().length === 0) {\n $node.remove();\n } else if ($node.isTextNode()) {\n followingNode = nextNode.nextSibling;\n $node.merge(nextNode);\n nextNode = followingNode;\n }\n }\n curNode = nextNode;\n }\n return this;\n };\n\n Wrapper.prototype.on = function(eventName, listener) {\n this.node.addEventListener(eventName, (function(_this) {\n return function(event) {\n var arg, propagate;\n arg = lastKeyEvent && (eventName === 'keydown' || eventName === 'keyup') ? lastKeyEvent : event;\n propagate = listener.call(_this.node, arg);\n if (!propagate) {\n event.preventDefault();\n event.stopPropagation();\n }\n return propagate;\n };\n })(this));\n return this;\n };\n\n Wrapper.prototype.remove = function() {\n var ref;\n if ((ref = this.node.parentNode) != null) {\n ref.removeChild(this.node);\n }\n this.node = null;\n return null;\n };\n\n Wrapper.prototype.removeClass = function(cssClass) {\n var classArray;\n if (!this.hasClass(cssClass)) {\n return;\n }\n if (this.node.classList != null) {\n this.node.classList.remove(cssClass);\n } else if (this.node.className != null) {\n classArray = this.classes();\n classArray.splice(classArray.indexOf(cssClass), 1);\n this.node.className = classArray.join(' ');\n }\n if (!this.node.getAttribute('class')) {\n this.node.removeAttribute('class');\n }\n return this;\n };\n\n Wrapper.prototype.replace = function(newNode) {\n this.node.parentNode.replaceChild(newNode, this.node);\n this.node = newNode;\n return this;\n };\n\n Wrapper.prototype.splitBefore = function(root, force) {\n var nextNode, parentClone, parentNode, refNode;\n if (force == null) {\n force = false;\n }\n if (this.node === root || this.node.parentNode === root) {\n return this;\n }\n if ((this.node.previousSibling != null) || force) {\n parentNode = this.node.parentNode;\n parentClone = parentNode.cloneNode(false);\n parentNode.parentNode.insertBefore(parentClone, parentNode.nextSibling);\n refNode = this.node;\n while (refNode != null) {\n nextNode = refNode.nextSibling;\n parentClone.appendChild(refNode);\n refNode = nextNode;\n }\n return dom(parentClone).splitBefore(root);\n } else {\n return dom(this.node.parentNode).splitBefore(root);\n }\n };\n\n Wrapper.prototype.split = function(offset, force) {\n var after, child, childLeft, childRight, left, nextRight, nodeLength, ref, ref1, right;\n if (force == null) {\n force = false;\n }\n nodeLength = this.length();\n offset = Math.max(0, offset);\n offset = Math.min(offset, nodeLength);\n if (!(force || offset !== 0)) {\n return [this.node.previousSibling, this.node, false];\n }\n if (!(force || offset !== nodeLength)) {\n return [this.node, this.node.nextSibling, false];\n }\n if (this.node.nodeType === dom.TEXT_NODE) {\n after = this.node.splitText(offset);\n return [this.node, after, true];\n } else {\n left = this.node;\n right = this.node.cloneNode(false);\n this.node.parentNode.insertBefore(right, left.nextSibling);\n ref = this.child(offset), child = ref[0], offset = ref[1];\n ref1 = dom(child).split(offset), childLeft = ref1[0], childRight = ref1[1];\n while (childRight !== null) {\n nextRight = childRight.nextSibling;\n right.appendChild(childRight);\n childRight = nextRight;\n }\n return [left, right, true];\n }\n };\n\n Wrapper.prototype.styles = function(styles, overwrite) {\n var obj, styleString;\n if (overwrite == null) {\n overwrite = false;\n }\n if (styles) {\n if (!overwrite) {\n styles = _.defaults(styles, this.styles());\n }\n styleString = _.map(styles, function(style, name) {\n return name + \": \" + style;\n }).join('; ') + ';';\n this.node.setAttribute('style', styleString);\n return this;\n } else {\n styleString = this.node.getAttribute('style') || '';\n obj = _.reduce(styleString.split(';'), function(styles, str) {\n var name, ref, value;\n ref = str.split(':'), name = ref[0], value = ref[1];\n if (name && value) {\n name = name.trim();\n value = value.trim();\n styles[name.toLowerCase()] = value;\n }\n return styles;\n }, {});\n return obj;\n }\n };\n\n Wrapper.prototype.switchTag = function(newTag) {\n var attributes, newNode;\n newTag = newTag.toUpperCase();\n if (this.node.tagName === newTag) {\n return this;\n }\n newNode = document.createElement(newTag);\n attributes = this.attributes();\n if (dom.VOID_TAGS[newTag] == null) {\n this.moveChildren(newNode);\n }\n this.replace(newNode);\n this.node = newNode;\n return this.attributes(attributes);\n };\n\n Wrapper.prototype.text = function(text) {\n if (text != null) {\n switch (this.node.nodeType) {\n case dom.ELEMENT_NODE:\n this.node.textContent = text;\n break;\n case dom.TEXT_NODE:\n this.node.data = text;\n }\n return this;\n } else {\n switch (this.node.nodeType) {\n case dom.ELEMENT_NODE:\n if (this.node.tagName === dom.DEFAULT_BREAK_TAG) {\n return \"\";\n }\n if (dom.EMBED_TAGS[this.node.tagName] != null) {\n return dom.EMBED_TEXT;\n }\n if (this.node.textContent != null) {\n return this.node.textContent;\n }\n return \"\";\n case dom.TEXT_NODE:\n return this.node.data || \"\";\n default:\n return \"\";\n }\n }\n };\n\n Wrapper.prototype.textNodes = function() {\n var textNode, textNodes, walker;\n walker = document.createTreeWalker(this.node, NodeFilter.SHOW_TEXT, null, false);\n textNodes = [];\n while (textNode = walker.nextNode()) {\n textNodes.push(textNode);\n }\n return textNodes;\n };\n\n Wrapper.prototype.toggleClass = function(className, state) {\n if (state == null) {\n state = !this.hasClass(className);\n }\n if (state) {\n this.addClass(className);\n } else {\n this.removeClass(className);\n }\n return this;\n };\n\n Wrapper.prototype.trigger = function(eventName, options) {\n var event, initFn, modifiers;\n if (options == null) {\n options = {};\n }\n if (['keypress', 'keydown', 'keyup'].indexOf(eventName) < 0) {\n event = document.createEvent('Event');\n event.initEvent(eventName, options.bubbles, options.cancelable);\n } else {\n event = document.createEvent('KeyboardEvent');\n lastKeyEvent = _.clone(options);\n if (_.isNumber(options.key)) {\n lastKeyEvent.which = options.key;\n } else if (_.isString(options.key)) {\n lastKeyEvent.which = options.key.toUpperCase().charCodeAt(0);\n } else {\n lastKeyEvent.which = 0;\n }\n if (dom.isIE(10)) {\n modifiers = [];\n if (options.altKey) {\n modifiers.push('Alt');\n }\n if (options.ctrlKey) {\n modifiers.push('Control');\n }\n if (options.metaKey) {\n modifiers.push('Meta');\n }\n if (options.shiftKey) {\n modifiers.push('Shift');\n }\n event.initKeyboardEvent(eventName, options.bubbles, options.cancelable, window, 0, 0, modifiers.join(' '), null, null);\n } else {\n initFn = _.isFunction(event.initKeyboardEvent) ? 'initKeyboardEvent' : 'initKeyEvent';\n event[initFn](eventName, options.bubbles, options.cancelable, window, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, 0, 0);\n }\n }\n this.node.dispatchEvent(event);\n lastKeyEvent = null;\n return this;\n };\n\n Wrapper.prototype.unwrap = function() {\n var next, ret;\n ret = this.node.firstChild;\n next = this.node.nextSibling;\n _.each(this.childNodes(), (function(_this) {\n return function(child) {\n return _this.node.parentNode.insertBefore(child, next);\n };\n })(this));\n this.remove();\n return ret;\n };\n\n Wrapper.prototype.wrap = function(wrapper) {\n var parent;\n if (this.node.parentNode != null) {\n this.node.parentNode.insertBefore(wrapper, this.node);\n }\n parent = wrapper;\n while (parent.firstChild != null) {\n parent = wrapper.firstChild;\n }\n parent.appendChild(this.node);\n return this;\n };\n\n return Wrapper;\n\n})();\n\nSelectWrapper = (function(superClass) {\n extend(SelectWrapper, superClass);\n\n function SelectWrapper() {\n return SelectWrapper.__super__.constructor.apply(this, arguments);\n }\n\n SelectWrapper.prototype[\"default\"] = function() {\n return this.node.querySelector('option[selected]');\n };\n\n SelectWrapper.prototype.option = function(option, trigger) {\n var child, i, j, len, ref, value;\n if (trigger == null) {\n trigger = true;\n }\n value = _.isElement(option) ? option.value : option;\n if (value) {\n value = value.replace(/[^\\w]+/g, '');\n ref = this.node.children;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n child = ref[i];\n if (child.value.replace(/[^\\w]+/g, '') === value) {\n this.node.selectedIndex = i;\n break;\n }\n }\n } else {\n this.node.selectedIndex = -1;\n }\n if (trigger) {\n this.trigger('change');\n }\n return this;\n };\n\n SelectWrapper.prototype.reset = function(trigger) {\n var option;\n if (trigger == null) {\n trigger = true;\n }\n option = this[\"default\"]();\n if (option != null) {\n option.selected = true;\n } else {\n this.node.selectedIndex = 0;\n }\n if (trigger) {\n this.trigger('change');\n }\n return this;\n };\n\n SelectWrapper.prototype.value = function() {\n if (this.node.selectedIndex > -1) {\n return this.node.options[this.node.selectedIndex].value;\n } else {\n return '';\n }\n };\n\n return SelectWrapper;\n\n})(Wrapper);\n\ndom = function(node) {\n if ((node != null ? node.tagName : void 0) === 'SELECT') {\n return new SelectWrapper(node);\n } else {\n return new Wrapper(node);\n }\n};\n\ndom = _.extend(dom, {\n ELEMENT_NODE: 1,\n NOBREAK_SPACE: \"&nbsp;\",\n TEXT_NODE: 3,\n ZERO_WIDTH_NOBREAK_SPACE: \"\\uFEFF\",\n DEFAULT_BLOCK_TAG: 'DIV',\n DEFAULT_BREAK_TAG: 'BR',\n DEFAULT_INLINE_TAG: 'SPAN',\n EMBED_TEXT: '!',\n FONT_SIZES: {\n '10px': 1,\n '13px': 2,\n '16px': 3,\n '18px': 4,\n '24px': 5,\n '32px': 6,\n '48px': 7\n },\n KEYS: {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n },\n BLOCK_TAGS: {\n 'ADDRESS': 'ADDRESS',\n 'ARTICLE': 'ARTICLE',\n 'ASIDE': 'ASIDE',\n 'AUDIO': 'AUDIO',\n 'BLOCKQUOTE': 'BLOCKQUOTE',\n 'CANVAS': 'CANVAS',\n 'DD': 'DD',\n 'DIV': 'DIV',\n 'DL': 'DL',\n 'FIGCAPTION': 'FIGCAPTION',\n 'FIGURE': 'FIGURE',\n 'FOOTER': 'FOOTER',\n 'FORM': 'FORM',\n 'H1': 'H1',\n 'H2': 'H2',\n 'H3': 'H3',\n 'H4': 'H4',\n 'H5': 'H5',\n 'H6': 'H6',\n 'HEADER': 'HEADER',\n 'HGROUP': 'HGROUP',\n 'LI': 'LI',\n 'OL': 'OL',\n 'OUTPUT': 'OUTPUT',\n 'P': 'P',\n 'PRE': 'PRE',\n 'SECTION': 'SECTION',\n 'TABLE': 'TABLE',\n 'TBODY': 'TBODY',\n 'TD': 'TD',\n 'TFOOT': 'TFOOT',\n 'TH': 'TH',\n 'THEAD': 'THEAD',\n 'TR': 'TR',\n 'UL': 'UL',\n 'VIDEO': 'VIDEO'\n },\n EMBED_TAGS: {\n 'IMG': 'IMG'\n },\n LINE_TAGS: {\n 'DIV': 'DIV',\n 'LI': 'LI'\n },\n LIST_TAGS: {\n 'OL': 'OL',\n 'UL': 'UL'\n },\n VOID_TAGS: {\n 'AREA': 'AREA',\n 'BASE': 'BASE',\n 'BR': 'BR',\n 'COL': 'COL',\n 'COMMAND': 'COMMAND',\n 'EMBED': 'EMBED',\n 'HR': 'HR',\n 'IMG': 'IMG',\n 'INPUT': 'INPUT',\n 'KEYGEN': 'KEYGEN',\n 'LINK': 'LINK',\n 'META': 'META',\n 'PARAM': 'PARAM',\n 'SOURCE': 'SOURCE',\n 'TRACK': 'TRACK',\n 'WBR': 'WBR'\n },\n convertFontSize: function(size) {\n var i, s, sources, targets;\n if (_.isString(size) && size.indexOf('px') > -1) {\n sources = Object.keys(dom.FONT_SIZES);\n targets = _.values(dom.FONT_SIZES);\n } else {\n targets = Object.keys(dom.FONT_SIZES);\n sources = _.values(dom.FONT_SIZES);\n }\n for (i in sources) {\n s = sources[i];\n if (parseInt(size) <= parseInt(s)) {\n return targets[i];\n }\n }\n return _.last(targets);\n },\n isIE: function(maxVersion) {\n var version;\n version = document.documentMode;\n return version && maxVersion >= version;\n },\n isIOS: function() {\n return /iPhone|iPad/i.test(navigator.userAgent);\n },\n isMac: function() {\n return /Mac/i.test(navigator.platform);\n }\n});\n\nmodule.exports = dom;\n\n\n},{\"lodash\":1}],18:[function(_dereq_,module,exports){\nvar LinkedList, Node;\n\nNode = (function() {\n function Node(data) {\n this.data = data;\n this.prev = this.next = null;\n }\n\n return Node;\n\n})();\n\nLinkedList = (function() {\n LinkedList.Node = Node;\n\n function LinkedList() {\n this.length = 0;\n this.first = this.last = null;\n }\n\n LinkedList.prototype.append = function(node) {\n if (this.first != null) {\n node.next = null;\n this.last.next = node;\n } else {\n this.first = node;\n }\n node.prev = this.last;\n this.last = node;\n return this.length += 1;\n };\n\n LinkedList.prototype.insertAfter = function(refNode, newNode) {\n newNode.prev = refNode;\n if (refNode != null) {\n newNode.next = refNode.next;\n if (refNode.next != null) {\n refNode.next.prev = newNode;\n }\n refNode.next = newNode;\n if (refNode === this.last) {\n this.last = newNode;\n }\n } else {\n newNode.next = this.first;\n this.first.prev = newNode;\n this.first = newNode;\n }\n return this.length += 1;\n };\n\n LinkedList.prototype.remove = function(node) {\n if (this.length > 1) {\n if (node.prev != null) {\n node.prev.next = node.next;\n }\n if (node.next != null) {\n node.next.prev = node.prev;\n }\n if (node === this.first) {\n this.first = node.next;\n }\n if (node === this.last) {\n this.last = node.prev;\n }\n } else {\n this.first = this.last = null;\n }\n node.prev = node.next = null;\n return this.length -= 1;\n };\n\n LinkedList.prototype.toArray = function() {\n var arr, cur;\n arr = [];\n cur = this.first;\n while (cur != null) {\n arr.push(cur);\n cur = cur.next;\n }\n return arr;\n };\n\n return LinkedList;\n\n})();\n\nmodule.exports = LinkedList;\n\n\n},{}],19:[function(_dereq_,module,exports){\nvar Picker, _, dom;\n\n_ = _dereq_('lodash');\n\ndom = _dereq_('./dom');\n\nPicker = (function() {\n Picker.TEMPLATE = '<span class=\"ql-picker-label\"></span><span class=\"ql-picker-options\"></span>';\n\n function Picker(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n dom(this.container).addClass('ql-picker');\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n dom(document).on('click', (function(_this) {\n return function() {\n _this.close();\n return true;\n };\n })(this));\n dom(this.label).on('click', (function(_this) {\n return function() {\n _.defer(function() {\n return dom(_this.container).toggleClass('ql-expanded');\n });\n return false;\n };\n })(this));\n dom(this.select).on('change', (function(_this) {\n return function() {\n var item, option;\n if (_this.select.selectedIndex > -1) {\n item = _this.container.querySelectorAll('.ql-picker-item')[_this.select.selectedIndex];\n option = _this.select.options[_this.select.selectedIndex];\n }\n _this.selectItem(item, false);\n return dom(_this.label).toggleClass('ql-active', option !== dom(_this.select)[\"default\"]());\n };\n })(this));\n }\n\n Picker.prototype.buildItem = function(picker, option, index) {\n var item;\n item = document.createElement('span');\n item.setAttribute('data-value', option.getAttribute('value'));\n dom(item).addClass('ql-picker-item').text(dom(option).text()).on('click', (function(_this) {\n return function() {\n _this.selectItem(item, true);\n return _this.close();\n };\n })(this));\n if (this.select.selectedIndex === index) {\n this.selectItem(item, false);\n }\n return item;\n };\n\n Picker.prototype.buildPicker = function() {\n var picker;\n _.each(dom(this.select).attributes(), (function(_this) {\n return function(value, name) {\n return _this.container.setAttribute(name, value);\n };\n })(this));\n this.container.innerHTML = Picker.TEMPLATE;\n this.label = this.container.querySelector('.ql-picker-label');\n picker = this.container.querySelector('.ql-picker-options');\n return _.each(this.select.options, (function(_this) {\n return function(option, i) {\n var item;\n item = _this.buildItem(picker, option, i);\n return picker.appendChild(item);\n };\n })(this));\n };\n\n Picker.prototype.close = function() {\n return dom(this.container).removeClass('ql-expanded');\n };\n\n Picker.prototype.selectItem = function(item, trigger) {\n var selected, value;\n selected = this.container.querySelector('.ql-selected');\n if (selected != null) {\n dom(selected).removeClass('ql-selected');\n }\n if (item != null) {\n value = item.getAttribute('data-value');\n dom(item).addClass('ql-selected');\n dom(this.label).text(dom(item).text());\n dom(this.select).option(value, trigger);\n return this.label.setAttribute('data-value', value);\n } else {\n this.label.innerHTML = '&nbsp;';\n return this.label.removeAttribute('data-value');\n }\n };\n\n return Picker;\n\n})();\n\nmodule.exports = Picker;\n\n\n},{\"./dom\":17,\"lodash\":1}],20:[function(_dereq_,module,exports){\nvar Range, _;\n\n_ = _dereq_('lodash');\n\nRange = (function() {\n Range.compare = function(r1, r2) {\n if (r1 === r2) {\n return true;\n }\n if (!((r1 != null) && (r2 != null))) {\n return false;\n }\n return r1.equals(r2);\n };\n\n function Range(start, end) {\n this.start = start;\n this.end = end;\n }\n\n Range.prototype.equals = function(range) {\n if (range == null) {\n return false;\n }\n return this.start === range.start && this.end === range.end;\n };\n\n Range.prototype.shift = function(index, length) {\n var ref;\n return ref = _.map([this.start, this.end], function(pos) {\n if (index > pos) {\n return pos;\n }\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n }), this.start = ref[0], this.end = ref[1], ref;\n };\n\n Range.prototype.isCollapsed = function() {\n return this.start === this.end;\n };\n\n return Range;\n\n})();\n\nmodule.exports = Range;\n\n\n},{\"lodash\":1}],21:[function(_dereq_,module,exports){\nvar Authorship, Delta, Quill, _, dom;\n\nQuill = _dereq_('../quill');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nDelta = Quill.require('delta');\n\nAuthorship = (function() {\n Authorship.DEFAULTS = {\n authorId: null,\n color: 'transparent',\n enabled: false\n };\n\n function Authorship(quill, options) {\n this.quill = quill;\n this.options = options;\n if (this.options.button != null) {\n this.attachButton(this.options.button);\n }\n if (this.options.enabled) {\n this.enable();\n }\n this.quill.addFormat('author', {\n \"class\": 'author-'\n });\n if (this.options.authorId == null) {\n return;\n }\n this.quill.on(this.quill.constructor.events.PRE_EVENT, (function(_this) {\n return function(eventName, delta, origin) {\n var authorDelta, authorFormat;\n if (eventName === _this.quill.constructor.events.TEXT_CHANGE && origin === 'user') {\n authorDelta = new Delta();\n authorFormat = {\n author: _this.options.authorId\n };\n _.each(delta.ops, function(op) {\n if (op[\"delete\"] != null) {\n return;\n }\n if ((op.insert != null) || ((op.retain != null) && (op.attributes != null))) {\n op.attributes || (op.attributes = {});\n op.attributes.author = _this.options.authorId;\n return authorDelta.retain(op.retain || op.insert.length || 1, authorFormat);\n } else {\n return authorDelta.retain(op.retain);\n }\n });\n return _this.quill.updateContents(authorDelta, Quill.sources.SILENT);\n }\n };\n })(this));\n this.addAuthor(this.options.authorId, this.options.color);\n }\n\n Authorship.prototype.addAuthor = function(id, color) {\n var styles;\n styles = {};\n styles[\".authorship .author-\" + id] = {\n \"background-color\": \"\" + color\n };\n return this.quill.theme.addStyles(styles);\n };\n\n Authorship.prototype.attachButton = function(button) {\n var $button;\n $button = dom(button);\n return $button.on('click', (function(_this) {\n return function() {\n $button.toggleClass('ql-on');\n return _this.enable($dom.hasClass('ql-on'));\n };\n })(this));\n };\n\n Authorship.prototype.enable = function(enabled) {\n if (enabled == null) {\n enabled = true;\n }\n return dom(this.quill.root).toggleClass('authorship', enabled);\n };\n\n Authorship.prototype.disable = function() {\n return this.enable(false);\n };\n\n return Authorship;\n\n})();\n\nQuill.registerModule('authorship', Authorship);\n\nmodule.exports = Authorship;\n\n\n},{\"../quill\":30}],22:[function(_dereq_,module,exports){\nvar Delta, ImageTooltip, Quill, Range, Tooltip, _, dom,\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\nQuill = _dereq_('../quill');\n\nTooltip = _dereq_('./tooltip');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nDelta = Quill.require('delta');\n\nRange = Quill.require('range');\n\nImageTooltip = (function(superClass) {\n extend(ImageTooltip, superClass);\n\n ImageTooltip.DEFAULTS = {\n template: '<input class=\"input\" type=\"textbox\"> <div class=\"preview\"> <span>Preview</span> </div> <a href=\"javascript:;\" class=\"cancel\">Cancel</a> <a href=\"javascript:;\" class=\"insert\">Insert</a>'\n };\n\n function ImageTooltip(quill, options) {\n this.quill = quill;\n this.options = options;\n this.options = _.defaults(this.options, Tooltip.DEFAULTS);\n ImageTooltip.__super__.constructor.call(this, this.quill, this.options);\n this.preview = this.container.querySelector('.preview');\n this.textbox = this.container.querySelector('.input');\n dom(this.container).addClass('ql-image-tooltip');\n this.initListeners();\n }\n\n ImageTooltip.prototype.initListeners = function() {\n dom(this.quill.root).on('focus', _.bind(this.hide, this));\n dom(this.container.querySelector('.insert')).on('click', _.bind(this.insertImage, this));\n dom(this.container.querySelector('.cancel')).on('click', _.bind(this.hide, this));\n dom(this.textbox).on('input', _.bind(this._preview, this));\n this.initTextbox(this.textbox, this.insertImage, this.hide);\n return this.quill.onModuleLoad('toolbar', (function(_this) {\n return function(toolbar) {\n _this.toolbar = toolbar;\n return toolbar.initFormat('image', _.bind(_this._onToolbar, _this));\n };\n })(this));\n };\n\n ImageTooltip.prototype.insertImage = function() {\n var index, url;\n url = this._normalizeURL(this.textbox.value);\n if (this.range == null) {\n this.range = new Range(0, 0);\n }\n if (this.range) {\n this.preview.innerHTML = '<span>Preview</span>';\n this.textbox.value = '';\n index = this.range.end;\n this.quill.insertEmbed(index, 'image', url, 'user');\n this.quill.setSelection(index + 1, index + 1);\n }\n return this.hide();\n };\n\n ImageTooltip.prototype._onToolbar = function(range, value) {\n if (value) {\n if (!this.textbox.value) {\n this.textbox.value = 'http://';\n }\n this.show();\n this.textbox.focus();\n return _.defer((function(_this) {\n return function() {\n return _this.textbox.setSelectionRange(_this.textbox.value.length, _this.textbox.value.length);\n };\n })(this));\n } else {\n this.quill.deleteText(range, 'user');\n return this.toolbar.setActive('image', false);\n }\n };\n\n ImageTooltip.prototype._preview = function() {\n var img;\n if (!this._matchImageURL(this.textbox.value)) {\n return;\n }\n if (this.preview.firstChild.tagName === 'IMG') {\n return this.preview.firstChild.setAttribute('src', this.textbox.value);\n } else {\n img = document.createElement('img');\n img.setAttribute('src', this.textbox.value);\n return this.preview.replaceChild(img, this.preview.firstChild);\n }\n };\n\n ImageTooltip.prototype._matchImageURL = function(url) {\n return /^https?:\\/\\/.+\\.(jpe?g|gif|png)$/.test(url);\n };\n\n ImageTooltip.prototype._normalizeURL = function(url) {\n if (!/^https?:\\/\\//.test(url)) {\n url = 'http://' + url;\n }\n return url;\n };\n\n return ImageTooltip;\n\n})(Tooltip);\n\nQuill.registerModule('image-tooltip', ImageTooltip);\n\nmodule.exports = ImageTooltip;\n\n\n},{\"../quill\":30,\"./tooltip\":28}],23:[function(_dereq_,module,exports){\nvar Delta, Keyboard, Quill, _, dom;\n\nQuill = _dereq_('../quill');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nDelta = Quill.require('delta');\n\nKeyboard = (function() {\n Keyboard.hotkeys = {\n BOLD: {\n key: 'B',\n metaKey: true\n },\n INDENT: {\n key: dom.KEYS.TAB\n },\n ITALIC: {\n key: 'I',\n metaKey: true\n },\n OUTDENT: {\n key: dom.KEYS.TAB,\n shiftKey: true\n },\n UNDERLINE: {\n key: 'U',\n metaKey: true\n }\n };\n\n function Keyboard(quill, options) {\n this.quill = quill;\n this.hotkeys = {};\n this._initListeners();\n this._initHotkeys();\n this.quill.onModuleLoad('toolbar', (function(_this) {\n return function(toolbar) {\n return _this.toolbar = toolbar;\n };\n })(this));\n }\n\n Keyboard.prototype.addHotkey = function(hotkeys, callback) {\n if (!Array.isArray(hotkeys)) {\n hotkeys = [hotkeys];\n }\n return _.each(hotkeys, (function(_this) {\n return function(hotkey) {\n var base, which;\n hotkey = _.isObject(hotkey) ? _.clone(hotkey) : {\n key: hotkey\n };\n hotkey.callback = callback;\n which = _.isNumber(hotkey.key) ? hotkey.key : hotkey.key.toUpperCase().charCodeAt(0);\n if ((base = _this.hotkeys)[which] == null) {\n base[which] = [];\n }\n return _this.hotkeys[which].push(hotkey);\n };\n })(this));\n };\n\n Keyboard.prototype.removeHotkeys = function(hotkey, callback) {\n var base, kept, ref, removed, which;\n hotkey = _.isString(hotkey) ? hotkey.toUpperCase() : hotkey;\n hotkey = Keyboard.hotkeys[hotkey] ? Keyboard.hotkeys[hotkey] : hotkey;\n hotkey = _.isObject(hotkey) ? hotkey : {\n key: hotkey\n };\n which = _.isNumber(hotkey.key) ? hotkey.key : hotkey.key.charCodeAt(0);\n if ((base = this.hotkeys)[which] == null) {\n base[which] = [];\n }\n ref = _.partition(this.hotkeys[which], function(handler) {\n return _.isEqual(hotkey, _.omit(handler, 'callback')) && (!callback || callback === handler.callback);\n }), removed = ref[0], kept = ref[1];\n this.hotkeys[which] = kept;\n return _.map(removed, 'callback');\n };\n\n Keyboard.prototype.toggleFormat = function(range, format) {\n var delta, value;\n if (range.isCollapsed()) {\n delta = this.quill.getContents(Math.max(0, range.start - 1), range.end);\n } else {\n delta = this.quill.getContents(range);\n }\n value = delta.ops.length === 0 || !_.all(delta.ops, function(op) {\n var ref;\n return (ref = op.attributes) != null ? ref[format] : void 0;\n });\n if (range.isCollapsed()) {\n this.quill.prepareFormat(format, value, Quill.sources.USER);\n } else {\n this.quill.formatText(range, format, value, Quill.sources.USER);\n }\n if (this.toolbar != null) {\n return this.toolbar.setActive(format, value);\n }\n };\n\n Keyboard.prototype._initEnter = function() {\n var keys;\n keys = [\n {\n key: dom.KEYS.ENTER\n }, {\n key: dom.KEYS.ENTER,\n shiftKey: true\n }\n ];\n return this.addHotkey(keys, (function(_this) {\n return function(range, hotkey) {\n var delta, leaf, line, offset, ref, ref1;\n if (range == null) {\n return true;\n }\n ref = _this.quill.editor.doc.findLineAt(range.start), line = ref[0], offset = ref[1];\n ref1 = line.findLeafAt(offset), leaf = ref1[0], offset = ref1[1];\n delta = new Delta().retain(range.start).insert('\\n', line.formats)[\"delete\"](range.end - range.start);\n _this.quill.updateContents(delta, Quill.sources.USER);\n _.each(leaf.formats, function(value, format) {\n _this.quill.prepareFormat(format, value);\n if (_this.toolbar != null) {\n _this.toolbar.setActive(format, value);\n }\n });\n _this.quill.editor.selection.scrollIntoView();\n return false;\n };\n })(this));\n };\n\n Keyboard.prototype._initDeletes = function() {\n return this.addHotkey([dom.KEYS.DELETE, dom.KEYS.BACKSPACE], (function(_this) {\n return function(range, hotkey) {\n var format, line, offset, ref;\n if ((range != null) && _this.quill.getLength() > 0) {\n if (range.start !== range.end) {\n _this.quill.deleteText(range.start, range.end, Quill.sources.USER);\n } else {\n if (hotkey.key === dom.KEYS.BACKSPACE) {\n ref = _this.quill.editor.doc.findLineAt(range.start), line = ref[0], offset = ref[1];\n if (offset === 0 && (line.formats.bullet || line.formats.list)) {\n format = line.formats.bullet ? 'bullet' : 'list';\n _this.quill.formatLine(range.start, range.start, format, false, Quill.sources.USER);\n } else if (range.start > 0) {\n _this.quill.deleteText(range.start - 1, range.start, Quill.sources.USER);\n }\n } else if (range.start < _this.quill.getLength() - 1) {\n _this.quill.deleteText(range.start, range.start + 1, Quill.sources.USER);\n }\n }\n }\n _this.quill.editor.selection.scrollIntoView();\n return false;\n };\n })(this));\n };\n\n Keyboard.prototype._initHotkeys = function() {\n this.addHotkey(Keyboard.hotkeys.INDENT, (function(_this) {\n return function(range) {\n _this._onTab(range, false);\n return false;\n };\n })(this));\n this.addHotkey(Keyboard.hotkeys.OUTDENT, (function(_this) {\n return function(range) {\n return false;\n };\n })(this));\n _.each(['bold', 'italic', 'underline'], (function(_this) {\n return function(format) {\n return _this.addHotkey(Keyboard.hotkeys[format.toUpperCase()], function(range) {\n if (_this.quill.editor.doc.formats[format]) {\n _this.toggleFormat(range, format);\n }\n return false;\n });\n };\n })(this));\n this._initDeletes();\n return this._initEnter();\n };\n\n Keyboard.prototype._initListeners = function() {\n return dom(this.quill.root).on('keydown', (function(_this) {\n return function(event) {\n var prevent;\n prevent = false;\n _.each(_this.hotkeys[event.which], function(hotkey) {\n var metaKey;\n metaKey = dom.isMac() ? event.metaKey : event.metaKey || event.ctrlKey;\n if (!!hotkey.metaKey !== !!metaKey) {\n return;\n }\n if (!!hotkey.shiftKey !== !!event.shiftKey) {\n return;\n }\n if (!!hotkey.altKey !== !!event.altKey) {\n return;\n }\n prevent = hotkey.callback(_this.quill.getSelection(), hotkey, event) === false || prevent;\n return true;\n });\n return !prevent;\n };\n })(this));\n };\n\n Keyboard.prototype._onTab = function(range, shift) {\n var delta;\n if (shift == null) {\n shift = false;\n }\n delta = new Delta().retain(range.start).insert(\"\\t\")[\"delete\"](range.end - range.start).retain(this.quill.getLength() - range.end);\n this.quill.updateContents(delta, Quill.sources.USER);\n return this.quill.setSelection(range.start + 1, range.start + 1);\n };\n\n return Keyboard;\n\n})();\n\nQuill.registerModule('keyboard', Keyboard);\n\nmodule.exports = Keyboard;\n\n\n},{\"../quill\":30}],24:[function(_dereq_,module,exports){\nvar LinkTooltip, Quill, Tooltip, _, dom,\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\nQuill = _dereq_('../quill');\n\nTooltip = _dereq_('./tooltip');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nLinkTooltip = (function(superClass) {\n extend(LinkTooltip, superClass);\n\n LinkTooltip.DEFAULTS = {\n maxLength: 50,\n template: '<span class=\"title\">Visit URL:&nbsp;</span> <a href=\"#\" class=\"url\" target=\"_blank\" href=\"about:blank\"></a> <input class=\"input\" type=\"text\"> <span>&nbsp;&#45;&nbsp;</span> <a href=\"javascript:;\" class=\"change\">Change</a> <a href=\"javascript:;\" class=\"remove\">Remove</a> <a href=\"javascript:;\" class=\"done\">Done</a>'\n };\n\n LinkTooltip.hotkeys = {\n LINK: {\n key: 'K',\n metaKey: true\n }\n };\n\n function LinkTooltip(quill, options) {\n this.quill = quill;\n this.options = options;\n this.options = _.defaults(this.options, Tooltip.DEFAULTS);\n LinkTooltip.__super__.constructor.call(this, this.quill, this.options);\n dom(this.container).addClass('ql-link-tooltip');\n this.textbox = this.container.querySelector('.input');\n this.link = this.container.querySelector('.url');\n this.initListeners();\n }\n\n LinkTooltip.prototype.initListeners = function() {\n this.quill.on(this.quill.constructor.events.SELECTION_CHANGE, (function(_this) {\n return function(range) {\n var anchor;\n if (!((range != null) && range.isCollapsed())) {\n return;\n }\n anchor = _this._findAnchor(range);\n if (anchor) {\n _this.setMode(anchor.href, false);\n return _this.show(anchor);\n } else if (_this.container.style.left !== Tooltip.HIDE_MARGIN) {\n _this.range = null;\n return _this.hide();\n }\n };\n })(this));\n dom(this.container.querySelector('.done')).on('click', _.bind(this.saveLink, this));\n dom(this.container.querySelector('.remove')).on('click', (function(_this) {\n return function() {\n return _this.removeLink(_this.range);\n };\n })(this));\n dom(this.container.querySelector('.change')).on('click', (function(_this) {\n return function() {\n return _this.setMode(_this.link.href, true);\n };\n })(this));\n this.initTextbox(this.textbox, this.saveLink, this.hide);\n this.quill.onModuleLoad('toolbar', (function(_this) {\n return function(toolbar) {\n _this.toolbar = toolbar;\n return toolbar.initFormat('link', _.bind(_this._onToolbar, _this));\n };\n })(this));\n return this.quill.onModuleLoad('keyboard', (function(_this) {\n return function(keyboard) {\n return keyboard.addHotkey(LinkTooltip.hotkeys.LINK, _.bind(_this._onKeyboard, _this));\n };\n })(this));\n };\n\n LinkTooltip.prototype.saveLink = function() {\n var anchor, end, url;\n url = this._normalizeURL(this.textbox.value);\n if (this.range != null) {\n end = this.range.end;\n if (this.range.isCollapsed()) {\n anchor = this._findAnchor(this.range);\n if (anchor != null) {\n anchor.href = url;\n }\n } else {\n this.quill.formatText(this.range, 'link', url, 'user');\n }\n this.quill.setSelection(end, end);\n }\n return this.setMode(url, false);\n };\n\n LinkTooltip.prototype.removeLink = function(range) {\n if (range.isCollapsed()) {\n range = this._expandRange(range);\n }\n this.hide();\n this.quill.formatText(range, 'link', false, 'user');\n if (this.toolbar != null) {\n return this.toolbar.setActive('link', false);\n }\n };\n\n LinkTooltip.prototype.setMode = function(url, edit) {\n var text;\n if (edit == null) {\n edit = false;\n }\n if (edit) {\n this.textbox.value = url;\n _.defer((function(_this) {\n return function() {\n _this.textbox.focus();\n return _this.textbox.setSelectionRange(0, url.length);\n };\n })(this));\n } else {\n this.link.href = url;\n url = this.link.href;\n text = url.length > this.options.maxLength ? url.slice(0, this.options.maxLength) + '...' : url;\n dom(this.link).text(text);\n }\n return dom(this.container).toggleClass('editing', edit);\n };\n\n LinkTooltip.prototype._findAnchor = function(range) {\n var leaf, node, offset, ref;\n ref = this.quill.editor.doc.findLeafAt(range.start, true), leaf = ref[0], offset = ref[1];\n if (leaf != null) {\n node = leaf.node;\n }\n while ((node != null) && node !== this.quill.root) {\n if (node.tagName === 'A') {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n\n LinkTooltip.prototype._expandRange = function(range) {\n var end, leaf, offset, ref, start;\n ref = this.quill.editor.doc.findLeafAt(range.start, true), leaf = ref[0], offset = ref[1];\n start = range.start - offset;\n end = start + leaf.length;\n return {\n start: start,\n end: end\n };\n };\n\n LinkTooltip.prototype._onToolbar = function(range, value) {\n return this._toggle(range, value);\n };\n\n LinkTooltip.prototype._onKeyboard = function() {\n var range;\n range = this.quill.getSelection();\n return this._toggle(range, !this._findAnchor(range));\n };\n\n LinkTooltip.prototype._toggle = function(range, value) {\n var nativeRange;\n if (!range) {\n return;\n }\n if (!value) {\n return this.removeLink(range);\n } else if (!range.isCollapsed()) {\n this.setMode(this._suggestURL(range), true);\n nativeRange = this.quill.editor.selection._getNativeRange();\n return this.show(nativeRange);\n }\n };\n\n LinkTooltip.prototype._normalizeURL = function(url) {\n if (!/^(https?:\\/\\/|mailto:)/.test(url)) {\n url = 'http://' + url;\n }\n return url;\n };\n\n LinkTooltip.prototype._suggestURL = function(range) {\n var text;\n text = this.quill.getText(range);\n return this._normalizeURL(text);\n };\n\n return LinkTooltip;\n\n})(Tooltip);\n\nQuill.registerModule('link-tooltip', LinkTooltip);\n\nmodule.exports = LinkTooltip;\n\n\n},{\"../quill\":30,\"./tooltip\":28}],25:[function(_dereq_,module,exports){\nvar EventEmitter2, MultiCursor, Quill, _, dom,\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\nQuill = _dereq_('../quill');\n\nEventEmitter2 = _dereq_('eventemitter2').EventEmitter2;\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nMultiCursor = (function(superClass) {\n extend(MultiCursor, superClass);\n\n MultiCursor.DEFAULTS = {\n template: '<span class=\"cursor-flag\"> <span class=\"cursor-name\"></span> </span> <span class=\"cursor-caret\"></span>',\n timeout: 2500\n };\n\n MultiCursor.events = {\n CURSOR_ADDED: 'cursor-addded',\n CURSOR_MOVED: 'cursor-moved',\n CURSOR_REMOVED: 'cursor-removed'\n };\n\n function MultiCursor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.cursors = {};\n this.container = this.quill.addContainer('ql-multi-cursor', true);\n this.quill.on(this.quill.constructor.events.TEXT_CHANGE, _.bind(this._applyDelta, this));\n }\n\n MultiCursor.prototype.clearCursors = function() {\n _.each(Object.keys(this.cursors), _.bind(this.removeCursor, this));\n return this.cursors = {};\n };\n\n MultiCursor.prototype.moveCursor = function(userId, index) {\n var cursor;\n cursor = this.cursors[userId];\n if (cursor == null) {\n return;\n }\n cursor.index = index;\n dom(cursor.elem).removeClass('hidden');\n clearTimeout(cursor.timer);\n cursor.timer = setTimeout((function(_this) {\n return function() {\n dom(cursor.elem).addClass('hidden');\n return cursor.timer = null;\n };\n })(this), this.options.timeout);\n this._updateCursor(cursor);\n return cursor;\n };\n\n MultiCursor.prototype.removeCursor = function(userId) {\n var cursor;\n cursor = this.cursors[userId];\n this.emit(MultiCursor.events.CURSOR_REMOVED, cursor);\n if (cursor != null) {\n cursor.elem.parentNode.removeChild(cursor.elem);\n }\n return delete this.cursors[userId];\n };\n\n MultiCursor.prototype.setCursor = function(userId, index, name, color) {\n var cursor;\n if (this.cursors[userId] == null) {\n this.cursors[userId] = cursor = {\n userId: userId,\n index: index,\n color: color,\n elem: this._buildCursor(name, color)\n };\n this.emit(MultiCursor.events.CURSOR_ADDED, cursor);\n }\n _.defer((function(_this) {\n return function() {\n return _this.moveCursor(userId, index);\n };\n })(this));\n return this.cursors[userId];\n };\n\n MultiCursor.prototype.shiftCursors = function(index, length, authorId) {\n if (authorId == null) {\n authorId = null;\n }\n return _.each(this.cursors, (function(_this) {\n return function(cursor, id) {\n var shift;\n if (!cursor) {\n return;\n }\n shift = Math.max(length, index - cursor.index);\n if (cursor.userId === authorId) {\n return _this.moveCursor(authorId, cursor.index + shift);\n } else if (cursor.index > index) {\n return cursor.index += shift;\n }\n };\n })(this));\n };\n\n MultiCursor.prototype.update = function() {\n return _.each(this.cursors, (function(_this) {\n return function(cursor, id) {\n if (cursor == null) {\n return;\n }\n _this._updateCursor(cursor);\n return true;\n };\n })(this));\n };\n\n MultiCursor.prototype._applyDelta = function(delta) {\n var index;\n index = 0;\n _.each(delta.ops, (function(_this) {\n return function(op) {\n var length, ref;\n length = 0;\n if (op.insert != null) {\n length = op.insert.length || 1;\n _this.shiftCursors(index, length, (ref = op.attributes) != null ? ref['author'] : void 0);\n } else if (op[\"delete\"] != null) {\n _this.shiftCursors(index, -1 * op[\"delete\"], null);\n } else if (op.retain != null) {\n _this.shiftCursors(index, 0, null);\n length = op.retain;\n }\n return index += length;\n };\n })(this));\n return this.update();\n };\n\n MultiCursor.prototype._buildCursor = function(name, color) {\n var cursor, cursorCaret, cursorFlag, cursorName;\n cursor = document.createElement('span');\n dom(cursor).addClass('cursor');\n cursor.innerHTML = this.options.template;\n cursorFlag = cursor.querySelector('.cursor-flag');\n cursorName = cursor.querySelector('.cursor-name');\n dom(cursorName).text(name);\n cursorCaret = cursor.querySelector('.cursor-caret');\n cursorCaret.style.backgroundColor = cursorName.style.backgroundColor = color;\n this.container.appendChild(cursor);\n return cursor;\n };\n\n MultiCursor.prototype._updateCursor = function(cursor) {\n var bounds, flag;\n bounds = this.quill.getBounds(cursor.index);\n if (bounds == null) {\n return this.removeCursor(cursor.userId);\n }\n cursor.elem.style.top = (bounds.top + this.quill.container.scrollTop) + 'px';\n cursor.elem.style.left = bounds.left + 'px';\n cursor.elem.style.height = bounds.height + 'px';\n flag = cursor.elem.querySelector('.cursor-flag');\n dom(cursor.elem).toggleClass('top', parseInt(cursor.elem.style.top) <= flag.offsetHeight).toggleClass('left', parseInt(cursor.elem.style.left) <= flag.offsetWidth).toggleClass('right', this.quill.root.offsetWidth - parseInt(cursor.elem.style.left) <= flag.offsetWidth);\n return this.emit(MultiCursor.events.CURSOR_MOVED, cursor);\n };\n\n return MultiCursor;\n\n})(EventEmitter2);\n\nQuill.registerModule('multi-cursor', MultiCursor);\n\nmodule.exports = MultiCursor;\n\n\n},{\"../quill\":30,\"eventemitter2\":2}],26:[function(_dereq_,module,exports){\nvar Delta, Document, PasteManager, Quill, _, dom,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\nQuill = _dereq_('../quill');\n\nDocument = _dereq_('../core/document');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nDelta = Quill.require('delta');\n\nPasteManager = (function() {\n PasteManager.DEFAULTS = {\n onConvert: null\n };\n\n function PasteManager(quill, options) {\n var base;\n this.quill = quill;\n this._onConvert = bind(this._onConvert, this);\n this.container = this.quill.addContainer('ql-paste-manager');\n this.container.setAttribute('contenteditable', true);\n this.container.setAttribute('tabindex', '-1');\n dom(this.quill.root).on('paste', _.bind(this._paste, this));\n this.options = _.defaults(options, PasteManager.DEFAULTS);\n if ((base = this.options).onConvert == null) {\n base.onConvert = this._onConvert;\n }\n }\n\n PasteManager.prototype._onConvert = function(container) {\n var delta, doc, lengthAdded;\n doc = new Document(container, this.quill.options);\n delta = doc.toDelta();\n lengthAdded = delta.length();\n if (lengthAdded === 0) {\n return delta;\n }\n return delta.compose(new Delta().retain(lengthAdded - 1)[\"delete\"](1));\n };\n\n PasteManager.prototype._paste = function() {\n var oldDocLength, range;\n oldDocLength = this.quill.getLength();\n range = this.quill.getSelection();\n if (range == null) {\n return;\n }\n this.container.focus();\n return _.defer((function(_this) {\n return function() {\n var delta, lengthAdded;\n delta = _this.options.onConvert(_this.container);\n lengthAdded = delta.length();\n if (lengthAdded > 0) {\n if (range.start > 0) {\n delta.ops.unshift({\n retain: range.start\n });\n }\n delta[\"delete\"](range.end - range.start);\n _this.quill.updateContents(delta, 'user');\n }\n _this.quill.setSelection(range.start + lengthAdded, range.start + lengthAdded);\n _this.quill.editor.selection.scrollIntoView();\n return _this.container.innerHTML = \"\";\n };\n })(this));\n };\n\n return PasteManager;\n\n})();\n\nQuill.registerModule('paste-manager', PasteManager);\n\nmodule.exports = PasteManager;\n\n\n},{\"../core/document\":8,\"../quill\":30}],27:[function(_dereq_,module,exports){\nvar Quill, Toolbar, _, dom;\n\nQuill = _dereq_('../quill');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nToolbar = (function() {\n Toolbar.DEFAULTS = {\n container: null\n };\n\n Toolbar.formats = {\n LINE: {\n 'align': 'align',\n 'bullet': 'bullet',\n 'list': 'list'\n },\n SELECT: {\n 'align': 'align',\n 'background': 'background',\n 'color': 'color',\n 'font': 'font',\n 'size': 'size'\n },\n TOGGLE: {\n 'bold': 'bold',\n 'bullet': 'bullet',\n 'image': 'image',\n 'italic': 'italic',\n 'link': 'link',\n 'list': 'list',\n 'strike': 'strike',\n 'underline': 'underline'\n },\n TOOLTIP: {\n 'image': 'image',\n 'link': 'link'\n }\n };\n\n function Toolbar(quill, options) {\n this.quill = quill;\n this.options = options;\n if (_.isString(this.options) || _.isElement(this.options)) {\n this.options = {\n container: this.options\n };\n }\n if (this.options.container == null) {\n throw new Error('container required for toolbar', this.options);\n }\n this.container = _.isString(this.options.container) ? document.querySelector(this.options.container) : this.options.container;\n this.inputs = {};\n this.preventUpdate = false;\n this.triggering = false;\n _.each(this.quill.options.formats, (function(_this) {\n return function(name) {\n if (Toolbar.formats.TOOLTIP[name] != null) {\n return;\n }\n return _this.initFormat(name, _.bind(_this._applyFormat, _this, name));\n };\n })(this));\n this.quill.on(Quill.events.FORMAT_INIT, (function(_this) {\n return function(name) {\n if (Toolbar.formats.TOOLTIP[name] != null) {\n return;\n }\n return _this.initFormat(name, _.bind(_this._applyFormat, _this, name));\n };\n })(this));\n this.quill.on(Quill.events.SELECTION_CHANGE, (function(_this) {\n return function(range) {\n if (range != null) {\n return _this.updateActive(range);\n }\n };\n })(this));\n this.quill.on(Quill.events.TEXT_CHANGE, (function(_this) {\n return function() {\n return _this.updateActive();\n };\n })(this));\n this.quill.onModuleLoad('keyboard', (function(_this) {\n return function(keyboard) {\n return keyboard.addHotkey([dom.KEYS.BACKSPACE, dom.KEYS.DELETE], function() {\n return _.defer(_.bind(_this.updateActive, _this));\n });\n };\n })(this));\n dom(this.container).addClass('ql-toolbar');\n if (dom.isIOS()) {\n dom(this.container).addClass('ios');\n }\n }\n\n Toolbar.prototype.initFormat = function(format, callback) {\n var eventName, input, selector;\n selector = \".ql-\" + format;\n if (Toolbar.formats.SELECT[format] != null) {\n selector = \"select\" + selector;\n eventName = 'change';\n } else {\n eventName = 'click';\n }\n input = this.container.querySelector(selector);\n if (input == null) {\n return;\n }\n this.inputs[format] = input;\n return dom(input).on(eventName, (function(_this) {\n return function() {\n var range, value;\n value = eventName === 'change' ? dom(input).value() : !dom(input).hasClass('ql-active');\n _this.preventUpdate = true;\n _this.quill.focus();\n range = _this.quill.getSelection();\n if (range != null) {\n callback(range, value);\n }\n if (dom.isIE(11)) {\n _this.quill.editor.selection.scrollIntoView();\n }\n _this.preventUpdate = false;\n return false;\n };\n })(this));\n };\n\n Toolbar.prototype.setActive = function(format, value) {\n var $input, input, ref, selectValue;\n if (format === 'image') {\n value = false;\n }\n input = this.inputs[format];\n if (input == null) {\n return;\n }\n $input = dom(input);\n if (input.tagName === 'SELECT') {\n this.triggering = true;\n selectValue = $input.value(input);\n if (value == null) {\n value = (ref = $input[\"default\"]()) != null ? ref.value : void 0;\n }\n if (Array.isArray(value)) {\n value = '';\n }\n if (value !== selectValue) {\n if (value != null) {\n $input.option(value);\n } else {\n $input.reset();\n }\n }\n return this.triggering = false;\n } else {\n return $input.toggleClass('ql-active', value || false);\n }\n };\n\n Toolbar.prototype.updateActive = function(range, formats) {\n var activeFormats;\n if (formats == null) {\n formats = null;\n }\n range || (range = this.quill.getSelection());\n if (!((range != null) && !this.preventUpdate)) {\n return;\n }\n activeFormats = this._getActive(range);\n return _.each(this.inputs, (function(_this) {\n return function(input, format) {\n if (!Array.isArray(formats) || formats.indexOf(format) > -1) {\n _this.setActive(format, activeFormats[format]);\n }\n return true;\n };\n })(this));\n };\n\n Toolbar.prototype._applyFormat = function(format, range, value) {\n if (this.triggering) {\n return;\n }\n if (range.isCollapsed()) {\n this.quill.prepareFormat(format, value, 'user');\n } else if (Toolbar.formats.LINE[format] != null) {\n this.quill.formatLine(range, format, value, 'user');\n } else {\n this.quill.formatText(range, format, value, 'user');\n }\n return _.defer((function(_this) {\n return function() {\n _this.updateActive(range, ['bullet', 'list']);\n return _this.setActive(format, value);\n };\n })(this));\n };\n\n Toolbar.prototype._getActive = function(range) {\n var leafFormats, lineFormats;\n leafFormats = this._getLeafActive(range);\n lineFormats = this._getLineActive(range);\n return _.defaults({}, leafFormats, lineFormats);\n };\n\n Toolbar.prototype._getLeafActive = function(range) {\n var contents, formatsArr, line, offset, ref;\n if (range.isCollapsed()) {\n ref = this.quill.editor.doc.findLineAt(range.start), line = ref[0], offset = ref[1];\n if (offset === 0) {\n contents = this.quill.getContents(range.start, range.end + 1);\n } else {\n contents = this.quill.getContents(range.start - 1, range.end);\n }\n } else {\n contents = this.quill.getContents(range);\n }\n formatsArr = _.map(contents.ops, 'attributes');\n return this._intersectFormats(formatsArr);\n };\n\n Toolbar.prototype._getLineActive = function(range) {\n var firstLine, formatsArr, lastLine, offset, ref, ref1;\n formatsArr = [];\n ref = this.quill.editor.doc.findLineAt(range.start), firstLine = ref[0], offset = ref[1];\n ref1 = this.quill.editor.doc.findLineAt(range.end), lastLine = ref1[0], offset = ref1[1];\n if ((lastLine != null) && lastLine === firstLine) {\n lastLine = lastLine.next;\n }\n while ((firstLine != null) && firstLine !== lastLine) {\n formatsArr.push(_.clone(firstLine.formats));\n firstLine = firstLine.next;\n }\n return this._intersectFormats(formatsArr);\n };\n\n Toolbar.prototype._intersectFormats = function(formatsArr) {\n return _.reduce(formatsArr.slice(1), function(activeFormats, formats) {\n var activeKeys, added, formatKeys, intersection, missing;\n if (formats == null) {\n formats = {};\n }\n activeKeys = Object.keys(activeFormats);\n formatKeys = formats != null ? Object.keys(formats) : {};\n intersection = _.intersection(activeKeys, formatKeys);\n missing = _.difference(activeKeys, formatKeys);\n added = _.difference(formatKeys, activeKeys);\n _.each(intersection, function(name) {\n if (Toolbar.formats.SELECT[name] != null) {\n if (Array.isArray(activeFormats[name])) {\n if (activeFormats[name].indexOf(formats[name]) < 0) {\n return activeFormats[name].push(formats[name]);\n }\n } else if (activeFormats[name] !== formats[name]) {\n return activeFormats[name] = [activeFormats[name], formats[name]];\n }\n }\n });\n _.each(missing, function(name) {\n if (Toolbar.formats.TOGGLE[name] != null) {\n return delete activeFormats[name];\n } else if ((Toolbar.formats.SELECT[name] != null) && !Array.isArray(activeFormats[name])) {\n return activeFormats[name] = [activeFormats[name]];\n }\n });\n _.each(added, function(name) {\n if (Toolbar.formats.SELECT[name] != null) {\n return activeFormats[name] = [formats[name]];\n }\n });\n return activeFormats;\n }, formatsArr[0] || {});\n };\n\n return Toolbar;\n\n})();\n\nQuill.registerModule('toolbar', Toolbar);\n\nmodule.exports = Toolbar;\n\n\n},{\"../quill\":30}],28:[function(_dereq_,module,exports){\nvar Quill, Tooltip, _, dom;\n\nQuill = _dereq_('../quill');\n\n_ = Quill.require('lodash');\n\ndom = Quill.require('dom');\n\nTooltip = (function() {\n Tooltip.DEFAULTS = {\n offset: 10,\n template: ''\n };\n\n Tooltip.HIDE_MARGIN = '-10000px';\n\n function Tooltip(quill, options) {\n this.quill = quill;\n this.options = options;\n this.container = this.quill.addContainer('ql-tooltip');\n this.container.innerHTML = this.options.template;\n this.hide();\n this.quill.on(this.quill.constructor.events.TEXT_CHANGE, (function(_this) {\n return function(delta, source) {\n if (_this.container.style.left !== Tooltip.HIDE_MARGIN) {\n _this.range = null;\n return _this.hide();\n }\n };\n })(this));\n }\n\n Tooltip.prototype.initTextbox = function(textbox, enterCallback, escapeCallback) {\n return dom(textbox).on('keydown', (function(_this) {\n return function(event) {\n switch (event.which) {\n case dom.KEYS.ENTER:\n event.preventDefault();\n return enterCallback.call(_this);\n case dom.KEYS.ESCAPE:\n event.preventDefault();\n return escapeCallback.call(_this);\n default:\n return true;\n }\n };\n })(this));\n };\n\n Tooltip.prototype.hide = function() {\n this.container.style.left = Tooltip.HIDE_MARGIN;\n if (this.range) {\n this.quill.setSelection(this.range);\n }\n return this.range = null;\n };\n\n Tooltip.prototype.position = function(reference) {\n var left, offsetBottom, offsetLeft, offsetTop, parentBounds, referenceBounds, top;\n if (reference != null) {\n referenceBounds = reference.getBoundingClientRect();\n parentBounds = this.quill.container.getBoundingClientRect();\n offsetLeft = referenceBounds.left - parentBounds.left;\n offsetTop = referenceBounds.top - parentBounds.top;\n offsetBottom = referenceBounds.bottom - parentBounds.bottom;\n left = offsetLeft + referenceBounds.width / 2 - this.container.offsetWidth / 2;\n top = offsetTop + referenceBounds.height + this.options.offset;\n if (top + this.container.offsetHeight > this.quill.container.offsetHeight) {\n top = offsetTop - this.container.offsetHeight - this.options.offset;\n }\n left = Math.max(0, Math.min(left, this.quill.container.offsetWidth - this.container.offsetWidth));\n top = Math.max(0, Math.min(top, this.quill.container.offsetHeight - this.container.offsetHeight));\n } else {\n left = this.quill.container.offsetWidth / 2 - this.container.offsetWidth / 2;\n top = this.quill.container.offsetHeight / 2 - this.container.offsetHeight / 2;\n }\n top += this.quill.container.scrollTop;\n return [left, top];\n };\n\n Tooltip.prototype.show = function(reference) {\n var left, ref, top;\n this.range = this.quill.getSelection();\n ref = this.position(reference), left = ref[0], top = ref[1];\n this.container.style.left = left + \"px\";\n this.container.style.top = top + \"px\";\n return this.container.focus();\n };\n\n return Tooltip;\n\n})();\n\nQuill.registerModule('tooltip', Tooltip);\n\nmodule.exports = Tooltip;\n\n\n},{\"../quill\":30}],29:[function(_dereq_,module,exports){\nvar Delta, Quill, UndoManager, _;\n\nQuill = _dereq_('../quill');\n\n_ = Quill.require('lodash');\n\nDelta = Quill.require('delta');\n\nUndoManager = (function() {\n UndoManager.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n };\n\n UndoManager.hotkeys = {\n UNDO: {\n key: 'Z',\n metaKey: true\n },\n REDO: {\n key: 'Z',\n metaKey: true,\n shiftKey: true\n }\n };\n\n function UndoManager(quill, options) {\n this.quill = quill;\n this.options = options != null ? options : {};\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.initListeners();\n }\n\n UndoManager.prototype.initListeners = function() {\n this.quill.onModuleLoad('keyboard', (function(_this) {\n return function(keyboard) {\n var redoKey;\n keyboard.addHotkey(UndoManager.hotkeys.UNDO, function() {\n _this.quill.editor.checkUpdate();\n _this.undo();\n return false;\n });\n redoKey = [UndoManager.hotkeys.REDO];\n if (navigator.platform.indexOf('Win') > -1) {\n redoKey.push({\n key: 'Y',\n metaKey: true\n });\n }\n return keyboard.addHotkey(redoKey, function() {\n _this.quill.editor.checkUpdate();\n _this.redo();\n return false;\n });\n };\n })(this));\n return this.quill.on(this.quill.constructor.events.TEXT_CHANGE, (function(_this) {\n return function(delta, source) {\n if (_this.ignoreChange) {\n return;\n }\n if (!_this.options.userOnly || source === Quill.sources.USER) {\n _this.record(delta, _this.oldDelta);\n } else {\n _this._transform(delta);\n }\n return _this.oldDelta = _this.quill.getContents();\n };\n })(this));\n };\n\n UndoManager.prototype.clear = function() {\n this.stack = {\n undo: [],\n redo: []\n };\n return this.oldDelta = this.quill.getContents();\n };\n\n UndoManager.prototype.record = function(changeDelta, oldDelta) {\n var change, ignored, timestamp, undoDelta;\n if (!(changeDelta.ops.length > 0)) {\n return;\n }\n this.stack.redo = [];\n try {\n undoDelta = this.quill.getContents().diff(this.oldDelta);\n timestamp = new Date().getTime();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n change = this.stack.undo.pop();\n undoDelta = undoDelta.compose(change.undo);\n changeDelta = change.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n return this.stack.undo.unshift();\n }\n } catch (_error) {\n ignored = _error;\n console.warn('Could not record change... clearing undo stack.');\n return this.clear();\n }\n };\n\n UndoManager.prototype.redo = function() {\n return this._change('redo', 'undo');\n };\n\n UndoManager.prototype.undo = function() {\n return this._change('undo', 'redo');\n };\n\n UndoManager.prototype._getLastChangeIndex = function(delta) {\n var index, lastIndex;\n lastIndex = 0;\n index = 0;\n _.each(delta.ops, function(op) {\n if (op.insert != null) {\n return lastIndex = Math.max(index + (op.insert.length || 1), lastIndex);\n } else if (op[\"delete\"] != null) {\n return lastIndex = Math.max(index, lastIndex);\n } else if (op.retain != null) {\n if (op.attributes != null) {\n lastIndex = Math.max(index + op.retain, lastIndex);\n }\n return index += op.retain;\n }\n });\n return lastIndex;\n };\n\n UndoManager.prototype._change = function(source, dest) {\n var change, index;\n if (this.stack[source].length > 0) {\n change = this.stack[source].pop();\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(change[source], Quill.sources.USER);\n this.ignoreChange = false;\n index = this._getLastChangeIndex(change[source]);\n this.quill.setSelection(index, index);\n this.oldDelta = this.quill.getContents();\n return this.stack[dest].push(change);\n }\n };\n\n UndoManager.prototype._transform = function(delta) {\n var change, i, j, len, len1, ref, ref1, results;\n this.oldDelta = delta.transform(this.oldDelta, true);\n ref = this.stack.undo;\n for (i = 0, len = ref.length; i < len; i++) {\n change = ref[i];\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n }\n ref1 = this.stack.redo;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n change = ref1[j];\n change.undo = delta.transform(change.undo, true);\n results.push(change.redo = delta.transform(change.redo, true));\n }\n return results;\n };\n\n return UndoManager;\n\n})();\n\nQuill.registerModule('undo-manager', UndoManager);\n\nmodule.exports = UndoManager;\n\n\n},{\"../quill\":30}],30:[function(_dereq_,module,exports){\nvar Delta, Document, Editor, EventEmitter2, Format, Normalizer, Quill, Range, _, dom, pkg,\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 slice = [].slice;\n\n_ = _dereq_('lodash');\n\npkg = _dereq_('../package.json');\n\nDelta = _dereq_('rich-text/lib/delta');\n\nEventEmitter2 = _dereq_('eventemitter2').EventEmitter2;\n\ndom = _dereq_('./lib/dom');\n\nDocument = _dereq_('./core/document');\n\nEditor = _dereq_('./core/editor');\n\nFormat = _dereq_('./core/format');\n\nNormalizer = _dereq_('./core/normalizer');\n\nRange = _dereq_('./lib/range');\n\nQuill = (function(superClass) {\n extend(Quill, superClass);\n\n Quill.version = pkg.version;\n\n Quill.editors = [];\n\n Quill.modules = [];\n\n Quill.themes = [];\n\n Quill.DEFAULTS = {\n formats: ['align', 'bold', 'italic', 'strike', 'underline', 'color', 'background', 'font', 'size', 'link', 'image', 'bullet', 'list'],\n modules: {\n 'keyboard': true,\n 'paste-manager': true,\n 'undo-manager': true\n },\n pollInterval: 100,\n readOnly: false,\n styles: {},\n theme: 'base'\n };\n\n Quill.events = {\n FORMAT_INIT: 'format-init',\n MODULE_INIT: 'module-init',\n POST_EVENT: 'post-event',\n PRE_EVENT: 'pre-event',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n };\n\n Quill.sources = Editor.sources;\n\n Quill.registerModule = function(name, module) {\n if (Quill.modules[name] != null) {\n console.warn(\"Overwriting \" + name + \" module\");\n }\n return Quill.modules[name] = module;\n };\n\n Quill.registerTheme = function(name, theme) {\n if (Quill.themes[name] != null) {\n console.warn(\"Overwriting \" + name + \" theme\");\n }\n return Quill.themes[name] = theme;\n };\n\n Quill.require = function(name) {\n switch (name) {\n case 'lodash':\n return _;\n case 'delta':\n return Delta;\n case 'format':\n return Format;\n case 'normalizer':\n return Normalizer;\n case 'dom':\n return dom;\n case 'document':\n return Document;\n case 'range':\n return Range;\n default:\n return null;\n }\n };\n\n function Quill(container1, options) {\n var html, moduleOptions, themeClass;\n this.container = container1;\n if (options == null) {\n options = {};\n }\n if (_.isString(this.container)) {\n this.container = document.querySelector(this.container);\n }\n if (this.container == null) {\n throw new Error('Invalid Quill container');\n }\n moduleOptions = _.defaults(options.modules || {}, Quill.DEFAULTS.modules);\n html = this.container.innerHTML;\n this.container.innerHTML = '';\n this.options = _.defaults(options, Quill.DEFAULTS);\n this.options.modules = moduleOptions;\n this.options.id = this.id = \"ql-editor-\" + (Quill.editors.length + 1);\n this.modules = {};\n this.root = this.addContainer('ql-editor');\n this.editor = new Editor(this.root, this, this.options);\n Quill.editors.push(this);\n this.setHTML(html, Quill.sources.SILENT);\n themeClass = Quill.themes[this.options.theme];\n if (themeClass == null) {\n throw new Error(\"Cannot load \" + this.options.theme + \" theme. Are you sure you registered it?\");\n }\n this.theme = new themeClass(this, this.options);\n _.each(this.options.modules, (function(_this) {\n return function(option, name) {\n return _this.addModule(name, option);\n };\n })(this));\n }\n\n Quill.prototype.destroy = function() {\n var html;\n html = this.getHTML();\n _.each(this.modules, function(module, name) {\n if (_.isFunction(module.destroy)) {\n return module.destroy();\n }\n });\n this.editor.destroy();\n this.removeAllListeners();\n Quill.editors.splice(_.indexOf(Quill.editors, this), 1);\n return this.container.innerHTML = html;\n };\n\n Quill.prototype.addContainer = function(className, before) {\n var container, refNode;\n if (before == null) {\n before = false;\n }\n refNode = before ? this.root : null;\n container = document.createElement('div');\n dom(container).addClass(className);\n this.container.insertBefore(container, refNode);\n return container;\n };\n\n Quill.prototype.addFormat = function(name, config) {\n this.editor.doc.addFormat(name, config);\n return this.emit(Quill.events.FORMAT_INIT, name);\n };\n\n Quill.prototype.addModule = function(name, options) {\n var moduleClass;\n moduleClass = Quill.modules[name];\n if (moduleClass == null) {\n throw new Error(\"Cannot load \" + name + \" module. Are you sure you registered it?\");\n }\n if (options === true) {\n options = {};\n }\n options = _.defaults(options, this.theme.constructor.OPTIONS[name] || {}, moduleClass.DEFAULTS || {});\n this.modules[name] = new moduleClass(this, options);\n this.emit(Quill.events.MODULE_INIT, name, this.modules[name]);\n return this.modules[name];\n };\n\n Quill.prototype.deleteText = function(start, end, source) {\n var delta, formats, ref;\n if (source == null) {\n source = Quill.sources.API;\n }\n ref = this._buildParams(start, end, {}, source), start = ref[0], end = ref[1], formats = ref[2], source = ref[3];\n if (!(end > start)) {\n return;\n }\n delta = new Delta().retain(start)[\"delete\"](end - start);\n return this.editor.applyDelta(delta, source);\n };\n\n Quill.prototype.emit = function() {\n var args, eventName;\n eventName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n Quill.__super__.emit.apply(this, [Quill.events.PRE_EVENT, eventName].concat(slice.call(args)));\n Quill.__super__.emit.apply(this, [eventName].concat(slice.call(args)));\n return Quill.__super__.emit.apply(this, [Quill.events.POST_EVENT, eventName].concat(slice.call(args)));\n };\n\n Quill.prototype.focus = function() {\n return this.editor.focus();\n };\n\n Quill.prototype.formatLine = function(start, end, name, value, source) {\n var formats, line, offset, ref, ref1;\n ref = this._buildParams(start, end, name, value, source), start = ref[0], end = ref[1], formats = ref[2], source = ref[3];\n ref1 = this.editor.doc.findLineAt(end), line = ref1[0], offset = ref1[1];\n if (line != null) {\n end += line.length - offset;\n }\n return this.formatText(start, end, formats, source);\n };\n\n Quill.prototype.formatText = function(start, end, name, value, source) {\n var delta, formats, ref;\n ref = this._buildParams(start, end, name, value, source), start = ref[0], end = ref[1], formats = ref[2], source = ref[3];\n formats = _.reduce(formats, (function(_this) {\n return function(formats, value, name) {\n var format;\n format = _this.editor.doc.formats[name];\n if (!(value && value !== format.config[\"default\"])) {\n formats[name] = null;\n }\n return formats;\n };\n })(this), formats);\n delta = new Delta().retain(start).retain(end - start, formats);\n return this.editor.applyDelta(delta, source);\n };\n\n Quill.prototype.getBounds = function(index) {\n return this.editor.getBounds(index);\n };\n\n Quill.prototype.getContents = function(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = null;\n }\n if (_.isObject(start)) {\n end = start.end;\n start = start.start;\n }\n return this.editor.delta.slice(start, end);\n };\n\n Quill.prototype.getHTML = function() {\n return this.editor.doc.getHTML();\n };\n\n Quill.prototype.getLength = function() {\n return this.editor.length;\n };\n\n Quill.prototype.getModule = function(name) {\n return this.modules[name];\n };\n\n Quill.prototype.getSelection = function() {\n this.editor.checkUpdate();\n return this.editor.selection.getRange();\n };\n\n Quill.prototype.getText = function(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = null;\n }\n return _.map(this.getContents(start, end).ops, function(op) {\n if (_.isString(op.insert)) {\n return op.insert;\n } else {\n return '';\n }\n }).join('');\n };\n\n Quill.prototype.insertEmbed = function(index, type, url, source) {\n var delta, end, formats, ref;\n ref = this._buildParams(index, 0, type, url, source), index = ref[0], end = ref[1], formats = ref[2], source = ref[3];\n delta = new Delta().retain(index).insert(1, formats);\n return this.editor.applyDelta(delta, source);\n };\n\n Quill.prototype.insertText = function(index, text, name, value, source) {\n var delta, end, formats, ref;\n ref = this._buildParams(index, 0, name, value, source), index = ref[0], end = ref[1], formats = ref[2], source = ref[3];\n if (!(text.length > 0)) {\n return;\n }\n delta = new Delta().retain(index).insert(text, formats);\n return this.editor.applyDelta(delta, source);\n };\n\n Quill.prototype.onModuleLoad = function(name, callback) {\n if (this.modules[name]) {\n return callback(this.modules[name]);\n }\n return this.on(Quill.events.MODULE_INIT, function(moduleName, module) {\n if (moduleName === name) {\n return callback(module);\n }\n });\n };\n\n Quill.prototype.prepareFormat = function(name, value, source) {\n var format, range;\n if (source == null) {\n source = Quill.sources.API;\n }\n format = this.editor.doc.formats[name];\n if (format == null) {\n return;\n }\n range = this.getSelection();\n if (!(range != null ? range.isCollapsed() : void 0)) {\n return;\n }\n if (format.isType(Format.types.LINE)) {\n return this.formatLine(range, name, value, source);\n } else {\n return format.prepare(value);\n }\n };\n\n Quill.prototype.setContents = function(delta, source) {\n var lastOp;\n if (source == null) {\n source = Quill.sources.API;\n }\n if (Array.isArray(delta)) {\n delta = new Delta(delta.slice());\n } else {\n delta = new Delta(delta.ops.slice());\n }\n lastOp = _.last(delta.slice(delta.length() - 1).ops);\n delta[\"delete\"](this.getLength() - 1);\n if ((lastOp != null) && _.isString(lastOp.insert) && _.last(lastOp.insert) === '\\n') {\n delta[\"delete\"](1);\n }\n return this.updateContents(delta, source);\n };\n\n Quill.prototype.setHTML = function(html, source) {\n if (source == null) {\n source = Quill.sources.API;\n }\n if (!html.trim()) {\n html = \"<\" + dom.DEFAULT_BLOCK_TAG + \"><\" + dom.DEFAULT_BREAK_TAG + \"></\" + dom.DEFAULT_BLOCK_TAG + \">\";\n }\n this.editor.doc.setHTML(html);\n return this.editor.checkUpdate(source);\n };\n\n Quill.prototype.setSelection = function(start, end, source) {\n var range;\n if (source == null) {\n source = Quill.sources.API;\n }\n if (_.isNumber(start) && _.isNumber(end)) {\n range = new Range(start, end);\n } else {\n range = start;\n source = end || source;\n }\n return this.editor.selection.setRange(range, source);\n };\n\n Quill.prototype.setText = function(text, source) {\n var delta;\n if (source == null) {\n source = Quill.sources.API;\n }\n delta = new Delta().insert(text);\n return this.setContents(delta, source);\n };\n\n Quill.prototype.updateContents = function(delta, source) {\n if (source == null) {\n source = Quill.sources.API;\n }\n if (Array.isArray(delta)) {\n delta = {\n ops: delta\n };\n }\n return this.editor.applyDelta(delta, source);\n };\n\n Quill.prototype._buildParams = function() {\n var formats, params;\n params = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n if (_.isObject(params[0])) {\n params.splice(0, 1, params[0].start, params[0].end);\n }\n if (_.isString(params[2])) {\n formats = {};\n formats[params[2]] = params[3];\n params.splice(2, 2, formats);\n }\n if (params[3] == null) {\n params[3] = Quill.sources.API;\n }\n return params;\n };\n\n return Quill;\n\n})(EventEmitter2);\n\nQuill.registerTheme('base', _dereq_('./themes/base'));\n\nQuill.registerTheme('snow', _dereq_('./themes/snow'));\n\nmodule.exports = Quill;\n\n\n},{\"../package.json\":7,\"./core/document\":8,\"./core/editor\":9,\"./core/format\":10,\"./core/normalizer\":13,\"./lib/dom\":17,\"./lib/range\":20,\"./themes/base\":32,\"./themes/snow\":33,\"eventemitter2\":2,\"lodash\":1,\"rich-text/lib/delta\":3}],31:[function(_dereq_,module,exports){\nmodule.exports = \".ql-image-tooltip{padding:10px;width:300px}.ql-image-tooltip:after{clear:both;content:\\\"\\\";display:table}.ql-image-tooltip a{border:1px solid #000;box-sizing:border-box;display:inline-block;float:left;padding:5px;text-align:center;width:50%}.ql-image-tooltip img{bottom:0;left:0;margin:auto;max-height:100%;max-width:100%;position:absolute;right:0;top:0}.ql-image-tooltip .input{box-sizing:border-box;width:100%}.ql-image-tooltip .preview{margin:10px 0;position:relative;border:1px dashed #000;height:200px}.ql-image-tooltip .preview span{display:inline-block;position:absolute;text-align:center;top:40%;width:100%}.ql-link-tooltip{padding:5px 10px}.ql-link-tooltip input.input{width:170px}.ql-link-tooltip a.done,.ql-link-tooltip input.input{display:none}.ql-link-tooltip a.change{margin-right:4px}.ql-link-tooltip.editing a.done,.ql-link-tooltip.editing input.input{display:inline-block}.ql-link-tooltip.editing a.change,.ql-link-tooltip.editing a.remove,.ql-link-tooltip.editing a.url{display:none}.ql-multi-cursor{position:absolute;left:0;top:0;z-index:1000}.ql-multi-cursor .cursor{margin-left:-1px;position:absolute}.ql-multi-cursor .cursor-flag{bottom:100%;position:absolute;white-space:nowrap}.ql-multi-cursor .cursor-name{display:inline-block;color:#fff;padding:2px 8px}.ql-multi-cursor .cursor-caret{height:100%;position:absolute;width:2px}.ql-multi-cursor .cursor.hidden .cursor-flag{display:none}.ql-multi-cursor .cursor.top .cursor-flag{bottom:auto;top:100%}.ql-multi-cursor .cursor.right .cursor-flag{right:-2px}.ql-paste-manager{left:-100000px;position:absolute;top:50%}.ql-toolbar{box-sizing:border-box}.ql-tooltip{background-color:#fff;border:1px solid #000;box-sizing:border-box;position:absolute;top:0;white-space:nowrap;z-index:2000}.ql-tooltip a{cursor:pointer;text-decoration:none}.ql-container{box-sizing:border-box;cursor:text;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;line-height:1.42;margin:0;overflow-x:hidden;overflow-y:auto;padding:12px 15px;position:relative}.ql-editor{box-sizing:border-box;min-height:100%;outline:0;tab-size:4;white-space:pre-wrap}.ql-editor div{margin:0;padding:0}.ql-editor a{text-decoration:underline}.ql-editor b{font-weight:700}.ql-editor i{font-style:italic}.ql-editor s{text-decoration:line-through}.ql-editor u{text-decoration:underline}.ql-editor a,.ql-editor b,.ql-editor i,.ql-editor s,.ql-editor span,.ql-editor u{background-color:inherit}.ql-editor img{max-width:100%}.ql-editor blockquote,.ql-editor ol,.ql-editor ul{margin:0 0 0 2em;padding:0}.ql-editor ol{list-style-type:decimal}.ql-editor ul{list-style-type:disc}.ql-editor.ql-ie-10 br,.ql-editor.ql-ie-9 br{display:none}\";\n},{}],32:[function(_dereq_,module,exports){\nvar BaseTheme, _, baseStyles, dom;\n\n_ = _dereq_('lodash');\n\ndom = _dereq_('../../lib/dom');\n\nbaseStyles = _dereq_('./base.styl');\n\nBaseTheme = (function() {\n BaseTheme.OPTIONS = {};\n\n BaseTheme.objToCss = function(obj) {\n return _.map(obj, function(value, key) {\n var innerStr;\n innerStr = _.map(value, function(innerValue, innerKey) {\n return innerKey + \": \" + innerValue + \";\";\n }).join(' ');\n return key + \" { \" + innerStr + \" }\";\n }).join(\"\\n\");\n };\n\n function BaseTheme(quill, options) {\n var version;\n this.quill = quill;\n this.options = options;\n dom(this.quill.container).addClass('ql-container');\n if (this.options.styles) {\n this.addStyles(baseStyles + BaseTheme.objToCss(this.options.styles));\n }\n if (dom.isIE(10)) {\n version = dom.isIE(9) ? '9' : '10';\n dom(this.quill.root).addClass('ql-ie-' + version);\n }\n }\n\n BaseTheme.prototype.addStyles = function(css) {\n var style;\n if (_.isObject(css)) {\n css = BaseTheme.objToCss(css);\n }\n style = document.createElement('style');\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n return document.head.appendChild(style);\n };\n\n return BaseTheme;\n\n})();\n\nmodule.exports = BaseTheme;\n\n\n},{\"../../lib/dom\":17,\"./base.styl\":31,\"lodash\":1}],33:[function(_dereq_,module,exports){\nvar BaseTheme, ColorPicker, Picker, SnowTheme, _, dom,\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_ = _dereq_('lodash');\n\nColorPicker = _dereq_('../../lib/color-picker');\n\nBaseTheme = _dereq_('../base');\n\ndom = _dereq_('../../lib/dom');\n\nPicker = _dereq_('../../lib/picker');\n\nSnowTheme = (function(superClass) {\n extend(SnowTheme, superClass);\n\n SnowTheme.COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008A00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\n SnowTheme.OPTIONS = {\n 'multi-cursor': {\n template: '<span class=\"cursor-flag\"> <span class=\"cursor-triangle top\"></span> <span class=\"cursor-name\"></span> <span class=\"cursor-triangle bottom\"></span> </span> <span class=\"cursor-caret\"></span>'\n }\n };\n\n function SnowTheme(quill, options) {\n this.quill = quill;\n this.options = options;\n SnowTheme.__super__.constructor.apply(this, arguments);\n dom(this.quill.container).addClass('ql-snow');\n this.pickers = [];\n this.quill.on(this.quill.constructor.events.SELECTION_CHANGE, (function(_this) {\n return function(range) {\n if (range != null) {\n return _.invoke(_this.pickers, 'close');\n }\n };\n })(this));\n this.quill.onModuleLoad('multi-cursor', _.bind(this.extendMultiCursor, this));\n this.quill.onModuleLoad('toolbar', _.bind(this.extendToolbar, this));\n }\n\n SnowTheme.prototype.extendMultiCursor = function(module) {\n return module.on(module.constructor.events.CURSOR_ADDED, function(cursor) {\n var bottomTriangle, topTriangle;\n bottomTriangle = cursor.elem.querySelector('.cursor-triangle.bottom');\n topTriangle = cursor.elem.querySelector('.cursor-triangle.top');\n return bottomTriangle.style.borderTopColor = topTriangle.style.borderBottomColor = cursor.color;\n });\n };\n\n SnowTheme.prototype.extendToolbar = function(module) {\n dom(module.container).addClass('ql-snow');\n _.each(['color', 'background', 'font', 'size', 'align'], (function(_this) {\n return function(format) {\n var picker, select;\n select = module.container.querySelector(\".ql-\" + format);\n if (select == null) {\n return;\n }\n switch (format) {\n case 'font':\n case 'size':\n case 'align':\n picker = new Picker(select);\n break;\n case 'color':\n case 'background':\n picker = new ColorPicker(select);\n _.each(picker.container.querySelectorAll('.ql-picker-item'), function(item, i) {\n if (i < 7) {\n return dom(item).addClass('ql-primary-color');\n }\n });\n }\n if (picker != null) {\n return _this.pickers.push(picker);\n }\n };\n })(this));\n return _.each(dom(module.container).textNodes(), function(node) {\n if (dom(node).text().trim().length === 0) {\n return dom(node).remove();\n }\n });\n };\n\n return SnowTheme;\n\n})(BaseTheme);\n\nmodule.exports = SnowTheme;\n\n\n},{\"../../lib/color-picker\":16,\"../../lib/dom\":17,\"../../lib/picker\":19,\"../base\":32,\"lodash\":1}]},{},[15])(15)\n});"],"sourceRoot":"/source/"}