summaryrefslogtreecommitdiffstats
path: root/src/test/ui/recursion
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/test/ui/recursion/auxiliary/recursive_reexports.rs3
-rw-r--r--src/test/ui/recursion/instantiable.rs17
-rw-r--r--src/test/ui/recursion/issue-26548-recursion-via-normalize.rs17
-rw-r--r--src/test/ui/recursion/issue-26548-recursion-via-normalize.stderr10
-rw-r--r--src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr15
-rw-r--r--src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs16
-rw-r--r--src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr10
-rw-r--r--src/test/ui/recursion/issue-83150.rs12
-rw-r--r--src/test/ui/recursion/issue-83150.stderr19
-rw-r--r--src/test/ui/recursion/issue-86784.rs2597
-rw-r--r--src/test/ui/recursion/recursion.polonius.stderr15
-rw-r--r--src/test/ui/recursion/recursion.rs25
-rw-r--r--src/test/ui/recursion/recursion.stderr15
-rw-r--r--src/test/ui/recursion/recursive-enum.rs4
-rw-r--r--src/test/ui/recursion/recursive-enum.stderr16
-rw-r--r--src/test/ui/recursion/recursive-reexports.rs7
-rw-r--r--src/test/ui/recursion/recursive-reexports.stderr9
-rw-r--r--src/test/ui/recursion/recursive-requirements.rs19
-rw-r--r--src/test/ui/recursion/recursive-requirements.stderr45
-rw-r--r--src/test/ui/recursion/recursive-static-definition.rs4
-rw-r--r--src/test/ui/recursion/recursive-static-definition.stderr24
-rw-r--r--src/test/ui/recursion/recursive-types-are-not-uninhabited.rs13
-rw-r--r--src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr29
-rw-r--r--src/test/ui/recursion_limit/empty.rs8
-rw-r--r--src/test/ui/recursion_limit/empty.stderr18
-rw-r--r--src/test/ui/recursion_limit/invalid_digit.rs7
-rw-r--r--src/test/ui/recursion_limit/invalid_digit.stderr18
-rw-r--r--src/test/ui/recursion_limit/invalid_digit_type.rs3
-rw-r--r--src/test/ui/recursion_limit/invalid_digit_type.stderr8
-rw-r--r--src/test/ui/recursion_limit/invalid_macro.rs7
-rw-r--r--src/test/ui/recursion_limit/invalid_macro.stderr8
-rw-r--r--src/test/ui/recursion_limit/no-value.rs6
-rw-r--r--src/test/ui/recursion_limit/no-value.stderr8
-rw-r--r--src/test/ui/recursion_limit/overflow.rs9
-rw-r--r--src/test/ui/recursion_limit/overflow.stderr18
-rw-r--r--src/test/ui/recursion_limit/zero-overflow.rs7
-rw-r--r--src/test/ui/recursion_limit/zero-overflow.stderr7
-rw-r--r--src/test/ui/recursion_limit/zero.rs12
-rw-r--r--src/test/ui/recursion_limit/zero.stderr10
39 files changed, 3095 insertions, 0 deletions
diff --git a/src/test/ui/recursion/auxiliary/recursive_reexports.rs b/src/test/ui/recursion/auxiliary/recursive_reexports.rs
new file mode 100644
index 000000000..f98fa7100
--- /dev/null
+++ b/src/test/ui/recursion/auxiliary/recursive_reexports.rs
@@ -0,0 +1,3 @@
+pub mod foo {
+ pub use foo;
+}
diff --git a/src/test/ui/recursion/instantiable.rs b/src/test/ui/recursion/instantiable.rs
new file mode 100644
index 000000000..ad0cf3f4a
--- /dev/null
+++ b/src/test/ui/recursion/instantiable.rs
@@ -0,0 +1,17 @@
+// run-pass
+
+#![allow(non_camel_case_types)]
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+use std::ptr;
+
+// check that we do not report a type like this as uninstantiable,
+// even though it would be if the nxt field had type @foo:
+struct foo(X);
+
+struct X { x: usize, nxt: *const foo }
+
+pub fn main() {
+ let _x = foo(X {x: 0, nxt: ptr::null()});
+}
diff --git a/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs b/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs
new file mode 100644
index 000000000..91958dffc
--- /dev/null
+++ b/src/test/ui/recursion/issue-26548-recursion-via-normalize.rs
@@ -0,0 +1,17 @@
+//~ ERROR cycle detected when computing layout of `core::option::Option<S>`
+//~| NOTE ...which requires computing layout of `S`...
+//~| NOTE ...which requires computing layout of `core::option::Option<<S as Mirror>::It>`...
+//~| NOTE ...which again requires computing layout of `core::option::Option<S>`, completing the cycle
+//~| NOTE cycle used when computing layout of `core::option::Option<<S as Mirror>::It>`
+
+trait Mirror {
+ type It: ?Sized;
+}
+impl<T: ?Sized> Mirror for T {
+ type It = Self;
+}
+struct S(Option<<S as Mirror>::It>);
+
+fn main() {
+ let _s = S(None);
+}
diff --git a/src/test/ui/recursion/issue-26548-recursion-via-normalize.stderr b/src/test/ui/recursion/issue-26548-recursion-via-normalize.stderr
new file mode 100644
index 000000000..a75097cdb
--- /dev/null
+++ b/src/test/ui/recursion/issue-26548-recursion-via-normalize.stderr
@@ -0,0 +1,10 @@
+error[E0391]: cycle detected when computing layout of `core::option::Option<S>`
+ |
+ = note: ...which requires computing layout of `S`...
+ = note: ...which requires computing layout of `core::option::Option<<S as Mirror>::It>`...
+ = note: ...which again requires computing layout of `core::option::Option<S>`, completing the cycle
+ = note: cycle used when computing layout of `core::option::Option<<S as Mirror>::It>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0391`.
diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr
new file mode 100644
index 000000000..4b4fc4fb7
--- /dev/null
+++ b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.polonius.stderr
@@ -0,0 +1,15 @@
+error: reached the recursion limit while instantiating `std::ptr::drop_in_place::<S<fn(f...)))))))))))))))))))))))))))))>))`
+ --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
+ |
+LL | pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+note: `std::ptr::drop_in_place` defined here
+ --> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
+ |
+LL | pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: the full type name has been written to '$TEST_BUILD_DIR/recursion/issue-38591-non-regular-dropck-recursion.polonius/issue-38591-non-regular-dropck-recursion.long-type.txt'
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
new file mode 100644
index 000000000..c9e93174e
--- /dev/null
+++ b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
@@ -0,0 +1,16 @@
+// `S` is infinitely recursing so it's not possible to generate a finite
+// drop impl (ignoring polymorphization).
+//
+// Dropck should therefore detect that this is the case and eagerly error.
+
+struct S<T> {
+ t: T,
+ s: Box<S<fn(u: T)>>,
+}
+
+fn f(x: S<u32>) {} //~ ERROR overflow while adding drop-check rules for S<u32>
+
+fn main() {
+ // Force instantiation.
+ f as fn(_);
+}
diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr
new file mode 100644
index 000000000..1da29be43
--- /dev/null
+++ b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr
@@ -0,0 +1,10 @@
+error[E0320]: overflow while adding drop-check rules for S<u32>
+ --> $DIR/issue-38591-non-regular-dropck-recursion.rs:11:6
+ |
+LL | fn f(x: S<u32>) {}
+ | ^
+ |
+ = note: overflowed on S<fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(fn(u32)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion/issue-83150.rs b/src/test/ui/recursion/issue-83150.rs
new file mode 100644
index 000000000..e647f0ff4
--- /dev/null
+++ b/src/test/ui/recursion/issue-83150.rs
@@ -0,0 +1,12 @@
+// build-fail
+// compile-flags: -Copt-level=0
+//~^^ ERROR overflow evaluating the requirement
+
+fn main() {
+ let mut iter = 0u8..1;
+ func(&mut iter)
+}
+
+fn func<T: Iterator<Item = u8>>(iter: &mut T) { //~ WARN function cannot return without recursing
+ func(&mut iter.map(|x| x + 1))
+}
diff --git a/src/test/ui/recursion/issue-83150.stderr b/src/test/ui/recursion/issue-83150.stderr
new file mode 100644
index 000000000..89a832984
--- /dev/null
+++ b/src/test/ui/recursion/issue-83150.stderr
@@ -0,0 +1,19 @@
+warning: function cannot return without recursing
+ --> $DIR/issue-83150.rs:10:1
+ |
+LL | fn func<T: Iterator<Item = u8>>(iter: &mut T) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
+LL | func(&mut iter.map(|x| x + 1))
+ | ------------------------------ recursive call site
+ |
+ = note: `#[warn(unconditional_recursion)]` on by default
+ = help: a `loop` may express intention better if this is on purpose
+
+error[E0275]: overflow evaluating the requirement `Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut std::ops::Range<u8>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>: Iterator`
+ |
+ = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`issue_83150`)
+ = note: required because of the requirements on the impl of `Iterator` for `&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut Map<&mut std::ops::Range<u8>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>, [closure@$DIR/issue-83150.rs:11:24: 11:27]>`
+
+error: aborting due to previous error; 1 warning emitted
+
+For more information about this error, try `rustc --explain E0275`.
diff --git a/src/test/ui/recursion/issue-86784.rs b/src/test/ui/recursion/issue-86784.rs
new file mode 100644
index 000000000..34f4aaedb
--- /dev/null
+++ b/src/test/ui/recursion/issue-86784.rs
@@ -0,0 +1,2597 @@
+// build-pass
+
+fn main() {
+ let _temp_1 = 0;
+ let _temp_2 = 0;
+ let _temp_3 = 0;
+ let _temp_4 = 0;
+ let _temp_5 = 0;
+ let _temp_6 = 0;
+ let _temp_7 = 0;
+ let _temp_8 = 0;
+ let _temp_9 = 0;
+ let _temp_10 = 0;
+ let _temp_11 = 0;
+ let _temp_12 = 0;
+ let _temp_13 = 0;
+ let _temp_14 = 0;
+ let _temp_15 = 0;
+ let _temp_16 = 0;
+ let _temp_17 = 0;
+ let _temp_18 = 0;
+ let _temp_19 = 0;
+ let _temp_20 = 0;
+ let _temp_21 = 0;
+ let _temp_22 = 0;
+ let _temp_23 = 0;
+ let _temp_24 = 0;
+ let _temp_25 = 0;
+ let _temp_26 = 0;
+ let _temp_27 = 0;
+ let _temp_28 = 0;
+ let _temp_29 = 0;
+ let _temp_30 = 0;
+ let _temp_31 = 0;
+ let _temp_32 = 0;
+ let _temp_33 = 0;
+ let _temp_34 = 0;
+ let _temp_35 = 0;
+ let _temp_36 = 0;
+ let _temp_37 = 0;
+ let _temp_38 = 0;
+ let _temp_39 = 0;
+ let _temp_40 = 0;
+ let _temp_41 = 0;
+ let _temp_42 = 0;
+ let _temp_43 = 0;
+ let _temp_44 = 0;
+ let _temp_45 = 0;
+ let _temp_46 = 0;
+ let _temp_47 = 0;
+ let _temp_48 = 0;
+ let _temp_49 = 0;
+ let _temp_50 = 0;
+ let _temp_51 = 0;
+ let _temp_52 = 0;
+ let _temp_53 = 0;
+ let _temp_54 = 0;
+ let _temp_55 = 0;
+ let _temp_56 = 0;
+ let _temp_57 = 0;
+ let _temp_58 = 0;
+ let _temp_59 = 0;
+ let _temp_60 = 0;
+ let _temp_61 = 0;
+ let _temp_62 = 0;
+ let _temp_63 = 0;
+ let _temp_64 = 0;
+ let _temp_65 = 0;
+ let _temp_66 = 0;
+ let _temp_67 = 0;
+ let _temp_68 = 0;
+ let _temp_69 = 0;
+ let _temp_70 = 0;
+ let _temp_71 = 0;
+ let _temp_72 = 0;
+ let _temp_73 = 0;
+ let _temp_74 = 0;
+ let _temp_75 = 0;
+ let _temp_76 = 0;
+ let _temp_77 = 0;
+ let _temp_78 = 0;
+ let _temp_79 = 0;
+ let _temp_80 = 0;
+ let _temp_81 = 0;
+ let _temp_82 = 0;
+ let _temp_83 = 0;
+ let _temp_84 = 0;
+ let _temp_85 = 0;
+ let _temp_86 = 0;
+ let _temp_87 = 0;
+ let _temp_88 = 0;
+ let _temp_89 = 0;
+ let _temp_90 = 0;
+ let _temp_91 = 0;
+ let _temp_92 = 0;
+ let _temp_93 = 0;
+ let _temp_94 = 0;
+ let _temp_95 = 0;
+ let _temp_96 = 0;
+ let _temp_97 = 0;
+ let _temp_98 = 0;
+ let _temp_99 = 0;
+ let _temp_100 = 0;
+ let _temp_101 = 0;
+ let _temp_102 = 0;
+ let _temp_103 = 0;
+ let _temp_104 = 0;
+ let _temp_105 = 0;
+ let _temp_106 = 0;
+ let _temp_107 = 0;
+ let _temp_108 = 0;
+ let _temp_109 = 0;
+ let _temp_110 = 0;
+ let _temp_111 = 0;
+ let _temp_112 = 0;
+ let _temp_113 = 0;
+ let _temp_114 = 0;
+ let _temp_115 = 0;
+ let _temp_116 = 0;
+ let _temp_117 = 0;
+ let _temp_118 = 0;
+ let _temp_119 = 0;
+ let _temp_120 = 0;
+ let _temp_121 = 0;
+ let _temp_122 = 0;
+ let _temp_123 = 0;
+ let _temp_124 = 0;
+ let _temp_125 = 0;
+ let _temp_126 = 0;
+ let _temp_127 = 0;
+ let _temp_128 = 0;
+ let _temp_129 = 0;
+ let _temp_130 = 0;
+ let _temp_131 = 0;
+ let _temp_132 = 0;
+ let _temp_133 = 0;
+ let _temp_134 = 0;
+ let _temp_135 = 0;
+ let _temp_136 = 0;
+ let _temp_137 = 0;
+ let _temp_138 = 0;
+ let _temp_139 = 0;
+ let _temp_140 = 0;
+ let _temp_141 = 0;
+ let _temp_142 = 0;
+ let _temp_143 = 0;
+ let _temp_144 = 0;
+ let _temp_145 = 0;
+ let _temp_146 = 0;
+ let _temp_147 = 0;
+ let _temp_148 = 0;
+ let _temp_149 = 0;
+ let _temp_150 = 0;
+ let _temp_151 = 0;
+ let _temp_152 = 0;
+ let _temp_153 = 0;
+ let _temp_154 = 0;
+ let _temp_155 = 0;
+ let _temp_156 = 0;
+ let _temp_157 = 0;
+ let _temp_158 = 0;
+ let _temp_159 = 0;
+ let _temp_160 = 0;
+ let _temp_161 = 0;
+ let _temp_162 = 0;
+ let _temp_163 = 0;
+ let _temp_164 = 0;
+ let _temp_165 = 0;
+ let _temp_166 = 0;
+ let _temp_167 = 0;
+ let _temp_168 = 0;
+ let _temp_169 = 0;
+ let _temp_170 = 0;
+ let _temp_171 = 0;
+ let _temp_172 = 0;
+ let _temp_173 = 0;
+ let _temp_174 = 0;
+ let _temp_175 = 0;
+ let _temp_176 = 0;
+ let _temp_177 = 0;
+ let _temp_178 = 0;
+ let _temp_179 = 0;
+ let _temp_180 = 0;
+ let _temp_181 = 0;
+ let _temp_182 = 0;
+ let _temp_183 = 0;
+ let _temp_184 = 0;
+ let _temp_185 = 0;
+ let _temp_186 = 0;
+ let _temp_187 = 0;
+ let _temp_188 = 0;
+ let _temp_189 = 0;
+ let _temp_190 = 0;
+ let _temp_191 = 0;
+ let _temp_192 = 0;
+ let _temp_193 = 0;
+ let _temp_194 = 0;
+ let _temp_195 = 0;
+ let _temp_196 = 0;
+ let _temp_197 = 0;
+ let _temp_198 = 0;
+ let _temp_199 = 0;
+ let _temp_200 = 0;
+ let _temp_201 = 0;
+ let _temp_202 = 0;
+ let _temp_203 = 0;
+ let _temp_204 = 0;
+ let _temp_205 = 0;
+ let _temp_206 = 0;
+ let _temp_207 = 0;
+ let _temp_208 = 0;
+ let _temp_209 = 0;
+ let _temp_210 = 0;
+ let _temp_211 = 0;
+ let _temp_212 = 0;
+ let _temp_213 = 0;
+ let _temp_214 = 0;
+ let _temp_215 = 0;
+ let _temp_216 = 0;
+ let _temp_217 = 0;
+ let _temp_218 = 0;
+ let _temp_219 = 0;
+ let _temp_220 = 0;
+ let _temp_221 = 0;
+ let _temp_222 = 0;
+ let _temp_223 = 0;
+ let _temp_224 = 0;
+ let _temp_225 = 0;
+ let _temp_226 = 0;
+ let _temp_227 = 0;
+ let _temp_228 = 0;
+ let _temp_229 = 0;
+ let _temp_230 = 0;
+ let _temp_231 = 0;
+ let _temp_232 = 0;
+ let _temp_233 = 0;
+ let _temp_234 = 0;
+ let _temp_235 = 0;
+ let _temp_236 = 0;
+ let _temp_237 = 0;
+ let _temp_238 = 0;
+ let _temp_239 = 0;
+ let _temp_240 = 0;
+ let _temp_241 = 0;
+ let _temp_242 = 0;
+ let _temp_243 = 0;
+ let _temp_244 = 0;
+ let _temp_245 = 0;
+ let _temp_246 = 0;
+ let _temp_247 = 0;
+ let _temp_248 = 0;
+ let _temp_249 = 0;
+ let _temp_250 = 0;
+ let _temp_251 = 0;
+ let _temp_252 = 0;
+ let _temp_253 = 0;
+ let _temp_254 = 0;
+ let _temp_255 = 0;
+ let _temp_256 = 0;
+ let _temp_257 = 0;
+ let _temp_258 = 0;
+ let _temp_259 = 0;
+ let _temp_260 = 0;
+ let _temp_261 = 0;
+ let _temp_262 = 0;
+ let _temp_263 = 0;
+ let _temp_264 = 0;
+ let _temp_265 = 0;
+ let _temp_266 = 0;
+ let _temp_267 = 0;
+ let _temp_268 = 0;
+ let _temp_269 = 0;
+ let _temp_270 = 0;
+ let _temp_271 = 0;
+ let _temp_272 = 0;
+ let _temp_273 = 0;
+ let _temp_274 = 0;
+ let _temp_275 = 0;
+ let _temp_276 = 0;
+ let _temp_277 = 0;
+ let _temp_278 = 0;
+ let _temp_279 = 0;
+ let _temp_280 = 0;
+ let _temp_281 = 0;
+ let _temp_282 = 0;
+ let _temp_283 = 0;
+ let _temp_284 = 0;
+ let _temp_285 = 0;
+ let _temp_286 = 0;
+ let _temp_287 = 0;
+ let _temp_288 = 0;
+ let _temp_289 = 0;
+ let _temp_290 = 0;
+ let _temp_291 = 0;
+ let _temp_292 = 0;
+ let _temp_293 = 0;
+ let _temp_294 = 0;
+ let _temp_295 = 0;
+ let _temp_296 = 0;
+ let _temp_297 = 0;
+ let _temp_298 = 0;
+ let _temp_299 = 0;
+ let _temp_300 = 0;
+ let _temp_301 = 0;
+ let _temp_302 = 0;
+ let _temp_303 = 0;
+ let _temp_304 = 0;
+ let _temp_305 = 0;
+ let _temp_306 = 0;
+ let _temp_307 = 0;
+ let _temp_308 = 0;
+ let _temp_309 = 0;
+ let _temp_310 = 0;
+ let _temp_311 = 0;
+ let _temp_312 = 0;
+ let _temp_313 = 0;
+ let _temp_314 = 0;
+ let _temp_315 = 0;
+ let _temp_316 = 0;
+ let _temp_317 = 0;
+ let _temp_318 = 0;
+ let _temp_319 = 0;
+ let _temp_320 = 0;
+ let _temp_321 = 0;
+ let _temp_322 = 0;
+ let _temp_323 = 0;
+ let _temp_324 = 0;
+ let _temp_325 = 0;
+ let _temp_326 = 0;
+ let _temp_327 = 0;
+ let _temp_328 = 0;
+ let _temp_329 = 0;
+ let _temp_330 = 0;
+ let _temp_331 = 0;
+ let _temp_332 = 0;
+ let _temp_333 = 0;
+ let _temp_334 = 0;
+ let _temp_335 = 0;
+ let _temp_336 = 0;
+ let _temp_337 = 0;
+ let _temp_338 = 0;
+ let _temp_339 = 0;
+ let _temp_340 = 0;
+ let _temp_341 = 0;
+ let _temp_342 = 0;
+ let _temp_343 = 0;
+ let _temp_344 = 0;
+ let _temp_345 = 0;
+ let _temp_346 = 0;
+ let _temp_347 = 0;
+ let _temp_348 = 0;
+ let _temp_349 = 0;
+ let _temp_350 = 0;
+ let _temp_351 = 0;
+ let _temp_352 = 0;
+ let _temp_353 = 0;
+ let _temp_354 = 0;
+ let _temp_355 = 0;
+ let _temp_356 = 0;
+ let _temp_357 = 0;
+ let _temp_358 = 0;
+ let _temp_359 = 0;
+ let _temp_360 = 0;
+ let _temp_361 = 0;
+ let _temp_362 = 0;
+ let _temp_363 = 0;
+ let _temp_364 = 0;
+ let _temp_365 = 0;
+ let _temp_366 = 0;
+ let _temp_367 = 0;
+ let _temp_368 = 0;
+ let _temp_369 = 0;
+ let _temp_370 = 0;
+ let _temp_371 = 0;
+ let _temp_372 = 0;
+ let _temp_373 = 0;
+ let _temp_374 = 0;
+ let _temp_375 = 0;
+ let _temp_376 = 0;
+ let _temp_377 = 0;
+ let _temp_378 = 0;
+ let _temp_379 = 0;
+ let _temp_380 = 0;
+ let _temp_381 = 0;
+ let _temp_382 = 0;
+ let _temp_383 = 0;
+ let _temp_384 = 0;
+ let _temp_385 = 0;
+ let _temp_386 = 0;
+ let _temp_387 = 0;
+ let _temp_388 = 0;
+ let _temp_389 = 0;
+ let _temp_390 = 0;
+ let _temp_391 = 0;
+ let _temp_392 = 0;
+ let _temp_393 = 0;
+ let _temp_394 = 0;
+ let _temp_395 = 0;
+ let _temp_396 = 0;
+ let _temp_397 = 0;
+ let _temp_398 = 0;
+ let _temp_399 = 0;
+ let _temp_400 = 0;
+ let _temp_401 = 0;
+ let _temp_402 = 0;
+ let _temp_403 = 0;
+ let _temp_404 = 0;
+ let _temp_405 = 0;
+ let _temp_406 = 0;
+ let _temp_407 = 0;
+ let _temp_408 = 0;
+ let _temp_409 = 0;
+ let _temp_410 = 0;
+ let _temp_411 = 0;
+ let _temp_412 = 0;
+ let _temp_413 = 0;
+ let _temp_414 = 0;
+ let _temp_415 = 0;
+ let _temp_416 = 0;
+ let _temp_417 = 0;
+ let _temp_418 = 0;
+ let _temp_419 = 0;
+ let _temp_420 = 0;
+ let _temp_421 = 0;
+ let _temp_422 = 0;
+ let _temp_423 = 0;
+ let _temp_424 = 0;
+ let _temp_425 = 0;
+ let _temp_426 = 0;
+ let _temp_427 = 0;
+ let _temp_428 = 0;
+ let _temp_429 = 0;
+ let _temp_430 = 0;
+ let _temp_431 = 0;
+ let _temp_432 = 0;
+ let _temp_433 = 0;
+ let _temp_434 = 0;
+ let _temp_435 = 0;
+ let _temp_436 = 0;
+ let _temp_437 = 0;
+ let _temp_438 = 0;
+ let _temp_439 = 0;
+ let _temp_440 = 0;
+ let _temp_441 = 0;
+ let _temp_442 = 0;
+ let _temp_443 = 0;
+ let _temp_444 = 0;
+ let _temp_445 = 0;
+ let _temp_446 = 0;
+ let _temp_447 = 0;
+ let _temp_448 = 0;
+ let _temp_449 = 0;
+ let _temp_450 = 0;
+ let _temp_451 = 0;
+ let _temp_452 = 0;
+ let _temp_453 = 0;
+ let _temp_454 = 0;
+ let _temp_455 = 0;
+ let _temp_456 = 0;
+ let _temp_457 = 0;
+ let _temp_458 = 0;
+ let _temp_459 = 0;
+ let _temp_460 = 0;
+ let _temp_461 = 0;
+ let _temp_462 = 0;
+ let _temp_463 = 0;
+ let _temp_464 = 0;
+ let _temp_465 = 0;
+ let _temp_466 = 0;
+ let _temp_467 = 0;
+ let _temp_468 = 0;
+ let _temp_469 = 0;
+ let _temp_470 = 0;
+ let _temp_471 = 0;
+ let _temp_472 = 0;
+ let _temp_473 = 0;
+ let _temp_474 = 0;
+ let _temp_475 = 0;
+ let _temp_476 = 0;
+ let _temp_477 = 0;
+ let _temp_478 = 0;
+ let _temp_479 = 0;
+ let _temp_480 = 0;
+ let _temp_481 = 0;
+ let _temp_482 = 0;
+ let _temp_483 = 0;
+ let _temp_484 = 0;
+ let _temp_485 = 0;
+ let _temp_486 = 0;
+ let _temp_487 = 0;
+ let _temp_488 = 0;
+ let _temp_489 = 0;
+ let _temp_490 = 0;
+ let _temp_491 = 0;
+ let _temp_492 = 0;
+ let _temp_493 = 0;
+ let _temp_494 = 0;
+ let _temp_495 = 0;
+ let _temp_496 = 0;
+ let _temp_497 = 0;
+ let _temp_498 = 0;
+ let _temp_499 = 0;
+ let _temp_500 = 0;
+ let _temp_501 = 0;
+ let _temp_502 = 0;
+ let _temp_503 = 0;
+ let _temp_504 = 0;
+ let _temp_505 = 0;
+ let _temp_506 = 0;
+ let _temp_507 = 0;
+ let _temp_508 = 0;
+ let _temp_509 = 0;
+ let _temp_510 = 0;
+ let _temp_511 = 0;
+ let _temp_512 = 0;
+ let _temp_513 = 0;
+ let _temp_514 = 0;
+ let _temp_515 = 0;
+ let _temp_516 = 0;
+ let _temp_517 = 0;
+ let _temp_518 = 0;
+ let _temp_519 = 0;
+ let _temp_520 = 0;
+ let _temp_521 = 0;
+ let _temp_522 = 0;
+ let _temp_523 = 0;
+ let _temp_524 = 0;
+ let _temp_525 = 0;
+ let _temp_526 = 0;
+ let _temp_527 = 0;
+ let _temp_528 = 0;
+ let _temp_529 = 0;
+ let _temp_530 = 0;
+ let _temp_531 = 0;
+ let _temp_532 = 0;
+ let _temp_533 = 0;
+ let _temp_534 = 0;
+ let _temp_535 = 0;
+ let _temp_536 = 0;
+ let _temp_537 = 0;
+ let _temp_538 = 0;
+ let _temp_539 = 0;
+ let _temp_540 = 0;
+ let _temp_541 = 0;
+ let _temp_542 = 0;
+ let _temp_543 = 0;
+ let _temp_544 = 0;
+ let _temp_545 = 0;
+ let _temp_546 = 0;
+ let _temp_547 = 0;
+ let _temp_548 = 0;
+ let _temp_549 = 0;
+ let _temp_550 = 0;
+ let _temp_551 = 0;
+ let _temp_552 = 0;
+ let _temp_553 = 0;
+ let _temp_554 = 0;
+ let _temp_555 = 0;
+ let _temp_556 = 0;
+ let _temp_557 = 0;
+ let _temp_558 = 0;
+ let _temp_559 = 0;
+ let _temp_560 = 0;
+ let _temp_561 = 0;
+ let _temp_562 = 0;
+ let _temp_563 = 0;
+ let _temp_564 = 0;
+ let _temp_565 = 0;
+ let _temp_566 = 0;
+ let _temp_567 = 0;
+ let _temp_568 = 0;
+ let _temp_569 = 0;
+ let _temp_570 = 0;
+ let _temp_571 = 0;
+ let _temp_572 = 0;
+ let _temp_573 = 0;
+ let _temp_574 = 0;
+ let _temp_575 = 0;
+ let _temp_576 = 0;
+ let _temp_577 = 0;
+ let _temp_578 = 0;
+ let _temp_579 = 0;
+ let _temp_580 = 0;
+ let _temp_581 = 0;
+ let _temp_582 = 0;
+ let _temp_583 = 0;
+ let _temp_584 = 0;
+ let _temp_585 = 0;
+ let _temp_586 = 0;
+ let _temp_587 = 0;
+ let _temp_588 = 0;
+ let _temp_589 = 0;
+ let _temp_590 = 0;
+ let _temp_591 = 0;
+ let _temp_592 = 0;
+ let _temp_593 = 0;
+ let _temp_594 = 0;
+ let _temp_595 = 0;
+ let _temp_596 = 0;
+ let _temp_597 = 0;
+ let _temp_598 = 0;
+ let _temp_599 = 0;
+ let _temp_600 = 0;
+ let _temp_601 = 0;
+ let _temp_602 = 0;
+ let _temp_603 = 0;
+ let _temp_604 = 0;
+ let _temp_605 = 0;
+ let _temp_606 = 0;
+ let _temp_607 = 0;
+ let _temp_608 = 0;
+ let _temp_609 = 0;
+ let _temp_610 = 0;
+ let _temp_611 = 0;
+ let _temp_612 = 0;
+ let _temp_613 = 0;
+ let _temp_614 = 0;
+ let _temp_615 = 0;
+ let _temp_616 = 0;
+ let _temp_617 = 0;
+ let _temp_618 = 0;
+ let _temp_619 = 0;
+ let _temp_620 = 0;
+ let _temp_621 = 0;
+ let _temp_622 = 0;
+ let _temp_623 = 0;
+ let _temp_624 = 0;
+ let _temp_625 = 0;
+ let _temp_626 = 0;
+ let _temp_627 = 0;
+ let _temp_628 = 0;
+ let _temp_629 = 0;
+ let _temp_630 = 0;
+ let _temp_631 = 0;
+ let _temp_632 = 0;
+ let _temp_633 = 0;
+ let _temp_634 = 0;
+ let _temp_635 = 0;
+ let _temp_636 = 0;
+ let _temp_637 = 0;
+ let _temp_638 = 0;
+ let _temp_639 = 0;
+ let _temp_640 = 0;
+ let _temp_641 = 0;
+ let _temp_642 = 0;
+ let _temp_643 = 0;
+ let _temp_644 = 0;
+ let _temp_645 = 0;
+ let _temp_646 = 0;
+ let _temp_647 = 0;
+ let _temp_648 = 0;
+ let _temp_649 = 0;
+ let _temp_650 = 0;
+ let _temp_651 = 0;
+ let _temp_652 = 0;
+ let _temp_653 = 0;
+ let _temp_654 = 0;
+ let _temp_655 = 0;
+ let _temp_656 = 0;
+ let _temp_657 = 0;
+ let _temp_658 = 0;
+ let _temp_659 = 0;
+ let _temp_660 = 0;
+ let _temp_661 = 0;
+ let _temp_662 = 0;
+ let _temp_663 = 0;
+ let _temp_664 = 0;
+ let _temp_665 = 0;
+ let _temp_666 = 0;
+ let _temp_667 = 0;
+ let _temp_668 = 0;
+ let _temp_669 = 0;
+ let _temp_670 = 0;
+ let _temp_671 = 0;
+ let _temp_672 = 0;
+ let _temp_673 = 0;
+ let _temp_674 = 0;
+ let _temp_675 = 0;
+ let _temp_676 = 0;
+ let _temp_677 = 0;
+ let _temp_678 = 0;
+ let _temp_679 = 0;
+ let _temp_680 = 0;
+ let _temp_681 = 0;
+ let _temp_682 = 0;
+ let _temp_683 = 0;
+ let _temp_684 = 0;
+ let _temp_685 = 0;
+ let _temp_686 = 0;
+ let _temp_687 = 0;
+ let _temp_688 = 0;
+ let _temp_689 = 0;
+ let _temp_690 = 0;
+ let _temp_691 = 0;
+ let _temp_692 = 0;
+ let _temp_693 = 0;
+ let _temp_694 = 0;
+ let _temp_695 = 0;
+ let _temp_696 = 0;
+ let _temp_697 = 0;
+ let _temp_698 = 0;
+ let _temp_699 = 0;
+ let _temp_700 = 0;
+ let _temp_701 = 0;
+ let _temp_702 = 0;
+ let _temp_703 = 0;
+ let _temp_704 = 0;
+ let _temp_705 = 0;
+ let _temp_706 = 0;
+ let _temp_707 = 0;
+ let _temp_708 = 0;
+ let _temp_709 = 0;
+ let _temp_710 = 0;
+ let _temp_711 = 0;
+ let _temp_712 = 0;
+ let _temp_713 = 0;
+ let _temp_714 = 0;
+ let _temp_715 = 0;
+ let _temp_716 = 0;
+ let _temp_717 = 0;
+ let _temp_718 = 0;
+ let _temp_719 = 0;
+ let _temp_720 = 0;
+ let _temp_721 = 0;
+ let _temp_722 = 0;
+ let _temp_723 = 0;
+ let _temp_724 = 0;
+ let _temp_725 = 0;
+ let _temp_726 = 0;
+ let _temp_727 = 0;
+ let _temp_728 = 0;
+ let _temp_729 = 0;
+ let _temp_730 = 0;
+ let _temp_731 = 0;
+ let _temp_732 = 0;
+ let _temp_733 = 0;
+ let _temp_734 = 0;
+ let _temp_735 = 0;
+ let _temp_736 = 0;
+ let _temp_737 = 0;
+ let _temp_738 = 0;
+ let _temp_739 = 0;
+ let _temp_740 = 0;
+ let _temp_741 = 0;
+ let _temp_742 = 0;
+ let _temp_743 = 0;
+ let _temp_744 = 0;
+ let _temp_745 = 0;
+ let _temp_746 = 0;
+ let _temp_747 = 0;
+ let _temp_748 = 0;
+ let _temp_749 = 0;
+ let _temp_750 = 0;
+ let _temp_751 = 0;
+ let _temp_752 = 0;
+ let _temp_753 = 0;
+ let _temp_754 = 0;
+ let _temp_755 = 0;
+ let _temp_756 = 0;
+ let _temp_757 = 0;
+ let _temp_758 = 0;
+ let _temp_759 = 0;
+ let _temp_760 = 0;
+ let _temp_761 = 0;
+ let _temp_762 = 0;
+ let _temp_763 = 0;
+ let _temp_764 = 0;
+ let _temp_765 = 0;
+ let _temp_766 = 0;
+ let _temp_767 = 0;
+ let _temp_768 = 0;
+ let _temp_769 = 0;
+ let _temp_770 = 0;
+ let _temp_771 = 0;
+ let _temp_772 = 0;
+ let _temp_773 = 0;
+ let _temp_774 = 0;
+ let _temp_775 = 0;
+ let _temp_776 = 0;
+ let _temp_777 = 0;
+ let _temp_778 = 0;
+ let _temp_779 = 0;
+ let _temp_780 = 0;
+ let _temp_781 = 0;
+ let _temp_782 = 0;
+ let _temp_783 = 0;
+ let _temp_784 = 0;
+ let _temp_785 = 0;
+ let _temp_786 = 0;
+ let _temp_787 = 0;
+ let _temp_788 = 0;
+ let _temp_789 = 0;
+ let _temp_790 = 0;
+ let _temp_791 = 0;
+ let _temp_792 = 0;
+ let _temp_793 = 0;
+ let _temp_794 = 0;
+ let _temp_795 = 0;
+ let _temp_796 = 0;
+ let _temp_797 = 0;
+ let _temp_798 = 0;
+ let _temp_799 = 0;
+ let _temp_800 = 0;
+ let _temp_801 = 0;
+ let _temp_802 = 0;
+ let _temp_803 = 0;
+ let _temp_804 = 0;
+ let _temp_805 = 0;
+ let _temp_806 = 0;
+ let _temp_807 = 0;
+ let _temp_808 = 0;
+ let _temp_809 = 0;
+ let _temp_810 = 0;
+ let _temp_811 = 0;
+ let _temp_812 = 0;
+ let _temp_813 = 0;
+ let _temp_814 = 0;
+ let _temp_815 = 0;
+ let _temp_816 = 0;
+ let _temp_817 = 0;
+ let _temp_818 = 0;
+ let _temp_819 = 0;
+ let _temp_820 = 0;
+ let _temp_821 = 0;
+ let _temp_822 = 0;
+ let _temp_823 = 0;
+ let _temp_824 = 0;
+ let _temp_825 = 0;
+ let _temp_826 = 0;
+ let _temp_827 = 0;
+ let _temp_828 = 0;
+ let _temp_829 = 0;
+ let _temp_830 = 0;
+ let _temp_831 = 0;
+ let _temp_832 = 0;
+ let _temp_833 = 0;
+ let _temp_834 = 0;
+ let _temp_835 = 0;
+ let _temp_836 = 0;
+ let _temp_837 = 0;
+ let _temp_838 = 0;
+ let _temp_839 = 0;
+ let _temp_840 = 0;
+ let _temp_841 = 0;
+ let _temp_842 = 0;
+ let _temp_843 = 0;
+ let _temp_844 = 0;
+ let _temp_845 = 0;
+ let _temp_846 = 0;
+ let _temp_847 = 0;
+ let _temp_848 = 0;
+ let _temp_849 = 0;
+ let _temp_850 = 0;
+ let _temp_851 = 0;
+ let _temp_852 = 0;
+ let _temp_853 = 0;
+ let _temp_854 = 0;
+ let _temp_855 = 0;
+ let _temp_856 = 0;
+ let _temp_857 = 0;
+ let _temp_858 = 0;
+ let _temp_859 = 0;
+ let _temp_860 = 0;
+ let _temp_861 = 0;
+ let _temp_862 = 0;
+ let _temp_863 = 0;
+ let _temp_864 = 0;
+ let _temp_865 = 0;
+ let _temp_866 = 0;
+ let _temp_867 = 0;
+ let _temp_868 = 0;
+ let _temp_869 = 0;
+ let _temp_870 = 0;
+ let _temp_871 = 0;
+ let _temp_872 = 0;
+ let _temp_873 = 0;
+ let _temp_874 = 0;
+ let _temp_875 = 0;
+ let _temp_876 = 0;
+ let _temp_877 = 0;
+ let _temp_878 = 0;
+ let _temp_879 = 0;
+ let _temp_880 = 0;
+ let _temp_881 = 0;
+ let _temp_882 = 0;
+ let _temp_883 = 0;
+ let _temp_884 = 0;
+ let _temp_885 = 0;
+ let _temp_886 = 0;
+ let _temp_887 = 0;
+ let _temp_888 = 0;
+ let _temp_889 = 0;
+ let _temp_890 = 0;
+ let _temp_891 = 0;
+ let _temp_892 = 0;
+ let _temp_893 = 0;
+ let _temp_894 = 0;
+ let _temp_895 = 0;
+ let _temp_896 = 0;
+ let _temp_897 = 0;
+ let _temp_898 = 0;
+ let _temp_899 = 0;
+ let _temp_900 = 0;
+ let _temp_901 = 0;
+ let _temp_902 = 0;
+ let _temp_903 = 0;
+ let _temp_904 = 0;
+ let _temp_905 = 0;
+ let _temp_906 = 0;
+ let _temp_907 = 0;
+ let _temp_908 = 0;
+ let _temp_909 = 0;
+ let _temp_910 = 0;
+ let _temp_911 = 0;
+ let _temp_912 = 0;
+ let _temp_913 = 0;
+ let _temp_914 = 0;
+ let _temp_915 = 0;
+ let _temp_916 = 0;
+ let _temp_917 = 0;
+ let _temp_918 = 0;
+ let _temp_919 = 0;
+ let _temp_920 = 0;
+ let _temp_921 = 0;
+ let _temp_922 = 0;
+ let _temp_923 = 0;
+ let _temp_924 = 0;
+ let _temp_925 = 0;
+ let _temp_926 = 0;
+ let _temp_927 = 0;
+ let _temp_928 = 0;
+ let _temp_929 = 0;
+ let _temp_930 = 0;
+ let _temp_931 = 0;
+ let _temp_932 = 0;
+ let _temp_933 = 0;
+ let _temp_934 = 0;
+ let _temp_935 = 0;
+ let _temp_936 = 0;
+ let _temp_937 = 0;
+ let _temp_938 = 0;
+ let _temp_939 = 0;
+ let _temp_940 = 0;
+ let _temp_941 = 0;
+ let _temp_942 = 0;
+ let _temp_943 = 0;
+ let _temp_944 = 0;
+ let _temp_945 = 0;
+ let _temp_946 = 0;
+ let _temp_947 = 0;
+ let _temp_948 = 0;
+ let _temp_949 = 0;
+ let _temp_950 = 0;
+ let _temp_951 = 0;
+ let _temp_952 = 0;
+ let _temp_953 = 0;
+ let _temp_954 = 0;
+ let _temp_955 = 0;
+ let _temp_956 = 0;
+ let _temp_957 = 0;
+ let _temp_958 = 0;
+ let _temp_959 = 0;
+ let _temp_960 = 0;
+ let _temp_961 = 0;
+ let _temp_962 = 0;
+ let _temp_963 = 0;
+ let _temp_964 = 0;
+ let _temp_965 = 0;
+ let _temp_966 = 0;
+ let _temp_967 = 0;
+ let _temp_968 = 0;
+ let _temp_969 = 0;
+ let _temp_970 = 0;
+ let _temp_971 = 0;
+ let _temp_972 = 0;
+ let _temp_973 = 0;
+ let _temp_974 = 0;
+ let _temp_975 = 0;
+ let _temp_976 = 0;
+ let _temp_977 = 0;
+ let _temp_978 = 0;
+ let _temp_979 = 0;
+ let _temp_980 = 0;
+ let _temp_981 = 0;
+ let _temp_982 = 0;
+ let _temp_983 = 0;
+ let _temp_984 = 0;
+ let _temp_985 = 0;
+ let _temp_986 = 0;
+ let _temp_987 = 0;
+ let _temp_988 = 0;
+ let _temp_989 = 0;
+ let _temp_990 = 0;
+ let _temp_991 = 0;
+ let _temp_992 = 0;
+ let _temp_993 = 0;
+ let _temp_994 = 0;
+ let _temp_995 = 0;
+ let _temp_996 = 0;
+ let _temp_997 = 0;
+ let _temp_998 = 0;
+ let _temp_999 = 0;
+ let _temp_1000 = 0;
+ let _temp_1001 = 0;
+ let _temp_1002 = 0;
+ let _temp_1003 = 0;
+ let _temp_1004 = 0;
+ let _temp_1005 = 0;
+ let _temp_1006 = 0;
+ let _temp_1007 = 0;
+ let _temp_1008 = 0;
+ let _temp_1009 = 0;
+ let _temp_1010 = 0;
+ let _temp_1011 = 0;
+ let _temp_1012 = 0;
+ let _temp_1013 = 0;
+ let _temp_1014 = 0;
+ let _temp_1015 = 0;
+ let _temp_1016 = 0;
+ let _temp_1017 = 0;
+ let _temp_1018 = 0;
+ let _temp_1019 = 0;
+ let _temp_1020 = 0;
+ let _temp_1021 = 0;
+ let _temp_1022 = 0;
+ let _temp_1023 = 0;
+ let _temp_1024 = 0;
+ let _temp_1025 = 0;
+ let _temp_1026 = 0;
+ let _temp_1027 = 0;
+ let _temp_1028 = 0;
+ let _temp_1029 = 0;
+ let _temp_1030 = 0;
+ let _temp_1031 = 0;
+ let _temp_1032 = 0;
+ let _temp_1033 = 0;
+ let _temp_1034 = 0;
+ let _temp_1035 = 0;
+ let _temp_1036 = 0;
+ let _temp_1037 = 0;
+ let _temp_1038 = 0;
+ let _temp_1039 = 0;
+ let _temp_1040 = 0;
+ let _temp_1041 = 0;
+ let _temp_1042 = 0;
+ let _temp_1043 = 0;
+ let _temp_1044 = 0;
+ let _temp_1045 = 0;
+ let _temp_1046 = 0;
+ let _temp_1047 = 0;
+ let _temp_1048 = 0;
+ let _temp_1049 = 0;
+ let _temp_1050 = 0;
+ let _temp_1051 = 0;
+ let _temp_1052 = 0;
+ let _temp_1053 = 0;
+ let _temp_1054 = 0;
+ let _temp_1055 = 0;
+ let _temp_1056 = 0;
+ let _temp_1057 = 0;
+ let _temp_1058 = 0;
+ let _temp_1059 = 0;
+ let _temp_1060 = 0;
+ let _temp_1061 = 0;
+ let _temp_1062 = 0;
+ let _temp_1063 = 0;
+ let _temp_1064 = 0;
+ let _temp_1065 = 0;
+ let _temp_1066 = 0;
+ let _temp_1067 = 0;
+ let _temp_1068 = 0;
+ let _temp_1069 = 0;
+ let _temp_1070 = 0;
+ let _temp_1071 = 0;
+ let _temp_1072 = 0;
+ let _temp_1073 = 0;
+ let _temp_1074 = 0;
+ let _temp_1075 = 0;
+ let _temp_1076 = 0;
+ let _temp_1077 = 0;
+ let _temp_1078 = 0;
+ let _temp_1079 = 0;
+ let _temp_1080 = 0;
+ let _temp_1081 = 0;
+ let _temp_1082 = 0;
+ let _temp_1083 = 0;
+ let _temp_1084 = 0;
+ let _temp_1085 = 0;
+ let _temp_1086 = 0;
+ let _temp_1087 = 0;
+ let _temp_1088 = 0;
+ let _temp_1089 = 0;
+ let _temp_1090 = 0;
+ let _temp_1091 = 0;
+ let _temp_1092 = 0;
+ let _temp_1093 = 0;
+ let _temp_1094 = 0;
+ let _temp_1095 = 0;
+ let _temp_1096 = 0;
+ let _temp_1097 = 0;
+ let _temp_1098 = 0;
+ let _temp_1099 = 0;
+ let _temp_1100 = 0;
+ let _temp_1101 = 0;
+ let _temp_1102 = 0;
+ let _temp_1103 = 0;
+ let _temp_1104 = 0;
+ let _temp_1105 = 0;
+ let _temp_1106 = 0;
+ let _temp_1107 = 0;
+ let _temp_1108 = 0;
+ let _temp_1109 = 0;
+ let _temp_1110 = 0;
+ let _temp_1111 = 0;
+ let _temp_1112 = 0;
+ let _temp_1113 = 0;
+ let _temp_1114 = 0;
+ let _temp_1115 = 0;
+ let _temp_1116 = 0;
+ let _temp_1117 = 0;
+ let _temp_1118 = 0;
+ let _temp_1119 = 0;
+ let _temp_1120 = 0;
+ let _temp_1121 = 0;
+ let _temp_1122 = 0;
+ let _temp_1123 = 0;
+ let _temp_1124 = 0;
+ let _temp_1125 = 0;
+ let _temp_1126 = 0;
+ let _temp_1127 = 0;
+ let _temp_1128 = 0;
+ let _temp_1129 = 0;
+ let _temp_1130 = 0;
+ let _temp_1131 = 0;
+ let _temp_1132 = 0;
+ let _temp_1133 = 0;
+ let _temp_1134 = 0;
+ let _temp_1135 = 0;
+ let _temp_1136 = 0;
+ let _temp_1137 = 0;
+ let _temp_1138 = 0;
+ let _temp_1139 = 0;
+ let _temp_1140 = 0;
+ let _temp_1141 = 0;
+ let _temp_1142 = 0;
+ let _temp_1143 = 0;
+ let _temp_1144 = 0;
+ let _temp_1145 = 0;
+ let _temp_1146 = 0;
+ let _temp_1147 = 0;
+ let _temp_1148 = 0;
+ let _temp_1149 = 0;
+ let _temp_1150 = 0;
+ let _temp_1151 = 0;
+ let _temp_1152 = 0;
+ let _temp_1153 = 0;
+ let _temp_1154 = 0;
+ let _temp_1155 = 0;
+ let _temp_1156 = 0;
+ let _temp_1157 = 0;
+ let _temp_1158 = 0;
+ let _temp_1159 = 0;
+ let _temp_1160 = 0;
+ let _temp_1161 = 0;
+ let _temp_1162 = 0;
+ let _temp_1163 = 0;
+ let _temp_1164 = 0;
+ let _temp_1165 = 0;
+ let _temp_1166 = 0;
+ let _temp_1167 = 0;
+ let _temp_1168 = 0;
+ let _temp_1169 = 0;
+ let _temp_1170 = 0;
+ let _temp_1171 = 0;
+ let _temp_1172 = 0;
+ let _temp_1173 = 0;
+ let _temp_1174 = 0;
+ let _temp_1175 = 0;
+ let _temp_1176 = 0;
+ let _temp_1177 = 0;
+ let _temp_1178 = 0;
+ let _temp_1179 = 0;
+ let _temp_1180 = 0;
+ let _temp_1181 = 0;
+ let _temp_1182 = 0;
+ let _temp_1183 = 0;
+ let _temp_1184 = 0;
+ let _temp_1185 = 0;
+ let _temp_1186 = 0;
+ let _temp_1187 = 0;
+ let _temp_1188 = 0;
+ let _temp_1189 = 0;
+ let _temp_1190 = 0;
+ let _temp_1191 = 0;
+ let _temp_1192 = 0;
+ let _temp_1193 = 0;
+ let _temp_1194 = 0;
+ let _temp_1195 = 0;
+ let _temp_1196 = 0;
+ let _temp_1197 = 0;
+ let _temp_1198 = 0;
+ let _temp_1199 = 0;
+ let _temp_1200 = 0;
+ let _temp_1201 = 0;
+ let _temp_1202 = 0;
+ let _temp_1203 = 0;
+ let _temp_1204 = 0;
+ let _temp_1205 = 0;
+ let _temp_1206 = 0;
+ let _temp_1207 = 0;
+ let _temp_1208 = 0;
+ let _temp_1209 = 0;
+ let _temp_1210 = 0;
+ let _temp_1211 = 0;
+ let _temp_1212 = 0;
+ let _temp_1213 = 0;
+ let _temp_1214 = 0;
+ let _temp_1215 = 0;
+ let _temp_1216 = 0;
+ let _temp_1217 = 0;
+ let _temp_1218 = 0;
+ let _temp_1219 = 0;
+ let _temp_1220 = 0;
+ let _temp_1221 = 0;
+ let _temp_1222 = 0;
+ let _temp_1223 = 0;
+ let _temp_1224 = 0;
+ let _temp_1225 = 0;
+ let _temp_1226 = 0;
+ let _temp_1227 = 0;
+ let _temp_1228 = 0;
+ let _temp_1229 = 0;
+ let _temp_1230 = 0;
+ let _temp_1231 = 0;
+ let _temp_1232 = 0;
+ let _temp_1233 = 0;
+ let _temp_1234 = 0;
+ let _temp_1235 = 0;
+ let _temp_1236 = 0;
+ let _temp_1237 = 0;
+ let _temp_1238 = 0;
+ let _temp_1239 = 0;
+ let _temp_1240 = 0;
+ let _temp_1241 = 0;
+ let _temp_1242 = 0;
+ let _temp_1243 = 0;
+ let _temp_1244 = 0;
+ let _temp_1245 = 0;
+ let _temp_1246 = 0;
+ let _temp_1247 = 0;
+ let _temp_1248 = 0;
+ let _temp_1249 = 0;
+ let _temp_1250 = 0;
+ let _temp_1251 = 0;
+ let _temp_1252 = 0;
+ let _temp_1253 = 0;
+ let _temp_1254 = 0;
+ let _temp_1255 = 0;
+ let _temp_1256 = 0;
+ let _temp_1257 = 0;
+ let _temp_1258 = 0;
+ let _temp_1259 = 0;
+ let _temp_1260 = 0;
+ let _temp_1261 = 0;
+ let _temp_1262 = 0;
+ let _temp_1263 = 0;
+ let _temp_1264 = 0;
+ let _temp_1265 = 0;
+ let _temp_1266 = 0;
+ let _temp_1267 = 0;
+ let _temp_1268 = 0;
+ let _temp_1269 = 0;
+ let _temp_1270 = 0;
+ let _temp_1271 = 0;
+ let _temp_1272 = 0;
+ let _temp_1273 = 0;
+ let _temp_1274 = 0;
+ let _temp_1275 = 0;
+ let _temp_1276 = 0;
+ let _temp_1277 = 0;
+ let _temp_1278 = 0;
+ let _temp_1279 = 0;
+ let _temp_1280 = 0;
+ let _temp_1281 = 0;
+ let _temp_1282 = 0;
+ let _temp_1283 = 0;
+ let _temp_1284 = 0;
+ let _temp_1285 = 0;
+ let _temp_1286 = 0;
+ let _temp_1287 = 0;
+ let _temp_1288 = 0;
+ let _temp_1289 = 0;
+ let _temp_1290 = 0;
+ let _temp_1291 = 0;
+ let _temp_1292 = 0;
+ let _temp_1293 = 0;
+ let _temp_1294 = 0;
+ let _temp_1295 = 0;
+ let _temp_1296 = 0;
+ let _temp_1297 = 0;
+ let _temp_1298 = 0;
+ let _temp_1299 = 0;
+ let _temp_1300 = 0;
+ let _temp_1301 = 0;
+ let _temp_1302 = 0;
+ let _temp_1303 = 0;
+ let _temp_1304 = 0;
+ let _temp_1305 = 0;
+ let _temp_1306 = 0;
+ let _temp_1307 = 0;
+ let _temp_1308 = 0;
+ let _temp_1309 = 0;
+ let _temp_1310 = 0;
+ let _temp_1311 = 0;
+ let _temp_1312 = 0;
+ let _temp_1313 = 0;
+ let _temp_1314 = 0;
+ let _temp_1315 = 0;
+ let _temp_1316 = 0;
+ let _temp_1317 = 0;
+ let _temp_1318 = 0;
+ let _temp_1319 = 0;
+ let _temp_1320 = 0;
+ let _temp_1321 = 0;
+ let _temp_1322 = 0;
+ let _temp_1323 = 0;
+ let _temp_1324 = 0;
+ let _temp_1325 = 0;
+ let _temp_1326 = 0;
+ let _temp_1327 = 0;
+ let _temp_1328 = 0;
+ let _temp_1329 = 0;
+ let _temp_1330 = 0;
+ let _temp_1331 = 0;
+ let _temp_1332 = 0;
+ let _temp_1333 = 0;
+ let _temp_1334 = 0;
+ let _temp_1335 = 0;
+ let _temp_1336 = 0;
+ let _temp_1337 = 0;
+ let _temp_1338 = 0;
+ let _temp_1339 = 0;
+ let _temp_1340 = 0;
+ let _temp_1341 = 0;
+ let _temp_1342 = 0;
+ let _temp_1343 = 0;
+ let _temp_1344 = 0;
+ let _temp_1345 = 0;
+ let _temp_1346 = 0;
+ let _temp_1347 = 0;
+ let _temp_1348 = 0;
+ let _temp_1349 = 0;
+ let _temp_1350 = 0;
+ let _temp_1351 = 0;
+ let _temp_1352 = 0;
+ let _temp_1353 = 0;
+ let _temp_1354 = 0;
+ let _temp_1355 = 0;
+ let _temp_1356 = 0;
+ let _temp_1357 = 0;
+ let _temp_1358 = 0;
+ let _temp_1359 = 0;
+ let _temp_1360 = 0;
+ let _temp_1361 = 0;
+ let _temp_1362 = 0;
+ let _temp_1363 = 0;
+ let _temp_1364 = 0;
+ let _temp_1365 = 0;
+ let _temp_1366 = 0;
+ let _temp_1367 = 0;
+ let _temp_1368 = 0;
+ let _temp_1369 = 0;
+ let _temp_1370 = 0;
+ let _temp_1371 = 0;
+ let _temp_1372 = 0;
+ let _temp_1373 = 0;
+ let _temp_1374 = 0;
+ let _temp_1375 = 0;
+ let _temp_1376 = 0;
+ let _temp_1377 = 0;
+ let _temp_1378 = 0;
+ let _temp_1379 = 0;
+ let _temp_1380 = 0;
+ let _temp_1381 = 0;
+ let _temp_1382 = 0;
+ let _temp_1383 = 0;
+ let _temp_1384 = 0;
+ let _temp_1385 = 0;
+ let _temp_1386 = 0;
+ let _temp_1387 = 0;
+ let _temp_1388 = 0;
+ let _temp_1389 = 0;
+ let _temp_1390 = 0;
+ let _temp_1391 = 0;
+ let _temp_1392 = 0;
+ let _temp_1393 = 0;
+ let _temp_1394 = 0;
+ let _temp_1395 = 0;
+ let _temp_1396 = 0;
+ let _temp_1397 = 0;
+ let _temp_1398 = 0;
+ let _temp_1399 = 0;
+ let _temp_1400 = 0;
+ let _temp_1401 = 0;
+ let _temp_1402 = 0;
+ let _temp_1403 = 0;
+ let _temp_1404 = 0;
+ let _temp_1405 = 0;
+ let _temp_1406 = 0;
+ let _temp_1407 = 0;
+ let _temp_1408 = 0;
+ let _temp_1409 = 0;
+ let _temp_1410 = 0;
+ let _temp_1411 = 0;
+ let _temp_1412 = 0;
+ let _temp_1413 = 0;
+ let _temp_1414 = 0;
+ let _temp_1415 = 0;
+ let _temp_1416 = 0;
+ let _temp_1417 = 0;
+ let _temp_1418 = 0;
+ let _temp_1419 = 0;
+ let _temp_1420 = 0;
+ let _temp_1421 = 0;
+ let _temp_1422 = 0;
+ let _temp_1423 = 0;
+ let _temp_1424 = 0;
+ let _temp_1425 = 0;
+ let _temp_1426 = 0;
+ let _temp_1427 = 0;
+ let _temp_1428 = 0;
+ let _temp_1429 = 0;
+ let _temp_1430 = 0;
+ let _temp_1431 = 0;
+ let _temp_1432 = 0;
+ let _temp_1433 = 0;
+ let _temp_1434 = 0;
+ let _temp_1435 = 0;
+ let _temp_1436 = 0;
+ let _temp_1437 = 0;
+ let _temp_1438 = 0;
+ let _temp_1439 = 0;
+ let _temp_1440 = 0;
+ let _temp_1441 = 0;
+ let _temp_1442 = 0;
+ let _temp_1443 = 0;
+ let _temp_1444 = 0;
+ let _temp_1445 = 0;
+ let _temp_1446 = 0;
+ let _temp_1447 = 0;
+ let _temp_1448 = 0;
+ let _temp_1449 = 0;
+ let _temp_1450 = 0;
+ let _temp_1451 = 0;
+ let _temp_1452 = 0;
+ let _temp_1453 = 0;
+ let _temp_1454 = 0;
+ let _temp_1455 = 0;
+ let _temp_1456 = 0;
+ let _temp_1457 = 0;
+ let _temp_1458 = 0;
+ let _temp_1459 = 0;
+ let _temp_1460 = 0;
+ let _temp_1461 = 0;
+ let _temp_1462 = 0;
+ let _temp_1463 = 0;
+ let _temp_1464 = 0;
+ let _temp_1465 = 0;
+ let _temp_1466 = 0;
+ let _temp_1467 = 0;
+ let _temp_1468 = 0;
+ let _temp_1469 = 0;
+ let _temp_1470 = 0;
+ let _temp_1471 = 0;
+ let _temp_1472 = 0;
+ let _temp_1473 = 0;
+ let _temp_1474 = 0;
+ let _temp_1475 = 0;
+ let _temp_1476 = 0;
+ let _temp_1477 = 0;
+ let _temp_1478 = 0;
+ let _temp_1479 = 0;
+ let _temp_1480 = 0;
+ let _temp_1481 = 0;
+ let _temp_1482 = 0;
+ let _temp_1483 = 0;
+ let _temp_1484 = 0;
+ let _temp_1485 = 0;
+ let _temp_1486 = 0;
+ let _temp_1487 = 0;
+ let _temp_1488 = 0;
+ let _temp_1489 = 0;
+ let _temp_1490 = 0;
+ let _temp_1491 = 0;
+ let _temp_1492 = 0;
+ let _temp_1493 = 0;
+ let _temp_1494 = 0;
+ let _temp_1495 = 0;
+ let _temp_1496 = 0;
+ let _temp_1497 = 0;
+ let _temp_1498 = 0;
+ let _temp_1499 = 0;
+ let _temp_1500 = 0;
+ let _temp_1501 = 0;
+ let _temp_1502 = 0;
+ let _temp_1503 = 0;
+ let _temp_1504 = 0;
+ let _temp_1505 = 0;
+ let _temp_1506 = 0;
+ let _temp_1507 = 0;
+ let _temp_1508 = 0;
+ let _temp_1509 = 0;
+ let _temp_1510 = 0;
+ let _temp_1511 = 0;
+ let _temp_1512 = 0;
+ let _temp_1513 = 0;
+ let _temp_1514 = 0;
+ let _temp_1515 = 0;
+ let _temp_1516 = 0;
+ let _temp_1517 = 0;
+ let _temp_1518 = 0;
+ let _temp_1519 = 0;
+ let _temp_1520 = 0;
+ let _temp_1521 = 0;
+ let _temp_1522 = 0;
+ let _temp_1523 = 0;
+ let _temp_1524 = 0;
+ let _temp_1525 = 0;
+ let _temp_1526 = 0;
+ let _temp_1527 = 0;
+ let _temp_1528 = 0;
+ let _temp_1529 = 0;
+ let _temp_1530 = 0;
+ let _temp_1531 = 0;
+ let _temp_1532 = 0;
+ let _temp_1533 = 0;
+ let _temp_1534 = 0;
+ let _temp_1535 = 0;
+ let _temp_1536 = 0;
+ let _temp_1537 = 0;
+ let _temp_1538 = 0;
+ let _temp_1539 = 0;
+ let _temp_1540 = 0;
+ let _temp_1541 = 0;
+ let _temp_1542 = 0;
+ let _temp_1543 = 0;
+ let _temp_1544 = 0;
+ let _temp_1545 = 0;
+ let _temp_1546 = 0;
+ let _temp_1547 = 0;
+ let _temp_1548 = 0;
+ let _temp_1549 = 0;
+ let _temp_1550 = 0;
+ let _temp_1551 = 0;
+ let _temp_1552 = 0;
+ let _temp_1553 = 0;
+ let _temp_1554 = 0;
+ let _temp_1555 = 0;
+ let _temp_1556 = 0;
+ let _temp_1557 = 0;
+ let _temp_1558 = 0;
+ let _temp_1559 = 0;
+ let _temp_1560 = 0;
+ let _temp_1561 = 0;
+ let _temp_1562 = 0;
+ let _temp_1563 = 0;
+ let _temp_1564 = 0;
+ let _temp_1565 = 0;
+ let _temp_1566 = 0;
+ let _temp_1567 = 0;
+ let _temp_1568 = 0;
+ let _temp_1569 = 0;
+ let _temp_1570 = 0;
+ let _temp_1571 = 0;
+ let _temp_1572 = 0;
+ let _temp_1573 = 0;
+ let _temp_1574 = 0;
+ let _temp_1575 = 0;
+ let _temp_1576 = 0;
+ let _temp_1577 = 0;
+ let _temp_1578 = 0;
+ let _temp_1579 = 0;
+ let _temp_1580 = 0;
+ let _temp_1581 = 0;
+ let _temp_1582 = 0;
+ let _temp_1583 = 0;
+ let _temp_1584 = 0;
+ let _temp_1585 = 0;
+ let _temp_1586 = 0;
+ let _temp_1587 = 0;
+ let _temp_1588 = 0;
+ let _temp_1589 = 0;
+ let _temp_1590 = 0;
+ let _temp_1591 = 0;
+ let _temp_1592 = 0;
+ let _temp_1593 = 0;
+ let _temp_1594 = 0;
+ let _temp_1595 = 0;
+ let _temp_1596 = 0;
+ let _temp_1597 = 0;
+ let _temp_1598 = 0;
+ let _temp_1599 = 0;
+ let _temp_1600 = 0;
+ let _temp_1601 = 0;
+ let _temp_1602 = 0;
+ let _temp_1603 = 0;
+ let _temp_1604 = 0;
+ let _temp_1605 = 0;
+ let _temp_1606 = 0;
+ let _temp_1607 = 0;
+ let _temp_1608 = 0;
+ let _temp_1609 = 0;
+ let _temp_1610 = 0;
+ let _temp_1611 = 0;
+ let _temp_1612 = 0;
+ let _temp_1613 = 0;
+ let _temp_1614 = 0;
+ let _temp_1615 = 0;
+ let _temp_1616 = 0;
+ let _temp_1617 = 0;
+ let _temp_1618 = 0;
+ let _temp_1619 = 0;
+ let _temp_1620 = 0;
+ let _temp_1621 = 0;
+ let _temp_1622 = 0;
+ let _temp_1623 = 0;
+ let _temp_1624 = 0;
+ let _temp_1625 = 0;
+ let _temp_1626 = 0;
+ let _temp_1627 = 0;
+ let _temp_1628 = 0;
+ let _temp_1629 = 0;
+ let _temp_1630 = 0;
+ let _temp_1631 = 0;
+ let _temp_1632 = 0;
+ let _temp_1633 = 0;
+ let _temp_1634 = 0;
+ let _temp_1635 = 0;
+ let _temp_1636 = 0;
+ let _temp_1637 = 0;
+ let _temp_1638 = 0;
+ let _temp_1639 = 0;
+ let _temp_1640 = 0;
+ let _temp_1641 = 0;
+ let _temp_1642 = 0;
+ let _temp_1643 = 0;
+ let _temp_1644 = 0;
+ let _temp_1645 = 0;
+ let _temp_1646 = 0;
+ let _temp_1647 = 0;
+ let _temp_1648 = 0;
+ let _temp_1649 = 0;
+ let _temp_1650 = 0;
+ let _temp_1651 = 0;
+ let _temp_1652 = 0;
+ let _temp_1653 = 0;
+ let _temp_1654 = 0;
+ let _temp_1655 = 0;
+ let _temp_1656 = 0;
+ let _temp_1657 = 0;
+ let _temp_1658 = 0;
+ let _temp_1659 = 0;
+ let _temp_1660 = 0;
+ let _temp_1661 = 0;
+ let _temp_1662 = 0;
+ let _temp_1663 = 0;
+ let _temp_1664 = 0;
+ let _temp_1665 = 0;
+ let _temp_1666 = 0;
+ let _temp_1667 = 0;
+ let _temp_1668 = 0;
+ let _temp_1669 = 0;
+ let _temp_1670 = 0;
+ let _temp_1671 = 0;
+ let _temp_1672 = 0;
+ let _temp_1673 = 0;
+ let _temp_1674 = 0;
+ let _temp_1675 = 0;
+ let _temp_1676 = 0;
+ let _temp_1677 = 0;
+ let _temp_1678 = 0;
+ let _temp_1679 = 0;
+ let _temp_1680 = 0;
+ let _temp_1681 = 0;
+ let _temp_1682 = 0;
+ let _temp_1683 = 0;
+ let _temp_1684 = 0;
+ let _temp_1685 = 0;
+ let _temp_1686 = 0;
+ let _temp_1687 = 0;
+ let _temp_1688 = 0;
+ let _temp_1689 = 0;
+ let _temp_1690 = 0;
+ let _temp_1691 = 0;
+ let _temp_1692 = 0;
+ let _temp_1693 = 0;
+ let _temp_1694 = 0;
+ let _temp_1695 = 0;
+ let _temp_1696 = 0;
+ let _temp_1697 = 0;
+ let _temp_1698 = 0;
+ let _temp_1699 = 0;
+ let _temp_1700 = 0;
+ let _temp_1701 = 0;
+ let _temp_1702 = 0;
+ let _temp_1703 = 0;
+ let _temp_1704 = 0;
+ let _temp_1705 = 0;
+ let _temp_1706 = 0;
+ let _temp_1707 = 0;
+ let _temp_1708 = 0;
+ let _temp_1709 = 0;
+ let _temp_1710 = 0;
+ let _temp_1711 = 0;
+ let _temp_1712 = 0;
+ let _temp_1713 = 0;
+ let _temp_1714 = 0;
+ let _temp_1715 = 0;
+ let _temp_1716 = 0;
+ let _temp_1717 = 0;
+ let _temp_1718 = 0;
+ let _temp_1719 = 0;
+ let _temp_1720 = 0;
+ let _temp_1721 = 0;
+ let _temp_1722 = 0;
+ let _temp_1723 = 0;
+ let _temp_1724 = 0;
+ let _temp_1725 = 0;
+ let _temp_1726 = 0;
+ let _temp_1727 = 0;
+ let _temp_1728 = 0;
+ let _temp_1729 = 0;
+ let _temp_1730 = 0;
+ let _temp_1731 = 0;
+ let _temp_1732 = 0;
+ let _temp_1733 = 0;
+ let _temp_1734 = 0;
+ let _temp_1735 = 0;
+ let _temp_1736 = 0;
+ let _temp_1737 = 0;
+ let _temp_1738 = 0;
+ let _temp_1739 = 0;
+ let _temp_1740 = 0;
+ let _temp_1741 = 0;
+ let _temp_1742 = 0;
+ let _temp_1743 = 0;
+ let _temp_1744 = 0;
+ let _temp_1745 = 0;
+ let _temp_1746 = 0;
+ let _temp_1747 = 0;
+ let _temp_1748 = 0;
+ let _temp_1749 = 0;
+ let _temp_1750 = 0;
+ let _temp_1751 = 0;
+ let _temp_1752 = 0;
+ let _temp_1753 = 0;
+ let _temp_1754 = 0;
+ let _temp_1755 = 0;
+ let _temp_1756 = 0;
+ let _temp_1757 = 0;
+ let _temp_1758 = 0;
+ let _temp_1759 = 0;
+ let _temp_1760 = 0;
+ let _temp_1761 = 0;
+ let _temp_1762 = 0;
+ let _temp_1763 = 0;
+ let _temp_1764 = 0;
+ let _temp_1765 = 0;
+ let _temp_1766 = 0;
+ let _temp_1767 = 0;
+ let _temp_1768 = 0;
+ let _temp_1769 = 0;
+ let _temp_1770 = 0;
+ let _temp_1771 = 0;
+ let _temp_1772 = 0;
+ let _temp_1773 = 0;
+ let _temp_1774 = 0;
+ let _temp_1775 = 0;
+ let _temp_1776 = 0;
+ let _temp_1777 = 0;
+ let _temp_1778 = 0;
+ let _temp_1779 = 0;
+ let _temp_1780 = 0;
+ let _temp_1781 = 0;
+ let _temp_1782 = 0;
+ let _temp_1783 = 0;
+ let _temp_1784 = 0;
+ let _temp_1785 = 0;
+ let _temp_1786 = 0;
+ let _temp_1787 = 0;
+ let _temp_1788 = 0;
+ let _temp_1789 = 0;
+ let _temp_1790 = 0;
+ let _temp_1791 = 0;
+ let _temp_1792 = 0;
+ let _temp_1793 = 0;
+ let _temp_1794 = 0;
+ let _temp_1795 = 0;
+ let _temp_1796 = 0;
+ let _temp_1797 = 0;
+ let _temp_1798 = 0;
+ let _temp_1799 = 0;
+ let _temp_1800 = 0;
+ let _temp_1801 = 0;
+ let _temp_1802 = 0;
+ let _temp_1803 = 0;
+ let _temp_1804 = 0;
+ let _temp_1805 = 0;
+ let _temp_1806 = 0;
+ let _temp_1807 = 0;
+ let _temp_1808 = 0;
+ let _temp_1809 = 0;
+ let _temp_1810 = 0;
+ let _temp_1811 = 0;
+ let _temp_1812 = 0;
+ let _temp_1813 = 0;
+ let _temp_1814 = 0;
+ let _temp_1815 = 0;
+ let _temp_1816 = 0;
+ let _temp_1817 = 0;
+ let _temp_1818 = 0;
+ let _temp_1819 = 0;
+ let _temp_1820 = 0;
+ let _temp_1821 = 0;
+ let _temp_1822 = 0;
+ let _temp_1823 = 0;
+ let _temp_1824 = 0;
+ let _temp_1825 = 0;
+ let _temp_1826 = 0;
+ let _temp_1827 = 0;
+ let _temp_1828 = 0;
+ let _temp_1829 = 0;
+ let _temp_1830 = 0;
+ let _temp_1831 = 0;
+ let _temp_1832 = 0;
+ let _temp_1833 = 0;
+ let _temp_1834 = 0;
+ let _temp_1835 = 0;
+ let _temp_1836 = 0;
+ let _temp_1837 = 0;
+ let _temp_1838 = 0;
+ let _temp_1839 = 0;
+ let _temp_1840 = 0;
+ let _temp_1841 = 0;
+ let _temp_1842 = 0;
+ let _temp_1843 = 0;
+ let _temp_1844 = 0;
+ let _temp_1845 = 0;
+ let _temp_1846 = 0;
+ let _temp_1847 = 0;
+ let _temp_1848 = 0;
+ let _temp_1849 = 0;
+ let _temp_1850 = 0;
+ let _temp_1851 = 0;
+ let _temp_1852 = 0;
+ let _temp_1853 = 0;
+ let _temp_1854 = 0;
+ let _temp_1855 = 0;
+ let _temp_1856 = 0;
+ let _temp_1857 = 0;
+ let _temp_1858 = 0;
+ let _temp_1859 = 0;
+ let _temp_1860 = 0;
+ let _temp_1861 = 0;
+ let _temp_1862 = 0;
+ let _temp_1863 = 0;
+ let _temp_1864 = 0;
+ let _temp_1865 = 0;
+ let _temp_1866 = 0;
+ let _temp_1867 = 0;
+ let _temp_1868 = 0;
+ let _temp_1869 = 0;
+ let _temp_1870 = 0;
+ let _temp_1871 = 0;
+ let _temp_1872 = 0;
+ let _temp_1873 = 0;
+ let _temp_1874 = 0;
+ let _temp_1875 = 0;
+ let _temp_1876 = 0;
+ let _temp_1877 = 0;
+ let _temp_1878 = 0;
+ let _temp_1879 = 0;
+ let _temp_1880 = 0;
+ let _temp_1881 = 0;
+ let _temp_1882 = 0;
+ let _temp_1883 = 0;
+ let _temp_1884 = 0;
+ let _temp_1885 = 0;
+ let _temp_1886 = 0;
+ let _temp_1887 = 0;
+ let _temp_1888 = 0;
+ let _temp_1889 = 0;
+ let _temp_1890 = 0;
+ let _temp_1891 = 0;
+ let _temp_1892 = 0;
+ let _temp_1893 = 0;
+ let _temp_1894 = 0;
+ let _temp_1895 = 0;
+ let _temp_1896 = 0;
+ let _temp_1897 = 0;
+ let _temp_1898 = 0;
+ let _temp_1899 = 0;
+ let _temp_1900 = 0;
+ let _temp_1901 = 0;
+ let _temp_1902 = 0;
+ let _temp_1903 = 0;
+ let _temp_1904 = 0;
+ let _temp_1905 = 0;
+ let _temp_1906 = 0;
+ let _temp_1907 = 0;
+ let _temp_1908 = 0;
+ let _temp_1909 = 0;
+ let _temp_1910 = 0;
+ let _temp_1911 = 0;
+ let _temp_1912 = 0;
+ let _temp_1913 = 0;
+ let _temp_1914 = 0;
+ let _temp_1915 = 0;
+ let _temp_1916 = 0;
+ let _temp_1917 = 0;
+ let _temp_1918 = 0;
+ let _temp_1919 = 0;
+ let _temp_1920 = 0;
+ let _temp_1921 = 0;
+ let _temp_1922 = 0;
+ let _temp_1923 = 0;
+ let _temp_1924 = 0;
+ let _temp_1925 = 0;
+ let _temp_1926 = 0;
+ let _temp_1927 = 0;
+ let _temp_1928 = 0;
+ let _temp_1929 = 0;
+ let _temp_1930 = 0;
+ let _temp_1931 = 0;
+ let _temp_1932 = 0;
+ let _temp_1933 = 0;
+ let _temp_1934 = 0;
+ let _temp_1935 = 0;
+ let _temp_1936 = 0;
+ let _temp_1937 = 0;
+ let _temp_1938 = 0;
+ let _temp_1939 = 0;
+ let _temp_1940 = 0;
+ let _temp_1941 = 0;
+ let _temp_1942 = 0;
+ let _temp_1943 = 0;
+ let _temp_1944 = 0;
+ let _temp_1945 = 0;
+ let _temp_1946 = 0;
+ let _temp_1947 = 0;
+ let _temp_1948 = 0;
+ let _temp_1949 = 0;
+ let _temp_1950 = 0;
+ let _temp_1951 = 0;
+ let _temp_1952 = 0;
+ let _temp_1953 = 0;
+ let _temp_1954 = 0;
+ let _temp_1955 = 0;
+ let _temp_1956 = 0;
+ let _temp_1957 = 0;
+ let _temp_1958 = 0;
+ let _temp_1959 = 0;
+ let _temp_1960 = 0;
+ let _temp_1961 = 0;
+ let _temp_1962 = 0;
+ let _temp_1963 = 0;
+ let _temp_1964 = 0;
+ let _temp_1965 = 0;
+ let _temp_1966 = 0;
+ let _temp_1967 = 0;
+ let _temp_1968 = 0;
+ let _temp_1969 = 0;
+ let _temp_1970 = 0;
+ let _temp_1971 = 0;
+ let _temp_1972 = 0;
+ let _temp_1973 = 0;
+ let _temp_1974 = 0;
+ let _temp_1975 = 0;
+ let _temp_1976 = 0;
+ let _temp_1977 = 0;
+ let _temp_1978 = 0;
+ let _temp_1979 = 0;
+ let _temp_1980 = 0;
+ let _temp_1981 = 0;
+ let _temp_1982 = 0;
+ let _temp_1983 = 0;
+ let _temp_1984 = 0;
+ let _temp_1985 = 0;
+ let _temp_1986 = 0;
+ let _temp_1987 = 0;
+ let _temp_1988 = 0;
+ let _temp_1989 = 0;
+ let _temp_1990 = 0;
+ let _temp_1991 = 0;
+ let _temp_1992 = 0;
+ let _temp_1993 = 0;
+ let _temp_1994 = 0;
+ let _temp_1995 = 0;
+ let _temp_1996 = 0;
+ let _temp_1997 = 0;
+ let _temp_1998 = 0;
+ let _temp_1999 = 0;
+ let _temp_2000 = 0;
+ let _temp_2001 = 0;
+ let _temp_2002 = 0;
+ let _temp_2003 = 0;
+ let _temp_2004 = 0;
+ let _temp_2005 = 0;
+ let _temp_2006 = 0;
+ let _temp_2007 = 0;
+ let _temp_2008 = 0;
+ let _temp_2009 = 0;
+ let _temp_2010 = 0;
+ let _temp_2011 = 0;
+ let _temp_2012 = 0;
+ let _temp_2013 = 0;
+ let _temp_2014 = 0;
+ let _temp_2015 = 0;
+ let _temp_2016 = 0;
+ let _temp_2017 = 0;
+ let _temp_2018 = 0;
+ let _temp_2019 = 0;
+ let _temp_2020 = 0;
+ let _temp_2021 = 0;
+ let _temp_2022 = 0;
+ let _temp_2023 = 0;
+ let _temp_2024 = 0;
+ let _temp_2025 = 0;
+ let _temp_2026 = 0;
+ let _temp_2027 = 0;
+ let _temp_2028 = 0;
+ let _temp_2029 = 0;
+ let _temp_2030 = 0;
+ let _temp_2031 = 0;
+ let _temp_2032 = 0;
+ let _temp_2033 = 0;
+ let _temp_2034 = 0;
+ let _temp_2035 = 0;
+ let _temp_2036 = 0;
+ let _temp_2037 = 0;
+ let _temp_2038 = 0;
+ let _temp_2039 = 0;
+ let _temp_2040 = 0;
+ let _temp_2041 = 0;
+ let _temp_2042 = 0;
+ let _temp_2043 = 0;
+ let _temp_2044 = 0;
+ let _temp_2045 = 0;
+ let _temp_2046 = 0;
+ let _temp_2047 = 0;
+ let _temp_2048 = 0;
+ let _temp_2049 = 0;
+ let _temp_2050 = 0;
+ let _temp_2051 = 0;
+ let _temp_2052 = 0;
+ let _temp_2053 = 0;
+ let _temp_2054 = 0;
+ let _temp_2055 = 0;
+ let _temp_2056 = 0;
+ let _temp_2057 = 0;
+ let _temp_2058 = 0;
+ let _temp_2059 = 0;
+ let _temp_2060 = 0;
+ let _temp_2061 = 0;
+ let _temp_2062 = 0;
+ let _temp_2063 = 0;
+ let _temp_2064 = 0;
+ let _temp_2065 = 0;
+ let _temp_2066 = 0;
+ let _temp_2067 = 0;
+ let _temp_2068 = 0;
+ let _temp_2069 = 0;
+ let _temp_2070 = 0;
+ let _temp_2071 = 0;
+ let _temp_2072 = 0;
+ let _temp_2073 = 0;
+ let _temp_2074 = 0;
+ let _temp_2075 = 0;
+ let _temp_2076 = 0;
+ let _temp_2077 = 0;
+ let _temp_2078 = 0;
+ let _temp_2079 = 0;
+ let _temp_2080 = 0;
+ let _temp_2081 = 0;
+ let _temp_2082 = 0;
+ let _temp_2083 = 0;
+ let _temp_2084 = 0;
+ let _temp_2085 = 0;
+ let _temp_2086 = 0;
+ let _temp_2087 = 0;
+ let _temp_2088 = 0;
+ let _temp_2089 = 0;
+ let _temp_2090 = 0;
+ let _temp_2091 = 0;
+ let _temp_2092 = 0;
+ let _temp_2093 = 0;
+ let _temp_2094 = 0;
+ let _temp_2095 = 0;
+ let _temp_2096 = 0;
+ let _temp_2097 = 0;
+ let _temp_2098 = 0;
+ let _temp_2099 = 0;
+ let _temp_2100 = 0;
+ let _temp_2101 = 0;
+ let _temp_2102 = 0;
+ let _temp_2103 = 0;
+ let _temp_2104 = 0;
+ let _temp_2105 = 0;
+ let _temp_2106 = 0;
+ let _temp_2107 = 0;
+ let _temp_2108 = 0;
+ let _temp_2109 = 0;
+ let _temp_2110 = 0;
+ let _temp_2111 = 0;
+ let _temp_2112 = 0;
+ let _temp_2113 = 0;
+ let _temp_2114 = 0;
+ let _temp_2115 = 0;
+ let _temp_2116 = 0;
+ let _temp_2117 = 0;
+ let _temp_2118 = 0;
+ let _temp_2119 = 0;
+ let _temp_2120 = 0;
+ let _temp_2121 = 0;
+ let _temp_2122 = 0;
+ let _temp_2123 = 0;
+ let _temp_2124 = 0;
+ let _temp_2125 = 0;
+ let _temp_2126 = 0;
+ let _temp_2127 = 0;
+ let _temp_2128 = 0;
+ let _temp_2129 = 0;
+ let _temp_2130 = 0;
+ let _temp_2131 = 0;
+ let _temp_2132 = 0;
+ let _temp_2133 = 0;
+ let _temp_2134 = 0;
+ let _temp_2135 = 0;
+ let _temp_2136 = 0;
+ let _temp_2137 = 0;
+ let _temp_2138 = 0;
+ let _temp_2139 = 0;
+ let _temp_2140 = 0;
+ let _temp_2141 = 0;
+ let _temp_2142 = 0;
+ let _temp_2143 = 0;
+ let _temp_2144 = 0;
+ let _temp_2145 = 0;
+ let _temp_2146 = 0;
+ let _temp_2147 = 0;
+ let _temp_2148 = 0;
+ let _temp_2149 = 0;
+ let _temp_2150 = 0;
+ let _temp_2151 = 0;
+ let _temp_2152 = 0;
+ let _temp_2153 = 0;
+ let _temp_2154 = 0;
+ let _temp_2155 = 0;
+ let _temp_2156 = 0;
+ let _temp_2157 = 0;
+ let _temp_2158 = 0;
+ let _temp_2159 = 0;
+ let _temp_2160 = 0;
+ let _temp_2161 = 0;
+ let _temp_2162 = 0;
+ let _temp_2163 = 0;
+ let _temp_2164 = 0;
+ let _temp_2165 = 0;
+ let _temp_2166 = 0;
+ let _temp_2167 = 0;
+ let _temp_2168 = 0;
+ let _temp_2169 = 0;
+ let _temp_2170 = 0;
+ let _temp_2171 = 0;
+ let _temp_2172 = 0;
+ let _temp_2173 = 0;
+ let _temp_2174 = 0;
+ let _temp_2175 = 0;
+ let _temp_2176 = 0;
+ let _temp_2177 = 0;
+ let _temp_2178 = 0;
+ let _temp_2179 = 0;
+ let _temp_2180 = 0;
+ let _temp_2181 = 0;
+ let _temp_2182 = 0;
+ let _temp_2183 = 0;
+ let _temp_2184 = 0;
+ let _temp_2185 = 0;
+ let _temp_2186 = 0;
+ let _temp_2187 = 0;
+ let _temp_2188 = 0;
+ let _temp_2189 = 0;
+ let _temp_2190 = 0;
+ let _temp_2191 = 0;
+ let _temp_2192 = 0;
+ let _temp_2193 = 0;
+ let _temp_2194 = 0;
+ let _temp_2195 = 0;
+ let _temp_2196 = 0;
+ let _temp_2197 = 0;
+ let _temp_2198 = 0;
+ let _temp_2199 = 0;
+ let _temp_2200 = 0;
+ let _temp_2201 = 0;
+ let _temp_2202 = 0;
+ let _temp_2203 = 0;
+ let _temp_2204 = 0;
+ let _temp_2205 = 0;
+ let _temp_2206 = 0;
+ let _temp_2207 = 0;
+ let _temp_2208 = 0;
+ let _temp_2209 = 0;
+ let _temp_2210 = 0;
+ let _temp_2211 = 0;
+ let _temp_2212 = 0;
+ let _temp_2213 = 0;
+ let _temp_2214 = 0;
+ let _temp_2215 = 0;
+ let _temp_2216 = 0;
+ let _temp_2217 = 0;
+ let _temp_2218 = 0;
+ let _temp_2219 = 0;
+ let _temp_2220 = 0;
+ let _temp_2221 = 0;
+ let _temp_2222 = 0;
+ let _temp_2223 = 0;
+ let _temp_2224 = 0;
+ let _temp_2225 = 0;
+ let _temp_2226 = 0;
+ let _temp_2227 = 0;
+ let _temp_2228 = 0;
+ let _temp_2229 = 0;
+ let _temp_2230 = 0;
+ let _temp_2231 = 0;
+ let _temp_2232 = 0;
+ let _temp_2233 = 0;
+ let _temp_2234 = 0;
+ let _temp_2235 = 0;
+ let _temp_2236 = 0;
+ let _temp_2237 = 0;
+ let _temp_2238 = 0;
+ let _temp_2239 = 0;
+ let _temp_2240 = 0;
+ let _temp_2241 = 0;
+ let _temp_2242 = 0;
+ let _temp_2243 = 0;
+ let _temp_2244 = 0;
+ let _temp_2245 = 0;
+ let _temp_2246 = 0;
+ let _temp_2247 = 0;
+ let _temp_2248 = 0;
+ let _temp_2249 = 0;
+ let _temp_2250 = 0;
+ let _temp_2251 = 0;
+ let _temp_2252 = 0;
+ let _temp_2253 = 0;
+ let _temp_2254 = 0;
+ let _temp_2255 = 0;
+ let _temp_2256 = 0;
+ let _temp_2257 = 0;
+ let _temp_2258 = 0;
+ let _temp_2259 = 0;
+ let _temp_2260 = 0;
+ let _temp_2261 = 0;
+ let _temp_2262 = 0;
+ let _temp_2263 = 0;
+ let _temp_2264 = 0;
+ let _temp_2265 = 0;
+ let _temp_2266 = 0;
+ let _temp_2267 = 0;
+ let _temp_2268 = 0;
+ let _temp_2269 = 0;
+ let _temp_2270 = 0;
+ let _temp_2271 = 0;
+ let _temp_2272 = 0;
+ let _temp_2273 = 0;
+ let _temp_2274 = 0;
+ let _temp_2275 = 0;
+ let _temp_2276 = 0;
+ let _temp_2277 = 0;
+ let _temp_2278 = 0;
+ let _temp_2279 = 0;
+ let _temp_2280 = 0;
+ let _temp_2281 = 0;
+ let _temp_2282 = 0;
+ let _temp_2283 = 0;
+ let _temp_2284 = 0;
+ let _temp_2285 = 0;
+ let _temp_2286 = 0;
+ let _temp_2287 = 0;
+ let _temp_2288 = 0;
+ let _temp_2289 = 0;
+ let _temp_2290 = 0;
+ let _temp_2291 = 0;
+ let _temp_2292 = 0;
+ let _temp_2293 = 0;
+ let _temp_2294 = 0;
+ let _temp_2295 = 0;
+ let _temp_2296 = 0;
+ let _temp_2297 = 0;
+ let _temp_2298 = 0;
+ let _temp_2299 = 0;
+ let _temp_2300 = 0;
+ let _temp_2301 = 0;
+ let _temp_2302 = 0;
+ let _temp_2303 = 0;
+ let _temp_2304 = 0;
+ let _temp_2305 = 0;
+ let _temp_2306 = 0;
+ let _temp_2307 = 0;
+ let _temp_2308 = 0;
+ let _temp_2309 = 0;
+ let _temp_2310 = 0;
+ let _temp_2311 = 0;
+ let _temp_2312 = 0;
+ let _temp_2313 = 0;
+ let _temp_2314 = 0;
+ let _temp_2315 = 0;
+ let _temp_2316 = 0;
+ let _temp_2317 = 0;
+ let _temp_2318 = 0;
+ let _temp_2319 = 0;
+ let _temp_2320 = 0;
+ let _temp_2321 = 0;
+ let _temp_2322 = 0;
+ let _temp_2323 = 0;
+ let _temp_2324 = 0;
+ let _temp_2325 = 0;
+ let _temp_2326 = 0;
+ let _temp_2327 = 0;
+ let _temp_2328 = 0;
+ let _temp_2329 = 0;
+ let _temp_2330 = 0;
+ let _temp_2331 = 0;
+ let _temp_2332 = 0;
+ let _temp_2333 = 0;
+ let _temp_2334 = 0;
+ let _temp_2335 = 0;
+ let _temp_2336 = 0;
+ let _temp_2337 = 0;
+ let _temp_2338 = 0;
+ let _temp_2339 = 0;
+ let _temp_2340 = 0;
+ let _temp_2341 = 0;
+ let _temp_2342 = 0;
+ let _temp_2343 = 0;
+ let _temp_2344 = 0;
+ let _temp_2345 = 0;
+ let _temp_2346 = 0;
+ let _temp_2347 = 0;
+ let _temp_2348 = 0;
+ let _temp_2349 = 0;
+ let _temp_2350 = 0;
+ let _temp_2351 = 0;
+ let _temp_2352 = 0;
+ let _temp_2353 = 0;
+ let _temp_2354 = 0;
+ let _temp_2355 = 0;
+ let _temp_2356 = 0;
+ let _temp_2357 = 0;
+ let _temp_2358 = 0;
+ let _temp_2359 = 0;
+ let _temp_2360 = 0;
+ let _temp_2361 = 0;
+ let _temp_2362 = 0;
+ let _temp_2363 = 0;
+ let _temp_2364 = 0;
+ let _temp_2365 = 0;
+ let _temp_2366 = 0;
+ let _temp_2367 = 0;
+ let _temp_2368 = 0;
+ let _temp_2369 = 0;
+ let _temp_2370 = 0;
+ let _temp_2371 = 0;
+ let _temp_2372 = 0;
+ let _temp_2373 = 0;
+ let _temp_2374 = 0;
+ let _temp_2375 = 0;
+ let _temp_2376 = 0;
+ let _temp_2377 = 0;
+ let _temp_2378 = 0;
+ let _temp_2379 = 0;
+ let _temp_2380 = 0;
+ let _temp_2381 = 0;
+ let _temp_2382 = 0;
+ let _temp_2383 = 0;
+ let _temp_2384 = 0;
+ let _temp_2385 = 0;
+ let _temp_2386 = 0;
+ let _temp_2387 = 0;
+ let _temp_2388 = 0;
+ let _temp_2389 = 0;
+ let _temp_2390 = 0;
+ let _temp_2391 = 0;
+ let _temp_2392 = 0;
+ let _temp_2393 = 0;
+ let _temp_2394 = 0;
+ let _temp_2395 = 0;
+ let _temp_2396 = 0;
+ let _temp_2397 = 0;
+ let _temp_2398 = 0;
+ let _temp_2399 = 0;
+ let _temp_2400 = 0;
+ let _temp_2401 = 0;
+ let _temp_2402 = 0;
+ let _temp_2403 = 0;
+ let _temp_2404 = 0;
+ let _temp_2405 = 0;
+ let _temp_2406 = 0;
+ let _temp_2407 = 0;
+ let _temp_2408 = 0;
+ let _temp_2409 = 0;
+ let _temp_2410 = 0;
+ let _temp_2411 = 0;
+ let _temp_2412 = 0;
+ let _temp_2413 = 0;
+ let _temp_2414 = 0;
+ let _temp_2415 = 0;
+ let _temp_2416 = 0;
+ let _temp_2417 = 0;
+ let _temp_2418 = 0;
+ let _temp_2419 = 0;
+ let _temp_2420 = 0;
+ let _temp_2421 = 0;
+ let _temp_2422 = 0;
+ let _temp_2423 = 0;
+ let _temp_2424 = 0;
+ let _temp_2425 = 0;
+ let _temp_2426 = 0;
+ let _temp_2427 = 0;
+ let _temp_2428 = 0;
+ let _temp_2429 = 0;
+ let _temp_2430 = 0;
+ let _temp_2431 = 0;
+ let _temp_2432 = 0;
+ let _temp_2433 = 0;
+ let _temp_2434 = 0;
+ let _temp_2435 = 0;
+ let _temp_2436 = 0;
+ let _temp_2437 = 0;
+ let _temp_2438 = 0;
+ let _temp_2439 = 0;
+ let _temp_2440 = 0;
+ let _temp_2441 = 0;
+ let _temp_2442 = 0;
+ let _temp_2443 = 0;
+ let _temp_2444 = 0;
+ let _temp_2445 = 0;
+ let _temp_2446 = 0;
+ let _temp_2447 = 0;
+ let _temp_2448 = 0;
+ let _temp_2449 = 0;
+ let _temp_2450 = 0;
+ let _temp_2451 = 0;
+ let _temp_2452 = 0;
+ let _temp_2453 = 0;
+ let _temp_2454 = 0;
+ let _temp_2455 = 0;
+ let _temp_2456 = 0;
+ let _temp_2457 = 0;
+ let _temp_2458 = 0;
+ let _temp_2459 = 0;
+ let _temp_2460 = 0;
+ let _temp_2461 = 0;
+ let _temp_2462 = 0;
+ let _temp_2463 = 0;
+ let _temp_2464 = 0;
+ let _temp_2465 = 0;
+ let _temp_2466 = 0;
+ let _temp_2467 = 0;
+ let _temp_2468 = 0;
+ let _temp_2469 = 0;
+ let _temp_2470 = 0;
+ let _temp_2471 = 0;
+ let _temp_2472 = 0;
+ let _temp_2473 = 0;
+ let _temp_2474 = 0;
+ let _temp_2475 = 0;
+ let _temp_2476 = 0;
+ let _temp_2477 = 0;
+ let _temp_2478 = 0;
+ let _temp_2479 = 0;
+ let _temp_2480 = 0;
+ let _temp_2481 = 0;
+ let _temp_2482 = 0;
+ let _temp_2483 = 0;
+ let _temp_2484 = 0;
+ let _temp_2485 = 0;
+ let _temp_2486 = 0;
+ let _temp_2487 = 0;
+ let _temp_2488 = 0;
+ let _temp_2489 = 0;
+ let _temp_2490 = 0;
+ let _temp_2491 = 0;
+ let _temp_2492 = 0;
+ let _temp_2493 = 0;
+ let _temp_2494 = 0;
+ let _temp_2495 = 0;
+ let _temp_2496 = 0;
+ let _temp_2497 = 0;
+ let _temp_2498 = 0;
+ let _temp_2499 = 0;
+ let _temp_2500 = 0;
+ let _temp_2501 = 0;
+ let _temp_2502 = 0;
+ let _temp_2503 = 0;
+ let _temp_2504 = 0;
+ let _temp_2505 = 0;
+ let _temp_2506 = 0;
+ let _temp_2507 = 0;
+ let _temp_2508 = 0;
+ let _temp_2509 = 0;
+ let _temp_2510 = 0;
+ let _temp_2511 = 0;
+ let _temp_2512 = 0;
+ let _temp_2513 = 0;
+ let _temp_2514 = 0;
+ let _temp_2515 = 0;
+ let _temp_2516 = 0;
+ let _temp_2517 = 0;
+ let _temp_2518 = 0;
+ let _temp_2519 = 0;
+ let _temp_2520 = 0;
+ let _temp_2521 = 0;
+ let _temp_2522 = 0;
+ let _temp_2523 = 0;
+ let _temp_2524 = 0;
+ let _temp_2525 = 0;
+ let _temp_2526 = 0;
+ let _temp_2527 = 0;
+ let _temp_2528 = 0;
+ let _temp_2529 = 0;
+ let _temp_2530 = 0;
+ let _temp_2531 = 0;
+ let _temp_2532 = 0;
+ let _temp_2533 = 0;
+ let _temp_2534 = 0;
+ let _temp_2535 = 0;
+ let _temp_2536 = 0;
+ let _temp_2537 = 0;
+ let _temp_2538 = 0;
+ let _temp_2539 = 0;
+ let _temp_2540 = 0;
+ let _temp_2541 = 0;
+ let _temp_2542 = 0;
+ let _temp_2543 = 0;
+ let _temp_2544 = 0;
+ let _temp_2545 = 0;
+ let _temp_2546 = 0;
+ let _temp_2547 = 0;
+ let _temp_2548 = 0;
+ let _temp_2549 = 0;
+ let _temp_2550 = 0;
+ let _temp_2551 = 0;
+ let _temp_2552 = 0;
+ let _temp_2553 = 0;
+ let _temp_2554 = 0;
+ let _temp_2555 = 0;
+ let _temp_2556 = 0;
+ let _temp_2557 = 0;
+ let _temp_2558 = 0;
+ let _temp_2559 = 0;
+ let _temp_2560 = 0;
+ let _temp_2561 = 0;
+ let _temp_2562 = 0;
+ let _temp_2563 = 0;
+ let _temp_2564 = 0;
+ let _temp_2565 = 0;
+ let _temp_2566 = 0;
+ let _temp_2567 = 0;
+ let _temp_2568 = 0;
+ let _temp_2569 = 0;
+ let _temp_2570 = 0;
+ let _temp_2571 = 0;
+ let _temp_2572 = 0;
+ let _temp_2573 = 0;
+ let _temp_2574 = 0;
+ let _temp_2575 = 0;
+ let _temp_2576 = 0;
+ let _temp_2577 = 0;
+ let _temp_2578 = 0;
+ let _temp_2579 = 0;
+ let _temp_2580 = 0;
+ let _temp_2581 = 0;
+ let _temp_2582 = 0;
+ let _temp_2583 = 0;
+ let _temp_2584 = 0;
+ let _temp_2585 = 0;
+ let _temp_2586 = 0;
+ let _temp_2587 = 0;
+ let _temp_2588 = 0;
+ let _temp_2589 = 0;
+ let _temp_2590 = 0;
+ let _temp_2591 = 0;
+ let _temp_2592 = 0;
+ let _temp_2593 = 0;
+}
diff --git a/src/test/ui/recursion/recursion.polonius.stderr b/src/test/ui/recursion/recursion.polonius.stderr
new file mode 100644
index 000000000..c727fe551
--- /dev/null
+++ b/src/test/ui/recursion/recursion.polonius.stderr
@@ -0,0 +1,15 @@
+error: reached the recursion limit while instantiating `test::<Cons<Cons<Cons<Cons<Cons<...>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
+ --> $DIR/recursion.rs:18:11
+ |
+LL | _ => {test (n-1, i+1, Cons {head:2*i+1, tail:first}, Cons{head:i*i, tail:second})}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+note: `test` defined here
+ --> $DIR/recursion.rs:16:1
+ |
+LL | fn test<T:Dot> (n:isize, i:isize, first:T, second:T) ->isize {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: the full type name has been written to '$TEST_BUILD_DIR/recursion/recursion.polonius/recursion.long-type.txt'
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion/recursion.rs b/src/test/ui/recursion/recursion.rs
new file mode 100644
index 000000000..b3ba0ec3a
--- /dev/null
+++ b/src/test/ui/recursion/recursion.rs
@@ -0,0 +1,25 @@
+// build-fail
+// compile-flags:-C overflow-checks=off
+// normalize-stderr-test: ".nll/" -> "/"
+
+enum Nil {NilValue}
+struct Cons<T> {head:isize, tail:T}
+trait Dot {fn dot(&self, other:Self) -> isize;}
+impl Dot for Nil {
+ fn dot(&self, _:Nil) -> isize {0}
+}
+impl<T:Dot> Dot for Cons<T> {
+ fn dot(&self, other:Cons<T>) -> isize {
+ self.head * other.head + self.tail.dot(other.tail)
+ }
+}
+fn test<T:Dot> (n:isize, i:isize, first:T, second:T) ->isize {
+ match n { 0 => {first.dot(second)}
+ _ => {test (n-1, i+1, Cons {head:2*i+1, tail:first}, Cons{head:i*i, tail:second})}
+ //~^ ERROR recursion limit
+ }
+}
+pub fn main() {
+ let n = test(1, 0, Nil::NilValue, Nil::NilValue);
+ println!("{}", n);
+}
diff --git a/src/test/ui/recursion/recursion.stderr b/src/test/ui/recursion/recursion.stderr
new file mode 100644
index 000000000..d2844d0e6
--- /dev/null
+++ b/src/test/ui/recursion/recursion.stderr
@@ -0,0 +1,15 @@
+error: reached the recursion limit while instantiating `test::<Cons<Cons<Cons<Cons<Cons<...>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
+ --> $DIR/recursion.rs:18:11
+ |
+LL | _ => {test (n-1, i+1, Cons {head:2*i+1, tail:first}, Cons{head:i*i, tail:second})}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+note: `test` defined here
+ --> $DIR/recursion.rs:16:1
+ |
+LL | fn test<T:Dot> (n:isize, i:isize, first:T, second:T) ->isize {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: the full type name has been written to '$TEST_BUILD_DIR/recursion/recursion/recursion.long-type.txt'
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion/recursive-enum.rs b/src/test/ui/recursion/recursive-enum.rs
new file mode 100644
index 000000000..32e707607
--- /dev/null
+++ b/src/test/ui/recursion/recursive-enum.rs
@@ -0,0 +1,4 @@
+enum List<T> { Cons(T, List<T>), Nil }
+//~^ ERROR recursive type `List` has infinite size
+
+fn main() {}
diff --git a/src/test/ui/recursion/recursive-enum.stderr b/src/test/ui/recursion/recursive-enum.stderr
new file mode 100644
index 000000000..f5d25c564
--- /dev/null
+++ b/src/test/ui/recursion/recursive-enum.stderr
@@ -0,0 +1,16 @@
+error[E0072]: recursive type `List` has infinite size
+ --> $DIR/recursive-enum.rs:1:1
+ |
+LL | enum List<T> { Cons(T, List<T>), Nil }
+ | ^^^^^^^^^^^^ ------- recursive without indirection
+ | |
+ | recursive type has infinite size
+ |
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `List` representable
+ |
+LL | enum List<T> { Cons(T, Box<List<T>>), Nil }
+ | ++++ +
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0072`.
diff --git a/src/test/ui/recursion/recursive-reexports.rs b/src/test/ui/recursion/recursive-reexports.rs
new file mode 100644
index 000000000..0e17f2251
--- /dev/null
+++ b/src/test/ui/recursion/recursive-reexports.rs
@@ -0,0 +1,7 @@
+// aux-build:recursive_reexports.rs
+
+extern crate recursive_reexports;
+
+fn f() -> recursive_reexports::S {} //~ ERROR cannot find type `S` in crate `recursive_reexports`
+
+fn main() {}
diff --git a/src/test/ui/recursion/recursive-reexports.stderr b/src/test/ui/recursion/recursive-reexports.stderr
new file mode 100644
index 000000000..f39d0a0d5
--- /dev/null
+++ b/src/test/ui/recursion/recursive-reexports.stderr
@@ -0,0 +1,9 @@
+error[E0412]: cannot find type `S` in crate `recursive_reexports`
+ --> $DIR/recursive-reexports.rs:5:32
+ |
+LL | fn f() -> recursive_reexports::S {}
+ | ^ not found in `recursive_reexports`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0412`.
diff --git a/src/test/ui/recursion/recursive-requirements.rs b/src/test/ui/recursion/recursive-requirements.rs
new file mode 100644
index 000000000..9cfbee5f1
--- /dev/null
+++ b/src/test/ui/recursion/recursive-requirements.rs
@@ -0,0 +1,19 @@
+use std::marker::PhantomData;
+
+struct AssertSync<T: Sync>(PhantomData<T>);
+
+pub struct Foo {
+ bar: *const Bar,
+ phantom: PhantomData<Bar>,
+}
+
+pub struct Bar {
+ foo: *const Foo,
+ phantom: PhantomData<Foo>,
+}
+
+fn main() {
+ let _: AssertSync<Foo> = unimplemented!();
+ //~^ ERROR E0277
+ //~| ERROR E0277
+}
diff --git a/src/test/ui/recursion/recursive-requirements.stderr b/src/test/ui/recursion/recursive-requirements.stderr
new file mode 100644
index 000000000..8ee154ce5
--- /dev/null
+++ b/src/test/ui/recursion/recursive-requirements.stderr
@@ -0,0 +1,45 @@
+error[E0277]: `*const Bar` cannot be shared between threads safely
+ --> $DIR/recursive-requirements.rs:16:12
+ |
+LL | let _: AssertSync<Foo> = unimplemented!();
+ | ^^^^^^^^^^^^^^^ `*const Bar` cannot be shared between threads safely
+ |
+ = help: within `Foo`, the trait `Sync` is not implemented for `*const Bar`
+note: required because it appears within the type `Foo`
+ --> $DIR/recursive-requirements.rs:5:12
+ |
+LL | pub struct Foo {
+ | ^^^
+note: required by a bound in `AssertSync`
+ --> $DIR/recursive-requirements.rs:3:22
+ |
+LL | struct AssertSync<T: Sync>(PhantomData<T>);
+ | ^^^^ required by this bound in `AssertSync`
+
+error[E0277]: `*const Foo` cannot be shared between threads safely
+ --> $DIR/recursive-requirements.rs:16:12
+ |
+LL | let _: AssertSync<Foo> = unimplemented!();
+ | ^^^^^^^^^^^^^^^ `*const Foo` cannot be shared between threads safely
+ |
+ = help: within `Foo`, the trait `Sync` is not implemented for `*const Foo`
+note: required because it appears within the type `Bar`
+ --> $DIR/recursive-requirements.rs:10:12
+ |
+LL | pub struct Bar {
+ | ^^^
+ = note: required because it appears within the type `PhantomData<Bar>`
+note: required because it appears within the type `Foo`
+ --> $DIR/recursive-requirements.rs:5:12
+ |
+LL | pub struct Foo {
+ | ^^^
+note: required by a bound in `AssertSync`
+ --> $DIR/recursive-requirements.rs:3:22
+ |
+LL | struct AssertSync<T: Sync>(PhantomData<T>);
+ | ^^^^ required by this bound in `AssertSync`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/recursion/recursive-static-definition.rs b/src/test/ui/recursion/recursive-static-definition.rs
new file mode 100644
index 000000000..f59ef7316
--- /dev/null
+++ b/src/test/ui/recursion/recursive-static-definition.rs
@@ -0,0 +1,4 @@
+pub static FOO: u32 = FOO;
+//~^ ERROR cycle detected when const-evaluating + checking `FOO`
+
+fn main() {}
diff --git a/src/test/ui/recursion/recursive-static-definition.stderr b/src/test/ui/recursion/recursive-static-definition.stderr
new file mode 100644
index 000000000..135976145
--- /dev/null
+++ b/src/test/ui/recursion/recursive-static-definition.stderr
@@ -0,0 +1,24 @@
+error[E0391]: cycle detected when const-evaluating + checking `FOO`
+ --> $DIR/recursive-static-definition.rs:1:1
+ |
+LL | pub static FOO: u32 = FOO;
+ | ^^^^^^^^^^^^^^^^^^^
+ |
+note: ...which requires const-evaluating + checking `FOO`...
+ --> $DIR/recursive-static-definition.rs:1:23
+ |
+LL | pub static FOO: u32 = FOO;
+ | ^^^
+ = note: ...which again requires const-evaluating + checking `FOO`, completing the cycle
+note: cycle used when linting top-level module
+ --> $DIR/recursive-static-definition.rs:1:1
+ |
+LL | / pub static FOO: u32 = FOO;
+LL | |
+LL | |
+LL | | fn main() {}
+ | |____________^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0391`.
diff --git a/src/test/ui/recursion/recursive-types-are-not-uninhabited.rs b/src/test/ui/recursion/recursive-types-are-not-uninhabited.rs
new file mode 100644
index 000000000..448930363
--- /dev/null
+++ b/src/test/ui/recursion/recursive-types-are-not-uninhabited.rs
@@ -0,0 +1,13 @@
+struct R<'a> {
+ r: &'a R<'a>,
+}
+
+fn foo(res: Result<u32, &R>) -> u32 {
+ let Ok(x) = res;
+ //~^ ERROR refutable pattern
+ x
+}
+
+fn main() {
+ foo(Ok(23));
+}
diff --git a/src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr b/src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr
new file mode 100644
index 000000000..acbd0d059
--- /dev/null
+++ b/src/test/ui/recursion/recursive-types-are-not-uninhabited.stderr
@@ -0,0 +1,29 @@
+error[E0005]: refutable pattern in local binding: `Err(_)` not covered
+ --> $DIR/recursive-types-are-not-uninhabited.rs:6:9
+ |
+LL | let Ok(x) = res;
+ | ^^^^^ pattern `Err(_)` not covered
+ |
+ = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
+ = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
+note: `Result<u32, &R>` defined here
+ --> $SRC_DIR/core/src/result.rs:LL:COL
+ |
+LL | pub enum Result<T, E> {
+ | ---------------------
+...
+LL | Err(#[stable(feature = "rust1", since = "1.0.0")] E),
+ | ^^^ not covered
+ = note: the matched value is of type `Result<u32, &R>`
+help: you might want to use `if let` to ignore the variant that isn't matched
+ |
+LL | let x = if let Ok(x) = res { x } else { todo!() };
+ | ++++++++++ ++++++++++++++++++++++
+help: alternatively, on nightly, you might want to use `#![feature(let_else)]` to handle the variant that isn't matched
+ |
+LL | let Ok(x) = res else { todo!() };
+ | ++++++++++++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0005`.
diff --git a/src/test/ui/recursion_limit/empty.rs b/src/test/ui/recursion_limit/empty.rs
new file mode 100644
index 000000000..59dae106c
--- /dev/null
+++ b/src/test/ui/recursion_limit/empty.rs
@@ -0,0 +1,8 @@
+// Test the parse error for an empty recursion_limit
+
+#![recursion_limit = ""] //~ ERROR `limit` must be a non-negative integer
+ //~| `limit` must be a non-negative integer
+ //~| ERROR `limit` must be a non-negative integer
+ //~| `limit` must be a non-negative integer
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/empty.stderr b/src/test/ui/recursion_limit/empty.stderr
new file mode 100644
index 000000000..cb5c0c35a
--- /dev/null
+++ b/src/test/ui/recursion_limit/empty.stderr
@@ -0,0 +1,18 @@
+error: `limit` must be a non-negative integer
+ --> $DIR/empty.rs:3:1
+ |
+LL | #![recursion_limit = ""]
+ | ^^^^^^^^^^^^^^^^^^^^^--^
+ | |
+ | `limit` must be a non-negative integer
+
+error: `limit` must be a non-negative integer
+ --> $DIR/empty.rs:3:1
+ |
+LL | #![recursion_limit = ""]
+ | ^^^^^^^^^^^^^^^^^^^^^--^
+ | |
+ | `limit` must be a non-negative integer
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/recursion_limit/invalid_digit.rs b/src/test/ui/recursion_limit/invalid_digit.rs
new file mode 100644
index 000000000..03df3e7a9
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_digit.rs
@@ -0,0 +1,7 @@
+// Test the parse error for an invalid digit in recursion_limit
+
+#![recursion_limit = "-100"] //~ ERROR `limit` must be a non-negative integer
+ //~| not a valid integer
+ //~| ERROR `limit` must be a non-negative integer
+ //~| not a valid integer
+fn main() {}
diff --git a/src/test/ui/recursion_limit/invalid_digit.stderr b/src/test/ui/recursion_limit/invalid_digit.stderr
new file mode 100644
index 000000000..4dc93ad5f
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_digit.stderr
@@ -0,0 +1,18 @@
+error: `limit` must be a non-negative integer
+ --> $DIR/invalid_digit.rs:3:1
+ |
+LL | #![recursion_limit = "-100"]
+ | ^^^^^^^^^^^^^^^^^^^^^------^
+ | |
+ | not a valid integer
+
+error: `limit` must be a non-negative integer
+ --> $DIR/invalid_digit.rs:3:1
+ |
+LL | #![recursion_limit = "-100"]
+ | ^^^^^^^^^^^^^^^^^^^^^------^
+ | |
+ | not a valid integer
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/recursion_limit/invalid_digit_type.rs b/src/test/ui/recursion_limit/invalid_digit_type.rs
new file mode 100644
index 000000000..e408109b3
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_digit_type.rs
@@ -0,0 +1,3 @@
+#![recursion_limit = 123] //~ ERROR malformed `recursion_limit` attribute
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/invalid_digit_type.stderr b/src/test/ui/recursion_limit/invalid_digit_type.stderr
new file mode 100644
index 000000000..6d1409bb3
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_digit_type.stderr
@@ -0,0 +1,8 @@
+error: malformed `recursion_limit` attribute input
+ --> $DIR/invalid_digit_type.rs:1:1
+ |
+LL | #![recursion_limit = 123]
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![recursion_limit = "N"]`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion_limit/invalid_macro.rs b/src/test/ui/recursion_limit/invalid_macro.rs
new file mode 100644
index 000000000..7db67a8d1
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_macro.rs
@@ -0,0 +1,7 @@
+#![recursion_limit = foo!()] //~ ERROR malformed `recursion_limit` attribute
+
+macro_rules! foo {
+ () => {"128"};
+}
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/invalid_macro.stderr b/src/test/ui/recursion_limit/invalid_macro.stderr
new file mode 100644
index 000000000..0189e99da
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_macro.stderr
@@ -0,0 +1,8 @@
+error: malformed `recursion_limit` attribute input
+ --> $DIR/invalid_macro.rs:1:1
+ |
+LL | #![recursion_limit = foo!()]
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![recursion_limit = "N"]`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion_limit/no-value.rs b/src/test/ui/recursion_limit/no-value.rs
new file mode 100644
index 000000000..2202e5b77
--- /dev/null
+++ b/src/test/ui/recursion_limit/no-value.rs
@@ -0,0 +1,6 @@
+// Test the parse error for no value provided to recursion_limit
+
+#![recursion_limit]
+//~^ ERROR malformed `recursion_limit` attribute input
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/no-value.stderr b/src/test/ui/recursion_limit/no-value.stderr
new file mode 100644
index 000000000..35ac2c4cd
--- /dev/null
+++ b/src/test/ui/recursion_limit/no-value.stderr
@@ -0,0 +1,8 @@
+error: malformed `recursion_limit` attribute input
+ --> $DIR/no-value.rs:3:1
+ |
+LL | #![recursion_limit]
+ | ^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![recursion_limit = "N"]`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion_limit/overflow.rs b/src/test/ui/recursion_limit/overflow.rs
new file mode 100644
index 000000000..c733ba6b9
--- /dev/null
+++ b/src/test/ui/recursion_limit/overflow.rs
@@ -0,0 +1,9 @@
+// Test the parse error for an overflowing recursion_limit
+
+#![recursion_limit = "999999999999999999999999"]
+//~^ ERROR `limit` must be a non-negative integer
+//~| `limit` is too large
+//~| ERROR `limit` must be a non-negative integer
+//~| `limit` is too large
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/overflow.stderr b/src/test/ui/recursion_limit/overflow.stderr
new file mode 100644
index 000000000..2f622d28b
--- /dev/null
+++ b/src/test/ui/recursion_limit/overflow.stderr
@@ -0,0 +1,18 @@
+error: `limit` must be a non-negative integer
+ --> $DIR/overflow.rs:3:1
+ |
+LL | #![recursion_limit = "999999999999999999999999"]
+ | ^^^^^^^^^^^^^^^^^^^^^--------------------------^
+ | |
+ | `limit` is too large
+
+error: `limit` must be a non-negative integer
+ --> $DIR/overflow.rs:3:1
+ |
+LL | #![recursion_limit = "999999999999999999999999"]
+ | ^^^^^^^^^^^^^^^^^^^^^--------------------------^
+ | |
+ | `limit` is too large
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/recursion_limit/zero-overflow.rs b/src/test/ui/recursion_limit/zero-overflow.rs
new file mode 100644
index 000000000..77bd81856
--- /dev/null
+++ b/src/test/ui/recursion_limit/zero-overflow.rs
@@ -0,0 +1,7 @@
+//~ ERROR overflow evaluating the requirement `&mut Self: DispatchFromDyn<&mut RustaceansAreAwesome>
+//~| HELP consider increasing the recursion limit
+// build-fail
+
+#![recursion_limit = "0"]
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/zero-overflow.stderr b/src/test/ui/recursion_limit/zero-overflow.stderr
new file mode 100644
index 000000000..9007ec0d7
--- /dev/null
+++ b/src/test/ui/recursion_limit/zero-overflow.stderr
@@ -0,0 +1,7 @@
+error[E0275]: overflow evaluating the requirement `&mut Self: DispatchFromDyn<&mut RustaceansAreAwesome>`
+ |
+ = help: consider increasing the recursion limit by adding a `#![recursion_limit = "2"]` attribute to your crate (`zero_overflow`)
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0275`.
diff --git a/src/test/ui/recursion_limit/zero.rs b/src/test/ui/recursion_limit/zero.rs
new file mode 100644
index 000000000..3a2d904cb
--- /dev/null
+++ b/src/test/ui/recursion_limit/zero.rs
@@ -0,0 +1,12 @@
+// Test that a `limit` of 0 is valid
+
+#![recursion_limit = "0"]
+
+macro_rules! test {
+ () => {};
+ ($tt:tt) => { test!(); };
+}
+
+test!(test); //~ ERROR recursion limit reached while expanding `test!`
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/zero.stderr b/src/test/ui/recursion_limit/zero.stderr
new file mode 100644
index 000000000..b43565909
--- /dev/null
+++ b/src/test/ui/recursion_limit/zero.stderr
@@ -0,0 +1,10 @@
+error: recursion limit reached while expanding `test!`
+ --> $DIR/zero.rs:10:1
+ |
+LL | test!(test);
+ | ^^^^^^^^^^^
+ |
+ = help: consider increasing the recursion limit by adding a `#![recursion_limit = "2"]` attribute to your crate (`zero`)
+
+error: aborting due to previous error
+