diff --git a/compiler/noirc_evaluator/src/errors.rs b/compiler/noirc_evaluator/src/errors.rs index 6178cf9b9d3..508c8c18360 100644 --- a/compiler/noirc_evaluator/src/errors.rs +++ b/compiler/noirc_evaluator/src/errors.rs @@ -31,6 +31,10 @@ pub enum RuntimeError { range: String, call_stack: CallStack, }, + #[error( + "Attempted to recurse more than {limit} times during inlining function '{function_name}'" + )] + RecursionLimit { limit: u32, function_name: String, call_stack: CallStack }, #[error("Expected array index to fit into a u64")] TypeConversion { from: String, into: String, call_stack: CallStack }, #[error( @@ -201,7 +205,8 @@ impl RuntimeError { | RuntimeError::ReturnedFunctionFromDynamicIf { call_stack } | RuntimeError::BreakOrContinue { call_stack } | RuntimeError::DynamicIndexingWithReference { call_stack } - | RuntimeError::UnknownReference { call_stack } => call_stack, + | RuntimeError::UnknownReference { call_stack } + | RuntimeError::RecursionLimit { call_stack, .. } => call_stack, } } } diff --git a/compiler/noirc_evaluator/src/ssa.rs b/compiler/noirc_evaluator/src/ssa.rs index eae0928efb6..1b3f379af2e 100644 --- a/compiler/noirc_evaluator/src/ssa.rs +++ b/compiler/noirc_evaluator/src/ssa.rs @@ -172,11 +172,14 @@ pub fn primary_passes(options: &SsaEvaluatorOptions) -> Vec { // https://github.com/AztecProtocol/aztec-packages/pull/11294#issuecomment-2622809518 //SsaPass::new(Ssa::mem2reg, "Mem2Reg (1st)"), SsaPass::new(Ssa::remove_paired_rc, "Removing Paired rc_inc & rc_decs"), - SsaPass::new( + SsaPass::new_try( move |ssa| ssa.preprocess_functions(options.inliner_aggressiveness), "Preprocessing Functions", ), - SsaPass::new(move |ssa| ssa.inline_functions(options.inliner_aggressiveness), "Inlining"), + SsaPass::new_try( + move |ssa| ssa.inline_functions(options.inliner_aggressiveness), + "Inlining", + ), // Run mem2reg with the CFG separated into blocks SsaPass::new(Ssa::mem2reg, "Mem2Reg"), SsaPass::new(Ssa::simplify_cfg, "Simplifying"), @@ -202,7 +205,7 @@ pub fn primary_passes(options: &SsaEvaluatorOptions) -> Vec { // Before flattening is run, we treat functions marked with the `InlineType::NoPredicates` as an entry point. // This pass must come immediately following `mem2reg` as the succeeding passes // may create an SSA which inlining fails to handle. - SsaPass::new( + SsaPass::new_try( move |ssa| ssa.inline_functions_with_no_predicates(options.inliner_aggressiveness), "Inlining", ), diff --git a/compiler/noirc_evaluator/src/ssa/opt/inline_simple_functions.rs b/compiler/noirc_evaluator/src/ssa/opt/inline_simple_functions.rs index 0a3449a6314..32da3129d0a 100644 --- a/compiler/noirc_evaluator/src/ssa/opt/inline_simple_functions.rs +++ b/compiler/noirc_evaluator/src/ssa/opt/inline_simple_functions.rs @@ -68,7 +68,12 @@ impl Ssa { }; self.functions = btree_map(&self.functions, |(id, function)| { - (*id, function.inlined(&self, &should_inline_call)) + ( + *id, + function + .inlined(&self, &should_inline_call) + .expect("simple function should not be recursive"), + ) }); self diff --git a/compiler/noirc_evaluator/src/ssa/opt/inlining.rs b/compiler/noirc_evaluator/src/ssa/opt/inlining.rs index 6f544294462..a60359a6cc8 100644 --- a/compiler/noirc_evaluator/src/ssa/opt/inlining.rs +++ b/compiler/noirc_evaluator/src/ssa/opt/inlining.rs @@ -4,9 +4,10 @@ //! be a single function remaining when the pass finishes. use std::collections::{HashSet, VecDeque}; +use crate::errors::RuntimeError; use acvm::acir::AcirField; use im::HashMap; -use iter_extended::{btree_map, vecmap}; +use iter_extended::vecmap; use noirc_errors::call_stack::CallStackId; use crate::ssa::{ @@ -50,14 +51,17 @@ impl Ssa { /// /// This step should run after runtime separation, since it relies on the runtime of the called functions being final. #[tracing::instrument(level = "trace", skip(self))] - pub(crate) fn inline_functions(self, aggressiveness: i64) -> Ssa { + pub(crate) fn inline_functions(self, aggressiveness: i64) -> Result { let call_graph = CallGraph::from_ssa_weighted(&self); let inline_infos = compute_inline_infos(&self, &call_graph, false, aggressiveness); Self::inline_functions_inner(self, &inline_infos, false) } /// Run the inlining pass where functions marked with `InlineType::NoPredicates` as not entry points - pub(crate) fn inline_functions_with_no_predicates(self, aggressiveness: i64) -> Ssa { + pub(crate) fn inline_functions_with_no_predicates( + self, + aggressiveness: i64, + ) -> Result { let call_graph = CallGraph::from_ssa_weighted(&self); let inline_infos = compute_inline_infos(&self, &call_graph, true, aggressiveness); Self::inline_functions_inner(self, &inline_infos, true) @@ -67,7 +71,7 @@ impl Ssa { mut self, inline_infos: &InlineInfos, inline_no_predicates_functions: bool, - ) -> Ssa { + ) -> Result { let inline_targets = inline_infos.iter().filter_map(|(id, info)| { let dfg = &self.functions[id].dfg; info.is_inline_target(dfg).then_some(*id) @@ -91,13 +95,15 @@ impl Ssa { // NOTE: Functions are processed independently of each other, with the final mapping replacing the original, // instead of inlining the "leaf" functions, moving up towards the entry point. - self.functions = btree_map(inline_targets, |entry_point| { + let mut new_functions = std::collections::BTreeMap::new(); + for entry_point in inline_targets { let function = &self.functions[&entry_point]; - let new_function = function.inlined(&self, &should_inline_call); - (entry_point, new_function) - }); + let inlined = function.inlined(&self, &should_inline_call)?; + new_functions.insert(entry_point, inlined); + } + self.functions = new_functions; - self + Ok(self) } } @@ -107,7 +113,7 @@ impl Function { &self, ssa: &Ssa, should_inline_call: &impl Fn(&Function) -> bool, - ) -> Function { + ) -> Result { InlineContext::new(ssa, self.id()).inline_all(ssa, &should_inline_call) } } @@ -180,7 +186,7 @@ impl InlineContext { mut self, ssa: &Ssa, should_inline_call: &impl Fn(&Function) -> bool, - ) -> Function { + ) -> Result { let entry_point = &ssa.functions[&self.entry_point]; let globals = &entry_point.dfg.globals; @@ -204,7 +210,7 @@ impl InlineContext { } context.blocks.insert(context.source_function.entry_block(), entry_block); - context.inline_blocks(ssa, should_inline_call); + context.inline_blocks(ssa, should_inline_call)?; // translate databus values let databus = entry_point.dfg.data_bus.map_values(|t| context.translate_value(t)); @@ -213,7 +219,7 @@ impl InlineContext { assert_eq!(new_ssa.functions.len(), 1); let mut new_func = new_ssa.functions.pop_first().unwrap().1; new_func.dfg.data_bus = databus; - new_func + Ok(new_func) } /// Inlines a function into the current function and returns the translated return values @@ -224,17 +230,16 @@ impl InlineContext { id: FunctionId, arguments: &[ValueId], should_inline_call: &impl Fn(&Function) -> bool, - ) -> Vec { + ) -> Result, RuntimeError> { self.recursion_level += 1; let source_function = &ssa.functions[&id]; - if self.recursion_level > RECURSION_LIMIT { - panic!( - "Attempted to recur more than {RECURSION_LIMIT} times during inlining function '{}':\n{}", - source_function.name(), - source_function - ); + return Err(RuntimeError::RecursionLimit { + function_name: source_function.name().to_string(), + limit: RECURSION_LIMIT, + call_stack: self.builder.current_function.dfg.get_call_stack(self.call_stack), + }); } let entry_point = &ssa.functions[&self.entry_point]; @@ -248,9 +253,9 @@ impl InlineContext { let current_block = context.context.builder.current_block(); context.blocks.insert(source_function.entry_block(), current_block); - let return_values = context.inline_blocks(ssa, should_inline_call); + let return_values = context.inline_blocks(ssa, should_inline_call)?; self.recursion_level -= 1; - return_values + Ok(return_values) } } @@ -392,7 +397,7 @@ impl<'function> PerFunctionContext<'function> { &mut self, ssa: &Ssa, should_inline_call: &impl Fn(&Function) -> bool, - ) -> Vec { + ) -> Result, RuntimeError> { let mut seen_blocks = HashSet::new(); let mut block_queue = VecDeque::new(); block_queue.push_back(self.source_function.entry_block()); @@ -409,7 +414,7 @@ impl<'function> PerFunctionContext<'function> { self.context.builder.switch_to_block(translated_block_id); seen_blocks.insert(source_block_id); - self.inline_block_instructions(ssa, source_block_id, should_inline_call); + self.inline_block_instructions(ssa, source_block_id, should_inline_call)?; if let Some((block, values)) = self.handle_terminator_instruction(source_block_id, &mut block_queue) @@ -418,7 +423,7 @@ impl<'function> PerFunctionContext<'function> { } } - self.handle_function_returns(function_returns) + Ok(self.handle_function_returns(function_returns)) } /// Handle inlining a function's possibly multiple return instructions. @@ -458,7 +463,7 @@ impl<'function> PerFunctionContext<'function> { ssa: &Ssa, block_id: BasicBlockId, should_inline_call: &impl Fn(&Function) -> bool, - ) { + ) -> Result<(), RuntimeError> { let mut side_effects_enabled: Option = None; let block = &self.source_function.dfg[block_id]; @@ -474,7 +479,7 @@ impl<'function> PerFunctionContext<'function> { func_id, arguments, should_inline_call, - ); + )?; // This is only relevant during handling functions with `InlineType::NoPredicates` as these // can pollute the function they're being inlined into with `Instruction::EnabledSideEffects`, @@ -503,6 +508,7 @@ impl<'function> PerFunctionContext<'function> { _ => self.push_instruction(*id), } } + Ok(()) } fn should_inline_call<'a>( @@ -545,7 +551,7 @@ impl<'function> PerFunctionContext<'function> { function: FunctionId, arguments: &[ValueId], should_inline_call: &impl Fn(&Function) -> bool, - ) { + ) -> Result<(), RuntimeError> { let old_results = self.source_function.dfg.instruction_results(call_id); let arguments = vecmap(arguments, |arg| self.translate_value(*arg)); @@ -561,7 +567,7 @@ impl<'function> PerFunctionContext<'function> { self.context.call_stack = new_call_stack; let new_results = - self.context.inline_function(ssa, function, &arguments, should_inline_call); + self.context.inline_function(ssa, function, &arguments, should_inline_call)?; self.context.call_stack = self .context .builder @@ -572,6 +578,7 @@ impl<'function> PerFunctionContext<'function> { let new_results = InsertInstructionResult::Results(call_id, &new_results); Self::insert_new_instruction_results(&mut self.values, old_results, new_results); + Ok(()) } /// Push the given instruction from the source_function into the current block of the @@ -759,7 +766,7 @@ mod test { } "; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.inline_functions(i64::MAX); + let ssa = ssa.inline_functions(i64::MAX).unwrap(); assert_ssa_snapshot!(ssa, @r" acir(inline) fn foo f0 { b0(): @@ -798,7 +805,7 @@ mod test { "; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.inline_functions(i64::MAX); + let ssa = ssa.inline_functions(i64::MAX).unwrap(); assert_ssa_snapshot!(ssa, @r" acir(inline) fn main f0 { b0(v0: Field): @@ -834,7 +841,7 @@ mod test { "; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.inline_functions(i64::MAX); + let ssa = ssa.inline_functions(i64::MAX).unwrap(); assert_ssa_snapshot!(ssa, @r" acir(inline) fn main f0 { b0(): @@ -892,7 +899,7 @@ mod test { "; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.inline_functions(i64::MAX); + let ssa = ssa.inline_functions(i64::MAX).unwrap(); assert_ssa_snapshot!(ssa, @r" acir(inline) fn main f0 { b0(v0: u1): @@ -909,10 +916,9 @@ mod test { } #[test] - #[should_panic( - expected = "Attempted to recur more than 1000 times during inlining function 'foo':\nacir(inline) fn foo f1 {" - )] fn unconditional_recursion() { + // f1 is calling itself, which results in an infinite recursion + // it is expected that inlining this program returns an error. let src = " acir(inline) fn main f0 { b0(): @@ -928,7 +934,11 @@ mod test { let ssa = Ssa::from_str(src).unwrap(); assert_eq!(ssa.functions.len(), 2); - let _ = ssa.inline_functions(i64::MAX); + let ssa = ssa.inline_functions(i64::MAX); + let Err(err) = ssa else { + panic!("inline_functions cannot inline recursive functions"); + }; + insta::assert_snapshot!(err.to_string(), @"Attempted to recurse more than 1000 times during inlining function 'foo'"); } #[test] @@ -946,7 +956,7 @@ mod test { } "; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.inline_functions(i64::MIN); + let ssa = ssa.inline_functions(i64::MIN).unwrap(); // No inlining has happened assert_normalized_ssa_equals(ssa, src); } @@ -976,7 +986,7 @@ mod test { "; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.inline_functions(0); + let ssa = ssa.inline_functions(0).unwrap(); // No inlining has happened in f0 assert_ssa_snapshot!(ssa, @r" brillig(inline) fn foo f0 { diff --git a/compiler/noirc_evaluator/src/ssa/opt/preprocess_fns.rs b/compiler/noirc_evaluator/src/ssa/opt/preprocess_fns.rs index e041cf58aea..1ebcf787598 100644 --- a/compiler/noirc_evaluator/src/ssa/opt/preprocess_fns.rs +++ b/compiler/noirc_evaluator/src/ssa/opt/preprocess_fns.rs @@ -1,7 +1,7 @@ //! Pre-process functions before inlining them into others. use crate::ssa::{ - Ssa, + RuntimeError, Ssa, ir::{ call_graph::CallGraph, function::{Function, RuntimeType}, @@ -12,7 +12,7 @@ use super::inlining::{self, InlineInfo}; impl Ssa { /// Run pre-processing steps on functions in isolation. - pub(crate) fn preprocess_functions(mut self, aggressiveness: i64) -> Ssa { + pub(crate) fn preprocess_functions(mut self, aggressiveness: i64) -> Result { let call_graph = CallGraph::from_ssa_weighted(&self); // Bottom-up order, starting with the "leaf" functions, so we inline already optimized code into the ones that call them. let bottom_up = inlining::inline_info::compute_bottom_up_order(&self, &call_graph); @@ -53,7 +53,7 @@ impl Ssa { } // Start with an inline pass. - let mut function = function.inlined(&self, &should_inline_call); + let mut function = function.inlined(&self, &should_inline_call)?; // Help unrolling determine bounds. function.as_slice_optimization(); // Prepare for unrolling @@ -73,7 +73,7 @@ impl Ssa { // Remove any functions that have been inlined into others already. let ssa = self.remove_unreachable_functions(); // Remove leftover instructions. - ssa.dead_instruction_elimination_pre_flattening() + Ok(ssa.dead_instruction_elimination_pre_flattening()) } } @@ -111,7 +111,7 @@ mod tests { "#; let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.preprocess_functions(i64::MAX); + let ssa = ssa.preprocess_functions(i64::MAX).unwrap(); assert_ssa_snapshot!(ssa, @r#" acir(inline) fn main f0 { diff --git a/test_programs/execution_panic/regression_4828/Nargo.toml b/test_programs/compile_failure/regression_4828/Nargo.toml similarity index 100% rename from test_programs/execution_panic/regression_4828/Nargo.toml rename to test_programs/compile_failure/regression_4828/Nargo.toml diff --git a/test_programs/execution_panic/regression_4828/src/main.nr b/test_programs/compile_failure/regression_4828/src/main.nr similarity index 100% rename from test_programs/execution_panic/regression_4828/src/main.nr rename to test_programs/compile_failure/regression_4828/src/main.nr diff --git a/tooling/nargo_cli/tests/snapshots/compile_failure/regression_4828/execute__tests__stderr.snap b/tooling/nargo_cli/tests/snapshots/compile_failure/regression_4828/execute__tests__stderr.snap new file mode 100644 index 00000000000..9836f28fdcb --- /dev/null +++ b/tooling/nargo_cli/tests/snapshots/compile_failure/regression_4828/execute__tests__stderr.snap @@ -0,0 +1,1014 @@ +--- +source: tooling/nargo_cli/tests/execute.rs +expression: stderr +--- +error: Attempted to recurse more than 1000 times during inlining function 'main' + ┌─ src/main.nr:3:5 + │ +3 │ main(); + │ ------ + │ + = Call stack: + 1. src/main.nr:3:5 + 2. src/main.nr:3:5 + 3. src/main.nr:3:5 + 4. src/main.nr:3:5 + 5. src/main.nr:3:5 + 6. src/main.nr:3:5 + 7. src/main.nr:3:5 + 8. src/main.nr:3:5 + 9. src/main.nr:3:5 + 10. src/main.nr:3:5 + 11. src/main.nr:3:5 + 12. src/main.nr:3:5 + 13. src/main.nr:3:5 + 14. src/main.nr:3:5 + 15. src/main.nr:3:5 + 16. src/main.nr:3:5 + 17. src/main.nr:3:5 + 18. src/main.nr:3:5 + 19. src/main.nr:3:5 + 20. src/main.nr:3:5 + 21. src/main.nr:3:5 + 22. src/main.nr:3:5 + 23. src/main.nr:3:5 + 24. src/main.nr:3:5 + 25. src/main.nr:3:5 + 26. src/main.nr:3:5 + 27. src/main.nr:3:5 + 28. src/main.nr:3:5 + 29. src/main.nr:3:5 + 30. src/main.nr:3:5 + 31. src/main.nr:3:5 + 32. src/main.nr:3:5 + 33. src/main.nr:3:5 + 34. src/main.nr:3:5 + 35. src/main.nr:3:5 + 36. src/main.nr:3:5 + 37. src/main.nr:3:5 + 38. src/main.nr:3:5 + 39. src/main.nr:3:5 + 40. src/main.nr:3:5 + 41. src/main.nr:3:5 + 42. src/main.nr:3:5 + 43. src/main.nr:3:5 + 44. src/main.nr:3:5 + 45. src/main.nr:3:5 + 46. src/main.nr:3:5 + 47. src/main.nr:3:5 + 48. src/main.nr:3:5 + 49. src/main.nr:3:5 + 50. src/main.nr:3:5 + 51. src/main.nr:3:5 + 52. src/main.nr:3:5 + 53. src/main.nr:3:5 + 54. src/main.nr:3:5 + 55. src/main.nr:3:5 + 56. src/main.nr:3:5 + 57. src/main.nr:3:5 + 58. src/main.nr:3:5 + 59. src/main.nr:3:5 + 60. src/main.nr:3:5 + 61. src/main.nr:3:5 + 62. src/main.nr:3:5 + 63. src/main.nr:3:5 + 64. src/main.nr:3:5 + 65. src/main.nr:3:5 + 66. src/main.nr:3:5 + 67. src/main.nr:3:5 + 68. src/main.nr:3:5 + 69. src/main.nr:3:5 + 70. src/main.nr:3:5 + 71. src/main.nr:3:5 + 72. src/main.nr:3:5 + 73. src/main.nr:3:5 + 74. src/main.nr:3:5 + 75. src/main.nr:3:5 + 76. src/main.nr:3:5 + 77. src/main.nr:3:5 + 78. src/main.nr:3:5 + 79. src/main.nr:3:5 + 80. src/main.nr:3:5 + 81. src/main.nr:3:5 + 82. src/main.nr:3:5 + 83. src/main.nr:3:5 + 84. src/main.nr:3:5 + 85. src/main.nr:3:5 + 86. src/main.nr:3:5 + 87. src/main.nr:3:5 + 88. src/main.nr:3:5 + 89. src/main.nr:3:5 + 90. src/main.nr:3:5 + 91. src/main.nr:3:5 + 92. src/main.nr:3:5 + 93. src/main.nr:3:5 + 94. src/main.nr:3:5 + 95. src/main.nr:3:5 + 96. src/main.nr:3:5 + 97. src/main.nr:3:5 + 98. src/main.nr:3:5 + 99. src/main.nr:3:5 + 100. src/main.nr:3:5 + 101. src/main.nr:3:5 + 102. src/main.nr:3:5 + 103. src/main.nr:3:5 + 104. src/main.nr:3:5 + 105. src/main.nr:3:5 + 106. src/main.nr:3:5 + 107. src/main.nr:3:5 + 108. src/main.nr:3:5 + 109. src/main.nr:3:5 + 110. src/main.nr:3:5 + 111. src/main.nr:3:5 + 112. src/main.nr:3:5 + 113. src/main.nr:3:5 + 114. src/main.nr:3:5 + 115. src/main.nr:3:5 + 116. src/main.nr:3:5 + 117. src/main.nr:3:5 + 118. src/main.nr:3:5 + 119. src/main.nr:3:5 + 120. src/main.nr:3:5 + 121. src/main.nr:3:5 + 122. src/main.nr:3:5 + 123. src/main.nr:3:5 + 124. src/main.nr:3:5 + 125. src/main.nr:3:5 + 126. src/main.nr:3:5 + 127. src/main.nr:3:5 + 128. src/main.nr:3:5 + 129. src/main.nr:3:5 + 130. src/main.nr:3:5 + 131. src/main.nr:3:5 + 132. src/main.nr:3:5 + 133. src/main.nr:3:5 + 134. src/main.nr:3:5 + 135. src/main.nr:3:5 + 136. src/main.nr:3:5 + 137. src/main.nr:3:5 + 138. src/main.nr:3:5 + 139. src/main.nr:3:5 + 140. src/main.nr:3:5 + 141. src/main.nr:3:5 + 142. src/main.nr:3:5 + 143. src/main.nr:3:5 + 144. src/main.nr:3:5 + 145. src/main.nr:3:5 + 146. src/main.nr:3:5 + 147. src/main.nr:3:5 + 148. src/main.nr:3:5 + 149. src/main.nr:3:5 + 150. src/main.nr:3:5 + 151. src/main.nr:3:5 + 152. src/main.nr:3:5 + 153. src/main.nr:3:5 + 154. src/main.nr:3:5 + 155. src/main.nr:3:5 + 156. src/main.nr:3:5 + 157. src/main.nr:3:5 + 158. src/main.nr:3:5 + 159. src/main.nr:3:5 + 160. src/main.nr:3:5 + 161. src/main.nr:3:5 + 162. src/main.nr:3:5 + 163. src/main.nr:3:5 + 164. src/main.nr:3:5 + 165. src/main.nr:3:5 + 166. src/main.nr:3:5 + 167. src/main.nr:3:5 + 168. src/main.nr:3:5 + 169. src/main.nr:3:5 + 170. src/main.nr:3:5 + 171. src/main.nr:3:5 + 172. src/main.nr:3:5 + 173. src/main.nr:3:5 + 174. src/main.nr:3:5 + 175. src/main.nr:3:5 + 176. src/main.nr:3:5 + 177. src/main.nr:3:5 + 178. src/main.nr:3:5 + 179. src/main.nr:3:5 + 180. src/main.nr:3:5 + 181. src/main.nr:3:5 + 182. src/main.nr:3:5 + 183. src/main.nr:3:5 + 184. src/main.nr:3:5 + 185. src/main.nr:3:5 + 186. src/main.nr:3:5 + 187. src/main.nr:3:5 + 188. src/main.nr:3:5 + 189. src/main.nr:3:5 + 190. src/main.nr:3:5 + 191. src/main.nr:3:5 + 192. src/main.nr:3:5 + 193. src/main.nr:3:5 + 194. src/main.nr:3:5 + 195. src/main.nr:3:5 + 196. src/main.nr:3:5 + 197. src/main.nr:3:5 + 198. src/main.nr:3:5 + 199. src/main.nr:3:5 + 200. src/main.nr:3:5 + 201. src/main.nr:3:5 + 202. src/main.nr:3:5 + 203. src/main.nr:3:5 + 204. src/main.nr:3:5 + 205. src/main.nr:3:5 + 206. src/main.nr:3:5 + 207. src/main.nr:3:5 + 208. src/main.nr:3:5 + 209. src/main.nr:3:5 + 210. src/main.nr:3:5 + 211. src/main.nr:3:5 + 212. src/main.nr:3:5 + 213. src/main.nr:3:5 + 214. src/main.nr:3:5 + 215. src/main.nr:3:5 + 216. src/main.nr:3:5 + 217. src/main.nr:3:5 + 218. src/main.nr:3:5 + 219. src/main.nr:3:5 + 220. src/main.nr:3:5 + 221. src/main.nr:3:5 + 222. src/main.nr:3:5 + 223. src/main.nr:3:5 + 224. src/main.nr:3:5 + 225. src/main.nr:3:5 + 226. src/main.nr:3:5 + 227. src/main.nr:3:5 + 228. src/main.nr:3:5 + 229. src/main.nr:3:5 + 230. src/main.nr:3:5 + 231. src/main.nr:3:5 + 232. src/main.nr:3:5 + 233. src/main.nr:3:5 + 234. src/main.nr:3:5 + 235. src/main.nr:3:5 + 236. src/main.nr:3:5 + 237. src/main.nr:3:5 + 238. src/main.nr:3:5 + 239. src/main.nr:3:5 + 240. src/main.nr:3:5 + 241. src/main.nr:3:5 + 242. src/main.nr:3:5 + 243. src/main.nr:3:5 + 244. src/main.nr:3:5 + 245. src/main.nr:3:5 + 246. src/main.nr:3:5 + 247. src/main.nr:3:5 + 248. src/main.nr:3:5 + 249. src/main.nr:3:5 + 250. src/main.nr:3:5 + 251. src/main.nr:3:5 + 252. src/main.nr:3:5 + 253. src/main.nr:3:5 + 254. src/main.nr:3:5 + 255. src/main.nr:3:5 + 256. src/main.nr:3:5 + 257. src/main.nr:3:5 + 258. src/main.nr:3:5 + 259. src/main.nr:3:5 + 260. src/main.nr:3:5 + 261. src/main.nr:3:5 + 262. src/main.nr:3:5 + 263. src/main.nr:3:5 + 264. src/main.nr:3:5 + 265. src/main.nr:3:5 + 266. src/main.nr:3:5 + 267. src/main.nr:3:5 + 268. src/main.nr:3:5 + 269. src/main.nr:3:5 + 270. src/main.nr:3:5 + 271. src/main.nr:3:5 + 272. src/main.nr:3:5 + 273. src/main.nr:3:5 + 274. src/main.nr:3:5 + 275. src/main.nr:3:5 + 276. src/main.nr:3:5 + 277. src/main.nr:3:5 + 278. src/main.nr:3:5 + 279. src/main.nr:3:5 + 280. src/main.nr:3:5 + 281. src/main.nr:3:5 + 282. src/main.nr:3:5 + 283. src/main.nr:3:5 + 284. src/main.nr:3:5 + 285. src/main.nr:3:5 + 286. src/main.nr:3:5 + 287. src/main.nr:3:5 + 288. src/main.nr:3:5 + 289. src/main.nr:3:5 + 290. src/main.nr:3:5 + 291. src/main.nr:3:5 + 292. src/main.nr:3:5 + 293. src/main.nr:3:5 + 294. src/main.nr:3:5 + 295. src/main.nr:3:5 + 296. src/main.nr:3:5 + 297. src/main.nr:3:5 + 298. src/main.nr:3:5 + 299. src/main.nr:3:5 + 300. src/main.nr:3:5 + 301. src/main.nr:3:5 + 302. src/main.nr:3:5 + 303. src/main.nr:3:5 + 304. src/main.nr:3:5 + 305. src/main.nr:3:5 + 306. src/main.nr:3:5 + 307. src/main.nr:3:5 + 308. src/main.nr:3:5 + 309. src/main.nr:3:5 + 310. src/main.nr:3:5 + 311. src/main.nr:3:5 + 312. src/main.nr:3:5 + 313. src/main.nr:3:5 + 314. src/main.nr:3:5 + 315. src/main.nr:3:5 + 316. src/main.nr:3:5 + 317. src/main.nr:3:5 + 318. src/main.nr:3:5 + 319. src/main.nr:3:5 + 320. src/main.nr:3:5 + 321. src/main.nr:3:5 + 322. src/main.nr:3:5 + 323. src/main.nr:3:5 + 324. src/main.nr:3:5 + 325. src/main.nr:3:5 + 326. src/main.nr:3:5 + 327. src/main.nr:3:5 + 328. src/main.nr:3:5 + 329. src/main.nr:3:5 + 330. src/main.nr:3:5 + 331. src/main.nr:3:5 + 332. src/main.nr:3:5 + 333. src/main.nr:3:5 + 334. src/main.nr:3:5 + 335. src/main.nr:3:5 + 336. src/main.nr:3:5 + 337. src/main.nr:3:5 + 338. src/main.nr:3:5 + 339. src/main.nr:3:5 + 340. src/main.nr:3:5 + 341. src/main.nr:3:5 + 342. src/main.nr:3:5 + 343. src/main.nr:3:5 + 344. src/main.nr:3:5 + 345. src/main.nr:3:5 + 346. src/main.nr:3:5 + 347. src/main.nr:3:5 + 348. src/main.nr:3:5 + 349. src/main.nr:3:5 + 350. src/main.nr:3:5 + 351. src/main.nr:3:5 + 352. src/main.nr:3:5 + 353. src/main.nr:3:5 + 354. src/main.nr:3:5 + 355. src/main.nr:3:5 + 356. src/main.nr:3:5 + 357. src/main.nr:3:5 + 358. src/main.nr:3:5 + 359. src/main.nr:3:5 + 360. src/main.nr:3:5 + 361. src/main.nr:3:5 + 362. src/main.nr:3:5 + 363. src/main.nr:3:5 + 364. src/main.nr:3:5 + 365. src/main.nr:3:5 + 366. src/main.nr:3:5 + 367. src/main.nr:3:5 + 368. src/main.nr:3:5 + 369. src/main.nr:3:5 + 370. src/main.nr:3:5 + 371. src/main.nr:3:5 + 372. src/main.nr:3:5 + 373. src/main.nr:3:5 + 374. src/main.nr:3:5 + 375. src/main.nr:3:5 + 376. src/main.nr:3:5 + 377. src/main.nr:3:5 + 378. src/main.nr:3:5 + 379. src/main.nr:3:5 + 380. src/main.nr:3:5 + 381. src/main.nr:3:5 + 382. src/main.nr:3:5 + 383. src/main.nr:3:5 + 384. src/main.nr:3:5 + 385. src/main.nr:3:5 + 386. src/main.nr:3:5 + 387. src/main.nr:3:5 + 388. src/main.nr:3:5 + 389. src/main.nr:3:5 + 390. src/main.nr:3:5 + 391. src/main.nr:3:5 + 392. src/main.nr:3:5 + 393. src/main.nr:3:5 + 394. src/main.nr:3:5 + 395. src/main.nr:3:5 + 396. src/main.nr:3:5 + 397. src/main.nr:3:5 + 398. src/main.nr:3:5 + 399. src/main.nr:3:5 + 400. src/main.nr:3:5 + 401. src/main.nr:3:5 + 402. src/main.nr:3:5 + 403. src/main.nr:3:5 + 404. src/main.nr:3:5 + 405. src/main.nr:3:5 + 406. src/main.nr:3:5 + 407. src/main.nr:3:5 + 408. src/main.nr:3:5 + 409. src/main.nr:3:5 + 410. src/main.nr:3:5 + 411. src/main.nr:3:5 + 412. src/main.nr:3:5 + 413. src/main.nr:3:5 + 414. src/main.nr:3:5 + 415. src/main.nr:3:5 + 416. src/main.nr:3:5 + 417. src/main.nr:3:5 + 418. src/main.nr:3:5 + 419. src/main.nr:3:5 + 420. src/main.nr:3:5 + 421. src/main.nr:3:5 + 422. src/main.nr:3:5 + 423. src/main.nr:3:5 + 424. src/main.nr:3:5 + 425. src/main.nr:3:5 + 426. src/main.nr:3:5 + 427. src/main.nr:3:5 + 428. src/main.nr:3:5 + 429. src/main.nr:3:5 + 430. src/main.nr:3:5 + 431. src/main.nr:3:5 + 432. src/main.nr:3:5 + 433. src/main.nr:3:5 + 434. src/main.nr:3:5 + 435. src/main.nr:3:5 + 436. src/main.nr:3:5 + 437. src/main.nr:3:5 + 438. src/main.nr:3:5 + 439. src/main.nr:3:5 + 440. src/main.nr:3:5 + 441. src/main.nr:3:5 + 442. src/main.nr:3:5 + 443. src/main.nr:3:5 + 444. src/main.nr:3:5 + 445. src/main.nr:3:5 + 446. src/main.nr:3:5 + 447. src/main.nr:3:5 + 448. src/main.nr:3:5 + 449. src/main.nr:3:5 + 450. src/main.nr:3:5 + 451. src/main.nr:3:5 + 452. src/main.nr:3:5 + 453. src/main.nr:3:5 + 454. src/main.nr:3:5 + 455. src/main.nr:3:5 + 456. src/main.nr:3:5 + 457. src/main.nr:3:5 + 458. src/main.nr:3:5 + 459. src/main.nr:3:5 + 460. src/main.nr:3:5 + 461. src/main.nr:3:5 + 462. src/main.nr:3:5 + 463. src/main.nr:3:5 + 464. src/main.nr:3:5 + 465. src/main.nr:3:5 + 466. src/main.nr:3:5 + 467. src/main.nr:3:5 + 468. src/main.nr:3:5 + 469. src/main.nr:3:5 + 470. src/main.nr:3:5 + 471. src/main.nr:3:5 + 472. src/main.nr:3:5 + 473. src/main.nr:3:5 + 474. src/main.nr:3:5 + 475. src/main.nr:3:5 + 476. src/main.nr:3:5 + 477. src/main.nr:3:5 + 478. src/main.nr:3:5 + 479. src/main.nr:3:5 + 480. src/main.nr:3:5 + 481. src/main.nr:3:5 + 482. src/main.nr:3:5 + 483. src/main.nr:3:5 + 484. src/main.nr:3:5 + 485. src/main.nr:3:5 + 486. src/main.nr:3:5 + 487. src/main.nr:3:5 + 488. src/main.nr:3:5 + 489. src/main.nr:3:5 + 490. src/main.nr:3:5 + 491. src/main.nr:3:5 + 492. src/main.nr:3:5 + 493. src/main.nr:3:5 + 494. src/main.nr:3:5 + 495. src/main.nr:3:5 + 496. src/main.nr:3:5 + 497. src/main.nr:3:5 + 498. src/main.nr:3:5 + 499. src/main.nr:3:5 + 500. src/main.nr:3:5 + 501. src/main.nr:3:5 + 502. src/main.nr:3:5 + 503. src/main.nr:3:5 + 504. src/main.nr:3:5 + 505. src/main.nr:3:5 + 506. src/main.nr:3:5 + 507. src/main.nr:3:5 + 508. src/main.nr:3:5 + 509. src/main.nr:3:5 + 510. src/main.nr:3:5 + 511. src/main.nr:3:5 + 512. src/main.nr:3:5 + 513. src/main.nr:3:5 + 514. src/main.nr:3:5 + 515. src/main.nr:3:5 + 516. src/main.nr:3:5 + 517. src/main.nr:3:5 + 518. src/main.nr:3:5 + 519. src/main.nr:3:5 + 520. src/main.nr:3:5 + 521. src/main.nr:3:5 + 522. src/main.nr:3:5 + 523. src/main.nr:3:5 + 524. src/main.nr:3:5 + 525. src/main.nr:3:5 + 526. src/main.nr:3:5 + 527. src/main.nr:3:5 + 528. src/main.nr:3:5 + 529. src/main.nr:3:5 + 530. src/main.nr:3:5 + 531. src/main.nr:3:5 + 532. src/main.nr:3:5 + 533. src/main.nr:3:5 + 534. src/main.nr:3:5 + 535. src/main.nr:3:5 + 536. src/main.nr:3:5 + 537. src/main.nr:3:5 + 538. src/main.nr:3:5 + 539. src/main.nr:3:5 + 540. src/main.nr:3:5 + 541. src/main.nr:3:5 + 542. src/main.nr:3:5 + 543. src/main.nr:3:5 + 544. src/main.nr:3:5 + 545. src/main.nr:3:5 + 546. src/main.nr:3:5 + 547. src/main.nr:3:5 + 548. src/main.nr:3:5 + 549. src/main.nr:3:5 + 550. src/main.nr:3:5 + 551. src/main.nr:3:5 + 552. src/main.nr:3:5 + 553. src/main.nr:3:5 + 554. src/main.nr:3:5 + 555. src/main.nr:3:5 + 556. src/main.nr:3:5 + 557. src/main.nr:3:5 + 558. src/main.nr:3:5 + 559. src/main.nr:3:5 + 560. src/main.nr:3:5 + 561. src/main.nr:3:5 + 562. src/main.nr:3:5 + 563. src/main.nr:3:5 + 564. src/main.nr:3:5 + 565. src/main.nr:3:5 + 566. src/main.nr:3:5 + 567. src/main.nr:3:5 + 568. src/main.nr:3:5 + 569. src/main.nr:3:5 + 570. src/main.nr:3:5 + 571. src/main.nr:3:5 + 572. src/main.nr:3:5 + 573. src/main.nr:3:5 + 574. src/main.nr:3:5 + 575. src/main.nr:3:5 + 576. src/main.nr:3:5 + 577. src/main.nr:3:5 + 578. src/main.nr:3:5 + 579. src/main.nr:3:5 + 580. src/main.nr:3:5 + 581. src/main.nr:3:5 + 582. src/main.nr:3:5 + 583. src/main.nr:3:5 + 584. src/main.nr:3:5 + 585. src/main.nr:3:5 + 586. src/main.nr:3:5 + 587. src/main.nr:3:5 + 588. src/main.nr:3:5 + 589. src/main.nr:3:5 + 590. src/main.nr:3:5 + 591. src/main.nr:3:5 + 592. src/main.nr:3:5 + 593. src/main.nr:3:5 + 594. src/main.nr:3:5 + 595. src/main.nr:3:5 + 596. src/main.nr:3:5 + 597. src/main.nr:3:5 + 598. src/main.nr:3:5 + 599. src/main.nr:3:5 + 600. src/main.nr:3:5 + 601. src/main.nr:3:5 + 602. src/main.nr:3:5 + 603. src/main.nr:3:5 + 604. src/main.nr:3:5 + 605. src/main.nr:3:5 + 606. src/main.nr:3:5 + 607. src/main.nr:3:5 + 608. src/main.nr:3:5 + 609. src/main.nr:3:5 + 610. src/main.nr:3:5 + 611. src/main.nr:3:5 + 612. src/main.nr:3:5 + 613. src/main.nr:3:5 + 614. src/main.nr:3:5 + 615. src/main.nr:3:5 + 616. src/main.nr:3:5 + 617. src/main.nr:3:5 + 618. src/main.nr:3:5 + 619. src/main.nr:3:5 + 620. src/main.nr:3:5 + 621. src/main.nr:3:5 + 622. src/main.nr:3:5 + 623. src/main.nr:3:5 + 624. src/main.nr:3:5 + 625. src/main.nr:3:5 + 626. src/main.nr:3:5 + 627. src/main.nr:3:5 + 628. src/main.nr:3:5 + 629. src/main.nr:3:5 + 630. src/main.nr:3:5 + 631. src/main.nr:3:5 + 632. src/main.nr:3:5 + 633. src/main.nr:3:5 + 634. src/main.nr:3:5 + 635. src/main.nr:3:5 + 636. src/main.nr:3:5 + 637. src/main.nr:3:5 + 638. src/main.nr:3:5 + 639. src/main.nr:3:5 + 640. src/main.nr:3:5 + 641. src/main.nr:3:5 + 642. src/main.nr:3:5 + 643. src/main.nr:3:5 + 644. src/main.nr:3:5 + 645. src/main.nr:3:5 + 646. src/main.nr:3:5 + 647. src/main.nr:3:5 + 648. src/main.nr:3:5 + 649. src/main.nr:3:5 + 650. src/main.nr:3:5 + 651. src/main.nr:3:5 + 652. src/main.nr:3:5 + 653. src/main.nr:3:5 + 654. src/main.nr:3:5 + 655. src/main.nr:3:5 + 656. src/main.nr:3:5 + 657. src/main.nr:3:5 + 658. src/main.nr:3:5 + 659. src/main.nr:3:5 + 660. src/main.nr:3:5 + 661. src/main.nr:3:5 + 662. src/main.nr:3:5 + 663. src/main.nr:3:5 + 664. src/main.nr:3:5 + 665. src/main.nr:3:5 + 666. src/main.nr:3:5 + 667. src/main.nr:3:5 + 668. src/main.nr:3:5 + 669. src/main.nr:3:5 + 670. src/main.nr:3:5 + 671. src/main.nr:3:5 + 672. src/main.nr:3:5 + 673. src/main.nr:3:5 + 674. src/main.nr:3:5 + 675. src/main.nr:3:5 + 676. src/main.nr:3:5 + 677. src/main.nr:3:5 + 678. src/main.nr:3:5 + 679. src/main.nr:3:5 + 680. src/main.nr:3:5 + 681. src/main.nr:3:5 + 682. src/main.nr:3:5 + 683. src/main.nr:3:5 + 684. src/main.nr:3:5 + 685. src/main.nr:3:5 + 686. src/main.nr:3:5 + 687. src/main.nr:3:5 + 688. src/main.nr:3:5 + 689. src/main.nr:3:5 + 690. src/main.nr:3:5 + 691. src/main.nr:3:5 + 692. src/main.nr:3:5 + 693. src/main.nr:3:5 + 694. src/main.nr:3:5 + 695. src/main.nr:3:5 + 696. src/main.nr:3:5 + 697. src/main.nr:3:5 + 698. src/main.nr:3:5 + 699. src/main.nr:3:5 + 700. src/main.nr:3:5 + 701. src/main.nr:3:5 + 702. src/main.nr:3:5 + 703. src/main.nr:3:5 + 704. src/main.nr:3:5 + 705. src/main.nr:3:5 + 706. src/main.nr:3:5 + 707. src/main.nr:3:5 + 708. src/main.nr:3:5 + 709. src/main.nr:3:5 + 710. src/main.nr:3:5 + 711. src/main.nr:3:5 + 712. src/main.nr:3:5 + 713. src/main.nr:3:5 + 714. src/main.nr:3:5 + 715. src/main.nr:3:5 + 716. src/main.nr:3:5 + 717. src/main.nr:3:5 + 718. src/main.nr:3:5 + 719. src/main.nr:3:5 + 720. src/main.nr:3:5 + 721. src/main.nr:3:5 + 722. src/main.nr:3:5 + 723. src/main.nr:3:5 + 724. src/main.nr:3:5 + 725. src/main.nr:3:5 + 726. src/main.nr:3:5 + 727. src/main.nr:3:5 + 728. src/main.nr:3:5 + 729. src/main.nr:3:5 + 730. src/main.nr:3:5 + 731. src/main.nr:3:5 + 732. src/main.nr:3:5 + 733. src/main.nr:3:5 + 734. src/main.nr:3:5 + 735. src/main.nr:3:5 + 736. src/main.nr:3:5 + 737. src/main.nr:3:5 + 738. src/main.nr:3:5 + 739. src/main.nr:3:5 + 740. src/main.nr:3:5 + 741. src/main.nr:3:5 + 742. src/main.nr:3:5 + 743. src/main.nr:3:5 + 744. src/main.nr:3:5 + 745. src/main.nr:3:5 + 746. src/main.nr:3:5 + 747. src/main.nr:3:5 + 748. src/main.nr:3:5 + 749. src/main.nr:3:5 + 750. src/main.nr:3:5 + 751. src/main.nr:3:5 + 752. src/main.nr:3:5 + 753. src/main.nr:3:5 + 754. src/main.nr:3:5 + 755. src/main.nr:3:5 + 756. src/main.nr:3:5 + 757. src/main.nr:3:5 + 758. src/main.nr:3:5 + 759. src/main.nr:3:5 + 760. src/main.nr:3:5 + 761. src/main.nr:3:5 + 762. src/main.nr:3:5 + 763. src/main.nr:3:5 + 764. src/main.nr:3:5 + 765. src/main.nr:3:5 + 766. src/main.nr:3:5 + 767. src/main.nr:3:5 + 768. src/main.nr:3:5 + 769. src/main.nr:3:5 + 770. src/main.nr:3:5 + 771. src/main.nr:3:5 + 772. src/main.nr:3:5 + 773. src/main.nr:3:5 + 774. src/main.nr:3:5 + 775. src/main.nr:3:5 + 776. src/main.nr:3:5 + 777. src/main.nr:3:5 + 778. src/main.nr:3:5 + 779. src/main.nr:3:5 + 780. src/main.nr:3:5 + 781. src/main.nr:3:5 + 782. src/main.nr:3:5 + 783. src/main.nr:3:5 + 784. src/main.nr:3:5 + 785. src/main.nr:3:5 + 786. src/main.nr:3:5 + 787. src/main.nr:3:5 + 788. src/main.nr:3:5 + 789. src/main.nr:3:5 + 790. src/main.nr:3:5 + 791. src/main.nr:3:5 + 792. src/main.nr:3:5 + 793. src/main.nr:3:5 + 794. src/main.nr:3:5 + 795. src/main.nr:3:5 + 796. src/main.nr:3:5 + 797. src/main.nr:3:5 + 798. src/main.nr:3:5 + 799. src/main.nr:3:5 + 800. src/main.nr:3:5 + 801. src/main.nr:3:5 + 802. src/main.nr:3:5 + 803. src/main.nr:3:5 + 804. src/main.nr:3:5 + 805. src/main.nr:3:5 + 806. src/main.nr:3:5 + 807. src/main.nr:3:5 + 808. src/main.nr:3:5 + 809. src/main.nr:3:5 + 810. src/main.nr:3:5 + 811. src/main.nr:3:5 + 812. src/main.nr:3:5 + 813. src/main.nr:3:5 + 814. src/main.nr:3:5 + 815. src/main.nr:3:5 + 816. src/main.nr:3:5 + 817. src/main.nr:3:5 + 818. src/main.nr:3:5 + 819. src/main.nr:3:5 + 820. src/main.nr:3:5 + 821. src/main.nr:3:5 + 822. src/main.nr:3:5 + 823. src/main.nr:3:5 + 824. src/main.nr:3:5 + 825. src/main.nr:3:5 + 826. src/main.nr:3:5 + 827. src/main.nr:3:5 + 828. src/main.nr:3:5 + 829. src/main.nr:3:5 + 830. src/main.nr:3:5 + 831. src/main.nr:3:5 + 832. src/main.nr:3:5 + 833. src/main.nr:3:5 + 834. src/main.nr:3:5 + 835. src/main.nr:3:5 + 836. src/main.nr:3:5 + 837. src/main.nr:3:5 + 838. src/main.nr:3:5 + 839. src/main.nr:3:5 + 840. src/main.nr:3:5 + 841. src/main.nr:3:5 + 842. src/main.nr:3:5 + 843. src/main.nr:3:5 + 844. src/main.nr:3:5 + 845. src/main.nr:3:5 + 846. src/main.nr:3:5 + 847. src/main.nr:3:5 + 848. src/main.nr:3:5 + 849. src/main.nr:3:5 + 850. src/main.nr:3:5 + 851. src/main.nr:3:5 + 852. src/main.nr:3:5 + 853. src/main.nr:3:5 + 854. src/main.nr:3:5 + 855. src/main.nr:3:5 + 856. src/main.nr:3:5 + 857. src/main.nr:3:5 + 858. src/main.nr:3:5 + 859. src/main.nr:3:5 + 860. src/main.nr:3:5 + 861. src/main.nr:3:5 + 862. src/main.nr:3:5 + 863. src/main.nr:3:5 + 864. src/main.nr:3:5 + 865. src/main.nr:3:5 + 866. src/main.nr:3:5 + 867. src/main.nr:3:5 + 868. src/main.nr:3:5 + 869. src/main.nr:3:5 + 870. src/main.nr:3:5 + 871. src/main.nr:3:5 + 872. src/main.nr:3:5 + 873. src/main.nr:3:5 + 874. src/main.nr:3:5 + 875. src/main.nr:3:5 + 876. src/main.nr:3:5 + 877. src/main.nr:3:5 + 878. src/main.nr:3:5 + 879. src/main.nr:3:5 + 880. src/main.nr:3:5 + 881. src/main.nr:3:5 + 882. src/main.nr:3:5 + 883. src/main.nr:3:5 + 884. src/main.nr:3:5 + 885. src/main.nr:3:5 + 886. src/main.nr:3:5 + 887. src/main.nr:3:5 + 888. src/main.nr:3:5 + 889. src/main.nr:3:5 + 890. src/main.nr:3:5 + 891. src/main.nr:3:5 + 892. src/main.nr:3:5 + 893. src/main.nr:3:5 + 894. src/main.nr:3:5 + 895. src/main.nr:3:5 + 896. src/main.nr:3:5 + 897. src/main.nr:3:5 + 898. src/main.nr:3:5 + 899. src/main.nr:3:5 + 900. src/main.nr:3:5 + 901. src/main.nr:3:5 + 902. src/main.nr:3:5 + 903. src/main.nr:3:5 + 904. src/main.nr:3:5 + 905. src/main.nr:3:5 + 906. src/main.nr:3:5 + 907. src/main.nr:3:5 + 908. src/main.nr:3:5 + 909. src/main.nr:3:5 + 910. src/main.nr:3:5 + 911. src/main.nr:3:5 + 912. src/main.nr:3:5 + 913. src/main.nr:3:5 + 914. src/main.nr:3:5 + 915. src/main.nr:3:5 + 916. src/main.nr:3:5 + 917. src/main.nr:3:5 + 918. src/main.nr:3:5 + 919. src/main.nr:3:5 + 920. src/main.nr:3:5 + 921. src/main.nr:3:5 + 922. src/main.nr:3:5 + 923. src/main.nr:3:5 + 924. src/main.nr:3:5 + 925. src/main.nr:3:5 + 926. src/main.nr:3:5 + 927. src/main.nr:3:5 + 928. src/main.nr:3:5 + 929. src/main.nr:3:5 + 930. src/main.nr:3:5 + 931. src/main.nr:3:5 + 932. src/main.nr:3:5 + 933. src/main.nr:3:5 + 934. src/main.nr:3:5 + 935. src/main.nr:3:5 + 936. src/main.nr:3:5 + 937. src/main.nr:3:5 + 938. src/main.nr:3:5 + 939. src/main.nr:3:5 + 940. src/main.nr:3:5 + 941. src/main.nr:3:5 + 942. src/main.nr:3:5 + 943. src/main.nr:3:5 + 944. src/main.nr:3:5 + 945. src/main.nr:3:5 + 946. src/main.nr:3:5 + 947. src/main.nr:3:5 + 948. src/main.nr:3:5 + 949. src/main.nr:3:5 + 950. src/main.nr:3:5 + 951. src/main.nr:3:5 + 952. src/main.nr:3:5 + 953. src/main.nr:3:5 + 954. src/main.nr:3:5 + 955. src/main.nr:3:5 + 956. src/main.nr:3:5 + 957. src/main.nr:3:5 + 958. src/main.nr:3:5 + 959. src/main.nr:3:5 + 960. src/main.nr:3:5 + 961. src/main.nr:3:5 + 962. src/main.nr:3:5 + 963. src/main.nr:3:5 + 964. src/main.nr:3:5 + 965. src/main.nr:3:5 + 966. src/main.nr:3:5 + 967. src/main.nr:3:5 + 968. src/main.nr:3:5 + 969. src/main.nr:3:5 + 970. src/main.nr:3:5 + 971. src/main.nr:3:5 + 972. src/main.nr:3:5 + 973. src/main.nr:3:5 + 974. src/main.nr:3:5 + 975. src/main.nr:3:5 + 976. src/main.nr:3:5 + 977. src/main.nr:3:5 + 978. src/main.nr:3:5 + 979. src/main.nr:3:5 + 980. src/main.nr:3:5 + 981. src/main.nr:3:5 + 982. src/main.nr:3:5 + 983. src/main.nr:3:5 + 984. src/main.nr:3:5 + 985. src/main.nr:3:5 + 986. src/main.nr:3:5 + 987. src/main.nr:3:5 + 988. src/main.nr:3:5 + 989. src/main.nr:3:5 + 990. src/main.nr:3:5 + 991. src/main.nr:3:5 + 992. src/main.nr:3:5 + 993. src/main.nr:3:5 + 994. src/main.nr:3:5 + 995. src/main.nr:3:5 + 996. src/main.nr:3:5 + 997. src/main.nr:3:5 + 998. src/main.nr:3:5 + 999. src/main.nr:3:5 + 1000. src/main.nr:3:5 + 1001. src/main.nr:3:5 + +Aborting due to 1 previous error