// instrument by jscoverage, do not modifly this file
(function () {
  var BASE;
  if (typeof global === 'object') {
    BASE = global;
  } else if (typeof window === 'object') {
    BASE = window;
  } else {
    throw new Error('[jscoverage] unknow ENV!');
  }
  if (!BASE._$jscoverage) {
    BASE._$jscoverage = {};
    BASE._$jscoverage_cond = {};
    BASE._$jscoverage_done = function (file, line, express) {
      if (arguments.length === 2) {
        BASE._$jscoverage[file][line] ++;
      } else {
        BASE._$jscoverage_cond[file][line] ++;
        return express;
      }
    };
    BASE._$jscoverage_init = function (base, file, lines) {
      var tmp = [];
      for (var i = 0; i < lines.length; i ++) {
        tmp[lines[i]] = 0;
      }
      base[file] = tmp;
    };
  }
})();
_$jscoverage_init(_$jscoverage, "lib/utils.js",[4,5,7,8,9,19,22,23,26,27,28,29,32,33,35,38,42,55,56,74,75,76,77,79,83,84,87,88,91,92,93,94,98,99,100,101,105,106,107,108,111,130,131,132,135,144,145,146,148,149,153,156,157,159,160,162,163,165,166,172,173,174,176,177,180,195,196,199,200,201,204,205,207,209,223,224,226,229,231,233,236,238,241,253,254,255,256,257,259,260,263,264,267,268,269,270,272,273,274,275,278,279,280,281,295,296,297,299,300,303,305,314,315,318,332,333,334,336,337]);
_$jscoverage_init(_$jscoverage_cond, "lib/utils.js",[32,76,76,93,100,131,144,148,156,157,160,163,172,176,195,200,205,223,223,231,236,259,259,263,263,267,267,272,272,279,299,303,314,314,333]);
_$jscoverage["lib/utils.js"].source = ["/*jshint node:true*/","'use strict';","","var exec = require('child_process').exec;","var isWindows = require('os').platform().match(/win(32|64)/);","","var nlRegexp = /\\r\\n|\\r|\\n/g;","var streamRegexp = /^\\[?(.*?)\\]?$/;","var whichCache = {};","","/**"," * Parse progress line from ffmpeg stderr"," *"," * @param {String} line progress line"," * @return progress object"," * @private"," */","function parseProgressLine(line) {","  var progress = {};","","  // Remove all spaces after = and trim","  line  = line.replace(/=\\s+/g, '=').trim();","  var progressParts = line.split(' ');","","  // Split every progress part by \"=\" to get key and value","  for(var i = 0; i < progressParts.length; i++) {","    var progressSplit = progressParts[i].split('=', 2);","    var key = progressSplit[0];","    var value = progressSplit[1];","","    // This is not a progress line","    if(typeof value === 'undefined')","      return null;","","    progress[key] = value;","  }","","  return progress;","}","","","var utils = module.exports = {","  isWindows: isWindows,","  streamRegexp: streamRegexp,","","","  /**","   * Copy an object keys into another one","   *","   * @param {Object} source source object","   * @param {Object} dest destination object","   * @private","   */","  copy: function(source, dest) {","    Object.keys(source).forEach(function(key) {","      dest[key] = source[key];","    });","  },","","","  /**","   * Create an argument list","   *","   * Returns a function that adds new arguments to the list.","   * It also has the following methods:","   * - clear() empties the argument list","   * - get() returns the argument list","   * - find(arg, count) finds 'arg' in the list and return the following 'count' items, or undefined if not found","   * - remove(arg, count) remove 'arg' in the list as well as the following 'count' items","   *","   * @private","   */","  args: function() {","    var list = [];","    var argfunc = function() {","      if (arguments.length === 1 && Array.isArray(arguments[0])) {","        list = list.concat(arguments[0]);","      } else {","        list = list.concat([].slice.call(arguments));","      }","    };","","    argfunc.clear = function() {","      list = [];","    };","","    argfunc.get = function() {","      return list;","    };","","    argfunc.find = function(arg, count) {","      var index = list.indexOf(arg);","      if (index !== -1) {","        return list.slice(index + 1, index + 1 + (count || 0));","      }","    };","","    argfunc.remove = function(arg, count) {","      var index = list.indexOf(arg);","      if (index !== -1) {","        list.splice(index, (count || 0) + 1);","      }","    };","","    argfunc.clone = function() {","      var cloned = utils.args();","      cloned(list);","      return cloned;","    };","","    return argfunc;","  },","","","  /**","   * Generate filter strings","   *","   * @param {String[]|Object[]} filters filter specifications. When using objects,","   *   each must have the following properties:","   * @param {String} filters.filter filter name","   * @param {String|Array} [filters.inputs] (array of) input stream specifier(s) for the filter,","   *   defaults to ffmpeg automatically choosing the first unused matching streams","   * @param {String|Array} [filters.outputs] (array of) output stream specifier(s) for the filter,","   *   defaults to ffmpeg automatically assigning the output to the output file","   * @param {Object|String|Array} [filters.options] filter options, can be omitted to not set any options","   * @return String[]","   * @private","   */","  makeFilterStrings: function(filters) {","    return filters.map(function(filterSpec) {","      if (typeof filterSpec === 'string') {","        return filterSpec;","      }","","      var filterString = '';","","      // Filter string format is:","      // [input1][input2]...filter[output1][output2]...","      // The 'filter' part can optionaly have arguments:","      //   filter=arg1:arg2:arg3","      //   filter=arg1=v1:arg2=v2:arg3=v3","","      // Add inputs","      if (Array.isArray(filterSpec.inputs)) {","        filterString += filterSpec.inputs.map(function(streamSpec) {","          return streamSpec.replace(streamRegexp, '[$1]');","        }).join('');","      } else if (typeof filterSpec.inputs === 'string') {","        filterString += filterSpec.inputs.replace(streamRegexp, '[$1]');","      }","","      // Add filter","      filterString += filterSpec.filter;","","      // Add options","      if (filterSpec.options) {","        if (typeof filterSpec.options === 'string') {","          // Option string","          filterString += '=' + filterSpec.options;","        } else if (Array.isArray(filterSpec.options)) {","          // Option array (unnamed options)","          filterString += '=' + filterSpec.options.join(':');","        } else if (Object.keys(filterSpec.options).length) {","          // Option object (named options)","          filterString += '=' + Object.keys(filterSpec.options).map(function(option) {","            return option + '=' + filterSpec.options[option];","          }).join(':');","        }","      }","","      // Add outputs","      if (Array.isArray(filterSpec.outputs)) {","        filterString += filterSpec.outputs.map(function(streamSpec) {","          return streamSpec.replace(streamRegexp, '[$1]');","        }).join('');","      } else if (typeof filterSpec.outputs === 'string') {","        filterString += filterSpec.outputs.replace(streamRegexp, '[$1]');","      }","","      return filterString;","    });","  },","","","  /**","   * Search for an executable","   *","   * Uses 'which' or 'where' depending on platform","   *","   * @param {String} name executable name","   * @param {Function} callback callback with signature (err, path)","   * @private","   */","  which: function(name, callback) {","    if (name in whichCache) {","      return callback(null, whichCache[name]);","    }","","    var cmd = 'which ' + name;","    if (isWindows) {","      cmd = 'where ' + name + '.exe';","    }","","    exec(cmd, function(err, stdout) {","      if (err) {","        // Treat errors as not found","        callback(null, whichCache[name] = '');","      } else {","        callback(null, whichCache[name] = stdout.replace(/\\n$/, ''));","      }","    });","  },","","","  /**","   * Convert a [[hh:]mm:]ss[.xxx] timemark into seconds","   *","   * @param {String} timemark timemark string","   * @return Number","   * @private","   */","  timemarkToSeconds: function(timemark) {","    if(timemark.indexOf(':') === -1 && timemark.indexOf('.') >= 0)","      return Number(timemark);","","    var parts = timemark.split(':');","","    // add seconds","    var secs = Number(parts.pop());","","    if (parts.length) {","      // add minutes","      secs += Number(parts.pop()) * 60;","    }","","    if (parts.length) {","      // add hours","      secs += Number(parts.pop()) * 3600;","    }","","    return secs;","  },","","","  /**","   * Extract codec data from ffmpeg stderr and emit 'codecData' event if appropriate","   *","   * @param {FfmpegCommand} command event emitter","   * @param {String} stderr ffmpeg stderr output","   * @private","   */","  extractCodecData: function(command, stderr) {","    var format= /Input #[0-9]+, ([^ ]+),/.exec(stderr);","    var dur   = /Duration\\: ([^,]+)/.exec(stderr);","    var audio = /Audio\\: (.*)/.exec(stderr);","    var video = /Video\\: (.*)/.exec(stderr);","    var codecObject = { format: '', audio: '', video: '', duration: '' };","","    if (format && format.length > 1) {","      codecObject.format = format[1];","    }","","    if (dur && dur.length > 1) {","      codecObject.duration = dur[1];","    }","","    if (audio && audio.length > 1) {","      audio = audio[1].split(', ');","      codecObject.audio = audio[0];","      codecObject.audio_details = audio;","    }","    if (video && video.length > 1) {","      video = video[1].split(', ');","      codecObject.video = video[0];","      codecObject.video_details = video;","    }","","    var codecInfoPassed = /Press (\\[q\\]|ctrl-c) to stop/.test(stderr);","    if (codecInfoPassed) {","      command.emit('codecData', codecObject);","      command._codecDataSent = true;","    }","  },","","","  /**","   * Extract progress data from ffmpeg stderr and emit 'progress' event if appropriate","   *","   * @param {FfmpegCommand} command event emitter","   * @param {String} stderr ffmpeg stderr data","   * @param {Number} [duration=0] expected output duration in seconds","   * @private","   */","  extractProgress: function(command, stderr, duration) {","    var lines = stderr.split(nlRegexp);","    var lastline = lines[lines.length - 2];","    var progress;","","    if (lastline) {","      progress = parseProgressLine(lastline);","    }","","    if (progress) {","      // build progress report object","      var ret = {","        frames: parseInt(progress.frame, 10),","        currentFps: parseInt(progress.fps, 10),","        currentKbps: parseFloat(progress.bitrate.replace('kbits/s', '')),","        targetSize: parseInt(progress.size, 10),","        timemark: progress.time","      };","","      // calculate percent progress using duration","      if (duration && duration > 0) {","        ret.percent = (utils.timemarkToSeconds(ret.timemark) / duration) * 100;","      }","","      command.emit('progress', ret);","    }","  },","","","  /**","   * Extract error message(s) from ffmpeg stderr","   *","   * @param {String} stderr ffmpeg stderr data","   * @return {String}","   * @private","   */","  extractError: function(stderr) {","    // Only return the last stderr lines that don't start with a space","    return stderr.split(nlRegexp).reduce(function(messages, message) {","      if (message.charAt(0) === ' ') {","        return [];","      } else {","        messages.push(message);","        return messages;","      }","    }, []).join('\\n');","  }","};",""];
"use strict";

_$jscoverage_done("lib/utils.js", 4);
var exec = require("child_process").exec;

_$jscoverage_done("lib/utils.js", 5);
var isWindows = require("os").platform().match(/win(32|64)/);

_$jscoverage_done("lib/utils.js", 7);
var nlRegexp = /\r\n|\r|\n/g;

_$jscoverage_done("lib/utils.js", 8);
var streamRegexp = /^\[?(.*?)\]?$/;

_$jscoverage_done("lib/utils.js", 9);
var whichCache = {};

function parseProgressLine(line) {
    _$jscoverage_done("lib/utils.js", 19);
    var progress = {};
    _$jscoverage_done("lib/utils.js", 22);
    line = line.replace(/=\s+/g, "=").trim();
    _$jscoverage_done("lib/utils.js", 23);
    var progressParts = line.split(" ");
    _$jscoverage_done("lib/utils.js", 26);
    for (var i = 0; i < progressParts.length; i++) {
        _$jscoverage_done("lib/utils.js", 27);
        var progressSplit = progressParts[i].split("=", 2);
        _$jscoverage_done("lib/utils.js", 28);
        var key = progressSplit[0];
        _$jscoverage_done("lib/utils.js", 29);
        var value = progressSplit[1];
        _$jscoverage_done("lib/utils.js", 32);
        if (_$jscoverage_done("lib/utils.js", 32, typeof value === "undefined")) {
            _$jscoverage_done("lib/utils.js", 33);
            return null;
        }
        _$jscoverage_done("lib/utils.js", 35);
        progress[key] = value;
    }
    _$jscoverage_done("lib/utils.js", 38);
    return progress;
}

_$jscoverage_done("lib/utils.js", 42);
var utils = module.exports = {
    isWindows: isWindows,
    streamRegexp: streamRegexp,
    copy: function(source, dest) {
        _$jscoverage_done("lib/utils.js", 55);
        Object.keys(source).forEach(function(key) {
            _$jscoverage_done("lib/utils.js", 56);
            dest[key] = source[key];
        });
    },
    args: function() {
        _$jscoverage_done("lib/utils.js", 74);
        var list = [];
        _$jscoverage_done("lib/utils.js", 75);
        var argfunc = function() {
            _$jscoverage_done("lib/utils.js", 76);
            if (_$jscoverage_done("lib/utils.js", 76, arguments.length === 1) && _$jscoverage_done("lib/utils.js", 76, Array.isArray(arguments[0]))) {
                _$jscoverage_done("lib/utils.js", 77);
                list = list.concat(arguments[0]);
            } else {
                _$jscoverage_done("lib/utils.js", 79);
                list = list.concat([].slice.call(arguments));
            }
        };
        _$jscoverage_done("lib/utils.js", 83);
        argfunc.clear = function() {
            _$jscoverage_done("lib/utils.js", 84);
            list = [];
        };
        _$jscoverage_done("lib/utils.js", 87);
        argfunc.get = function() {
            _$jscoverage_done("lib/utils.js", 88);
            return list;
        };
        _$jscoverage_done("lib/utils.js", 91);
        argfunc.find = function(arg, count) {
            _$jscoverage_done("lib/utils.js", 92);
            var index = list.indexOf(arg);
            _$jscoverage_done("lib/utils.js", 93);
            if (_$jscoverage_done("lib/utils.js", 93, index !== -1)) {
                _$jscoverage_done("lib/utils.js", 94);
                return list.slice(index + 1, index + 1 + (count || 0));
            }
        };
        _$jscoverage_done("lib/utils.js", 98);
        argfunc.remove = function(arg, count) {
            _$jscoverage_done("lib/utils.js", 99);
            var index = list.indexOf(arg);
            _$jscoverage_done("lib/utils.js", 100);
            if (_$jscoverage_done("lib/utils.js", 100, index !== -1)) {
                _$jscoverage_done("lib/utils.js", 101);
                list.splice(index, (count || 0) + 1);
            }
        };
        _$jscoverage_done("lib/utils.js", 105);
        argfunc.clone = function() {
            _$jscoverage_done("lib/utils.js", 106);
            var cloned = utils.args();
            _$jscoverage_done("lib/utils.js", 107);
            cloned(list);
            _$jscoverage_done("lib/utils.js", 108);
            return cloned;
        };
        _$jscoverage_done("lib/utils.js", 111);
        return argfunc;
    },
    makeFilterStrings: function(filters) {
        _$jscoverage_done("lib/utils.js", 130);
        return filters.map(function(filterSpec) {
            _$jscoverage_done("lib/utils.js", 131);
            if (_$jscoverage_done("lib/utils.js", 131, typeof filterSpec === "string")) {
                _$jscoverage_done("lib/utils.js", 132);
                return filterSpec;
            }
            _$jscoverage_done("lib/utils.js", 135);
            var filterString = "";
            _$jscoverage_done("lib/utils.js", 144);
            if (_$jscoverage_done("lib/utils.js", 144, Array.isArray(filterSpec.inputs))) {
                _$jscoverage_done("lib/utils.js", 145);
                filterString += filterSpec.inputs.map(function(streamSpec) {
                    _$jscoverage_done("lib/utils.js", 146);
                    return streamSpec.replace(streamRegexp, "[$1]");
                }).join("");
            } else {
                _$jscoverage_done("lib/utils.js", 148);
                if (_$jscoverage_done("lib/utils.js", 148, typeof filterSpec.inputs === "string")) {
                    _$jscoverage_done("lib/utils.js", 149);
                    filterString += filterSpec.inputs.replace(streamRegexp, "[$1]");
                }
            }
            _$jscoverage_done("lib/utils.js", 153);
            filterString += filterSpec.filter;
            _$jscoverage_done("lib/utils.js", 156);
            if (_$jscoverage_done("lib/utils.js", 156, filterSpec.options)) {
                _$jscoverage_done("lib/utils.js", 157);
                if (_$jscoverage_done("lib/utils.js", 157, typeof filterSpec.options === "string")) {
                    _$jscoverage_done("lib/utils.js", 159);
                    filterString += "=" + filterSpec.options;
                } else {
                    _$jscoverage_done("lib/utils.js", 160);
                    if (_$jscoverage_done("lib/utils.js", 160, Array.isArray(filterSpec.options))) {
                        _$jscoverage_done("lib/utils.js", 162);
                        filterString += "=" + filterSpec.options.join(":");
                    } else {
                        _$jscoverage_done("lib/utils.js", 163);
                        if (_$jscoverage_done("lib/utils.js", 163, Object.keys(filterSpec.options).length)) {
                            _$jscoverage_done("lib/utils.js", 165);
                            filterString += "=" + Object.keys(filterSpec.options).map(function(option) {
                                _$jscoverage_done("lib/utils.js", 166);
                                return option + "=" + filterSpec.options[option];
                            }).join(":");
                        }
                    }
                }
            }
            _$jscoverage_done("lib/utils.js", 172);
            if (_$jscoverage_done("lib/utils.js", 172, Array.isArray(filterSpec.outputs))) {
                _$jscoverage_done("lib/utils.js", 173);
                filterString += filterSpec.outputs.map(function(streamSpec) {
                    _$jscoverage_done("lib/utils.js", 174);
                    return streamSpec.replace(streamRegexp, "[$1]");
                }).join("");
            } else {
                _$jscoverage_done("lib/utils.js", 176);
                if (_$jscoverage_done("lib/utils.js", 176, typeof filterSpec.outputs === "string")) {
                    _$jscoverage_done("lib/utils.js", 177);
                    filterString += filterSpec.outputs.replace(streamRegexp, "[$1]");
                }
            }
            _$jscoverage_done("lib/utils.js", 180);
            return filterString;
        });
    },
    which: function(name, callback) {
        _$jscoverage_done("lib/utils.js", 195);
        if (_$jscoverage_done("lib/utils.js", 195, name in whichCache)) {
            _$jscoverage_done("lib/utils.js", 196);
            return callback(null, whichCache[name]);
        }
        _$jscoverage_done("lib/utils.js", 199);
        var cmd = "which " + name;
        _$jscoverage_done("lib/utils.js", 200);
        if (_$jscoverage_done("lib/utils.js", 200, isWindows)) {
            _$jscoverage_done("lib/utils.js", 201);
            cmd = "where " + name + ".exe";
        }
        _$jscoverage_done("lib/utils.js", 204);
        exec(cmd, function(err, stdout) {
            _$jscoverage_done("lib/utils.js", 205);
            if (_$jscoverage_done("lib/utils.js", 205, err)) {
                _$jscoverage_done("lib/utils.js", 207);
                callback(null, whichCache[name] = "");
            } else {
                _$jscoverage_done("lib/utils.js", 209);
                callback(null, whichCache[name] = stdout.replace(/\n$/, ""));
            }
        });
    },
    timemarkToSeconds: function(timemark) {
        _$jscoverage_done("lib/utils.js", 223);
        if (_$jscoverage_done("lib/utils.js", 223, timemark.indexOf(":") === -1) && _$jscoverage_done("lib/utils.js", 223, timemark.indexOf(".") >= 0)) {
            _$jscoverage_done("lib/utils.js", 224);
            return Number(timemark);
        }
        _$jscoverage_done("lib/utils.js", 226);
        var parts = timemark.split(":");
        _$jscoverage_done("lib/utils.js", 229);
        var secs = Number(parts.pop());
        _$jscoverage_done("lib/utils.js", 231);
        if (_$jscoverage_done("lib/utils.js", 231, parts.length)) {
            _$jscoverage_done("lib/utils.js", 233);
            secs += Number(parts.pop()) * 60;
        }
        _$jscoverage_done("lib/utils.js", 236);
        if (_$jscoverage_done("lib/utils.js", 236, parts.length)) {
            _$jscoverage_done("lib/utils.js", 238);
            secs += Number(parts.pop()) * 3600;
        }
        _$jscoverage_done("lib/utils.js", 241);
        return secs;
    },
    extractCodecData: function(command, stderr) {
        _$jscoverage_done("lib/utils.js", 253);
        var format = /Input #[0-9]+, ([^ ]+),/.exec(stderr);
        _$jscoverage_done("lib/utils.js", 254);
        var dur = /Duration\: ([^,]+)/.exec(stderr);
        _$jscoverage_done("lib/utils.js", 255);
        var audio = /Audio\: (.*)/.exec(stderr);
        _$jscoverage_done("lib/utils.js", 256);
        var video = /Video\: (.*)/.exec(stderr);
        _$jscoverage_done("lib/utils.js", 257);
        var codecObject = {
            format: "",
            audio: "",
            video: "",
            duration: ""
        };
        _$jscoverage_done("lib/utils.js", 259);
        if (_$jscoverage_done("lib/utils.js", 259, format) && _$jscoverage_done("lib/utils.js", 259, format.length > 1)) {
            _$jscoverage_done("lib/utils.js", 260);
            codecObject.format = format[1];
        }
        _$jscoverage_done("lib/utils.js", 263);
        if (_$jscoverage_done("lib/utils.js", 263, dur) && _$jscoverage_done("lib/utils.js", 263, dur.length > 1)) {
            _$jscoverage_done("lib/utils.js", 264);
            codecObject.duration = dur[1];
        }
        _$jscoverage_done("lib/utils.js", 267);
        if (_$jscoverage_done("lib/utils.js", 267, audio) && _$jscoverage_done("lib/utils.js", 267, audio.length > 1)) {
            _$jscoverage_done("lib/utils.js", 268);
            audio = audio[1].split(", ");
            _$jscoverage_done("lib/utils.js", 269);
            codecObject.audio = audio[0];
            _$jscoverage_done("lib/utils.js", 270);
            codecObject.audio_details = audio;
        }
        _$jscoverage_done("lib/utils.js", 272);
        if (_$jscoverage_done("lib/utils.js", 272, video) && _$jscoverage_done("lib/utils.js", 272, video.length > 1)) {
            _$jscoverage_done("lib/utils.js", 273);
            video = video[1].split(", ");
            _$jscoverage_done("lib/utils.js", 274);
            codecObject.video = video[0];
            _$jscoverage_done("lib/utils.js", 275);
            codecObject.video_details = video;
        }
        _$jscoverage_done("lib/utils.js", 278);
        var codecInfoPassed = /Press (\[q\]|ctrl-c) to stop/.test(stderr);
        _$jscoverage_done("lib/utils.js", 279);
        if (_$jscoverage_done("lib/utils.js", 279, codecInfoPassed)) {
            _$jscoverage_done("lib/utils.js", 280);
            command.emit("codecData", codecObject);
            _$jscoverage_done("lib/utils.js", 281);
            command._codecDataSent = true;
        }
    },
    extractProgress: function(command, stderr, duration) {
        _$jscoverage_done("lib/utils.js", 295);
        var lines = stderr.split(nlRegexp);
        _$jscoverage_done("lib/utils.js", 296);
        var lastline = lines[lines.length - 2];
        _$jscoverage_done("lib/utils.js", 297);
        var progress;
        _$jscoverage_done("lib/utils.js", 299);
        if (_$jscoverage_done("lib/utils.js", 299, lastline)) {
            _$jscoverage_done("lib/utils.js", 300);
            progress = parseProgressLine(lastline);
        }
        _$jscoverage_done("lib/utils.js", 303);
        if (_$jscoverage_done("lib/utils.js", 303, progress)) {
            _$jscoverage_done("lib/utils.js", 305);
            var ret = {
                frames: parseInt(progress.frame, 10),
                currentFps: parseInt(progress.fps, 10),
                currentKbps: parseFloat(progress.bitrate.replace("kbits/s", "")),
                targetSize: parseInt(progress.size, 10),
                timemark: progress.time
            };
            _$jscoverage_done("lib/utils.js", 314);
            if (_$jscoverage_done("lib/utils.js", 314, duration) && _$jscoverage_done("lib/utils.js", 314, duration > 0)) {
                _$jscoverage_done("lib/utils.js", 315);
                ret.percent = utils.timemarkToSeconds(ret.timemark) / duration * 100;
            }
            _$jscoverage_done("lib/utils.js", 318);
            command.emit("progress", ret);
        }
    },
    extractError: function(stderr) {
        _$jscoverage_done("lib/utils.js", 332);
        return stderr.split(nlRegexp).reduce(function(messages, message) {
            _$jscoverage_done("lib/utils.js", 333);
            if (_$jscoverage_done("lib/utils.js", 333, message.charAt(0) === " ")) {
                _$jscoverage_done("lib/utils.js", 334);
                return [];
            } else {
                _$jscoverage_done("lib/utils.js", 336);
                messages.push(message);
                _$jscoverage_done("lib/utils.js", 337);
                return messages;
            }
        }, []).join("\n");
    }
};