1:88 NEWLINE 2:1 AT 2:2 IDENT(table) 2:7 LPAREN 2:8 IDENT(name) 2:12 COLON 2:14 STR(products) 2:24 COMMA 2:26 IDENT(index) 2:31 COLON 2:33 LBRACKET 2:34 IDENT(name) 2:38 RBRACKET 2:39 RPAREN 2:40 NEWLINE 3:1 KW_CLASS 3:7 IDENT(Product) 3:15 LBRACE 3:16 NEWLINE 4:3 KW_LET 4:7 IDENT(name) 4:11 COLON 4:13 IDENT(Text) 4:18 EQ 4:20 STR(widget) 4:28 NEWLINE 5:3 KW_LET 5:7 IDENT(price) 5:12 COLON 5:14 IDENT(Int) 5:18 EQ 5:20 INT(42) 5:22 NEWLINE 6:3 KW_LET 6:7 IDENT(tags) 6:11 COLON 6:13 LBRACKET 6:14 IDENT(Text) 6:18 RBRACKET 6:20 EQ 6:22 LBRACKET 6:23 RBRACKET 6:24 NEWLINE 7:3 KW_LET 7:7 IDENT(in_stock) 7:15 COLON 7:17 IDENT(Bool) 7:22 EQ 7:24 KW_TRUE 7:28 NEWLINE 9:3 KW_FN 9:6 IDENT(discounted) 9:16 LPAREN 9:17 IDENT(pct) 9:20 COLON 9:22 IDENT(Int) 9:25 RPAREN 9:27 ARROW 9:30 IDENT(Int) 9:34 LBRACE 9:35 NEWLINE 10:5 KW_LET 10:9 IDENT(cut) 10:13 EQ 10:15 IDENT(self) 10:19 DOT 10:20 IDENT(price) 10:26 STAR 10:28 IDENT(pct) 10:32 SLASH 10:34 INT(100) 10:37 NEWLINE 11:5 KW_IF 11:8 IDENT(cut) 11:12 GTEQ 11:15 IDENT(self) 11:19 DOT 11:20 IDENT(price) 11:26 LBRACE 11:27 NEWLINE 12:7 KW_RETURN 12:14 INT(0) 12:15 NEWLINE 13:5 RBRACE 13:7 KW_ELSE 13:12 LBRACE 13:13 NEWLINE 14:7 KW_RETURN 14:14 IDENT(self) 14:18 DOT 14:19 IDENT(price) 14:25 DASH 14:27 IDENT(cut) 14:30 NEWLINE 15:5 RBRACE 15:6 NEWLINE 16:3 RBRACE 16:4 NEWLINE 18:3 KW_FN 18:6 IDENT(total) 18:11 LPAREN 18:12 IDENT(counts) 18:18 COLON 18:20 LBRACKET 18:21 IDENT(Int) 18:24 RBRACKET 18:25 RPAREN 18:27 ARROW 18:30 IDENT(Int) 18:34 LBRACE 18:35 NEWLINE 19:5 KW_LET 19:9 IDENT(sum) 19:13 EQ 19:15 INT(0) 19:16 NEWLINE 20:5 KW_FOR 20:9 IDENT(n) 20:11 KW_IN 20:14 IDENT(counts) 20:21 LBRACE 20:22 NEWLINE 21:7 IDENT(sum) 21:11 EQ 21:13 IDENT(sum) 21:17 PLUS 21:19 IDENT(n) 21:20 NEWLINE 22:5 RBRACE 22:6 NEWLINE 23:5 KW_RETURN 23:12 IDENT(sum) 23:15 NEWLINE 24:3 RBRACE 24:4 NEWLINE 26:3 KW_FN 26:6 IDENT(clearance) 26:15 LPAREN 26:16 RPAREN 26:18 ARROW 26:21 IDENT(Bool) 26:26 LBRACE 26:27 NEWLINE 27:5 KW_LET 27:9 IDENT(ok) 27:12 EQ 27:14 IDENT(self) 27:18 DOT 27:19 IDENT(price) 27:25 LTEQ 27:28 INT(50) 27:30 NEWLINE 28:5 KW_WHILE 28:11 IDENT(ok) 28:14 LBRACE 28:15 NEWLINE 29:7 KW_RETURN 29:14 KW_FALSE 29:19 NEWLINE 30:5 RBRACE 30:6 NEWLINE 31:5 KW_RETURN 31:12 IDENT(ok) 31:14 NEWLINE 32:3 RBRACE 32:4 NEWLINE 33:1 RBRACE 33:2 NEWLINE 34:1 EOF