Skip to content

Parser stack overflow when deeply nested expressions exceed Rust recursion depth #54

@erickcestari

Description

@erickcestari

The recursion depth limit in the descriptor parser is enforced after the full parse has already completed, which defeats its protective purpose. Specifically, the check is performed only after parser::parse(value) returns a fully constructed AST (ctx). As a result, if the input descriptor contains excessive nesting, the recursive parsing process may overflow the stack before reaching the post-parse limit check.

To ensure safety, recursion depth limits must be applied within the parsing logic itself (e.g., inside parser::parse_internal or equivalent recursive functions). This would allow the parser to detect and abort excessive recursion early, preventing uncontrolled stack growth and potential stack-overflow crashes.

Since this is a relatively new project, perhaps it's worth trying to remove all recursion?

More context here: rust-bitcoin/rust-miniscript#696

impl<'a> TryFrom<&'a str> for Context {
    type Error = ContextError<'a>;
    fn try_from(value: &'a str) -> Result<Self, Self::Error> {
        let ctx = parser::parse(value).map_err(ContextError::ParserError)?;

        // Type check the AST for correctness properties
        let type_info = CorrectnessPropertiesVisitor::new()
            .visit(&ctx)
            .map_err(ContextError::TypeCheckerError)?;

        // Validate the descriptor structure
        let _: () = DescriptorValidator::new()
            .validate(&ctx)
            .map_err(ContextError::DescriptorVisitorError)?;

        // Check the recursion depth
        limits::check_recursion_depth(type_info.tree_height).map_err(ContextError::LimitsError)?;

        // Check the script size
        limits::check_script_size(&ctx.descriptor(), type_info.pk_cost)
            .map_err(ContextError::LimitsError)?;

        Ok(ctx)
    }
}

input:

wsh(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(or_d(pk(key))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

Result:

==119709==ERROR: AddressSanitizer: stack-overflow on address 0x7fff22d42b20 (pc 0x7fc5b2149125 bp 0x7fff22d470f0 sp 0x7fff22d42b20 T0)
    #0 0x7fc5b2149125 in tinyminiscript::parser::parse_internal
    #1 0x7fc5b2149d58 in tinyminiscript::parser::ParserContext::parse_call
    #2 0x7fc5b21492c7 in tinyminiscript::parser::parse_internal
    #3 0x7fc5b2149d58 in tinyminiscript::parser::ParserContext::parse_call
    ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions