/* YUI 3.9.1 (build 5852) Copyright 2013 Yahoo! Inc. http://yuilibrary.com/license/ */
if (typeof _yuitest_coverage == "undefined"){
    _yuitest_coverage = {};
    _yuitest_coverline = function(src, line){
        var coverage = _yuitest_coverage[src];
        if (!coverage.lines[line]){
            coverage.calledLines++;
        }
        coverage.lines[line]++;
    };
    _yuitest_coverfunc = function(src, name, line){
        var coverage = _yuitest_coverage[src],
            funcId = name + ":" + line;
        if (!coverage.functions[funcId]){
            coverage.calledFunctions++;
        }
        coverage.functions[funcId]++;
    };
}
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"] = {
    lines: {},
    functions: {},
    coveredLines: 0,
    calledLines: 0,
    coveredFunctions: 0,
    calledFunctions: 0,
    path: "build/handlebars-compiler/handlebars-compiler.js",
    code: []
};
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].code=["YUI.add('handlebars-compiler', function (Y, NAME) {","","/*!","Handlebars.js - Copyright (C) 2011 Yehuda Katz","https://raw.github.com/wycats/handlebars.js/master/LICENSE","*/","// This file contains code that will be inserted at the beginning of the","// handlebars-compiler module.","","// This is necessary because the Y.Handlebars object is created in the","// handlebars-base module, but the native Handlebars code expects to use a local","// Handlebars reference.","var Handlebars = Y.Handlebars;","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","/* Jison generated parser */","var handlebars = (function(){","var parser = {trace: function trace() { },","yy: {},","symbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"statements\":6,\"simpleInverse\":7,\"statement\":8,\"openInverse\":9,\"closeBlock\":10,\"openBlock\":11,\"mustache\":12,\"partial\":13,\"CONTENT\":14,\"COMMENT\":15,\"OPEN_BLOCK\":16,\"inMustache\":17,\"CLOSE\":18,\"OPEN_INVERSE\":19,\"OPEN_ENDBLOCK\":20,\"path\":21,\"OPEN\":22,\"OPEN_UNESCAPED\":23,\"OPEN_PARTIAL\":24,\"params\":25,\"hash\":26,\"DATA\":27,\"param\":28,\"STRING\":29,\"INTEGER\":30,\"BOOLEAN\":31,\"hashSegments\":32,\"hashSegment\":33,\"ID\":34,\"EQUALS\":35,\"pathSegments\":36,\"SEP\":37,\"$accept\":0,\"$end\":1},","terminals_: {2:\"error\",5:\"EOF\",14:\"CONTENT\",15:\"COMMENT\",16:\"OPEN_BLOCK\",18:\"CLOSE\",19:\"OPEN_INVERSE\",20:\"OPEN_ENDBLOCK\",22:\"OPEN\",23:\"OPEN_UNESCAPED\",24:\"OPEN_PARTIAL\",27:\"DATA\",29:\"STRING\",30:\"INTEGER\",31:\"BOOLEAN\",34:\"ID\",35:\"EQUALS\",37:\"SEP\"},","productions_: [0,[3,2],[4,3],[4,1],[4,0],[6,1],[6,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[7,2],[17,3],[17,2],[17,2],[17,1],[17,1],[25,2],[25,1],[28,1],[28,1],[28,1],[28,1],[28,1],[26,1],[32,2],[32,1],[33,3],[33,3],[33,3],[33,3],[33,3],[21,1],[36,3],[36,1]],","performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {","","var $0 = $$.length - 1;","switch (yystate) {","case 1: return $$[$0-1]; ","break;","case 2: this.$ = new yy.ProgramNode($$[$0-2], $$[$0]); ","break;","case 3: this.$ = new yy.ProgramNode($$[$0]); ","break;","case 4: this.$ = new yy.ProgramNode([]); ","break;","case 5: this.$ = [$$[$0]]; ","break;","case 6: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; ","break;","case 7: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0]); ","break;","case 8: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0]); ","break;","case 9: this.$ = $$[$0]; ","break;","case 10: this.$ = $$[$0]; ","break;","case 11: this.$ = new yy.ContentNode($$[$0]); ","break;","case 12: this.$ = new yy.CommentNode($$[$0]); ","break;","case 13: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); ","break;","case 14: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); ","break;","case 15: this.$ = $$[$0-1]; ","break;","case 16: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); ","break;","case 17: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true); ","break;","case 18: this.$ = new yy.PartialNode($$[$0-1]); ","break;","case 19: this.$ = new yy.PartialNode($$[$0-2], $$[$0-1]); ","break;","case 20: ","break;","case 21: this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]]; ","break;","case 22: this.$ = [[$$[$0-1]].concat($$[$0]), null]; ","break;","case 23: this.$ = [[$$[$0-1]], $$[$0]]; ","break;","case 24: this.$ = [[$$[$0]], null]; ","break;","case 25: this.$ = [[new yy.DataNode($$[$0])], null]; ","break;","case 26: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; ","break;","case 27: this.$ = [$$[$0]]; ","break;","case 28: this.$ = $$[$0]; ","break;","case 29: this.$ = new yy.StringNode($$[$0]); ","break;","case 30: this.$ = new yy.IntegerNode($$[$0]); ","break;","case 31: this.$ = new yy.BooleanNode($$[$0]); ","break;","case 32: this.$ = new yy.DataNode($$[$0]); ","break;","case 33: this.$ = new yy.HashNode($$[$0]); ","break;","case 34: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; ","break;","case 35: this.$ = [$$[$0]]; ","break;","case 36: this.$ = [$$[$0-2], $$[$0]]; ","break;","case 37: this.$ = [$$[$0-2], new yy.StringNode($$[$0])]; ","break;","case 38: this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])]; ","break;","case 39: this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])]; ","break;","case 40: this.$ = [$$[$0-2], new yy.DataNode($$[$0])]; ","break;","case 41: this.$ = new yy.IdNode($$[$0]); ","break;","case 42: $$[$0-2].push($$[$0]); this.$ = $$[$0-2]; ","break;","case 43: this.$ = [$$[$0]]; ","break;","}","},","table: [{3:1,4:2,5:[2,4],6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{1:[3]},{5:[1,16]},{5:[2,3],7:17,8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,19],20:[2,3],22:[1,13],23:[1,14],24:[1,15]},{5:[2,5],14:[2,5],15:[2,5],16:[2,5],19:[2,5],20:[2,5],22:[2,5],23:[2,5],24:[2,5]},{4:20,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{4:21,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],24:[2,9]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],24:[2,10]},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],24:[2,11]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],24:[2,12]},{17:22,21:23,27:[1,24],34:[1,26],36:25},{17:27,21:23,27:[1,24],34:[1,26],36:25},{17:28,21:23,27:[1,24],34:[1,26],36:25},{17:29,21:23,27:[1,24],34:[1,26],36:25},{21:30,34:[1,26],36:25},{1:[2,1]},{6:31,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{5:[2,6],14:[2,6],15:[2,6],16:[2,6],19:[2,6],20:[2,6],22:[2,6],23:[2,6],24:[2,6]},{17:22,18:[1,32],21:23,27:[1,24],34:[1,26],36:25},{10:33,20:[1,34]},{10:35,20:[1,34]},{18:[1,36]},{18:[2,24],21:41,25:37,26:38,27:[1,45],28:39,29:[1,42],30:[1,43],31:[1,44],32:40,33:46,34:[1,47],36:25},{18:[2,25]},{18:[2,41],27:[2,41],29:[2,41],30:[2,41],31:[2,41],34:[2,41],37:[1,48]},{18:[2,43],27:[2,43],29:[2,43],30:[2,43],31:[2,43],34:[2,43],37:[2,43]},{18:[1,49]},{18:[1,50]},{18:[1,51]},{18:[1,52],21:53,34:[1,26],36:25},{5:[2,2],8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,2],22:[1,13],23:[1,14],24:[1,15]},{14:[2,20],15:[2,20],16:[2,20],19:[2,20],22:[2,20],23:[2,20],24:[2,20]},{5:[2,7],14:[2,7],15:[2,7],16:[2,7],19:[2,7],20:[2,7],22:[2,7],23:[2,7],24:[2,7]},{21:54,34:[1,26],36:25},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],24:[2,8]},{14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],24:[2,14]},{18:[2,22],21:41,26:55,27:[1,45],28:56,29:[1,42],30:[1,43],31:[1,44],32:40,33:46,34:[1,47],36:25},{18:[2,23]},{18:[2,27],27:[2,27],29:[2,27],30:[2,27],31:[2,27],34:[2,27]},{18:[2,33],33:57,34:[1,58]},{18:[2,28],27:[2,28],29:[2,28],30:[2,28],31:[2,28],34:[2,28]},{18:[2,29],27:[2,29],29:[2,29],30:[2,29],31:[2,29],34:[2,29]},{18:[2,30],27:[2,30],29:[2,30],30:[2,30],31:[2,30],34:[2,30]},{18:[2,31],27:[2,31],29:[2,31],30:[2,31],31:[2,31],34:[2,31]},{18:[2,32],27:[2,32],29:[2,32],30:[2,32],31:[2,32],34:[2,32]},{18:[2,35],34:[2,35]},{18:[2,43],27:[2,43],29:[2,43],30:[2,43],31:[2,43],34:[2,43],35:[1,59],37:[2,43]},{34:[1,60]},{14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],24:[2,13]},{5:[2,16],14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],24:[2,16]},{5:[2,17],14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],24:[2,17]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],24:[2,18]},{18:[1,61]},{18:[1,62]},{18:[2,21]},{18:[2,26],27:[2,26],29:[2,26],30:[2,26],31:[2,26],34:[2,26]},{18:[2,34],34:[2,34]},{35:[1,59]},{21:63,27:[1,67],29:[1,64],30:[1,65],31:[1,66],34:[1,26],36:25},{18:[2,42],27:[2,42],29:[2,42],30:[2,42],31:[2,42],34:[2,42],37:[2,42]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],24:[2,19]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],24:[2,15]},{18:[2,36],34:[2,36]},{18:[2,37],34:[2,37]},{18:[2,38],34:[2,38]},{18:[2,39],34:[2,39]},{18:[2,40],34:[2,40]}],","defaultActions: {16:[2,1],24:[2,25],38:[2,23],55:[2,21]},","parseError: function parseError(str, hash) {","    throw new Error(str);","},","parse: function parse(input) {","    var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;","    this.lexer.setInput(input);","    this.lexer.yy = this.yy;","    this.yy.lexer = this.lexer;","    this.yy.parser = this;","    if (typeof this.lexer.yylloc == \"undefined\")","        this.lexer.yylloc = {};","    var yyloc = this.lexer.yylloc;","    lstack.push(yyloc);","    var ranges = this.lexer.options && this.lexer.options.ranges;","    if (typeof this.yy.parseError === \"function\")","        this.parseError = this.yy.parseError;","    function popStack(n) {","        stack.length = stack.length - 2 * n;","        vstack.length = vstack.length - n;","        lstack.length = lstack.length - n;","    }","    function lex() {","        var token;","        token = self.lexer.lex() || 1;","        if (typeof token !== \"number\") {","            token = self.symbols_[token] || token;","        }","        return token;","    }","    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;","    while (true) {","        state = stack[stack.length - 1];","        if (this.defaultActions[state]) {","            action = this.defaultActions[state];","        } else {","            if (symbol === null || typeof symbol == \"undefined\") {","                symbol = lex();","            }","            action = table[state] && table[state][symbol];","        }","        if (typeof action === \"undefined\" || !action.length || !action[0]) {","            var errStr = \"\";","            if (!recovering) {","                expected = [];","                for (p in table[state])","                    if (this.terminals_[p] && p > 2) {","                        expected.push(\"'\" + this.terminals_[p] + \"'\");","                    }","                if (this.lexer.showPosition) {","                    errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";","                } else {","                    errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");","                }","                this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});","            }","        }","        if (action[0] instanceof Array && action.length > 1) {","            throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);","        }","        switch (action[0]) {","        case 1:","            stack.push(symbol);","            vstack.push(this.lexer.yytext);","            lstack.push(this.lexer.yylloc);","            stack.push(action[1]);","            symbol = null;","            if (!preErrorSymbol) {","                yyleng = this.lexer.yyleng;","                yytext = this.lexer.yytext;","                yylineno = this.lexer.yylineno;","                yyloc = this.lexer.yylloc;","                if (recovering > 0)","                    recovering--;","            } else {","                symbol = preErrorSymbol;","                preErrorSymbol = null;","            }","            break;","        case 2:","            len = this.productions_[action[1]][1];","            yyval.$ = vstack[vstack.length - len];","            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};","            if (ranges) {","                yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];","            }","            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);","            if (typeof r !== \"undefined\") {","                return r;","            }","            if (len) {","                stack = stack.slice(0, -1 * len * 2);","                vstack = vstack.slice(0, -1 * len);","                lstack = lstack.slice(0, -1 * len);","            }","            stack.push(this.productions_[action[1]][0]);","            vstack.push(yyval.$);","            lstack.push(yyval._$);","            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];","            stack.push(newState);","            break;","        case 3:","            return true;","        }","    }","    return true;","}","};","/* Jison generated lexer */","var lexer = (function(){","var lexer = ({EOF:1,","parseError:function parseError(str, hash) {","        if (this.yy.parser) {","            this.yy.parser.parseError(str, hash);","        } else {","            throw new Error(str);","        }","    },","setInput:function (input) {","        this._input = input;","        this._more = this._less = this.done = false;","        this.yylineno = this.yyleng = 0;","        this.yytext = this.matched = this.match = '';","        this.conditionStack = ['INITIAL'];","        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};","        if (this.options.ranges) this.yylloc.range = [0,0];","        this.offset = 0;","        return this;","    },","input:function () {","        var ch = this._input[0];","        this.yytext += ch;","        this.yyleng++;","        this.offset++;","        this.match += ch;","        this.matched += ch;","        var lines = ch.match(/(?:\\r\\n?|\\n).*/g);","        if (lines) {","            this.yylineno++;","            this.yylloc.last_line++;","        } else {","            this.yylloc.last_column++;","        }","        if (this.options.ranges) this.yylloc.range[1]++;","","        this._input = this._input.slice(1);","        return ch;","    },","unput:function (ch) {","        var len = ch.length;","        var lines = ch.split(/(?:\\r\\n?|\\n)/g);","","        this._input = ch + this._input;","        this.yytext = this.yytext.substr(0, this.yytext.length-len-1);","        //this.yyleng -= len;","        this.offset -= len;","        var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);","        this.match = this.match.substr(0, this.match.length-1);","        this.matched = this.matched.substr(0, this.matched.length-1);","","        if (lines.length-1) this.yylineno -= lines.length-1;","        var r = this.yylloc.range;","","        this.yylloc = {first_line: this.yylloc.first_line,","          last_line: this.yylineno+1,","          first_column: this.yylloc.first_column,","          last_column: lines ?","              (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:","              this.yylloc.first_column - len","          };","","        if (this.options.ranges) {","            this.yylloc.range = [r[0], r[0] + this.yyleng - len];","        }","        return this;","    },","more:function () {","        this._more = true;","        return this;","    },","less:function (n) {","        this.unput(this.match.slice(n));","    },","pastInput:function () {","        var past = this.matched.substr(0, this.matched.length - this.match.length);","        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");","    },","upcomingInput:function () {","        var next = this.match;","        if (next.length < 20) {","            next += this._input.substr(0, 20-next.length);","        }","        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");","    },","showPosition:function () {","        var pre = this.pastInput();","        var c = new Array(pre.length + 1).join(\"-\");","        return pre + this.upcomingInput() + \"\\n\" + c+\"^\";","    },","next:function () {","        if (this.done) {","            return this.EOF;","        }","        if (!this._input) this.done = true;","","        var token,","            match,","            tempMatch,","            index,","            col,","            lines;","        if (!this._more) {","            this.yytext = '';","            this.match = '';","        }","        var rules = this._currentRules();","        for (var i=0;i < rules.length; i++) {","            tempMatch = this._input.match(this.rules[rules[i]]);","            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {","                match = tempMatch;","                index = i;","                if (!this.options.flex) break;","            }","        }","        if (match) {","            lines = match[0].match(/(?:\\r\\n?|\\n).*/g);","            if (lines) this.yylineno += lines.length;","            this.yylloc = {first_line: this.yylloc.last_line,","                           last_line: this.yylineno+1,","                           first_column: this.yylloc.last_column,","                           last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};","            this.yytext += match[0];","            this.match += match[0];","            this.matches = match;","            this.yyleng = this.yytext.length;","            if (this.options.ranges) {","                this.yylloc.range = [this.offset, this.offset += this.yyleng];","            }","            this._more = false;","            this._input = this._input.slice(match[0].length);","            this.matched += match[0];","            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);","            if (this.done && this._input) this.done = false;","            if (token) return token;","            else return;","        }","        if (this._input === \"\") {","            return this.EOF;","        } else {","            return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),","                    {text: \"\", token: null, line: this.yylineno});","        }","    },","lex:function lex() {","        var r = this.next();","        if (typeof r !== 'undefined') {","            return r;","        } else {","            return this.lex();","        }","    },","begin:function begin(condition) {","        this.conditionStack.push(condition);","    },","popState:function popState() {","        return this.conditionStack.pop();","    },","_currentRules:function _currentRules() {","        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;","    },","topState:function () {","        return this.conditionStack[this.conditionStack.length-2];","    },","pushState:function begin(condition) {","        this.begin(condition);","    }});","lexer.options = {};","lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {","","var YYSTATE=YY_START","switch($avoiding_name_collisions) {","case 0:","                                   if(yy_.yytext.slice(-1) !== \"\\\\\") this.begin(\"mu\");","                                   if(yy_.yytext.slice(-1) === \"\\\\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin(\"emu\");","                                   if(yy_.yytext) return 14;","                                 ","break;","case 1: return 14; ","break;","case 2:","                                   if(yy_.yytext.slice(-1) !== \"\\\\\") this.popState();","                                   if(yy_.yytext.slice(-1) === \"\\\\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1);","                                   return 14;","                                 ","break;","case 3: yy_.yytext = yy_.yytext.substr(0, yy_.yyleng-4); this.popState(); return 15; ","break;","case 4: return 24; ","break;","case 5: return 16; ","break;","case 6: return 20; ","break;","case 7: return 19; ","break;","case 8: return 19; ","break;","case 9: return 23; ","break;","case 10: return 23; ","break;","case 11: this.popState(); this.begin('com'); ","break;","case 12: yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15; ","break;","case 13: return 22; ","break;","case 14: return 35; ","break;","case 15: return 34; ","break;","case 16: return 34; ","break;","case 17: return 37; ","break;","case 18: /*ignore whitespace*/ ","break;","case 19: this.popState(); return 18; ","break;","case 20: this.popState(); return 18; ","break;","case 21: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\\\\"/g,'\"'); return 29; ","break;","case 22: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\\\'/g,\"'\"); return 29; ","break;","case 23: yy_.yytext = yy_.yytext.substr(1); return 27; ","break;","case 24: return 31; ","break;","case 25: return 31; ","break;","case 26: return 30; ","break;","case 27: return 34; ","break;","case 28: yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 34; ","break;","case 29: return 'INVALID'; ","break;","case 30: return 5; ","break;","}","};","lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|$)))/,/^(?:[\\s\\S]*?--\\}\\})/,/^(?:\\{\\{>)/,/^(?:\\{\\{#)/,/^(?:\\{\\{\\/)/,/^(?:\\{\\{\\^)/,/^(?:\\{\\{\\s*else\\b)/,/^(?:\\{\\{\\{)/,/^(?:\\{\\{&)/,/^(?:\\{\\{!--)/,/^(?:\\{\\{![\\s\\S]*?\\}\\})/,/^(?:\\{\\{)/,/^(?:=)/,/^(?:\\.(?=[} ]))/,/^(?:\\.\\.)/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}\\}\\})/,/^(?:\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@[a-zA-Z]+)/,/^(?:true(?=[}\\s]))/,/^(?:false(?=[}\\s]))/,/^(?:[0-9]+(?=[}\\s]))/,/^(?:[a-zA-Z0-9_$-]+(?=[=}\\s\\/.]))/,/^(?:\\[[^\\]]*\\])/,/^(?:.)/,/^(?:$)/];","lexer.conditions = {\"mu\":{\"rules\":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[3],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,30],\"inclusive\":true}};","return lexer;})()","parser.lexer = lexer;","function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;","return new Parser;","})();","if (typeof require !== 'undefined' && typeof exports !== 'undefined') {","exports.parser = handlebars;","exports.Parser = handlebars.Parser;","exports.parse = function () { return handlebars.parse.apply(handlebars, arguments); }","exports.main = function commonjsMain(args) {","    if (!args[1])","        throw new Error('Usage: '+args[0]+' FILE');","    var source, cwd;","    if (typeof process !== 'undefined') {","        source = require('fs').readFileSync(require('path').resolve(args[1]), \"utf8\");","    } else {","        source = require(\"file\").path(require(\"file\").cwd()).join(args[1]).read({charset: \"utf-8\"});","    }","    return exports.parser.parse(source);","}","if (typeof module !== 'undefined' && require.main === module) {","  exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require(\"system\").args);","}","};","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","// BEGIN(BROWSER)","Handlebars.Parser = handlebars;","","Handlebars.parse = function(string) {","  Handlebars.Parser.yy = Handlebars.AST;","  return Handlebars.Parser.parse(string);","};","","Handlebars.print = function(ast) {","  return new Handlebars.PrintVisitor().accept(ast);","};","","Handlebars.logger = {","  DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, level: 3,","","  // override in the host environment","  log: function(level, str) {}","};","","Handlebars.log = function(level, str) { Handlebars.logger.log(level, str); };","","// END(BROWSER)","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","// BEGIN(BROWSER)","(function() {","","  Handlebars.AST = {};","","  Handlebars.AST.ProgramNode = function(statements, inverse) {","    this.type = \"program\";","    this.statements = statements;","    if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }","  };","","  Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {","    this.type = \"mustache\";","    this.escaped = !unescaped;","    this.hash = hash;","","    var id = this.id = rawParams[0];","    var params = this.params = rawParams.slice(1);","","    // a mustache is an eligible helper if:","    // * its id is simple (a single part, not `this` or `..`)","    var eligibleHelper = this.eligibleHelper = id.isSimple;","","    // a mustache is definitely a helper if:","    // * it is an eligible helper, and","    // * it has at least one parameter or hash segment","    this.isHelper = eligibleHelper && (params.length || hash);","","    // if a mustache is an eligible helper but not a definite","    // helper, it is ambiguous, and will be resolved in a later","    // pass or at runtime.","  };","","  Handlebars.AST.PartialNode = function(id, context) {","    this.type    = \"partial\";","","    // TODO: disallow complex IDs","","    this.id      = id;","    this.context = context;","  };","","  var verifyMatch = function(open, close) {","    if(open.original !== close.original) {","      throw new Handlebars.Exception(open.original + \" doesn't match \" + close.original);","    }","  };","","  Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {","    verifyMatch(mustache.id, close);","    this.type = \"block\";","    this.mustache = mustache;","    this.program  = program;","    this.inverse  = inverse;","","    if (this.inverse && !this.program) {","      this.isInverse = true;","    }","  };","","  Handlebars.AST.ContentNode = function(string) {","    this.type = \"content\";","    this.string = string;","  };","","  Handlebars.AST.HashNode = function(pairs) {","    this.type = \"hash\";","    this.pairs = pairs;","  };","","  Handlebars.AST.IdNode = function(parts) {","    this.type = \"ID\";","    this.original = parts.join(\".\");","","    var dig = [], depth = 0;","","    for(var i=0,l=parts.length; i<l; i++) {","      var part = parts[i];","","      if(part === \"..\") { depth++; }","      else if(part === \".\" || part === \"this\") { this.isScoped = true; }","      else { dig.push(part); }","    }","","    this.parts    = dig;","    this.string   = dig.join('.');","    this.depth    = depth;","","    // an ID is simple if it only has one part, and that part is not","    // `..` or `this`.","    this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;","  };","","  Handlebars.AST.DataNode = function(id) {","    this.type = \"DATA\";","    this.id = id;","  };","","  Handlebars.AST.StringNode = function(string) {","    this.type = \"STRING\";","    this.string = string;","  };","","  Handlebars.AST.IntegerNode = function(integer) {","    this.type = \"INTEGER\";","    this.integer = integer;","  };","","  Handlebars.AST.BooleanNode = function(bool) {","    this.type = \"BOOLEAN\";","    this.bool = bool;","  };","","  Handlebars.AST.CommentNode = function(comment) {","    this.type = \"comment\";","    this.comment = comment;","  };","","})();","// END(BROWSER)","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","// BEGIN(BROWSER)","","/*jshint eqnull:true*/","Handlebars.Compiler = function() {};","Handlebars.JavaScriptCompiler = function() {};","","(function(Compiler, JavaScriptCompiler) {","  // the foundHelper register will disambiguate helper lookup from finding a","  // function in a context. This is necessary for mustache compatibility, which","  // requires that context functions in blocks are evaluated by blockHelperMissing,","  // and then proceed as if the resulting value was provided to blockHelperMissing.","","  Compiler.prototype = {","    compiler: Compiler,","","    disassemble: function() {","      var opcodes = this.opcodes, opcode, out = [], params, param;","","      for (var i=0, l=opcodes.length; i<l; i++) {","        opcode = opcodes[i];","","        if (opcode.opcode === 'DECLARE') {","          out.push(\"DECLARE \" + opcode.name + \"=\" + opcode.value);","        } else {","          params = [];","          for (var j=0; j<opcode.args.length; j++) {","            param = opcode.args[j];","            if (typeof param === \"string\") {","              param = \"\\\"\" + param.replace(\"\\n\", \"\\\\n\") + \"\\\"\";","            }","            params.push(param);","          }","          out.push(opcode.opcode + \" \" + params.join(\" \"));","        }","      }","","      return out.join(\"\\n\");","    },","","    guid: 0,","","    compile: function(program, options) {","      this.children = [];","      this.depths = {list: []};","      this.options = options;","","      // These changes will propagate to the other compiler components","      var knownHelpers = this.options.knownHelpers;","      this.options.knownHelpers = {","        'helperMissing': true,","        'blockHelperMissing': true,","        'each': true,","        'if': true,","        'unless': true,","        'with': true,","        'log': true","      };","      if (knownHelpers) {","        for (var name in knownHelpers) {","          this.options.knownHelpers[name] = knownHelpers[name];","        }","      }","","      return this.program(program);","    },","","    accept: function(node) {","      return this[node.type](node);","    },","","    program: function(program) {","      var statements = program.statements, statement;","      this.opcodes = [];","","      for(var i=0, l=statements.length; i<l; i++) {","        statement = statements[i];","        this[statement.type](statement);","      }","      this.isSimple = l === 1;","","      this.depths.list = this.depths.list.sort(function(a, b) {","        return a - b;","      });","","      return this;","    },","","    compileProgram: function(program) {","      var result = new this.compiler().compile(program, this.options);","      var guid = this.guid++, depth;","","      this.usePartial = this.usePartial || result.usePartial;","","      this.children[guid] = result;","","      for(var i=0, l=result.depths.list.length; i<l; i++) {","        depth = result.depths.list[i];","","        if(depth < 2) { continue; }","        else { this.addDepth(depth - 1); }","      }","","      return guid;","    },","","    block: function(block) {","      var mustache = block.mustache,","          program = block.program,","          inverse = block.inverse;","","      if (program) {","        program = this.compileProgram(program);","      }","","      if (inverse) {","        inverse = this.compileProgram(inverse);","      }","","      var type = this.classifyMustache(mustache);","","      if (type === \"helper\") {","        this.helperMustache(mustache, program, inverse);","      } else if (type === \"simple\") {","        this.simpleMustache(mustache);","","        // now that the simple mustache is resolved, we need to","        // evaluate it by executing `blockHelperMissing`","        this.opcode('pushProgram', program);","        this.opcode('pushProgram', inverse);","        this.opcode('pushLiteral', '{}');","        this.opcode('blockValue');","      } else {","        this.ambiguousMustache(mustache, program, inverse);","","        // now that the simple mustache is resolved, we need to","        // evaluate it by executing `blockHelperMissing`","        this.opcode('pushProgram', program);","        this.opcode('pushProgram', inverse);","        this.opcode('pushLiteral', '{}');","        this.opcode('ambiguousBlockValue');","      }","","      this.opcode('append');","    },","","    hash: function(hash) {","      var pairs = hash.pairs, pair, val;","","      this.opcode('push', '{}');","","      for(var i=0, l=pairs.length; i<l; i++) {","        pair = pairs[i];","        val  = pair[1];","","        this.accept(val);","        this.opcode('assignToHash', pair[0]);","      }","    },","","    partial: function(partial) {","      var id = partial.id;","      this.usePartial = true;","","      if(partial.context) {","        this.ID(partial.context);","      } else {","        this.opcode('push', 'depth0');","      }","","      this.opcode('invokePartial', id.original);","      this.opcode('append');","    },","","    content: function(content) {","      this.opcode('appendContent', content.string);","    },","","    mustache: function(mustache) {","      var options = this.options;","      var type = this.classifyMustache(mustache);","","      if (type === \"simple\") {","        this.simpleMustache(mustache);","      } else if (type === \"helper\") {","        this.helperMustache(mustache);","      } else {","        this.ambiguousMustache(mustache);","      }","","      if(mustache.escaped && !options.noEscape) {","        this.opcode('appendEscaped');","      } else {","        this.opcode('append');","      }","    },","","    ambiguousMustache: function(mustache, program, inverse) {","      var id = mustache.id, name = id.parts[0];","","      this.opcode('getContext', id.depth);","","      this.opcode('pushProgram', program);","      this.opcode('pushProgram', inverse);","","      this.opcode('invokeAmbiguous', name);","    },","","    simpleMustache: function(mustache, program, inverse) {","      var id = mustache.id;","","      if (id.type === 'DATA') {","        this.DATA(id);","      } else if (id.parts.length) {","        this.ID(id);","      } else {","        // Simplified ID for `this`","        this.addDepth(id.depth);","        this.opcode('getContext', id.depth);","        this.opcode('pushContext');","      }","","      this.opcode('resolvePossibleLambda');","    },","","    helperMustache: function(mustache, program, inverse) {","      var params = this.setupFullMustacheParams(mustache, program, inverse),","          name = mustache.id.parts[0];","","      if (this.options.knownHelpers[name]) {","        this.opcode('invokeKnownHelper', params.length, name);","      } else if (this.knownHelpersOnly) {","        throw new Error(\"You specified knownHelpersOnly, but used the unknown helper \" + name);","      } else {","        this.opcode('invokeHelper', params.length, name);","      }","    },","","    ID: function(id) {","      this.addDepth(id.depth);","      this.opcode('getContext', id.depth);","","      var name = id.parts[0];","      if (!name) {","        this.opcode('pushContext');","      } else {","        this.opcode('lookupOnContext', id.parts[0]);","      }","","      for(var i=1, l=id.parts.length; i<l; i++) {","        this.opcode('lookup', id.parts[i]);","      }","    },","","    DATA: function(data) {","      this.options.data = true;","      this.opcode('lookupData', data.id);","    },","","    STRING: function(string) {","      this.opcode('pushString', string.string);","    },","","    INTEGER: function(integer) {","      this.opcode('pushLiteral', integer.integer);","    },","","    BOOLEAN: function(bool) {","      this.opcode('pushLiteral', bool.bool);","    },","","    comment: function() {},","","    // HELPERS","    opcode: function(name) {","      this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });","    },","","    declare: function(name, value) {","      this.opcodes.push({ opcode: 'DECLARE', name: name, value: value });","    },","","    addDepth: function(depth) {","      if(isNaN(depth)) { throw new Error(\"EWOT\"); }","      if(depth === 0) { return; }","","      if(!this.depths[depth]) {","        this.depths[depth] = true;","        this.depths.list.push(depth);","      }","    },","","    classifyMustache: function(mustache) {","      var isHelper   = mustache.isHelper;","      var isEligible = mustache.eligibleHelper;","      var options    = this.options;","","      // if ambiguous, we can possibly resolve the ambiguity now","      if (isEligible && !isHelper) {","        var name = mustache.id.parts[0];","","        if (options.knownHelpers[name]) {","          isHelper = true;","        } else if (options.knownHelpersOnly) {","          isEligible = false;","        }","      }","","      if (isHelper) { return \"helper\"; }","      else if (isEligible) { return \"ambiguous\"; }","      else { return \"simple\"; }","    },","","    pushParams: function(params) {","      var i = params.length, param;","","      while(i--) {","        param = params[i];","","        if(this.options.stringParams) {","          if(param.depth) {","            this.addDepth(param.depth);","          }","","          this.opcode('getContext', param.depth || 0);","          this.opcode('pushStringParam', param.string);","        } else {","          this[param.type](param);","        }","      }","    },","","    setupMustacheParams: function(mustache) {","      var params = mustache.params;","      this.pushParams(params);","","      if(mustache.hash) {","        this.hash(mustache.hash);","      } else {","        this.opcode('pushLiteral', '{}');","      }","","      return params;","    },","","    // this will replace setupMustacheParams when we're done","    setupFullMustacheParams: function(mustache, program, inverse) {","      var params = mustache.params;","      this.pushParams(params);","","      this.opcode('pushProgram', program);","      this.opcode('pushProgram', inverse);","","      if(mustache.hash) {","        this.hash(mustache.hash);","      } else {","        this.opcode('pushLiteral', '{}');","      }","","      return params;","    }","  };","","  var Literal = function(value) {","    this.value = value;","  };","","  JavaScriptCompiler.prototype = {","    // PUBLIC API: You can override these methods in a subclass to provide","    // alternative compiled forms for name lookup and buffering semantics","    nameLookup: function(parent, name, type) {","      if (/^[0-9]+$/.test(name)) {","        return parent + \"[\" + name + \"]\";","      } else if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {","        return parent + \".\" + name;","      }","      else {","        return parent + \"['\" + name + \"']\";","      }","    },","","    appendToBuffer: function(string) {","      if (this.environment.isSimple) {","        return \"return \" + string + \";\";","      } else {","        return \"buffer += \" + string + \";\";","      }","    },","","    initializeBuffer: function() {","      return this.quotedString(\"\");","    },","","    namespace: \"Handlebars\",","    // END PUBLIC API","","    compile: function(environment, options, context, asObject) {","      this.environment = environment;","      this.options = options || {};","","      Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + \"\\n\\n\");","","      this.name = this.environment.name;","      this.isChild = !!context;","      this.context = context || {","        programs: [],","        aliases: { }","      };","","      this.preamble();","","      this.stackSlot = 0;","      this.stackVars = [];","      this.registers = { list: [] };","      this.compileStack = [];","","      this.compileChildren(environment, options);","","      var opcodes = environment.opcodes, opcode;","","      this.i = 0;","","      for(l=opcodes.length; this.i<l; this.i++) {","        opcode = opcodes[this.i];","","        if(opcode.opcode === 'DECLARE') {","          this[opcode.name] = opcode.value;","        } else {","          this[opcode.opcode].apply(this, opcode.args);","        }","      }","","      return this.createFunctionContext(asObject);","    },","","    nextOpcode: function() {","      var opcodes = this.environment.opcodes, opcode = opcodes[this.i + 1];","      return opcodes[this.i + 1];","    },","","    eat: function(opcode) {","      this.i = this.i + 1;","    },","","    preamble: function() {","      var out = [];","","      if (!this.isChild) {","        var namespace = this.namespace;","        var copies = \"helpers = helpers || \" + namespace + \".helpers;\";","        if (this.environment.usePartial) { copies = copies + \" partials = partials || \" + namespace + \".partials;\"; }","        if (this.options.data) { copies = copies + \" data = data || {};\"; }","        out.push(copies);","      } else {","        out.push('');","      }","","      if (!this.environment.isSimple) {","        out.push(\", buffer = \" + this.initializeBuffer());","      } else {","        out.push(\"\");","      }","","      // track the last context pushed into place to allow skipping the","      // getContext opcode when it would be a noop","      this.lastContext = 0;","      this.source = out;","    },","","    createFunctionContext: function(asObject) {","      var locals = this.stackVars.concat(this.registers.list);","","      if(locals.length > 0) {","        this.source[1] = this.source[1] + \", \" + locals.join(\", \");","      }","","      // Generate minimizer alias mappings","      if (!this.isChild) {","        var aliases = [];","        for (var alias in this.context.aliases) {","          this.source[1] = this.source[1] + ', ' + alias + '=' + this.context.aliases[alias];","        }","      }","","      if (this.source[1]) {","        this.source[1] = \"var \" + this.source[1].substring(2) + \";\";","      }","","      // Merge children","      if (!this.isChild) {","        this.source[1] += '\\n' + this.context.programs.join('\\n') + '\\n';","      }","","      if (!this.environment.isSimple) {","        this.source.push(\"return buffer;\");","      }","","      var params = this.isChild ? [\"depth0\", \"data\"] : [\"Handlebars\", \"depth0\", \"helpers\", \"partials\", \"data\"];","","      for(var i=0, l=this.environment.depths.list.length; i<l; i++) {","        params.push(\"depth\" + this.environment.depths.list[i]);","      }","","      if (asObject) {","        params.push(this.source.join(\"\\n  \"));","","        return Function.apply(this, params);","      } else {","        var functionSource = 'function ' + (this.name || '') + '(' + params.join(',') + ') {\\n  ' + this.source.join(\"\\n  \") + '}';","        Handlebars.log(Handlebars.logger.DEBUG, functionSource + \"\\n\\n\");","        return functionSource;","      }","    },","","    // [blockValue]","    //","    // On stack, before: hash, inverse, program, value","    // On stack, after: return value of blockHelperMissing","    //","    // The purpose of this opcode is to take a block of the form","    // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and","    // replace it on the stack with the result of properly","    // invoking blockHelperMissing.","    blockValue: function() {","      this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';","","      var params = [\"depth0\"];","      this.setupParams(0, params);","","      this.replaceStack(function(current) {","        params.splice(1, 0, current);","        return current + \" = blockHelperMissing.call(\" + params.join(\", \") + \")\";","      });","    },","","    // [ambiguousBlockValue]","    //","    // On stack, before: hash, inverse, program, value","    // Compiler value, before: lastHelper=value of last found helper, if any","    // On stack, after, if no lastHelper: same as [blockValue]","    // On stack, after, if lastHelper: value","    ambiguousBlockValue: function() {","      this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';","","      var params = [\"depth0\"];","      this.setupParams(0, params);","","      var current = this.topStack();","      params.splice(1, 0, current);","","      this.source.push(\"if (!\" + this.lastHelper + \") { \" + current + \" = blockHelperMissing.call(\" + params.join(\", \") + \"); }\");","    },","","    // [appendContent]","    //","    // On stack, before: ...","    // On stack, after: ...","    //","    // Appends the string value of `content` to the current buffer","    appendContent: function(content) {","      this.source.push(this.appendToBuffer(this.quotedString(content)));","    },","","    // [append]","    //","    // On stack, before: value, ...","    // On stack, after: ...","    //","    // Coerces `value` to a String and appends it to the current buffer.","    //","    // If `value` is truthy, or 0, it is coerced into a string and appended","    // Otherwise, the empty string is appended","    append: function() {","      var local = this.popStack();","      this.source.push(\"if(\" + local + \" || \" + local + \" === 0) { \" + this.appendToBuffer(local) + \" }\");","      if (this.environment.isSimple) {","        this.source.push(\"else { \" + this.appendToBuffer(\"''\") + \" }\");","      }","    },","","    // [appendEscaped]","    //","    // On stack, before: value, ...","    // On stack, after: ...","    //","    // Escape `value` and append it to the buffer","    appendEscaped: function() {","      var opcode = this.nextOpcode(), extra = \"\";","      this.context.aliases.escapeExpression = 'this.escapeExpression';","","      if(opcode && opcode.opcode === 'appendContent') {","        extra = \" + \" + this.quotedString(opcode.args[0]);","        this.eat(opcode);","      }","","      this.source.push(this.appendToBuffer(\"escapeExpression(\" + this.popStack() + \")\" + extra));","    },","","    // [getContext]","    //","    // On stack, before: ...","    // On stack, after: ...","    // Compiler value, after: lastContext=depth","    //","    // Set the value of the `lastContext` compiler value to the depth","    getContext: function(depth) {","      if(this.lastContext !== depth) {","        this.lastContext = depth;","      }","    },","","    // [lookupOnContext]","    //","    // On stack, before: ...","    // On stack, after: currentContext[name], ...","    //","    // Looks up the value of `name` on the current context and pushes","    // it onto the stack.","    lookupOnContext: function(name) {","      this.pushStack(this.nameLookup('depth' + this.lastContext, name, 'context'));","    },","","    // [pushContext]","    //","    // On stack, before: ...","    // On stack, after: currentContext, ...","    //","    // Pushes the value of the current context onto the stack.","    pushContext: function() {","      this.pushStackLiteral('depth' + this.lastContext);","    },","","    // [resolvePossibleLambda]","    //","    // On stack, before: value, ...","    // On stack, after: resolved value, ...","    //","    // If the `value` is a lambda, replace it on the stack by","    // the return value of the lambda","    resolvePossibleLambda: function() {","      this.context.aliases.functionType = '\"function\"';","","      this.replaceStack(function(current) {","        return \"typeof \" + current + \" === functionType ? \" + current + \".apply(depth0) : \" + current;","      });","    },","","    // [lookup]","    //","    // On stack, before: value, ...","    // On stack, after: value[name], ...","    //","    // Replace the value on the stack with the result of looking","    // up `name` on `value`","    lookup: function(name) {","      this.replaceStack(function(current) {","        return current + \" == null || \" + current + \" === false ? \" + current + \" : \" + this.nameLookup(current, name, 'context');","      });","    },","","    // [lookupData]","    //","    // On stack, before: ...","    // On stack, after: data[id], ...","    //","    // Push the result of looking up `id` on the current data","    lookupData: function(id) {","      this.pushStack(this.nameLookup('data', id, 'data'));","    },","","    // [pushStringParam]","    //","    // On stack, before: ...","    // On stack, after: string, currentContext, ...","    //","    // This opcode is designed for use in string mode, which","    // provides the string value of a parameter along with its","    // depth rather than resolving it immediately.","    pushStringParam: function(string) {","      this.pushStackLiteral('depth' + this.lastContext);","      this.pushString(string);","    },","","    // [pushString]","    //","    // On stack, before: ...","    // On stack, after: quotedString(string), ...","    //","    // Push a quoted version of `string` onto the stack","    pushString: function(string) {","      this.pushStackLiteral(this.quotedString(string));","    },","","    // [push]","    //","    // On stack, before: ...","    // On stack, after: expr, ...","    //","    // Push an expression onto the stack","    push: function(expr) {","      this.pushStack(expr);","    },","","    // [pushLiteral]","    //","    // On stack, before: ...","    // On stack, after: value, ...","    //","    // Pushes a value onto the stack. This operation prevents","    // the compiler from creating a temporary variable to hold","    // it.","    pushLiteral: function(value) {","      this.pushStackLiteral(value);","    },","","    // [pushProgram]","    //","    // On stack, before: ...","    // On stack, after: program(guid), ...","    //","    // Push a program expression onto the stack. This takes","    // a compile-time guid and converts it into a runtime-accessible","    // expression.","    pushProgram: function(guid) {","      if (guid != null) {","        this.pushStackLiteral(this.programExpression(guid));","      } else {","        this.pushStackLiteral(null);","      }","    },","","    // [invokeHelper]","    //","    // On stack, before: hash, inverse, program, params..., ...","    // On stack, after: result of helper invocation","    //","    // Pops off the helper's parameters, invokes the helper,","    // and pushes the helper's return value onto the stack.","    //","    // If the helper is not found, `helperMissing` is called.","    invokeHelper: function(paramSize, name) {","      this.context.aliases.helperMissing = 'helpers.helperMissing';","","      var helper = this.lastHelper = this.setupHelper(paramSize, name);","      this.register('foundHelper', helper.name);","","      this.pushStack(\"foundHelper ? foundHelper.call(\" +","        helper.callParams + \") \" + \": helperMissing.call(\" +","        helper.helperMissingParams + \")\");","    },","","    // [invokeKnownHelper]","    //","    // On stack, before: hash, inverse, program, params..., ...","    // On stack, after: result of helper invocation","    //","    // This operation is used when the helper is known to exist,","    // so a `helperMissing` fallback is not required.","    invokeKnownHelper: function(paramSize, name) {","      var helper = this.setupHelper(paramSize, name);","      this.pushStack(helper.name + \".call(\" + helper.callParams + \")\");","    },","","    // [invokeAmbiguous]","    //","    // On stack, before: hash, inverse, program, params..., ...","    // On stack, after: result of disambiguation","    //","    // This operation is used when an expression like `{{foo}}`","    // is provided, but we don't know at compile-time whether it","    // is a helper or a path.","    //","    // This operation emits more code than the other options,","    // and can be avoided by passing the `knownHelpers` and","    // `knownHelpersOnly` flags at compile-time.","    invokeAmbiguous: function(name) {","      this.context.aliases.functionType = '\"function\"';","","      this.pushStackLiteral('{}');","      var helper = this.setupHelper(0, name);","","      var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');","      this.register('foundHelper', helperName);","","      var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');","      var nextStack = this.nextStack();","","      this.source.push('if (foundHelper) { ' + nextStack + ' = foundHelper.call(' + helper.callParams + '); }');","      this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '.apply(depth0) : ' + nextStack + '; }');","    },","","    // [invokePartial]","    //","    // On stack, before: context, ...","    // On stack after: result of partial invocation","    //","    // This operation pops off a context, invokes a partial with that context,","    // and pushes the result of the invocation back.","    invokePartial: function(name) {","      var params = [this.nameLookup('partials', name, 'partial'), \"'\" + name + \"'\", this.popStack(), \"helpers\", \"partials\"];","","      if (this.options.data) {","        params.push(\"data\");","      }","","      this.context.aliases.self = \"this\";","      this.pushStack(\"self.invokePartial(\" + params.join(\", \") + \");\");","    },","","    // [assignToHash]","    //","    // On stack, before: value, hash, ...","    // On stack, after: hash, ...","    //","    // Pops a value and hash off the stack, assigns `hash[key] = value`","    // and pushes the hash back onto the stack.","    assignToHash: function(key) {","      var value = this.popStack();","      var hash = this.topStack();","","      this.source.push(hash + \"['\" + key + \"'] = \" + value + \";\");","    },","","    // HELPERS","","    compiler: JavaScriptCompiler,","","    compileChildren: function(environment, options) {","      var children = environment.children, child, compiler;","","      for(var i=0, l=children.length; i<l; i++) {","        child = children[i];","        compiler = new this.compiler();","","        this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children","        var index = this.context.programs.length;","        child.index = index;","        child.name = 'program' + index;","        this.context.programs[index] = compiler.compile(child, options, this.context);","      }","    },","","    programExpression: function(guid) {","      this.context.aliases.self = \"this\";","","      if(guid == null) {","        return \"self.noop\";","      }","","      var child = this.environment.children[guid],","          depths = child.depths.list, depth;","","      var programParams = [child.index, child.name, \"data\"];","","      for(var i=0, l = depths.length; i<l; i++) {","        depth = depths[i];","","        if(depth === 1) { programParams.push(\"depth0\"); }","        else { programParams.push(\"depth\" + (depth - 1)); }","      }","","      if(depths.length === 0) {","        return \"self.program(\" + programParams.join(\", \") + \")\";","      } else {","        programParams.shift();","        return \"self.programWithDepth(\" + programParams.join(\", \") + \")\";","      }","    },","","    register: function(name, val) {","      this.useRegister(name);","      this.source.push(name + \" = \" + val + \";\");","    },","","    useRegister: function(name) {","      if(!this.registers[name]) {","        this.registers[name] = true;","        this.registers.list.push(name);","      }","    },","","    pushStackLiteral: function(item) {","      this.compileStack.push(new Literal(item));","      return item;","    },","","    pushStack: function(item) {","      this.source.push(this.incrStack() + \" = \" + item + \";\");","      this.compileStack.push(\"stack\" + this.stackSlot);","      return \"stack\" + this.stackSlot;","    },","","    replaceStack: function(callback) {","      var item = callback.call(this, this.topStack());","","      this.source.push(this.topStack() + \" = \" + item + \";\");","      return \"stack\" + this.stackSlot;","    },","","    nextStack: function(skipCompileStack) {","      var name = this.incrStack();","      this.compileStack.push(\"stack\" + this.stackSlot);","      return name;","    },","","    incrStack: function() {","      this.stackSlot++;","      if(this.stackSlot > this.stackVars.length) { this.stackVars.push(\"stack\" + this.stackSlot); }","      return \"stack\" + this.stackSlot;","    },","","    popStack: function() {","      var item = this.compileStack.pop();","","      if (item instanceof Literal) {","        return item.value;","      } else {","        this.stackSlot--;","        return item;","      }","    },","","    topStack: function() {","      var item = this.compileStack[this.compileStack.length - 1];","","      if (item instanceof Literal) {","        return item.value;","      } else {","        return item;","      }","    },","","    quotedString: function(str) {","      return '\"' + str","        .replace(/\\\\/g, '\\\\\\\\')","        .replace(/\"/g, '\\\\\"')","        .replace(/\\n/g, '\\\\n')","        .replace(/\\r/g, '\\\\r') + '\"';","    },","","    setupHelper: function(paramSize, name) {","      var params = [];","      this.setupParams(paramSize, params);","      var foundHelper = this.nameLookup('helpers', name, 'helper');","","      return {","        params: params,","        name: foundHelper,","        callParams: [\"depth0\"].concat(params).join(\", \"),","        helperMissingParams: [\"depth0\", this.quotedString(name)].concat(params).join(\", \")","      };","    },","","    // the params and contexts arguments are passed in arrays","    // to fill in","    setupParams: function(paramSize, params) {","      var options = [], contexts = [], param, inverse, program;","","      options.push(\"hash:\" + this.popStack());","","      inverse = this.popStack();","      program = this.popStack();","","      // Avoid setting fn and inverse if neither are set. This allows","      // helpers to do a check for `if (options.fn)`","      if (program || inverse) {","        if (!program) {","          this.context.aliases.self = \"this\";","          program = \"self.noop\";","        }","","        if (!inverse) {","         this.context.aliases.self = \"this\";","          inverse = \"self.noop\";","        }","","        options.push(\"inverse:\" + inverse);","        options.push(\"fn:\" + program);","      }","","      for(var i=0; i<paramSize; i++) {","        param = this.popStack();","        params.push(param);","","        if(this.options.stringParams) {","          contexts.push(this.popStack());","        }","      }","","      if (this.options.stringParams) {","        options.push(\"contexts:[\" + contexts.join(\",\") + \"]\");","      }","","      if(this.options.data) {","        options.push(\"data:data\");","      }","","      params.push(\"{\" + options.join(\",\") + \"}\");","      return params.join(\", \");","    }","  };","","  var reservedWords = (","    \"break else new var\" +","    \" case finally return void\" +","    \" catch for switch while\" +","    \" continue function this with\" +","    \" default if throw\" +","    \" delete in try\" +","    \" do instanceof typeof\" +","    \" abstract enum int short\" +","    \" boolean export interface static\" +","    \" byte extends long super\" +","    \" char final native synchronized\" +","    \" class float package throws\" +","    \" const goto private transient\" +","    \" debugger implements protected volatile\" +","    \" double import public let yield\"","  ).split(\" \");","","  var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};","","  for(var i=0, l=reservedWords.length; i<l; i++) {","    compilerWords[reservedWords[i]] = true;","  }","","  JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {","    if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(name)) {","      return true;","    }","    return false;","  };","","})(Handlebars.Compiler, Handlebars.JavaScriptCompiler);","","Handlebars.precompile = function(string, options) {","  options = options || {};","","  var ast = Handlebars.parse(string);","  var environment = new Handlebars.Compiler().compile(ast, options);","  return new Handlebars.JavaScriptCompiler().compile(environment, options);","};","","Handlebars.compile = function(string, options) {","  options = options || {};","","  var compiled;","  function compile() {","    var ast = Handlebars.parse(string);","    var environment = new Handlebars.Compiler().compile(ast, options);","    var templateSpec = new Handlebars.JavaScriptCompiler().compile(environment, options, undefined, true);","    return Handlebars.template(templateSpec);","  }","","  // Template is only compiled on first use and cached after that point.","  return function(context, options) {","    if (!compiled) {","      compiled = compile();","    }","    return compiled.call(this, context, options);","  };","};","","// END(BROWSER)","// This file contains YUI-specific wrapper code and overrides for the","// handlebars-compiler module.","","/**","Handlebars parser and compiler. Use this module when you need to compile","Handlebars templates.","","@module handlebars","@submodule handlebars-compiler","*/","","var levels = ['debug', 'info', 'warn', 'error'];","","/**","Logs a debugging message. Note that messages will only be logged when the","handlebars module is loaded in \"debug\" mode.","","@method log","@param {String} level Log level for this message. Supported levels are \"debug\",","    \"info\", \"warn\", and \"error\".","@param {String} message Message to log.","@for Handlebars","*/","Handlebars.logger.log = function (level, message) {","","};","","/**","Compiles and renders a Handlebars template string in a single step.","","If you'll be using a template more than once, it's more efficient to compile it","into a function once using `compile()`, and then render it whenever you need to","by simply executing the compiled function. However, if you only need to compile","and render a template once, `render()` is a handy shortcut for doing both in a","single step.","","@example","","    Y.Handlebars.render('The pie of the day is {{pie}}!', {","        pie: 'Maple Custard'","    });","    // => \"The pie of the day is Maple Custard!\"","","@method render","@param {String} string Handlebars template string to render.","@param {Object} context Context object to pass to the template.","@param {Object} [options] Compile/render options.","    @param {Object} [options.helpers] Helper functions.","    @param {Object} [options.partials] Partials.","    @param {Object} [options.data] Data.","@return {String} Rendered template string.","*/","Handlebars.render = function (string, context, options) {","    return Handlebars.compile(string)(context, options);","};","","// The rest of this file is just API docs for methods defined in Handlebars","// itself.","","/**","Compiles a Handlebars template string into a function. To render the template,","call the function and pass in a context object.","","@example","","    var template = Y.Handlebars.compile('The pie of the day is {{pie}}!.');","    template({pie: 'Pecan'});","    // => \"The pie of the day is Pecan!\"","","@method compile","@param {String} string Handlebars template string to compile.","@param {Object} [options] Compiler options.","@return {Function} Compiled template function.","*/","","/**","Precompiles a Handlebars template string into a string of JavaScript code. This","can be used to precompile a template at build time or on the server, and the","resulting template can then be rendered at runtime or on the client without","needing to go through a compile step.","","To render a precompiled template, evaluate the code and then pass the resulting","function to `Y.Handlebars.template()` to get back an executable template","function.","","@method precompile","@param {String} string Handlebars template string to compile.","@param {Object} [options] Compiler options.","@return {String} Precompiled template code.","*/","","","}, '3.9.1', {\"requires\": [\"handlebars-base\"]});"];
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].lines = {"1":0,"13":0,"17":0,"18":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"118":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"138":0,"139":0,"140":0,"141":0,"142":0,"144":0,"146":0,"147":0,"148":0,"149":0,"150":0,"152":0,"153":0,"155":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"165":0,"166":0,"168":0,"170":0,"173":0,"174":0,"176":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"191":0,"192":0,"194":0,"196":0,"197":0,"198":0,"199":0,"200":0,"202":0,"203":0,"204":0,"206":0,"207":0,"208":0,"209":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"218":0,"221":0,"225":0,"226":0,"228":0,"229":0,"231":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"257":0,"259":0,"261":0,"262":0,"265":0,"266":0,"268":0,"269":0,"271":0,"272":0,"273":0,"274":0,"276":0,"277":0,"279":0,"287":0,"288":0,"290":0,"293":0,"294":0,"297":0,"300":0,"301":0,"304":0,"305":0,"306":0,"308":0,"311":0,"312":0,"313":0,"316":0,"317":0,"319":0,"321":0,"327":0,"328":0,"329":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"340":0,"341":0,"342":0,"343":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"362":0,"363":0,"365":0,"370":0,"371":0,"372":0,"374":0,"378":0,"381":0,"384":0,"387":0,"390":0,"392":0,"393":0,"395":0,"396":0,"398":0,"399":0,"400":0,"402":0,"403":0,"404":0,"406":0,"407":0,"408":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"487":0,"489":0,"491":0,"492":0,"494":0,"498":0,"500":0,"501":0,"502":0,"505":0,"506":0,"509":0,"516":0,"522":0,"524":0,"526":0,"527":0,"528":0,"529":0,"532":0,"533":0,"534":0,"535":0,"537":0,"538":0,"542":0,"547":0,"554":0,"555":0,"559":0,"560":0,"563":0,"564":0,"565":0,"569":0,"570":0,"571":0,"572":0,"573":0,"574":0,"576":0,"577":0,"581":0,"582":0,"583":0,"586":0,"587":0,"588":0,"591":0,"592":0,"593":0,"595":0,"597":0,"598":0,"600":0,"601":0,"605":0,"606":0,"607":0,"611":0,"614":0,"615":0,"616":0,"619":0,"620":0,"621":0,"624":0,"625":0,"626":0,"629":0,"630":0,"631":0,"634":0,"635":0,"636":0,"646":0,"647":0,"649":0,"655":0,"659":0,"661":0,"662":0,"664":0,"665":0,"667":0,"668":0,"669":0,"670":0,"671":0,"673":0,"675":0,"679":0,"685":0,"686":0,"687":0,"690":0,"691":0,"700":0,"701":0,"702":0,"706":0,"710":0,"714":0,"715":0,"717":0,"718":0,"719":0,"721":0,"723":0,"724":0,"727":0,"731":0,"732":0,"734":0,"736":0,"738":0,"739":0,"741":0,"745":0,"749":0,"753":0,"754":0,"757":0,"758":0,"761":0,"763":0,"764":0,"765":0,"766":0,"770":0,"771":0,"772":0,"773":0,"775":0,"779":0,"780":0,"781":0,"782":0,"785":0,"789":0,"791":0,"793":0,"794":0,"795":0,"797":0,"798":0,"803":0,"804":0,"806":0,"807":0,"809":0,"812":0,"813":0,"817":0,"821":0,"822":0,"824":0,"825":0,"826":0,"827":0,"829":0,"832":0,"833":0,"835":0,"840":0,"842":0,"844":0,"845":0,"847":0,"851":0,"853":0,"854":0,"855":0,"856":0,"859":0,"860":0,"861":0,"864":0,"868":0,"871":0,"872":0,"873":0,"874":0,"876":0,"881":0,"882":0,"884":0,"885":0,"886":0,"888":0,"891":0,"892":0,"897":0,"898":0,"902":0,"906":0,"910":0,"917":0,"921":0,"925":0,"926":0,"928":0,"929":0,"930":0,"935":0,"936":0,"937":0,"940":0,"941":0,"943":0,"944":0,"945":0,"946":0,"950":0,"951":0,"956":0,"958":0,"959":0,"961":0,"962":0,"963":0,"966":0,"967":0,"969":0,"975":0,"976":0,"978":0,"979":0,"981":0,"984":0,"989":0,"990":0,"992":0,"993":0,"995":0,"996":0,"998":0,"1001":0,"1005":0,"1006":0,"1009":0,"1013":0,"1014":0,"1015":0,"1016":0,"1019":0,"1024":0,"1025":0,"1027":0,"1032":0,"1039":0,"1040":0,"1042":0,"1044":0,"1045":0,"1046":0,"1051":0,"1053":0,"1054":0,"1055":0,"1056":0,"1058":0,"1060":0,"1062":0,"1064":0,"1065":0,"1067":0,"1068":0,"1070":0,"1074":0,"1078":0,"1079":0,"1083":0,"1087":0,"1089":0,"1090":0,"1091":0,"1092":0,"1093":0,"1094":0,"1096":0,"1099":0,"1100":0,"1102":0,"1107":0,"1108":0,"1112":0,"1114":0,"1115":0,"1119":0,"1120":0,"1121":0,"1122":0,"1126":0,"1127":0,"1131":0,"1132":0,"1135":0,"1136":0,"1139":0,"1141":0,"1142":0,"1145":0,"1146":0,"1148":0,"1150":0,"1151":0,"1152":0,"1166":0,"1168":0,"1169":0,"1171":0,"1172":0,"1173":0,"1184":0,"1186":0,"1187":0,"1189":0,"1190":0,"1192":0,"1202":0,"1215":0,"1216":0,"1217":0,"1218":0,"1229":0,"1230":0,"1232":0,"1233":0,"1234":0,"1237":0,"1248":0,"1249":0,"1261":0,"1271":0,"1282":0,"1284":0,"1285":0,"1297":0,"1298":0,"1309":0,"1321":0,"1322":0,"1332":0,"1342":0,"1354":0,"1366":0,"1367":0,"1369":0,"1383":0,"1385":0,"1386":0,"1388":0,"1401":0,"1402":0,"1418":0,"1420":0,"1421":0,"1423":0,"1424":0,"1426":0,"1427":0,"1429":0,"1430":0,"1441":0,"1443":0,"1444":0,"1447":0,"1448":0,"1459":0,"1460":0,"1462":0,"1470":0,"1472":0,"1473":0,"1474":0,"1476":0,"1477":0,"1478":0,"1479":0,"1480":0,"1485":0,"1487":0,"1488":0,"1491":0,"1494":0,"1496":0,"1497":0,"1499":0,"1503":0,"1504":0,"1506":0,"1507":0,"1512":0,"1513":0,"1517":0,"1518":0,"1519":0,"1524":0,"1525":0,"1529":0,"1530":0,"1531":0,"1535":0,"1537":0,"1538":0,"1542":0,"1543":0,"1544":0,"1548":0,"1549":0,"1550":0,"1554":0,"1556":0,"1557":0,"1559":0,"1560":0,"1565":0,"1567":0,"1568":0,"1570":0,"1575":0,"1583":0,"1584":0,"1585":0,"1587":0,"1598":0,"1600":0,"1602":0,"1603":0,"1607":0,"1608":0,"1609":0,"1610":0,"1613":0,"1614":0,"1615":0,"1618":0,"1619":0,"1622":0,"1623":0,"1624":0,"1626":0,"1627":0,"1631":0,"1632":0,"1635":0,"1636":0,"1639":0,"1640":0,"1644":0,"1662":0,"1664":0,"1665":0,"1668":0,"1669":0,"1670":0,"1672":0,"1677":0,"1678":0,"1680":0,"1681":0,"1682":0,"1685":0,"1686":0,"1688":0,"1689":0,"1690":0,"1691":0,"1692":0,"1693":0,"1697":0,"1698":0,"1699":0,"1701":0,"1717":0,"1729":0,"1758":0,"1759":0};
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].functions = {"anonymous:23":0,"parseError:117":0,"popStack:133":0,"lex:138":0,"parse:120":0,"parseError:227":0,"setInput:234":0,"input:245":0,"unput:264":0,"more:292":0,"less:296":0,"pastInput:299":0,"upcomingInput:303":0,"showPosition:310":0,"next:315":0,"lex:369":0,"begin:377":0,"popState:380":0,"_currentRules:383":0,"topState:386":0,"begin:389":0,"anonymous:393":0,"(anonymous 3):225":0,"Parser:473":0,"(anonymous 2):17":0,"parse:479":0,"commonjsMain:480":0,"parse:500":0,"print:505":0,"log:516":0,"ProgramNode:526":0,"MustacheNode:532":0,"PartialNode:554":0,"verifyMatch:563":0,"BlockNode:569":0,"ContentNode:581":0,"HashNode:586":0,"IdNode:591":0,"DataNode:614":0,"StringNode:619":0,"IntegerNode:624":0,"BooleanNode:629":0,"CommentNode:634":0,"(anonymous 4):522":0,"disassemble:658":0,"compile:684":0,"accept:709":0,"(anonymous 6):723":0,"program:713":0,"compileProgram:730":0,"block:748":0,"hash:788":0,"partial:802":0,"content:816":0,"mustache:820":0,"ambiguousMustache:839":0,"simpleMustache:850":0,"helperMustache:867":0,"ID:880":0,"DATA:896":0,"STRING:901":0,"INTEGER:905":0,"BOOLEAN:909":0,"opcode:916":0,"declare:920":0,"addDepth:924":0,"classifyMustache:934":0,"pushParams:955":0,"setupMustacheParams:974":0,"setupFullMustacheParams:988":0,"Literal:1005":0,"nameLookup:1012":0,"appendToBuffer:1023":0,"initializeBuffer:1031":0,"compile:1038":0,"nextOpcode:1077":0,"eat:1082":0,"preamble:1086":0,"createFunctionContext:1111":0,"(anonymous 7):1171":0,"blockValue:1165":0,"ambiguousBlockValue:1183":0,"appendContent:1201":0,"append:1214":0,"appendEscaped:1228":0,"getContext:1247":0,"lookupOnContext:1260":0,"pushContext:1270":0,"(anonymous 8):1284":0,"resolvePossibleLambda:1281":0,"(anonymous 9):1297":0,"lookup:1296":0,"lookupData:1308":0,"pushStringParam:1320":0,"pushString:1331":0,"push:1341":0,"pushLiteral:1353":0,"pushProgram:1365":0,"invokeHelper:1382":0,"invokeKnownHelper:1400":0,"invokeAmbiguous:1417":0,"invokePartial:1440":0,"assignToHash:1458":0,"compileChildren:1469":0,"programExpression:1484":0,"register:1511":0,"useRegister:1516":0,"pushStackLiteral:1523":0,"pushStack:1528":0,"replaceStack:1534":0,"nextStack:1541":0,"incrStack:1547":0,"popStack:1553":0,"topStack:1564":0,"quotedString:1574":0,"setupHelper:1582":0,"setupParams:1597":0,"isValidJavaScriptVariableName:1668":0,"(anonymous 5):649":0,"precompile:1677":0,"compile:1689":0,"(anonymous 10):1697":0,"compile:1685":0,"render:1758":0,"(anonymous 1):1":0};
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].coveredLines = 832;
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].coveredFunctions = 125;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1);
YUI.add('handlebars-compiler', function (Y, NAME) {

/*!
Handlebars.js - Copyright (C) 2011 Yehuda Katz
https://raw.github.com/wycats/handlebars.js/master/LICENSE
*/
// This file contains code that will be inserted at the beginning of the
// handlebars-compiler module.

// This is necessary because the Y.Handlebars object is created in the
// handlebars-base module, but the native Handlebars code expects to use a local
// Handlebars reference.
_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 1)", 1);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 13);
var Handlebars = Y.Handlebars;
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

/* Jison generated parser */
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 17);
var handlebars = (function(){
_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 2)", 17);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 18);
var parser = {trace: function trace() { },
yy: {},
symbols_: {"error":2,"root":3,"program":4,"EOF":5,"statements":6,"simpleInverse":7,"statement":8,"openInverse":9,"closeBlock":10,"openBlock":11,"mustache":12,"partial":13,"CONTENT":14,"COMMENT":15,"OPEN_BLOCK":16,"inMustache":17,"CLOSE":18,"OPEN_INVERSE":19,"OPEN_ENDBLOCK":20,"path":21,"OPEN":22,"OPEN_UNESCAPED":23,"OPEN_PARTIAL":24,"params":25,"hash":26,"DATA":27,"param":28,"STRING":29,"INTEGER":30,"BOOLEAN":31,"hashSegments":32,"hashSegment":33,"ID":34,"EQUALS":35,"pathSegments":36,"SEP":37,"$accept":0,"$end":1},
terminals_: {2:"error",5:"EOF",14:"CONTENT",15:"COMMENT",16:"OPEN_BLOCK",18:"CLOSE",19:"OPEN_INVERSE",20:"OPEN_ENDBLOCK",22:"OPEN",23:"OPEN_UNESCAPED",24:"OPEN_PARTIAL",27:"DATA",29:"STRING",30:"INTEGER",31:"BOOLEAN",34:"ID",35:"EQUALS",37:"SEP"},
productions_: [0,[3,2],[4,3],[4,1],[4,0],[6,1],[6,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[7,2],[17,3],[17,2],[17,2],[17,1],[17,1],[25,2],[25,1],[28,1],[28,1],[28,1],[28,1],[28,1],[26,1],[32,2],[32,1],[33,3],[33,3],[33,3],[33,3],[33,3],[21,1],[36,3],[36,1]],
performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {

_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "anonymous", 23);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 25);
var $0 = $$.length - 1;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 26);
switch (yystate) {
case 1: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 27);
return $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 28);
break;
case 2: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 29);
this.$ = new yy.ProgramNode($$[$0-2], $$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 30);
break;
case 3: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 31);
this.$ = new yy.ProgramNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 32);
break;
case 4: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 33);
this.$ = new yy.ProgramNode([]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 34);
break;
case 5: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 35);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 36);
break;
case 6: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 37);
$$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 38);
break;
case 7: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 39);
this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 40);
break;
case 8: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 41);
this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 42);
break;
case 9: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 43);
this.$ = $$[$0]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 44);
break;
case 10: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 45);
this.$ = $$[$0]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 46);
break;
case 11: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 47);
this.$ = new yy.ContentNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 48);
break;
case 12: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 49);
this.$ = new yy.CommentNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 50);
break;
case 13: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 51);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 52);
break;
case 14: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 53);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 54);
break;
case 15: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 55);
this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 56);
break;
case 16: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 57);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 58);
break;
case 17: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 59);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 60);
break;
case 18: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 61);
this.$ = new yy.PartialNode($$[$0-1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 62);
break;
case 19: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 63);
this.$ = new yy.PartialNode($$[$0-2], $$[$0-1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 64);
break;
case 20: 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 66);
break;
case 21: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 67);
this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 68);
break;
case 22: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 69);
this.$ = [[$$[$0-1]].concat($$[$0]), null]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 70);
break;
case 23: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 71);
this.$ = [[$$[$0-1]], $$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 72);
break;
case 24: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 73);
this.$ = [[$$[$0]], null]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 74);
break;
case 25: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 75);
this.$ = [[new yy.DataNode($$[$0])], null]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 76);
break;
case 26: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 77);
$$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 78);
break;
case 27: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 79);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 80);
break;
case 28: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 81);
this.$ = $$[$0]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 82);
break;
case 29: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 83);
this.$ = new yy.StringNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 84);
break;
case 30: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 85);
this.$ = new yy.IntegerNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 86);
break;
case 31: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 87);
this.$ = new yy.BooleanNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 88);
break;
case 32: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 89);
this.$ = new yy.DataNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 90);
break;
case 33: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 91);
this.$ = new yy.HashNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 92);
break;
case 34: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 93);
$$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 94);
break;
case 35: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 95);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 96);
break;
case 36: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 97);
this.$ = [$$[$0-2], $$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 98);
break;
case 37: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 99);
this.$ = [$$[$0-2], new yy.StringNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 100);
break;
case 38: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 101);
this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 102);
break;
case 39: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 103);
this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 104);
break;
case 40: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 105);
this.$ = [$$[$0-2], new yy.DataNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 106);
break;
case 41: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 107);
this.$ = new yy.IdNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 108);
break;
case 42: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 109);
$$[$0-2].push($$[$0]); this.$ = $$[$0-2]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 110);
break;
case 43: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 111);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 112);
break;
}
},
table: [{3:1,4:2,5:[2,4],6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{1:[3]},{5:[1,16]},{5:[2,3],7:17,8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,19],20:[2,3],22:[1,13],23:[1,14],24:[1,15]},{5:[2,5],14:[2,5],15:[2,5],16:[2,5],19:[2,5],20:[2,5],22:[2,5],23:[2,5],24:[2,5]},{4:20,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{4:21,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],24:[2,9]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],24:[2,10]},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],24:[2,11]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],24:[2,12]},{17:22,21:23,27:[1,24],34:[1,26],36:25},{17:27,21:23,27:[1,24],34:[1,26],36:25},{17:28,21:23,27:[1,24],34:[1,26],36:25},{17:29,21:23,27:[1,24],34:[1,26],36:25},{21:30,34:[1,26],36:25},{1:[2,1]},{6:31,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{5:[2,6],14:[2,6],15:[2,6],16:[2,6],19:[2,6],20:[2,6],22:[2,6],23:[2,6],24:[2,6]},{17:22,18:[1,32],21:23,27:[1,24],34:[1,26],36:25},{10:33,20:[1,34]},{10:35,20:[1,34]},{18:[1,36]},{18:[2,24],21:41,25:37,26:38,27:[1,45],28:39,29:[1,42],30:[1,43],31:[1,44],32:40,33:46,34:[1,47],36:25},{18:[2,25]},{18:[2,41],27:[2,41],29:[2,41],30:[2,41],31:[2,41],34:[2,41],37:[1,48]},{18:[2,43],27:[2,43],29:[2,43],30:[2,43],31:[2,43],34:[2,43],37:[2,43]},{18:[1,49]},{18:[1,50]},{18:[1,51]},{18:[1,52],21:53,34:[1,26],36:25},{5:[2,2],8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,2],22:[1,13],23:[1,14],24:[1,15]},{14:[2,20],15:[2,20],16:[2,20],19:[2,20],22:[2,20],23:[2,20],24:[2,20]},{5:[2,7],14:[2,7],15:[2,7],16:[2,7],19:[2,7],20:[2,7],22:[2,7],23:[2,7],24:[2,7]},{21:54,34:[1,26],36:25},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],24:[2,8]},{14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],24:[2,14]},{18:[2,22],21:41,26:55,27:[1,45],28:56,29:[1,42],30:[1,43],31:[1,44],32:40,33:46,34:[1,47],36:25},{18:[2,23]},{18:[2,27],27:[2,27],29:[2,27],30:[2,27],31:[2,27],34:[2,27]},{18:[2,33],33:57,34:[1,58]},{18:[2,28],27:[2,28],29:[2,28],30:[2,28],31:[2,28],34:[2,28]},{18:[2,29],27:[2,29],29:[2,29],30:[2,29],31:[2,29],34:[2,29]},{18:[2,30],27:[2,30],29:[2,30],30:[2,30],31:[2,30],34:[2,30]},{18:[2,31],27:[2,31],29:[2,31],30:[2,31],31:[2,31],34:[2,31]},{18:[2,32],27:[2,32],29:[2,32],30:[2,32],31:[2,32],34:[2,32]},{18:[2,35],34:[2,35]},{18:[2,43],27:[2,43],29:[2,43],30:[2,43],31:[2,43],34:[2,43],35:[1,59],37:[2,43]},{34:[1,60]},{14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],24:[2,13]},{5:[2,16],14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],24:[2,16]},{5:[2,17],14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],24:[2,17]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],24:[2,18]},{18:[1,61]},{18:[1,62]},{18:[2,21]},{18:[2,26],27:[2,26],29:[2,26],30:[2,26],31:[2,26],34:[2,26]},{18:[2,34],34:[2,34]},{35:[1,59]},{21:63,27:[1,67],29:[1,64],30:[1,65],31:[1,66],34:[1,26],36:25},{18:[2,42],27:[2,42],29:[2,42],30:[2,42],31:[2,42],34:[2,42],37:[2,42]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],24:[2,19]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],24:[2,15]},{18:[2,36],34:[2,36]},{18:[2,37],34:[2,37]},{18:[2,38],34:[2,38]},{18:[2,39],34:[2,39]},{18:[2,40],34:[2,40]}],
defaultActions: {16:[2,1],24:[2,25],38:[2,23],55:[2,21]},
parseError: function parseError(str, hash) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parseError", 117);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 118);
throw new Error(str);
},
parse: function parse(input) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parse", 120);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 121);
var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 122);
this.lexer.setInput(input);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 123);
this.lexer.yy = this.yy;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 124);
this.yy.lexer = this.lexer;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 125);
this.yy.parser = this;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 126);
if (typeof this.lexer.yylloc == "undefined")
        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 127);
this.lexer.yylloc = {};}
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 128);
var yyloc = this.lexer.yylloc;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 129);
lstack.push(yyloc);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 130);
var ranges = this.lexer.options && this.lexer.options.ranges;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 131);
if (typeof this.yy.parseError === "function")
        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 132);
this.parseError = this.yy.parseError;}
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 133);
function popStack(n) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "popStack", 133);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 134);
stack.length = stack.length - 2 * n;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 135);
vstack.length = vstack.length - n;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 136);
lstack.length = lstack.length - n;
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 138);
function lex() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lex", 138);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 139);
var token;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 140);
token = self.lexer.lex() || 1;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 141);
if (typeof token !== "number") {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 142);
token = self.symbols_[token] || token;
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 144);
return token;
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 146);
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 147);
while (true) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 148);
state = stack[stack.length - 1];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 149);
if (this.defaultActions[state]) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 150);
action = this.defaultActions[state];
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 152);
if (symbol === null || typeof symbol == "undefined") {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 153);
symbol = lex();
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 155);
action = table[state] && table[state][symbol];
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 157);
if (typeof action === "undefined" || !action.length || !action[0]) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 158);
var errStr = "";
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 159);
if (!recovering) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 160);
expected = [];
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 161);
for (p in table[state])
                    {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 162);
if (this.terminals_[p] && p > 2) {
                        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 163);
expected.push("'" + this.terminals_[p] + "'");
                    }}
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 165);
if (this.lexer.showPosition) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 166);
errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
                } else {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 168);
errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
                }
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 170);
this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
            }
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 173);
if (action[0] instanceof Array && action.length > 1) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 174);
throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 176);
switch (action[0]) {
        case 1:
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 178);
stack.push(symbol);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 179);
vstack.push(this.lexer.yytext);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 180);
lstack.push(this.lexer.yylloc);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 181);
stack.push(action[1]);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 182);
symbol = null;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 183);
if (!preErrorSymbol) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 184);
yyleng = this.lexer.yyleng;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 185);
yytext = this.lexer.yytext;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 186);
yylineno = this.lexer.yylineno;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 187);
yyloc = this.lexer.yylloc;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 188);
if (recovering > 0)
                    {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 189);
recovering--;}
            } else {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 191);
symbol = preErrorSymbol;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 192);
preErrorSymbol = null;
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 194);
break;
        case 2:
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 196);
len = this.productions_[action[1]][1];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 197);
yyval.$ = vstack[vstack.length - len];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 198);
yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 199);
if (ranges) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 200);
yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 202);
r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 203);
if (typeof r !== "undefined") {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 204);
return r;
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 206);
if (len) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 207);
stack = stack.slice(0, -1 * len * 2);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 208);
vstack = vstack.slice(0, -1 * len);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 209);
lstack = lstack.slice(0, -1 * len);
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 211);
stack.push(this.productions_[action[1]][0]);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 212);
vstack.push(yyval.$);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 213);
lstack.push(yyval._$);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 214);
newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 215);
stack.push(newState);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 216);
break;
        case 3:
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 218);
return true;
        }
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 221);
return true;
}
};
/* Jison generated lexer */
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 225);
var lexer = (function(){
_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 3)", 225);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 226);
var lexer = ({EOF:1,
parseError:function parseError(str, hash) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parseError", 227);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 228);
if (this.yy.parser) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 229);
this.yy.parser.parseError(str, hash);
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 231);
throw new Error(str);
        }
    },
setInput:function (input) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setInput", 234);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 235);
this._input = input;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 236);
this._more = this._less = this.done = false;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 237);
this.yylineno = this.yyleng = 0;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 238);
this.yytext = this.matched = this.match = '';
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 239);
this.conditionStack = ['INITIAL'];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 240);
this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 241);
if (this.options.ranges) {this.yylloc.range = [0,0];}
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 242);
this.offset = 0;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 243);
return this;
    },
input:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "input", 245);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 246);
var ch = this._input[0];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 247);
this.yytext += ch;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 248);
this.yyleng++;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 249);
this.offset++;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 250);
this.match += ch;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 251);
this.matched += ch;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 252);
var lines = ch.match(/(?:\r\n?|\n).*/g);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 253);
if (lines) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 254);
this.yylineno++;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 255);
this.yylloc.last_line++;
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 257);
this.yylloc.last_column++;
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 259);
if (this.options.ranges) {this.yylloc.range[1]++;}

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 261);
this._input = this._input.slice(1);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 262);
return ch;
    },
unput:function (ch) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "unput", 264);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 265);
var len = ch.length;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 266);
var lines = ch.split(/(?:\r\n?|\n)/g);

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 268);
this._input = ch + this._input;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 269);
this.yytext = this.yytext.substr(0, this.yytext.length-len-1);
        //this.yyleng -= len;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 271);
this.offset -= len;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 272);
var oldLines = this.match.split(/(?:\r\n?|\n)/g);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 273);
this.match = this.match.substr(0, this.match.length-1);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 274);
this.matched = this.matched.substr(0, this.matched.length-1);

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 276);
if (lines.length-1) {this.yylineno -= lines.length-1;}
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 277);
var r = this.yylloc.range;

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 279);
this.yylloc = {first_line: this.yylloc.first_line,
          last_line: this.yylineno+1,
          first_column: this.yylloc.first_column,
          last_column: lines ?
              (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:
              this.yylloc.first_column - len
          };

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 287);
if (this.options.ranges) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 288);
this.yylloc.range = [r[0], r[0] + this.yyleng - len];
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 290);
return this;
    },
more:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "more", 292);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 293);
this._more = true;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 294);
return this;
    },
less:function (n) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "less", 296);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 297);
this.unput(this.match.slice(n));
    },
pastInput:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pastInput", 299);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 300);
var past = this.matched.substr(0, this.matched.length - this.match.length);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 301);
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
    },
upcomingInput:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "upcomingInput", 303);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 304);
var next = this.match;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 305);
if (next.length < 20) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 306);
next += this._input.substr(0, 20-next.length);
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 308);
return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
    },
showPosition:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "showPosition", 310);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 311);
var pre = this.pastInput();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 312);
var c = new Array(pre.length + 1).join("-");
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 313);
return pre + this.upcomingInput() + "\n" + c+"^";
    },
next:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "next", 315);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 316);
if (this.done) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 317);
return this.EOF;
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 319);
if (!this._input) {this.done = true;}

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 321);
var token,
            match,
            tempMatch,
            index,
            col,
            lines;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 327);
if (!this._more) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 328);
this.yytext = '';
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 329);
this.match = '';
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 331);
var rules = this._currentRules();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 332);
for (var i=0;i < rules.length; i++) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 333);
tempMatch = this._input.match(this.rules[rules[i]]);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 334);
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 335);
match = tempMatch;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 336);
index = i;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 337);
if (!this.options.flex) {break;}
            }
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 340);
if (match) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 341);
lines = match[0].match(/(?:\r\n?|\n).*/g);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 342);
if (lines) {this.yylineno += lines.length;}
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 343);
this.yylloc = {first_line: this.yylloc.last_line,
                           last_line: this.yylineno+1,
                           first_column: this.yylloc.last_column,
                           last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length};
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 347);
this.yytext += match[0];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 348);
this.match += match[0];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 349);
this.matches = match;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 350);
this.yyleng = this.yytext.length;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 351);
if (this.options.ranges) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 352);
this.yylloc.range = [this.offset, this.offset += this.yyleng];
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 354);
this._more = false;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 355);
this._input = this._input.slice(match[0].length);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 356);
this.matched += match[0];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 357);
token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 358);
if (this.done && this._input) {this.done = false;}
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 359);
if (token) {return token;}
            else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 360);
return;}
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 362);
if (this._input === "") {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 363);
return this.EOF;
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 365);
return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
                    {text: "", token: null, line: this.yylineno});
        }
    },
lex:function lex() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lex", 369);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 370);
var r = this.next();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 371);
if (typeof r !== 'undefined') {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 372);
return r;
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 374);
return this.lex();
        }
    },
begin:function begin(condition) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "begin", 377);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 378);
this.conditionStack.push(condition);
    },
popState:function popState() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "popState", 380);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 381);
return this.conditionStack.pop();
    },
_currentRules:function _currentRules() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "_currentRules", 383);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 384);
return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
    },
topState:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "topState", 386);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 387);
return this.conditionStack[this.conditionStack.length-2];
    },
pushState:function begin(condition) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "begin", 389);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 390);
this.begin(condition);
    }});
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 392);
lexer.options = {};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 393);
lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {

_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "anonymous", 393);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 395);
var YYSTATE=YY_START
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 396);
switch($avoiding_name_collisions) {
case 0:
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 398);
if(yy_.yytext.slice(-1) !== "\\") {this.begin("mu");}
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 399);
if(yy_.yytext.slice(-1) === "\\") {yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin("emu");}
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 400);
if(yy_.yytext) {return 14;}
                                 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 402);
break;
case 1: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 403);
return 14; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 404);
break;
case 2:
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 406);
if(yy_.yytext.slice(-1) !== "\\") {this.popState();}
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 407);
if(yy_.yytext.slice(-1) === "\\") {yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1);}
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 408);
return 14;
                                 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 410);
break;
case 3: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 411);
yy_.yytext = yy_.yytext.substr(0, yy_.yyleng-4); this.popState(); return 15; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 412);
break;
case 4: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 413);
return 24; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 414);
break;
case 5: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 415);
return 16; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 416);
break;
case 6: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 417);
return 20; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 418);
break;
case 7: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 419);
return 19; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 420);
break;
case 8: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 421);
return 19; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 422);
break;
case 9: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 423);
return 23; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 424);
break;
case 10: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 425);
return 23; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 426);
break;
case 11: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 427);
this.popState(); this.begin('com'); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 428);
break;
case 12: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 429);
yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 430);
break;
case 13: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 431);
return 22; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 432);
break;
case 14: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 433);
return 35; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 434);
break;
case 15: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 435);
return 34; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 436);
break;
case 16: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 437);
return 34; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 438);
break;
case 17: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 439);
return 37; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 440);
break;
case 18: /*ignore whitespace*/ 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 442);
break;
case 19: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 443);
this.popState(); return 18; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 444);
break;
case 20: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 445);
this.popState(); return 18; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 446);
break;
case 21: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 447);
yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\"/g,'"'); return 29; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 448);
break;
case 22: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 449);
yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\'/g,"'"); return 29; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 450);
break;
case 23: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 451);
yy_.yytext = yy_.yytext.substr(1); return 27; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 452);
break;
case 24: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 453);
return 31; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 454);
break;
case 25: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 455);
return 31; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 456);
break;
case 26: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 457);
return 30; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 458);
break;
case 27: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 459);
return 34; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 460);
break;
case 28: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 461);
yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 34; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 462);
break;
case 29: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 463);
return 'INVALID'; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 464);
break;
case 30: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 465);
return 5; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 466);
break;
}
};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 469);
lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|$)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\{\{>)/,/^(?:\{\{#)/,/^(?:\{\{\/)/,/^(?:\{\{\^)/,/^(?:\{\{\s*else\b)/,/^(?:\{\{\{)/,/^(?:\{\{&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{)/,/^(?:=)/,/^(?:\.(?=[} ]))/,/^(?:\.\.)/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}\}\})/,/^(?:\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@[a-zA-Z]+)/,/^(?:true(?=[}\s]))/,/^(?:false(?=[}\s]))/,/^(?:[0-9]+(?=[}\s]))/,/^(?:[a-zA-Z0-9_$-]+(?=[=}\s\/.]))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/];
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 470);
lexer.conditions = {"mu":{"rules":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],"inclusive":false},"emu":{"rules":[2],"inclusive":false},"com":{"rules":[3],"inclusive":false},"INITIAL":{"rules":[0,1,30],"inclusive":true}};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 471);
return lexer;})()
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 472);
parser.lexer = lexer;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 473);
function Parser () { _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "Parser", 473);
this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 474);
return new Parser;
})();
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 476);
if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 477);
exports.parser = handlebars;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 478);
exports.Parser = handlebars.Parser;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 479);
exports.parse = function () { _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parse", 479);
return handlebars.parse.apply(handlebars, arguments); }
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 480);
exports.main = function commonjsMain(args) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "commonjsMain", 480);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 481);
if (!args[1])
        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 482);
throw new Error('Usage: '+args[0]+' FILE');}
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 483);
var source, cwd;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 484);
if (typeof process !== 'undefined') {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 485);
source = require('fs').readFileSync(require('path').resolve(args[1]), "utf8");
    } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 487);
source = require("file").path(require("file").cwd()).join(args[1]).read({charset: "utf-8"});
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 489);
return exports.parser.parse(source);
}
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 491);
if (typeof module !== 'undefined' && require.main === module) {
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 492);
exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);
}
}_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 494);
;
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

// BEGIN(BROWSER)
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 498);
Handlebars.Parser = handlebars;

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 500);
Handlebars.parse = function(string) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parse", 500);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 501);
Handlebars.Parser.yy = Handlebars.AST;
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 502);
return Handlebars.Parser.parse(string);
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 505);
Handlebars.print = function(ast) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "print", 505);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 506);
return new Handlebars.PrintVisitor().accept(ast);
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 509);
Handlebars.logger = {
  DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, level: 3,

  // override in the host environment
  log: function(level, str) {}
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 516);
Handlebars.log = function(level, str) { _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "log", 516);
Handlebars.logger.log(level, str); };

// END(BROWSER)
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

// BEGIN(BROWSER)
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 522);
(function() {

  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 4)", 522);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 524);
Handlebars.AST = {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 526);
Handlebars.AST.ProgramNode = function(statements, inverse) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ProgramNode", 526);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 527);
this.type = "program";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 528);
this.statements = statements;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 529);
if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 532);
Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "MustacheNode", 532);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 533);
this.type = "mustache";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 534);
this.escaped = !unescaped;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 535);
this.hash = hash;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 537);
var id = this.id = rawParams[0];
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 538);
var params = this.params = rawParams.slice(1);

    // a mustache is an eligible helper if:
    // * its id is simple (a single part, not `this` or `..`)
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 542);
var eligibleHelper = this.eligibleHelper = id.isSimple;

    // a mustache is definitely a helper if:
    // * it is an eligible helper, and
    // * it has at least one parameter or hash segment
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 547);
this.isHelper = eligibleHelper && (params.length || hash);

    // if a mustache is an eligible helper but not a definite
    // helper, it is ambiguous, and will be resolved in a later
    // pass or at runtime.
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 554);
Handlebars.AST.PartialNode = function(id, context) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "PartialNode", 554);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 555);
this.type    = "partial";

    // TODO: disallow complex IDs

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 559);
this.id      = id;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 560);
this.context = context;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 563);
var verifyMatch = function(open, close) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "verifyMatch", 563);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 564);
if(open.original !== close.original) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 565);
throw new Handlebars.Exception(open.original + " doesn't match " + close.original);
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 569);
Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "BlockNode", 569);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 570);
verifyMatch(mustache.id, close);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 571);
this.type = "block";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 572);
this.mustache = mustache;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 573);
this.program  = program;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 574);
this.inverse  = inverse;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 576);
if (this.inverse && !this.program) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 577);
this.isInverse = true;
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 581);
Handlebars.AST.ContentNode = function(string) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ContentNode", 581);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 582);
this.type = "content";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 583);
this.string = string;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 586);
Handlebars.AST.HashNode = function(pairs) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "HashNode", 586);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 587);
this.type = "hash";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 588);
this.pairs = pairs;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 591);
Handlebars.AST.IdNode = function(parts) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "IdNode", 591);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 592);
this.type = "ID";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 593);
this.original = parts.join(".");

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 595);
var dig = [], depth = 0;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 597);
for(var i=0,l=parts.length; i<l; i++) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 598);
var part = parts[i];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 600);
if(part === "..") { depth++; }
      else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 601);
if(part === "." || part === "this") { this.isScoped = true; }
      else { dig.push(part); }}
    }

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 605);
this.parts    = dig;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 606);
this.string   = dig.join('.');
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 607);
this.depth    = depth;

    // an ID is simple if it only has one part, and that part is not
    // `..` or `this`.
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 611);
this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 614);
Handlebars.AST.DataNode = function(id) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "DataNode", 614);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 615);
this.type = "DATA";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 616);
this.id = id;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 619);
Handlebars.AST.StringNode = function(string) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "StringNode", 619);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 620);
this.type = "STRING";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 621);
this.string = string;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 624);
Handlebars.AST.IntegerNode = function(integer) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "IntegerNode", 624);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 625);
this.type = "INTEGER";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 626);
this.integer = integer;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 629);
Handlebars.AST.BooleanNode = function(bool) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "BooleanNode", 629);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 630);
this.type = "BOOLEAN";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 631);
this.bool = bool;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 634);
Handlebars.AST.CommentNode = function(comment) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "CommentNode", 634);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 635);
this.type = "comment";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 636);
this.comment = comment;
  };

})();
// END(BROWSER)
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

// BEGIN(BROWSER)

/*jshint eqnull:true*/
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 646);
Handlebars.Compiler = function() {};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 647);
Handlebars.JavaScriptCompiler = function() {};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 649);
(function(Compiler, JavaScriptCompiler) {
  // the foundHelper register will disambiguate helper lookup from finding a
  // function in a context. This is necessary for mustache compatibility, which
  // requires that context functions in blocks are evaluated by blockHelperMissing,
  // and then proceed as if the resulting value was provided to blockHelperMissing.

  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 5)", 649);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 655);
Compiler.prototype = {
    compiler: Compiler,

    disassemble: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "disassemble", 658);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 659);
var opcodes = this.opcodes, opcode, out = [], params, param;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 661);
for (var i=0, l=opcodes.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 662);
opcode = opcodes[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 664);
if (opcode.opcode === 'DECLARE') {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 665);
out.push("DECLARE " + opcode.name + "=" + opcode.value);
        } else {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 667);
params = [];
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 668);
for (var j=0; j<opcode.args.length; j++) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 669);
param = opcode.args[j];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 670);
if (typeof param === "string") {
              _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 671);
param = "\"" + param.replace("\n", "\\n") + "\"";
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 673);
params.push(param);
          }
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 675);
out.push(opcode.opcode + " " + params.join(" "));
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 679);
return out.join("\n");
    },

    guid: 0,

    compile: function(program, options) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 684);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 685);
this.children = [];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 686);
this.depths = {list: []};
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 687);
this.options = options;

      // These changes will propagate to the other compiler components
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 690);
var knownHelpers = this.options.knownHelpers;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 691);
this.options.knownHelpers = {
        'helperMissing': true,
        'blockHelperMissing': true,
        'each': true,
        'if': true,
        'unless': true,
        'with': true,
        'log': true
      };
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 700);
if (knownHelpers) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 701);
for (var name in knownHelpers) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 702);
this.options.knownHelpers[name] = knownHelpers[name];
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 706);
return this.program(program);
    },

    accept: function(node) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "accept", 709);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 710);
return this[node.type](node);
    },

    program: function(program) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "program", 713);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 714);
var statements = program.statements, statement;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 715);
this.opcodes = [];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 717);
for(var i=0, l=statements.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 718);
statement = statements[i];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 719);
this[statement.type](statement);
      }
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 721);
this.isSimple = l === 1;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 723);
this.depths.list = this.depths.list.sort(function(a, b) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 6)", 723);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 724);
return a - b;
      });

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 727);
return this;
    },

    compileProgram: function(program) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compileProgram", 730);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 731);
var result = new this.compiler().compile(program, this.options);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 732);
var guid = this.guid++, depth;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 734);
this.usePartial = this.usePartial || result.usePartial;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 736);
this.children[guid] = result;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 738);
for(var i=0, l=result.depths.list.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 739);
depth = result.depths.list[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 741);
if(depth < 2) { continue; }
        else { this.addDepth(depth - 1); }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 745);
return guid;
    },

    block: function(block) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "block", 748);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 749);
var mustache = block.mustache,
          program = block.program,
          inverse = block.inverse;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 753);
if (program) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 754);
program = this.compileProgram(program);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 757);
if (inverse) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 758);
inverse = this.compileProgram(inverse);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 761);
var type = this.classifyMustache(mustache);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 763);
if (type === "helper") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 764);
this.helperMustache(mustache, program, inverse);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 765);
if (type === "simple") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 766);
this.simpleMustache(mustache);

        // now that the simple mustache is resolved, we need to
        // evaluate it by executing `blockHelperMissing`
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 770);
this.opcode('pushProgram', program);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 771);
this.opcode('pushProgram', inverse);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 772);
this.opcode('pushLiteral', '{}');
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 773);
this.opcode('blockValue');
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 775);
this.ambiguousMustache(mustache, program, inverse);

        // now that the simple mustache is resolved, we need to
        // evaluate it by executing `blockHelperMissing`
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 779);
this.opcode('pushProgram', program);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 780);
this.opcode('pushProgram', inverse);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 781);
this.opcode('pushLiteral', '{}');
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 782);
this.opcode('ambiguousBlockValue');
      }}

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 785);
this.opcode('append');
    },

    hash: function(hash) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "hash", 788);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 789);
var pairs = hash.pairs, pair, val;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 791);
this.opcode('push', '{}');

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 793);
for(var i=0, l=pairs.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 794);
pair = pairs[i];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 795);
val  = pair[1];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 797);
this.accept(val);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 798);
this.opcode('assignToHash', pair[0]);
      }
    },

    partial: function(partial) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "partial", 802);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 803);
var id = partial.id;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 804);
this.usePartial = true;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 806);
if(partial.context) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 807);
this.ID(partial.context);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 809);
this.opcode('push', 'depth0');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 812);
this.opcode('invokePartial', id.original);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 813);
this.opcode('append');
    },

    content: function(content) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "content", 816);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 817);
this.opcode('appendContent', content.string);
    },

    mustache: function(mustache) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "mustache", 820);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 821);
var options = this.options;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 822);
var type = this.classifyMustache(mustache);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 824);
if (type === "simple") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 825);
this.simpleMustache(mustache);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 826);
if (type === "helper") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 827);
this.helperMustache(mustache);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 829);
this.ambiguousMustache(mustache);
      }}

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 832);
if(mustache.escaped && !options.noEscape) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 833);
this.opcode('appendEscaped');
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 835);
this.opcode('append');
      }
    },

    ambiguousMustache: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ambiguousMustache", 839);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 840);
var id = mustache.id, name = id.parts[0];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 842);
this.opcode('getContext', id.depth);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 844);
this.opcode('pushProgram', program);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 845);
this.opcode('pushProgram', inverse);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 847);
this.opcode('invokeAmbiguous', name);
    },

    simpleMustache: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "simpleMustache", 850);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 851);
var id = mustache.id;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 853);
if (id.type === 'DATA') {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 854);
this.DATA(id);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 855);
if (id.parts.length) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 856);
this.ID(id);
      } else {
        // Simplified ID for `this`
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 859);
this.addDepth(id.depth);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 860);
this.opcode('getContext', id.depth);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 861);
this.opcode('pushContext');
      }}

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 864);
this.opcode('resolvePossibleLambda');
    },

    helperMustache: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "helperMustache", 867);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 868);
var params = this.setupFullMustacheParams(mustache, program, inverse),
          name = mustache.id.parts[0];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 871);
if (this.options.knownHelpers[name]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 872);
this.opcode('invokeKnownHelper', params.length, name);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 873);
if (this.knownHelpersOnly) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 874);
throw new Error("You specified knownHelpersOnly, but used the unknown helper " + name);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 876);
this.opcode('invokeHelper', params.length, name);
      }}
    },

    ID: function(id) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ID", 880);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 881);
this.addDepth(id.depth);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 882);
this.opcode('getContext', id.depth);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 884);
var name = id.parts[0];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 885);
if (!name) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 886);
this.opcode('pushContext');
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 888);
this.opcode('lookupOnContext', id.parts[0]);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 891);
for(var i=1, l=id.parts.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 892);
this.opcode('lookup', id.parts[i]);
      }
    },

    DATA: function(data) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "DATA", 896);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 897);
this.options.data = true;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 898);
this.opcode('lookupData', data.id);
    },

    STRING: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "STRING", 901);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 902);
this.opcode('pushString', string.string);
    },

    INTEGER: function(integer) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "INTEGER", 905);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 906);
this.opcode('pushLiteral', integer.integer);
    },

    BOOLEAN: function(bool) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "BOOLEAN", 909);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 910);
this.opcode('pushLiteral', bool.bool);
    },

    comment: function() {},

    // HELPERS
    opcode: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "opcode", 916);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 917);
this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });
    },

    declare: function(name, value) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "declare", 920);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 921);
this.opcodes.push({ opcode: 'DECLARE', name: name, value: value });
    },

    addDepth: function(depth) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "addDepth", 924);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 925);
if(isNaN(depth)) { throw new Error("EWOT"); }
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 926);
if(depth === 0) { return; }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 928);
if(!this.depths[depth]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 929);
this.depths[depth] = true;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 930);
this.depths.list.push(depth);
      }
    },

    classifyMustache: function(mustache) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "classifyMustache", 934);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 935);
var isHelper   = mustache.isHelper;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 936);
var isEligible = mustache.eligibleHelper;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 937);
var options    = this.options;

      // if ambiguous, we can possibly resolve the ambiguity now
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 940);
if (isEligible && !isHelper) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 941);
var name = mustache.id.parts[0];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 943);
if (options.knownHelpers[name]) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 944);
isHelper = true;
        } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 945);
if (options.knownHelpersOnly) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 946);
isEligible = false;
        }}
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 950);
if (isHelper) { return "helper"; }
      else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 951);
if (isEligible) { return "ambiguous"; }
      else { return "simple"; }}
    },

    pushParams: function(params) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushParams", 955);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 956);
var i = params.length, param;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 958);
while(i--) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 959);
param = params[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 961);
if(this.options.stringParams) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 962);
if(param.depth) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 963);
this.addDepth(param.depth);
          }

          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 966);
this.opcode('getContext', param.depth || 0);
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 967);
this.opcode('pushStringParam', param.string);
        } else {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 969);
this[param.type](param);
        }
      }
    },

    setupMustacheParams: function(mustache) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupMustacheParams", 974);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 975);
var params = mustache.params;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 976);
this.pushParams(params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 978);
if(mustache.hash) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 979);
this.hash(mustache.hash);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 981);
this.opcode('pushLiteral', '{}');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 984);
return params;
    },

    // this will replace setupMustacheParams when we're done
    setupFullMustacheParams: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupFullMustacheParams", 988);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 989);
var params = mustache.params;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 990);
this.pushParams(params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 992);
this.opcode('pushProgram', program);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 993);
this.opcode('pushProgram', inverse);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 995);
if(mustache.hash) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 996);
this.hash(mustache.hash);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 998);
this.opcode('pushLiteral', '{}');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1001);
return params;
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1005);
var Literal = function(value) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "Literal", 1005);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1006);
this.value = value;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1009);
JavaScriptCompiler.prototype = {
    // PUBLIC API: You can override these methods in a subclass to provide
    // alternative compiled forms for name lookup and buffering semantics
    nameLookup: function(parent, name, type) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "nameLookup", 1012);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1013);
if (/^[0-9]+$/.test(name)) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1014);
return parent + "[" + name + "]";
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1015);
if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1016);
return parent + "." + name;
      }
      else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1019);
return parent + "['" + name + "']";
      }}
    },

    appendToBuffer: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "appendToBuffer", 1023);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1024);
if (this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1025);
return "return " + string + ";";
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1027);
return "buffer += " + string + ";";
      }
    },

    initializeBuffer: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "initializeBuffer", 1031);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1032);
return this.quotedString("");
    },

    namespace: "Handlebars",
    // END PUBLIC API

    compile: function(environment, options, context, asObject) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 1038);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1039);
this.environment = environment;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1040);
this.options = options || {};

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1042);
Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + "\n\n");

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1044);
this.name = this.environment.name;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1045);
this.isChild = !!context;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1046);
this.context = context || {
        programs: [],
        aliases: { }
      };

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1051);
this.preamble();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1053);
this.stackSlot = 0;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1054);
this.stackVars = [];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1055);
this.registers = { list: [] };
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1056);
this.compileStack = [];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1058);
this.compileChildren(environment, options);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1060);
var opcodes = environment.opcodes, opcode;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1062);
this.i = 0;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1064);
for(l=opcodes.length; this.i<l; this.i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1065);
opcode = opcodes[this.i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1067);
if(opcode.opcode === 'DECLARE') {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1068);
this[opcode.name] = opcode.value;
        } else {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1070);
this[opcode.opcode].apply(this, opcode.args);
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1074);
return this.createFunctionContext(asObject);
    },

    nextOpcode: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "nextOpcode", 1077);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1078);
var opcodes = this.environment.opcodes, opcode = opcodes[this.i + 1];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1079);
return opcodes[this.i + 1];
    },

    eat: function(opcode) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "eat", 1082);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1083);
this.i = this.i + 1;
    },

    preamble: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "preamble", 1086);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1087);
var out = [];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1089);
if (!this.isChild) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1090);
var namespace = this.namespace;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1091);
var copies = "helpers = helpers || " + namespace + ".helpers;";
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1092);
if (this.environment.usePartial) { copies = copies + " partials = partials || " + namespace + ".partials;"; }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1093);
if (this.options.data) { copies = copies + " data = data || {};"; }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1094);
out.push(copies);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1096);
out.push('');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1099);
if (!this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1100);
out.push(", buffer = " + this.initializeBuffer());
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1102);
out.push("");
      }

      // track the last context pushed into place to allow skipping the
      // getContext opcode when it would be a noop
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1107);
this.lastContext = 0;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1108);
this.source = out;
    },

    createFunctionContext: function(asObject) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "createFunctionContext", 1111);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1112);
var locals = this.stackVars.concat(this.registers.list);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1114);
if(locals.length > 0) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1115);
this.source[1] = this.source[1] + ", " + locals.join(", ");
      }

      // Generate minimizer alias mappings
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1119);
if (!this.isChild) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1120);
var aliases = [];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1121);
for (var alias in this.context.aliases) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1122);
this.source[1] = this.source[1] + ', ' + alias + '=' + this.context.aliases[alias];
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1126);
if (this.source[1]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1127);
this.source[1] = "var " + this.source[1].substring(2) + ";";
      }

      // Merge children
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1131);
if (!this.isChild) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1132);
this.source[1] += '\n' + this.context.programs.join('\n') + '\n';
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1135);
if (!this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1136);
this.source.push("return buffer;");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1139);
var params = this.isChild ? ["depth0", "data"] : ["Handlebars", "depth0", "helpers", "partials", "data"];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1141);
for(var i=0, l=this.environment.depths.list.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1142);
params.push("depth" + this.environment.depths.list[i]);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1145);
if (asObject) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1146);
params.push(this.source.join("\n  "));

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1148);
return Function.apply(this, params);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1150);
var functionSource = 'function ' + (this.name || '') + '(' + params.join(',') + ') {\n  ' + this.source.join("\n  ") + '}';
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1151);
Handlebars.log(Handlebars.logger.DEBUG, functionSource + "\n\n");
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1152);
return functionSource;
      }
    },

    // [blockValue]
    //
    // On stack, before: hash, inverse, program, value
    // On stack, after: return value of blockHelperMissing
    //
    // The purpose of this opcode is to take a block of the form
    // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and
    // replace it on the stack with the result of properly
    // invoking blockHelperMissing.
    blockValue: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "blockValue", 1165);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1166);
this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1168);
var params = ["depth0"];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1169);
this.setupParams(0, params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1171);
this.replaceStack(function(current) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 7)", 1171);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1172);
params.splice(1, 0, current);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1173);
return current + " = blockHelperMissing.call(" + params.join(", ") + ")";
      });
    },

    // [ambiguousBlockValue]
    //
    // On stack, before: hash, inverse, program, value
    // Compiler value, before: lastHelper=value of last found helper, if any
    // On stack, after, if no lastHelper: same as [blockValue]
    // On stack, after, if lastHelper: value
    ambiguousBlockValue: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ambiguousBlockValue", 1183);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1184);
this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1186);
var params = ["depth0"];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1187);
this.setupParams(0, params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1189);
var current = this.topStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1190);
params.splice(1, 0, current);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1192);
this.source.push("if (!" + this.lastHelper + ") { " + current + " = blockHelperMissing.call(" + params.join(", ") + "); }");
    },

    // [appendContent]
    //
    // On stack, before: ...
    // On stack, after: ...
    //
    // Appends the string value of `content` to the current buffer
    appendContent: function(content) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "appendContent", 1201);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1202);
this.source.push(this.appendToBuffer(this.quotedString(content)));
    },

    // [append]
    //
    // On stack, before: value, ...
    // On stack, after: ...
    //
    // Coerces `value` to a String and appends it to the current buffer.
    //
    // If `value` is truthy, or 0, it is coerced into a string and appended
    // Otherwise, the empty string is appended
    append: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "append", 1214);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1215);
var local = this.popStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1216);
this.source.push("if(" + local + " || " + local + " === 0) { " + this.appendToBuffer(local) + " }");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1217);
if (this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1218);
this.source.push("else { " + this.appendToBuffer("''") + " }");
      }
    },

    // [appendEscaped]
    //
    // On stack, before: value, ...
    // On stack, after: ...
    //
    // Escape `value` and append it to the buffer
    appendEscaped: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "appendEscaped", 1228);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1229);
var opcode = this.nextOpcode(), extra = "";
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1230);
this.context.aliases.escapeExpression = 'this.escapeExpression';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1232);
if(opcode && opcode.opcode === 'appendContent') {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1233);
extra = " + " + this.quotedString(opcode.args[0]);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1234);
this.eat(opcode);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1237);
this.source.push(this.appendToBuffer("escapeExpression(" + this.popStack() + ")" + extra));
    },

    // [getContext]
    //
    // On stack, before: ...
    // On stack, after: ...
    // Compiler value, after: lastContext=depth
    //
    // Set the value of the `lastContext` compiler value to the depth
    getContext: function(depth) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "getContext", 1247);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1248);
if(this.lastContext !== depth) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1249);
this.lastContext = depth;
      }
    },

    // [lookupOnContext]
    //
    // On stack, before: ...
    // On stack, after: currentContext[name], ...
    //
    // Looks up the value of `name` on the current context and pushes
    // it onto the stack.
    lookupOnContext: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lookupOnContext", 1260);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1261);
this.pushStack(this.nameLookup('depth' + this.lastContext, name, 'context'));
    },

    // [pushContext]
    //
    // On stack, before: ...
    // On stack, after: currentContext, ...
    //
    // Pushes the value of the current context onto the stack.
    pushContext: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushContext", 1270);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1271);
this.pushStackLiteral('depth' + this.lastContext);
    },

    // [resolvePossibleLambda]
    //
    // On stack, before: value, ...
    // On stack, after: resolved value, ...
    //
    // If the `value` is a lambda, replace it on the stack by
    // the return value of the lambda
    resolvePossibleLambda: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "resolvePossibleLambda", 1281);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1282);
this.context.aliases.functionType = '"function"';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1284);
this.replaceStack(function(current) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 8)", 1284);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1285);
return "typeof " + current + " === functionType ? " + current + ".apply(depth0) : " + current;
      });
    },

    // [lookup]
    //
    // On stack, before: value, ...
    // On stack, after: value[name], ...
    //
    // Replace the value on the stack with the result of looking
    // up `name` on `value`
    lookup: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lookup", 1296);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1297);
this.replaceStack(function(current) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 9)", 1297);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1298);
return current + " == null || " + current + " === false ? " + current + " : " + this.nameLookup(current, name, 'context');
      });
    },

    // [lookupData]
    //
    // On stack, before: ...
    // On stack, after: data[id], ...
    //
    // Push the result of looking up `id` on the current data
    lookupData: function(id) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lookupData", 1308);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1309);
this.pushStack(this.nameLookup('data', id, 'data'));
    },

    // [pushStringParam]
    //
    // On stack, before: ...
    // On stack, after: string, currentContext, ...
    //
    // This opcode is designed for use in string mode, which
    // provides the string value of a parameter along with its
    // depth rather than resolving it immediately.
    pushStringParam: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushStringParam", 1320);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1321);
this.pushStackLiteral('depth' + this.lastContext);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1322);
this.pushString(string);
    },

    // [pushString]
    //
    // On stack, before: ...
    // On stack, after: quotedString(string), ...
    //
    // Push a quoted version of `string` onto the stack
    pushString: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushString", 1331);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1332);
this.pushStackLiteral(this.quotedString(string));
    },

    // [push]
    //
    // On stack, before: ...
    // On stack, after: expr, ...
    //
    // Push an expression onto the stack
    push: function(expr) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "push", 1341);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1342);
this.pushStack(expr);
    },

    // [pushLiteral]
    //
    // On stack, before: ...
    // On stack, after: value, ...
    //
    // Pushes a value onto the stack. This operation prevents
    // the compiler from creating a temporary variable to hold
    // it.
    pushLiteral: function(value) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushLiteral", 1353);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1354);
this.pushStackLiteral(value);
    },

    // [pushProgram]
    //
    // On stack, before: ...
    // On stack, after: program(guid), ...
    //
    // Push a program expression onto the stack. This takes
    // a compile-time guid and converts it into a runtime-accessible
    // expression.
    pushProgram: function(guid) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushProgram", 1365);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1366);
if (guid != null) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1367);
this.pushStackLiteral(this.programExpression(guid));
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1369);
this.pushStackLiteral(null);
      }
    },

    // [invokeHelper]
    //
    // On stack, before: hash, inverse, program, params..., ...
    // On stack, after: result of helper invocation
    //
    // Pops off the helper's parameters, invokes the helper,
    // and pushes the helper's return value onto the stack.
    //
    // If the helper is not found, `helperMissing` is called.
    invokeHelper: function(paramSize, name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokeHelper", 1382);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1383);
this.context.aliases.helperMissing = 'helpers.helperMissing';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1385);
var helper = this.lastHelper = this.setupHelper(paramSize, name);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1386);
this.register('foundHelper', helper.name);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1388);
this.pushStack("foundHelper ? foundHelper.call(" +
        helper.callParams + ") " + ": helperMissing.call(" +
        helper.helperMissingParams + ")");
    },

    // [invokeKnownHelper]
    //
    // On stack, before: hash, inverse, program, params..., ...
    // On stack, after: result of helper invocation
    //
    // This operation is used when the helper is known to exist,
    // so a `helperMissing` fallback is not required.
    invokeKnownHelper: function(paramSize, name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokeKnownHelper", 1400);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1401);
var helper = this.setupHelper(paramSize, name);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1402);
this.pushStack(helper.name + ".call(" + helper.callParams + ")");
    },

    // [invokeAmbiguous]
    //
    // On stack, before: hash, inverse, program, params..., ...
    // On stack, after: result of disambiguation
    //
    // This operation is used when an expression like `{{foo}}`
    // is provided, but we don't know at compile-time whether it
    // is a helper or a path.
    //
    // This operation emits more code than the other options,
    // and can be avoided by passing the `knownHelpers` and
    // `knownHelpersOnly` flags at compile-time.
    invokeAmbiguous: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokeAmbiguous", 1417);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1418);
this.context.aliases.functionType = '"function"';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1420);
this.pushStackLiteral('{}');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1421);
var helper = this.setupHelper(0, name);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1423);
var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1424);
this.register('foundHelper', helperName);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1426);
var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1427);
var nextStack = this.nextStack();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1429);
this.source.push('if (foundHelper) { ' + nextStack + ' = foundHelper.call(' + helper.callParams + '); }');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1430);
this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '.apply(depth0) : ' + nextStack + '; }');
    },

    // [invokePartial]
    //
    // On stack, before: context, ...
    // On stack after: result of partial invocation
    //
    // This operation pops off a context, invokes a partial with that context,
    // and pushes the result of the invocation back.
    invokePartial: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokePartial", 1440);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1441);
var params = [this.nameLookup('partials', name, 'partial'), "'" + name + "'", this.popStack(), "helpers", "partials"];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1443);
if (this.options.data) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1444);
params.push("data");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1447);
this.context.aliases.self = "this";
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1448);
this.pushStack("self.invokePartial(" + params.join(", ") + ");");
    },

    // [assignToHash]
    //
    // On stack, before: value, hash, ...
    // On stack, after: hash, ...
    //
    // Pops a value and hash off the stack, assigns `hash[key] = value`
    // and pushes the hash back onto the stack.
    assignToHash: function(key) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "assignToHash", 1458);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1459);
var value = this.popStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1460);
var hash = this.topStack();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1462);
this.source.push(hash + "['" + key + "'] = " + value + ";");
    },

    // HELPERS

    compiler: JavaScriptCompiler,

    compileChildren: function(environment, options) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compileChildren", 1469);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1470);
var children = environment.children, child, compiler;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1472);
for(var i=0, l=children.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1473);
child = children[i];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1474);
compiler = new this.compiler();

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1476);
this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1477);
var index = this.context.programs.length;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1478);
child.index = index;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1479);
child.name = 'program' + index;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1480);
this.context.programs[index] = compiler.compile(child, options, this.context);
      }
    },

    programExpression: function(guid) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "programExpression", 1484);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1485);
this.context.aliases.self = "this";

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1487);
if(guid == null) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1488);
return "self.noop";
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1491);
var child = this.environment.children[guid],
          depths = child.depths.list, depth;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1494);
var programParams = [child.index, child.name, "data"];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1496);
for(var i=0, l = depths.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1497);
depth = depths[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1499);
if(depth === 1) { programParams.push("depth0"); }
        else { programParams.push("depth" + (depth - 1)); }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1503);
if(depths.length === 0) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1504);
return "self.program(" + programParams.join(", ") + ")";
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1506);
programParams.shift();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1507);
return "self.programWithDepth(" + programParams.join(", ") + ")";
      }
    },

    register: function(name, val) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "register", 1511);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1512);
this.useRegister(name);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1513);
this.source.push(name + " = " + val + ";");
    },

    useRegister: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "useRegister", 1516);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1517);
if(!this.registers[name]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1518);
this.registers[name] = true;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1519);
this.registers.list.push(name);
      }
    },

    pushStackLiteral: function(item) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushStackLiteral", 1523);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1524);
this.compileStack.push(new Literal(item));
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1525);
return item;
    },

    pushStack: function(item) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushStack", 1528);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1529);
this.source.push(this.incrStack() + " = " + item + ";");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1530);
this.compileStack.push("stack" + this.stackSlot);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1531);
return "stack" + this.stackSlot;
    },

    replaceStack: function(callback) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "replaceStack", 1534);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1535);
var item = callback.call(this, this.topStack());

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1537);
this.source.push(this.topStack() + " = " + item + ";");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1538);
return "stack" + this.stackSlot;
    },

    nextStack: function(skipCompileStack) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "nextStack", 1541);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1542);
var name = this.incrStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1543);
this.compileStack.push("stack" + this.stackSlot);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1544);
return name;
    },

    incrStack: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "incrStack", 1547);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1548);
this.stackSlot++;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1549);
if(this.stackSlot > this.stackVars.length) { this.stackVars.push("stack" + this.stackSlot); }
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1550);
return "stack" + this.stackSlot;
    },

    popStack: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "popStack", 1553);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1554);
var item = this.compileStack.pop();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1556);
if (item instanceof Literal) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1557);
return item.value;
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1559);
this.stackSlot--;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1560);
return item;
      }
    },

    topStack: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "topStack", 1564);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1565);
var item = this.compileStack[this.compileStack.length - 1];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1567);
if (item instanceof Literal) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1568);
return item.value;
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1570);
return item;
      }
    },

    quotedString: function(str) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "quotedString", 1574);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1575);
return '"' + str
        .replace(/\\/g, '\\\\')
        .replace(/"/g, '\\"')
        .replace(/\n/g, '\\n')
        .replace(/\r/g, '\\r') + '"';
    },

    setupHelper: function(paramSize, name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupHelper", 1582);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1583);
var params = [];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1584);
this.setupParams(paramSize, params);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1585);
var foundHelper = this.nameLookup('helpers', name, 'helper');

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1587);
return {
        params: params,
        name: foundHelper,
        callParams: ["depth0"].concat(params).join(", "),
        helperMissingParams: ["depth0", this.quotedString(name)].concat(params).join(", ")
      };
    },

    // the params and contexts arguments are passed in arrays
    // to fill in
    setupParams: function(paramSize, params) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupParams", 1597);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1598);
var options = [], contexts = [], param, inverse, program;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1600);
options.push("hash:" + this.popStack());

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1602);
inverse = this.popStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1603);
program = this.popStack();

      // Avoid setting fn and inverse if neither are set. This allows
      // helpers to do a check for `if (options.fn)`
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1607);
if (program || inverse) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1608);
if (!program) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1609);
this.context.aliases.self = "this";
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1610);
program = "self.noop";
        }

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1613);
if (!inverse) {
         _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1614);
this.context.aliases.self = "this";
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1615);
inverse = "self.noop";
        }

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1618);
options.push("inverse:" + inverse);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1619);
options.push("fn:" + program);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1622);
for(var i=0; i<paramSize; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1623);
param = this.popStack();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1624);
params.push(param);

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1626);
if(this.options.stringParams) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1627);
contexts.push(this.popStack());
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1631);
if (this.options.stringParams) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1632);
options.push("contexts:[" + contexts.join(",") + "]");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1635);
if(this.options.data) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1636);
options.push("data:data");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1639);
params.push("{" + options.join(",") + "}");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1640);
return params.join(", ");
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1644);
var reservedWords = (
    "break else new var" +
    " case finally return void" +
    " catch for switch while" +
    " continue function this with" +
    " default if throw" +
    " delete in try" +
    " do instanceof typeof" +
    " abstract enum int short" +
    " boolean export interface static" +
    " byte extends long super" +
    " char final native synchronized" +
    " class float package throws" +
    " const goto private transient" +
    " debugger implements protected volatile" +
    " double import public let yield"
  ).split(" ");

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1662);
var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1664);
for(var i=0, l=reservedWords.length; i<l; i++) {
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1665);
compilerWords[reservedWords[i]] = true;
  }

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1668);
JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "isValidJavaScriptVariableName", 1668);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1669);
if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(name)) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1670);
return true;
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1672);
return false;
  };

})(Handlebars.Compiler, Handlebars.JavaScriptCompiler);

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1677);
Handlebars.precompile = function(string, options) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "precompile", 1677);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1678);
options = options || {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1680);
var ast = Handlebars.parse(string);
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1681);
var environment = new Handlebars.Compiler().compile(ast, options);
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1682);
return new Handlebars.JavaScriptCompiler().compile(environment, options);
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1685);
Handlebars.compile = function(string, options) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 1685);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1686);
options = options || {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1688);
var compiled;
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1689);
function compile() {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 1689);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1690);
var ast = Handlebars.parse(string);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1691);
var environment = new Handlebars.Compiler().compile(ast, options);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1692);
var templateSpec = new Handlebars.JavaScriptCompiler().compile(environment, options, undefined, true);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1693);
return Handlebars.template(templateSpec);
  }

  // Template is only compiled on first use and cached after that point.
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1697);
return function(context, options) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 10)", 1697);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1698);
if (!compiled) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1699);
compiled = compile();
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1701);
return compiled.call(this, context, options);
  };
};

// END(BROWSER)
// This file contains YUI-specific wrapper code and overrides for the
// handlebars-compiler module.

/**
Handlebars parser and compiler. Use this module when you need to compile
Handlebars templates.

@module handlebars
@submodule handlebars-compiler
*/

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1717);
var levels = ['debug', 'info', 'warn', 'error'];

/**
Logs a debugging message. Note that messages will only be logged when the
handlebars module is loaded in "debug" mode.

@method log
@param {String} level Log level for this message. Supported levels are "debug",
    "info", "warn", and "error".
@param {String} message Message to log.
@for Handlebars
*/
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1729);
Handlebars.logger.log = function (level, message) {

};

/**
Compiles and renders a Handlebars template string in a single step.

If you'll be using a template more than once, it's more efficient to compile it
into a function once using `compile()`, and then render it whenever you need to
by simply executing the compiled function. However, if you only need to compile
and render a template once, `render()` is a handy shortcut for doing both in a
single step.

@example

    Y.Handlebars.render('The pie of the day is {{pie}}!', {
        pie: 'Maple Custard'
    });
    // => "The pie of the day is Maple Custard!"

@method render
@param {String} string Handlebars template string to render.
@param {Object} context Context object to pass to the template.
@param {Object} [options] Compile/render options.
    @param {Object} [options.helpers] Helper functions.
    @param {Object} [options.partials] Partials.
    @param {Object} [options.data] Data.
@return {String} Rendered template string.
*/
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1758);
Handlebars.render = function (string, context, options) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "render", 1758);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1759);
return Handlebars.compile(string)(context, options);
};

// The rest of this file is just API docs for methods defined in Handlebars
// itself.

/**
Compiles a Handlebars template string into a function. To render the template,
call the function and pass in a context object.

@example

    var template = Y.Handlebars.compile('The pie of the day is {{pie}}!.');
    template({pie: 'Pecan'});
    // => "The pie of the day is Pecan!"

@method compile
@param {String} string Handlebars template string to compile.
@param {Object} [options] Compiler options.
@return {Function} Compiled template function.
*/

/**
Precompiles a Handlebars template string into a string of JavaScript code. This
can be used to precompile a template at build time or on the server, and the
resulting template can then be rendered at runtime or on the client without
needing to go through a compile step.

To render a precompiled template, evaluate the code and then pass the resulting
function to `Y.Handlebars.template()` to get back an executable template
function.

@method precompile
@param {String} string Handlebars template string to compile.
@param {Object} [options] Compiler options.
@return {String} Precompiled template code.
*/


}, '3.9.1', {"requires": ["handlebars-base"]});
