Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, ], }, ), body: With( With { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 3, column: 6, }, end: Position { line: 3, column: 9, }, }, }, ), target: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 4, column: 6, }, end: Position { line: 4, column: 11, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "planDescription", span: Span { start: Position { line: 8, column: 3, }, end: Position { line: 8, column: 18, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The znapzend backup plan to use for the source.\n\nThe plan specifies how often to backup and for how long to keep the\nbackups. It consists of a series of retention periodes to interval\nassociations:\n\n```\n retA=>intA,retB=>intB,...\n```\n\nBoth intervals and retention periods are expressed in standard units\nof time or multiples of them. You can use both the full name or a\nshortcut according to the following listing:\n\n```\n second|sec|s, minute|min, hour|h, day|d, week|w, month|mon|m, year|y\n```\n\nSee {manpage}`znapzendzetup(1)` for more info.\n", span: Span { start: Position { line: 9, column: 1, }, end: Position { line: 28, column: 3, }, }, }, ), ], span: Span { start: Position { line: 8, column: 21, }, end: Position { line: 28, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "planExample", span: Span { start: Position { line: 29, column: 3, }, end: Position { line: 29, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "1h=>10min,1d=>1h,1w=>1d,1m=>1w,1y=>1m", span: Span { start: Position { line: 29, column: 18, }, end: Position { line: 29, column: 55, }, }, }, ), ], span: Span { start: Position { line: 29, column: 17, }, end: Position { line: 29, column: 56, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mbufferSizeType", span: Span { start: Position { line: 32, column: 3, }, end: Position { line: 32, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "str", span: Span { start: Position { line: 32, column: 21, }, end: Position { line: 32, column: 24, }, }, }, ), operator: Update, right: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "check", span: Span { start: Position { line: 33, column: 5, }, end: Position { line: 33, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "str", span: Span { start: Position { line: 33, column: 16, }, end: Position { line: 33, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "check", span: Span { start: Position { line: 33, column: 20, }, end: Position { line: 33, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 33, column: 26, }, end: Position { line: 33, column: 27, }, }, }, ), ], }, ), operator: LogicalAnd, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 33, column: 31, }, end: Position { line: 33, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isList", span: Span { start: Position { line: 33, column: 40, }, end: Position { line: 33, column: 46, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 33, column: 48, }, end: Position { line: 33, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "match", span: Span { start: Position { line: 33, column: 57, }, end: Position { line: 33, column: 62, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "^[0-9]+[bkMG]$", span: Span { start: Position { line: 33, column: 64, }, end: Position { line: 33, column: 78, }, }, }, ), ], span: Span { start: Position { line: 33, column: 63, }, end: Position { line: 33, column: 79, }, }, }, ), Identifier( Identifier { id: "x", span: Span { start: Position { line: 33, column: 80, }, end: Position { line: 33, column: 81, }, }, }, ), ], }, ), ], }, ), }, ), span: Span { start: Position { line: 33, column: 13, }, end: Position { line: 33, column: 82, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 34, column: 5, }, end: Position { line: 34, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "string of the form number{b|k|M|G}", span: Span { start: Position { line: 34, column: 20, }, end: Position { line: 34, column: 54, }, }, }, ), ], span: Span { start: Position { line: 34, column: 19, }, end: Position { line: 34, column: 55, }, }, }, ), }, ), ], span: Span { start: Position { line: 32, column: 28, }, end: Position { line: 35, column: 4, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enabledFeatures", span: Span { start: Position { line: 37, column: 3, }, end: Position { line: 37, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatLists", span: Span { start: Position { line: 37, column: 21, }, end: Position { line: 37, column: 32, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 37, column: 34, }, end: Position { line: 37, column: 48, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "enabled", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 37, column: 65, }, end: Position { line: 37, column: 73, }, }, }, ), arguments: [ Identifier( Identifier { id: "enabled", span: Span { start: Position { line: 37, column: 74, }, end: Position { line: 37, column: 81, }, }, }, ), Identifier( Identifier { id: "name", span: Span { start: Position { line: 37, column: 82, }, end: Position { line: 37, column: 86, }, }, }, ), ], }, ), span: Span { start: Position { line: 37, column: 56, }, end: Position { line: 37, column: 86, }, }, }, ), span: Span { start: Position { line: 37, column: 50, }, end: Position { line: 37, column: 86, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 37, column: 88, }, end: Position { line: 37, column: 91, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 37, column: 92, }, end: Position { line: 37, column: 100, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "stringContainingStrings", span: Span { start: Position { line: 41, column: 3, }, end: Position { line: 41, column: 26, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "list", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "matching", span: Span { start: Position { line: 42, column: 5, }, end: Position { line: 42, column: 13, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "s", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 42, column: 19, }, end: Position { line: 42, column: 22, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "str", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 42, column: 29, }, end: Position { line: 42, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "match", span: Span { start: Position { line: 42, column: 38, }, end: Position { line: 42, column: 43, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ".*", span: Span { start: Position { line: 42, column: 45, }, end: Position { line: 42, column: 53, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "str", span: Span { start: Position { line: 42, column: 49, }, end: Position { line: 42, column: 52, }, }, }, ), }, ), Raw( PartRaw { content: ".*", span: Span { start: Position { line: 42, column: 45, }, end: Position { line: 42, column: 55, }, }, }, ), ], span: Span { start: Position { line: 42, column: 44, }, end: Position { line: 42, column: 56, }, }, }, ), Identifier( Identifier { id: "s", span: Span { start: Position { line: 42, column: 57, }, end: Position { line: 42, column: 58, }, }, }, ), ], }, ), span: Span { start: Position { line: 42, column: 24, }, end: Position { line: 42, column: 58, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 42, column: 60, }, end: Position { line: 42, column: 64, }, }, }, ), ], }, ), span: Span { start: Position { line: 42, column: 16, }, end: Position { line: 42, column: 64, }, }, }, ), }, ), ], target: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "str", span: Span { start: Position { line: 43, column: 6, }, end: Position { line: 43, column: 9, }, }, }, ), operator: Update, right: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "check", span: Span { start: Position { line: 44, column: 5, }, end: Position { line: 44, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "str", span: Span { start: Position { line: 44, column: 16, }, end: Position { line: 44, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "check", span: Span { start: Position { line: 44, column: 20, }, end: Position { line: 44, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 44, column: 26, }, end: Position { line: 44, column: 27, }, }, }, ), ], }, ), operator: LogicalAnd, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "all", span: Span { start: Position { line: 44, column: 31, }, end: Position { line: 44, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "isList", span: Span { start: Position { line: 44, column: 35, }, end: Position { line: 44, column: 41, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "matching", span: Span { start: Position { line: 44, column: 43, }, end: Position { line: 44, column: 51, }, }, }, ), arguments: [ Identifier( Identifier { id: "x", span: Span { start: Position { line: 44, column: 52, }, end: Position { line: 44, column: 53, }, }, }, ), ], }, ), ], }, ), }, ), span: Span { start: Position { line: 44, column: 13, }, end: Position { line: 44, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 45, column: 5, }, end: Position { line: 45, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "string containing all of the characters ", span: Span { start: Position { line: 45, column: 20, }, end: Position { line: 45, column: 89, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 45, column: 62, }, end: Position { line: 45, column: 78, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ", ", span: Span { start: Position { line: 45, column: 80, }, end: Position { line: 45, column: 82, }, }, }, ), ], span: Span { start: Position { line: 45, column: 79, }, end: Position { line: 45, column: 83, }, }, }, ), Identifier( Identifier { id: "list", span: Span { start: Position { line: 45, column: 84, }, end: Position { line: 45, column: 88, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 45, column: 19, }, end: Position { line: 45, column: 90, }, }, }, ), }, ), ], span: Span { start: Position { line: 43, column: 13, }, end: Position { line: 46, column: 4, }, }, }, ), }, ), span: Span { start: Position { line: 41, column: 35, }, end: Position { line: 46, column: 4, }, }, }, ), span: Span { start: Position { line: 41, column: 29, }, end: Position { line: 46, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "timestampType", span: Span { start: Position { line: 48, column: 3, }, end: Position { line: 48, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringContainingStrings", span: Span { start: Position { line: 48, column: 19, }, end: Position { line: 48, column: 42, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "%Y", span: Span { start: Position { line: 48, column: 46, }, end: Position { line: 48, column: 48, }, }, }, ), ], span: Span { start: Position { line: 48, column: 45, }, end: Position { line: 48, column: 49, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "%m", span: Span { start: Position { line: 48, column: 51, }, end: Position { line: 48, column: 53, }, }, }, ), ], span: Span { start: Position { line: 48, column: 50, }, end: Position { line: 48, column: 54, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "%d", span: Span { start: Position { line: 48, column: 56, }, end: Position { line: 48, column: 58, }, }, }, ), ], span: Span { start: Position { line: 48, column: 55, }, end: Position { line: 48, column: 59, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "%H", span: Span { start: Position { line: 48, column: 61, }, end: Position { line: 48, column: 63, }, }, }, ), ], span: Span { start: Position { line: 48, column: 60, }, end: Position { line: 48, column: 64, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "%M", span: Span { start: Position { line: 48, column: 66, }, end: Position { line: 48, column: 68, }, }, }, ), ], span: Span { start: Position { line: 48, column: 65, }, end: Position { line: 48, column: 69, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "%S", span: Span { start: Position { line: 48, column: 71, }, end: Position { line: 48, column: 73, }, }, }, ), ], span: Span { start: Position { line: 48, column: 70, }, end: Position { line: 48, column: 74, }, }, }, ), ], span: Span { start: Position { line: 48, column: 43, }, end: Position { line: 48, column: 76, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "destType", span: Span { start: Position { line: 50, column: 3, }, end: Position { line: 50, column: 11, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "srcConfig", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "submodule", span: Span { start: Position { line: 50, column: 25, }, end: Position { line: 50, column: 34, }, }, }, ), arguments: [ Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "name", default: None, }, ], }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 51, column: 5, }, end: Position { line: 51, column: 12, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "label", span: Span { start: Position { line: 53, column: 7, }, end: Position { line: 53, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 53, column: 15, }, end: Position { line: 53, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 54, column: 9, }, end: Position { line: 54, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 54, column: 16, }, end: Position { line: 54, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 55, column: 9, }, end: Position { line: 55, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 55, column: 23, }, end: Position { line: 55, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 55, column: 27, }, end: Position { line: 55, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Label for this destination. Defaults to the attribute name.", span: Span { start: Position { line: 55, column: 34, }, end: Position { line: 55, column: 93, }, }, }, ), ], span: Span { start: Position { line: 55, column: 33, }, end: Position { line: 55, column: 94, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 53, column: 24, }, end: Position { line: 56, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "plan", span: Span { start: Position { line: 58, column: 7, }, end: Position { line: 58, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 58, column: 14, }, end: Position { line: 58, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 59, column: 9, }, end: Position { line: 59, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 59, column: 16, }, end: Position { line: 59, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 60, column: 9, }, end: Position { line: 60, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 60, column: 23, }, end: Position { line: 60, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 60, column: 27, }, end: Position { line: 60, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "planDescription", span: Span { start: Position { line: 60, column: 33, }, end: Position { line: 60, column: 48, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 61, column: 9, }, end: Position { line: 61, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "planExample", span: Span { start: Position { line: 61, column: 19, }, end: Position { line: 61, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 58, column: 23, }, end: Position { line: 62, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dataset", span: Span { start: Position { line: 64, column: 7, }, end: Position { line: 64, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 64, column: 17, }, end: Position { line: 64, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 65, column: 9, }, end: Position { line: 65, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 65, column: 16, }, end: Position { line: 65, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 66, column: 9, }, end: Position { line: 66, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 66, column: 23, }, end: Position { line: 66, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 66, column: 27, }, end: Position { line: 66, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Dataset name to send snapshots to.", span: Span { start: Position { line: 66, column: 34, }, end: Position { line: 66, column: 68, }, }, }, ), ], span: Span { start: Position { line: 66, column: 33, }, end: Position { line: 66, column: 69, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 67, column: 9, }, end: Position { line: 67, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "tank/main", span: Span { start: Position { line: 67, column: 20, }, end: Position { line: 67, column: 29, }, }, }, ), ], span: Span { start: Position { line: 67, column: 19, }, end: Position { line: 67, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 64, column: 26, }, end: Position { line: 68, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "host", span: Span { start: Position { line: 70, column: 7, }, end: Position { line: 70, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 70, column: 14, }, end: Position { line: 70, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 71, column: 9, }, end: Position { line: 71, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 71, column: 16, }, end: Position { line: 71, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 71, column: 23, }, end: Position { line: 71, column: 26, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 72, column: 9, }, end: Position { line: 72, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 72, column: 23, }, end: Position { line: 72, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 72, column: 27, }, end: Position { line: 72, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Host to use for the destination dataset. Can be prefixed with\n`user@` to specify the ssh user.\n", span: Span { start: Position { line: 73, column: 1, }, end: Position { line: 75, column: 9, }, }, }, ), ], span: Span { start: Position { line: 72, column: 33, }, end: Position { line: 75, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 76, column: 9, }, end: Position { line: 76, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 76, column: 19, }, end: Position { line: 76, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 77, column: 9, }, end: Position { line: 77, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "john@example.com", span: Span { start: Position { line: 77, column: 20, }, end: Position { line: 77, column: 36, }, }, }, ), ], span: Span { start: Position { line: 77, column: 19, }, end: Position { line: 77, column: 37, }, }, }, ), }, ), ], span: Span { start: Position { line: 70, column: 23, }, end: Position { line: 78, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "presend", span: Span { start: Position { line: 80, column: 7, }, end: Position { line: 80, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 80, column: 17, }, end: Position { line: 80, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 81, column: 9, }, end: Position { line: 81, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 81, column: 16, }, end: Position { line: 81, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 81, column: 23, }, end: Position { line: 81, column: 26, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 82, column: 9, }, end: Position { line: 82, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 82, column: 23, }, end: Position { line: 82, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 82, column: 27, }, end: Position { line: 82, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Command to run before sending the snapshot to the destination.\nIntended to run a remote script via {command}`ssh` on the\ndestination, e.g. to bring up a backup disk or server or to put a\nzpool online/offline. See also {option}`postsend`.\n", span: Span { start: Position { line: 83, column: 1, }, end: Position { line: 87, column: 9, }, }, }, ), ], span: Span { start: Position { line: 82, column: 33, }, end: Position { line: 87, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 88, column: 9, }, end: Position { line: 88, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 88, column: 19, }, end: Position { line: 88, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 89, column: 9, }, end: Position { line: 89, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "ssh root@bserv zpool import -Nf tank", span: Span { start: Position { line: 89, column: 20, }, end: Position { line: 89, column: 56, }, }, }, ), ], span: Span { start: Position { line: 89, column: 19, }, end: Position { line: 89, column: 57, }, }, }, ), }, ), ], span: Span { start: Position { line: 80, column: 26, }, end: Position { line: 90, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postsend", span: Span { start: Position { line: 92, column: 7, }, end: Position { line: 92, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 92, column: 18, }, end: Position { line: 92, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 93, column: 9, }, end: Position { line: 93, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 93, column: 16, }, end: Position { line: 93, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 93, column: 23, }, end: Position { line: 93, column: 26, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 94, column: 9, }, end: Position { line: 94, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 94, column: 23, }, end: Position { line: 94, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 94, column: 27, }, end: Position { line: 94, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Command to run after sending the snapshot to the destination.\nIntended to run a remote script via {command}`ssh` on the\ndestination, e.g. to bring up a backup disk or server or to put a\nzpool online/offline. See also {option}`presend`.\n", span: Span { start: Position { line: 95, column: 1, }, end: Position { line: 99, column: 9, }, }, }, ), ], span: Span { start: Position { line: 94, column: 33, }, end: Position { line: 99, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 100, column: 9, }, end: Position { line: 100, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 100, column: 19, }, end: Position { line: 100, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 101, column: 9, }, end: Position { line: 101, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "ssh root@bserv zpool export tank", span: Span { start: Position { line: 101, column: 20, }, end: Position { line: 101, column: 52, }, }, }, ), ], span: Span { start: Position { line: 101, column: 19, }, end: Position { line: 101, column: 53, }, }, }, ), }, ), ], span: Span { start: Position { line: 92, column: 27, }, end: Position { line: 102, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 51, column: 15, }, end: Position { line: 103, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 105, column: 5, }, end: Position { line: 105, column: 11, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "label", span: Span { start: Position { line: 106, column: 7, }, end: Position { line: 106, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 106, column: 15, }, end: Position { line: 106, column: 24, }, }, }, ), arguments: [ Identifier( Identifier { id: "name", span: Span { start: Position { line: 106, column: 25, }, end: Position { line: 106, column: 29, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "plan", span: Span { start: Position { line: 107, column: 7, }, end: Position { line: 107, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 107, column: 14, }, end: Position { line: 107, column: 23, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "srcConfig", span: Span { start: Position { line: 107, column: 24, }, end: Position { line: 107, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "plan", span: Span { start: Position { line: 107, column: 34, }, end: Position { line: 107, column: 38, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 105, column: 14, }, end: Position { line: 108, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 50, column: 51, }, end: Position { line: 109, column: 4, }, }, }, ), span: Span { start: Position { line: 50, column: 36, }, end: Position { line: 109, column: 4, }, }, }, ), ], }, ), span: Span { start: Position { line: 50, column: 14, }, end: Position { line: 109, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "srcType", span: Span { start: Position { line: 113, column: 3, }, end: Position { line: 113, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "submodule", span: Span { start: Position { line: 113, column: 13, }, end: Position { line: 113, column: 22, }, }, }, ), arguments: [ Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "name", default: None, }, FunctionHeadDestructuredArgument { identifier: "config", default: None, }, ], }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 114, column: 5, }, end: Position { line: 114, column: 12, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 116, column: 7, }, end: Position { line: 116, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 116, column: 16, }, end: Position { line: 116, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 117, column: 9, }, end: Position { line: 117, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 117, column: 16, }, end: Position { line: 117, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 118, column: 9, }, end: Position { line: 118, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 118, column: 23, }, end: Position { line: 118, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 118, column: 27, }, end: Position { line: 118, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether to enable this source.", span: Span { start: Position { line: 118, column: 34, }, end: Position { line: 118, column: 64, }, }, }, ), ], span: Span { start: Position { line: 118, column: 33, }, end: Position { line: 118, column: 65, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 119, column: 9, }, end: Position { line: 119, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 119, column: 19, }, end: Position { line: 119, column: 23, }, }, }, ), }, ), ], span: Span { start: Position { line: 116, column: 25, }, end: Position { line: 120, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "recursive", span: Span { start: Position { line: 122, column: 7, }, end: Position { line: 122, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 122, column: 19, }, end: Position { line: 122, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 123, column: 9, }, end: Position { line: 123, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 123, column: 16, }, end: Position { line: 123, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 124, column: 9, }, end: Position { line: 124, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 124, column: 23, }, end: Position { line: 124, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 124, column: 27, }, end: Position { line: 124, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether to do recursive snapshots.", span: Span { start: Position { line: 124, column: 34, }, end: Position { line: 124, column: 68, }, }, }, ), ], span: Span { start: Position { line: 124, column: 33, }, end: Position { line: 124, column: 69, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 125, column: 9, }, end: Position { line: 125, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 125, column: 19, }, end: Position { line: 125, column: 24, }, }, }, ), }, ), ], span: Span { start: Position { line: 122, column: 28, }, end: Position { line: 126, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mbuffer", span: Span { start: Position { line: 128, column: 7, }, end: Position { line: 128, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 129, column: 9, }, end: Position { line: 129, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 129, column: 18, }, end: Position { line: 129, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 130, column: 11, }, end: Position { line: 130, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 130, column: 18, }, end: Position { line: 130, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 131, column: 11, }, end: Position { line: 131, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 131, column: 25, }, end: Position { line: 131, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 131, column: 29, }, end: Position { line: 131, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Whether to use {command}`mbuffer`.", span: Span { start: Position { line: 131, column: 36, }, end: Position { line: 131, column: 70, }, }, }, ), ], span: Span { start: Position { line: 131, column: 35, }, end: Position { line: 131, column: 71, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 132, column: 11, }, end: Position { line: 132, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 132, column: 21, }, end: Position { line: 132, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 129, column: 27, }, end: Position { line: 133, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "port", span: Span { start: Position { line: 135, column: 9, }, end: Position { line: 135, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 135, column: 16, }, end: Position { line: 135, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 136, column: 11, }, end: Position { line: 136, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 136, column: 18, }, end: Position { line: 136, column: 24, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "ints", span: Span { start: Position { line: 136, column: 25, }, end: Position { line: 136, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "u16", span: Span { start: Position { line: 136, column: 30, }, end: Position { line: 136, column: 33, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 137, column: 11, }, end: Position { line: 137, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 137, column: 25, }, end: Position { line: 137, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 137, column: 29, }, end: Position { line: 137, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Port to use for {command}`mbuffer`.\n\nIf this is null, it will run {command}`mbuffer` through\nssh.\n\nIf this is not null, it will run {command}`mbuffer`\ndirectly through TCP, which is not encrypted but faster. In that\ncase the given port needs to be open on the destination host.\n", span: Span { start: Position { line: 138, column: 1, }, end: Position { line: 146, column: 11, }, }, }, ), ], span: Span { start: Position { line: 137, column: 35, }, end: Position { line: 146, column: 13, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 147, column: 11, }, end: Position { line: 147, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 147, column: 21, }, end: Position { line: 147, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 135, column: 25, }, end: Position { line: 148, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "size", span: Span { start: Position { line: 150, column: 9, }, end: Position { line: 150, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 150, column: 16, }, end: Position { line: 150, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 151, column: 11, }, end: Position { line: 151, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "mbufferSizeType", span: Span { start: Position { line: 151, column: 18, }, end: Position { line: 151, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 152, column: 11, }, end: Position { line: 152, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 152, column: 25, }, end: Position { line: 152, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 152, column: 29, }, end: Position { line: 152, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The size for {command}`mbuffer`.\nSupports the units b, k, M, G.\n", span: Span { start: Position { line: 153, column: 1, }, end: Position { line: 155, column: 11, }, }, }, ), ], span: Span { start: Position { line: 152, column: 35, }, end: Position { line: 155, column: 13, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 156, column: 11, }, end: Position { line: 156, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "1G", span: Span { start: Position { line: 156, column: 22, }, end: Position { line: 156, column: 24, }, }, }, ), ], span: Span { start: Position { line: 156, column: 21, }, end: Position { line: 156, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 157, column: 11, }, end: Position { line: 157, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "128M", span: Span { start: Position { line: 157, column: 22, }, end: Position { line: 157, column: 26, }, }, }, ), ], span: Span { start: Position { line: 157, column: 21, }, end: Position { line: 157, column: 27, }, }, }, ), }, ), ], span: Span { start: Position { line: 150, column: 25, }, end: Position { line: 158, column: 10, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 128, column: 17, }, end: Position { line: 159, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "presnap", span: Span { start: Position { line: 161, column: 7, }, end: Position { line: 161, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 161, column: 17, }, end: Position { line: 161, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 162, column: 9, }, end: Position { line: 162, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 162, column: 16, }, end: Position { line: 162, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 162, column: 23, }, end: Position { line: 162, column: 26, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 163, column: 9, }, end: Position { line: 163, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 163, column: 23, }, end: Position { line: 163, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 163, column: 27, }, end: Position { line: 163, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Command to run before snapshots are taken on the source dataset,\ne.g. for database locking/flushing. See also\n{option}`postsnap`.\n", span: Span { start: Position { line: 164, column: 1, }, end: Position { line: 167, column: 9, }, }, }, ), ], span: Span { start: Position { line: 163, column: 33, }, end: Position { line: 167, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 168, column: 9, }, end: Position { line: 168, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 168, column: 19, }, end: Position { line: 168, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 169, column: 9, }, end: Position { line: 169, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 169, column: 19, }, end: Position { line: 169, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 11, }, }, }, ), Raw( PartRaw { content: "''", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 14, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 17, }, }, }, ), Raw( PartRaw { content: "{pkgs.mariadb}/bin/mysql -e \"set autocommit=0;flush tables with read lock;\\\\! ", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 95, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 98, }, }, }, ), Raw( PartRaw { content: "{pkgs.coreutils}/bin/sleep 600\" & ", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 133, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 136, }, }, }, ), Raw( PartRaw { content: "{pkgs.coreutils}/bin/echo $! > /tmp/mariadblock.pid ; sleep 10", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 198, }, }, }, ), Raw( PartRaw { content: "''", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 170, column: 201, }, }, }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 170, column: 1, }, end: Position { line: 171, column: 9, }, }, }, ), ], span: Span { start: Position { line: 169, column: 37, }, end: Position { line: 171, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 161, column: 26, }, end: Position { line: 172, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "postsnap", span: Span { start: Position { line: 174, column: 7, }, end: Position { line: 174, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 174, column: 18, }, end: Position { line: 174, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 175, column: 9, }, end: Position { line: 175, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOr", span: Span { start: Position { line: 175, column: 16, }, end: Position { line: 175, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 175, column: 23, }, end: Position { line: 175, column: 26, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 176, column: 9, }, end: Position { line: 176, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 176, column: 23, }, end: Position { line: 176, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 176, column: 27, }, end: Position { line: 176, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Command to run after snapshots are taken on the source dataset,\ne.g. for database unlocking. See also {option}`presnap`.\n", span: Span { start: Position { line: 177, column: 1, }, end: Position { line: 179, column: 9, }, }, }, ), ], span: Span { start: Position { line: 176, column: 33, }, end: Position { line: 179, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 180, column: 9, }, end: Position { line: 180, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 180, column: 19, }, end: Position { line: 180, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 181, column: 9, }, end: Position { line: 181, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 181, column: 19, }, end: Position { line: 181, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "\"", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 182, column: 12, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 182, column: 15, }, }, }, ), Raw( PartRaw { content: "{pkgs.coreutils}/bin/kill `", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 182, column: 42, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 182, column: 45, }, }, }, ), Raw( PartRaw { content: "{pkgs.coreutils}/bin/cat /tmp/mariadblock.pid`;", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 182, column: 92, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 182, column: 95, }, }, }, ), Raw( PartRaw { content: "{pkgs.coreutils}/bin/rm /tmp/mariadblock.pid\"\n", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 183, column: 9, }, }, }, ), ], span: Span { start: Position { line: 181, column: 37, }, end: Position { line: 183, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 174, column: 27, }, end: Position { line: 184, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "timestampFormat", span: Span { start: Position { line: 186, column: 7, }, end: Position { line: 186, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 186, column: 25, }, end: Position { line: 186, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 187, column: 9, }, end: Position { line: 187, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "timestampType", span: Span { start: Position { line: 187, column: 16, }, end: Position { line: 187, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 188, column: 9, }, end: Position { line: 188, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 188, column: 23, }, end: Position { line: 188, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 188, column: 27, }, end: Position { line: 188, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The timestamp format to use for constructing snapshot names.\nThe syntax is `strftime`-like. The string must\nconsist of the mandatory `%Y %m %d %H %M %S`.\nOptionally `- _ . :` characters as well as any\nalphanumeric character are allowed. If suffixed by a\n`Z`, times will be in UTC.\n", span: Span { start: Position { line: 189, column: 1, }, end: Position { line: 195, column: 9, }, }, }, ), ], span: Span { start: Position { line: 188, column: 33, }, end: Position { line: 195, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 196, column: 9, }, end: Position { line: 196, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "%Y-%m-%d-%H%M%S", span: Span { start: Position { line: 196, column: 20, }, end: Position { line: 196, column: 35, }, }, }, ), ], span: Span { start: Position { line: 196, column: 19, }, end: Position { line: 196, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 197, column: 9, }, end: Position { line: 197, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "znapzend-%m.%d.%Y-%H%M%SZ", span: Span { start: Position { line: 197, column: 20, }, end: Position { line: 197, column: 45, }, }, }, ), ], span: Span { start: Position { line: 197, column: 19, }, end: Position { line: 197, column: 46, }, }, }, ), }, ), ], span: Span { start: Position { line: 186, column: 34, }, end: Position { line: 198, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sendDelay", span: Span { start: Position { line: 200, column: 7, }, end: Position { line: 200, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 200, column: 19, }, end: Position { line: 200, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 201, column: 9, }, end: Position { line: 201, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "int", span: Span { start: Position { line: 201, column: 16, }, end: Position { line: 201, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 202, column: 9, }, end: Position { line: 202, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 202, column: 23, }, end: Position { line: 202, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 202, column: 27, }, end: Position { line: 202, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specify delay (in seconds) before sending snaps to the destination.\nMay be useful if you want to control sending time.\n", span: Span { start: Position { line: 203, column: 1, }, end: Position { line: 205, column: 9, }, }, }, ), ], span: Span { start: Position { line: 202, column: 33, }, end: Position { line: 205, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 206, column: 9, }, end: Position { line: 206, column: 16, }, }, }, ), ], to: Integer( Integer { value: "0", span: Span { start: Position { line: 206, column: 19, }, end: Position { line: 206, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 207, column: 9, }, end: Position { line: 207, column: 16, }, }, }, ), ], to: Integer( Integer { value: "60", span: Span { start: Position { line: 207, column: 19, }, end: Position { line: 207, column: 21, }, }, }, ), }, ), ], span: Span { start: Position { line: 200, column: 28, }, end: Position { line: 208, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "plan", span: Span { start: Position { line: 210, column: 7, }, end: Position { line: 210, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 210, column: 14, }, end: Position { line: 210, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 211, column: 9, }, end: Position { line: 211, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 211, column: 16, }, end: Position { line: 211, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 212, column: 9, }, end: Position { line: 212, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 212, column: 23, }, end: Position { line: 212, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 212, column: 27, }, end: Position { line: 212, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "planDescription", span: Span { start: Position { line: 212, column: 33, }, end: Position { line: 212, column: 48, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 213, column: 9, }, end: Position { line: 213, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "planExample", span: Span { start: Position { line: 213, column: 19, }, end: Position { line: 213, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 210, column: 23, }, end: Position { line: 214, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dataset", span: Span { start: Position { line: 216, column: 7, }, end: Position { line: 216, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 216, column: 17, }, end: Position { line: 216, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 217, column: 9, }, end: Position { line: 217, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 217, column: 16, }, end: Position { line: 217, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 218, column: 9, }, end: Position { line: 218, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 218, column: 23, }, end: Position { line: 218, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 218, column: 27, }, end: Position { line: 218, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "The dataset to use for this source.", span: Span { start: Position { line: 218, column: 34, }, end: Position { line: 218, column: 69, }, }, }, ), ], span: Span { start: Position { line: 218, column: 33, }, end: Position { line: 218, column: 70, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 219, column: 9, }, end: Position { line: 219, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "tank/home", span: Span { start: Position { line: 219, column: 20, }, end: Position { line: 219, column: 29, }, }, }, ), ], span: Span { start: Position { line: 219, column: 19, }, end: Position { line: 219, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 216, column: 26, }, end: Position { line: 220, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "destinations", span: Span { start: Position { line: 222, column: 7, }, end: Position { line: 222, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 222, column: 22, }, end: Position { line: 222, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 223, column: 9, }, end: Position { line: 223, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrsOf", span: Span { start: Position { line: 223, column: 16, }, end: Position { line: 223, column: 23, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "destType", span: Span { start: Position { line: 223, column: 25, }, end: Position { line: 223, column: 33, }, }, }, ), arguments: [ Identifier( Identifier { id: "config", span: Span { start: Position { line: 223, column: 34, }, end: Position { line: 223, column: 40, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 224, column: 9, }, end: Position { line: 224, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 224, column: 23, }, end: Position { line: 224, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 224, column: 27, }, end: Position { line: 224, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Additional destinations.", span: Span { start: Position { line: 224, column: 34, }, end: Position { line: 224, column: 58, }, }, }, ), ], span: Span { start: Position { line: 224, column: 33, }, end: Position { line: 224, column: 59, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 225, column: 9, }, end: Position { line: 225, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 225, column: 19, }, end: Position { line: 225, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 226, column: 9, }, end: Position { line: 226, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 226, column: 19, }, end: Position { line: 226, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n local = {\n dataset = \"btank/backup\";\n presend = \"zpool import -N btank\";\n postsend = \"zpool export btank\";\n };\n remote = {\n host = \"john@example.com\";\n dataset = \"tank/john\";\n };\n};\n", span: Span { start: Position { line: 227, column: 1, }, end: Position { line: 238, column: 9, }, }, }, ), ], span: Span { start: Position { line: 226, column: 37, }, end: Position { line: 238, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 222, column: 31, }, end: Position { line: 239, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 114, column: 15, }, end: Position { line: 240, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 242, column: 5, }, end: Position { line: 242, column: 11, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "dataset", span: Span { start: Position { line: 243, column: 7, }, end: Position { line: 243, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkDefault", span: Span { start: Position { line: 243, column: 17, }, end: Position { line: 243, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "name", span: Span { start: Position { line: 243, column: 27, }, end: Position { line: 243, column: 31, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 242, column: 14, }, end: Position { line: 244, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 113, column: 47, }, end: Position { line: 246, column: 4, }, }, }, ), span: Span { start: Position { line: 113, column: 24, }, end: Position { line: 246, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfg", span: Span { start: Position { line: 250, column: 3, }, end: Position { line: 250, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 250, column: 9, }, end: Position { line: 250, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 250, column: 16, }, end: Position { line: 250, column: 24, }, }, }, ), Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 250, column: 25, }, end: Position { line: 250, column: 33, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "onOff", span: Span { start: Position { line: 252, column: 3, }, end: Position { line: 252, column: 8, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "b", span: Span { start: Position { line: 252, column: 17, }, end: Position { line: 252, column: 18, }, }, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "on", span: Span { start: Position { line: 252, column: 25, }, end: Position { line: 252, column: 27, }, }, }, ), ], span: Span { start: Position { line: 252, column: 24, }, end: Position { line: 252, column: 28, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "off", span: Span { start: Position { line: 252, column: 35, }, end: Position { line: 252, column: 38, }, }, }, ), ], span: Span { start: Position { line: 252, column: 34, }, end: Position { line: 252, column: 39, }, }, }, ), span: Span { start: Position { line: 252, column: 14, }, end: Position { line: 252, column: 39, }, }, }, ), span: Span { start: Position { line: 252, column: 11, }, end: Position { line: 252, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nullOff", span: Span { start: Position { line: 253, column: 3, }, end: Position { line: 253, column: 10, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "b", span: Span { start: Position { line: 253, column: 19, }, end: Position { line: 253, column: 20, }, }, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 253, column: 24, }, end: Position { line: 253, column: 28, }, }, }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "off", span: Span { start: Position { line: 253, column: 35, }, end: Position { line: 253, column: 38, }, }, }, ), ], span: Span { start: Position { line: 253, column: 34, }, end: Position { line: 253, column: 39, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 253, column: 45, }, end: Position { line: 253, column: 53, }, }, }, ), arguments: [ Identifier( Identifier { id: "b", span: Span { start: Position { line: 253, column: 54, }, end: Position { line: 253, column: 55, }, }, }, ), ], }, ), span: Span { start: Position { line: 253, column: 16, }, end: Position { line: 253, column: 55, }, }, }, ), span: Span { start: Position { line: 253, column: 13, }, end: Position { line: 253, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "stripSlashes", span: Span { start: Position { line: 254, column: 3, }, end: Position { line: 254, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "replaceStrings", span: Span { start: Position { line: 254, column: 18, }, end: Position { line: 254, column: 32, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 254, column: 36, }, end: Position { line: 254, column: 37, }, }, }, ), ], span: Span { start: Position { line: 254, column: 35, }, end: Position { line: 254, column: 38, }, }, }, ), ], span: Span { start: Position { line: 254, column: 33, }, end: Position { line: 254, column: 40, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: ".", span: Span { start: Position { line: 254, column: 44, }, end: Position { line: 254, column: 45, }, }, }, ), ], span: Span { start: Position { line: 254, column: 43, }, end: Position { line: 254, column: 46, }, }, }, ), ], span: Span { start: Position { line: 254, column: 41, }, end: Position { line: 254, column: 48, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "attrsToFile", span: Span { start: Position { line: 256, column: 3, }, end: Position { line: 256, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "config", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 256, column: 25, }, end: Position { line: 256, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 256, column: 43, }, end: Position { line: 256, column: 45, }, }, }, ), ], span: Span { start: Position { line: 256, column: 42, }, end: Position { line: 256, column: 46, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 256, column: 48, }, end: Position { line: 256, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrValues", span: Span { start: Position { line: 256, column: 57, }, end: Position { line: 256, column: 67, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs", span: Span { start: Position { line: 257, column: 5, }, end: Position { line: 257, column: 13, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "n", span: Span { start: Position { line: 257, column: 24, }, end: Position { line: 257, column: 25, }, }, }, ), }, ), Raw( PartRaw { content: "=", span: Span { start: Position { line: 257, column: 22, }, end: Position { line: 257, column: 27, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "v", span: Span { start: Position { line: 257, column: 29, }, end: Position { line: 257, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 257, column: 21, }, end: Position { line: 257, column: 32, }, }, }, ), span: Span { start: Position { line: 257, column: 18, }, end: Position { line: 257, column: 32, }, }, }, ), span: Span { start: Position { line: 257, column: 15, }, end: Position { line: 257, column: 32, }, }, }, ), Identifier( Identifier { id: "config", span: Span { start: Position { line: 257, column: 34, }, end: Position { line: 257, column: 40, }, }, }, ), ], }, ), ], }, ), ], }, ), span: Span { start: Position { line: 256, column: 17, }, end: Position { line: 257, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkDestAttrs", span: Span { start: Position { line: 259, column: 3, }, end: Position { line: 259, column: 14, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "dst", }, ), body: With( With { expression: Identifier( Identifier { id: "dst", span: Span { start: Position { line: 259, column: 27, }, end: Position { line: 259, column: 30, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 260, column: 5, }, end: Position { line: 260, column: 14, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "v", }, ), body: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nameValuePair", span: Span { start: Position { line: 260, column: 22, }, end: Position { line: 260, column: 35, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "dst_", span: Span { start: Position { line: 260, column: 37, }, end: Position { line: 260, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "label", span: Span { start: Position { line: 260, column: 43, }, end: Position { line: 260, column: 48, }, }, }, ), }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "n", span: Span { start: Position { line: 260, column: 51, }, end: Position { line: 260, column: 52, }, }, }, ), }, ), ], span: Span { start: Position { line: 260, column: 36, }, end: Position { line: 260, column: 54, }, }, }, ), Identifier( Identifier { id: "v", span: Span { start: Position { line: 260, column: 55, }, end: Position { line: 260, column: 56, }, }, }, ), ], }, ), span: Span { start: Position { line: 260, column: 19, }, end: Position { line: 260, column: 56, }, }, }, ), span: Span { start: Position { line: 260, column: 16, }, end: Position { line: 260, column: 56, }, }, }, ), BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Expression( PartExpression { expression: String( String_ { parts: [], span: Span { start: Position { line: 261, column: 7, }, end: Position { line: 261, column: 9, }, }, }, ), }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 261, column: 12, }, end: Position { line: 261, column: 26, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "host", span: Span { start: Position { line: 261, column: 28, }, end: Position { line: 261, column: 32, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 261, column: 36, }, end: Position { line: 261, column: 40, }, }, }, ), }, ), String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "host", span: Span { start: Position { line: 261, column: 45, }, end: Position { line: 261, column: 49, }, }, }, ), }, ), Raw( PartRaw { content: ":", span: Span { start: Position { line: 261, column: 43, }, end: Position { line: 261, column: 51, }, }, }, ), ], span: Span { start: Position { line: 261, column: 42, }, end: Position { line: 261, column: 52, }, }, }, ), ], }, ), operator: Addition, right: Identifier( Identifier { id: "dataset", span: Span { start: Position { line: 261, column: 55, }, end: Position { line: 261, column: 62, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "_plan", span: Span { start: Position { line: 262, column: 7, }, end: Position { line: 262, column: 12, }, }, }, ), ], to: Identifier( Identifier { id: "plan", span: Span { start: Position { line: 262, column: 15, }, end: Position { line: 262, column: 19, }, }, }, ), }, ), ], span: Span { start: Position { line: 260, column: 59, }, end: Position { line: 263, column: 6, }, }, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 263, column: 10, }, end: Position { line: 263, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "presend", span: Span { start: Position { line: 263, column: 25, }, end: Position { line: 263, column: 32, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 263, column: 36, }, end: Position { line: 263, column: 40, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "_precmd", span: Span { start: Position { line: 264, column: 7, }, end: Position { line: 264, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "presend", span: Span { start: Position { line: 264, column: 17, }, end: Position { line: 264, column: 24, }, }, }, ), }, ), ], span: Span { start: Position { line: 263, column: 42, }, end: Position { line: 265, column: 6, }, }, }, ), ], }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 265, column: 10, }, end: Position { line: 265, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "postsend", span: Span { start: Position { line: 265, column: 25, }, end: Position { line: 265, column: 33, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 265, column: 37, }, end: Position { line: 265, column: 41, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "_pstcmd", span: Span { start: Position { line: 266, column: 7, }, end: Position { line: 266, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "postsend", span: Span { start: Position { line: 266, column: 17, }, end: Position { line: 266, column: 25, }, }, }, ), }, ), ], span: Span { start: Position { line: 265, column: 43, }, end: Position { line: 267, column: 6, }, }, }, ), ], }, ), }, ), }, ), ], }, ), span: Span { start: Position { line: 259, column: 22, }, end: Position { line: 267, column: 7, }, }, }, ), span: Span { start: Position { line: 259, column: 17, }, end: Position { line: 267, column: 7, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mkSrcAttrs", span: Span { start: Position { line: 269, column: 3, }, end: Position { line: 269, column: 13, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "srcCfg", }, ), body: With( With { expression: Identifier( Identifier { id: "srcCfg", span: Span { start: Position { line: 269, column: 29, }, end: Position { line: 269, column: 35, }, }, }, ), target: BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enabled", span: Span { start: Position { line: 270, column: 5, }, end: Position { line: 270, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "onOff", span: Span { start: Position { line: 270, column: 15, }, end: Position { line: 270, column: 20, }, }, }, ), arguments: [ Identifier( Identifier { id: "enable", span: Span { start: Position { line: 270, column: 21, }, end: Position { line: 270, column: 27, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mbuffer", span: Span { start: Position { line: 272, column: 5, }, end: Position { line: 272, column: 12, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "mbuffer", span: Span { start: Position { line: 272, column: 20, }, end: Position { line: 272, column: 27, }, }, }, ), target: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "enable", span: Span { start: Position { line: 272, column: 32, }, end: Position { line: 272, column: 38, }, }, }, ), then: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "mbuffer", span: Span { start: Position { line: 272, column: 45, }, end: Position { line: 272, column: 52, }, }, }, ), ], span: Span { start: Position { line: 272, column: 44, }, end: Position { line: 272, column: 53, }, }, }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 273, column: 11, }, end: Position { line: 273, column: 25, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "port", span: Span { start: Position { line: 273, column: 27, }, end: Position { line: 273, column: 31, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 273, column: 35, }, end: Position { line: 273, column: 39, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: ":", span: Span { start: Position { line: 273, column: 42, }, end: Position { line: 273, column: 59, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 273, column: 45, }, end: Position { line: 273, column: 53, }, }, }, ), arguments: [ Identifier( Identifier { id: "port", span: Span { start: Position { line: 273, column: 54, }, end: Position { line: 273, column: 58, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 273, column: 41, }, end: Position { line: 273, column: 60, }, }, }, ), ], }, ), }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "off", span: Span { start: Position { line: 273, column: 67, }, end: Position { line: 273, column: 70, }, }, }, ), ], span: Span { start: Position { line: 273, column: 66, }, end: Position { line: 273, column: 71, }, }, }, ), span: Span { start: Position { line: 272, column: 29, }, end: Position { line: 273, column: 71, }, }, }, ), span: Span { start: Position { line: 272, column: 15, }, end: Position { line: 273, column: 71, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mbuffer_size", span: Span { start: Position { line: 274, column: 5, }, end: Position { line: 274, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "mbuffer", span: Span { start: Position { line: 274, column: 20, }, end: Position { line: 274, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "size", span: Span { start: Position { line: 274, column: 28, }, end: Position { line: 274, column: 32, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "post_znap_cmd", span: Span { start: Position { line: 275, column: 5, }, end: Position { line: 275, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOff", span: Span { start: Position { line: 275, column: 21, }, end: Position { line: 275, column: 28, }, }, }, ), arguments: [ Identifier( Identifier { id: "postsnap", span: Span { start: Position { line: 275, column: 29, }, end: Position { line: 275, column: 37, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pre_znap_cmd", span: Span { start: Position { line: 276, column: 5, }, end: Position { line: 276, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "nullOff", span: Span { start: Position { line: 276, column: 20, }, end: Position { line: 276, column: 27, }, }, }, ), arguments: [ Identifier( Identifier { id: "presnap", span: Span { start: Position { line: 276, column: 28, }, end: Position { line: 276, column: 35, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "recursive", span: Span { start: Position { line: 277, column: 5, }, end: Position { line: 277, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "onOff", span: Span { start: Position { line: 277, column: 17, }, end: Position { line: 277, column: 22, }, }, }, ), arguments: [ Identifier( Identifier { id: "recursive", span: Span { start: Position { line: 277, column: 23, }, end: Position { line: 277, column: 32, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "src", span: Span { start: Position { line: 278, column: 5, }, end: Position { line: 278, column: 8, }, }, }, ), ], to: Identifier( Identifier { id: "dataset", span: Span { start: Position { line: 278, column: 11, }, end: Position { line: 278, column: 18, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "src_plan", span: Span { start: Position { line: 279, column: 5, }, end: Position { line: 279, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "plan", span: Span { start: Position { line: 279, column: 16, }, end: Position { line: 279, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "tsformat", span: Span { start: Position { line: 280, column: 5, }, end: Position { line: 280, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "timestampFormat", span: Span { start: Position { line: 280, column: 16, }, end: Position { line: 280, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "zend_delay", span: Span { start: Position { line: 281, column: 5, }, end: Position { line: 281, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 281, column: 18, }, end: Position { line: 281, column: 26, }, }, }, ), arguments: [ Identifier( Identifier { id: "sendDelay", span: Span { start: Position { line: 281, column: 27, }, end: Position { line: 281, column: 36, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 269, column: 37, }, end: Position { line: 282, column: 4, }, }, }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "foldr", span: Span { start: Position { line: 282, column: 8, }, end: Position { line: 282, column: 13, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "a", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "b", }, ), body: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "a", span: Span { start: Position { line: 282, column: 21, }, end: Position { line: 282, column: 22, }, }, }, ), operator: Update, right: Identifier( Identifier { id: "b", span: Span { start: Position { line: 282, column: 26, }, end: Position { line: 282, column: 27, }, }, }, ), }, ), span: Span { start: Position { line: 282, column: 18, }, end: Position { line: 282, column: 27, }, }, }, ), span: Span { start: Position { line: 282, column: 15, }, end: Position { line: 282, column: 27, }, }, }, ), Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 282, column: 29, }, end: Position { line: 282, column: 31, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 283, column: 5, }, end: Position { line: 283, column: 8, }, }, }, ), arguments: [ Identifier( Identifier { id: "mkDestAttrs", span: Span { start: Position { line: 283, column: 9, }, end: Position { line: 283, column: 20, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 283, column: 22, }, end: Position { line: 283, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrValues", span: Span { start: Position { line: 283, column: 31, }, end: Position { line: 283, column: 41, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "destinations", span: Span { start: Position { line: 283, column: 42, }, end: Position { line: 283, column: 54, }, }, }, ), ], }, ), ], }, ), ], }, ), }, ), span: Span { start: Position { line: 269, column: 24, }, end: Position { line: 284, column: 4, }, }, }, ), span: Span { start: Position { line: 269, column: 16, }, end: Position { line: 284, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "files", span: Span { start: Position { line: 286, column: 3, }, end: Position { line: 286, column: 8, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrs'", span: Span { start: Position { line: 286, column: 11, }, end: Position { line: 286, column: 20, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "n", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "srcCfg", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fileText", span: Span { start: Position { line: 287, column: 5, }, end: Position { line: 287, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrsToFile", span: Span { start: Position { line: 287, column: 16, }, end: Position { line: 287, column: 27, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkSrcAttrs", span: Span { start: Position { line: 287, column: 29, }, end: Position { line: 287, column: 39, }, }, }, ), arguments: [ Identifier( Identifier { id: "srcCfg", span: Span { start: Position { line: 287, column: 40, }, end: Position { line: 287, column: 46, }, }, }, ), ], }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 289, column: 5, }, end: Position { line: 289, column: 9, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "srcCfg", span: Span { start: Position { line: 289, column: 12, }, end: Position { line: 289, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dataset", span: Span { start: Position { line: 289, column: 19, }, end: Position { line: 289, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "value", span: Span { start: Position { line: 290, column: 5, }, end: Position { line: 290, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 290, column: 13, }, end: Position { line: 290, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 290, column: 18, }, end: Position { line: 290, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stripSlashes", span: Span { start: Position { line: 290, column: 29, }, end: Position { line: 290, column: 41, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "srcCfg", span: Span { start: Position { line: 290, column: 42, }, end: Position { line: 290, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dataset", span: Span { start: Position { line: 290, column: 49, }, end: Position { line: 290, column: 56, }, }, }, ), ], default: None, }, ), ], }, ), Identifier( Identifier { id: "fileText", span: Span { start: Position { line: 290, column: 58, }, end: Position { line: 290, column: 66, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 288, column: 6, }, end: Position { line: 291, column: 4, }, }, }, ), span: Span { start: Position { line: 286, column: 33, }, end: Position { line: 291, column: 4, }, }, }, ), span: Span { start: Position { line: 286, column: 25, }, end: Position { line: 291, column: 4, }, }, }, ), span: Span { start: Position { line: 286, column: 22, }, end: Position { line: 291, column: 4, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 291, column: 6, }, end: Position { line: 291, column: 9, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "zetup", span: Span { start: Position { line: 291, column: 10, }, end: Position { line: 291, column: 15, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 295, column: 3, }, end: Position { line: 295, column: 10, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 296, column: 5, }, end: Position { line: 296, column: 13, }, }, }, ), Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 296, column: 14, }, end: Position { line: 296, column: 22, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 297, column: 7, }, end: Position { line: 297, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 297, column: 16, }, end: Position { line: 297, column: 30, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 297, column: 32, }, end: Position { line: 297, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 297, column: 36, }, end: Position { line: 297, column: 41, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "ZnapZend ZFS backup daemon", span: Span { start: Position { line: 297, column: 43, }, end: Position { line: 297, column: 69, }, }, }, ), ], span: Span { start: Position { line: 297, column: 42, }, end: Position { line: 297, column: 70, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "logLevel", span: Span { start: Position { line: 299, column: 7, }, end: Position { line: 299, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 299, column: 18, }, end: Position { line: 299, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 300, column: 9, }, end: Position { line: 300, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "debug", span: Span { start: Position { line: 300, column: 20, }, end: Position { line: 300, column: 25, }, }, }, ), ], span: Span { start: Position { line: 300, column: 19, }, end: Position { line: 300, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 301, column: 9, }, end: Position { line: 301, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "warning", span: Span { start: Position { line: 301, column: 20, }, end: Position { line: 301, column: 27, }, }, }, ), ], span: Span { start: Position { line: 301, column: 19, }, end: Position { line: 301, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 302, column: 9, }, end: Position { line: 302, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "enum", span: Span { start: Position { line: 302, column: 16, }, end: Position { line: 302, column: 20, }, }, }, ), arguments: [ List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "debug", span: Span { start: Position { line: 302, column: 23, }, end: Position { line: 302, column: 28, }, }, }, ), ], span: Span { start: Position { line: 302, column: 22, }, end: Position { line: 302, column: 29, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "info", span: Span { start: Position { line: 302, column: 31, }, end: Position { line: 302, column: 35, }, }, }, ), ], span: Span { start: Position { line: 302, column: 30, }, end: Position { line: 302, column: 36, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "warning", span: Span { start: Position { line: 302, column: 38, }, end: Position { line: 302, column: 45, }, }, }, ), ], span: Span { start: Position { line: 302, column: 37, }, end: Position { line: 302, column: 46, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "err", span: Span { start: Position { line: 302, column: 48, }, end: Position { line: 302, column: 51, }, }, }, ), ], span: Span { start: Position { line: 302, column: 47, }, end: Position { line: 302, column: 52, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "alert", span: Span { start: Position { line: 302, column: 54, }, end: Position { line: 302, column: 59, }, }, }, ), ], span: Span { start: Position { line: 302, column: 53, }, end: Position { line: 302, column: 60, }, }, }, ), ], span: Span { start: Position { line: 302, column: 21, }, end: Position { line: 302, column: 61, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 303, column: 9, }, end: Position { line: 303, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 303, column: 23, }, end: Position { line: 303, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 303, column: 27, }, end: Position { line: 303, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The log level when logging to file. Any of debug, info, warning, err,\nalert. Default in daemonized form is debug.\n", span: Span { start: Position { line: 304, column: 1, }, end: Position { line: 306, column: 9, }, }, }, ), ], span: Span { start: Position { line: 303, column: 33, }, end: Position { line: 306, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 299, column: 27, }, end: Position { line: 307, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "logTo", span: Span { start: Position { line: 309, column: 7, }, end: Position { line: 309, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 309, column: 15, }, end: Position { line: 309, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 310, column: 9, }, end: Position { line: 310, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "str", span: Span { start: Position { line: 310, column: 16, }, end: Position { line: 310, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 311, column: 9, }, end: Position { line: 311, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "syslog::daemon", span: Span { start: Position { line: 311, column: 20, }, end: Position { line: 311, column: 34, }, }, }, ), ], span: Span { start: Position { line: 311, column: 19, }, end: Position { line: 311, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 312, column: 9, }, end: Position { line: 312, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/log/znapzend.log", span: Span { start: Position { line: 312, column: 20, }, end: Position { line: 312, column: 41, }, }, }, ), ], span: Span { start: Position { line: 312, column: 19, }, end: Position { line: 312, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 313, column: 9, }, end: Position { line: 313, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 313, column: 23, }, end: Position { line: 313, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 313, column: 27, }, end: Position { line: 313, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Where to log to (syslog::\\ or \\).\n", span: Span { start: Position { line: 314, column: 1, }, end: Position { line: 315, column: 9, }, }, }, ), ], span: Span { start: Position { line: 313, column: 33, }, end: Position { line: 315, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 309, column: 24, }, end: Position { line: 316, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "noDestroy", span: Span { start: Position { line: 318, column: 7, }, end: Position { line: 318, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 318, column: 19, }, end: Position { line: 318, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 319, column: 9, }, end: Position { line: 319, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 319, column: 16, }, end: Position { line: 319, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 320, column: 9, }, end: Position { line: 320, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 320, column: 19, }, end: Position { line: 320, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 321, column: 9, }, end: Position { line: 321, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 321, column: 23, }, end: Position { line: 321, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 321, column: 27, }, end: Position { line: 321, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Does all changes to the filesystem except destroy.", span: Span { start: Position { line: 321, column: 34, }, end: Position { line: 321, column: 84, }, }, }, ), ], span: Span { start: Position { line: 321, column: 33, }, end: Position { line: 321, column: 85, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 318, column: 28, }, end: Position { line: 322, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "autoCreation", span: Span { start: Position { line: 324, column: 7, }, end: Position { line: 324, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 324, column: 22, }, end: Position { line: 324, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 325, column: 9, }, end: Position { line: 325, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 325, column: 16, }, end: Position { line: 325, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 326, column: 9, }, end: Position { line: 326, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 326, column: 19, }, end: Position { line: 326, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 327, column: 9, }, end: Position { line: 327, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 327, column: 23, }, end: Position { line: 327, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 327, column: 27, }, end: Position { line: 327, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Automatically create the destination dataset if it does not exist.", span: Span { start: Position { line: 327, column: 34, }, end: Position { line: 327, column: 100, }, }, }, ), ], span: Span { start: Position { line: 327, column: 33, }, end: Position { line: 327, column: 101, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 324, column: 31, }, end: Position { line: 328, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "zetup", span: Span { start: Position { line: 330, column: 7, }, end: Position { line: 330, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 330, column: 15, }, end: Position { line: 330, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 331, column: 9, }, end: Position { line: 331, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrsOf", span: Span { start: Position { line: 331, column: 16, }, end: Position { line: 331, column: 23, }, }, }, ), arguments: [ Identifier( Identifier { id: "srcType", span: Span { start: Position { line: 331, column: 24, }, end: Position { line: 331, column: 31, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 332, column: 9, }, end: Position { line: 332, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 332, column: 23, }, end: Position { line: 332, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 332, column: 27, }, end: Position { line: 332, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Znapzend configuration.", span: Span { start: Position { line: 332, column: 34, }, end: Position { line: 332, column: 57, }, }, }, ), ], span: Span { start: Position { line: 332, column: 33, }, end: Position { line: 332, column: 58, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 333, column: 9, }, end: Position { line: 333, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 333, column: 19, }, end: Position { line: 333, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 334, column: 9, }, end: Position { line: 334, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 334, column: 19, }, end: Position { line: 334, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n \"tank/home\" = {\n # Make snapshots of tank/home every hour, keep those for 1 day,\n # keep every days snapshot for 1 month, etc.\n plan = \"1d=>1h,1m=>1d,1y=>1m\";\n recursive = true;\n # Send all those snapshots to john@example.com:rtank/john as well\n destinations.remote = {\n host = \"john@example.com\";\n dataset = \"rtank/john\";\n };\n };\n};\n", span: Span { start: Position { line: 335, column: 1, }, end: Position { line: 348, column: 9, }, }, }, ), ], span: Span { start: Position { line: 334, column: 37, }, end: Position { line: 348, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 330, column: 24, }, end: Position { line: 349, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pure", span: Span { start: Position { line: 351, column: 7, }, end: Position { line: 351, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 351, column: 14, }, end: Position { line: 351, column: 22, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 352, column: 9, }, end: Position { line: 352, column: 13, }, }, }, ), ], to: Identifier( Identifier { id: "bool", span: Span { start: Position { line: 352, column: 16, }, end: Position { line: 352, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 353, column: 9, }, end: Position { line: 353, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 353, column: 23, }, end: Position { line: 353, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 353, column: 27, }, end: Position { line: 353, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Do not persist any stateful znapzend setups. If this option is\nenabled, your previously set znapzend setups will be cleared and only\nthe ones defined with this module will be applied.\n", span: Span { start: Position { line: 354, column: 1, }, end: Position { line: 357, column: 9, }, }, }, ), ], span: Span { start: Position { line: 353, column: 33, }, end: Position { line: 357, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 358, column: 9, }, end: Position { line: 358, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 358, column: 19, }, end: Position { line: 358, column: 24, }, }, }, ), }, ), ], span: Span { start: Position { line: 351, column: 23, }, end: Position { line: 359, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 361, column: 7, }, end: Position { line: 361, column: 15, }, }, }, ), Raw( PartRaw { content: "oracleMode", span: Span { start: Position { line: 361, column: 16, }, end: Position { line: 361, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 361, column: 29, }, end: Position { line: 361, column: 43, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 361, column: 45, }, end: Position { line: 361, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 361, column: 49, }, end: Position { line: 361, column: 54, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Destroy snapshots one by one instead of using one long argument list.\nIf source and destination are out of sync for a long time, you may have\nso many snapshots to destroy that the argument gets is too long and the\ncommand fails.\n", span: Span { start: Position { line: 362, column: 1, }, end: Position { line: 366, column: 7, }, }, }, ), ], span: Span { start: Position { line: 361, column: 55, }, end: Position { line: 366, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 367, column: 7, }, end: Position { line: 367, column: 15, }, }, }, ), Raw( PartRaw { content: "recvu", span: Span { start: Position { line: 367, column: 16, }, end: Position { line: 367, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 367, column: 24, }, end: Position { line: 367, column: 38, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 367, column: 40, }, end: Position { line: 367, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 367, column: 44, }, end: Position { line: 367, column: 49, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "recvu feature which uses `-u` on the receiving end to keep the destination\nfilesystem unmounted.\n", span: Span { start: Position { line: 368, column: 1, }, end: Position { line: 370, column: 7, }, }, }, ), ], span: Span { start: Position { line: 367, column: 50, }, end: Position { line: 370, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 371, column: 7, }, end: Position { line: 371, column: 15, }, }, }, ), Raw( PartRaw { content: "compressed", span: Span { start: Position { line: 371, column: 16, }, end: Position { line: 371, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 371, column: 29, }, end: Position { line: 371, column: 43, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 371, column: 45, }, end: Position { line: 371, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 371, column: 49, }, end: Position { line: 371, column: 54, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "compressed feature which adds the options `-Lce` to\nthe {command}`zfs send` command. When this is enabled, make\nsure that both the sending and receiving pool have the same relevant\nfeatures enabled. Using `-c` will skip unneccessary\ndecompress-compress stages, `-L` is for large block\nsupport and -e is for embedded data support. see\n{manpage}`znapzend(1)`\nand {manpage}`zfs(8)`\nfor more info.\n", span: Span { start: Position { line: 372, column: 1, }, end: Position { line: 381, column: 7, }, }, }, ), ], span: Span { start: Position { line: 371, column: 55, }, end: Position { line: 381, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 382, column: 7, }, end: Position { line: 382, column: 15, }, }, }, ), Raw( PartRaw { content: "sendRaw", span: Span { start: Position { line: 382, column: 16, }, end: Position { line: 382, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 382, column: 26, }, end: Position { line: 382, column: 40, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 382, column: 42, }, end: Position { line: 382, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 382, column: 46, }, end: Position { line: 382, column: 51, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "sendRaw feature which adds the options `-w` to the\n{command}`zfs send` command. For encrypted source datasets this\ninstructs zfs not to decrypt before sending which results in a remote\nbackup that can't be read without the encryption key/passphrase, useful\nwhen the remote isn't fully trusted or not physically secure. This\noption must be used consistently, raw incrementals cannot be based on\nnon-raw snapshots and vice versa.\n", span: Span { start: Position { line: 383, column: 1, }, end: Position { line: 390, column: 7, }, }, }, ), ], span: Span { start: Position { line: 382, column: 52, }, end: Position { line: 390, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 391, column: 7, }, end: Position { line: 391, column: 15, }, }, }, ), Raw( PartRaw { content: "skipIntermediates", span: Span { start: Position { line: 391, column: 16, }, end: Position { line: 391, column: 33, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 391, column: 36, }, end: Position { line: 391, column: 50, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 391, column: 52, }, end: Position { line: 391, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 391, column: 56, }, end: Position { line: 391, column: 61, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Enable the skipIntermediates feature to send a single increment\nbetween latest common snapshot and the newly made one. It may skip\nseveral source snaps if the destination was offline for some time, and\nit should skip snapshots not managed by znapzend. Normally for online\ndestinations, the new snapshot is sent as soon as it is created on the\nsource, so there are no automatic increments to skip.\n", span: Span { start: Position { line: 392, column: 1, }, end: Position { line: 398, column: 7, }, }, }, ), ], span: Span { start: Position { line: 391, column: 62, }, end: Position { line: 398, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 399, column: 7, }, end: Position { line: 399, column: 15, }, }, }, ), Raw( PartRaw { content: "lowmemRecurse", span: Span { start: Position { line: 399, column: 16, }, end: Position { line: 399, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 399, column: 32, }, end: Position { line: 399, column: 46, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 399, column: 48, }, end: Position { line: 399, column: 51, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 399, column: 52, }, end: Position { line: 399, column: 57, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "use lowmemRecurse on systems where you have too many datasets, so a\nrecursive listing of attributes to find backup plans exhausts the\nmemory available to {command}`znapzend`: instead, go the slower\nway to first list all impacted dataset names, and then query their\nconfigs one by one.\n", span: Span { start: Position { line: 400, column: 1, }, end: Position { line: 405, column: 7, }, }, }, ), ], span: Span { start: Position { line: 399, column: 58, }, end: Position { line: 405, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "features", span: Span { start: Position { line: 406, column: 7, }, end: Position { line: 406, column: 15, }, }, }, ), Raw( PartRaw { content: "zfsGetType", span: Span { start: Position { line: 406, column: 16, }, end: Position { line: 406, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 406, column: 29, }, end: Position { line: 406, column: 43, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 406, column: 45, }, end: Position { line: 406, column: 48, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 406, column: 49, }, end: Position { line: 406, column: 54, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "use zfsGetType if your {command}`zfs get` supports a\n`-t` argument for filtering by dataset type at all AND\nlists properties for snapshots by default when recursing, so that there\nis too much data to process while searching for backup plans.\nIf these two conditions apply to your system, the time needed for a\n`--recursive` search for backup plans can literally\ndiffer by hundreds of times (depending on the amount of snapshots in\nthat dataset tree... and a decent backup plan will ensure you have a lot\nof those), so you would benefit from requesting this feature.\n", span: Span { start: Position { line: 407, column: 1, }, end: Position { line: 416, column: 7, }, }, }, ), ], span: Span { start: Position { line: 406, column: 55, }, end: Position { line: 416, column: 9, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 296, column: 25, }, end: Position { line: 417, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 295, column: 13, }, end: Position { line: 418, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 420, column: 3, }, end: Position { line: 420, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 420, column: 12, }, end: Position { line: 420, column: 16, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 420, column: 17, }, end: Position { line: 420, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 420, column: 21, }, end: Position { line: 420, column: 27, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 421, column: 5, }, end: Position { line: 421, column: 16, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 421, column: 17, }, end: Position { line: 421, column: 31, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 421, column: 36, }, end: Position { line: 421, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 421, column: 41, }, end: Position { line: 421, column: 49, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 421, column: 34, }, end: Position { line: 421, column: 51, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 423, column: 5, }, end: Position { line: 423, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 423, column: 13, }, end: Position { line: 423, column: 21, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 424, column: 7, }, end: Position { line: 424, column: 15, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 425, column: 9, }, end: Position { line: 425, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "ZnapZend - ZFS Backup System", span: Span { start: Position { line: 425, column: 24, }, end: Position { line: 425, column: 52, }, }, }, ), ], span: Span { start: Position { line: 425, column: 23, }, end: Position { line: 425, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 426, column: 9, }, end: Position { line: 426, column: 17, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "zfs.target", span: Span { start: Position { line: 426, column: 26, }, end: Position { line: 426, column: 36, }, }, }, ), ], span: Span { start: Position { line: 426, column: 25, }, end: Position { line: 426, column: 37, }, }, }, ), ], span: Span { start: Position { line: 426, column: 23, }, end: Position { line: 426, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 427, column: 9, }, end: Position { line: 427, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "zfs.target", span: Span { start: Position { line: 427, column: 26, }, end: Position { line: 427, column: 36, }, }, }, ), ], span: Span { start: Position { line: 427, column: 25, }, end: Position { line: 427, column: 37, }, }, }, ), ], span: Span { start: Position { line: 427, column: 23, }, end: Position { line: 427, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 429, column: 9, }, end: Position { line: 429, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 429, column: 21, }, end: Position { line: 429, column: 25, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "zfs", span: Span { start: Position { line: 429, column: 29, }, end: Position { line: 429, column: 32, }, }, }, ), Identifier( Identifier { id: "mbuffer", span: Span { start: Position { line: 429, column: 33, }, end: Position { line: 429, column: 40, }, }, }, ), Identifier( Identifier { id: "openssh", span: Span { start: Position { line: 429, column: 41, }, end: Position { line: 429, column: 48, }, }, }, ), ], span: Span { start: Position { line: 429, column: 27, }, end: Position { line: 429, column: 50, }, }, }, ), span: Span { start: Position { line: 429, column: 16, }, end: Position { line: 429, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preStart", span: Span { start: Position { line: 431, column: 9, }, end: Position { line: 431, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 431, column: 20, }, end: Position { line: 431, column: 34, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 431, column: 35, }, end: Position { line: 431, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pure", span: Span { start: Position { line: 431, column: 39, }, end: Position { line: 431, column: 43, }, }, }, ), ], default: None, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "echo Resetting znapzend zetups\n", span: Span { start: Position { line: 432, column: 1, }, end: Position { line: 433, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 433, column: 13, }, end: Position { line: 433, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 433, column: 18, }, end: Position { line: 433, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/znapzendzetup list \\\n | grep -oP '(?<=\\*\\*\\* backup plan: ).*(?= \\*\\*\\*)' \\\n | xargs -I{} ", span: Span { start: Position { line: 432, column: 1, }, end: Position { line: 435, column: 26, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 435, column: 28, }, end: Position { line: 435, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 435, column: 33, }, end: Position { line: 435, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/znapzendzetup delete \"{}\"\n", span: Span { start: Position { line: 432, column: 1, }, end: Position { line: 436, column: 9, }, }, }, ), ], span: Span { start: Position { line: 431, column: 44, }, end: Position { line: 436, column: 11, }, }, }, ), ], }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 436, column: 14, }, end: Position { line: 436, column: 30, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 436, column: 32, }, end: Position { line: 436, column: 34, }, }, }, ), ], span: Span { start: Position { line: 436, column: 31, }, end: Position { line: 436, column: 35, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mapAttrsToList", span: Span { start: Position { line: 436, column: 37, }, end: Position { line: 436, column: 51, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "dataset", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "config", }, ), body: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "echo Importing znapzend zetup ", span: Span { start: Position { line: 437, column: 1, }, end: Position { line: 437, column: 41, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 437, column: 43, }, end: Position { line: 437, column: 49, }, }, }, ), }, ), Raw( PartRaw { content: " for dataset ", span: Span { start: Position { line: 437, column: 1, }, end: Position { line: 437, column: 63, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "dataset", span: Span { start: Position { line: 437, column: 65, }, end: Position { line: 437, column: 72, }, }, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 437, column: 1, }, end: Position { line: 438, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 438, column: 13, }, end: Position { line: 438, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 438, column: 18, }, end: Position { line: 438, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/znapzendzetup import --write ", span: Span { start: Position { line: 437, column: 1, }, end: Position { line: 438, column: 61, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "dataset", span: Span { start: Position { line: 438, column: 63, }, end: Position { line: 438, column: 70, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 437, column: 1, }, end: Position { line: 438, column: 72, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 438, column: 74, }, end: Position { line: 438, column: 80, }, }, }, ), }, ), Raw( PartRaw { content: " &\n", span: Span { start: Position { line: 437, column: 1, }, end: Position { line: 439, column: 9, }, }, }, ), ], span: Span { start: Position { line: 436, column: 70, }, end: Position { line: 439, column: 11, }, }, }, ), span: Span { start: Position { line: 436, column: 62, }, end: Position { line: 439, column: 11, }, }, }, ), span: Span { start: Position { line: 436, column: 53, }, end: Position { line: 439, column: 11, }, }, }, ), Identifier( Identifier { id: "files", span: Span { start: Position { line: 439, column: 13, }, end: Position { line: 439, column: 18, }, }, }, ), ], }, ), ], }, ), }, ), operator: Addition, right: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "wait\n", span: Span { start: Position { line: 440, column: 1, }, end: Position { line: 441, column: 9, }, }, }, ), ], span: Span { start: Position { line: 439, column: 22, }, end: Position { line: 441, column: 11, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 443, column: 9, }, end: Position { line: 443, column: 22, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "TimeoutStartSec", span: Span { start: Position { line: 449, column: 11, }, end: Position { line: 449, column: 26, }, }, }, ), ], to: Integer( Integer { value: "180", span: Span { start: Position { line: 449, column: 29, }, end: Position { line: 449, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 451, column: 11, }, end: Position { line: 451, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "root", span: Span { start: Position { line: 451, column: 19, }, end: Position { line: 451, column: 23, }, }, }, ), ], span: Span { start: Position { line: 451, column: 18, }, end: Position { line: 451, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 452, column: 11, }, end: Position { line: 452, column: 20, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "args", span: Span { start: Position { line: 453, column: 13, }, end: Position { line: 453, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 453, column: 20, }, end: Position { line: 453, column: 36, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 453, column: 38, }, end: Position { line: 453, column: 39, }, }, }, ), ], span: Span { start: Position { line: 453, column: 37, }, end: Position { line: 453, column: 40, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "--logto=", span: Span { start: Position { line: 454, column: 16, }, end: Position { line: 454, column: 36, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 454, column: 26, }, end: Position { line: 454, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logTo", span: Span { start: Position { line: 454, column: 30, }, end: Position { line: 454, column: 35, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 454, column: 15, }, end: Position { line: 454, column: 37, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--loglevel=", span: Span { start: Position { line: 455, column: 16, }, end: Position { line: 455, column: 42, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 455, column: 29, }, end: Position { line: 455, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logLevel", span: Span { start: Position { line: 455, column: 33, }, end: Position { line: 455, column: 41, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 455, column: 15, }, end: Position { line: 455, column: 43, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 456, column: 16, }, end: Position { line: 456, column: 30, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 456, column: 31, }, end: Position { line: 456, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "noDestroy", span: Span { start: Position { line: 456, column: 35, }, end: Position { line: 456, column: 44, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--nodestroy", span: Span { start: Position { line: 456, column: 46, }, end: Position { line: 456, column: 57, }, }, }, ), ], span: Span { start: Position { line: 456, column: 45, }, end: Position { line: 456, column: 58, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 457, column: 16, }, end: Position { line: 457, column: 30, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 457, column: 31, }, end: Position { line: 457, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "autoCreation", span: Span { start: Position { line: 457, column: 35, }, end: Position { line: 457, column: 47, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--autoCreation", span: Span { start: Position { line: 457, column: 49, }, end: Position { line: 457, column: 63, }, }, }, ), ], span: Span { start: Position { line: 457, column: 48, }, end: Position { line: 457, column: 64, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 458, column: 16, }, end: Position { line: 458, column: 30, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "enabledFeatures", span: Span { start: Position { line: 458, column: 32, }, end: Position { line: 458, column: 47, }, }, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 458, column: 51, }, end: Position { line: 458, column: 53, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "--features=", span: Span { start: Position { line: 459, column: 18, }, end: Position { line: 459, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 459, column: 31, }, end: Position { line: 459, column: 47, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ",", span: Span { start: Position { line: 459, column: 49, }, end: Position { line: 459, column: 50, }, }, }, ), ], span: Span { start: Position { line: 459, column: 48, }, end: Position { line: 459, column: 51, }, }, }, ), Identifier( Identifier { id: "enabledFeatures", span: Span { start: Position { line: 459, column: 52, }, end: Position { line: 459, column: 67, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 459, column: 17, }, end: Position { line: 459, column: 69, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 453, column: 41, }, end: Position { line: 460, column: 14, }, }, }, ), ], }, ), }, ), ], target: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 460, column: 22, }, end: Position { line: 460, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "znapzend", span: Span { start: Position { line: 460, column: 27, }, end: Position { line: 460, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/znapzend ", span: Span { start: Position { line: 460, column: 20, }, end: Position { line: 460, column: 50, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "args", span: Span { start: Position { line: 460, column: 52, }, end: Position { line: 460, column: 56, }, }, }, ), }, ), ], span: Span { start: Position { line: 460, column: 19, }, end: Position { line: 460, column: 58, }, }, }, ), span: Span { start: Position { line: 452, column: 23, }, end: Position { line: 460, column: 58, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecReload", span: Span { start: Position { line: 461, column: 11, }, end: Position { line: 461, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 461, column: 27, }, end: Position { line: 461, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "coreutils", span: Span { start: Position { line: 461, column: 32, }, end: Position { line: 461, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/kill -HUP $MAINPID", span: Span { start: Position { line: 461, column: 25, }, end: Position { line: 461, column: 65, }, }, }, ), ], span: Span { start: Position { line: 461, column: 24, }, end: Position { line: 461, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Restart", span: Span { start: Position { line: 462, column: 11, }, end: Position { line: 462, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "on-failure", span: Span { start: Position { line: 462, column: 22, }, end: Position { line: 462, column: 32, }, }, }, ), ], span: Span { start: Position { line: 462, column: 21, }, end: Position { line: 462, column: 33, }, }, }, ), }, ), ], span: Span { start: Position { line: 443, column: 25, }, end: Position { line: 463, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 424, column: 18, }, end: Position { line: 464, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 423, column: 24, }, end: Position { line: 465, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 420, column: 28, }, end: Position { line: 466, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "meta", span: Span { start: Position { line: 468, column: 3, }, end: Position { line: 468, column: 7, }, }, }, ), Raw( PartRaw { content: "maintainers", span: Span { start: Position { line: 468, column: 8, }, end: Position { line: 468, column: 19, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "maintainers", span: Span { start: Position { line: 468, column: 27, }, end: Position { line: 468, column: 38, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "infinisil", span: Span { start: Position { line: 468, column: 42, }, end: Position { line: 468, column: 51, }, }, }, ), Identifier( Identifier { id: "SlothOfAnarchy", span: Span { start: Position { line: 468, column: 52, }, end: Position { line: 468, column: 66, }, }, }, ), ], span: Span { start: Position { line: 468, column: 40, }, end: Position { line: 468, column: 68, }, }, }, ), span: Span { start: Position { line: 468, column: 22, }, end: Position { line: 468, column: 68, }, }, }, ), }, ), ], span: Span { start: Position { line: 294, column: 1, }, end: Position { line: 469, column: 2, }, }, }, ), span: Span { start: Position { line: 6, column: 1, }, end: Position { line: 469, column: 2, }, }, }, ), span: Span { start: Position { line: 4, column: 1, }, end: Position { line: 469, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 469, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 469, column: 2, }, }, }, )