fluxxor-rails 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4145 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define(factory);
6
+ else if(typeof exports === 'object')
7
+ exports["Fluxxor"] = factory();
8
+ else
9
+ root["Fluxxor"] = factory();
10
+ })(this, function() {
11
+ return /******/ (function(modules) { // webpackBootstrap
12
+ /******/
13
+ /******/ // The module cache
14
+ /******/ var installedModules = {};
15
+ /******/
16
+ /******/ // The require function
17
+ /******/ function __webpack_require__(moduleId) {
18
+ /******/ // Check if module is in cache
19
+ /******/ if(installedModules[moduleId])
20
+ /******/ return installedModules[moduleId].exports;
21
+ /******/
22
+ /******/ // Create a new module (and put it into the cache)
23
+ /******/ var module = installedModules[moduleId] = {
24
+ /******/ exports: {},
25
+ /******/ id: moduleId,
26
+ /******/ loaded: false
27
+ /******/ };
28
+ /******/
29
+ /******/ // Execute the module function
30
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
+ /******/
32
+ /******/ // Flag the module as loaded
33
+ /******/ module.loaded = true;
34
+ /******/
35
+ /******/ // Return the exports of the module
36
+ /******/ return module.exports;
37
+ /******/ }
38
+ /******/
39
+ /******/
40
+ /******/ // expose the modules object (__webpack_modules__)
41
+ /******/ __webpack_require__.m = modules;
42
+ /******/
43
+ /******/ // expose the module cache
44
+ /******/ __webpack_require__.c = installedModules;
45
+ /******/
46
+ /******/ // __webpack_public_path__
47
+ /******/ __webpack_require__.p = "";
48
+ /******/
49
+ /******/
50
+ /******/ // Load entry module and return exports
51
+ /******/ return __webpack_require__(0);
52
+ /******/ })
53
+ /************************************************************************/
54
+ /******/ ([
55
+ /* 0 */
56
+ /***/ function(module, exports, __webpack_require__) {
57
+
58
+ var Dispatcher = __webpack_require__(2),
59
+ Flux = __webpack_require__(3),
60
+ FluxMixin = __webpack_require__(4),
61
+ FluxChildMixin = __webpack_require__(5),
62
+ StoreWatchMixin = __webpack_require__(6),
63
+ createStore = __webpack_require__(7);
64
+
65
+ var Fluxxor = {
66
+ Dispatcher: Dispatcher,
67
+ Flux: Flux,
68
+ FluxMixin: FluxMixin,
69
+ FluxChildMixin: FluxChildMixin,
70
+ StoreWatchMixin: StoreWatchMixin,
71
+ createStore: createStore,
72
+ version: __webpack_require__(1).version
73
+ };
74
+
75
+ module.exports = Fluxxor;
76
+
77
+
78
+ /***/ },
79
+ /* 1 */
80
+ /***/ function(module, exports, __webpack_require__) {
81
+
82
+ module.exports = {"name":"fluxxor","version":"1.1.2","description":"Flux architecture tools for React","repository":{"type":"git","url":"https://github.com/BinaryMuse/fluxxor.git"},"main":"index.js","scripts":{"test":"npm run jshint && mocha --recursive","jshint":"jsxhint lib/","build":"./script/build-fluxxor && ./script/build-examples","preview-site":"wintersmith preview -C site","build-site":"wintersmith build -C site"},"keywords":["react","flux"],"author":"Brandon Tilley <brandon@brandontilley.com>","license":"MIT","devDependencies":{"chai":"^1.9.1","css-loader":"^0.6.12","envify":"^1.2.1","jsdom":"^0.10.5","json-loader":"^0.5.0","jsx-loader":"^0.10.2","jsxhint":"^0.4.9","less":"^1.7.0","less-loader":"^0.7.3","mocha":"^1.18.2","react":"^0.10.0","sinon":"^1.9.1","sinon-chai":"^2.5.0","style-loader":"^0.6.3","webpack":"^1.1.11","webpack-dev-server":"^1.2.7","wintersmith":"^2.0.10","wintersmith-ejs":"^0.1.4","wintersmith-less":"^0.2.2"},"dependencies":{"lodash-node":"^2.4.1"}}
83
+
84
+ /***/ },
85
+ /* 2 */
86
+ /***/ function(module, exports, __webpack_require__) {
87
+
88
+ var _clone = __webpack_require__(10),
89
+ _mapValues = __webpack_require__(11),
90
+ _forOwn = __webpack_require__(12),
91
+ _intersection = __webpack_require__(15),
92
+ _keys = __webpack_require__(13),
93
+ _map = __webpack_require__(17),
94
+ _each = __webpack_require__(18),
95
+ _size = __webpack_require__(19),
96
+ _findKey = __webpack_require__(14),
97
+ _uniq = __webpack_require__(16);
98
+
99
+ var Dispatcher = function(stores) {
100
+ this.stores = stores;
101
+ this.currentDispatch = null;
102
+ this.waitingToDispatch = [];
103
+
104
+ for (var key in stores) {
105
+ stores[key].dispatcher = this;
106
+ }
107
+ };
108
+
109
+ Dispatcher.prototype.dispatch = function(action) {
110
+ if (this.currentDispatch) {
111
+ throw new Error("Cannot dispatch an action while another action is being dispatched");
112
+ }
113
+
114
+ this.waitingToDispatch = _clone(this.stores);
115
+
116
+ this.currentDispatch = _mapValues(this.stores, function() {
117
+ return { resolved: false, waitingOn: [], waitCallback: null };
118
+ });
119
+
120
+ this.doDispatchLoop(action);
121
+
122
+ setTimeout(function() {
123
+ this.currentDispatch = null;
124
+ }.bind(this));
125
+ };
126
+
127
+ Dispatcher.prototype.doDispatchLoop = function(action) {
128
+ var dispatch, canBeDispatchedTo,
129
+ removeFromDispatchQueue = [], dispatchedThisLoop = [];
130
+
131
+ _forOwn(this.waitingToDispatch, function(value, key) {
132
+ dispatch = this.currentDispatch[key];
133
+ canBeDispatchedTo = !dispatch.waitingOn.length ||
134
+ !_intersection(dispatch.waitingOn, _keys(this.waitingToDispatch)).length;
135
+ if (canBeDispatchedTo) {
136
+ if (dispatch.waitCallback) {
137
+ var stores = _map(dispatch.waitingOn, function(key) {
138
+ return this.stores[key];
139
+ }, this);
140
+ var fn = dispatch.waitCallback;
141
+ dispatch.waitCallback = null;
142
+ dispatch.waitingOn = [];
143
+ dispatch.resolved = true;
144
+ fn.apply(null, stores);
145
+ } else {
146
+ dispatch.resolved = true;
147
+ this.stores[key].__handleAction__(action);
148
+ }
149
+
150
+ dispatchedThisLoop.push(key);
151
+
152
+ if (this.currentDispatch[key].resolved) {
153
+ removeFromDispatchQueue.push(key);
154
+ }
155
+ }
156
+ }, this);
157
+
158
+ if (!dispatchedThisLoop.length) {
159
+ var storesWithCircularWaits = _keys(this.waitingToDispatch).join(", ");
160
+ throw new Error("Indirect circular wait detected among: " + storesWithCircularWaits);
161
+ }
162
+
163
+ _each(removeFromDispatchQueue, function(key) {
164
+ delete this.waitingToDispatch[key];
165
+ }, this);
166
+
167
+ if (_size(this.waitingToDispatch)) {
168
+ this.doDispatchLoop(action);
169
+ }
170
+ };
171
+
172
+ Dispatcher.prototype.waitForStores = function(store, stores, fn) {
173
+ if (!this.currentDispatch) {
174
+ throw new Error("Cannot wait unless an action is being dispatched");
175
+ }
176
+
177
+ var waitingStoreName = _findKey(this.stores, function(val) {
178
+ return val === store;
179
+ });
180
+
181
+ if (stores.indexOf(waitingStoreName) > -1) {
182
+ throw new Error("A store cannot wait on itself");
183
+ }
184
+
185
+ var dispatch = this.currentDispatch[waitingStoreName];
186
+
187
+ if (dispatch.waitingOn.length) {
188
+ throw new Error(waitingStoreName + " already waiting on stores");
189
+ }
190
+
191
+ _each(stores, function(storeName) {
192
+ var storeDispatch = this.currentDispatch[storeName];
193
+ if (!this.stores[storeName]) {
194
+ throw new Error("Cannot wait for non-existant store " + storeName);
195
+ }
196
+ if (storeDispatch.waitingOn.indexOf(waitingStoreName) > -1) {
197
+ throw new Error("Circular wait detected between " + waitingStoreName + " and " + storeName);
198
+ }
199
+ }, this);
200
+
201
+ dispatch.resolved = false;
202
+ dispatch.waitingOn = _uniq(dispatch.waitingOn.concat(stores));
203
+ dispatch.waitCallback = fn;
204
+ };
205
+
206
+ module.exports = Dispatcher;
207
+
208
+
209
+ /***/ },
210
+ /* 3 */
211
+ /***/ function(module, exports, __webpack_require__) {
212
+
213
+ var Dispatcher = __webpack_require__(2);
214
+
215
+ var Flux = function(stores, actions) {
216
+ var dispatcher = new Dispatcher(stores),
217
+ dispatchBinder = {
218
+ dispatch: function(type, payload) {
219
+ dispatcher.dispatch({type: type, payload: payload});
220
+ }
221
+ };
222
+
223
+ this.dispatcher = dispatcher;
224
+ this.actions = {};
225
+
226
+ for (var key in actions) {
227
+ this.actions[key] = actions[key].bind(dispatchBinder);
228
+ }
229
+
230
+ for (key in stores) {
231
+ stores[key].flux = this;
232
+ }
233
+ };
234
+
235
+ Flux.prototype.store = function(name) {
236
+ return this.dispatcher.stores[name];
237
+ };
238
+
239
+ module.exports = Flux;
240
+
241
+
242
+ /***/ },
243
+ /* 4 */
244
+ /***/ function(module, exports, __webpack_require__) {
245
+
246
+ var FluxMixin = function(React) {
247
+ return {
248
+ propTypes: {
249
+ flux: React.PropTypes.object.isRequired
250
+ },
251
+
252
+ childContextTypes: {
253
+ flux: React.PropTypes.object
254
+ },
255
+
256
+ getChildContext: function() {
257
+ return {
258
+ flux: this.props.flux
259
+ };
260
+ },
261
+
262
+ getFlux: function() {
263
+ return this.props.flux;
264
+ }
265
+ };
266
+ };
267
+
268
+ FluxMixin.componentWillMount = function() {
269
+ throw new Error("Fluxxor.FluxMixin is a function that takes React as a " +
270
+ "parameter and returns the mixin, e.g.: mixins[Fluxxor.FluxMixin(React)]");
271
+ };
272
+
273
+ module.exports = FluxMixin;
274
+
275
+
276
+ /***/ },
277
+ /* 5 */
278
+ /***/ function(module, exports, __webpack_require__) {
279
+
280
+ var FluxChildMixin = function(React) {
281
+ return {
282
+ contextTypes: {
283
+ flux: React.PropTypes.object
284
+ },
285
+
286
+ getFlux: function() {
287
+ return this.context.flux;
288
+ }
289
+ };
290
+ };
291
+
292
+ FluxChildMixin.componentWillMount = function() {
293
+ throw new Error("Fluxxor.FluxChildMixin is a function that takes React as a " +
294
+ "parameter and returns the mixin, e.g.: mixins[Fluxxor.FluxChildMixin(React)]");
295
+ };
296
+
297
+ module.exports = FluxChildMixin;
298
+
299
+
300
+ /***/ },
301
+ /* 6 */
302
+ /***/ function(module, exports, __webpack_require__) {
303
+
304
+ var _each = __webpack_require__(18);
305
+
306
+ var StoreWatchMixin = function() {
307
+ var storeNames = Array.prototype.slice.call(arguments);
308
+ return {
309
+ componentWillMount: function() {
310
+ var flux = this.props.flux || this.context.flux;
311
+ _each(storeNames, function(store) {
312
+ flux.store(store).on("change", this._setStateFromFlux);
313
+ }, this);
314
+ },
315
+
316
+ componentWillUnmount: function() {
317
+ var flux = this.props.flux || this.context.flux;
318
+ _each(storeNames, function(store) {
319
+ flux.store(store).removeListener("change", this._setStateFromFlux);
320
+ }, this);
321
+ },
322
+
323
+ _setStateFromFlux: function() {
324
+ this.setState(this.getStateFromFlux());
325
+ },
326
+
327
+ getInitialState: function() {
328
+ return this.getStateFromFlux();
329
+ }
330
+ };
331
+ };
332
+
333
+ StoreWatchMixin.componentWillMount = function() {
334
+ throw new Error("Fluxxor.StoreWatchMixin is a function that takes one or more " +
335
+ "store names as parameters and returns the mixin, e.g.: " +
336
+ "mixins[Fluxxor.StoreWatchMixin(\"Store1\", \"Store2\")]");
337
+ };
338
+
339
+ module.exports = StoreWatchMixin;
340
+
341
+
342
+ /***/ },
343
+ /* 7 */
344
+ /***/ function(module, exports, __webpack_require__) {
345
+
346
+ var _each = __webpack_require__(18),
347
+ Store = __webpack_require__(8),
348
+ util = __webpack_require__(9);
349
+
350
+ var RESERVED_KEYS = ["flux", "waitFor"];
351
+
352
+ var createStore = function(spec) {
353
+ _each(RESERVED_KEYS, function(key) {
354
+ if (spec[key]) {
355
+ throw new Error("Reserved key '" + key + "' found in store definition");
356
+ }
357
+ });
358
+
359
+ var constructor = function(options) {
360
+ options = options || {};
361
+ Store.call(this);
362
+
363
+ for (var key in spec) {
364
+ if (key === "actions") {
365
+ this.__actions__ = spec[key];
366
+ } else if (key === "initialize") {
367
+ // do nothing
368
+ } else if (typeof spec[key] === "function") {
369
+ this[key] = spec[key].bind(this);
370
+ } else {
371
+ this[key] = spec[key];
372
+ }
373
+ }
374
+
375
+ if (spec.initialize) spec.initialize.call(this, options);
376
+ };
377
+
378
+ util.inherits(constructor, Store);
379
+ return constructor;
380
+ };
381
+
382
+ module.exports = createStore;
383
+
384
+
385
+ /***/ },
386
+ /* 8 */
387
+ /***/ function(module, exports, __webpack_require__) {
388
+
389
+ var EventEmitter = __webpack_require__(20).EventEmitter,
390
+ util = __webpack_require__(9);
391
+
392
+ function Store(dispatcher) {
393
+ this.dispatcher = dispatcher;
394
+ this.__actions__ = {};
395
+ EventEmitter.call(this);
396
+ }
397
+
398
+ util.inherits(Store, EventEmitter);
399
+
400
+ Store.prototype.__handleAction__ = function(action) {
401
+ var handler;
402
+ if (!!(handler = this.__actions__[action.type])) {
403
+ if (typeof handler === "function")
404
+ handler.call(this, action.payload, action.type);
405
+ else if (handler && typeof this[handler] === "function")
406
+ this[handler].call(this, action.payload, action.type);
407
+ }
408
+ };
409
+
410
+ Store.prototype.bindActions = function() {
411
+ var actions = Array.prototype.slice.call(arguments);
412
+ if (actions.length % 2 !== 0) {
413
+ throw new Error("bindActions must take an even number of arguments.");
414
+ }
415
+
416
+ for (var i = 0; i < actions.length; i += 2) {
417
+ var type = actions[i],
418
+ handler = actions[i+1];
419
+
420
+ this.__actions__[type] = handler;
421
+ }
422
+ };
423
+
424
+ Store.prototype.waitFor = function(stores, fn) {
425
+ this.dispatcher.waitForStores(this, stores, fn.bind(this));
426
+ };
427
+
428
+ module.exports = Store;
429
+
430
+
431
+ /***/ },
432
+ /* 9 */
433
+ /***/ function(module, exports, __webpack_require__) {
434
+
435
+ /* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
436
+ //
437
+ // Permission is hereby granted, free of charge, to any person obtaining a
438
+ // copy of this software and associated documentation files (the
439
+ // "Software"), to deal in the Software without restriction, including
440
+ // without limitation the rights to use, copy, modify, merge, publish,
441
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
442
+ // persons to whom the Software is furnished to do so, subject to the
443
+ // following conditions:
444
+ //
445
+ // The above copyright notice and this permission notice shall be included
446
+ // in all copies or substantial portions of the Software.
447
+ //
448
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
449
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
450
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
451
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
452
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
453
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
454
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
455
+
456
+ var formatRegExp = /%[sdj%]/g;
457
+ exports.format = function(f) {
458
+ if (!isString(f)) {
459
+ var objects = [];
460
+ for (var i = 0; i < arguments.length; i++) {
461
+ objects.push(inspect(arguments[i]));
462
+ }
463
+ return objects.join(' ');
464
+ }
465
+
466
+ var i = 1;
467
+ var args = arguments;
468
+ var len = args.length;
469
+ var str = String(f).replace(formatRegExp, function(x) {
470
+ if (x === '%%') return '%';
471
+ if (i >= len) return x;
472
+ switch (x) {
473
+ case '%s': return String(args[i++]);
474
+ case '%d': return Number(args[i++]);
475
+ case '%j':
476
+ try {
477
+ return JSON.stringify(args[i++]);
478
+ } catch (_) {
479
+ return '[Circular]';
480
+ }
481
+ default:
482
+ return x;
483
+ }
484
+ });
485
+ for (var x = args[i]; i < len; x = args[++i]) {
486
+ if (isNull(x) || !isObject(x)) {
487
+ str += ' ' + x;
488
+ } else {
489
+ str += ' ' + inspect(x);
490
+ }
491
+ }
492
+ return str;
493
+ };
494
+
495
+
496
+ // Mark that a method should not be used.
497
+ // Returns a modified function which warns once by default.
498
+ // If --no-deprecation is set, then it is a no-op.
499
+ exports.deprecate = function(fn, msg) {
500
+ // Allow for deprecating things in the process of starting up.
501
+ if (isUndefined(global.process)) {
502
+ return function() {
503
+ return exports.deprecate(fn, msg).apply(this, arguments);
504
+ };
505
+ }
506
+
507
+ if (process.noDeprecation === true) {
508
+ return fn;
509
+ }
510
+
511
+ var warned = false;
512
+ function deprecated() {
513
+ if (!warned) {
514
+ if (process.throwDeprecation) {
515
+ throw new Error(msg);
516
+ } else if (process.traceDeprecation) {
517
+ console.trace(msg);
518
+ } else {
519
+ console.error(msg);
520
+ }
521
+ warned = true;
522
+ }
523
+ return fn.apply(this, arguments);
524
+ }
525
+
526
+ return deprecated;
527
+ };
528
+
529
+
530
+ var debugs = {};
531
+ var debugEnviron;
532
+ exports.debuglog = function(set) {
533
+ if (isUndefined(debugEnviron))
534
+ debugEnviron = process.env.NODE_DEBUG || '';
535
+ set = set.toUpperCase();
536
+ if (!debugs[set]) {
537
+ if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
538
+ var pid = process.pid;
539
+ debugs[set] = function() {
540
+ var msg = exports.format.apply(exports, arguments);
541
+ console.error('%s %d: %s', set, pid, msg);
542
+ };
543
+ } else {
544
+ debugs[set] = function() {};
545
+ }
546
+ }
547
+ return debugs[set];
548
+ };
549
+
550
+
551
+ /**
552
+ * Echos the value of a value. Trys to print the value out
553
+ * in the best way possible given the different types.
554
+ *
555
+ * @param {Object} obj The object to print out.
556
+ * @param {Object} opts Optional options object that alters the output.
557
+ */
558
+ /* legacy: obj, showHidden, depth, colors*/
559
+ function inspect(obj, opts) {
560
+ // default options
561
+ var ctx = {
562
+ seen: [],
563
+ stylize: stylizeNoColor
564
+ };
565
+ // legacy...
566
+ if (arguments.length >= 3) ctx.depth = arguments[2];
567
+ if (arguments.length >= 4) ctx.colors = arguments[3];
568
+ if (isBoolean(opts)) {
569
+ // legacy...
570
+ ctx.showHidden = opts;
571
+ } else if (opts) {
572
+ // got an "options" object
573
+ exports._extend(ctx, opts);
574
+ }
575
+ // set default options
576
+ if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
577
+ if (isUndefined(ctx.depth)) ctx.depth = 2;
578
+ if (isUndefined(ctx.colors)) ctx.colors = false;
579
+ if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
580
+ if (ctx.colors) ctx.stylize = stylizeWithColor;
581
+ return formatValue(ctx, obj, ctx.depth);
582
+ }
583
+ exports.inspect = inspect;
584
+
585
+
586
+ // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
587
+ inspect.colors = {
588
+ 'bold' : [1, 22],
589
+ 'italic' : [3, 23],
590
+ 'underline' : [4, 24],
591
+ 'inverse' : [7, 27],
592
+ 'white' : [37, 39],
593
+ 'grey' : [90, 39],
594
+ 'black' : [30, 39],
595
+ 'blue' : [34, 39],
596
+ 'cyan' : [36, 39],
597
+ 'green' : [32, 39],
598
+ 'magenta' : [35, 39],
599
+ 'red' : [31, 39],
600
+ 'yellow' : [33, 39]
601
+ };
602
+
603
+ // Don't use 'blue' not visible on cmd.exe
604
+ inspect.styles = {
605
+ 'special': 'cyan',
606
+ 'number': 'yellow',
607
+ 'boolean': 'yellow',
608
+ 'undefined': 'grey',
609
+ 'null': 'bold',
610
+ 'string': 'green',
611
+ 'date': 'magenta',
612
+ // "name": intentionally not styling
613
+ 'regexp': 'red'
614
+ };
615
+
616
+
617
+ function stylizeWithColor(str, styleType) {
618
+ var style = inspect.styles[styleType];
619
+
620
+ if (style) {
621
+ return '\u001b[' + inspect.colors[style][0] + 'm' + str +
622
+ '\u001b[' + inspect.colors[style][1] + 'm';
623
+ } else {
624
+ return str;
625
+ }
626
+ }
627
+
628
+
629
+ function stylizeNoColor(str, styleType) {
630
+ return str;
631
+ }
632
+
633
+
634
+ function arrayToHash(array) {
635
+ var hash = {};
636
+
637
+ array.forEach(function(val, idx) {
638
+ hash[val] = true;
639
+ });
640
+
641
+ return hash;
642
+ }
643
+
644
+
645
+ function formatValue(ctx, value, recurseTimes) {
646
+ // Provide a hook for user-specified inspect functions.
647
+ // Check that value is an object with an inspect function on it
648
+ if (ctx.customInspect &&
649
+ value &&
650
+ isFunction(value.inspect) &&
651
+ // Filter out the util module, it's inspect function is special
652
+ value.inspect !== exports.inspect &&
653
+ // Also filter out any prototype objects using the circular check.
654
+ !(value.constructor && value.constructor.prototype === value)) {
655
+ var ret = value.inspect(recurseTimes, ctx);
656
+ if (!isString(ret)) {
657
+ ret = formatValue(ctx, ret, recurseTimes);
658
+ }
659
+ return ret;
660
+ }
661
+
662
+ // Primitive types cannot have properties
663
+ var primitive = formatPrimitive(ctx, value);
664
+ if (primitive) {
665
+ return primitive;
666
+ }
667
+
668
+ // Look up the keys of the object.
669
+ var keys = Object.keys(value);
670
+ var visibleKeys = arrayToHash(keys);
671
+
672
+ if (ctx.showHidden) {
673
+ keys = Object.getOwnPropertyNames(value);
674
+ }
675
+
676
+ // IE doesn't make error fields non-enumerable
677
+ // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
678
+ if (isError(value)
679
+ && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
680
+ return formatError(value);
681
+ }
682
+
683
+ // Some type of object without properties can be shortcutted.
684
+ if (keys.length === 0) {
685
+ if (isFunction(value)) {
686
+ var name = value.name ? ': ' + value.name : '';
687
+ return ctx.stylize('[Function' + name + ']', 'special');
688
+ }
689
+ if (isRegExp(value)) {
690
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
691
+ }
692
+ if (isDate(value)) {
693
+ return ctx.stylize(Date.prototype.toString.call(value), 'date');
694
+ }
695
+ if (isError(value)) {
696
+ return formatError(value);
697
+ }
698
+ }
699
+
700
+ var base = '', array = false, braces = ['{', '}'];
701
+
702
+ // Make Array say that they are Array
703
+ if (isArray(value)) {
704
+ array = true;
705
+ braces = ['[', ']'];
706
+ }
707
+
708
+ // Make functions say that they are functions
709
+ if (isFunction(value)) {
710
+ var n = value.name ? ': ' + value.name : '';
711
+ base = ' [Function' + n + ']';
712
+ }
713
+
714
+ // Make RegExps say that they are RegExps
715
+ if (isRegExp(value)) {
716
+ base = ' ' + RegExp.prototype.toString.call(value);
717
+ }
718
+
719
+ // Make dates with properties first say the date
720
+ if (isDate(value)) {
721
+ base = ' ' + Date.prototype.toUTCString.call(value);
722
+ }
723
+
724
+ // Make error with message first say the error
725
+ if (isError(value)) {
726
+ base = ' ' + formatError(value);
727
+ }
728
+
729
+ if (keys.length === 0 && (!array || value.length == 0)) {
730
+ return braces[0] + base + braces[1];
731
+ }
732
+
733
+ if (recurseTimes < 0) {
734
+ if (isRegExp(value)) {
735
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
736
+ } else {
737
+ return ctx.stylize('[Object]', 'special');
738
+ }
739
+ }
740
+
741
+ ctx.seen.push(value);
742
+
743
+ var output;
744
+ if (array) {
745
+ output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
746
+ } else {
747
+ output = keys.map(function(key) {
748
+ return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
749
+ });
750
+ }
751
+
752
+ ctx.seen.pop();
753
+
754
+ return reduceToSingleString(output, base, braces);
755
+ }
756
+
757
+
758
+ function formatPrimitive(ctx, value) {
759
+ if (isUndefined(value))
760
+ return ctx.stylize('undefined', 'undefined');
761
+ if (isString(value)) {
762
+ var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
763
+ .replace(/'/g, "\\'")
764
+ .replace(/\\"/g, '"') + '\'';
765
+ return ctx.stylize(simple, 'string');
766
+ }
767
+ if (isNumber(value))
768
+ return ctx.stylize('' + value, 'number');
769
+ if (isBoolean(value))
770
+ return ctx.stylize('' + value, 'boolean');
771
+ // For some reason typeof null is "object", so special case here.
772
+ if (isNull(value))
773
+ return ctx.stylize('null', 'null');
774
+ }
775
+
776
+
777
+ function formatError(value) {
778
+ return '[' + Error.prototype.toString.call(value) + ']';
779
+ }
780
+
781
+
782
+ function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
783
+ var output = [];
784
+ for (var i = 0, l = value.length; i < l; ++i) {
785
+ if (hasOwnProperty(value, String(i))) {
786
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
787
+ String(i), true));
788
+ } else {
789
+ output.push('');
790
+ }
791
+ }
792
+ keys.forEach(function(key) {
793
+ if (!key.match(/^\d+$/)) {
794
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
795
+ key, true));
796
+ }
797
+ });
798
+ return output;
799
+ }
800
+
801
+
802
+ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
803
+ var name, str, desc;
804
+ desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
805
+ if (desc.get) {
806
+ if (desc.set) {
807
+ str = ctx.stylize('[Getter/Setter]', 'special');
808
+ } else {
809
+ str = ctx.stylize('[Getter]', 'special');
810
+ }
811
+ } else {
812
+ if (desc.set) {
813
+ str = ctx.stylize('[Setter]', 'special');
814
+ }
815
+ }
816
+ if (!hasOwnProperty(visibleKeys, key)) {
817
+ name = '[' + key + ']';
818
+ }
819
+ if (!str) {
820
+ if (ctx.seen.indexOf(desc.value) < 0) {
821
+ if (isNull(recurseTimes)) {
822
+ str = formatValue(ctx, desc.value, null);
823
+ } else {
824
+ str = formatValue(ctx, desc.value, recurseTimes - 1);
825
+ }
826
+ if (str.indexOf('\n') > -1) {
827
+ if (array) {
828
+ str = str.split('\n').map(function(line) {
829
+ return ' ' + line;
830
+ }).join('\n').substr(2);
831
+ } else {
832
+ str = '\n' + str.split('\n').map(function(line) {
833
+ return ' ' + line;
834
+ }).join('\n');
835
+ }
836
+ }
837
+ } else {
838
+ str = ctx.stylize('[Circular]', 'special');
839
+ }
840
+ }
841
+ if (isUndefined(name)) {
842
+ if (array && key.match(/^\d+$/)) {
843
+ return str;
844
+ }
845
+ name = JSON.stringify('' + key);
846
+ if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
847
+ name = name.substr(1, name.length - 2);
848
+ name = ctx.stylize(name, 'name');
849
+ } else {
850
+ name = name.replace(/'/g, "\\'")
851
+ .replace(/\\"/g, '"')
852
+ .replace(/(^"|"$)/g, "'");
853
+ name = ctx.stylize(name, 'string');
854
+ }
855
+ }
856
+
857
+ return name + ': ' + str;
858
+ }
859
+
860
+
861
+ function reduceToSingleString(output, base, braces) {
862
+ var numLinesEst = 0;
863
+ var length = output.reduce(function(prev, cur) {
864
+ numLinesEst++;
865
+ if (cur.indexOf('\n') >= 0) numLinesEst++;
866
+ return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
867
+ }, 0);
868
+
869
+ if (length > 60) {
870
+ return braces[0] +
871
+ (base === '' ? '' : base + '\n ') +
872
+ ' ' +
873
+ output.join(',\n ') +
874
+ ' ' +
875
+ braces[1];
876
+ }
877
+
878
+ return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
879
+ }
880
+
881
+
882
+ // NOTE: These type checking functions intentionally don't use `instanceof`
883
+ // because it is fragile and can be easily faked with `Object.create()`.
884
+ function isArray(ar) {
885
+ return Array.isArray(ar);
886
+ }
887
+ exports.isArray = isArray;
888
+
889
+ function isBoolean(arg) {
890
+ return typeof arg === 'boolean';
891
+ }
892
+ exports.isBoolean = isBoolean;
893
+
894
+ function isNull(arg) {
895
+ return arg === null;
896
+ }
897
+ exports.isNull = isNull;
898
+
899
+ function isNullOrUndefined(arg) {
900
+ return arg == null;
901
+ }
902
+ exports.isNullOrUndefined = isNullOrUndefined;
903
+
904
+ function isNumber(arg) {
905
+ return typeof arg === 'number';
906
+ }
907
+ exports.isNumber = isNumber;
908
+
909
+ function isString(arg) {
910
+ return typeof arg === 'string';
911
+ }
912
+ exports.isString = isString;
913
+
914
+ function isSymbol(arg) {
915
+ return typeof arg === 'symbol';
916
+ }
917
+ exports.isSymbol = isSymbol;
918
+
919
+ function isUndefined(arg) {
920
+ return arg === void 0;
921
+ }
922
+ exports.isUndefined = isUndefined;
923
+
924
+ function isRegExp(re) {
925
+ return isObject(re) && objectToString(re) === '[object RegExp]';
926
+ }
927
+ exports.isRegExp = isRegExp;
928
+
929
+ function isObject(arg) {
930
+ return typeof arg === 'object' && arg !== null;
931
+ }
932
+ exports.isObject = isObject;
933
+
934
+ function isDate(d) {
935
+ return isObject(d) && objectToString(d) === '[object Date]';
936
+ }
937
+ exports.isDate = isDate;
938
+
939
+ function isError(e) {
940
+ return isObject(e) &&
941
+ (objectToString(e) === '[object Error]' || e instanceof Error);
942
+ }
943
+ exports.isError = isError;
944
+
945
+ function isFunction(arg) {
946
+ return typeof arg === 'function';
947
+ }
948
+ exports.isFunction = isFunction;
949
+
950
+ function isPrimitive(arg) {
951
+ return arg === null ||
952
+ typeof arg === 'boolean' ||
953
+ typeof arg === 'number' ||
954
+ typeof arg === 'string' ||
955
+ typeof arg === 'symbol' || // ES6 symbol
956
+ typeof arg === 'undefined';
957
+ }
958
+ exports.isPrimitive = isPrimitive;
959
+
960
+ exports.isBuffer = __webpack_require__(21);
961
+
962
+ function objectToString(o) {
963
+ return Object.prototype.toString.call(o);
964
+ }
965
+
966
+
967
+ function pad(n) {
968
+ return n < 10 ? '0' + n.toString(10) : n.toString(10);
969
+ }
970
+
971
+
972
+ var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
973
+ 'Oct', 'Nov', 'Dec'];
974
+
975
+ // 26 Feb 16:19:34
976
+ function timestamp() {
977
+ var d = new Date();
978
+ var time = [pad(d.getHours()),
979
+ pad(d.getMinutes()),
980
+ pad(d.getSeconds())].join(':');
981
+ return [d.getDate(), months[d.getMonth()], time].join(' ');
982
+ }
983
+
984
+
985
+ // log is just a thin wrapper to console.log that prepends a timestamp
986
+ exports.log = function() {
987
+ console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
988
+ };
989
+
990
+
991
+ /**
992
+ * Inherit the prototype methods from one constructor into another.
993
+ *
994
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
995
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
996
+ * during bootstrapping this function needs to be rewritten using some native
997
+ * functions as prototype setup using normal JavaScript does not work as
998
+ * expected during bootstrapping (see mirror.js in r114903).
999
+ *
1000
+ * @param {function} ctor Constructor function which needs to inherit the
1001
+ * prototype.
1002
+ * @param {function} superCtor Constructor function to inherit prototype from.
1003
+ */
1004
+ exports.inherits = __webpack_require__(40);
1005
+
1006
+ exports._extend = function(origin, add) {
1007
+ // Don't do anything if add isn't an object
1008
+ if (!add || !isObject(add)) return origin;
1009
+
1010
+ var keys = Object.keys(add);
1011
+ var i = keys.length;
1012
+ while (i--) {
1013
+ origin[keys[i]] = add[keys[i]];
1014
+ }
1015
+ return origin;
1016
+ };
1017
+
1018
+ function hasOwnProperty(obj, prop) {
1019
+ return Object.prototype.hasOwnProperty.call(obj, prop);
1020
+ }
1021
+
1022
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(25)))
1023
+
1024
+ /***/ },
1025
+ /* 10 */
1026
+ /***/ function(module, exports, __webpack_require__) {
1027
+
1028
+ /**
1029
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1030
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1031
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1032
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1033
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1034
+ * Available under MIT license <http://lodash.com/license>
1035
+ */
1036
+ var baseClone = __webpack_require__(26),
1037
+ baseCreateCallback = __webpack_require__(27);
1038
+
1039
+ /**
1040
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects will also
1041
+ * be cloned, otherwise they will be assigned by reference. If a callback
1042
+ * is provided it will be executed to produce the cloned values. If the
1043
+ * callback returns `undefined` cloning will be handled by the method instead.
1044
+ * The callback is bound to `thisArg` and invoked with one argument; (value).
1045
+ *
1046
+ * @static
1047
+ * @memberOf _
1048
+ * @category Objects
1049
+ * @param {*} value The value to clone.
1050
+ * @param {boolean} [isDeep=false] Specify a deep clone.
1051
+ * @param {Function} [callback] The function to customize cloning values.
1052
+ * @param {*} [thisArg] The `this` binding of `callback`.
1053
+ * @returns {*} Returns the cloned value.
1054
+ * @example
1055
+ *
1056
+ * var characters = [
1057
+ * { 'name': 'barney', 'age': 36 },
1058
+ * { 'name': 'fred', 'age': 40 }
1059
+ * ];
1060
+ *
1061
+ * var shallow = _.clone(characters);
1062
+ * shallow[0] === characters[0];
1063
+ * // => true
1064
+ *
1065
+ * var deep = _.clone(characters, true);
1066
+ * deep[0] === characters[0];
1067
+ * // => false
1068
+ *
1069
+ * _.mixin({
1070
+ * 'clone': _.partialRight(_.clone, function(value) {
1071
+ * return _.isElement(value) ? value.cloneNode(false) : undefined;
1072
+ * })
1073
+ * });
1074
+ *
1075
+ * var clone = _.clone(document.body);
1076
+ * clone.childNodes.length;
1077
+ * // => 0
1078
+ */
1079
+ function clone(value, isDeep, callback, thisArg) {
1080
+ // allows working with "Collections" methods without using their `index`
1081
+ // and `collection` arguments for `isDeep` and `callback`
1082
+ if (typeof isDeep != 'boolean' && isDeep != null) {
1083
+ thisArg = callback;
1084
+ callback = isDeep;
1085
+ isDeep = false;
1086
+ }
1087
+ return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));
1088
+ }
1089
+
1090
+ module.exports = clone;
1091
+
1092
+
1093
+ /***/ },
1094
+ /* 11 */
1095
+ /***/ function(module, exports, __webpack_require__) {
1096
+
1097
+ /**
1098
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1099
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1100
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1101
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1102
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1103
+ * Available under MIT license <http://lodash.com/license>
1104
+ */
1105
+ var createCallback = __webpack_require__(39),
1106
+ forOwn = __webpack_require__(12);
1107
+
1108
+ /**
1109
+ * Creates an object with the same keys as `object` and values generated by
1110
+ * running each own enumerable property of `object` through the callback.
1111
+ * The callback is bound to `thisArg` and invoked with three arguments;
1112
+ * (value, key, object).
1113
+ *
1114
+ * If a property name is provided for `callback` the created "_.pluck" style
1115
+ * callback will return the property value of the given element.
1116
+ *
1117
+ * If an object is provided for `callback` the created "_.where" style callback
1118
+ * will return `true` for elements that have the properties of the given object,
1119
+ * else `false`.
1120
+ *
1121
+ * @static
1122
+ * @memberOf _
1123
+ * @category Objects
1124
+ * @param {Object} object The object to iterate over.
1125
+ * @param {Function|Object|string} [callback=identity] The function called
1126
+ * per iteration. If a property name or object is provided it will be used
1127
+ * to create a "_.pluck" or "_.where" style callback, respectively.
1128
+ * @param {*} [thisArg] The `this` binding of `callback`.
1129
+ * @returns {Array} Returns a new object with values of the results of each `callback` execution.
1130
+ * @example
1131
+ *
1132
+ * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; });
1133
+ * // => { 'a': 3, 'b': 6, 'c': 9 }
1134
+ *
1135
+ * var characters = {
1136
+ * 'fred': { 'name': 'fred', 'age': 40 },
1137
+ * 'pebbles': { 'name': 'pebbles', 'age': 1 }
1138
+ * };
1139
+ *
1140
+ * // using "_.pluck" callback shorthand
1141
+ * _.mapValues(characters, 'age');
1142
+ * // => { 'fred': 40, 'pebbles': 1 }
1143
+ */
1144
+ function mapValues(object, callback, thisArg) {
1145
+ var result = {};
1146
+ callback = createCallback(callback, thisArg, 3);
1147
+
1148
+ forOwn(object, function(value, key, object) {
1149
+ result[key] = callback(value, key, object);
1150
+ });
1151
+ return result;
1152
+ }
1153
+
1154
+ module.exports = mapValues;
1155
+
1156
+
1157
+ /***/ },
1158
+ /* 12 */
1159
+ /***/ function(module, exports, __webpack_require__) {
1160
+
1161
+ /**
1162
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1163
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1164
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1165
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1166
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1167
+ * Available under MIT license <http://lodash.com/license>
1168
+ */
1169
+ var baseCreateCallback = __webpack_require__(27),
1170
+ keys = __webpack_require__(13),
1171
+ objectTypes = __webpack_require__(28);
1172
+
1173
+ /**
1174
+ * Iterates over own enumerable properties of an object, executing the callback
1175
+ * for each property. The callback is bound to `thisArg` and invoked with three
1176
+ * arguments; (value, key, object). Callbacks may exit iteration early by
1177
+ * explicitly returning `false`.
1178
+ *
1179
+ * @static
1180
+ * @memberOf _
1181
+ * @type Function
1182
+ * @category Objects
1183
+ * @param {Object} object The object to iterate over.
1184
+ * @param {Function} [callback=identity] The function called per iteration.
1185
+ * @param {*} [thisArg] The `this` binding of `callback`.
1186
+ * @returns {Object} Returns `object`.
1187
+ * @example
1188
+ *
1189
+ * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {
1190
+ * console.log(key);
1191
+ * });
1192
+ * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)
1193
+ */
1194
+ var forOwn = function(collection, callback, thisArg) {
1195
+ var index, iterable = collection, result = iterable;
1196
+ if (!iterable) return result;
1197
+ if (!objectTypes[typeof iterable]) return result;
1198
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
1199
+ var ownIndex = -1,
1200
+ ownProps = objectTypes[typeof iterable] && keys(iterable),
1201
+ length = ownProps ? ownProps.length : 0;
1202
+
1203
+ while (++ownIndex < length) {
1204
+ index = ownProps[ownIndex];
1205
+ if (callback(iterable[index], index, collection) === false) return result;
1206
+ }
1207
+ return result
1208
+ };
1209
+
1210
+ module.exports = forOwn;
1211
+
1212
+
1213
+ /***/ },
1214
+ /* 13 */
1215
+ /***/ function(module, exports, __webpack_require__) {
1216
+
1217
+ /**
1218
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1219
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1220
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1221
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1222
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1223
+ * Available under MIT license <http://lodash.com/license>
1224
+ */
1225
+ var isNative = __webpack_require__(29),
1226
+ isObject = __webpack_require__(22),
1227
+ shimKeys = __webpack_require__(30);
1228
+
1229
+ /* Native method shortcuts for methods with the same name as other `lodash` methods */
1230
+ var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
1231
+
1232
+ /**
1233
+ * Creates an array composed of the own enumerable property names of an object.
1234
+ *
1235
+ * @static
1236
+ * @memberOf _
1237
+ * @category Objects
1238
+ * @param {Object} object The object to inspect.
1239
+ * @returns {Array} Returns an array of property names.
1240
+ * @example
1241
+ *
1242
+ * _.keys({ 'one': 1, 'two': 2, 'three': 3 });
1243
+ * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)
1244
+ */
1245
+ var keys = !nativeKeys ? shimKeys : function(object) {
1246
+ if (!isObject(object)) {
1247
+ return [];
1248
+ }
1249
+ return nativeKeys(object);
1250
+ };
1251
+
1252
+ module.exports = keys;
1253
+
1254
+
1255
+ /***/ },
1256
+ /* 14 */
1257
+ /***/ function(module, exports, __webpack_require__) {
1258
+
1259
+ /**
1260
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1261
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1262
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1263
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1264
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1265
+ * Available under MIT license <http://lodash.com/license>
1266
+ */
1267
+ var createCallback = __webpack_require__(39),
1268
+ forOwn = __webpack_require__(12);
1269
+
1270
+ /**
1271
+ * This method is like `_.findIndex` except that it returns the key of the
1272
+ * first element that passes the callback check, instead of the element itself.
1273
+ *
1274
+ * If a property name is provided for `callback` the created "_.pluck" style
1275
+ * callback will return the property value of the given element.
1276
+ *
1277
+ * If an object is provided for `callback` the created "_.where" style callback
1278
+ * will return `true` for elements that have the properties of the given object,
1279
+ * else `false`.
1280
+ *
1281
+ * @static
1282
+ * @memberOf _
1283
+ * @category Objects
1284
+ * @param {Object} object The object to search.
1285
+ * @param {Function|Object|string} [callback=identity] The function called per
1286
+ * iteration. If a property name or object is provided it will be used to
1287
+ * create a "_.pluck" or "_.where" style callback, respectively.
1288
+ * @param {*} [thisArg] The `this` binding of `callback`.
1289
+ * @returns {string|undefined} Returns the key of the found element, else `undefined`.
1290
+ * @example
1291
+ *
1292
+ * var characters = {
1293
+ * 'barney': { 'age': 36, 'blocked': false },
1294
+ * 'fred': { 'age': 40, 'blocked': true },
1295
+ * 'pebbles': { 'age': 1, 'blocked': false }
1296
+ * };
1297
+ *
1298
+ * _.findKey(characters, function(chr) {
1299
+ * return chr.age < 40;
1300
+ * });
1301
+ * // => 'barney' (property order is not guaranteed across environments)
1302
+ *
1303
+ * // using "_.where" callback shorthand
1304
+ * _.findKey(characters, { 'age': 1 });
1305
+ * // => 'pebbles'
1306
+ *
1307
+ * // using "_.pluck" callback shorthand
1308
+ * _.findKey(characters, 'blocked');
1309
+ * // => 'fred'
1310
+ */
1311
+ function findKey(object, callback, thisArg) {
1312
+ var result;
1313
+ callback = createCallback(callback, thisArg, 3);
1314
+ forOwn(object, function(value, key, object) {
1315
+ if (callback(value, key, object)) {
1316
+ result = key;
1317
+ return false;
1318
+ }
1319
+ });
1320
+ return result;
1321
+ }
1322
+
1323
+ module.exports = findKey;
1324
+
1325
+
1326
+ /***/ },
1327
+ /* 15 */
1328
+ /***/ function(module, exports, __webpack_require__) {
1329
+
1330
+ /**
1331
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1332
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1333
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1334
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1335
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1336
+ * Available under MIT license <http://lodash.com/license>
1337
+ */
1338
+ var baseIndexOf = __webpack_require__(31),
1339
+ cacheIndexOf = __webpack_require__(32),
1340
+ createCache = __webpack_require__(33),
1341
+ getArray = __webpack_require__(34),
1342
+ isArguments = __webpack_require__(23),
1343
+ isArray = __webpack_require__(24),
1344
+ largeArraySize = __webpack_require__(35),
1345
+ releaseArray = __webpack_require__(36),
1346
+ releaseObject = __webpack_require__(37);
1347
+
1348
+ /**
1349
+ * Creates an array of unique values present in all provided arrays using
1350
+ * strict equality for comparisons, i.e. `===`.
1351
+ *
1352
+ * @static
1353
+ * @memberOf _
1354
+ * @category Arrays
1355
+ * @param {...Array} [array] The arrays to inspect.
1356
+ * @returns {Array} Returns an array of shared values.
1357
+ * @example
1358
+ *
1359
+ * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);
1360
+ * // => [1, 2]
1361
+ */
1362
+ function intersection() {
1363
+ var args = [],
1364
+ argsIndex = -1,
1365
+ argsLength = arguments.length,
1366
+ caches = getArray(),
1367
+ indexOf = baseIndexOf,
1368
+ trustIndexOf = indexOf === baseIndexOf,
1369
+ seen = getArray();
1370
+
1371
+ while (++argsIndex < argsLength) {
1372
+ var value = arguments[argsIndex];
1373
+ if (isArray(value) || isArguments(value)) {
1374
+ args.push(value);
1375
+ caches.push(trustIndexOf && value.length >= largeArraySize &&
1376
+ createCache(argsIndex ? args[argsIndex] : seen));
1377
+ }
1378
+ }
1379
+ var array = args[0],
1380
+ index = -1,
1381
+ length = array ? array.length : 0,
1382
+ result = [];
1383
+
1384
+ outer:
1385
+ while (++index < length) {
1386
+ var cache = caches[0];
1387
+ value = array[index];
1388
+
1389
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) {
1390
+ argsIndex = argsLength;
1391
+ (cache || seen).push(value);
1392
+ while (--argsIndex) {
1393
+ cache = caches[argsIndex];
1394
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) {
1395
+ continue outer;
1396
+ }
1397
+ }
1398
+ result.push(value);
1399
+ }
1400
+ }
1401
+ while (argsLength--) {
1402
+ cache = caches[argsLength];
1403
+ if (cache) {
1404
+ releaseObject(cache);
1405
+ }
1406
+ }
1407
+ releaseArray(caches);
1408
+ releaseArray(seen);
1409
+ return result;
1410
+ }
1411
+
1412
+ module.exports = intersection;
1413
+
1414
+
1415
+ /***/ },
1416
+ /* 16 */
1417
+ /***/ function(module, exports, __webpack_require__) {
1418
+
1419
+ /**
1420
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1421
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1422
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1423
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1424
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1425
+ * Available under MIT license <http://lodash.com/license>
1426
+ */
1427
+ var baseUniq = __webpack_require__(38),
1428
+ createCallback = __webpack_require__(39);
1429
+
1430
+ /**
1431
+ * Creates a duplicate-value-free version of an array using strict equality
1432
+ * for comparisons, i.e. `===`. If the array is sorted, providing
1433
+ * `true` for `isSorted` will use a faster algorithm. If a callback is provided
1434
+ * each element of `array` is passed through the callback before uniqueness
1435
+ * is computed. The callback is bound to `thisArg` and invoked with three
1436
+ * arguments; (value, index, array).
1437
+ *
1438
+ * If a property name is provided for `callback` the created "_.pluck" style
1439
+ * callback will return the property value of the given element.
1440
+ *
1441
+ * If an object is provided for `callback` the created "_.where" style callback
1442
+ * will return `true` for elements that have the properties of the given object,
1443
+ * else `false`.
1444
+ *
1445
+ * @static
1446
+ * @memberOf _
1447
+ * @alias unique
1448
+ * @category Arrays
1449
+ * @param {Array} array The array to process.
1450
+ * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
1451
+ * @param {Function|Object|string} [callback=identity] The function called
1452
+ * per iteration. If a property name or object is provided it will be used
1453
+ * to create a "_.pluck" or "_.where" style callback, respectively.
1454
+ * @param {*} [thisArg] The `this` binding of `callback`.
1455
+ * @returns {Array} Returns a duplicate-value-free array.
1456
+ * @example
1457
+ *
1458
+ * _.uniq([1, 2, 1, 3, 1]);
1459
+ * // => [1, 2, 3]
1460
+ *
1461
+ * _.uniq([1, 1, 2, 2, 3], true);
1462
+ * // => [1, 2, 3]
1463
+ *
1464
+ * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); });
1465
+ * // => ['A', 'b', 'C']
1466
+ *
1467
+ * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math);
1468
+ * // => [1, 2.5, 3]
1469
+ *
1470
+ * // using "_.pluck" callback shorthand
1471
+ * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
1472
+ * // => [{ 'x': 1 }, { 'x': 2 }]
1473
+ */
1474
+ function uniq(array, isSorted, callback, thisArg) {
1475
+ // juggle arguments
1476
+ if (typeof isSorted != 'boolean' && isSorted != null) {
1477
+ thisArg = callback;
1478
+ callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted;
1479
+ isSorted = false;
1480
+ }
1481
+ if (callback != null) {
1482
+ callback = createCallback(callback, thisArg, 3);
1483
+ }
1484
+ return baseUniq(array, isSorted, callback);
1485
+ }
1486
+
1487
+ module.exports = uniq;
1488
+
1489
+
1490
+ /***/ },
1491
+ /* 17 */
1492
+ /***/ function(module, exports, __webpack_require__) {
1493
+
1494
+ /**
1495
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1496
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1497
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1498
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1499
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1500
+ * Available under MIT license <http://lodash.com/license>
1501
+ */
1502
+ var createCallback = __webpack_require__(39),
1503
+ forOwn = __webpack_require__(12);
1504
+
1505
+ /**
1506
+ * Creates an array of values by running each element in the collection
1507
+ * through the callback. The callback is bound to `thisArg` and invoked with
1508
+ * three arguments; (value, index|key, collection).
1509
+ *
1510
+ * If a property name is provided for `callback` the created "_.pluck" style
1511
+ * callback will return the property value of the given element.
1512
+ *
1513
+ * If an object is provided for `callback` the created "_.where" style callback
1514
+ * will return `true` for elements that have the properties of the given object,
1515
+ * else `false`.
1516
+ *
1517
+ * @static
1518
+ * @memberOf _
1519
+ * @alias collect
1520
+ * @category Collections
1521
+ * @param {Array|Object|string} collection The collection to iterate over.
1522
+ * @param {Function|Object|string} [callback=identity] The function called
1523
+ * per iteration. If a property name or object is provided it will be used
1524
+ * to create a "_.pluck" or "_.where" style callback, respectively.
1525
+ * @param {*} [thisArg] The `this` binding of `callback`.
1526
+ * @returns {Array} Returns a new array of the results of each `callback` execution.
1527
+ * @example
1528
+ *
1529
+ * _.map([1, 2, 3], function(num) { return num * 3; });
1530
+ * // => [3, 6, 9]
1531
+ *
1532
+ * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; });
1533
+ * // => [3, 6, 9] (property order is not guaranteed across environments)
1534
+ *
1535
+ * var characters = [
1536
+ * { 'name': 'barney', 'age': 36 },
1537
+ * { 'name': 'fred', 'age': 40 }
1538
+ * ];
1539
+ *
1540
+ * // using "_.pluck" callback shorthand
1541
+ * _.map(characters, 'name');
1542
+ * // => ['barney', 'fred']
1543
+ */
1544
+ function map(collection, callback, thisArg) {
1545
+ var index = -1,
1546
+ length = collection ? collection.length : 0;
1547
+
1548
+ callback = createCallback(callback, thisArg, 3);
1549
+ if (typeof length == 'number') {
1550
+ var result = Array(length);
1551
+ while (++index < length) {
1552
+ result[index] = callback(collection[index], index, collection);
1553
+ }
1554
+ } else {
1555
+ result = [];
1556
+ forOwn(collection, function(value, key, collection) {
1557
+ result[++index] = callback(value, key, collection);
1558
+ });
1559
+ }
1560
+ return result;
1561
+ }
1562
+
1563
+ module.exports = map;
1564
+
1565
+
1566
+ /***/ },
1567
+ /* 18 */
1568
+ /***/ function(module, exports, __webpack_require__) {
1569
+
1570
+ /**
1571
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1572
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1573
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1574
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1575
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1576
+ * Available under MIT license <http://lodash.com/license>
1577
+ */
1578
+ var baseCreateCallback = __webpack_require__(27),
1579
+ forOwn = __webpack_require__(12);
1580
+
1581
+ /**
1582
+ * Iterates over elements of a collection, executing the callback for each
1583
+ * element. The callback is bound to `thisArg` and invoked with three arguments;
1584
+ * (value, index|key, collection). Callbacks may exit iteration early by
1585
+ * explicitly returning `false`.
1586
+ *
1587
+ * Note: As with other "Collections" methods, objects with a `length` property
1588
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1589
+ * may be used for object iteration.
1590
+ *
1591
+ * @static
1592
+ * @memberOf _
1593
+ * @alias each
1594
+ * @category Collections
1595
+ * @param {Array|Object|string} collection The collection to iterate over.
1596
+ * @param {Function} [callback=identity] The function called per iteration.
1597
+ * @param {*} [thisArg] The `this` binding of `callback`.
1598
+ * @returns {Array|Object|string} Returns `collection`.
1599
+ * @example
1600
+ *
1601
+ * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');
1602
+ * // => logs each number and returns '1,2,3'
1603
+ *
1604
+ * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });
1605
+ * // => logs each number and returns the object (property order is not guaranteed across environments)
1606
+ */
1607
+ function forEach(collection, callback, thisArg) {
1608
+ var index = -1,
1609
+ length = collection ? collection.length : 0;
1610
+
1611
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
1612
+ if (typeof length == 'number') {
1613
+ while (++index < length) {
1614
+ if (callback(collection[index], index, collection) === false) {
1615
+ break;
1616
+ }
1617
+ }
1618
+ } else {
1619
+ forOwn(collection, callback);
1620
+ }
1621
+ return collection;
1622
+ }
1623
+
1624
+ module.exports = forEach;
1625
+
1626
+
1627
+ /***/ },
1628
+ /* 19 */
1629
+ /***/ function(module, exports, __webpack_require__) {
1630
+
1631
+ /**
1632
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1633
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1634
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1635
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1636
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1637
+ * Available under MIT license <http://lodash.com/license>
1638
+ */
1639
+ var keys = __webpack_require__(13);
1640
+
1641
+ /**
1642
+ * Gets the size of the `collection` by returning `collection.length` for arrays
1643
+ * and array-like objects or the number of own enumerable properties for objects.
1644
+ *
1645
+ * @static
1646
+ * @memberOf _
1647
+ * @category Collections
1648
+ * @param {Array|Object|string} collection The collection to inspect.
1649
+ * @returns {number} Returns `collection.length` or number of own enumerable properties.
1650
+ * @example
1651
+ *
1652
+ * _.size([1, 2]);
1653
+ * // => 2
1654
+ *
1655
+ * _.size({ 'one': 1, 'two': 2, 'three': 3 });
1656
+ * // => 3
1657
+ *
1658
+ * _.size('pebbles');
1659
+ * // => 7
1660
+ */
1661
+ function size(collection) {
1662
+ var length = collection ? collection.length : 0;
1663
+ return typeof length == 'number' ? length : keys(collection).length;
1664
+ }
1665
+
1666
+ module.exports = size;
1667
+
1668
+
1669
+ /***/ },
1670
+ /* 20 */
1671
+ /***/ function(module, exports, __webpack_require__) {
1672
+
1673
+ // Copyright Joyent, Inc. and other Node contributors.
1674
+ //
1675
+ // Permission is hereby granted, free of charge, to any person obtaining a
1676
+ // copy of this software and associated documentation files (the
1677
+ // "Software"), to deal in the Software without restriction, including
1678
+ // without limitation the rights to use, copy, modify, merge, publish,
1679
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
1680
+ // persons to whom the Software is furnished to do so, subject to the
1681
+ // following conditions:
1682
+ //
1683
+ // The above copyright notice and this permission notice shall be included
1684
+ // in all copies or substantial portions of the Software.
1685
+ //
1686
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1687
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1688
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
1689
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
1690
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
1691
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
1692
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
1693
+
1694
+ function EventEmitter() {
1695
+ this._events = this._events || {};
1696
+ this._maxListeners = this._maxListeners || undefined;
1697
+ }
1698
+ module.exports = EventEmitter;
1699
+
1700
+ // Backwards-compat with node 0.10.x
1701
+ EventEmitter.EventEmitter = EventEmitter;
1702
+
1703
+ EventEmitter.prototype._events = undefined;
1704
+ EventEmitter.prototype._maxListeners = undefined;
1705
+
1706
+ // By default EventEmitters will print a warning if more than 10 listeners are
1707
+ // added to it. This is a useful default which helps finding memory leaks.
1708
+ EventEmitter.defaultMaxListeners = 10;
1709
+
1710
+ // Obviously not all Emitters should be limited to 10. This function allows
1711
+ // that to be increased. Set to zero for unlimited.
1712
+ EventEmitter.prototype.setMaxListeners = function(n) {
1713
+ if (!isNumber(n) || n < 0 || isNaN(n))
1714
+ throw TypeError('n must be a positive number');
1715
+ this._maxListeners = n;
1716
+ return this;
1717
+ };
1718
+
1719
+ EventEmitter.prototype.emit = function(type) {
1720
+ var er, handler, len, args, i, listeners;
1721
+
1722
+ if (!this._events)
1723
+ this._events = {};
1724
+
1725
+ // If there is no 'error' event listener then throw.
1726
+ if (type === 'error') {
1727
+ if (!this._events.error ||
1728
+ (isObject(this._events.error) && !this._events.error.length)) {
1729
+ er = arguments[1];
1730
+ if (er instanceof Error) {
1731
+ throw er; // Unhandled 'error' event
1732
+ } else {
1733
+ throw TypeError('Uncaught, unspecified "error" event.');
1734
+ }
1735
+ return false;
1736
+ }
1737
+ }
1738
+
1739
+ handler = this._events[type];
1740
+
1741
+ if (isUndefined(handler))
1742
+ return false;
1743
+
1744
+ if (isFunction(handler)) {
1745
+ switch (arguments.length) {
1746
+ // fast cases
1747
+ case 1:
1748
+ handler.call(this);
1749
+ break;
1750
+ case 2:
1751
+ handler.call(this, arguments[1]);
1752
+ break;
1753
+ case 3:
1754
+ handler.call(this, arguments[1], arguments[2]);
1755
+ break;
1756
+ // slower
1757
+ default:
1758
+ len = arguments.length;
1759
+ args = new Array(len - 1);
1760
+ for (i = 1; i < len; i++)
1761
+ args[i - 1] = arguments[i];
1762
+ handler.apply(this, args);
1763
+ }
1764
+ } else if (isObject(handler)) {
1765
+ len = arguments.length;
1766
+ args = new Array(len - 1);
1767
+ for (i = 1; i < len; i++)
1768
+ args[i - 1] = arguments[i];
1769
+
1770
+ listeners = handler.slice();
1771
+ len = listeners.length;
1772
+ for (i = 0; i < len; i++)
1773
+ listeners[i].apply(this, args);
1774
+ }
1775
+
1776
+ return true;
1777
+ };
1778
+
1779
+ EventEmitter.prototype.addListener = function(type, listener) {
1780
+ var m;
1781
+
1782
+ if (!isFunction(listener))
1783
+ throw TypeError('listener must be a function');
1784
+
1785
+ if (!this._events)
1786
+ this._events = {};
1787
+
1788
+ // To avoid recursion in the case that type === "newListener"! Before
1789
+ // adding it to the listeners, first emit "newListener".
1790
+ if (this._events.newListener)
1791
+ this.emit('newListener', type,
1792
+ isFunction(listener.listener) ?
1793
+ listener.listener : listener);
1794
+
1795
+ if (!this._events[type])
1796
+ // Optimize the case of one listener. Don't need the extra array object.
1797
+ this._events[type] = listener;
1798
+ else if (isObject(this._events[type]))
1799
+ // If we've already got an array, just append.
1800
+ this._events[type].push(listener);
1801
+ else
1802
+ // Adding the second element, need to change to array.
1803
+ this._events[type] = [this._events[type], listener];
1804
+
1805
+ // Check for listener leak
1806
+ if (isObject(this._events[type]) && !this._events[type].warned) {
1807
+ var m;
1808
+ if (!isUndefined(this._maxListeners)) {
1809
+ m = this._maxListeners;
1810
+ } else {
1811
+ m = EventEmitter.defaultMaxListeners;
1812
+ }
1813
+
1814
+ if (m && m > 0 && this._events[type].length > m) {
1815
+ this._events[type].warned = true;
1816
+ console.error('(node) warning: possible EventEmitter memory ' +
1817
+ 'leak detected. %d listeners added. ' +
1818
+ 'Use emitter.setMaxListeners() to increase limit.',
1819
+ this._events[type].length);
1820
+ if (typeof console.trace === 'function') {
1821
+ // not supported in IE 10
1822
+ console.trace();
1823
+ }
1824
+ }
1825
+ }
1826
+
1827
+ return this;
1828
+ };
1829
+
1830
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
1831
+
1832
+ EventEmitter.prototype.once = function(type, listener) {
1833
+ if (!isFunction(listener))
1834
+ throw TypeError('listener must be a function');
1835
+
1836
+ var fired = false;
1837
+
1838
+ function g() {
1839
+ this.removeListener(type, g);
1840
+
1841
+ if (!fired) {
1842
+ fired = true;
1843
+ listener.apply(this, arguments);
1844
+ }
1845
+ }
1846
+
1847
+ g.listener = listener;
1848
+ this.on(type, g);
1849
+
1850
+ return this;
1851
+ };
1852
+
1853
+ // emits a 'removeListener' event iff the listener was removed
1854
+ EventEmitter.prototype.removeListener = function(type, listener) {
1855
+ var list, position, length, i;
1856
+
1857
+ if (!isFunction(listener))
1858
+ throw TypeError('listener must be a function');
1859
+
1860
+ if (!this._events || !this._events[type])
1861
+ return this;
1862
+
1863
+ list = this._events[type];
1864
+ length = list.length;
1865
+ position = -1;
1866
+
1867
+ if (list === listener ||
1868
+ (isFunction(list.listener) && list.listener === listener)) {
1869
+ delete this._events[type];
1870
+ if (this._events.removeListener)
1871
+ this.emit('removeListener', type, listener);
1872
+
1873
+ } else if (isObject(list)) {
1874
+ for (i = length; i-- > 0;) {
1875
+ if (list[i] === listener ||
1876
+ (list[i].listener && list[i].listener === listener)) {
1877
+ position = i;
1878
+ break;
1879
+ }
1880
+ }
1881
+
1882
+ if (position < 0)
1883
+ return this;
1884
+
1885
+ if (list.length === 1) {
1886
+ list.length = 0;
1887
+ delete this._events[type];
1888
+ } else {
1889
+ list.splice(position, 1);
1890
+ }
1891
+
1892
+ if (this._events.removeListener)
1893
+ this.emit('removeListener', type, listener);
1894
+ }
1895
+
1896
+ return this;
1897
+ };
1898
+
1899
+ EventEmitter.prototype.removeAllListeners = function(type) {
1900
+ var key, listeners;
1901
+
1902
+ if (!this._events)
1903
+ return this;
1904
+
1905
+ // not listening for removeListener, no need to emit
1906
+ if (!this._events.removeListener) {
1907
+ if (arguments.length === 0)
1908
+ this._events = {};
1909
+ else if (this._events[type])
1910
+ delete this._events[type];
1911
+ return this;
1912
+ }
1913
+
1914
+ // emit removeListener for all listeners on all events
1915
+ if (arguments.length === 0) {
1916
+ for (key in this._events) {
1917
+ if (key === 'removeListener') continue;
1918
+ this.removeAllListeners(key);
1919
+ }
1920
+ this.removeAllListeners('removeListener');
1921
+ this._events = {};
1922
+ return this;
1923
+ }
1924
+
1925
+ listeners = this._events[type];
1926
+
1927
+ if (isFunction(listeners)) {
1928
+ this.removeListener(type, listeners);
1929
+ } else {
1930
+ // LIFO order
1931
+ while (listeners.length)
1932
+ this.removeListener(type, listeners[listeners.length - 1]);
1933
+ }
1934
+ delete this._events[type];
1935
+
1936
+ return this;
1937
+ };
1938
+
1939
+ EventEmitter.prototype.listeners = function(type) {
1940
+ var ret;
1941
+ if (!this._events || !this._events[type])
1942
+ ret = [];
1943
+ else if (isFunction(this._events[type]))
1944
+ ret = [this._events[type]];
1945
+ else
1946
+ ret = this._events[type].slice();
1947
+ return ret;
1948
+ };
1949
+
1950
+ EventEmitter.listenerCount = function(emitter, type) {
1951
+ var ret;
1952
+ if (!emitter._events || !emitter._events[type])
1953
+ ret = 0;
1954
+ else if (isFunction(emitter._events[type]))
1955
+ ret = 1;
1956
+ else
1957
+ ret = emitter._events[type].length;
1958
+ return ret;
1959
+ };
1960
+
1961
+ function isFunction(arg) {
1962
+ return typeof arg === 'function';
1963
+ }
1964
+
1965
+ function isNumber(arg) {
1966
+ return typeof arg === 'number';
1967
+ }
1968
+
1969
+ function isObject(arg) {
1970
+ return typeof arg === 'object' && arg !== null;
1971
+ }
1972
+
1973
+ function isUndefined(arg) {
1974
+ return arg === void 0;
1975
+ }
1976
+
1977
+
1978
+ /***/ },
1979
+ /* 21 */
1980
+ /***/ function(module, exports, __webpack_require__) {
1981
+
1982
+ module.exports = function isBuffer(arg) {
1983
+ return arg && typeof arg === 'object'
1984
+ && typeof arg.copy === 'function'
1985
+ && typeof arg.fill === 'function'
1986
+ && typeof arg.readUInt8 === 'function';
1987
+ }
1988
+
1989
+ /***/ },
1990
+ /* 22 */
1991
+ /***/ function(module, exports, __webpack_require__) {
1992
+
1993
+ /**
1994
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
1995
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
1996
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
1997
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
1998
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1999
+ * Available under MIT license <http://lodash.com/license>
2000
+ */
2001
+ var objectTypes = __webpack_require__(28);
2002
+
2003
+ /**
2004
+ * Checks if `value` is the language type of Object.
2005
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2006
+ *
2007
+ * @static
2008
+ * @memberOf _
2009
+ * @category Objects
2010
+ * @param {*} value The value to check.
2011
+ * @returns {boolean} Returns `true` if the `value` is an object, else `false`.
2012
+ * @example
2013
+ *
2014
+ * _.isObject({});
2015
+ * // => true
2016
+ *
2017
+ * _.isObject([1, 2, 3]);
2018
+ * // => true
2019
+ *
2020
+ * _.isObject(1);
2021
+ * // => false
2022
+ */
2023
+ function isObject(value) {
2024
+ // check if the value is the ECMAScript language type of Object
2025
+ // http://es5.github.io/#x8
2026
+ // and avoid a V8 bug
2027
+ // http://code.google.com/p/v8/issues/detail?id=2291
2028
+ return !!(value && objectTypes[typeof value]);
2029
+ }
2030
+
2031
+ module.exports = isObject;
2032
+
2033
+
2034
+ /***/ },
2035
+ /* 23 */
2036
+ /***/ function(module, exports, __webpack_require__) {
2037
+
2038
+ /**
2039
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2040
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2041
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2042
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2043
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2044
+ * Available under MIT license <http://lodash.com/license>
2045
+ */
2046
+
2047
+ /** `Object#toString` result shortcuts */
2048
+ var argsClass = '[object Arguments]';
2049
+
2050
+ /** Used for native method references */
2051
+ var objectProto = Object.prototype;
2052
+
2053
+ /** Used to resolve the internal [[Class]] of values */
2054
+ var toString = objectProto.toString;
2055
+
2056
+ /**
2057
+ * Checks if `value` is an `arguments` object.
2058
+ *
2059
+ * @static
2060
+ * @memberOf _
2061
+ * @category Objects
2062
+ * @param {*} value The value to check.
2063
+ * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`.
2064
+ * @example
2065
+ *
2066
+ * (function() { return _.isArguments(arguments); })(1, 2, 3);
2067
+ * // => true
2068
+ *
2069
+ * _.isArguments([1, 2, 3]);
2070
+ * // => false
2071
+ */
2072
+ function isArguments(value) {
2073
+ return value && typeof value == 'object' && typeof value.length == 'number' &&
2074
+ toString.call(value) == argsClass || false;
2075
+ }
2076
+
2077
+ module.exports = isArguments;
2078
+
2079
+
2080
+ /***/ },
2081
+ /* 24 */
2082
+ /***/ function(module, exports, __webpack_require__) {
2083
+
2084
+ /**
2085
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2086
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2087
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2088
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2089
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2090
+ * Available under MIT license <http://lodash.com/license>
2091
+ */
2092
+ var isNative = __webpack_require__(29);
2093
+
2094
+ /** `Object#toString` result shortcuts */
2095
+ var arrayClass = '[object Array]';
2096
+
2097
+ /** Used for native method references */
2098
+ var objectProto = Object.prototype;
2099
+
2100
+ /** Used to resolve the internal [[Class]] of values */
2101
+ var toString = objectProto.toString;
2102
+
2103
+ /* Native method shortcuts for methods with the same name as other `lodash` methods */
2104
+ var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
2105
+
2106
+ /**
2107
+ * Checks if `value` is an array.
2108
+ *
2109
+ * @static
2110
+ * @memberOf _
2111
+ * @type Function
2112
+ * @category Objects
2113
+ * @param {*} value The value to check.
2114
+ * @returns {boolean} Returns `true` if the `value` is an array, else `false`.
2115
+ * @example
2116
+ *
2117
+ * (function() { return _.isArray(arguments); })();
2118
+ * // => false
2119
+ *
2120
+ * _.isArray([1, 2, 3]);
2121
+ * // => true
2122
+ */
2123
+ var isArray = nativeIsArray || function(value) {
2124
+ return value && typeof value == 'object' && typeof value.length == 'number' &&
2125
+ toString.call(value) == arrayClass || false;
2126
+ };
2127
+
2128
+ module.exports = isArray;
2129
+
2130
+
2131
+ /***/ },
2132
+ /* 25 */
2133
+ /***/ function(module, exports, __webpack_require__) {
2134
+
2135
+ // shim for using process in browser
2136
+
2137
+ var process = module.exports = {};
2138
+
2139
+ process.nextTick = (function () {
2140
+ var canSetImmediate = typeof window !== 'undefined'
2141
+ && window.setImmediate;
2142
+ var canPost = typeof window !== 'undefined'
2143
+ && window.postMessage && window.addEventListener
2144
+ ;
2145
+
2146
+ if (canSetImmediate) {
2147
+ return function (f) { return window.setImmediate(f) };
2148
+ }
2149
+
2150
+ if (canPost) {
2151
+ var queue = [];
2152
+ window.addEventListener('message', function (ev) {
2153
+ var source = ev.source;
2154
+ if ((source === window || source === null) && ev.data === 'process-tick') {
2155
+ ev.stopPropagation();
2156
+ if (queue.length > 0) {
2157
+ var fn = queue.shift();
2158
+ fn();
2159
+ }
2160
+ }
2161
+ }, true);
2162
+
2163
+ return function nextTick(fn) {
2164
+ queue.push(fn);
2165
+ window.postMessage('process-tick', '*');
2166
+ };
2167
+ }
2168
+
2169
+ return function nextTick(fn) {
2170
+ setTimeout(fn, 0);
2171
+ };
2172
+ })();
2173
+
2174
+ process.title = 'browser';
2175
+ process.browser = true;
2176
+ process.env = {};
2177
+ process.argv = [];
2178
+
2179
+ function noop() {}
2180
+
2181
+ process.on = noop;
2182
+ process.once = noop;
2183
+ process.off = noop;
2184
+ process.emit = noop;
2185
+
2186
+ process.binding = function (name) {
2187
+ throw new Error('process.binding is not supported');
2188
+ }
2189
+
2190
+ // TODO(shtylman)
2191
+ process.cwd = function () { return '/' };
2192
+ process.chdir = function (dir) {
2193
+ throw new Error('process.chdir is not supported');
2194
+ };
2195
+
2196
+
2197
+ /***/ },
2198
+ /* 26 */
2199
+ /***/ function(module, exports, __webpack_require__) {
2200
+
2201
+ /**
2202
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2203
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2204
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2205
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2206
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2207
+ * Available under MIT license <http://lodash.com/license>
2208
+ */
2209
+ var assign = __webpack_require__(41),
2210
+ forEach = __webpack_require__(18),
2211
+ forOwn = __webpack_require__(12),
2212
+ getArray = __webpack_require__(34),
2213
+ isArray = __webpack_require__(24),
2214
+ isObject = __webpack_require__(22),
2215
+ releaseArray = __webpack_require__(36),
2216
+ slice = __webpack_require__(42);
2217
+
2218
+ /** Used to match regexp flags from their coerced string values */
2219
+ var reFlags = /\w*$/;
2220
+
2221
+ /** `Object#toString` result shortcuts */
2222
+ var argsClass = '[object Arguments]',
2223
+ arrayClass = '[object Array]',
2224
+ boolClass = '[object Boolean]',
2225
+ dateClass = '[object Date]',
2226
+ funcClass = '[object Function]',
2227
+ numberClass = '[object Number]',
2228
+ objectClass = '[object Object]',
2229
+ regexpClass = '[object RegExp]',
2230
+ stringClass = '[object String]';
2231
+
2232
+ /** Used to identify object classifications that `_.clone` supports */
2233
+ var cloneableClasses = {};
2234
+ cloneableClasses[funcClass] = false;
2235
+ cloneableClasses[argsClass] = cloneableClasses[arrayClass] =
2236
+ cloneableClasses[boolClass] = cloneableClasses[dateClass] =
2237
+ cloneableClasses[numberClass] = cloneableClasses[objectClass] =
2238
+ cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true;
2239
+
2240
+ /** Used for native method references */
2241
+ var objectProto = Object.prototype;
2242
+
2243
+ /** Used to resolve the internal [[Class]] of values */
2244
+ var toString = objectProto.toString;
2245
+
2246
+ /** Native method shortcuts */
2247
+ var hasOwnProperty = objectProto.hasOwnProperty;
2248
+
2249
+ /** Used to lookup a built-in constructor by [[Class]] */
2250
+ var ctorByClass = {};
2251
+ ctorByClass[arrayClass] = Array;
2252
+ ctorByClass[boolClass] = Boolean;
2253
+ ctorByClass[dateClass] = Date;
2254
+ ctorByClass[funcClass] = Function;
2255
+ ctorByClass[objectClass] = Object;
2256
+ ctorByClass[numberClass] = Number;
2257
+ ctorByClass[regexpClass] = RegExp;
2258
+ ctorByClass[stringClass] = String;
2259
+
2260
+ /**
2261
+ * The base implementation of `_.clone` without argument juggling or support
2262
+ * for `thisArg` binding.
2263
+ *
2264
+ * @private
2265
+ * @param {*} value The value to clone.
2266
+ * @param {boolean} [isDeep=false] Specify a deep clone.
2267
+ * @param {Function} [callback] The function to customize cloning values.
2268
+ * @param {Array} [stackA=[]] Tracks traversed source objects.
2269
+ * @param {Array} [stackB=[]] Associates clones with source counterparts.
2270
+ * @returns {*} Returns the cloned value.
2271
+ */
2272
+ function baseClone(value, isDeep, callback, stackA, stackB) {
2273
+ if (callback) {
2274
+ var result = callback(value);
2275
+ if (typeof result != 'undefined') {
2276
+ return result;
2277
+ }
2278
+ }
2279
+ // inspect [[Class]]
2280
+ var isObj = isObject(value);
2281
+ if (isObj) {
2282
+ var className = toString.call(value);
2283
+ if (!cloneableClasses[className]) {
2284
+ return value;
2285
+ }
2286
+ var ctor = ctorByClass[className];
2287
+ switch (className) {
2288
+ case boolClass:
2289
+ case dateClass:
2290
+ return new ctor(+value);
2291
+
2292
+ case numberClass:
2293
+ case stringClass:
2294
+ return new ctor(value);
2295
+
2296
+ case regexpClass:
2297
+ result = ctor(value.source, reFlags.exec(value));
2298
+ result.lastIndex = value.lastIndex;
2299
+ return result;
2300
+ }
2301
+ } else {
2302
+ return value;
2303
+ }
2304
+ var isArr = isArray(value);
2305
+ if (isDeep) {
2306
+ // check for circular references and return corresponding clone
2307
+ var initedStack = !stackA;
2308
+ stackA || (stackA = getArray());
2309
+ stackB || (stackB = getArray());
2310
+
2311
+ var length = stackA.length;
2312
+ while (length--) {
2313
+ if (stackA[length] == value) {
2314
+ return stackB[length];
2315
+ }
2316
+ }
2317
+ result = isArr ? ctor(value.length) : {};
2318
+ }
2319
+ else {
2320
+ result = isArr ? slice(value) : assign({}, value);
2321
+ }
2322
+ // add array properties assigned by `RegExp#exec`
2323
+ if (isArr) {
2324
+ if (hasOwnProperty.call(value, 'index')) {
2325
+ result.index = value.index;
2326
+ }
2327
+ if (hasOwnProperty.call(value, 'input')) {
2328
+ result.input = value.input;
2329
+ }
2330
+ }
2331
+ // exit for shallow clone
2332
+ if (!isDeep) {
2333
+ return result;
2334
+ }
2335
+ // add the source value to the stack of traversed objects
2336
+ // and associate it with its clone
2337
+ stackA.push(value);
2338
+ stackB.push(result);
2339
+
2340
+ // recursively populate clone (susceptible to call stack limits)
2341
+ (isArr ? forEach : forOwn)(value, function(objValue, key) {
2342
+ result[key] = baseClone(objValue, isDeep, callback, stackA, stackB);
2343
+ });
2344
+
2345
+ if (initedStack) {
2346
+ releaseArray(stackA);
2347
+ releaseArray(stackB);
2348
+ }
2349
+ return result;
2350
+ }
2351
+
2352
+ module.exports = baseClone;
2353
+
2354
+
2355
+ /***/ },
2356
+ /* 27 */
2357
+ /***/ function(module, exports, __webpack_require__) {
2358
+
2359
+ /**
2360
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2361
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2362
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2363
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2364
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2365
+ * Available under MIT license <http://lodash.com/license>
2366
+ */
2367
+ var bind = __webpack_require__(43),
2368
+ identity = __webpack_require__(53),
2369
+ setBindData = __webpack_require__(44),
2370
+ support = __webpack_require__(45);
2371
+
2372
+ /** Used to detected named functions */
2373
+ var reFuncName = /^\s*function[ \n\r\t]+\w/;
2374
+
2375
+ /** Used to detect functions containing a `this` reference */
2376
+ var reThis = /\bthis\b/;
2377
+
2378
+ /** Native method shortcuts */
2379
+ var fnToString = Function.prototype.toString;
2380
+
2381
+ /**
2382
+ * The base implementation of `_.createCallback` without support for creating
2383
+ * "_.pluck" or "_.where" style callbacks.
2384
+ *
2385
+ * @private
2386
+ * @param {*} [func=identity] The value to convert to a callback.
2387
+ * @param {*} [thisArg] The `this` binding of the created callback.
2388
+ * @param {number} [argCount] The number of arguments the callback accepts.
2389
+ * @returns {Function} Returns a callback function.
2390
+ */
2391
+ function baseCreateCallback(func, thisArg, argCount) {
2392
+ if (typeof func != 'function') {
2393
+ return identity;
2394
+ }
2395
+ // exit early for no `thisArg` or already bound by `Function#bind`
2396
+ if (typeof thisArg == 'undefined' || !('prototype' in func)) {
2397
+ return func;
2398
+ }
2399
+ var bindData = func.__bindData__;
2400
+ if (typeof bindData == 'undefined') {
2401
+ if (support.funcNames) {
2402
+ bindData = !func.name;
2403
+ }
2404
+ bindData = bindData || !support.funcDecomp;
2405
+ if (!bindData) {
2406
+ var source = fnToString.call(func);
2407
+ if (!support.funcNames) {
2408
+ bindData = !reFuncName.test(source);
2409
+ }
2410
+ if (!bindData) {
2411
+ // checks if `func` references the `this` keyword and stores the result
2412
+ bindData = reThis.test(source);
2413
+ setBindData(func, bindData);
2414
+ }
2415
+ }
2416
+ }
2417
+ // exit early if there are no `this` references or `func` is bound
2418
+ if (bindData === false || (bindData !== true && bindData[1] & 1)) {
2419
+ return func;
2420
+ }
2421
+ switch (argCount) {
2422
+ case 1: return function(value) {
2423
+ return func.call(thisArg, value);
2424
+ };
2425
+ case 2: return function(a, b) {
2426
+ return func.call(thisArg, a, b);
2427
+ };
2428
+ case 3: return function(value, index, collection) {
2429
+ return func.call(thisArg, value, index, collection);
2430
+ };
2431
+ case 4: return function(accumulator, value, index, collection) {
2432
+ return func.call(thisArg, accumulator, value, index, collection);
2433
+ };
2434
+ }
2435
+ return bind(func, thisArg);
2436
+ }
2437
+
2438
+ module.exports = baseCreateCallback;
2439
+
2440
+
2441
+ /***/ },
2442
+ /* 28 */
2443
+ /***/ function(module, exports, __webpack_require__) {
2444
+
2445
+ /**
2446
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2447
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2448
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2449
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2450
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2451
+ * Available under MIT license <http://lodash.com/license>
2452
+ */
2453
+
2454
+ /** Used to determine if values are of the language type Object */
2455
+ var objectTypes = {
2456
+ 'boolean': false,
2457
+ 'function': true,
2458
+ 'object': true,
2459
+ 'number': false,
2460
+ 'string': false,
2461
+ 'undefined': false
2462
+ };
2463
+
2464
+ module.exports = objectTypes;
2465
+
2466
+
2467
+ /***/ },
2468
+ /* 29 */
2469
+ /***/ function(module, exports, __webpack_require__) {
2470
+
2471
+ /**
2472
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2473
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2474
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2475
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2476
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2477
+ * Available under MIT license <http://lodash.com/license>
2478
+ */
2479
+
2480
+ /** Used for native method references */
2481
+ var objectProto = Object.prototype;
2482
+
2483
+ /** Used to resolve the internal [[Class]] of values */
2484
+ var toString = objectProto.toString;
2485
+
2486
+ /** Used to detect if a method is native */
2487
+ var reNative = RegExp('^' +
2488
+ String(toString)
2489
+ .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
2490
+ .replace(/toString| for [^\]]+/g, '.*?') + '$'
2491
+ );
2492
+
2493
+ /**
2494
+ * Checks if `value` is a native function.
2495
+ *
2496
+ * @private
2497
+ * @param {*} value The value to check.
2498
+ * @returns {boolean} Returns `true` if the `value` is a native function, else `false`.
2499
+ */
2500
+ function isNative(value) {
2501
+ return typeof value == 'function' && reNative.test(value);
2502
+ }
2503
+
2504
+ module.exports = isNative;
2505
+
2506
+
2507
+ /***/ },
2508
+ /* 30 */
2509
+ /***/ function(module, exports, __webpack_require__) {
2510
+
2511
+ /**
2512
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2513
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2514
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2515
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2516
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2517
+ * Available under MIT license <http://lodash.com/license>
2518
+ */
2519
+ var objectTypes = __webpack_require__(28);
2520
+
2521
+ /** Used for native method references */
2522
+ var objectProto = Object.prototype;
2523
+
2524
+ /** Native method shortcuts */
2525
+ var hasOwnProperty = objectProto.hasOwnProperty;
2526
+
2527
+ /**
2528
+ * A fallback implementation of `Object.keys` which produces an array of the
2529
+ * given object's own enumerable property names.
2530
+ *
2531
+ * @private
2532
+ * @type Function
2533
+ * @param {Object} object The object to inspect.
2534
+ * @returns {Array} Returns an array of property names.
2535
+ */
2536
+ var shimKeys = function(object) {
2537
+ var index, iterable = object, result = [];
2538
+ if (!iterable) return result;
2539
+ if (!(objectTypes[typeof object])) return result;
2540
+ for (index in iterable) {
2541
+ if (hasOwnProperty.call(iterable, index)) {
2542
+ result.push(index);
2543
+ }
2544
+ }
2545
+ return result
2546
+ };
2547
+
2548
+ module.exports = shimKeys;
2549
+
2550
+
2551
+ /***/ },
2552
+ /* 31 */
2553
+ /***/ function(module, exports, __webpack_require__) {
2554
+
2555
+ /**
2556
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2557
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2558
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2559
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2560
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2561
+ * Available under MIT license <http://lodash.com/license>
2562
+ */
2563
+
2564
+ /**
2565
+ * The base implementation of `_.indexOf` without support for binary searches
2566
+ * or `fromIndex` constraints.
2567
+ *
2568
+ * @private
2569
+ * @param {Array} array The array to search.
2570
+ * @param {*} value The value to search for.
2571
+ * @param {number} [fromIndex=0] The index to search from.
2572
+ * @returns {number} Returns the index of the matched value or `-1`.
2573
+ */
2574
+ function baseIndexOf(array, value, fromIndex) {
2575
+ var index = (fromIndex || 0) - 1,
2576
+ length = array ? array.length : 0;
2577
+
2578
+ while (++index < length) {
2579
+ if (array[index] === value) {
2580
+ return index;
2581
+ }
2582
+ }
2583
+ return -1;
2584
+ }
2585
+
2586
+ module.exports = baseIndexOf;
2587
+
2588
+
2589
+ /***/ },
2590
+ /* 32 */
2591
+ /***/ function(module, exports, __webpack_require__) {
2592
+
2593
+ /**
2594
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2595
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2596
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2597
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2598
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2599
+ * Available under MIT license <http://lodash.com/license>
2600
+ */
2601
+ var baseIndexOf = __webpack_require__(31),
2602
+ keyPrefix = __webpack_require__(46);
2603
+
2604
+ /**
2605
+ * An implementation of `_.contains` for cache objects that mimics the return
2606
+ * signature of `_.indexOf` by returning `0` if the value is found, else `-1`.
2607
+ *
2608
+ * @private
2609
+ * @param {Object} cache The cache object to inspect.
2610
+ * @param {*} value The value to search for.
2611
+ * @returns {number} Returns `0` if `value` is found, else `-1`.
2612
+ */
2613
+ function cacheIndexOf(cache, value) {
2614
+ var type = typeof value;
2615
+ cache = cache.cache;
2616
+
2617
+ if (type == 'boolean' || value == null) {
2618
+ return cache[value] ? 0 : -1;
2619
+ }
2620
+ if (type != 'number' && type != 'string') {
2621
+ type = 'object';
2622
+ }
2623
+ var key = type == 'number' ? value : keyPrefix + value;
2624
+ cache = (cache = cache[type]) && cache[key];
2625
+
2626
+ return type == 'object'
2627
+ ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1)
2628
+ : (cache ? 0 : -1);
2629
+ }
2630
+
2631
+ module.exports = cacheIndexOf;
2632
+
2633
+
2634
+ /***/ },
2635
+ /* 33 */
2636
+ /***/ function(module, exports, __webpack_require__) {
2637
+
2638
+ /**
2639
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2640
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2641
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2642
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2643
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2644
+ * Available under MIT license <http://lodash.com/license>
2645
+ */
2646
+ var cachePush = __webpack_require__(47),
2647
+ getObject = __webpack_require__(48),
2648
+ releaseObject = __webpack_require__(37);
2649
+
2650
+ /**
2651
+ * Creates a cache object to optimize linear searches of large arrays.
2652
+ *
2653
+ * @private
2654
+ * @param {Array} [array=[]] The array to search.
2655
+ * @returns {null|Object} Returns the cache object or `null` if caching should not be used.
2656
+ */
2657
+ function createCache(array) {
2658
+ var index = -1,
2659
+ length = array.length,
2660
+ first = array[0],
2661
+ mid = array[(length / 2) | 0],
2662
+ last = array[length - 1];
2663
+
2664
+ if (first && typeof first == 'object' &&
2665
+ mid && typeof mid == 'object' && last && typeof last == 'object') {
2666
+ return false;
2667
+ }
2668
+ var cache = getObject();
2669
+ cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false;
2670
+
2671
+ var result = getObject();
2672
+ result.array = array;
2673
+ result.cache = cache;
2674
+ result.push = cachePush;
2675
+
2676
+ while (++index < length) {
2677
+ result.push(array[index]);
2678
+ }
2679
+ return result;
2680
+ }
2681
+
2682
+ module.exports = createCache;
2683
+
2684
+
2685
+ /***/ },
2686
+ /* 34 */
2687
+ /***/ function(module, exports, __webpack_require__) {
2688
+
2689
+ /**
2690
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2691
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2692
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2693
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2694
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2695
+ * Available under MIT license <http://lodash.com/license>
2696
+ */
2697
+ var arrayPool = __webpack_require__(49);
2698
+
2699
+ /**
2700
+ * Gets an array from the array pool or creates a new one if the pool is empty.
2701
+ *
2702
+ * @private
2703
+ * @returns {Array} The array from the pool.
2704
+ */
2705
+ function getArray() {
2706
+ return arrayPool.pop() || [];
2707
+ }
2708
+
2709
+ module.exports = getArray;
2710
+
2711
+
2712
+ /***/ },
2713
+ /* 35 */
2714
+ /***/ function(module, exports, __webpack_require__) {
2715
+
2716
+ /**
2717
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2718
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2719
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2720
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2721
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2722
+ * Available under MIT license <http://lodash.com/license>
2723
+ */
2724
+
2725
+ /** Used as the size when optimizations are enabled for large arrays */
2726
+ var largeArraySize = 75;
2727
+
2728
+ module.exports = largeArraySize;
2729
+
2730
+
2731
+ /***/ },
2732
+ /* 36 */
2733
+ /***/ function(module, exports, __webpack_require__) {
2734
+
2735
+ /**
2736
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2737
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2738
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2739
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2740
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2741
+ * Available under MIT license <http://lodash.com/license>
2742
+ */
2743
+ var arrayPool = __webpack_require__(49),
2744
+ maxPoolSize = __webpack_require__(50);
2745
+
2746
+ /**
2747
+ * Releases the given array back to the array pool.
2748
+ *
2749
+ * @private
2750
+ * @param {Array} [array] The array to release.
2751
+ */
2752
+ function releaseArray(array) {
2753
+ array.length = 0;
2754
+ if (arrayPool.length < maxPoolSize) {
2755
+ arrayPool.push(array);
2756
+ }
2757
+ }
2758
+
2759
+ module.exports = releaseArray;
2760
+
2761
+
2762
+ /***/ },
2763
+ /* 37 */
2764
+ /***/ function(module, exports, __webpack_require__) {
2765
+
2766
+ /**
2767
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2768
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2769
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2770
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2771
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2772
+ * Available under MIT license <http://lodash.com/license>
2773
+ */
2774
+ var maxPoolSize = __webpack_require__(50),
2775
+ objectPool = __webpack_require__(51);
2776
+
2777
+ /**
2778
+ * Releases the given object back to the object pool.
2779
+ *
2780
+ * @private
2781
+ * @param {Object} [object] The object to release.
2782
+ */
2783
+ function releaseObject(object) {
2784
+ var cache = object.cache;
2785
+ if (cache) {
2786
+ releaseObject(cache);
2787
+ }
2788
+ object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null;
2789
+ if (objectPool.length < maxPoolSize) {
2790
+ objectPool.push(object);
2791
+ }
2792
+ }
2793
+
2794
+ module.exports = releaseObject;
2795
+
2796
+
2797
+ /***/ },
2798
+ /* 38 */
2799
+ /***/ function(module, exports, __webpack_require__) {
2800
+
2801
+ /**
2802
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2803
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2804
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2805
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2806
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2807
+ * Available under MIT license <http://lodash.com/license>
2808
+ */
2809
+ var baseIndexOf = __webpack_require__(31),
2810
+ cacheIndexOf = __webpack_require__(32),
2811
+ createCache = __webpack_require__(33),
2812
+ getArray = __webpack_require__(34),
2813
+ largeArraySize = __webpack_require__(35),
2814
+ releaseArray = __webpack_require__(36),
2815
+ releaseObject = __webpack_require__(37);
2816
+
2817
+ /**
2818
+ * The base implementation of `_.uniq` without support for callback shorthands
2819
+ * or `thisArg` binding.
2820
+ *
2821
+ * @private
2822
+ * @param {Array} array The array to process.
2823
+ * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
2824
+ * @param {Function} [callback] The function called per iteration.
2825
+ * @returns {Array} Returns a duplicate-value-free array.
2826
+ */
2827
+ function baseUniq(array, isSorted, callback) {
2828
+ var index = -1,
2829
+ indexOf = baseIndexOf,
2830
+ length = array ? array.length : 0,
2831
+ result = [];
2832
+
2833
+ var isLarge = !isSorted && length >= largeArraySize,
2834
+ seen = (callback || isLarge) ? getArray() : result;
2835
+
2836
+ if (isLarge) {
2837
+ var cache = createCache(seen);
2838
+ indexOf = cacheIndexOf;
2839
+ seen = cache;
2840
+ }
2841
+ while (++index < length) {
2842
+ var value = array[index],
2843
+ computed = callback ? callback(value, index, array) : value;
2844
+
2845
+ if (isSorted
2846
+ ? !index || seen[seen.length - 1] !== computed
2847
+ : indexOf(seen, computed) < 0
2848
+ ) {
2849
+ if (callback || isLarge) {
2850
+ seen.push(computed);
2851
+ }
2852
+ result.push(value);
2853
+ }
2854
+ }
2855
+ if (isLarge) {
2856
+ releaseArray(seen.array);
2857
+ releaseObject(seen);
2858
+ } else if (callback) {
2859
+ releaseArray(seen);
2860
+ }
2861
+ return result;
2862
+ }
2863
+
2864
+ module.exports = baseUniq;
2865
+
2866
+
2867
+ /***/ },
2868
+ /* 39 */
2869
+ /***/ function(module, exports, __webpack_require__) {
2870
+
2871
+ /**
2872
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2873
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2874
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2875
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2876
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2877
+ * Available under MIT license <http://lodash.com/license>
2878
+ */
2879
+ var baseCreateCallback = __webpack_require__(27),
2880
+ baseIsEqual = __webpack_require__(52),
2881
+ isObject = __webpack_require__(22),
2882
+ keys = __webpack_require__(13),
2883
+ property = __webpack_require__(54);
2884
+
2885
+ /**
2886
+ * Produces a callback bound to an optional `thisArg`. If `func` is a property
2887
+ * name the created callback will return the property value for a given element.
2888
+ * If `func` is an object the created callback will return `true` for elements
2889
+ * that contain the equivalent object properties, otherwise it will return `false`.
2890
+ *
2891
+ * @static
2892
+ * @memberOf _
2893
+ * @category Utilities
2894
+ * @param {*} [func=identity] The value to convert to a callback.
2895
+ * @param {*} [thisArg] The `this` binding of the created callback.
2896
+ * @param {number} [argCount] The number of arguments the callback accepts.
2897
+ * @returns {Function} Returns a callback function.
2898
+ * @example
2899
+ *
2900
+ * var characters = [
2901
+ * { 'name': 'barney', 'age': 36 },
2902
+ * { 'name': 'fred', 'age': 40 }
2903
+ * ];
2904
+ *
2905
+ * // wrap to create custom callback shorthands
2906
+ * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {
2907
+ * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);
2908
+ * return !match ? func(callback, thisArg) : function(object) {
2909
+ * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
2910
+ * };
2911
+ * });
2912
+ *
2913
+ * _.filter(characters, 'age__gt38');
2914
+ * // => [{ 'name': 'fred', 'age': 40 }]
2915
+ */
2916
+ function createCallback(func, thisArg, argCount) {
2917
+ var type = typeof func;
2918
+ if (func == null || type == 'function') {
2919
+ return baseCreateCallback(func, thisArg, argCount);
2920
+ }
2921
+ // handle "_.pluck" style callback shorthands
2922
+ if (type != 'object') {
2923
+ return property(func);
2924
+ }
2925
+ var props = keys(func),
2926
+ key = props[0],
2927
+ a = func[key];
2928
+
2929
+ // handle "_.where" style callback shorthands
2930
+ if (props.length == 1 && a === a && !isObject(a)) {
2931
+ // fast path the common case of providing an object with a single
2932
+ // property containing a primitive value
2933
+ return function(object) {
2934
+ var b = object[key];
2935
+ return a === b && (a !== 0 || (1 / a == 1 / b));
2936
+ };
2937
+ }
2938
+ return function(object) {
2939
+ var length = props.length,
2940
+ result = false;
2941
+
2942
+ while (length--) {
2943
+ if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {
2944
+ break;
2945
+ }
2946
+ }
2947
+ return result;
2948
+ };
2949
+ }
2950
+
2951
+ module.exports = createCallback;
2952
+
2953
+
2954
+ /***/ },
2955
+ /* 40 */
2956
+ /***/ function(module, exports, __webpack_require__) {
2957
+
2958
+ if (typeof Object.create === 'function') {
2959
+ // implementation from standard node.js 'util' module
2960
+ module.exports = function inherits(ctor, superCtor) {
2961
+ ctor.super_ = superCtor
2962
+ ctor.prototype = Object.create(superCtor.prototype, {
2963
+ constructor: {
2964
+ value: ctor,
2965
+ enumerable: false,
2966
+ writable: true,
2967
+ configurable: true
2968
+ }
2969
+ });
2970
+ };
2971
+ } else {
2972
+ // old school shim for old browsers
2973
+ module.exports = function inherits(ctor, superCtor) {
2974
+ ctor.super_ = superCtor
2975
+ var TempCtor = function () {}
2976
+ TempCtor.prototype = superCtor.prototype
2977
+ ctor.prototype = new TempCtor()
2978
+ ctor.prototype.constructor = ctor
2979
+ }
2980
+ }
2981
+
2982
+
2983
+ /***/ },
2984
+ /* 41 */
2985
+ /***/ function(module, exports, __webpack_require__) {
2986
+
2987
+ /**
2988
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2989
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
2990
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2991
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2992
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2993
+ * Available under MIT license <http://lodash.com/license>
2994
+ */
2995
+ var baseCreateCallback = __webpack_require__(27),
2996
+ keys = __webpack_require__(13),
2997
+ objectTypes = __webpack_require__(28);
2998
+
2999
+ /**
3000
+ * Assigns own enumerable properties of source object(s) to the destination
3001
+ * object. Subsequent sources will overwrite property assignments of previous
3002
+ * sources. If a callback is provided it will be executed to produce the
3003
+ * assigned values. The callback is bound to `thisArg` and invoked with two
3004
+ * arguments; (objectValue, sourceValue).
3005
+ *
3006
+ * @static
3007
+ * @memberOf _
3008
+ * @type Function
3009
+ * @alias extend
3010
+ * @category Objects
3011
+ * @param {Object} object The destination object.
3012
+ * @param {...Object} [source] The source objects.
3013
+ * @param {Function} [callback] The function to customize assigning values.
3014
+ * @param {*} [thisArg] The `this` binding of `callback`.
3015
+ * @returns {Object} Returns the destination object.
3016
+ * @example
3017
+ *
3018
+ * _.assign({ 'name': 'fred' }, { 'employer': 'slate' });
3019
+ * // => { 'name': 'fred', 'employer': 'slate' }
3020
+ *
3021
+ * var defaults = _.partialRight(_.assign, function(a, b) {
3022
+ * return typeof a == 'undefined' ? b : a;
3023
+ * });
3024
+ *
3025
+ * var object = { 'name': 'barney' };
3026
+ * defaults(object, { 'name': 'fred', 'employer': 'slate' });
3027
+ * // => { 'name': 'barney', 'employer': 'slate' }
3028
+ */
3029
+ var assign = function(object, source, guard) {
3030
+ var index, iterable = object, result = iterable;
3031
+ if (!iterable) return result;
3032
+ var args = arguments,
3033
+ argsIndex = 0,
3034
+ argsLength = typeof guard == 'number' ? 2 : args.length;
3035
+ if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {
3036
+ var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);
3037
+ } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {
3038
+ callback = args[--argsLength];
3039
+ }
3040
+ while (++argsIndex < argsLength) {
3041
+ iterable = args[argsIndex];
3042
+ if (iterable && objectTypes[typeof iterable]) {
3043
+ var ownIndex = -1,
3044
+ ownProps = objectTypes[typeof iterable] && keys(iterable),
3045
+ length = ownProps ? ownProps.length : 0;
3046
+
3047
+ while (++ownIndex < length) {
3048
+ index = ownProps[ownIndex];
3049
+ result[index] = callback ? callback(result[index], iterable[index]) : iterable[index];
3050
+ }
3051
+ }
3052
+ }
3053
+ return result
3054
+ };
3055
+
3056
+ module.exports = assign;
3057
+
3058
+
3059
+ /***/ },
3060
+ /* 42 */
3061
+ /***/ function(module, exports, __webpack_require__) {
3062
+
3063
+ /**
3064
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3065
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3066
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3067
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3068
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3069
+ * Available under MIT license <http://lodash.com/license>
3070
+ */
3071
+
3072
+ /**
3073
+ * Slices the `collection` from the `start` index up to, but not including,
3074
+ * the `end` index.
3075
+ *
3076
+ * Note: This function is used instead of `Array#slice` to support node lists
3077
+ * in IE < 9 and to ensure dense arrays are returned.
3078
+ *
3079
+ * @private
3080
+ * @param {Array|Object|string} collection The collection to slice.
3081
+ * @param {number} start The start index.
3082
+ * @param {number} end The end index.
3083
+ * @returns {Array} Returns the new array.
3084
+ */
3085
+ function slice(array, start, end) {
3086
+ start || (start = 0);
3087
+ if (typeof end == 'undefined') {
3088
+ end = array ? array.length : 0;
3089
+ }
3090
+ var index = -1,
3091
+ length = end - start || 0,
3092
+ result = Array(length < 0 ? 0 : length);
3093
+
3094
+ while (++index < length) {
3095
+ result[index] = array[start + index];
3096
+ }
3097
+ return result;
3098
+ }
3099
+
3100
+ module.exports = slice;
3101
+
3102
+
3103
+ /***/ },
3104
+ /* 43 */
3105
+ /***/ function(module, exports, __webpack_require__) {
3106
+
3107
+ /**
3108
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3109
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3110
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3111
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3112
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3113
+ * Available under MIT license <http://lodash.com/license>
3114
+ */
3115
+ var createWrapper = __webpack_require__(55),
3116
+ slice = __webpack_require__(42);
3117
+
3118
+ /**
3119
+ * Creates a function that, when called, invokes `func` with the `this`
3120
+ * binding of `thisArg` and prepends any additional `bind` arguments to those
3121
+ * provided to the bound function.
3122
+ *
3123
+ * @static
3124
+ * @memberOf _
3125
+ * @category Functions
3126
+ * @param {Function} func The function to bind.
3127
+ * @param {*} [thisArg] The `this` binding of `func`.
3128
+ * @param {...*} [arg] Arguments to be partially applied.
3129
+ * @returns {Function} Returns the new bound function.
3130
+ * @example
3131
+ *
3132
+ * var func = function(greeting) {
3133
+ * return greeting + ' ' + this.name;
3134
+ * };
3135
+ *
3136
+ * func = _.bind(func, { 'name': 'fred' }, 'hi');
3137
+ * func();
3138
+ * // => 'hi fred'
3139
+ */
3140
+ function bind(func, thisArg) {
3141
+ return arguments.length > 2
3142
+ ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)
3143
+ : createWrapper(func, 1, null, null, thisArg);
3144
+ }
3145
+
3146
+ module.exports = bind;
3147
+
3148
+
3149
+ /***/ },
3150
+ /* 44 */
3151
+ /***/ function(module, exports, __webpack_require__) {
3152
+
3153
+ /**
3154
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3155
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3156
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3157
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3158
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3159
+ * Available under MIT license <http://lodash.com/license>
3160
+ */
3161
+ var isNative = __webpack_require__(29),
3162
+ noop = __webpack_require__(56);
3163
+
3164
+ /** Used as the property descriptor for `__bindData__` */
3165
+ var descriptor = {
3166
+ 'configurable': false,
3167
+ 'enumerable': false,
3168
+ 'value': null,
3169
+ 'writable': false
3170
+ };
3171
+
3172
+ /** Used to set meta data on functions */
3173
+ var defineProperty = (function() {
3174
+ // IE 8 only accepts DOM elements
3175
+ try {
3176
+ var o = {},
3177
+ func = isNative(func = Object.defineProperty) && func,
3178
+ result = func(o, o, o) && func;
3179
+ } catch(e) { }
3180
+ return result;
3181
+ }());
3182
+
3183
+ /**
3184
+ * Sets `this` binding data on a given function.
3185
+ *
3186
+ * @private
3187
+ * @param {Function} func The function to set data on.
3188
+ * @param {Array} value The data array to set.
3189
+ */
3190
+ var setBindData = !defineProperty ? noop : function(func, value) {
3191
+ descriptor.value = value;
3192
+ defineProperty(func, '__bindData__', descriptor);
3193
+ };
3194
+
3195
+ module.exports = setBindData;
3196
+
3197
+
3198
+ /***/ },
3199
+ /* 45 */
3200
+ /***/ function(module, exports, __webpack_require__) {
3201
+
3202
+ /* WEBPACK VAR INJECTION */(function(global) {/**
3203
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3204
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3205
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3206
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3207
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3208
+ * Available under MIT license <http://lodash.com/license>
3209
+ */
3210
+ var isNative = __webpack_require__(29);
3211
+
3212
+ /** Used to detect functions containing a `this` reference */
3213
+ var reThis = /\bthis\b/;
3214
+
3215
+ /**
3216
+ * An object used to flag environments features.
3217
+ *
3218
+ * @static
3219
+ * @memberOf _
3220
+ * @type Object
3221
+ */
3222
+ var support = {};
3223
+
3224
+ /**
3225
+ * Detect if functions can be decompiled by `Function#toString`
3226
+ * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).
3227
+ *
3228
+ * @memberOf _.support
3229
+ * @type boolean
3230
+ */
3231
+ support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; });
3232
+
3233
+ /**
3234
+ * Detect if `Function#name` is supported (all but IE).
3235
+ *
3236
+ * @memberOf _.support
3237
+ * @type boolean
3238
+ */
3239
+ support.funcNames = typeof Function.name == 'string';
3240
+
3241
+ module.exports = support;
3242
+
3243
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3244
+
3245
+ /***/ },
3246
+ /* 46 */
3247
+ /***/ function(module, exports, __webpack_require__) {
3248
+
3249
+ /**
3250
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3251
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3252
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3253
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3254
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3255
+ * Available under MIT license <http://lodash.com/license>
3256
+ */
3257
+
3258
+ /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */
3259
+ var keyPrefix = +new Date + '';
3260
+
3261
+ module.exports = keyPrefix;
3262
+
3263
+
3264
+ /***/ },
3265
+ /* 47 */
3266
+ /***/ function(module, exports, __webpack_require__) {
3267
+
3268
+ /**
3269
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3270
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3271
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3272
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3273
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3274
+ * Available under MIT license <http://lodash.com/license>
3275
+ */
3276
+ var keyPrefix = __webpack_require__(46);
3277
+
3278
+ /**
3279
+ * Adds a given value to the corresponding cache object.
3280
+ *
3281
+ * @private
3282
+ * @param {*} value The value to add to the cache.
3283
+ */
3284
+ function cachePush(value) {
3285
+ var cache = this.cache,
3286
+ type = typeof value;
3287
+
3288
+ if (type == 'boolean' || value == null) {
3289
+ cache[value] = true;
3290
+ } else {
3291
+ if (type != 'number' && type != 'string') {
3292
+ type = 'object';
3293
+ }
3294
+ var key = type == 'number' ? value : keyPrefix + value,
3295
+ typeCache = cache[type] || (cache[type] = {});
3296
+
3297
+ if (type == 'object') {
3298
+ (typeCache[key] || (typeCache[key] = [])).push(value);
3299
+ } else {
3300
+ typeCache[key] = true;
3301
+ }
3302
+ }
3303
+ }
3304
+
3305
+ module.exports = cachePush;
3306
+
3307
+
3308
+ /***/ },
3309
+ /* 48 */
3310
+ /***/ function(module, exports, __webpack_require__) {
3311
+
3312
+ /**
3313
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3314
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3315
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3316
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3317
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3318
+ * Available under MIT license <http://lodash.com/license>
3319
+ */
3320
+ var objectPool = __webpack_require__(51);
3321
+
3322
+ /**
3323
+ * Gets an object from the object pool or creates a new one if the pool is empty.
3324
+ *
3325
+ * @private
3326
+ * @returns {Object} The object from the pool.
3327
+ */
3328
+ function getObject() {
3329
+ return objectPool.pop() || {
3330
+ 'array': null,
3331
+ 'cache': null,
3332
+ 'criteria': null,
3333
+ 'false': false,
3334
+ 'index': 0,
3335
+ 'null': false,
3336
+ 'number': null,
3337
+ 'object': null,
3338
+ 'push': null,
3339
+ 'string': null,
3340
+ 'true': false,
3341
+ 'undefined': false,
3342
+ 'value': null
3343
+ };
3344
+ }
3345
+
3346
+ module.exports = getObject;
3347
+
3348
+
3349
+ /***/ },
3350
+ /* 49 */
3351
+ /***/ function(module, exports, __webpack_require__) {
3352
+
3353
+ /**
3354
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3355
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3356
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3357
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3358
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3359
+ * Available under MIT license <http://lodash.com/license>
3360
+ */
3361
+
3362
+ /** Used to pool arrays and objects used internally */
3363
+ var arrayPool = [];
3364
+
3365
+ module.exports = arrayPool;
3366
+
3367
+
3368
+ /***/ },
3369
+ /* 50 */
3370
+ /***/ function(module, exports, __webpack_require__) {
3371
+
3372
+ /**
3373
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3374
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3375
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3376
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3377
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3378
+ * Available under MIT license <http://lodash.com/license>
3379
+ */
3380
+
3381
+ /** Used as the max size of the `arrayPool` and `objectPool` */
3382
+ var maxPoolSize = 40;
3383
+
3384
+ module.exports = maxPoolSize;
3385
+
3386
+
3387
+ /***/ },
3388
+ /* 51 */
3389
+ /***/ function(module, exports, __webpack_require__) {
3390
+
3391
+ /**
3392
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3393
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3394
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3395
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3396
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3397
+ * Available under MIT license <http://lodash.com/license>
3398
+ */
3399
+
3400
+ /** Used to pool arrays and objects used internally */
3401
+ var objectPool = [];
3402
+
3403
+ module.exports = objectPool;
3404
+
3405
+
3406
+ /***/ },
3407
+ /* 52 */
3408
+ /***/ function(module, exports, __webpack_require__) {
3409
+
3410
+ /**
3411
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3412
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3413
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3414
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3415
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3416
+ * Available under MIT license <http://lodash.com/license>
3417
+ */
3418
+ var forIn = __webpack_require__(57),
3419
+ getArray = __webpack_require__(34),
3420
+ isFunction = __webpack_require__(58),
3421
+ objectTypes = __webpack_require__(28),
3422
+ releaseArray = __webpack_require__(36);
3423
+
3424
+ /** `Object#toString` result shortcuts */
3425
+ var argsClass = '[object Arguments]',
3426
+ arrayClass = '[object Array]',
3427
+ boolClass = '[object Boolean]',
3428
+ dateClass = '[object Date]',
3429
+ numberClass = '[object Number]',
3430
+ objectClass = '[object Object]',
3431
+ regexpClass = '[object RegExp]',
3432
+ stringClass = '[object String]';
3433
+
3434
+ /** Used for native method references */
3435
+ var objectProto = Object.prototype;
3436
+
3437
+ /** Used to resolve the internal [[Class]] of values */
3438
+ var toString = objectProto.toString;
3439
+
3440
+ /** Native method shortcuts */
3441
+ var hasOwnProperty = objectProto.hasOwnProperty;
3442
+
3443
+ /**
3444
+ * The base implementation of `_.isEqual`, without support for `thisArg` binding,
3445
+ * that allows partial "_.where" style comparisons.
3446
+ *
3447
+ * @private
3448
+ * @param {*} a The value to compare.
3449
+ * @param {*} b The other value to compare.
3450
+ * @param {Function} [callback] The function to customize comparing values.
3451
+ * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.
3452
+ * @param {Array} [stackA=[]] Tracks traversed `a` objects.
3453
+ * @param {Array} [stackB=[]] Tracks traversed `b` objects.
3454
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3455
+ */
3456
+ function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {
3457
+ // used to indicate that when comparing objects, `a` has at least the properties of `b`
3458
+ if (callback) {
3459
+ var result = callback(a, b);
3460
+ if (typeof result != 'undefined') {
3461
+ return !!result;
3462
+ }
3463
+ }
3464
+ // exit early for identical values
3465
+ if (a === b) {
3466
+ // treat `+0` vs. `-0` as not equal
3467
+ return a !== 0 || (1 / a == 1 / b);
3468
+ }
3469
+ var type = typeof a,
3470
+ otherType = typeof b;
3471
+
3472
+ // exit early for unlike primitive values
3473
+ if (a === a &&
3474
+ !(a && objectTypes[type]) &&
3475
+ !(b && objectTypes[otherType])) {
3476
+ return false;
3477
+ }
3478
+ // exit early for `null` and `undefined` avoiding ES3's Function#call behavior
3479
+ // http://es5.github.io/#x15.3.4.4
3480
+ if (a == null || b == null) {
3481
+ return a === b;
3482
+ }
3483
+ // compare [[Class]] names
3484
+ var className = toString.call(a),
3485
+ otherClass = toString.call(b);
3486
+
3487
+ if (className == argsClass) {
3488
+ className = objectClass;
3489
+ }
3490
+ if (otherClass == argsClass) {
3491
+ otherClass = objectClass;
3492
+ }
3493
+ if (className != otherClass) {
3494
+ return false;
3495
+ }
3496
+ switch (className) {
3497
+ case boolClass:
3498
+ case dateClass:
3499
+ // coerce dates and booleans to numbers, dates to milliseconds and booleans
3500
+ // to `1` or `0` treating invalid dates coerced to `NaN` as not equal
3501
+ return +a == +b;
3502
+
3503
+ case numberClass:
3504
+ // treat `NaN` vs. `NaN` as equal
3505
+ return (a != +a)
3506
+ ? b != +b
3507
+ // but treat `+0` vs. `-0` as not equal
3508
+ : (a == 0 ? (1 / a == 1 / b) : a == +b);
3509
+
3510
+ case regexpClass:
3511
+ case stringClass:
3512
+ // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)
3513
+ // treat string primitives and their corresponding object instances as equal
3514
+ return a == String(b);
3515
+ }
3516
+ var isArr = className == arrayClass;
3517
+ if (!isArr) {
3518
+ // unwrap any `lodash` wrapped values
3519
+ var aWrapped = hasOwnProperty.call(a, '__wrapped__'),
3520
+ bWrapped = hasOwnProperty.call(b, '__wrapped__');
3521
+
3522
+ if (aWrapped || bWrapped) {
3523
+ return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);
3524
+ }
3525
+ // exit for functions and DOM nodes
3526
+ if (className != objectClass) {
3527
+ return false;
3528
+ }
3529
+ // in older versions of Opera, `arguments` objects have `Array` constructors
3530
+ var ctorA = a.constructor,
3531
+ ctorB = b.constructor;
3532
+
3533
+ // non `Object` object instances with different constructors are not equal
3534
+ if (ctorA != ctorB &&
3535
+ !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&
3536
+ ('constructor' in a && 'constructor' in b)
3537
+ ) {
3538
+ return false;
3539
+ }
3540
+ }
3541
+ // assume cyclic structures are equal
3542
+ // the algorithm for detecting cyclic structures is adapted from ES 5.1
3543
+ // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)
3544
+ var initedStack = !stackA;
3545
+ stackA || (stackA = getArray());
3546
+ stackB || (stackB = getArray());
3547
+
3548
+ var length = stackA.length;
3549
+ while (length--) {
3550
+ if (stackA[length] == a) {
3551
+ return stackB[length] == b;
3552
+ }
3553
+ }
3554
+ var size = 0;
3555
+ result = true;
3556
+
3557
+ // add `a` and `b` to the stack of traversed objects
3558
+ stackA.push(a);
3559
+ stackB.push(b);
3560
+
3561
+ // recursively compare objects and arrays (susceptible to call stack limits)
3562
+ if (isArr) {
3563
+ // compare lengths to determine if a deep comparison is necessary
3564
+ length = a.length;
3565
+ size = b.length;
3566
+ result = size == length;
3567
+
3568
+ if (result || isWhere) {
3569
+ // deep compare the contents, ignoring non-numeric properties
3570
+ while (size--) {
3571
+ var index = length,
3572
+ value = b[size];
3573
+
3574
+ if (isWhere) {
3575
+ while (index--) {
3576
+ if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {
3577
+ break;
3578
+ }
3579
+ }
3580
+ } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {
3581
+ break;
3582
+ }
3583
+ }
3584
+ }
3585
+ }
3586
+ else {
3587
+ // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`
3588
+ // which, in this case, is more costly
3589
+ forIn(b, function(value, key, b) {
3590
+ if (hasOwnProperty.call(b, key)) {
3591
+ // count the number of properties.
3592
+ size++;
3593
+ // deep compare each property value.
3594
+ return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));
3595
+ }
3596
+ });
3597
+
3598
+ if (result && !isWhere) {
3599
+ // ensure both objects have the same number of properties
3600
+ forIn(a, function(value, key, a) {
3601
+ if (hasOwnProperty.call(a, key)) {
3602
+ // `size` will be `-1` if `a` has more properties than `b`
3603
+ return (result = --size > -1);
3604
+ }
3605
+ });
3606
+ }
3607
+ }
3608
+ stackA.pop();
3609
+ stackB.pop();
3610
+
3611
+ if (initedStack) {
3612
+ releaseArray(stackA);
3613
+ releaseArray(stackB);
3614
+ }
3615
+ return result;
3616
+ }
3617
+
3618
+ module.exports = baseIsEqual;
3619
+
3620
+
3621
+ /***/ },
3622
+ /* 53 */
3623
+ /***/ function(module, exports, __webpack_require__) {
3624
+
3625
+ /**
3626
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3627
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3628
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3629
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3630
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3631
+ * Available under MIT license <http://lodash.com/license>
3632
+ */
3633
+
3634
+ /**
3635
+ * This method returns the first argument provided to it.
3636
+ *
3637
+ * @static
3638
+ * @memberOf _
3639
+ * @category Utilities
3640
+ * @param {*} value Any value.
3641
+ * @returns {*} Returns `value`.
3642
+ * @example
3643
+ *
3644
+ * var object = { 'name': 'fred' };
3645
+ * _.identity(object) === object;
3646
+ * // => true
3647
+ */
3648
+ function identity(value) {
3649
+ return value;
3650
+ }
3651
+
3652
+ module.exports = identity;
3653
+
3654
+
3655
+ /***/ },
3656
+ /* 54 */
3657
+ /***/ function(module, exports, __webpack_require__) {
3658
+
3659
+ /**
3660
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3661
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3662
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3663
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3664
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3665
+ * Available under MIT license <http://lodash.com/license>
3666
+ */
3667
+
3668
+ /**
3669
+ * Creates a "_.pluck" style function, which returns the `key` value of a
3670
+ * given object.
3671
+ *
3672
+ * @static
3673
+ * @memberOf _
3674
+ * @category Utilities
3675
+ * @param {string} key The name of the property to retrieve.
3676
+ * @returns {Function} Returns the new function.
3677
+ * @example
3678
+ *
3679
+ * var characters = [
3680
+ * { 'name': 'fred', 'age': 40 },
3681
+ * { 'name': 'barney', 'age': 36 }
3682
+ * ];
3683
+ *
3684
+ * var getName = _.property('name');
3685
+ *
3686
+ * _.map(characters, getName);
3687
+ * // => ['barney', 'fred']
3688
+ *
3689
+ * _.sortBy(characters, getName);
3690
+ * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }]
3691
+ */
3692
+ function property(key) {
3693
+ return function(object) {
3694
+ return object[key];
3695
+ };
3696
+ }
3697
+
3698
+ module.exports = property;
3699
+
3700
+
3701
+ /***/ },
3702
+ /* 55 */
3703
+ /***/ function(module, exports, __webpack_require__) {
3704
+
3705
+ /**
3706
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3707
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3708
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3709
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3710
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3711
+ * Available under MIT license <http://lodash.com/license>
3712
+ */
3713
+ var baseBind = __webpack_require__(59),
3714
+ baseCreateWrapper = __webpack_require__(60),
3715
+ isFunction = __webpack_require__(58),
3716
+ slice = __webpack_require__(42);
3717
+
3718
+ /**
3719
+ * Used for `Array` method references.
3720
+ *
3721
+ * Normally `Array.prototype` would suffice, however, using an array literal
3722
+ * avoids issues in Narwhal.
3723
+ */
3724
+ var arrayRef = [];
3725
+
3726
+ /** Native method shortcuts */
3727
+ var push = arrayRef.push,
3728
+ unshift = arrayRef.unshift;
3729
+
3730
+ /**
3731
+ * Creates a function that, when called, either curries or invokes `func`
3732
+ * with an optional `this` binding and partially applied arguments.
3733
+ *
3734
+ * @private
3735
+ * @param {Function|string} func The function or method name to reference.
3736
+ * @param {number} bitmask The bitmask of method flags to compose.
3737
+ * The bitmask may be composed of the following flags:
3738
+ * 1 - `_.bind`
3739
+ * 2 - `_.bindKey`
3740
+ * 4 - `_.curry`
3741
+ * 8 - `_.curry` (bound)
3742
+ * 16 - `_.partial`
3743
+ * 32 - `_.partialRight`
3744
+ * @param {Array} [partialArgs] An array of arguments to prepend to those
3745
+ * provided to the new function.
3746
+ * @param {Array} [partialRightArgs] An array of arguments to append to those
3747
+ * provided to the new function.
3748
+ * @param {*} [thisArg] The `this` binding of `func`.
3749
+ * @param {number} [arity] The arity of `func`.
3750
+ * @returns {Function} Returns the new function.
3751
+ */
3752
+ function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {
3753
+ var isBind = bitmask & 1,
3754
+ isBindKey = bitmask & 2,
3755
+ isCurry = bitmask & 4,
3756
+ isCurryBound = bitmask & 8,
3757
+ isPartial = bitmask & 16,
3758
+ isPartialRight = bitmask & 32;
3759
+
3760
+ if (!isBindKey && !isFunction(func)) {
3761
+ throw new TypeError;
3762
+ }
3763
+ if (isPartial && !partialArgs.length) {
3764
+ bitmask &= ~16;
3765
+ isPartial = partialArgs = false;
3766
+ }
3767
+ if (isPartialRight && !partialRightArgs.length) {
3768
+ bitmask &= ~32;
3769
+ isPartialRight = partialRightArgs = false;
3770
+ }
3771
+ var bindData = func && func.__bindData__;
3772
+ if (bindData && bindData !== true) {
3773
+ // clone `bindData`
3774
+ bindData = slice(bindData);
3775
+ if (bindData[2]) {
3776
+ bindData[2] = slice(bindData[2]);
3777
+ }
3778
+ if (bindData[3]) {
3779
+ bindData[3] = slice(bindData[3]);
3780
+ }
3781
+ // set `thisBinding` is not previously bound
3782
+ if (isBind && !(bindData[1] & 1)) {
3783
+ bindData[4] = thisArg;
3784
+ }
3785
+ // set if previously bound but not currently (subsequent curried functions)
3786
+ if (!isBind && bindData[1] & 1) {
3787
+ bitmask |= 8;
3788
+ }
3789
+ // set curried arity if not yet set
3790
+ if (isCurry && !(bindData[1] & 4)) {
3791
+ bindData[5] = arity;
3792
+ }
3793
+ // append partial left arguments
3794
+ if (isPartial) {
3795
+ push.apply(bindData[2] || (bindData[2] = []), partialArgs);
3796
+ }
3797
+ // append partial right arguments
3798
+ if (isPartialRight) {
3799
+ unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs);
3800
+ }
3801
+ // merge flags
3802
+ bindData[1] |= bitmask;
3803
+ return createWrapper.apply(null, bindData);
3804
+ }
3805
+ // fast path for `_.bind`
3806
+ var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;
3807
+ return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);
3808
+ }
3809
+
3810
+ module.exports = createWrapper;
3811
+
3812
+
3813
+ /***/ },
3814
+ /* 56 */
3815
+ /***/ function(module, exports, __webpack_require__) {
3816
+
3817
+ /**
3818
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3819
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3820
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3821
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3822
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3823
+ * Available under MIT license <http://lodash.com/license>
3824
+ */
3825
+
3826
+ /**
3827
+ * A no-operation function.
3828
+ *
3829
+ * @static
3830
+ * @memberOf _
3831
+ * @category Utilities
3832
+ * @example
3833
+ *
3834
+ * var object = { 'name': 'fred' };
3835
+ * _.noop(object) === undefined;
3836
+ * // => true
3837
+ */
3838
+ function noop() {
3839
+ // no operation performed
3840
+ }
3841
+
3842
+ module.exports = noop;
3843
+
3844
+
3845
+ /***/ },
3846
+ /* 57 */
3847
+ /***/ function(module, exports, __webpack_require__) {
3848
+
3849
+ /**
3850
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3851
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3852
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3853
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3854
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3855
+ * Available under MIT license <http://lodash.com/license>
3856
+ */
3857
+ var baseCreateCallback = __webpack_require__(27),
3858
+ objectTypes = __webpack_require__(28);
3859
+
3860
+ /**
3861
+ * Iterates over own and inherited enumerable properties of an object,
3862
+ * executing the callback for each property. The callback is bound to `thisArg`
3863
+ * and invoked with three arguments; (value, key, object). Callbacks may exit
3864
+ * iteration early by explicitly returning `false`.
3865
+ *
3866
+ * @static
3867
+ * @memberOf _
3868
+ * @type Function
3869
+ * @category Objects
3870
+ * @param {Object} object The object to iterate over.
3871
+ * @param {Function} [callback=identity] The function called per iteration.
3872
+ * @param {*} [thisArg] The `this` binding of `callback`.
3873
+ * @returns {Object} Returns `object`.
3874
+ * @example
3875
+ *
3876
+ * function Shape() {
3877
+ * this.x = 0;
3878
+ * this.y = 0;
3879
+ * }
3880
+ *
3881
+ * Shape.prototype.move = function(x, y) {
3882
+ * this.x += x;
3883
+ * this.y += y;
3884
+ * };
3885
+ *
3886
+ * _.forIn(new Shape, function(value, key) {
3887
+ * console.log(key);
3888
+ * });
3889
+ * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)
3890
+ */
3891
+ var forIn = function(collection, callback, thisArg) {
3892
+ var index, iterable = collection, result = iterable;
3893
+ if (!iterable) return result;
3894
+ if (!objectTypes[typeof iterable]) return result;
3895
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
3896
+ for (index in iterable) {
3897
+ if (callback(iterable[index], index, collection) === false) return result;
3898
+ }
3899
+ return result
3900
+ };
3901
+
3902
+ module.exports = forIn;
3903
+
3904
+
3905
+ /***/ },
3906
+ /* 58 */
3907
+ /***/ function(module, exports, __webpack_require__) {
3908
+
3909
+ /**
3910
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3911
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3912
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3913
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3914
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3915
+ * Available under MIT license <http://lodash.com/license>
3916
+ */
3917
+
3918
+ /**
3919
+ * Checks if `value` is a function.
3920
+ *
3921
+ * @static
3922
+ * @memberOf _
3923
+ * @category Objects
3924
+ * @param {*} value The value to check.
3925
+ * @returns {boolean} Returns `true` if the `value` is a function, else `false`.
3926
+ * @example
3927
+ *
3928
+ * _.isFunction(_);
3929
+ * // => true
3930
+ */
3931
+ function isFunction(value) {
3932
+ return typeof value == 'function';
3933
+ }
3934
+
3935
+ module.exports = isFunction;
3936
+
3937
+
3938
+ /***/ },
3939
+ /* 59 */
3940
+ /***/ function(module, exports, __webpack_require__) {
3941
+
3942
+ /**
3943
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3944
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3945
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3946
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3947
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3948
+ * Available under MIT license <http://lodash.com/license>
3949
+ */
3950
+ var baseCreate = __webpack_require__(61),
3951
+ isObject = __webpack_require__(22),
3952
+ setBindData = __webpack_require__(44),
3953
+ slice = __webpack_require__(42);
3954
+
3955
+ /**
3956
+ * Used for `Array` method references.
3957
+ *
3958
+ * Normally `Array.prototype` would suffice, however, using an array literal
3959
+ * avoids issues in Narwhal.
3960
+ */
3961
+ var arrayRef = [];
3962
+
3963
+ /** Native method shortcuts */
3964
+ var push = arrayRef.push;
3965
+
3966
+ /**
3967
+ * The base implementation of `_.bind` that creates the bound function and
3968
+ * sets its meta data.
3969
+ *
3970
+ * @private
3971
+ * @param {Array} bindData The bind data array.
3972
+ * @returns {Function} Returns the new bound function.
3973
+ */
3974
+ function baseBind(bindData) {
3975
+ var func = bindData[0],
3976
+ partialArgs = bindData[2],
3977
+ thisArg = bindData[4];
3978
+
3979
+ function bound() {
3980
+ // `Function#bind` spec
3981
+ // http://es5.github.io/#x15.3.4.5
3982
+ if (partialArgs) {
3983
+ // avoid `arguments` object deoptimizations by using `slice` instead
3984
+ // of `Array.prototype.slice.call` and not assigning `arguments` to a
3985
+ // variable as a ternary expression
3986
+ var args = slice(partialArgs);
3987
+ push.apply(args, arguments);
3988
+ }
3989
+ // mimic the constructor's `return` behavior
3990
+ // http://es5.github.io/#x13.2.2
3991
+ if (this instanceof bound) {
3992
+ // ensure `new bound` is an instance of `func`
3993
+ var thisBinding = baseCreate(func.prototype),
3994
+ result = func.apply(thisBinding, args || arguments);
3995
+ return isObject(result) ? result : thisBinding;
3996
+ }
3997
+ return func.apply(thisArg, args || arguments);
3998
+ }
3999
+ setBindData(bound, bindData);
4000
+ return bound;
4001
+ }
4002
+
4003
+ module.exports = baseBind;
4004
+
4005
+
4006
+ /***/ },
4007
+ /* 60 */
4008
+ /***/ function(module, exports, __webpack_require__) {
4009
+
4010
+ /**
4011
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
4012
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
4013
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
4014
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
4015
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4016
+ * Available under MIT license <http://lodash.com/license>
4017
+ */
4018
+ var baseCreate = __webpack_require__(61),
4019
+ isObject = __webpack_require__(22),
4020
+ setBindData = __webpack_require__(44),
4021
+ slice = __webpack_require__(42);
4022
+
4023
+ /**
4024
+ * Used for `Array` method references.
4025
+ *
4026
+ * Normally `Array.prototype` would suffice, however, using an array literal
4027
+ * avoids issues in Narwhal.
4028
+ */
4029
+ var arrayRef = [];
4030
+
4031
+ /** Native method shortcuts */
4032
+ var push = arrayRef.push;
4033
+
4034
+ /**
4035
+ * The base implementation of `createWrapper` that creates the wrapper and
4036
+ * sets its meta data.
4037
+ *
4038
+ * @private
4039
+ * @param {Array} bindData The bind data array.
4040
+ * @returns {Function} Returns the new function.
4041
+ */
4042
+ function baseCreateWrapper(bindData) {
4043
+ var func = bindData[0],
4044
+ bitmask = bindData[1],
4045
+ partialArgs = bindData[2],
4046
+ partialRightArgs = bindData[3],
4047
+ thisArg = bindData[4],
4048
+ arity = bindData[5];
4049
+
4050
+ var isBind = bitmask & 1,
4051
+ isBindKey = bitmask & 2,
4052
+ isCurry = bitmask & 4,
4053
+ isCurryBound = bitmask & 8,
4054
+ key = func;
4055
+
4056
+ function bound() {
4057
+ var thisBinding = isBind ? thisArg : this;
4058
+ if (partialArgs) {
4059
+ var args = slice(partialArgs);
4060
+ push.apply(args, arguments);
4061
+ }
4062
+ if (partialRightArgs || isCurry) {
4063
+ args || (args = slice(arguments));
4064
+ if (partialRightArgs) {
4065
+ push.apply(args, partialRightArgs);
4066
+ }
4067
+ if (isCurry && args.length < arity) {
4068
+ bitmask |= 16 & ~32;
4069
+ return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);
4070
+ }
4071
+ }
4072
+ args || (args = arguments);
4073
+ if (isBindKey) {
4074
+ func = thisBinding[key];
4075
+ }
4076
+ if (this instanceof bound) {
4077
+ thisBinding = baseCreate(func.prototype);
4078
+ var result = func.apply(thisBinding, args);
4079
+ return isObject(result) ? result : thisBinding;
4080
+ }
4081
+ return func.apply(thisBinding, args);
4082
+ }
4083
+ setBindData(bound, bindData);
4084
+ return bound;
4085
+ }
4086
+
4087
+ module.exports = baseCreateWrapper;
4088
+
4089
+
4090
+ /***/ },
4091
+ /* 61 */
4092
+ /***/ function(module, exports, __webpack_require__) {
4093
+
4094
+ /* WEBPACK VAR INJECTION */(function(global) {/**
4095
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
4096
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
4097
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
4098
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
4099
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4100
+ * Available under MIT license <http://lodash.com/license>
4101
+ */
4102
+ var isNative = __webpack_require__(29),
4103
+ isObject = __webpack_require__(22),
4104
+ noop = __webpack_require__(56);
4105
+
4106
+ /* Native method shortcuts for methods with the same name as other `lodash` methods */
4107
+ var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
4108
+
4109
+ /**
4110
+ * The base implementation of `_.create` without support for assigning
4111
+ * properties to the created object.
4112
+ *
4113
+ * @private
4114
+ * @param {Object} prototype The object to inherit from.
4115
+ * @returns {Object} Returns the new object.
4116
+ */
4117
+ function baseCreate(prototype, properties) {
4118
+ return isObject(prototype) ? nativeCreate(prototype) : {};
4119
+ }
4120
+ // fallback for browsers without `Object.create`
4121
+ if (!nativeCreate) {
4122
+ baseCreate = (function() {
4123
+ function Object() {}
4124
+ return function(prototype) {
4125
+ if (isObject(prototype)) {
4126
+ Object.prototype = prototype;
4127
+ var result = new Object;
4128
+ Object.prototype = null;
4129
+ }
4130
+ return result || global.Object();
4131
+ };
4132
+ }());
4133
+ }
4134
+
4135
+ module.exports = baseCreate;
4136
+
4137
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4138
+
4139
+ /***/ }
4140
+ /******/ ])
4141
+ })
4142
+
4143
+ /*
4144
+ //@ sourceMappingURL=fluxxor.js.map
4145
+ */