diff --git a/assets/swagger.json b/assets/swagger.json index c155555315d97..8a403211454ec 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -6251,6 +6251,13 @@ "directory": { "$ref": "#/definitions/v1alpha1ApplicationSourceDirectory" }, + "from": { + "description": "From is a list of filesystem objects that is to be copied into this source's tree. Only used within a `sources` tag.", + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CopyFromSpec" + } + }, "helm": { "$ref": "#/definitions/v1alpha1ApplicationSourceHelm" }, @@ -6987,6 +6994,24 @@ } } }, + "v1alpha1CopyFromSpec": { + "type": "object", + "title": "CopyFromSpec defines a copy declaration from another source into this one", + "properties": { + "destinationPath": { + "description": "DestinationPath is the destination directory at the current repository where the object will be copied to.", + "type": "string" + }, + "failOnOutOfBoundsSymlink": { + "type": "boolean", + "title": "FailOnOutOfBoundsSymlink mode makes the complete operation error out if a single symlink is out-of-bound within the subtree" + }, + "sourcePath": { + "type": "string", + "title": "SourcePath is the path from the Ref'd repository, the source of the copy operation.\nIt's syntax is matching helmValue's, $ref/path" + } + } + }, "v1alpha1DuckTypeGenerator": { "description": "DuckType defines a generator to match against clusters registered with ArgoCD.", "type": "object", diff --git a/manifests/core-install.yaml b/manifests/core-install.yaml index 3cbaa4946e3cc..b8ebf36055be3 100644 --- a/manifests/core-install.yaml +++ b/manifests/core-install.yaml @@ -223,6 +223,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within a + `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be + copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink is + out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -559,6 +587,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1017,6 +1073,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to be + copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from another + source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1344,6 +1428,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to + be copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1836,6 +1948,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2175,6 +2315,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2658,6 +2826,34 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. Only + used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3016,6 +3212,36 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. + Only used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode + makes the complete operation error out if + a single symlink is out-of-bound within + the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy + operation. It's syntax is matching helmValue's, + $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3499,6 +3725,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3848,6 +4102,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4350,6 +4632,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4699,6 +5009,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -5198,6 +5536,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5414,6 +5766,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5789,6 +6155,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6005,6 +6385,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6384,6 +6778,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6600,6 +7008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6959,6 +7381,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7175,6 +7611,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7558,6 +8008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7774,6 +8238,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8149,6 +8627,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8365,6 +8857,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8744,6 +9250,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8960,6 +9480,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9319,6 +9853,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9535,6 +10083,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9904,6 +10466,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10120,6 +10696,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10669,6 +11259,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10885,6 +11489,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11429,6 +12047,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11645,6 +12277,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12018,6 +12664,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12234,6 +12894,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12617,6 +13291,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12833,6 +13521,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13208,6 +13910,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13424,6 +14140,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13803,6 +14533,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14019,6 +14763,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14378,6 +15136,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14594,6 +15366,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14963,6 +15749,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15179,6 +15979,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15728,6 +16542,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15944,6 +16772,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -16488,6 +17330,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -16704,6 +17560,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17081,6 +17951,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17297,6 +18181,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17663,6 +18561,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17879,6 +18791,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -18428,6 +19354,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -18644,6 +19584,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19188,6 +20142,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19404,6 +20372,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19852,6 +20834,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -20068,6 +21064,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: diff --git a/manifests/crds/application-crd.yaml b/manifests/crds/application-crd.yaml index aaf1347f64dfb..97ac8f2c8eaaf 100644 --- a/manifests/crds/application-crd.yaml +++ b/manifests/crds/application-crd.yaml @@ -222,6 +222,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within a + `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be + copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink is + out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -558,6 +586,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1016,6 +1072,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to be + copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from another + source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1343,6 +1427,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to + be copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1835,6 +1947,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2174,6 +2314,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2657,6 +2825,34 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. Only + used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3015,6 +3211,36 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. + Only used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode + makes the complete operation error out if + a single symlink is out-of-bound within + the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy + operation. It's syntax is matching helmValue's, + $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3498,6 +3724,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3847,6 +4101,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4349,6 +4631,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4698,6 +5008,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: diff --git a/manifests/crds/applicationset-crd.yaml b/manifests/crds/applicationset-crd.yaml index 8d4fbb5c748fa..550d27412da0c 100644 --- a/manifests/crds/applicationset-crd.yaml +++ b/manifests/crds/applicationset-crd.yaml @@ -190,6 +190,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -406,6 +420,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -781,6 +809,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -997,6 +1039,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -1376,6 +1432,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -1592,6 +1662,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -1951,6 +2035,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -2167,6 +2265,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -2550,6 +2662,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -2766,6 +2892,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -3141,6 +3281,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -3357,6 +3511,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -3736,6 +3904,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -3952,6 +4134,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -4311,6 +4507,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -4527,6 +4737,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -4896,6 +5120,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5112,6 +5350,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5661,6 +5913,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5877,6 +6143,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6421,6 +6701,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6637,6 +6931,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7010,6 +7318,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7226,6 +7548,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7609,6 +7945,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7825,6 +8175,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8200,6 +8564,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8416,6 +8794,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8795,6 +9187,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9011,6 +9417,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9370,6 +9790,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9586,6 +10020,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9955,6 +10403,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10171,6 +10633,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10720,6 +11196,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10936,6 +11426,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11480,6 +11984,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11696,6 +12214,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12073,6 +12605,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12289,6 +12835,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12655,6 +13215,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12871,6 +13445,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13420,6 +14008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13636,6 +14238,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14180,6 +14796,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14396,6 +15026,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14844,6 +15488,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15060,6 +15718,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index 322d9534a8371..ff283884cf57b 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -223,6 +223,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within a + `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be + copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink is + out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -559,6 +587,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1017,6 +1073,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to be + copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from another + source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1344,6 +1428,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to + be copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1836,6 +1948,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2175,6 +2315,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2658,6 +2826,34 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. Only + used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3016,6 +3212,36 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. + Only used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode + makes the complete operation error out if + a single symlink is out-of-bound within + the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy + operation. It's syntax is matching helmValue's, + $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3499,6 +3725,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3848,6 +4102,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4350,6 +4632,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4699,6 +5009,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -5198,6 +5536,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5414,6 +5766,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5789,6 +6155,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6005,6 +6385,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6384,6 +6778,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6600,6 +7008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6959,6 +7381,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7175,6 +7611,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7558,6 +8008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7774,6 +8238,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8149,6 +8627,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8365,6 +8857,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8744,6 +9250,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8960,6 +9480,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9319,6 +9853,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9535,6 +10083,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9904,6 +10466,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10120,6 +10696,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10669,6 +11259,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10885,6 +11489,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11429,6 +12047,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11645,6 +12277,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12018,6 +12664,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12234,6 +12894,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12617,6 +13291,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12833,6 +13521,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13208,6 +13910,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13424,6 +14140,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13803,6 +14533,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14019,6 +14763,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14378,6 +15136,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14594,6 +15366,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14963,6 +15749,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15179,6 +15979,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15728,6 +16542,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15944,6 +16772,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -16488,6 +17330,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -16704,6 +17560,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17081,6 +17951,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17297,6 +18181,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17663,6 +18561,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17879,6 +18791,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -18428,6 +19354,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -18644,6 +19584,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19188,6 +20142,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19404,6 +20372,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19852,6 +20834,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -20068,6 +21064,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: diff --git a/manifests/install.yaml b/manifests/install.yaml index 8da7f4c8306b4..022db8cde8b12 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -223,6 +223,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within a + `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be + copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink is + out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -559,6 +587,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1017,6 +1073,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to be + copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from another + source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1344,6 +1428,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is to + be copied into this source's tree. Only used within a `sources` + tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will be copied + to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the complete + operation error out if a single symlink is out-of-bound + within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd repository, + the source of the copy operation. It's syntax is matching + helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -1836,6 +1948,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that is + to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration from + another source into this one + properties: + destinationPath: + description: DestinationPath is the destination directory + at the current repository where the object will + be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes the + complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. It's + syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2175,6 +2315,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -2658,6 +2826,34 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. Only + used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3016,6 +3212,36 @@ spec: a directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects + that is to be copied into this source's tree. + Only used within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where + the object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode + makes the complete operation error out if + a single symlink is out-of-bound within + the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the + Ref'd repository, the source of the copy + operation. It's syntax is matching helmValue's, + $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3499,6 +3725,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -3848,6 +4102,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4350,6 +4632,34 @@ spec: recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used within + a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single symlink + is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -4699,6 +5009,34 @@ spec: directory recursively for manifests type: boolean type: object + from: + description: From is a list of filesystem objects that + is to be copied into this source's tree. Only used + within a `sources` tag. + items: + description: CopyFromSpec defines a copy declaration + from another source into this one + properties: + destinationPath: + description: DestinationPath is the destination + directory at the current repository where the + object will be copied to. + type: string + failOnOutOfBoundsSymlink: + description: FailOnOutOfBoundsSymlink mode makes + the complete operation error out if a single + symlink is out-of-bound within the subtree + type: boolean + sourcePath: + description: SourcePath is the path from the Ref'd + repository, the source of the copy operation. + It's syntax is matching helmValue's, $ref/path + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: description: Helm holds helm specific options properties: @@ -5198,6 +5536,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5414,6 +5766,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -5789,6 +6155,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6005,6 +6385,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6384,6 +6778,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6600,6 +7008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -6959,6 +7381,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7175,6 +7611,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7558,6 +8008,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -7774,6 +8238,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8149,6 +8627,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8365,6 +8857,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8744,6 +9250,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -8960,6 +9480,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9319,6 +9853,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9535,6 +10083,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -9904,6 +10466,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10120,6 +10696,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10669,6 +11259,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -10885,6 +11489,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11429,6 +12047,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -11645,6 +12277,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12018,6 +12664,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12234,6 +12894,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12617,6 +13291,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -12833,6 +13521,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13208,6 +13910,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13424,6 +14140,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -13803,6 +14533,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14019,6 +14763,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14378,6 +15136,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14594,6 +15366,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -14963,6 +15749,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15179,6 +15979,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15728,6 +16542,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -15944,6 +16772,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -16488,6 +17330,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -16704,6 +17560,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17081,6 +17951,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17297,6 +18181,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17663,6 +18561,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -17879,6 +18791,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -18428,6 +19354,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -18644,6 +19584,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19188,6 +20142,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19404,6 +20372,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -19852,6 +20834,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: @@ -20068,6 +21064,20 @@ spec: recurse: type: boolean type: object + from: + items: + properties: + destinationPath: + type: string + failOnOutOfBoundsSymlink: + type: boolean + sourcePath: + type: string + required: + - destinationPath + - sourcePath + type: object + type: array helm: properties: fileParameters: diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index f6a253d23ed7d..6435611366646 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -1553,10 +1553,38 @@ func (m *ConnectionState) XXX_DiscardUnknown() { var xxx_messageInfo_ConnectionState proto.InternalMessageInfo +func (m *CopyFromSpec) Reset() { *m = CopyFromSpec{} } +func (*CopyFromSpec) ProtoMessage() {} +func (*CopyFromSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_030104ce3b95bcac, []int{54} +} +func (m *CopyFromSpec) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CopyFromSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *CopyFromSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_CopyFromSpec.Merge(m, src) +} +func (m *CopyFromSpec) XXX_Size() int { + return m.Size() +} +func (m *CopyFromSpec) XXX_DiscardUnknown() { + xxx_messageInfo_CopyFromSpec.DiscardUnknown(m) +} + +var xxx_messageInfo_CopyFromSpec proto.InternalMessageInfo + func (m *DuckTypeGenerator) Reset() { *m = DuckTypeGenerator{} } func (*DuckTypeGenerator) ProtoMessage() {} func (*DuckTypeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{54} + return fileDescriptor_030104ce3b95bcac, []int{55} } func (m *DuckTypeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1584,7 +1612,7 @@ var xxx_messageInfo_DuckTypeGenerator proto.InternalMessageInfo func (m *EnvEntry) Reset() { *m = EnvEntry{} } func (*EnvEntry) ProtoMessage() {} func (*EnvEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{55} + return fileDescriptor_030104ce3b95bcac, []int{56} } func (m *EnvEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1612,7 +1640,7 @@ var xxx_messageInfo_EnvEntry proto.InternalMessageInfo func (m *ExecProviderConfig) Reset() { *m = ExecProviderConfig{} } func (*ExecProviderConfig) ProtoMessage() {} func (*ExecProviderConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{56} + return fileDescriptor_030104ce3b95bcac, []int{57} } func (m *ExecProviderConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1640,7 +1668,7 @@ var xxx_messageInfo_ExecProviderConfig proto.InternalMessageInfo func (m *GitDirectoryGeneratorItem) Reset() { *m = GitDirectoryGeneratorItem{} } func (*GitDirectoryGeneratorItem) ProtoMessage() {} func (*GitDirectoryGeneratorItem) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{57} + return fileDescriptor_030104ce3b95bcac, []int{58} } func (m *GitDirectoryGeneratorItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1668,7 +1696,7 @@ var xxx_messageInfo_GitDirectoryGeneratorItem proto.InternalMessageInfo func (m *GitFileGeneratorItem) Reset() { *m = GitFileGeneratorItem{} } func (*GitFileGeneratorItem) ProtoMessage() {} func (*GitFileGeneratorItem) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{58} + return fileDescriptor_030104ce3b95bcac, []int{59} } func (m *GitFileGeneratorItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1696,7 +1724,7 @@ var xxx_messageInfo_GitFileGeneratorItem proto.InternalMessageInfo func (m *GitGenerator) Reset() { *m = GitGenerator{} } func (*GitGenerator) ProtoMessage() {} func (*GitGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{59} + return fileDescriptor_030104ce3b95bcac, []int{60} } func (m *GitGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1724,7 +1752,7 @@ var xxx_messageInfo_GitGenerator proto.InternalMessageInfo func (m *GnuPGPublicKey) Reset() { *m = GnuPGPublicKey{} } func (*GnuPGPublicKey) ProtoMessage() {} func (*GnuPGPublicKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{60} + return fileDescriptor_030104ce3b95bcac, []int{61} } func (m *GnuPGPublicKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1752,7 +1780,7 @@ var xxx_messageInfo_GnuPGPublicKey proto.InternalMessageInfo func (m *GnuPGPublicKeyList) Reset() { *m = GnuPGPublicKeyList{} } func (*GnuPGPublicKeyList) ProtoMessage() {} func (*GnuPGPublicKeyList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{61} + return fileDescriptor_030104ce3b95bcac, []int{62} } func (m *GnuPGPublicKeyList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1780,7 +1808,7 @@ var xxx_messageInfo_GnuPGPublicKeyList proto.InternalMessageInfo func (m *HealthStatus) Reset() { *m = HealthStatus{} } func (*HealthStatus) ProtoMessage() {} func (*HealthStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{62} + return fileDescriptor_030104ce3b95bcac, []int{63} } func (m *HealthStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1808,7 +1836,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo func (m *HelmFileParameter) Reset() { *m = HelmFileParameter{} } func (*HelmFileParameter) ProtoMessage() {} func (*HelmFileParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{63} + return fileDescriptor_030104ce3b95bcac, []int{64} } func (m *HelmFileParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1836,7 +1864,7 @@ var xxx_messageInfo_HelmFileParameter proto.InternalMessageInfo func (m *HelmOptions) Reset() { *m = HelmOptions{} } func (*HelmOptions) ProtoMessage() {} func (*HelmOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{64} + return fileDescriptor_030104ce3b95bcac, []int{65} } func (m *HelmOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1864,7 +1892,7 @@ var xxx_messageInfo_HelmOptions proto.InternalMessageInfo func (m *HelmParameter) Reset() { *m = HelmParameter{} } func (*HelmParameter) ProtoMessage() {} func (*HelmParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{65} + return fileDescriptor_030104ce3b95bcac, []int{66} } func (m *HelmParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1892,7 +1920,7 @@ var xxx_messageInfo_HelmParameter proto.InternalMessageInfo func (m *HostInfo) Reset() { *m = HostInfo{} } func (*HostInfo) ProtoMessage() {} func (*HostInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{66} + return fileDescriptor_030104ce3b95bcac, []int{67} } func (m *HostInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1920,7 +1948,7 @@ var xxx_messageInfo_HostInfo proto.InternalMessageInfo func (m *HostResourceInfo) Reset() { *m = HostResourceInfo{} } func (*HostResourceInfo) ProtoMessage() {} func (*HostResourceInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{67} + return fileDescriptor_030104ce3b95bcac, []int{68} } func (m *HostResourceInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1948,7 +1976,7 @@ var xxx_messageInfo_HostResourceInfo proto.InternalMessageInfo func (m *Info) Reset() { *m = Info{} } func (*Info) ProtoMessage() {} func (*Info) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{68} + return fileDescriptor_030104ce3b95bcac, []int{69} } func (m *Info) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1976,7 +2004,7 @@ var xxx_messageInfo_Info proto.InternalMessageInfo func (m *InfoItem) Reset() { *m = InfoItem{} } func (*InfoItem) ProtoMessage() {} func (*InfoItem) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{69} + return fileDescriptor_030104ce3b95bcac, []int{70} } func (m *InfoItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2004,7 +2032,7 @@ var xxx_messageInfo_InfoItem proto.InternalMessageInfo func (m *JWTToken) Reset() { *m = JWTToken{} } func (*JWTToken) ProtoMessage() {} func (*JWTToken) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{70} + return fileDescriptor_030104ce3b95bcac, []int{71} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2032,7 +2060,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo func (m *JWTTokens) Reset() { *m = JWTTokens{} } func (*JWTTokens) ProtoMessage() {} func (*JWTTokens) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{71} + return fileDescriptor_030104ce3b95bcac, []int{72} } func (m *JWTTokens) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2060,7 +2088,7 @@ var xxx_messageInfo_JWTTokens proto.InternalMessageInfo func (m *JsonnetVar) Reset() { *m = JsonnetVar{} } func (*JsonnetVar) ProtoMessage() {} func (*JsonnetVar) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{72} + return fileDescriptor_030104ce3b95bcac, []int{73} } func (m *JsonnetVar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2088,7 +2116,7 @@ var xxx_messageInfo_JsonnetVar proto.InternalMessageInfo func (m *KnownTypeField) Reset() { *m = KnownTypeField{} } func (*KnownTypeField) ProtoMessage() {} func (*KnownTypeField) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{73} + return fileDescriptor_030104ce3b95bcac, []int{74} } func (m *KnownTypeField) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2116,7 +2144,7 @@ var xxx_messageInfo_KnownTypeField proto.InternalMessageInfo func (m *KustomizeGvk) Reset() { *m = KustomizeGvk{} } func (*KustomizeGvk) ProtoMessage() {} func (*KustomizeGvk) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{74} + return fileDescriptor_030104ce3b95bcac, []int{75} } func (m *KustomizeGvk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2144,7 +2172,7 @@ var xxx_messageInfo_KustomizeGvk proto.InternalMessageInfo func (m *KustomizeOptions) Reset() { *m = KustomizeOptions{} } func (*KustomizeOptions) ProtoMessage() {} func (*KustomizeOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{75} + return fileDescriptor_030104ce3b95bcac, []int{76} } func (m *KustomizeOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2172,7 +2200,7 @@ var xxx_messageInfo_KustomizeOptions proto.InternalMessageInfo func (m *KustomizePatch) Reset() { *m = KustomizePatch{} } func (*KustomizePatch) ProtoMessage() {} func (*KustomizePatch) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{76} + return fileDescriptor_030104ce3b95bcac, []int{77} } func (m *KustomizePatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2200,7 +2228,7 @@ var xxx_messageInfo_KustomizePatch proto.InternalMessageInfo func (m *KustomizeReplica) Reset() { *m = KustomizeReplica{} } func (*KustomizeReplica) ProtoMessage() {} func (*KustomizeReplica) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{77} + return fileDescriptor_030104ce3b95bcac, []int{78} } func (m *KustomizeReplica) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2228,7 +2256,7 @@ var xxx_messageInfo_KustomizeReplica proto.InternalMessageInfo func (m *KustomizeResId) Reset() { *m = KustomizeResId{} } func (*KustomizeResId) ProtoMessage() {} func (*KustomizeResId) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{78} + return fileDescriptor_030104ce3b95bcac, []int{79} } func (m *KustomizeResId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2256,7 +2284,7 @@ var xxx_messageInfo_KustomizeResId proto.InternalMessageInfo func (m *KustomizeSelector) Reset() { *m = KustomizeSelector{} } func (*KustomizeSelector) ProtoMessage() {} func (*KustomizeSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{79} + return fileDescriptor_030104ce3b95bcac, []int{80} } func (m *KustomizeSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2284,7 +2312,7 @@ var xxx_messageInfo_KustomizeSelector proto.InternalMessageInfo func (m *ListGenerator) Reset() { *m = ListGenerator{} } func (*ListGenerator) ProtoMessage() {} func (*ListGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{80} + return fileDescriptor_030104ce3b95bcac, []int{81} } func (m *ListGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2312,7 +2340,7 @@ var xxx_messageInfo_ListGenerator proto.InternalMessageInfo func (m *ManagedNamespaceMetadata) Reset() { *m = ManagedNamespaceMetadata{} } func (*ManagedNamespaceMetadata) ProtoMessage() {} func (*ManagedNamespaceMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{81} + return fileDescriptor_030104ce3b95bcac, []int{82} } func (m *ManagedNamespaceMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2340,7 +2368,7 @@ var xxx_messageInfo_ManagedNamespaceMetadata proto.InternalMessageInfo func (m *MatrixGenerator) Reset() { *m = MatrixGenerator{} } func (*MatrixGenerator) ProtoMessage() {} func (*MatrixGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{82} + return fileDescriptor_030104ce3b95bcac, []int{83} } func (m *MatrixGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2368,7 +2396,7 @@ var xxx_messageInfo_MatrixGenerator proto.InternalMessageInfo func (m *MergeGenerator) Reset() { *m = MergeGenerator{} } func (*MergeGenerator) ProtoMessage() {} func (*MergeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{83} + return fileDescriptor_030104ce3b95bcac, []int{84} } func (m *MergeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2396,7 +2424,7 @@ var xxx_messageInfo_MergeGenerator proto.InternalMessageInfo func (m *NestedMatrixGenerator) Reset() { *m = NestedMatrixGenerator{} } func (*NestedMatrixGenerator) ProtoMessage() {} func (*NestedMatrixGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{84} + return fileDescriptor_030104ce3b95bcac, []int{85} } func (m *NestedMatrixGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2424,7 +2452,7 @@ var xxx_messageInfo_NestedMatrixGenerator proto.InternalMessageInfo func (m *NestedMergeGenerator) Reset() { *m = NestedMergeGenerator{} } func (*NestedMergeGenerator) ProtoMessage() {} func (*NestedMergeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{85} + return fileDescriptor_030104ce3b95bcac, []int{86} } func (m *NestedMergeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2452,7 +2480,7 @@ var xxx_messageInfo_NestedMergeGenerator proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{86} + return fileDescriptor_030104ce3b95bcac, []int{87} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2480,7 +2508,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationInitiator) Reset() { *m = OperationInitiator{} } func (*OperationInitiator) ProtoMessage() {} func (*OperationInitiator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{87} + return fileDescriptor_030104ce3b95bcac, []int{88} } func (m *OperationInitiator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2508,7 +2536,7 @@ var xxx_messageInfo_OperationInitiator proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{88} + return fileDescriptor_030104ce3b95bcac, []int{89} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2536,7 +2564,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *OptionalArray) Reset() { *m = OptionalArray{} } func (*OptionalArray) ProtoMessage() {} func (*OptionalArray) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{89} + return fileDescriptor_030104ce3b95bcac, []int{90} } func (m *OptionalArray) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2564,7 +2592,7 @@ var xxx_messageInfo_OptionalArray proto.InternalMessageInfo func (m *OptionalMap) Reset() { *m = OptionalMap{} } func (*OptionalMap) ProtoMessage() {} func (*OptionalMap) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{90} + return fileDescriptor_030104ce3b95bcac, []int{91} } func (m *OptionalMap) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2592,7 +2620,7 @@ var xxx_messageInfo_OptionalMap proto.InternalMessageInfo func (m *OrphanedResourceKey) Reset() { *m = OrphanedResourceKey{} } func (*OrphanedResourceKey) ProtoMessage() {} func (*OrphanedResourceKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{91} + return fileDescriptor_030104ce3b95bcac, []int{92} } func (m *OrphanedResourceKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2620,7 +2648,7 @@ var xxx_messageInfo_OrphanedResourceKey proto.InternalMessageInfo func (m *OrphanedResourcesMonitorSettings) Reset() { *m = OrphanedResourcesMonitorSettings{} } func (*OrphanedResourcesMonitorSettings) ProtoMessage() {} func (*OrphanedResourcesMonitorSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{92} + return fileDescriptor_030104ce3b95bcac, []int{93} } func (m *OrphanedResourcesMonitorSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2648,7 +2676,7 @@ var xxx_messageInfo_OrphanedResourcesMonitorSettings proto.InternalMessageInfo func (m *OverrideIgnoreDiff) Reset() { *m = OverrideIgnoreDiff{} } func (*OverrideIgnoreDiff) ProtoMessage() {} func (*OverrideIgnoreDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{93} + return fileDescriptor_030104ce3b95bcac, []int{94} } func (m *OverrideIgnoreDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2676,7 +2704,7 @@ var xxx_messageInfo_OverrideIgnoreDiff proto.InternalMessageInfo func (m *PluginConfigMapRef) Reset() { *m = PluginConfigMapRef{} } func (*PluginConfigMapRef) ProtoMessage() {} func (*PluginConfigMapRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{94} + return fileDescriptor_030104ce3b95bcac, []int{95} } func (m *PluginConfigMapRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2704,7 +2732,7 @@ var xxx_messageInfo_PluginConfigMapRef proto.InternalMessageInfo func (m *PluginGenerator) Reset() { *m = PluginGenerator{} } func (*PluginGenerator) ProtoMessage() {} func (*PluginGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{95} + return fileDescriptor_030104ce3b95bcac, []int{96} } func (m *PluginGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2732,7 +2760,7 @@ var xxx_messageInfo_PluginGenerator proto.InternalMessageInfo func (m *PluginInput) Reset() { *m = PluginInput{} } func (*PluginInput) ProtoMessage() {} func (*PluginInput) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{96} + return fileDescriptor_030104ce3b95bcac, []int{97} } func (m *PluginInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2760,7 +2788,7 @@ var xxx_messageInfo_PluginInput proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{97} + return fileDescriptor_030104ce3b95bcac, []int{98} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2788,7 +2816,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *PullRequestGenerator) Reset() { *m = PullRequestGenerator{} } func (*PullRequestGenerator) ProtoMessage() {} func (*PullRequestGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{98} + return fileDescriptor_030104ce3b95bcac, []int{99} } func (m *PullRequestGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2816,7 +2844,7 @@ var xxx_messageInfo_PullRequestGenerator proto.InternalMessageInfo func (m *PullRequestGeneratorAzureDevOps) Reset() { *m = PullRequestGeneratorAzureDevOps{} } func (*PullRequestGeneratorAzureDevOps) ProtoMessage() {} func (*PullRequestGeneratorAzureDevOps) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{99} + return fileDescriptor_030104ce3b95bcac, []int{100} } func (m *PullRequestGeneratorAzureDevOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2844,7 +2872,7 @@ var xxx_messageInfo_PullRequestGeneratorAzureDevOps proto.InternalMessageInfo func (m *PullRequestGeneratorBitbucket) Reset() { *m = PullRequestGeneratorBitbucket{} } func (*PullRequestGeneratorBitbucket) ProtoMessage() {} func (*PullRequestGeneratorBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{100} + return fileDescriptor_030104ce3b95bcac, []int{101} } func (m *PullRequestGeneratorBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2872,7 +2900,7 @@ var xxx_messageInfo_PullRequestGeneratorBitbucket proto.InternalMessageInfo func (m *PullRequestGeneratorBitbucketServer) Reset() { *m = PullRequestGeneratorBitbucketServer{} } func (*PullRequestGeneratorBitbucketServer) ProtoMessage() {} func (*PullRequestGeneratorBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{101} + return fileDescriptor_030104ce3b95bcac, []int{102} } func (m *PullRequestGeneratorBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2900,7 +2928,7 @@ var xxx_messageInfo_PullRequestGeneratorBitbucketServer proto.InternalMessageInf func (m *PullRequestGeneratorFilter) Reset() { *m = PullRequestGeneratorFilter{} } func (*PullRequestGeneratorFilter) ProtoMessage() {} func (*PullRequestGeneratorFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{102} + return fileDescriptor_030104ce3b95bcac, []int{103} } func (m *PullRequestGeneratorFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2928,7 +2956,7 @@ var xxx_messageInfo_PullRequestGeneratorFilter proto.InternalMessageInfo func (m *PullRequestGeneratorGitLab) Reset() { *m = PullRequestGeneratorGitLab{} } func (*PullRequestGeneratorGitLab) ProtoMessage() {} func (*PullRequestGeneratorGitLab) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{103} + return fileDescriptor_030104ce3b95bcac, []int{104} } func (m *PullRequestGeneratorGitLab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2956,7 +2984,7 @@ var xxx_messageInfo_PullRequestGeneratorGitLab proto.InternalMessageInfo func (m *PullRequestGeneratorGitea) Reset() { *m = PullRequestGeneratorGitea{} } func (*PullRequestGeneratorGitea) ProtoMessage() {} func (*PullRequestGeneratorGitea) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{104} + return fileDescriptor_030104ce3b95bcac, []int{105} } func (m *PullRequestGeneratorGitea) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2984,7 +3012,7 @@ var xxx_messageInfo_PullRequestGeneratorGitea proto.InternalMessageInfo func (m *PullRequestGeneratorGithub) Reset() { *m = PullRequestGeneratorGithub{} } func (*PullRequestGeneratorGithub) ProtoMessage() {} func (*PullRequestGeneratorGithub) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{105} + return fileDescriptor_030104ce3b95bcac, []int{106} } func (m *PullRequestGeneratorGithub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3012,7 +3040,7 @@ var xxx_messageInfo_PullRequestGeneratorGithub proto.InternalMessageInfo func (m *RefTarget) Reset() { *m = RefTarget{} } func (*RefTarget) ProtoMessage() {} func (*RefTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{106} + return fileDescriptor_030104ce3b95bcac, []int{107} } func (m *RefTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3040,7 +3068,7 @@ var xxx_messageInfo_RefTarget proto.InternalMessageInfo func (m *RepoCreds) Reset() { *m = RepoCreds{} } func (*RepoCreds) ProtoMessage() {} func (*RepoCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{107} + return fileDescriptor_030104ce3b95bcac, []int{108} } func (m *RepoCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3068,7 +3096,7 @@ var xxx_messageInfo_RepoCreds proto.InternalMessageInfo func (m *RepoCredsList) Reset() { *m = RepoCredsList{} } func (*RepoCredsList) ProtoMessage() {} func (*RepoCredsList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{108} + return fileDescriptor_030104ce3b95bcac, []int{109} } func (m *RepoCredsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3096,7 +3124,7 @@ var xxx_messageInfo_RepoCredsList proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{109} + return fileDescriptor_030104ce3b95bcac, []int{110} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3124,7 +3152,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryCertificate) Reset() { *m = RepositoryCertificate{} } func (*RepositoryCertificate) ProtoMessage() {} func (*RepositoryCertificate) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{110} + return fileDescriptor_030104ce3b95bcac, []int{111} } func (m *RepositoryCertificate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3152,7 +3180,7 @@ var xxx_messageInfo_RepositoryCertificate proto.InternalMessageInfo func (m *RepositoryCertificateList) Reset() { *m = RepositoryCertificateList{} } func (*RepositoryCertificateList) ProtoMessage() {} func (*RepositoryCertificateList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{111} + return fileDescriptor_030104ce3b95bcac, []int{112} } func (m *RepositoryCertificateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3180,7 +3208,7 @@ var xxx_messageInfo_RepositoryCertificateList proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{112} + return fileDescriptor_030104ce3b95bcac, []int{113} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3208,7 +3236,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceAction) Reset() { *m = ResourceAction{} } func (*ResourceAction) ProtoMessage() {} func (*ResourceAction) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{113} + return fileDescriptor_030104ce3b95bcac, []int{114} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3236,7 +3264,7 @@ var xxx_messageInfo_ResourceAction proto.InternalMessageInfo func (m *ResourceActionDefinition) Reset() { *m = ResourceActionDefinition{} } func (*ResourceActionDefinition) ProtoMessage() {} func (*ResourceActionDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{114} + return fileDescriptor_030104ce3b95bcac, []int{115} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3264,7 +3292,7 @@ var xxx_messageInfo_ResourceActionDefinition proto.InternalMessageInfo func (m *ResourceActionParam) Reset() { *m = ResourceActionParam{} } func (*ResourceActionParam) ProtoMessage() {} func (*ResourceActionParam) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{115} + return fileDescriptor_030104ce3b95bcac, []int{116} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3292,7 +3320,7 @@ var xxx_messageInfo_ResourceActionParam proto.InternalMessageInfo func (m *ResourceActions) Reset() { *m = ResourceActions{} } func (*ResourceActions) ProtoMessage() {} func (*ResourceActions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{116} + return fileDescriptor_030104ce3b95bcac, []int{117} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3320,7 +3348,7 @@ var xxx_messageInfo_ResourceActions proto.InternalMessageInfo func (m *ResourceDiff) Reset() { *m = ResourceDiff{} } func (*ResourceDiff) ProtoMessage() {} func (*ResourceDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{117} + return fileDescriptor_030104ce3b95bcac, []int{118} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3348,7 +3376,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} } func (*ResourceIgnoreDifferences) ProtoMessage() {} func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{118} + return fileDescriptor_030104ce3b95bcac, []int{119} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3376,7 +3404,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} } func (*ResourceNetworkingInfo) ProtoMessage() {} func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{119} + return fileDescriptor_030104ce3b95bcac, []int{120} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3404,7 +3432,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{120} + return fileDescriptor_030104ce3b95bcac, []int{121} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3432,7 +3460,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceOverride) Reset() { *m = ResourceOverride{} } func (*ResourceOverride) ProtoMessage() {} func (*ResourceOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{121} + return fileDescriptor_030104ce3b95bcac, []int{122} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3460,7 +3488,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo func (m *ResourceRef) Reset() { *m = ResourceRef{} } func (*ResourceRef) ProtoMessage() {} func (*ResourceRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{122} + return fileDescriptor_030104ce3b95bcac, []int{123} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3488,7 +3516,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo func (m *ResourceResult) Reset() { *m = ResourceResult{} } func (*ResourceResult) ProtoMessage() {} func (*ResourceResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{123} + return fileDescriptor_030104ce3b95bcac, []int{124} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3516,7 +3544,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo func (m *ResourceStatus) Reset() { *m = ResourceStatus{} } func (*ResourceStatus) ProtoMessage() {} func (*ResourceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{124} + return fileDescriptor_030104ce3b95bcac, []int{125} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3544,7 +3572,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{125} + return fileDescriptor_030104ce3b95bcac, []int{126} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3572,7 +3600,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RevisionHistory) Reset() { *m = RevisionHistory{} } func (*RevisionHistory) ProtoMessage() {} func (*RevisionHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{126} + return fileDescriptor_030104ce3b95bcac, []int{127} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3600,7 +3628,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo func (m *RevisionMetadata) Reset() { *m = RevisionMetadata{} } func (*RevisionMetadata) ProtoMessage() {} func (*RevisionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{127} + return fileDescriptor_030104ce3b95bcac, []int{128} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3628,7 +3656,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *SCMProviderGenerator) Reset() { *m = SCMProviderGenerator{} } func (*SCMProviderGenerator) ProtoMessage() {} func (*SCMProviderGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{128} + return fileDescriptor_030104ce3b95bcac, []int{129} } func (m *SCMProviderGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3656,7 +3684,7 @@ var xxx_messageInfo_SCMProviderGenerator proto.InternalMessageInfo func (m *SCMProviderGeneratorAWSCodeCommit) Reset() { *m = SCMProviderGeneratorAWSCodeCommit{} } func (*SCMProviderGeneratorAWSCodeCommit) ProtoMessage() {} func (*SCMProviderGeneratorAWSCodeCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{129} + return fileDescriptor_030104ce3b95bcac, []int{130} } func (m *SCMProviderGeneratorAWSCodeCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3684,7 +3712,7 @@ var xxx_messageInfo_SCMProviderGeneratorAWSCodeCommit proto.InternalMessageInfo func (m *SCMProviderGeneratorAzureDevOps) Reset() { *m = SCMProviderGeneratorAzureDevOps{} } func (*SCMProviderGeneratorAzureDevOps) ProtoMessage() {} func (*SCMProviderGeneratorAzureDevOps) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{130} + return fileDescriptor_030104ce3b95bcac, []int{131} } func (m *SCMProviderGeneratorAzureDevOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3712,7 +3740,7 @@ var xxx_messageInfo_SCMProviderGeneratorAzureDevOps proto.InternalMessageInfo func (m *SCMProviderGeneratorBitbucket) Reset() { *m = SCMProviderGeneratorBitbucket{} } func (*SCMProviderGeneratorBitbucket) ProtoMessage() {} func (*SCMProviderGeneratorBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{131} + return fileDescriptor_030104ce3b95bcac, []int{132} } func (m *SCMProviderGeneratorBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3740,7 +3768,7 @@ var xxx_messageInfo_SCMProviderGeneratorBitbucket proto.InternalMessageInfo func (m *SCMProviderGeneratorBitbucketServer) Reset() { *m = SCMProviderGeneratorBitbucketServer{} } func (*SCMProviderGeneratorBitbucketServer) ProtoMessage() {} func (*SCMProviderGeneratorBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{132} + return fileDescriptor_030104ce3b95bcac, []int{133} } func (m *SCMProviderGeneratorBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3768,7 +3796,7 @@ var xxx_messageInfo_SCMProviderGeneratorBitbucketServer proto.InternalMessageInf func (m *SCMProviderGeneratorFilter) Reset() { *m = SCMProviderGeneratorFilter{} } func (*SCMProviderGeneratorFilter) ProtoMessage() {} func (*SCMProviderGeneratorFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{133} + return fileDescriptor_030104ce3b95bcac, []int{134} } func (m *SCMProviderGeneratorFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3796,7 +3824,7 @@ var xxx_messageInfo_SCMProviderGeneratorFilter proto.InternalMessageInfo func (m *SCMProviderGeneratorGitea) Reset() { *m = SCMProviderGeneratorGitea{} } func (*SCMProviderGeneratorGitea) ProtoMessage() {} func (*SCMProviderGeneratorGitea) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{134} + return fileDescriptor_030104ce3b95bcac, []int{135} } func (m *SCMProviderGeneratorGitea) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3824,7 +3852,7 @@ var xxx_messageInfo_SCMProviderGeneratorGitea proto.InternalMessageInfo func (m *SCMProviderGeneratorGithub) Reset() { *m = SCMProviderGeneratorGithub{} } func (*SCMProviderGeneratorGithub) ProtoMessage() {} func (*SCMProviderGeneratorGithub) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{135} + return fileDescriptor_030104ce3b95bcac, []int{136} } func (m *SCMProviderGeneratorGithub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3852,7 +3880,7 @@ var xxx_messageInfo_SCMProviderGeneratorGithub proto.InternalMessageInfo func (m *SCMProviderGeneratorGitlab) Reset() { *m = SCMProviderGeneratorGitlab{} } func (*SCMProviderGeneratorGitlab) ProtoMessage() {} func (*SCMProviderGeneratorGitlab) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{136} + return fileDescriptor_030104ce3b95bcac, []int{137} } func (m *SCMProviderGeneratorGitlab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3880,7 +3908,7 @@ var xxx_messageInfo_SCMProviderGeneratorGitlab proto.InternalMessageInfo func (m *SecretRef) Reset() { *m = SecretRef{} } func (*SecretRef) ProtoMessage() {} func (*SecretRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{137} + return fileDescriptor_030104ce3b95bcac, []int{138} } func (m *SecretRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3908,7 +3936,7 @@ var xxx_messageInfo_SecretRef proto.InternalMessageInfo func (m *SignatureKey) Reset() { *m = SignatureKey{} } func (*SignatureKey) ProtoMessage() {} func (*SignatureKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{138} + return fileDescriptor_030104ce3b95bcac, []int{139} } func (m *SignatureKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3936,7 +3964,7 @@ var xxx_messageInfo_SignatureKey proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{139} + return fileDescriptor_030104ce3b95bcac, []int{140} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3964,7 +3992,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} } func (*SyncOperationResource) ProtoMessage() {} func (*SyncOperationResource) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{140} + return fileDescriptor_030104ce3b95bcac, []int{141} } func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3992,7 +4020,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{141} + return fileDescriptor_030104ce3b95bcac, []int{142} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4020,7 +4048,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{142} + return fileDescriptor_030104ce3b95bcac, []int{143} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4048,7 +4076,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{143} + return fileDescriptor_030104ce3b95bcac, []int{144} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4076,7 +4104,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncStatus) Reset() { *m = SyncStatus{} } func (*SyncStatus) ProtoMessage() {} func (*SyncStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{144} + return fileDescriptor_030104ce3b95bcac, []int{145} } func (m *SyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4104,7 +4132,7 @@ var xxx_messageInfo_SyncStatus proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{145} + return fileDescriptor_030104ce3b95bcac, []int{146} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4132,7 +4160,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{146} + return fileDescriptor_030104ce3b95bcac, []int{147} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4160,7 +4188,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{147} + return fileDescriptor_030104ce3b95bcac, []int{148} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4188,7 +4216,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *SyncWindow) Reset() { *m = SyncWindow{} } func (*SyncWindow) ProtoMessage() {} func (*SyncWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{148} + return fileDescriptor_030104ce3b95bcac, []int{149} } func (m *SyncWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4216,7 +4244,7 @@ var xxx_messageInfo_SyncWindow proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{149} + return fileDescriptor_030104ce3b95bcac, []int{150} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4244,7 +4272,7 @@ var xxx_messageInfo_TLSClientConfig proto.InternalMessageInfo func (m *TagFilter) Reset() { *m = TagFilter{} } func (*TagFilter) ProtoMessage() {} func (*TagFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{150} + return fileDescriptor_030104ce3b95bcac, []int{151} } func (m *TagFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4332,6 +4360,7 @@ func init() { proto.RegisterType((*ComponentParameter)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ComponentParameter") proto.RegisterType((*ConfigManagementPlugin)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ConfigManagementPlugin") proto.RegisterType((*ConnectionState)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ConnectionState") + proto.RegisterType((*CopyFromSpec)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.CopyFromSpec") proto.RegisterType((*DuckTypeGenerator)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.DuckTypeGenerator") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.DuckTypeGenerator.ValuesEntry") proto.RegisterType((*EnvEntry)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.EnvEntry") @@ -4448,697 +4477,703 @@ func init() { } var fileDescriptor_030104ce3b95bcac = []byte{ - // 11030 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x1c, 0xc9, - 0x75, 0x98, 0x66, 0x17, 0x0b, 0xec, 0x3e, 0x7c, 0x90, 0x6c, 0x92, 0x77, 0x20, 0x75, 0x77, 0xa0, - 0xe7, 0xe2, 0xd3, 0x39, 0xba, 0x03, 0x7c, 0xf4, 0x9d, 0x7c, 0xf1, 0xd9, 0x92, 0xb1, 0x00, 0x09, - 0x82, 0x04, 0x08, 0x5c, 0x03, 0x24, 0xa5, 0x93, 0x4f, 0xa7, 0xc1, 0x6e, 0x63, 0x31, 0xc4, 0xec, - 0xcc, 0xdc, 0xcc, 0x2c, 0x08, 0x9c, 0x25, 0x59, 0xb2, 0x64, 0x5b, 0x89, 0x3e, 0x4e, 0x91, 0x92, - 0xf2, 0x39, 0xb1, 0x14, 0xd9, 0x72, 0x52, 0x71, 0x25, 0xaa, 0x38, 0xc9, 0x8f, 0x38, 0x71, 0x52, - 0x2e, 0xdb, 0xa9, 0x94, 0x52, 0x4a, 0xca, 0x2e, 0x97, 0xcb, 0x72, 0x12, 0x1b, 0x91, 0x98, 0x4a, - 0x25, 0x95, 0xaa, 0xb8, 0xca, 0x89, 0x7f, 0x24, 0x4c, 0x7e, 0xa4, 0xfa, 0xbb, 0x67, 0x76, 0x16, - 0x58, 0x00, 0x03, 0x92, 0x52, 0xee, 0xdf, 0x6e, 0xbf, 0x37, 0xef, 0xf5, 0xf4, 0x74, 0xbf, 0xf7, - 0xfa, 0xf5, 0x7b, 0xaf, 0x61, 0xa1, 0xe5, 0x26, 0x1b, 0x9d, 0xb5, 0xc9, 0x46, 0xd0, 0x9e, 0x72, - 0xa2, 0x56, 0x10, 0x46, 0xc1, 0x6d, 0xf6, 0xe3, 0xd9, 0x46, 0x73, 0x6a, 0xeb, 0xe2, 0x54, 0xb8, - 0xd9, 0x9a, 0x72, 0x42, 0x37, 0x9e, 0x72, 0xc2, 0xd0, 0x73, 0x1b, 0x4e, 0xe2, 0x06, 0xfe, 0xd4, - 0xd6, 0x73, 0x8e, 0x17, 0x6e, 0x38, 0xcf, 0x4d, 0xb5, 0x88, 0x4f, 0x22, 0x27, 0x21, 0xcd, 0xc9, - 0x30, 0x0a, 0x92, 0x00, 0xfd, 0xa8, 0xa6, 0x36, 0x29, 0xa9, 0xb1, 0x1f, 0xaf, 0x35, 0x9a, 0x93, - 0x5b, 0x17, 0x27, 0xc3, 0xcd, 0xd6, 0x24, 0xa5, 0x36, 0x69, 0x50, 0x9b, 0x94, 0xd4, 0xce, 0x3f, - 0x6b, 0xf4, 0xa5, 0x15, 0xb4, 0x82, 0x29, 0x46, 0x74, 0xad, 0xb3, 0xce, 0xfe, 0xb1, 0x3f, 0xec, - 0x17, 0x67, 0x76, 0xde, 0xde, 0x7c, 0x31, 0x9e, 0x74, 0x03, 0xda, 0xbd, 0xa9, 0x46, 0x10, 0x91, - 0xa9, 0xad, 0xae, 0x0e, 0x9d, 0xbf, 0xa2, 0x71, 0xc8, 0x76, 0x42, 0xfc, 0xd8, 0x0d, 0xfc, 0xf8, - 0x59, 0xda, 0x05, 0x12, 0x6d, 0x91, 0xc8, 0x7c, 0x3d, 0x03, 0x21, 0x8f, 0xd2, 0xf3, 0x9a, 0x52, - 0xdb, 0x69, 0x6c, 0xb8, 0x3e, 0x89, 0x76, 0xf4, 0xe3, 0x6d, 0x92, 0x38, 0x79, 0x4f, 0x4d, 0xf5, - 0x7a, 0x2a, 0xea, 0xf8, 0x89, 0xdb, 0x26, 0x5d, 0x0f, 0xbc, 0x67, 0xbf, 0x07, 0xe2, 0xc6, 0x06, - 0x69, 0x3b, 0x5d, 0xcf, 0xfd, 0x50, 0xaf, 0xe7, 0x3a, 0x89, 0xeb, 0x4d, 0xb9, 0x7e, 0x12, 0x27, - 0x51, 0xf6, 0x21, 0xfb, 0x17, 0x2d, 0x18, 0x9d, 0xbe, 0xb5, 0x32, 0xdd, 0x49, 0x36, 0x66, 0x02, - 0x7f, 0xdd, 0x6d, 0xa1, 0x17, 0x60, 0xb8, 0xe1, 0x75, 0xe2, 0x84, 0x44, 0xd7, 0x9d, 0x36, 0x19, - 0xb7, 0x2e, 0x58, 0x4f, 0xd7, 0xea, 0xa7, 0xbf, 0xb1, 0x3b, 0xf1, 0x8e, 0xbb, 0xbb, 0x13, 0xc3, - 0x33, 0x1a, 0x84, 0x4d, 0x3c, 0xf4, 0x03, 0x30, 0x14, 0x05, 0x1e, 0x99, 0xc6, 0xd7, 0xc7, 0x4b, - 0xec, 0x91, 0x13, 0xe2, 0x91, 0x21, 0xcc, 0x9b, 0xb1, 0x84, 0x53, 0xd4, 0x30, 0x0a, 0xd6, 0x5d, - 0x8f, 0x8c, 0x97, 0xd3, 0xa8, 0xcb, 0xbc, 0x19, 0x4b, 0xb8, 0xfd, 0x87, 0x25, 0x80, 0xe9, 0x30, - 0x5c, 0x8e, 0x82, 0xdb, 0xa4, 0x91, 0xa0, 0x0f, 0x43, 0x95, 0x0e, 0x73, 0xd3, 0x49, 0x1c, 0xd6, - 0xb1, 0xe1, 0x8b, 0x3f, 0x38, 0xc9, 0xdf, 0x7a, 0xd2, 0x7c, 0x6b, 0x3d, 0xc9, 0x28, 0xf6, 0xe4, - 0xd6, 0x73, 0x93, 0x4b, 0x6b, 0xf4, 0xf9, 0x45, 0x92, 0x38, 0x75, 0x24, 0x98, 0x81, 0x6e, 0xc3, - 0x8a, 0x2a, 0xf2, 0x61, 0x20, 0x0e, 0x49, 0x83, 0xbd, 0xc3, 0xf0, 0xc5, 0x85, 0xc9, 0xa3, 0xcc, - 0xe6, 0x49, 0xdd, 0xf3, 0x95, 0x90, 0x34, 0xea, 0x23, 0x82, 0xf3, 0x00, 0xfd, 0x87, 0x19, 0x1f, - 0xb4, 0x05, 0x83, 0x71, 0xe2, 0x24, 0x9d, 0x98, 0x0d, 0xc5, 0xf0, 0xc5, 0xeb, 0x85, 0x71, 0x64, - 0x54, 0xeb, 0x63, 0x82, 0xe7, 0x20, 0xff, 0x8f, 0x05, 0x37, 0xfb, 0x4f, 0x2c, 0x18, 0xd3, 0xc8, - 0x0b, 0x6e, 0x9c, 0xa0, 0x9f, 0xe8, 0x1a, 0xdc, 0xc9, 0xfe, 0x06, 0x97, 0x3e, 0xcd, 0x86, 0xf6, - 0xa4, 0x60, 0x56, 0x95, 0x2d, 0xc6, 0xc0, 0xb6, 0xa1, 0xe2, 0x26, 0xa4, 0x1d, 0x8f, 0x97, 0x2e, - 0x94, 0x9f, 0x1e, 0xbe, 0x78, 0xa5, 0xa8, 0xf7, 0xac, 0x8f, 0x0a, 0xa6, 0x95, 0x79, 0x4a, 0x1e, - 0x73, 0x2e, 0xf6, 0xaf, 0x8e, 0x98, 0xef, 0x47, 0x07, 0x1c, 0x3d, 0x07, 0xc3, 0x71, 0xd0, 0x89, - 0x1a, 0x04, 0x93, 0x30, 0x88, 0xc7, 0xad, 0x0b, 0x65, 0x3a, 0xf5, 0xe8, 0xa4, 0x5e, 0xd1, 0xcd, - 0xd8, 0xc4, 0x41, 0x9f, 0xb7, 0x60, 0xa4, 0x49, 0xe2, 0xc4, 0xf5, 0x19, 0x7f, 0xd9, 0xf9, 0xd5, - 0x23, 0x77, 0x5e, 0x36, 0xce, 0x6a, 0xe2, 0xf5, 0x33, 0xe2, 0x45, 0x46, 0x8c, 0xc6, 0x18, 0xa7, - 0xf8, 0xd3, 0xc5, 0xd9, 0x24, 0x71, 0x23, 0x72, 0x43, 0xfa, 0x5f, 0x2c, 0x1f, 0xb5, 0x38, 0x67, - 0x35, 0x08, 0x9b, 0x78, 0xc8, 0x87, 0x0a, 0x5d, 0x7c, 0xf1, 0xf8, 0x00, 0xeb, 0xff, 0xfc, 0xd1, - 0xfa, 0x2f, 0x06, 0x95, 0xae, 0x6b, 0x3d, 0xfa, 0xf4, 0x5f, 0x8c, 0x39, 0x1b, 0xf4, 0x39, 0x0b, - 0xc6, 0x85, 0x70, 0xc0, 0x84, 0x0f, 0xe8, 0xad, 0x0d, 0x37, 0x21, 0x9e, 0x1b, 0x27, 0xe3, 0x15, - 0xd6, 0x87, 0xa9, 0xfe, 0xe6, 0xd6, 0x5c, 0x14, 0x74, 0xc2, 0x6b, 0xae, 0xdf, 0xac, 0x5f, 0x10, - 0x9c, 0xc6, 0x67, 0x7a, 0x10, 0xc6, 0x3d, 0x59, 0xa2, 0x2f, 0x59, 0x70, 0xde, 0x77, 0xda, 0x24, - 0x0e, 0x1d, 0xfa, 0x69, 0x39, 0xb8, 0xee, 0x39, 0x8d, 0x4d, 0xd6, 0xa3, 0xc1, 0xc3, 0xf5, 0xc8, - 0x16, 0x3d, 0x3a, 0x7f, 0xbd, 0x27, 0x69, 0xbc, 0x07, 0x5b, 0xf4, 0x35, 0x0b, 0x4e, 0x05, 0x51, - 0xb8, 0xe1, 0xf8, 0xa4, 0x29, 0xa1, 0xf1, 0xf8, 0x10, 0x5b, 0x7a, 0x1f, 0x3a, 0xda, 0x27, 0x5a, - 0xca, 0x92, 0x5d, 0x0c, 0x7c, 0x37, 0x09, 0xa2, 0x15, 0x92, 0x24, 0xae, 0xdf, 0x8a, 0xeb, 0x67, - 0xef, 0xee, 0x4e, 0x9c, 0xea, 0xc2, 0xc2, 0xdd, 0xfd, 0x41, 0x3f, 0x09, 0xc3, 0xf1, 0x8e, 0xdf, - 0xb8, 0xe5, 0xfa, 0xcd, 0xe0, 0x4e, 0x3c, 0x5e, 0x2d, 0x62, 0xf9, 0xae, 0x28, 0x82, 0x62, 0x01, - 0x6a, 0x06, 0xd8, 0xe4, 0x96, 0xff, 0xe1, 0xf4, 0x54, 0xaa, 0x15, 0xfd, 0xe1, 0xf4, 0x64, 0xda, - 0x83, 0x2d, 0xfa, 0x39, 0x0b, 0x46, 0x63, 0xb7, 0xe5, 0x3b, 0x49, 0x27, 0x22, 0xd7, 0xc8, 0x4e, - 0x3c, 0x0e, 0xac, 0x23, 0x57, 0x8f, 0x38, 0x2a, 0x06, 0xc9, 0xfa, 0x59, 0xd1, 0xc7, 0x51, 0xb3, - 0x35, 0xc6, 0x69, 0xbe, 0x79, 0x0b, 0x4d, 0x4f, 0xeb, 0xe1, 0x62, 0x17, 0x9a, 0x9e, 0xd4, 0x3d, - 0x59, 0xa2, 0x1f, 0x87, 0x93, 0xbc, 0x49, 0x8d, 0x6c, 0x3c, 0x3e, 0xc2, 0x04, 0xed, 0x99, 0xbb, - 0xbb, 0x13, 0x27, 0x57, 0x32, 0x30, 0xdc, 0x85, 0x8d, 0x5e, 0x87, 0x89, 0x90, 0x44, 0x6d, 0x37, - 0x59, 0xf2, 0xbd, 0x1d, 0x29, 0xbe, 0x1b, 0x41, 0x48, 0x9a, 0xa2, 0x3b, 0xf1, 0xf8, 0xe8, 0x05, - 0xeb, 0xe9, 0x6a, 0xfd, 0x5d, 0xa2, 0x9b, 0x13, 0xcb, 0x7b, 0xa3, 0xe3, 0xfd, 0xe8, 0xd9, 0xff, - 0xba, 0x04, 0x27, 0xb3, 0x8a, 0x13, 0xfd, 0x1d, 0x0b, 0x4e, 0xdc, 0xbe, 0x93, 0xac, 0x06, 0x9b, - 0xc4, 0x8f, 0xeb, 0x3b, 0x54, 0xbc, 0x31, 0x95, 0x31, 0x7c, 0xb1, 0x51, 0xac, 0x8a, 0x9e, 0xbc, - 0x9a, 0xe6, 0x72, 0xc9, 0x4f, 0xa2, 0x9d, 0xfa, 0xa3, 0xe2, 0xed, 0x4e, 0x5c, 0xbd, 0xb5, 0x6a, - 0x42, 0x71, 0xb6, 0x53, 0xe7, 0x3f, 0x63, 0xc1, 0x99, 0x3c, 0x12, 0xe8, 0x24, 0x94, 0x37, 0xc9, - 0x0e, 0x37, 0xe0, 0x30, 0xfd, 0x89, 0x5e, 0x85, 0xca, 0x96, 0xe3, 0x75, 0x88, 0xb0, 0x6e, 0xe6, - 0x8e, 0xf6, 0x22, 0xaa, 0x67, 0x98, 0x53, 0xfd, 0x91, 0xd2, 0x8b, 0x96, 0xfd, 0xbb, 0x65, 0x18, - 0x36, 0xf4, 0xdb, 0x7d, 0xb0, 0xd8, 0x82, 0x94, 0xc5, 0xb6, 0x58, 0x98, 0x6a, 0xee, 0x69, 0xb2, - 0xdd, 0xc9, 0x98, 0x6c, 0x4b, 0xc5, 0xb1, 0xdc, 0xd3, 0x66, 0x43, 0x09, 0xd4, 0x82, 0x90, 0x5a, - 0xef, 0x54, 0xf5, 0x0f, 0x14, 0xf1, 0x09, 0x97, 0x24, 0xb9, 0xfa, 0xe8, 0xdd, 0xdd, 0x89, 0x9a, - 0xfa, 0x8b, 0x35, 0x23, 0xfb, 0x5b, 0x16, 0x9c, 0x31, 0xfa, 0x38, 0x13, 0xf8, 0x4d, 0x97, 0x7d, - 0xda, 0x0b, 0x30, 0x90, 0xec, 0x84, 0x72, 0x87, 0xa0, 0x46, 0x6a, 0x75, 0x27, 0x24, 0x98, 0x41, - 0xa8, 0xa1, 0xdf, 0x26, 0x71, 0xec, 0xb4, 0x48, 0x76, 0x4f, 0xb0, 0xc8, 0x9b, 0xb1, 0x84, 0xa3, - 0x08, 0x90, 0xe7, 0xc4, 0xc9, 0x6a, 0xe4, 0xf8, 0x31, 0x23, 0xbf, 0xea, 0xb6, 0x89, 0x18, 0xe0, - 0xbf, 0xd8, 0xdf, 0x8c, 0xa1, 0x4f, 0xd4, 0x1f, 0xb9, 0xbb, 0x3b, 0x81, 0x16, 0xba, 0x28, 0xe1, - 0x1c, 0xea, 0xf6, 0x97, 0x2c, 0x78, 0x24, 0xdf, 0x16, 0x43, 0x4f, 0xc1, 0x20, 0xdf, 0x1e, 0x8a, - 0xb7, 0xd3, 0x9f, 0x84, 0xb5, 0x62, 0x01, 0x45, 0x53, 0x50, 0x53, 0x7a, 0x42, 0xbc, 0xe3, 0x29, - 0x81, 0x5a, 0xd3, 0xca, 0x45, 0xe3, 0xd0, 0x41, 0xa3, 0x7f, 0x84, 0xe5, 0xa6, 0x06, 0x8d, 0xed, - 0xa7, 0x18, 0xc4, 0xfe, 0x8f, 0x16, 0x9c, 0x30, 0x7a, 0x75, 0x1f, 0x4c, 0x73, 0x3f, 0x6d, 0x9a, - 0xcf, 0x17, 0x36, 0x9f, 0x7b, 0xd8, 0xe6, 0x9f, 0xb3, 0xe0, 0xbc, 0x81, 0xb5, 0xe8, 0x24, 0x8d, - 0x8d, 0x4b, 0xdb, 0x61, 0x44, 0x62, 0xba, 0xf5, 0x46, 0x8f, 0x1b, 0x72, 0xab, 0x3e, 0x2c, 0x28, - 0x94, 0xaf, 0x91, 0x1d, 0x2e, 0xc4, 0x9e, 0x81, 0x2a, 0x9f, 0x9c, 0x41, 0x24, 0x46, 0x5c, 0xbd, - 0xdb, 0x92, 0x68, 0xc7, 0x0a, 0x03, 0xd9, 0x30, 0xc8, 0x84, 0x13, 0x5d, 0xac, 0x54, 0x0d, 0x01, - 0xfd, 0x88, 0x37, 0x59, 0x0b, 0x16, 0x10, 0x3b, 0x4e, 0x75, 0x67, 0x39, 0x22, 0xec, 0xe3, 0x36, - 0x2f, 0xbb, 0xc4, 0x6b, 0xc6, 0x74, 0xdb, 0xe0, 0xf8, 0x7e, 0x90, 0x88, 0x1d, 0x80, 0xb1, 0x6d, - 0x98, 0xd6, 0xcd, 0xd8, 0xc4, 0xa1, 0x4c, 0x3d, 0x67, 0x8d, 0x78, 0x7c, 0x44, 0x05, 0xd3, 0x05, - 0xd6, 0x82, 0x05, 0xc4, 0xbe, 0x5b, 0x62, 0x1b, 0x14, 0xb5, 0xf4, 0xc9, 0xfd, 0xd8, 0xdd, 0x46, - 0x29, 0x59, 0xb9, 0x5c, 0x9c, 0xe0, 0x22, 0xbd, 0x77, 0xb8, 0x6f, 0x64, 0xc4, 0x25, 0x2e, 0x94, - 0xeb, 0xde, 0xbb, 0xdc, 0xdf, 0x2a, 0xc1, 0x44, 0xfa, 0x81, 0x2e, 0x69, 0x4b, 0xb7, 0x54, 0x06, - 0xa3, 0xac, 0xbf, 0xc3, 0xc0, 0xc7, 0x26, 0x5e, 0x0f, 0x81, 0x55, 0x3a, 0x4e, 0x81, 0x65, 0xca, - 0xd3, 0xf2, 0x3e, 0xf2, 0xf4, 0x29, 0x35, 0xea, 0x03, 0x19, 0x01, 0x96, 0xd6, 0x29, 0x17, 0x60, - 0x20, 0x4e, 0x48, 0x38, 0x5e, 0x49, 0xcb, 0xa3, 0x95, 0x84, 0x84, 0x98, 0x41, 0xec, 0xff, 0x56, - 0x82, 0x47, 0xd3, 0x63, 0xa8, 0x55, 0xc0, 0xfb, 0x52, 0x2a, 0xe0, 0xdd, 0xa6, 0x0a, 0xb8, 0xb7, - 0x3b, 0xf1, 0xce, 0x1e, 0x8f, 0x7d, 0xd7, 0x68, 0x08, 0x34, 0x97, 0x19, 0xc5, 0xa9, 0xf4, 0x28, - 0xde, 0xdb, 0x9d, 0x78, 0xbc, 0xc7, 0x3b, 0x66, 0x86, 0xf9, 0x29, 0x18, 0x8c, 0x88, 0x13, 0x07, - 0xbe, 0x18, 0x68, 0xf5, 0x39, 0x30, 0x6b, 0xc5, 0x02, 0x6a, 0xff, 0x7e, 0x2d, 0x3b, 0xd8, 0x73, - 0xdc, 0x61, 0x17, 0x44, 0xc8, 0x85, 0x01, 0x66, 0xd6, 0x73, 0xd1, 0x70, 0xed, 0x68, 0xcb, 0x88, - 0xaa, 0x01, 0x45, 0xba, 0x5e, 0xa5, 0x5f, 0x8d, 0x36, 0x61, 0xc6, 0x02, 0x6d, 0x43, 0xb5, 0x21, - 0xad, 0xed, 0x52, 0x11, 0x7e, 0x29, 0x61, 0x6b, 0x6b, 0x8e, 0x23, 0x54, 0x5e, 0x2b, 0x13, 0x5d, - 0x71, 0x43, 0x04, 0xca, 0x2d, 0x37, 0x11, 0x9f, 0xf5, 0x88, 0xfb, 0xa9, 0x39, 0xd7, 0x78, 0xc5, - 0x21, 0xaa, 0x44, 0xe6, 0xdc, 0x04, 0x53, 0xfa, 0xe8, 0x67, 0x2c, 0x18, 0x8e, 0x1b, 0xed, 0xe5, - 0x28, 0xd8, 0x72, 0x9b, 0x24, 0x12, 0xd6, 0xd4, 0x11, 0x45, 0xd3, 0xca, 0xcc, 0xa2, 0x24, 0xa8, - 0xf9, 0xf2, 0xfd, 0xad, 0x86, 0x60, 0x93, 0x2f, 0xdd, 0x65, 0x3c, 0x2a, 0xde, 0x7d, 0x96, 0x34, - 0x5c, 0xaa, 0xff, 0xe4, 0xa6, 0x8a, 0xcd, 0x94, 0x23, 0x5b, 0x97, 0xb3, 0x9d, 0xc6, 0x26, 0x5d, - 0x6f, 0xba, 0x43, 0xef, 0xbc, 0xbb, 0x3b, 0xf1, 0xe8, 0x4c, 0x3e, 0x4f, 0xdc, 0xab, 0x33, 0x6c, - 0xc0, 0xc2, 0x8e, 0xe7, 0x61, 0xf2, 0x7a, 0x87, 0x30, 0x97, 0x49, 0x01, 0x03, 0xb6, 0xac, 0x09, - 0x66, 0x06, 0xcc, 0x80, 0x60, 0x93, 0x2f, 0x7a, 0x1d, 0x06, 0xdb, 0x4e, 0x12, 0xb9, 0xdb, 0xc2, - 0x4f, 0x72, 0x44, 0x7b, 0x7f, 0x91, 0xd1, 0xd2, 0xcc, 0x99, 0xa6, 0xe6, 0x8d, 0x58, 0x30, 0x42, - 0x6d, 0xa8, 0xb4, 0x49, 0xd4, 0x22, 0xe3, 0xd5, 0x22, 0x7c, 0xc2, 0x8b, 0x94, 0x94, 0x66, 0x58, - 0xa3, 0xd6, 0x11, 0x6b, 0xc3, 0x9c, 0x0b, 0x7a, 0x15, 0xaa, 0x31, 0xf1, 0x48, 0x83, 0xda, 0x37, - 0x35, 0xc6, 0xf1, 0x87, 0xfa, 0xb4, 0xf5, 0xa8, 0x61, 0xb1, 0x22, 0x1e, 0xe5, 0x0b, 0x4c, 0xfe, - 0xc3, 0x8a, 0x24, 0x1d, 0xc0, 0xd0, 0xeb, 0xb4, 0x5c, 0x7f, 0x1c, 0x8a, 0x18, 0xc0, 0x65, 0x46, - 0x2b, 0x33, 0x80, 0xbc, 0x11, 0x0b, 0x46, 0xf6, 0x7f, 0xb6, 0x00, 0xa5, 0x85, 0xda, 0x7d, 0x30, - 0x6a, 0x5f, 0x4f, 0x1b, 0xb5, 0x0b, 0x45, 0x5a, 0x1d, 0x3d, 0xec, 0xda, 0xdf, 0xa8, 0x41, 0x46, - 0x1d, 0x5c, 0x27, 0x71, 0x42, 0x9a, 0x6f, 0x8b, 0xf0, 0xb7, 0x45, 0xf8, 0xdb, 0x22, 0x5c, 0x89, - 0xf0, 0xb5, 0x8c, 0x08, 0x7f, 0xaf, 0xb1, 0xea, 0xf5, 0x01, 0xec, 0x6b, 0xea, 0x84, 0xd6, 0xec, - 0x81, 0x81, 0x40, 0x25, 0xc1, 0xd5, 0x95, 0xa5, 0xeb, 0xb9, 0x32, 0xfb, 0xb5, 0xb4, 0xcc, 0x3e, - 0x2a, 0x8b, 0xff, 0x1f, 0xa4, 0xf4, 0xbf, 0xb2, 0xe0, 0x5d, 0x69, 0xe9, 0x25, 0x67, 0xce, 0x7c, - 0xcb, 0x0f, 0x22, 0x32, 0xeb, 0xae, 0xaf, 0x93, 0x88, 0xf8, 0x0d, 0x12, 0x2b, 0x2f, 0x86, 0xd5, - 0xcb, 0x8b, 0x81, 0x9e, 0x87, 0x91, 0xdb, 0x71, 0xe0, 0x2f, 0x07, 0xae, 0x2f, 0x44, 0x10, 0xdd, - 0x08, 0x9f, 0xbc, 0xbb, 0x3b, 0x31, 0x42, 0x47, 0x54, 0xb6, 0xe3, 0x14, 0x16, 0x9a, 0x81, 0x53, - 0xb7, 0x5f, 0x5f, 0x76, 0x12, 0xc3, 0x1d, 0x20, 0x37, 0xee, 0xec, 0xc0, 0xe2, 0xea, 0xcb, 0x19, - 0x20, 0xee, 0xc6, 0xb7, 0xff, 0x66, 0x09, 0xce, 0x65, 0x5e, 0x24, 0xf0, 0xbc, 0xa0, 0x93, 0xd0, - 0x4d, 0x0d, 0xfa, 0x8a, 0x05, 0x27, 0xdb, 0x69, 0x8f, 0x43, 0x2c, 0x1c, 0xbb, 0xef, 0x2f, 0x4c, - 0x47, 0x64, 0x5c, 0x1a, 0xf5, 0x71, 0x31, 0x42, 0x27, 0x33, 0x80, 0x18, 0x77, 0xf5, 0x05, 0xbd, - 0x0a, 0xb5, 0xb6, 0xb3, 0x7d, 0x23, 0x6c, 0x3a, 0x89, 0xdc, 0x4f, 0xf6, 0x76, 0x03, 0x74, 0x12, - 0xd7, 0x9b, 0xe4, 0x47, 0xfb, 0x93, 0xf3, 0x7e, 0xb2, 0x14, 0xad, 0x24, 0x91, 0xeb, 0xb7, 0xb8, - 0x3b, 0x6f, 0x51, 0x92, 0xc1, 0x9a, 0xa2, 0xfd, 0x65, 0x2b, 0xab, 0xa4, 0xd4, 0xe8, 0x44, 0x4e, - 0x42, 0x5a, 0x3b, 0xe8, 0x23, 0x50, 0xa1, 0x1b, 0x3f, 0x39, 0x2a, 0xb7, 0x8a, 0xd4, 0x9c, 0xc6, - 0x97, 0xd0, 0x4a, 0x94, 0xfe, 0x8b, 0x31, 0x67, 0x6a, 0x7f, 0xa5, 0x96, 0x35, 0x16, 0xd8, 0xe1, - 0xed, 0x45, 0x80, 0x56, 0xb0, 0x4a, 0xda, 0xa1, 0x47, 0x87, 0xc5, 0x62, 0x27, 0x00, 0xca, 0xd7, - 0x31, 0xa7, 0x20, 0xd8, 0xc0, 0x42, 0x7f, 0xd9, 0x02, 0x68, 0xc9, 0x39, 0x2f, 0x0d, 0x81, 0x1b, - 0x45, 0xbe, 0x8e, 0x5e, 0x51, 0xba, 0x2f, 0x8a, 0x21, 0x36, 0x98, 0xa3, 0x9f, 0xb6, 0xa0, 0x9a, - 0xc8, 0xee, 0x73, 0xd5, 0xb8, 0x5a, 0x64, 0x4f, 0xe4, 0x4b, 0x6b, 0x9b, 0x48, 0x0d, 0x89, 0xe2, - 0x8b, 0x7e, 0xd6, 0x02, 0x88, 0x77, 0xfc, 0xc6, 0x72, 0xe0, 0xb9, 0x8d, 0x1d, 0xa1, 0x31, 0x6f, - 0x16, 0xea, 0x8f, 0x51, 0xd4, 0xeb, 0x63, 0x74, 0x34, 0xf4, 0x7f, 0x6c, 0x70, 0x46, 0x1f, 0x83, - 0x6a, 0x2c, 0xa6, 0x9b, 0xd0, 0x91, 0xab, 0xc5, 0x7a, 0x85, 0x38, 0x6d, 0x21, 0x5e, 0xc5, 0x3f, - 0xac, 0x78, 0xa2, 0x9f, 0xb7, 0xe0, 0x44, 0x98, 0xf6, 0xf3, 0x09, 0x75, 0x58, 0x9c, 0x0c, 0xc8, - 0xf8, 0x11, 0xeb, 0xa7, 0xef, 0xee, 0x4e, 0x9c, 0xc8, 0x34, 0xe2, 0x6c, 0x2f, 0xa8, 0x04, 0xd4, - 0x33, 0x78, 0x29, 0xe4, 0x3e, 0xc7, 0x21, 0x2d, 0x01, 0xe7, 0xb2, 0x40, 0xdc, 0x8d, 0x8f, 0x96, - 0xe1, 0x0c, 0xed, 0xdd, 0x0e, 0x37, 0x3f, 0xa5, 0x7a, 0x89, 0x99, 0x32, 0xac, 0xd6, 0x1f, 0x13, - 0x33, 0x84, 0x79, 0xf5, 0xb3, 0x38, 0x38, 0xf7, 0x49, 0xf4, 0xbb, 0x16, 0x3c, 0xe6, 0x32, 0x35, - 0x60, 0x3a, 0xcc, 0xb5, 0x46, 0x10, 0x27, 0xb1, 0xa4, 0x50, 0x59, 0xd1, 0x4b, 0xfd, 0xd4, 0xff, - 0x82, 0x78, 0x83, 0xc7, 0xe6, 0xf7, 0xe8, 0x12, 0xde, 0xb3, 0xc3, 0xe8, 0x87, 0x61, 0x54, 0xae, - 0x8b, 0x65, 0x2a, 0x82, 0x99, 0xa2, 0xad, 0xd5, 0x4f, 0xdd, 0xdd, 0x9d, 0x18, 0x5d, 0x35, 0x01, - 0x38, 0x8d, 0x67, 0x7f, 0xb3, 0x94, 0x3a, 0x0f, 0x51, 0x4e, 0x48, 0x26, 0x6e, 0x1a, 0xd2, 0xff, - 0x23, 0xa5, 0x67, 0xa1, 0xe2, 0x46, 0x79, 0x97, 0xb4, 0xb8, 0x51, 0x4d, 0x31, 0x36, 0x98, 0x53, - 0xa3, 0xf4, 0x94, 0x93, 0x75, 0x75, 0x0a, 0x09, 0xf8, 0x6a, 0x91, 0x5d, 0xea, 0x3e, 0xbd, 0x3a, - 0x27, 0xba, 0x76, 0xaa, 0x0b, 0x84, 0xbb, 0xbb, 0x64, 0x7f, 0x33, 0x7d, 0x06, 0x63, 0x2c, 0xde, - 0x3e, 0xce, 0x97, 0x3e, 0x6f, 0xc1, 0x70, 0x14, 0x78, 0x9e, 0xeb, 0xb7, 0xa8, 0xa0, 0x11, 0xda, - 0xf2, 0x83, 0xc7, 0xa2, 0xb0, 0x84, 0x44, 0x61, 0xa6, 0x2d, 0xd6, 0x3c, 0xb1, 0xd9, 0x01, 0xfb, - 0x4f, 0x2c, 0x18, 0xef, 0x25, 0x10, 0x11, 0x81, 0x77, 0xca, 0xd5, 0xae, 0xa2, 0x2b, 0x96, 0xfc, - 0x59, 0xe2, 0x11, 0xe5, 0x78, 0xae, 0xd6, 0x9f, 0x14, 0xaf, 0xf9, 0xce, 0xe5, 0xde, 0xa8, 0x78, - 0x2f, 0x3a, 0xe8, 0x15, 0x38, 0x69, 0xbc, 0x57, 0xac, 0x06, 0xa6, 0x56, 0x9f, 0xa4, 0x16, 0xc8, - 0x74, 0x06, 0x76, 0x6f, 0x77, 0xe2, 0x91, 0x6c, 0x9b, 0x90, 0xd8, 0x5d, 0x74, 0xec, 0x5f, 0x29, - 0x65, 0xbf, 0x96, 0x52, 0xb6, 0x6f, 0x59, 0x5d, 0xdb, 0xf9, 0xf7, 0x1f, 0x87, 0x82, 0x63, 0x1b, - 0x7f, 0x15, 0xc0, 0xd1, 0x1b, 0xe7, 0x01, 0x9e, 0x10, 0xdb, 0xff, 0x66, 0x00, 0xf6, 0xe8, 0x59, - 0x1f, 0xd6, 0xf3, 0x81, 0x8f, 0x15, 0x3f, 0x6b, 0xa9, 0x23, 0xa7, 0x32, 0x5b, 0xe4, 0xcd, 0xe3, - 0x1a, 0x7b, 0xbe, 0x81, 0x89, 0x79, 0x94, 0x82, 0x72, 0x63, 0xa7, 0x0f, 0xb7, 0xd0, 0x57, 0xad, - 0xf4, 0xa1, 0x19, 0x0f, 0x3b, 0x73, 0x8f, 0xad, 0x4f, 0xc6, 0x49, 0x1c, 0xef, 0x98, 0x3e, 0xbf, - 0xe9, 0x75, 0x46, 0x37, 0x09, 0xb0, 0xee, 0xfa, 0x8e, 0xe7, 0xbe, 0x41, 0xb7, 0x27, 0x15, 0xa6, - 0x61, 0x99, 0xc9, 0x72, 0x59, 0xb5, 0x62, 0x03, 0xe3, 0xfc, 0x5f, 0x82, 0x61, 0xe3, 0xcd, 0x73, - 0x82, 0x2b, 0xce, 0x98, 0xc1, 0x15, 0x35, 0x23, 0x26, 0xe2, 0xfc, 0x7b, 0xe1, 0x64, 0xb6, 0x83, - 0x07, 0x79, 0xde, 0xfe, 0x5f, 0x43, 0xd9, 0x53, 0xac, 0x55, 0x12, 0xb5, 0x69, 0xd7, 0xde, 0xf6, - 0x2c, 0xbd, 0xed, 0x59, 0x7a, 0xdb, 0xb3, 0x64, 0x1e, 0x0e, 0x08, 0xaf, 0xc9, 0xd0, 0x7d, 0xf2, - 0x9a, 0xa4, 0xfc, 0x40, 0xd5, 0xc2, 0xfd, 0x40, 0xf6, 0xdd, 0x0a, 0xa4, 0xec, 0x28, 0x3e, 0xde, - 0x3f, 0x00, 0x43, 0x11, 0x09, 0x83, 0x1b, 0x78, 0x41, 0xe8, 0x10, 0x1d, 0x6b, 0xcf, 0x9b, 0xb1, - 0x84, 0x53, 0x5d, 0x13, 0x3a, 0xc9, 0x86, 0x50, 0x22, 0x4a, 0xd7, 0x2c, 0x3b, 0xc9, 0x06, 0x66, - 0x10, 0xf4, 0x5e, 0x18, 0x4b, 0x9c, 0xa8, 0x45, 0xed, 0xed, 0x2d, 0xf6, 0x59, 0xc5, 0x59, 0xe7, - 0x23, 0x02, 0x77, 0x6c, 0x35, 0x05, 0xc5, 0x19, 0x6c, 0xf4, 0x3a, 0x0c, 0x6c, 0x10, 0xaf, 0x2d, - 0x86, 0x7c, 0xa5, 0x38, 0x19, 0xcf, 0xde, 0xf5, 0x0a, 0xf1, 0xda, 0x5c, 0x02, 0xd1, 0x5f, 0x98, - 0xb1, 0xa2, 0xf3, 0xad, 0xb6, 0xd9, 0x89, 0x93, 0xa0, 0xed, 0xbe, 0x21, 0x5d, 0x7c, 0xef, 0x2f, - 0x98, 0xf1, 0x35, 0x49, 0x9f, 0xfb, 0x52, 0xd4, 0x5f, 0xac, 0x39, 0xb3, 0x7e, 0x34, 0xdd, 0x88, - 0x7d, 0xaa, 0x1d, 0xe1, 0xa9, 0x2b, 0xba, 0x1f, 0xb3, 0x92, 0x3e, 0xef, 0x87, 0xfa, 0x8b, 0x35, - 0x67, 0xb4, 0xa3, 0xe6, 0xfd, 0x30, 0xeb, 0xc3, 0x8d, 0x82, 0xfb, 0xc0, 0xe7, 0x7c, 0xee, 0xfc, - 0x7f, 0x12, 0x2a, 0x8d, 0x0d, 0x27, 0x4a, 0xc6, 0x47, 0xd8, 0xa4, 0x51, 0x3e, 0x9d, 0x19, 0xda, - 0x88, 0x39, 0x0c, 0x3d, 0x0e, 0xe5, 0x88, 0xac, 0xb3, 0xb8, 0x4d, 0x23, 0xa2, 0x07, 0x93, 0x75, - 0x4c, 0xdb, 0xed, 0x5f, 0x2a, 0xa5, 0xcd, 0xa5, 0xf4, 0x7b, 0xf3, 0xd9, 0xde, 0xe8, 0x44, 0xb1, - 0xf4, 0xfb, 0x18, 0xb3, 0x9d, 0x35, 0x63, 0x09, 0x47, 0x9f, 0xb0, 0x60, 0xe8, 0x76, 0x1c, 0xf8, - 0x3e, 0x49, 0x84, 0x6a, 0xba, 0x59, 0xf0, 0x50, 0x5c, 0xe5, 0xd4, 0x75, 0x1f, 0x44, 0x03, 0x96, - 0x7c, 0x69, 0x77, 0xc9, 0x76, 0xc3, 0xeb, 0x34, 0xbb, 0x82, 0x34, 0x2e, 0xf1, 0x66, 0x2c, 0xe1, - 0x14, 0xd5, 0xf5, 0x39, 0xea, 0x40, 0x1a, 0x75, 0xde, 0x17, 0xa8, 0x02, 0x6e, 0xff, 0xf5, 0x41, - 0x38, 0x9b, 0xbb, 0x38, 0xa8, 0x21, 0xc3, 0x4c, 0x85, 0xcb, 0xae, 0x47, 0x64, 0x78, 0x12, 0x33, - 0x64, 0x6e, 0xaa, 0x56, 0x6c, 0x60, 0xa0, 0x9f, 0x02, 0x08, 0x9d, 0xc8, 0x69, 0x13, 0xe5, 0x97, - 0x3d, 0xb2, 0xbd, 0x40, 0xfb, 0xb1, 0x2c, 0x69, 0xea, 0xbd, 0xa9, 0x6a, 0x8a, 0xb1, 0xc1, 0x12, - 0xbd, 0x00, 0xc3, 0x11, 0xf1, 0x88, 0x13, 0xb3, 0xb0, 0xdf, 0x6c, 0x0e, 0x03, 0xd6, 0x20, 0x6c, - 0xe2, 0xa1, 0xa7, 0x54, 0x24, 0x57, 0x26, 0xa2, 0x25, 0x1d, 0xcd, 0x85, 0xde, 0xb4, 0x60, 0x6c, - 0xdd, 0xf5, 0x88, 0xe6, 0x2e, 0x32, 0x0e, 0x96, 0x8e, 0xfe, 0x92, 0x97, 0x4d, 0xba, 0x5a, 0x42, - 0xa6, 0x9a, 0x63, 0x9c, 0x61, 0x4f, 0x3f, 0xf3, 0x16, 0x89, 0x98, 0x68, 0x1d, 0x4c, 0x7f, 0xe6, - 0x9b, 0xbc, 0x19, 0x4b, 0x38, 0x9a, 0x86, 0x13, 0xa1, 0x13, 0xc7, 0x33, 0x11, 0x69, 0x12, 0x3f, - 0x71, 0x1d, 0x8f, 0xe7, 0x03, 0x54, 0x75, 0x3c, 0xf0, 0x72, 0x1a, 0x8c, 0xb3, 0xf8, 0xe8, 0x03, - 0xf0, 0x28, 0x77, 0x7c, 0x2c, 0xba, 0x71, 0xec, 0xfa, 0x2d, 0x3d, 0x0d, 0x84, 0xff, 0x67, 0x42, - 0x90, 0x7a, 0x74, 0x3e, 0x1f, 0x0d, 0xf7, 0x7a, 0x1e, 0x3d, 0x03, 0xd5, 0x78, 0xd3, 0x0d, 0x67, - 0xa2, 0x66, 0xcc, 0x0e, 0x3d, 0xaa, 0xda, 0xdb, 0xb8, 0x22, 0xda, 0xb1, 0xc2, 0x40, 0x0d, 0x18, - 0xe1, 0x9f, 0x84, 0x87, 0xa2, 0x09, 0xf9, 0xf8, 0x6c, 0x4f, 0xf5, 0x28, 0xd2, 0xdb, 0x26, 0xb1, - 0x73, 0xe7, 0x92, 0x3c, 0x82, 0xe1, 0x27, 0x06, 0x37, 0x0d, 0x32, 0x38, 0x45, 0xd4, 0xfe, 0x85, - 0x52, 0x7a, 0xc7, 0x6d, 0x2e, 0x52, 0x14, 0xd3, 0xa5, 0x98, 0xdc, 0x74, 0x22, 0xe9, 0x8d, 0x39, - 0x62, 0xda, 0x82, 0xa0, 0x7b, 0xd3, 0x89, 0xcc, 0x45, 0xcd, 0x18, 0x60, 0xc9, 0x09, 0xdd, 0x86, - 0x81, 0xc4, 0x73, 0x0a, 0xca, 0x73, 0x32, 0x38, 0x6a, 0x07, 0xc8, 0xc2, 0x74, 0x8c, 0x19, 0x0f, - 0xf4, 0x18, 0xb5, 0xfa, 0xd7, 0xe4, 0x11, 0x89, 0x30, 0xd4, 0xd7, 0x62, 0xcc, 0x5a, 0xed, 0x7b, - 0x90, 0x23, 0x57, 0x95, 0x22, 0x43, 0x17, 0x01, 0xe8, 0x06, 0x72, 0x39, 0x22, 0xeb, 0xee, 0xb6, - 0x30, 0x24, 0xd4, 0xda, 0xbd, 0xae, 0x20, 0xd8, 0xc0, 0x92, 0xcf, 0xac, 0x74, 0xd6, 0xe9, 0x33, - 0xa5, 0xee, 0x67, 0x38, 0x04, 0x1b, 0x58, 0xe8, 0x79, 0x18, 0x74, 0xdb, 0x4e, 0x4b, 0x85, 0x60, - 0x3e, 0x46, 0x17, 0xed, 0x3c, 0x6b, 0xb9, 0xb7, 0x3b, 0x31, 0xa6, 0x3a, 0xc4, 0x9a, 0xb0, 0xc0, - 0x45, 0xbf, 0x62, 0xc1, 0x48, 0x23, 0x68, 0xb7, 0x03, 0x9f, 0x6f, 0xbb, 0xc4, 0x1e, 0xf2, 0xf6, - 0x71, 0xa9, 0xf9, 0xc9, 0x19, 0x83, 0x19, 0xdf, 0x44, 0xaa, 0x84, 0x2c, 0x13, 0x84, 0x53, 0xbd, - 0x32, 0xd7, 0x76, 0x65, 0x9f, 0xb5, 0xfd, 0xeb, 0x16, 0x9c, 0xe2, 0xcf, 0x1a, 0xbb, 0x41, 0x91, - 0x7b, 0x14, 0x1c, 0xf3, 0x6b, 0x75, 0x6d, 0x90, 0x95, 0x97, 0xae, 0x0b, 0x8e, 0xbb, 0x3b, 0x89, - 0xe6, 0xe0, 0xd4, 0x7a, 0x10, 0x35, 0x88, 0x39, 0x10, 0x42, 0x30, 0x29, 0x42, 0x97, 0xb3, 0x08, - 0xb8, 0xfb, 0x19, 0x74, 0x13, 0x1e, 0x31, 0x1a, 0xcd, 0x71, 0xe0, 0xb2, 0xe9, 0x09, 0x41, 0xed, - 0x91, 0xcb, 0xb9, 0x58, 0xb8, 0xc7, 0xd3, 0x69, 0x87, 0x49, 0xad, 0x0f, 0x87, 0xc9, 0x6b, 0x70, - 0xae, 0xd1, 0x3d, 0x32, 0x5b, 0x71, 0x67, 0x2d, 0xe6, 0x92, 0xaa, 0x5a, 0xff, 0x3e, 0x41, 0xe0, - 0xdc, 0x4c, 0x2f, 0x44, 0xdc, 0x9b, 0x06, 0xfa, 0x08, 0x54, 0x23, 0xc2, 0xbe, 0x4a, 0x2c, 0x12, - 0x71, 0x8e, 0xb8, 0x4b, 0xd6, 0x16, 0x28, 0x27, 0xab, 0x65, 0xaf, 0x68, 0x88, 0xb1, 0xe2, 0x88, - 0xee, 0xc0, 0x50, 0xe8, 0x24, 0x8d, 0x0d, 0x91, 0x7e, 0x73, 0xe4, 0xf8, 0x17, 0xc5, 0x9c, 0xf9, - 0xc0, 0x8d, 0x84, 0x5d, 0xce, 0x04, 0x4b, 0x6e, 0xd4, 0x1a, 0x69, 0x04, 0xed, 0x30, 0xf0, 0x89, - 0x9f, 0xc4, 0xe3, 0xa3, 0xda, 0x1a, 0x99, 0x51, 0xad, 0xd8, 0xc0, 0x40, 0xcb, 0x70, 0x86, 0xf9, - 0x8c, 0x6e, 0xb9, 0xc9, 0x46, 0xd0, 0x49, 0xe4, 0x16, 0x68, 0x7c, 0x2c, 0x7d, 0x54, 0xb1, 0x90, - 0x83, 0x83, 0x73, 0x9f, 0x3c, 0xff, 0x3e, 0x38, 0xd5, 0xb5, 0x94, 0x0f, 0xe4, 0xae, 0x99, 0x85, - 0x47, 0xf2, 0x17, 0xcd, 0x81, 0x9c, 0x36, 0xff, 0x38, 0x13, 0x36, 0x6b, 0x18, 0xd2, 0x7d, 0x38, - 0x00, 0x1d, 0x28, 0x13, 0x7f, 0x4b, 0xe8, 0x90, 0xcb, 0x47, 0xfb, 0x76, 0x97, 0xfc, 0x2d, 0xbe, - 0xe6, 0x99, 0x97, 0xe3, 0x92, 0xbf, 0x85, 0x29, 0x6d, 0xf4, 0x45, 0x2b, 0x65, 0x08, 0x72, 0xb7, - 0xe1, 0x87, 0x8e, 0x65, 0xe7, 0xd0, 0xb7, 0x6d, 0x68, 0xff, 0xdb, 0x12, 0x5c, 0xd8, 0x8f, 0x48, - 0x1f, 0xc3, 0xf7, 0x24, 0x0c, 0xc6, 0xec, 0x20, 0x5c, 0x08, 0xe5, 0x61, 0x3a, 0x57, 0xf9, 0xd1, - 0xf8, 0x6b, 0x58, 0x80, 0x90, 0x07, 0xe5, 0xb6, 0x13, 0x0a, 0x6f, 0xd2, 0xfc, 0x51, 0x13, 0x69, - 0xe8, 0x7f, 0xc7, 0x5b, 0x74, 0x42, 0xee, 0xa3, 0x30, 0x1a, 0x30, 0x65, 0x83, 0x12, 0xa8, 0x38, - 0x51, 0xe4, 0xc8, 0x53, 0xd7, 0x6b, 0xc5, 0xf0, 0x9b, 0xa6, 0x24, 0xf9, 0xa1, 0x55, 0xaa, 0x09, - 0x73, 0x66, 0xf6, 0x67, 0x87, 0x52, 0xc9, 0x24, 0xec, 0x28, 0x3d, 0x86, 0x41, 0xe1, 0x44, 0xb2, - 0x8a, 0xce, 0x5f, 0xe2, 0xd9, 0x80, 0x6c, 0x9f, 0x28, 0x72, 0xaa, 0x05, 0x2b, 0xf4, 0x19, 0x8b, - 0x65, 0x2e, 0xcb, 0x04, 0x1b, 0xb1, 0x3b, 0x3b, 0x9e, 0x44, 0x6a, 0x33, 0x1f, 0x5a, 0x36, 0x62, - 0x93, 0xbb, 0xa8, 0x40, 0xc0, 0xac, 0xd2, 0xee, 0x0a, 0x04, 0xcc, 0xca, 0x94, 0x70, 0xb4, 0x9d, - 0x73, 0x64, 0x5e, 0x40, 0xf6, 0x6b, 0x1f, 0x87, 0xe4, 0x5f, 0xb5, 0xe0, 0x94, 0x9b, 0x3d, 0xfb, - 0x14, 0x7b, 0x99, 0x23, 0x06, 0x65, 0xf4, 0x3e, 0x5a, 0x55, 0xea, 0xbc, 0x0b, 0x84, 0xbb, 0x3b, - 0x83, 0x9a, 0x30, 0xe0, 0xfa, 0xeb, 0x81, 0x30, 0x62, 0xea, 0x47, 0xeb, 0xd4, 0xbc, 0xbf, 0x1e, - 0xe8, 0xd5, 0x4c, 0xff, 0x61, 0x46, 0x1d, 0x2d, 0xc0, 0x99, 0x48, 0x78, 0x9b, 0xae, 0xb8, 0x71, - 0x12, 0x44, 0x3b, 0x0b, 0x6e, 0xdb, 0x4d, 0x98, 0x01, 0x52, 0xae, 0x8f, 0x53, 0xfd, 0x80, 0x73, - 0xe0, 0x38, 0xf7, 0x29, 0xf4, 0x06, 0x0c, 0xc9, 0x54, 0xeb, 0x6a, 0x11, 0xfb, 0xc2, 0xee, 0xf9, - 0xaf, 0x26, 0xd3, 0x8a, 0xc8, 0xaa, 0x96, 0x0c, 0xed, 0x37, 0x87, 0xa1, 0xfb, 0x58, 0x14, 0x7d, - 0x14, 0x6a, 0x91, 0x4a, 0xff, 0xb6, 0x8a, 0x50, 0xd7, 0xf2, 0xfb, 0x8a, 0x23, 0x59, 0x65, 0x0a, - 0xe9, 0x44, 0x6f, 0xcd, 0x91, 0x6e, 0x58, 0x62, 0x7d, 0x7a, 0x5a, 0xc0, 0xdc, 0x16, 0x5c, 0xf5, - 0xc9, 0xd8, 0x8e, 0xdf, 0xc0, 0x8c, 0x07, 0x8a, 0x60, 0x70, 0x83, 0x38, 0x5e, 0xb2, 0x51, 0x8c, - 0x13, 0xff, 0x0a, 0xa3, 0x95, 0x4d, 0x02, 0xe2, 0xad, 0x58, 0x70, 0x42, 0xdb, 0x30, 0xb4, 0xc1, - 0x27, 0x80, 0xd8, 0x43, 0x2c, 0x1e, 0x75, 0x70, 0x53, 0xb3, 0x4a, 0x7f, 0x6e, 0xd1, 0x80, 0x25, - 0x3b, 0x16, 0x6f, 0x63, 0x44, 0x04, 0xf0, 0xa5, 0x5b, 0x5c, 0xfe, 0x53, 0xff, 0xe1, 0x00, 0x1f, - 0x86, 0x91, 0x88, 0x34, 0x02, 0xbf, 0xe1, 0x7a, 0xa4, 0x39, 0x2d, 0x1d, 0xf4, 0x07, 0xc9, 0x9a, - 0x61, 0xfb, 0x70, 0x6c, 0xd0, 0xc0, 0x29, 0x8a, 0xe8, 0xd3, 0x16, 0x8c, 0xa9, 0x9c, 0x51, 0xfa, - 0x41, 0x88, 0x70, 0x08, 0x2f, 0x14, 0x94, 0xa1, 0xca, 0x68, 0xd6, 0xd1, 0xdd, 0xdd, 0x89, 0xb1, - 0x74, 0x1b, 0xce, 0xf0, 0x45, 0xaf, 0x00, 0x04, 0x6b, 0x3c, 0xa8, 0x66, 0x3a, 0x11, 0xde, 0xe1, - 0x83, 0xbc, 0xea, 0x18, 0x4f, 0x9f, 0x93, 0x14, 0xb0, 0x41, 0x0d, 0x5d, 0x03, 0xe0, 0xcb, 0x66, - 0x75, 0x27, 0x94, 0x1b, 0x0d, 0x99, 0xf6, 0x04, 0x2b, 0x0a, 0x72, 0x6f, 0x77, 0xa2, 0xdb, 0x5b, - 0xc7, 0x02, 0x17, 0x8c, 0xc7, 0xd1, 0x4f, 0xc2, 0x50, 0xdc, 0x69, 0xb7, 0x1d, 0xe5, 0x3b, 0x2e, - 0x30, 0x21, 0x8f, 0xd3, 0x35, 0x44, 0x11, 0x6f, 0xc0, 0x92, 0x23, 0xba, 0x4d, 0x85, 0x6a, 0x2c, - 0xdc, 0x88, 0x6c, 0x15, 0x71, 0x9b, 0x60, 0x98, 0xbd, 0xd3, 0x7b, 0xa4, 0xe1, 0x8d, 0x73, 0x70, - 0xee, 0xed, 0x4e, 0x3c, 0x92, 0x6e, 0x5f, 0x08, 0x44, 0x8a, 0x5c, 0x2e, 0x4d, 0x74, 0x55, 0x56, - 0x5e, 0xa1, 0xaf, 0x2d, 0x0b, 0x02, 0x3c, 0xad, 0x2b, 0xaf, 0xb0, 0xe6, 0xde, 0x63, 0x66, 0x3e, - 0x8c, 0x16, 0xe1, 0x74, 0x23, 0xf0, 0x93, 0x28, 0xf0, 0x3c, 0x5e, 0x79, 0x88, 0xef, 0xf9, 0xb8, - 0x6f, 0xf9, 0x9d, 0xa2, 0xdb, 0xa7, 0x67, 0xba, 0x51, 0x70, 0xde, 0x73, 0xb6, 0x9f, 0x8e, 0x36, - 0x14, 0x83, 0xf3, 0x3c, 0x8c, 0x90, 0xed, 0x84, 0x44, 0xbe, 0xe3, 0xdd, 0xc0, 0x0b, 0xd2, 0xab, - 0xca, 0xd6, 0xc0, 0x25, 0xa3, 0x1d, 0xa7, 0xb0, 0x90, 0xad, 0x1c, 0x1d, 0x46, 0xda, 0x27, 0x77, - 0x74, 0x48, 0xb7, 0x86, 0xfd, 0xbf, 0x4b, 0x29, 0x83, 0x6c, 0x35, 0x22, 0x04, 0x05, 0x50, 0xf1, - 0x83, 0xa6, 0x92, 0xfd, 0x57, 0x8b, 0x91, 0xfd, 0xd7, 0x83, 0xa6, 0x51, 0x9e, 0x85, 0xfe, 0x8b, - 0x31, 0xe7, 0xc3, 0xea, 0x57, 0xc8, 0x42, 0x1f, 0x0c, 0x20, 0x36, 0x1a, 0x45, 0x72, 0x56, 0xf5, - 0x2b, 0x96, 0x4c, 0x46, 0x38, 0xcd, 0x17, 0x6d, 0x42, 0x65, 0x23, 0x88, 0x13, 0xb9, 0xfd, 0x38, - 0xe2, 0x4e, 0xe7, 0x4a, 0x10, 0x27, 0xcc, 0x8a, 0x50, 0xaf, 0x4d, 0x5b, 0x62, 0xcc, 0x79, 0xd8, - 0xff, 0xc5, 0x4a, 0xf9, 0xd0, 0x6f, 0xb1, 0xc8, 0xdb, 0x2d, 0xe2, 0xd3, 0x65, 0x6d, 0x86, 0x1a, - 0xfd, 0x70, 0x26, 0x8f, 0xf1, 0x5d, 0xbd, 0x0a, 0x6b, 0xdd, 0xa1, 0x14, 0x26, 0x19, 0x09, 0x23, - 0x2a, 0xe9, 0xe3, 0x56, 0x3a, 0xa3, 0xb4, 0x54, 0xc4, 0x06, 0xc3, 0xcc, 0xaa, 0xde, 0x37, 0x39, - 0xd5, 0xfe, 0xa2, 0x05, 0x43, 0x75, 0xa7, 0xb1, 0x19, 0xac, 0xaf, 0xa3, 0x67, 0xa0, 0xda, 0xec, - 0x44, 0x66, 0x72, 0xab, 0x72, 0x1c, 0xcc, 0x8a, 0x76, 0xac, 0x30, 0xe8, 0x1c, 0x5e, 0x77, 0x1a, - 0x32, 0xb7, 0xba, 0xcc, 0xe7, 0xf0, 0x65, 0xd6, 0x82, 0x05, 0x04, 0xbd, 0x00, 0xc3, 0x6d, 0x67, - 0x5b, 0x3e, 0x9c, 0x75, 0xe0, 0x2f, 0x6a, 0x10, 0x36, 0xf1, 0xec, 0x7f, 0x69, 0xc1, 0x78, 0xdd, - 0x89, 0xdd, 0xc6, 0x74, 0x27, 0xd9, 0xa8, 0xbb, 0xc9, 0x5a, 0xa7, 0xb1, 0x49, 0x12, 0x9e, 0x50, - 0x4f, 0x7b, 0xd9, 0x89, 0xe9, 0x52, 0x52, 0xfb, 0x3a, 0xd5, 0xcb, 0x1b, 0xa2, 0x1d, 0x2b, 0x0c, - 0xf4, 0x06, 0x0c, 0x87, 0x4e, 0x1c, 0xdf, 0x09, 0xa2, 0x26, 0x26, 0xeb, 0xc5, 0x94, 0xb3, 0x58, - 0x21, 0x8d, 0x88, 0x24, 0x98, 0xac, 0x8b, 0x43, 0x66, 0x4d, 0x1f, 0x9b, 0xcc, 0xec, 0xcf, 0x5b, - 0x70, 0xae, 0x4e, 0x9c, 0x88, 0x44, 0xac, 0xfa, 0x85, 0x7a, 0x91, 0x19, 0x2f, 0xe8, 0x34, 0xd1, - 0xeb, 0x50, 0x4d, 0x68, 0x33, 0xed, 0x96, 0x55, 0x6c, 0xb7, 0xd8, 0x19, 0xf1, 0xaa, 0x20, 0x8e, - 0x15, 0x1b, 0xfb, 0x6f, 0x58, 0x30, 0xc2, 0x8e, 0xdb, 0x66, 0x49, 0xe2, 0xb8, 0x5e, 0x57, 0x91, - 0x28, 0xab, 0xcf, 0x22, 0x51, 0x17, 0x60, 0x60, 0x23, 0x68, 0x93, 0xec, 0x51, 0xf1, 0x95, 0x80, - 0x6e, 0xab, 0x29, 0x04, 0x3d, 0x47, 0x3f, 0xbc, 0xeb, 0x27, 0x0e, 0x5d, 0x02, 0xd2, 0x9d, 0x7b, - 0x82, 0x7f, 0x74, 0xd5, 0x8c, 0x4d, 0x1c, 0xfb, 0xb7, 0x6a, 0x30, 0x24, 0xe2, 0x09, 0xfa, 0x2e, - 0xaa, 0x20, 0xf7, 0xf7, 0xa5, 0x9e, 0xfb, 0xfb, 0x18, 0x06, 0x1b, 0xac, 0x5a, 0x9d, 0x30, 0x23, - 0xaf, 0x15, 0x12, 0x80, 0xc2, 0x0b, 0xe0, 0xe9, 0x6e, 0xf1, 0xff, 0x58, 0xb0, 0x42, 0x5f, 0xb0, - 0xe0, 0x44, 0x23, 0xf0, 0x7d, 0xd2, 0xd0, 0x36, 0xce, 0x40, 0x11, 0x71, 0x06, 0x33, 0x69, 0xa2, - 0xfa, 0xac, 0x27, 0x03, 0xc0, 0x59, 0xf6, 0xe8, 0x25, 0x18, 0xe5, 0x63, 0x76, 0x33, 0xe5, 0x83, - 0xd6, 0xb5, 0x83, 0x4c, 0x20, 0x4e, 0xe3, 0xa2, 0x49, 0xee, 0xcb, 0x17, 0x55, 0x7a, 0x06, 0xb5, - 0xab, 0xce, 0xa8, 0xcf, 0x63, 0x60, 0xa0, 0x08, 0x50, 0x44, 0xd6, 0x23, 0x12, 0x6f, 0x88, 0x78, - 0x0b, 0x66, 0x5f, 0x0d, 0x1d, 0x2e, 0x01, 0x1b, 0x77, 0x51, 0xc2, 0x39, 0xd4, 0xd1, 0xa6, 0xd8, - 0x60, 0x56, 0x8b, 0x90, 0xa1, 0xe2, 0x33, 0xf7, 0xdc, 0x67, 0x4e, 0x40, 0x25, 0xde, 0x70, 0xa2, - 0x26, 0xb3, 0xeb, 0xca, 0x3c, 0xe9, 0x67, 0x85, 0x36, 0x60, 0xde, 0x8e, 0x66, 0xe1, 0x64, 0xa6, - 0xf2, 0x51, 0x2c, 0x7c, 0xc5, 0x2a, 0xc1, 0x23, 0x53, 0x33, 0x29, 0xc6, 0x5d, 0x4f, 0x98, 0xce, - 0x87, 0xe1, 0x7d, 0x9c, 0x0f, 0x3b, 0x2a, 0xaa, 0x8f, 0x7b, 0x71, 0x5f, 0x2e, 0x64, 0x00, 0xfa, - 0x0a, 0xe1, 0xfb, 0x5c, 0x26, 0x84, 0x6f, 0x94, 0x75, 0xe0, 0x66, 0x31, 0x1d, 0x38, 0x78, 0xbc, - 0xde, 0x83, 0x8c, 0xbf, 0xfb, 0x73, 0x0b, 0xe4, 0x77, 0x9d, 0x71, 0x1a, 0x1b, 0x84, 0x4e, 0x19, - 0xf4, 0x5e, 0x18, 0x53, 0x5b, 0xe8, 0x99, 0xa0, 0xe3, 0xf3, 0xd0, 0xbb, 0xb2, 0x3e, 0x14, 0xc6, - 0x29, 0x28, 0xce, 0x60, 0xa3, 0x29, 0xa8, 0xd1, 0x71, 0xe2, 0x8f, 0x72, 0x5d, 0xab, 0xb6, 0xe9, - 0xd3, 0xcb, 0xf3, 0xe2, 0x29, 0x8d, 0x83, 0x02, 0x38, 0xe5, 0x39, 0x71, 0xc2, 0x7a, 0x40, 0x77, - 0xd4, 0x87, 0x2c, 0x7f, 0xc0, 0xb2, 0x08, 0x16, 0xb2, 0x84, 0x70, 0x37, 0x6d, 0xfb, 0x5b, 0x03, - 0x30, 0x9a, 0x92, 0x8c, 0x07, 0x54, 0xd2, 0xcf, 0x40, 0x55, 0xea, 0xcd, 0x6c, 0xa1, 0x16, 0xa5, - 0x5c, 0x15, 0x06, 0x55, 0x5a, 0x6b, 0x5a, 0xab, 0x66, 0x8d, 0x0a, 0x43, 0xe1, 0x62, 0x13, 0x8f, - 0x09, 0xe5, 0xc4, 0x8b, 0x67, 0x3c, 0x97, 0xf8, 0x09, 0xef, 0x66, 0x31, 0x42, 0x79, 0x75, 0x61, - 0xc5, 0x24, 0xaa, 0x85, 0x72, 0x06, 0x80, 0xb3, 0xec, 0xd1, 0xa7, 0x2c, 0x18, 0x75, 0xee, 0xc4, - 0xba, 0xa4, 0xaa, 0x08, 0xd6, 0x3b, 0xa2, 0x92, 0x4a, 0x55, 0x69, 0xe5, 0x2e, 0xdf, 0x54, 0x13, - 0x4e, 0x33, 0x45, 0x6f, 0x59, 0x80, 0xc8, 0x36, 0x69, 0xc8, 0x70, 0x42, 0xd1, 0x97, 0xc1, 0x22, - 0x76, 0x9a, 0x97, 0xba, 0xe8, 0x72, 0xa9, 0xde, 0xdd, 0x8e, 0x73, 0xfa, 0x60, 0xff, 0xb3, 0xb2, - 0x5a, 0x50, 0x3a, 0x82, 0xd5, 0x31, 0x22, 0xe9, 0xac, 0xc3, 0x47, 0xd2, 0xe9, 0x88, 0x84, 0xee, - 0xac, 0xca, 0x54, 0x12, 0x56, 0xe9, 0x01, 0x25, 0x61, 0xfd, 0xb4, 0x95, 0x2a, 0x49, 0x34, 0x7c, - 0xf1, 0x95, 0x62, 0xa3, 0x67, 0x27, 0x79, 0xb4, 0x44, 0x46, 0xba, 0xa7, 0x83, 0x64, 0xa8, 0x34, - 0x35, 0xd0, 0x0e, 0x24, 0x0d, 0xff, 0x7d, 0x19, 0x86, 0x0d, 0x4d, 0x9a, 0x6b, 0x16, 0x59, 0x0f, - 0x99, 0x59, 0x54, 0x3a, 0x80, 0x59, 0xf4, 0x53, 0x50, 0x6b, 0x48, 0x29, 0x5f, 0x4c, 0x51, 0xde, - 0xac, 0xee, 0xd0, 0x82, 0x5e, 0x35, 0x61, 0xcd, 0x13, 0xcd, 0xa5, 0x52, 0x77, 0x84, 0x86, 0x18, - 0x60, 0x1a, 0x22, 0x2f, 0xb7, 0x46, 0x68, 0x8a, 0xee, 0x67, 0x58, 0xe5, 0xaa, 0xd0, 0x15, 0xef, - 0x25, 0x63, 0xdc, 0x79, 0xe5, 0xaa, 0xe5, 0x79, 0xd9, 0x8c, 0x4d, 0x1c, 0xfb, 0x5b, 0x96, 0xfa, - 0xb8, 0xf7, 0xa1, 0x46, 0xc3, 0xed, 0x74, 0x8d, 0x86, 0x4b, 0x85, 0x0c, 0x73, 0x8f, 0xe2, 0x0c, - 0xd7, 0x61, 0x68, 0x26, 0x68, 0xb7, 0x1d, 0xbf, 0x89, 0xbe, 0x1f, 0x86, 0x1a, 0xfc, 0xa7, 0x70, - 0xec, 0xb0, 0xe3, 0x41, 0x01, 0xc5, 0x12, 0x86, 0x1e, 0x83, 0x01, 0x27, 0x6a, 0x49, 0x67, 0x0e, - 0x0b, 0xae, 0x99, 0x8e, 0x5a, 0x31, 0x66, 0xad, 0xf6, 0x3f, 0x1a, 0x00, 0x76, 0xa6, 0xed, 0x44, - 0xa4, 0xb9, 0x1a, 0xb0, 0xa2, 0x80, 0xc7, 0x7a, 0xa8, 0xa6, 0x37, 0x4b, 0x0f, 0xf3, 0xc1, 0x9a, - 0x71, 0xb8, 0x52, 0xbe, 0xcf, 0x87, 0x2b, 0x3d, 0xce, 0xcb, 0x06, 0x1e, 0xa2, 0xf3, 0x32, 0xfb, - 0xb3, 0x16, 0x20, 0x15, 0x08, 0xa1, 0x0f, 0xb4, 0xa7, 0xa0, 0xa6, 0x42, 0x22, 0x84, 0x61, 0xa5, - 0x45, 0x84, 0x04, 0x60, 0x8d, 0xd3, 0xc7, 0x0e, 0xf9, 0x49, 0x29, 0xbf, 0xcb, 0xe9, 0xb8, 0x5c, - 0x26, 0xf5, 0x85, 0x38, 0xb7, 0x7f, 0xbb, 0x04, 0x8f, 0x70, 0x95, 0xbc, 0xe8, 0xf8, 0x4e, 0x8b, - 0xb4, 0x69, 0xaf, 0xfa, 0x0d, 0x51, 0x68, 0xd0, 0xad, 0x99, 0x2b, 0xe3, 0x6c, 0x8f, 0xba, 0x76, - 0xf9, 0x9a, 0xe3, 0xab, 0x6c, 0xde, 0x77, 0x13, 0xcc, 0x88, 0xa3, 0x18, 0xaa, 0xb2, 0x62, 0xbd, - 0x90, 0xc5, 0x05, 0x31, 0x52, 0x62, 0x49, 0xe8, 0x4d, 0x82, 0x15, 0x23, 0x6a, 0xb8, 0x7a, 0x41, - 0x63, 0x13, 0x93, 0x30, 0x60, 0x72, 0xd7, 0x08, 0x73, 0x5c, 0x10, 0xed, 0x58, 0x61, 0xd8, 0xbf, - 0x6d, 0x41, 0x56, 0x23, 0x19, 0xd5, 0xd7, 0xac, 0x3d, 0xab, 0xaf, 0x1d, 0xa0, 0xfc, 0xd9, 0x4f, - 0xc0, 0xb0, 0x93, 0x50, 0x23, 0x82, 0x6f, 0xbb, 0xcb, 0x87, 0x3b, 0xd6, 0x58, 0x0c, 0x9a, 0xee, - 0xba, 0xcb, 0xb6, 0xdb, 0x26, 0x39, 0xfb, 0x7f, 0x0c, 0xc0, 0xa9, 0xae, 0x6c, 0x10, 0xf4, 0x22, - 0x8c, 0x34, 0xc4, 0xf4, 0x08, 0xa5, 0x43, 0xab, 0x66, 0x86, 0xc5, 0x69, 0x18, 0x4e, 0x61, 0xf6, - 0x31, 0x41, 0xe7, 0xe1, 0x74, 0x44, 0x37, 0xfa, 0x1d, 0x32, 0xbd, 0x9e, 0x90, 0x68, 0x85, 0x34, - 0x02, 0xbf, 0xc9, 0x6b, 0x04, 0x96, 0xeb, 0x8f, 0xde, 0xdd, 0x9d, 0x38, 0x8d, 0xbb, 0xc1, 0x38, - 0xef, 0x19, 0x14, 0xc2, 0xa8, 0x67, 0xda, 0x80, 0x62, 0x03, 0x70, 0x28, 0xf3, 0x51, 0xd9, 0x08, - 0xa9, 0x66, 0x9c, 0x66, 0x90, 0x36, 0x24, 0x2b, 0x0f, 0xc8, 0x90, 0xfc, 0xa4, 0x36, 0x24, 0xf9, - 0xf9, 0xfb, 0x07, 0x0b, 0xce, 0x06, 0x3a, 0x6e, 0x4b, 0xf2, 0x65, 0xa8, 0xca, 0xd8, 0xa4, 0xbe, - 0x62, 0x7a, 0x4c, 0x3a, 0x3d, 0x24, 0xda, 0xbd, 0x12, 0xe4, 0x6c, 0x42, 0xe8, 0x3a, 0xd3, 0x1a, - 0x3f, 0xb5, 0xce, 0x0e, 0xa6, 0xf5, 0xd1, 0x36, 0x8f, 0xcb, 0xe2, 0xba, 0xed, 0x03, 0x45, 0x6f, - 0xa2, 0x74, 0xa8, 0x96, 0x4a, 0x92, 0x50, 0xe1, 0x5a, 0x17, 0x01, 0xb4, 0xa1, 0x26, 0x42, 0xe0, - 0xd5, 0xb1, 0xaf, 0xb6, 0xe7, 0xb0, 0x81, 0x45, 0xf7, 0xd4, 0xae, 0x1f, 0x27, 0x8e, 0xe7, 0x5d, - 0x71, 0xfd, 0x44, 0x38, 0x07, 0x95, 0x12, 0x9f, 0xd7, 0x20, 0x6c, 0xe2, 0x9d, 0x7f, 0x8f, 0xf1, - 0x5d, 0x0e, 0xf2, 0x3d, 0x37, 0xe0, 0xdc, 0x9c, 0x9b, 0xa8, 0xc4, 0x0d, 0x35, 0x8f, 0xa8, 0x1d, - 0xa6, 0x12, 0x91, 0xac, 0x9e, 0x89, 0x48, 0x46, 0xe2, 0x44, 0x29, 0x9d, 0xe7, 0x91, 0x4d, 0x9c, - 0xb0, 0x5f, 0x84, 0x33, 0x73, 0x6e, 0x72, 0xd9, 0xf5, 0xc8, 0x01, 0x99, 0xd8, 0xbf, 0x39, 0x08, - 0x23, 0x66, 0xea, 0xdf, 0x41, 0x72, 0xa9, 0x3e, 0x4f, 0x4d, 0x2d, 0xf1, 0x76, 0xae, 0x3a, 0x34, - 0xbb, 0x75, 0xe4, 0x3c, 0xc4, 0xfc, 0x11, 0x33, 0xac, 0x2d, 0xcd, 0x13, 0x9b, 0x1d, 0x40, 0x77, - 0xa0, 0xb2, 0xce, 0x02, 0xfb, 0xcb, 0x45, 0x44, 0x16, 0xe4, 0x8d, 0xa8, 0x5e, 0x66, 0x3c, 0x35, - 0x80, 0xf3, 0xa3, 0x1a, 0x32, 0x4a, 0x67, 0x8b, 0x19, 0xc1, 0xa8, 0x22, 0x4f, 0x4c, 0x61, 0xf4, - 0x12, 0xf5, 0x95, 0x43, 0x88, 0xfa, 0x94, 0xe0, 0x1d, 0x7c, 0x40, 0x82, 0x97, 0x25, 0x69, 0x24, - 0x1b, 0xcc, 0x7e, 0x13, 0xd1, 0xf3, 0x43, 0x6c, 0x10, 0x8c, 0x24, 0x8d, 0x14, 0x18, 0x67, 0xf1, - 0xd1, 0xc7, 0x94, 0xe8, 0xae, 0x16, 0xe1, 0x57, 0x35, 0x67, 0xf4, 0x71, 0x4b, 0xed, 0xcf, 0x96, - 0x60, 0x6c, 0xce, 0xef, 0x2c, 0xcf, 0x2d, 0x77, 0xd6, 0x3c, 0xb7, 0x71, 0x8d, 0xec, 0x50, 0xd1, - 0xbc, 0x49, 0x76, 0xe6, 0x67, 0xc5, 0x0a, 0x52, 0x73, 0xe6, 0x1a, 0x6d, 0xc4, 0x1c, 0x46, 0x85, - 0xd1, 0xba, 0xeb, 0xb7, 0x48, 0x14, 0x46, 0xae, 0x70, 0x79, 0x1a, 0xc2, 0xe8, 0xb2, 0x06, 0x61, - 0x13, 0x8f, 0xd2, 0x0e, 0xee, 0xf8, 0x24, 0xca, 0x1a, 0xb2, 0x4b, 0xb4, 0x11, 0x73, 0x18, 0x45, - 0x4a, 0xa2, 0x4e, 0x9c, 0x88, 0xc9, 0xa8, 0x90, 0x56, 0x69, 0x23, 0xe6, 0x30, 0xba, 0xd2, 0xe3, - 0xce, 0x1a, 0x0b, 0xdc, 0xc8, 0x84, 0xea, 0xaf, 0xf0, 0x66, 0x2c, 0xe1, 0x14, 0x75, 0x93, 0xec, - 0xcc, 0xd2, 0x5d, 0x6f, 0x26, 0x63, 0xe7, 0x1a, 0x6f, 0xc6, 0x12, 0xce, 0x8a, 0x1b, 0xa6, 0x87, - 0xe3, 0xbb, 0xae, 0xb8, 0x61, 0xba, 0xfb, 0x3d, 0xf6, 0xcf, 0xbf, 0x6c, 0xc1, 0x88, 0x19, 0x6e, - 0x85, 0x5a, 0x19, 0x1b, 0x77, 0xa9, 0xab, 0x36, 0xee, 0x8f, 0xe5, 0x5d, 0x2c, 0xd6, 0x72, 0x93, - 0x20, 0x8c, 0x9f, 0x25, 0x7e, 0xcb, 0xf5, 0x09, 0x3b, 0x45, 0xe7, 0x61, 0x5a, 0xa9, 0x58, 0xae, - 0x99, 0xa0, 0x49, 0x0e, 0x61, 0x24, 0xdb, 0xb7, 0xe0, 0x54, 0x57, 0x9a, 0x56, 0x1f, 0xa6, 0xc5, - 0xbe, 0x49, 0xb2, 0x36, 0x86, 0x61, 0x4a, 0x58, 0x16, 0xd8, 0x99, 0x81, 0x53, 0x7c, 0x21, 0x51, - 0x4e, 0x2b, 0x8d, 0x0d, 0xd2, 0x56, 0xa9, 0x77, 0xcc, 0xbf, 0x7e, 0x33, 0x0b, 0xc4, 0xdd, 0xf8, - 0xf6, 0xe7, 0x2c, 0x18, 0x4d, 0x65, 0xce, 0x15, 0x64, 0x04, 0xb1, 0x95, 0x16, 0xb0, 0xe8, 0x3f, - 0x16, 0x02, 0x5d, 0x66, 0xca, 0x54, 0xaf, 0x34, 0x0d, 0xc2, 0x26, 0x9e, 0xfd, 0xc5, 0x12, 0x54, - 0x65, 0x04, 0x45, 0x1f, 0x5d, 0xf9, 0x8c, 0x05, 0xa3, 0xea, 0x4c, 0x83, 0x39, 0xcb, 0x4a, 0x45, - 0xa4, 0x39, 0xd0, 0x1e, 0xa8, 0xed, 0xb6, 0xbf, 0x1e, 0x68, 0x8b, 0x1c, 0x9b, 0xcc, 0x70, 0x9a, - 0x37, 0xba, 0x09, 0x10, 0xef, 0xc4, 0x09, 0x69, 0x1b, 0x6e, 0x3b, 0xdb, 0x58, 0x71, 0x93, 0x8d, - 0x20, 0x22, 0x74, 0x7d, 0x5d, 0x0f, 0x9a, 0x64, 0x45, 0x61, 0x6a, 0x13, 0x4a, 0xb7, 0x61, 0x83, - 0x92, 0xfd, 0x0f, 0x4a, 0x70, 0x32, 0xdb, 0x25, 0xf4, 0x41, 0x18, 0x91, 0xdc, 0x8d, 0x3b, 0xd2, - 0x64, 0xd8, 0xc8, 0x08, 0x36, 0x60, 0xf7, 0x76, 0x27, 0x26, 0xba, 0x2f, 0xa9, 0x9b, 0x34, 0x51, - 0x70, 0x8a, 0x18, 0x3f, 0x58, 0x12, 0x27, 0xa0, 0xf5, 0x9d, 0xe9, 0x30, 0x14, 0xa7, 0x43, 0xc6, - 0xc1, 0x92, 0x09, 0xc5, 0x19, 0x6c, 0xb4, 0x0c, 0x67, 0x8c, 0x96, 0xeb, 0xc4, 0x6d, 0x6d, 0xac, - 0x05, 0x91, 0xdc, 0x59, 0x3d, 0xa6, 0x03, 0xbb, 0xba, 0x71, 0x70, 0xee, 0x93, 0x54, 0xdb, 0x37, - 0x9c, 0xd0, 0x69, 0xb8, 0xc9, 0x8e, 0xf0, 0x43, 0x2a, 0xd9, 0x34, 0x23, 0xda, 0xb1, 0xc2, 0xb0, - 0x17, 0x61, 0xa0, 0xcf, 0x19, 0xd4, 0x97, 0x45, 0xff, 0x32, 0x54, 0x29, 0x39, 0x69, 0xde, 0x15, - 0x41, 0x32, 0x80, 0xaa, 0xbc, 0xbb, 0x04, 0xd9, 0x50, 0x76, 0x1d, 0x79, 0x76, 0xa7, 0x5e, 0x6b, - 0x3e, 0x8e, 0x3b, 0x6c, 0x93, 0x4c, 0x81, 0xe8, 0x49, 0x28, 0x93, 0xed, 0x30, 0x7b, 0x48, 0x77, - 0x69, 0x3b, 0x74, 0x23, 0x12, 0x53, 0x24, 0xb2, 0x1d, 0xa2, 0xf3, 0x50, 0x72, 0x9b, 0x42, 0x49, - 0x81, 0xc0, 0x29, 0xcd, 0xcf, 0xe2, 0x92, 0xdb, 0xb4, 0xb7, 0xa1, 0xa6, 0x2e, 0x4b, 0x41, 0x9b, - 0x52, 0x76, 0x5b, 0x45, 0x84, 0x3c, 0x49, 0xba, 0x3d, 0xa4, 0x76, 0x07, 0x40, 0xa7, 0x10, 0x16, - 0x25, 0x5f, 0x2e, 0xc0, 0x40, 0x23, 0x10, 0xe9, 0xcd, 0x55, 0x4d, 0x86, 0x09, 0x6d, 0x06, 0xb1, - 0x6f, 0xc1, 0xd8, 0x35, 0x3f, 0xb8, 0xc3, 0x2a, 0xbd, 0xb3, 0xc2, 0x66, 0x94, 0xf0, 0x3a, 0xfd, - 0x91, 0x35, 0x11, 0x18, 0x14, 0x73, 0x98, 0xaa, 0xf8, 0x54, 0xea, 0x55, 0xf1, 0xc9, 0xfe, 0xb8, - 0x05, 0x23, 0x2a, 0x17, 0x69, 0x6e, 0x6b, 0x93, 0xd2, 0x6d, 0x45, 0x41, 0x27, 0xcc, 0xd2, 0x65, - 0xd7, 0x19, 0x61, 0x0e, 0x33, 0x93, 0xf4, 0x4a, 0xfb, 0x24, 0xe9, 0x5d, 0x80, 0x81, 0x4d, 0xd7, - 0x6f, 0x66, 0xef, 0xe7, 0xb8, 0xe6, 0xfa, 0x4d, 0xcc, 0x20, 0xb4, 0x0b, 0x27, 0x55, 0x17, 0xa4, - 0x42, 0x78, 0x11, 0x46, 0xd6, 0x3a, 0xae, 0xd7, 0x94, 0x15, 0xdb, 0x32, 0x9e, 0x92, 0xba, 0x01, - 0xc3, 0x29, 0x4c, 0xba, 0xaf, 0x5b, 0x73, 0x7d, 0x27, 0xda, 0x59, 0xd6, 0x1a, 0x48, 0x09, 0xa5, - 0xba, 0x82, 0x60, 0x03, 0xcb, 0x7e, 0xb3, 0x0c, 0x63, 0xe9, 0x8c, 0xac, 0x3e, 0xb6, 0x57, 0x4f, - 0x42, 0x85, 0x25, 0x69, 0x65, 0x3f, 0x2d, 0x2f, 0x72, 0xc6, 0x61, 0x28, 0x86, 0x41, 0x5e, 0xde, - 0xa1, 0x98, 0xbb, 0x6d, 0x54, 0x27, 0x95, 0x7f, 0x85, 0xc5, 0x93, 0x89, 0x8a, 0x12, 0x82, 0x15, - 0xfa, 0x94, 0x05, 0x43, 0x41, 0x68, 0x56, 0x0a, 0xfa, 0x40, 0x91, 0xd9, 0x6a, 0x22, 0x59, 0x46, - 0x58, 0xc4, 0xea, 0xd3, 0xcb, 0xcf, 0x21, 0x59, 0x9f, 0xff, 0x11, 0x18, 0x31, 0x31, 0xf7, 0x33, - 0x8a, 0xab, 0xa6, 0x51, 0xfc, 0x19, 0x73, 0x52, 0x88, 0x7c, 0xbc, 0x3e, 0x96, 0xdb, 0x0d, 0xa8, - 0x34, 0x54, 0x00, 0xc0, 0xa1, 0xea, 0x7c, 0xaa, 0x7a, 0x0b, 0xec, 0x10, 0x88, 0x53, 0xb3, 0xbf, - 0x65, 0x19, 0xf3, 0x03, 0x93, 0x78, 0xbe, 0x89, 0x22, 0x28, 0xb7, 0xb6, 0x36, 0x85, 0x29, 0x7a, - 0xb5, 0xa0, 0xe1, 0x9d, 0xdb, 0xda, 0xd4, 0x73, 0xdc, 0x6c, 0xc5, 0x94, 0x59, 0x1f, 0x4e, 0xc0, - 0x54, 0xda, 0x66, 0x79, 0xff, 0xb4, 0x4d, 0xfb, 0xad, 0x12, 0x9c, 0xea, 0x9a, 0x54, 0xe8, 0x0d, - 0xa8, 0x44, 0xf4, 0x2d, 0xc5, 0xeb, 0x2d, 0x14, 0x96, 0x68, 0x19, 0xcf, 0x37, 0xb5, 0xde, 0x4d, - 0xb7, 0x63, 0xce, 0x12, 0x5d, 0x05, 0xa4, 0xc3, 0x54, 0x94, 0x07, 0x92, 0xbf, 0xf2, 0x79, 0xf1, - 0x28, 0x9a, 0xee, 0xc2, 0xc0, 0x39, 0x4f, 0xa1, 0x97, 0xb2, 0x8e, 0xcc, 0x72, 0xfa, 0xdc, 0x72, - 0x2f, 0x9f, 0xa4, 0xfd, 0xcf, 0x4b, 0x30, 0x9a, 0x2a, 0xdc, 0x84, 0x3c, 0xa8, 0x12, 0x8f, 0x39, - 0xf5, 0xa5, 0xb2, 0x39, 0x6a, 0x1d, 0x64, 0xa5, 0x20, 0x2f, 0x09, 0xba, 0x58, 0x71, 0x78, 0x38, - 0x0e, 0xd7, 0x5f, 0x84, 0x11, 0xd9, 0xa1, 0x0f, 0x38, 0x6d, 0x4f, 0x0c, 0xa0, 0x9a, 0xa3, 0x97, - 0x0c, 0x18, 0x4e, 0x61, 0xda, 0xbf, 0x53, 0x86, 0x71, 0x7e, 0x0a, 0xd2, 0x54, 0x33, 0x6f, 0x51, - 0xee, 0xb7, 0xfe, 0x8a, 0x2e, 0xaf, 0xc6, 0x07, 0x72, 0xed, 0xa8, 0xd7, 0x0e, 0xe4, 0x33, 0xea, - 0x2b, 0x32, 0xeb, 0x2b, 0x99, 0xc8, 0x2c, 0x6e, 0x76, 0xb7, 0x8e, 0xa9, 0x47, 0xdf, 0x5d, 0xa1, - 0x5a, 0x7f, 0xb7, 0x04, 0x27, 0x32, 0x77, 0x3a, 0xa0, 0x37, 0xd3, 0x65, 0x80, 0xad, 0x22, 0x7c, - 0xe5, 0x7b, 0x96, 0xf9, 0x3f, 0x58, 0x31, 0xe0, 0x07, 0xb4, 0x54, 0xec, 0x3f, 0x28, 0xc1, 0x58, - 0xfa, 0x32, 0x8a, 0x87, 0x70, 0xa4, 0xde, 0x0d, 0x35, 0x56, 0x6f, 0x9d, 0x5d, 0xb2, 0xc9, 0x5d, - 0xf2, 0xbc, 0xb4, 0xb5, 0x6c, 0xc4, 0x1a, 0xfe, 0x50, 0xd4, 0x58, 0xb6, 0xff, 0x9e, 0x05, 0x67, - 0xf9, 0x5b, 0x66, 0xe7, 0xe1, 0x5f, 0xcd, 0x1b, 0xdd, 0x57, 0x8b, 0xed, 0x60, 0xa6, 0x2c, 0xe0, - 0x7e, 0xe3, 0xcb, 0x2e, 0xf7, 0x13, 0xbd, 0x4d, 0x4f, 0x85, 0x87, 0xb0, 0xb3, 0x07, 0x9a, 0x0c, - 0xf6, 0x1f, 0x94, 0x41, 0xdf, 0x67, 0x88, 0x5c, 0x91, 0xe3, 0x58, 0x48, 0x79, 0xc4, 0x95, 0x1d, - 0xbf, 0xa1, 0x6f, 0x4e, 0xac, 0x66, 0x52, 0x1c, 0x7f, 0xce, 0x82, 0x61, 0xd7, 0x77, 0x13, 0xd7, - 0x61, 0xdb, 0xe8, 0x62, 0xee, 0x5a, 0x53, 0xec, 0xe6, 0x39, 0xe5, 0x20, 0x32, 0xcf, 0x71, 0x14, - 0x33, 0x6c, 0x72, 0x46, 0x1f, 0x16, 0xc1, 0xd3, 0xe5, 0xc2, 0xb2, 0x73, 0xab, 0x99, 0x88, 0xe9, - 0x90, 0x1a, 0x5e, 0x49, 0x54, 0x50, 0x52, 0x3b, 0xa6, 0xa4, 0x54, 0xa5, 0x5d, 0x7d, 0xb3, 0x34, - 0x6d, 0xc6, 0x9c, 0x91, 0x1d, 0x03, 0xea, 0x1e, 0x8b, 0x03, 0x06, 0xa6, 0x4e, 0x41, 0xcd, 0xe9, - 0x24, 0x41, 0x9b, 0x0e, 0x93, 0x38, 0x6a, 0xd2, 0xa1, 0xb7, 0x12, 0x80, 0x35, 0x8e, 0xfd, 0x66, - 0x05, 0x32, 0x49, 0x87, 0x68, 0xdb, 0xbc, 0x8b, 0xd3, 0x2a, 0xf6, 0x2e, 0x4e, 0xd5, 0x99, 0xbc, - 0xfb, 0x38, 0x51, 0x0b, 0x2a, 0xe1, 0x86, 0x13, 0x4b, 0xb3, 0xfa, 0x65, 0xb5, 0x8f, 0xa3, 0x8d, - 0xf7, 0x76, 0x27, 0x7e, 0xbc, 0x3f, 0xaf, 0x2b, 0x9d, 0xab, 0x53, 0xbc, 0x7c, 0x89, 0x66, 0xcd, - 0x68, 0x60, 0x4e, 0xff, 0x20, 0xb7, 0xcd, 0x7d, 0x42, 0x14, 0x96, 0xc7, 0x24, 0xee, 0x78, 0x89, - 0x98, 0x0d, 0x2f, 0x17, 0xb8, 0xca, 0x38, 0x61, 0x9d, 0x2e, 0xcf, 0xff, 0x63, 0x83, 0x29, 0xfa, - 0x20, 0xd4, 0xe2, 0xc4, 0x89, 0x92, 0x43, 0x26, 0xb8, 0xaa, 0x41, 0x5f, 0x91, 0x44, 0xb0, 0xa6, - 0x87, 0x5e, 0x61, 0xd5, 0x62, 0xdd, 0x78, 0xe3, 0x90, 0x39, 0x0f, 0xb2, 0xb2, 0xac, 0xa0, 0x80, - 0x0d, 0x6a, 0xe8, 0x22, 0x00, 0x9b, 0xdb, 0x3c, 0xd0, 0xaf, 0xca, 0xbc, 0x4c, 0x4a, 0x14, 0x62, - 0x05, 0xc1, 0x06, 0x96, 0xfd, 0x83, 0x90, 0xae, 0xf7, 0x80, 0x26, 0x64, 0x79, 0x09, 0xee, 0x85, - 0x66, 0xb9, 0x0b, 0xa9, 0x4a, 0x10, 0xbf, 0x6e, 0x81, 0x59, 0x94, 0x02, 0xbd, 0xce, 0xab, 0x5f, - 0x58, 0x45, 0x9c, 0x1c, 0x1a, 0x74, 0x27, 0x17, 0x9d, 0x30, 0x73, 0x84, 0x2d, 0x4b, 0x60, 0x9c, - 0x7f, 0x0f, 0x54, 0x25, 0xf4, 0x40, 0x46, 0xdd, 0xc7, 0xe0, 0x74, 0xf6, 0xa6, 0x72, 0x71, 0xea, - 0xb4, 0xbf, 0xeb, 0x47, 0xfa, 0x73, 0x4a, 0xbd, 0xfc, 0x39, 0x7d, 0xdc, 0xc8, 0xfa, 0x1b, 0x16, - 0x5c, 0xd8, 0xef, 0x42, 0x75, 0xf4, 0x18, 0x0c, 0xdc, 0x71, 0x22, 0x59, 0xc6, 0x9b, 0x09, 0xca, - 0x5b, 0x4e, 0xe4, 0x63, 0xd6, 0x8a, 0x76, 0x60, 0x90, 0x47, 0x83, 0x09, 0x6b, 0xfd, 0xe5, 0x62, - 0xaf, 0x77, 0xbf, 0x46, 0x8c, 0xed, 0x02, 0x8f, 0x44, 0xc3, 0x82, 0xa1, 0xfd, 0x6d, 0x0b, 0xd0, - 0xd2, 0x16, 0x89, 0x22, 0xb7, 0x69, 0xc4, 0xaf, 0xb1, 0x0b, 0x5a, 0x8c, 0x8b, 0x58, 0xcc, 0x14, - 0xd7, 0xcc, 0x05, 0x2d, 0xc6, 0xbf, 0xfc, 0x0b, 0x5a, 0x4a, 0x07, 0xbb, 0xa0, 0x05, 0x2d, 0xc1, - 0xd9, 0x36, 0xdf, 0x6e, 0xf0, 0x4b, 0x0f, 0xf8, 0xde, 0x43, 0x25, 0x94, 0x9d, 0xbb, 0xbb, 0x3b, - 0x71, 0x76, 0x31, 0x0f, 0x01, 0xe7, 0x3f, 0x67, 0xbf, 0x07, 0x10, 0x0f, 0x5b, 0x9b, 0xc9, 0x8b, - 0x41, 0xea, 0xe9, 0x7e, 0xb1, 0xbf, 0x5c, 0x81, 0x13, 0x99, 0x22, 0xaf, 0x74, 0xab, 0xd7, 0x1d, - 0xf4, 0x74, 0x64, 0xfd, 0xdd, 0xdd, 0xbd, 0xbe, 0xc2, 0xa8, 0x7c, 0xa8, 0xb8, 0x7e, 0xd8, 0x49, - 0x8a, 0xc9, 0x21, 0xe5, 0x9d, 0x98, 0xa7, 0x04, 0x0d, 0x77, 0x31, 0xfd, 0x8b, 0x39, 0x9b, 0x22, - 0x83, 0xb2, 0x52, 0xc6, 0xf8, 0xc0, 0x03, 0x72, 0x07, 0x7c, 0x42, 0x87, 0x48, 0x55, 0x8a, 0x70, - 0x2c, 0x66, 0x26, 0xcb, 0x71, 0x1f, 0xb5, 0xff, 0x5a, 0x09, 0x86, 0x8d, 0x8f, 0x86, 0x7e, 0x29, - 0x5d, 0xb2, 0xc9, 0x2a, 0xee, 0x95, 0x18, 0xfd, 0x49, 0x5d, 0x94, 0x89, 0xbf, 0xd2, 0x53, 0xdd, - 0xd5, 0x9a, 0xee, 0xed, 0x4e, 0x9c, 0xcc, 0xd4, 0x63, 0x4a, 0x55, 0x70, 0x3a, 0xff, 0x51, 0x38, - 0x91, 0x21, 0x93, 0xf3, 0xca, 0xab, 0xe9, 0x8b, 0xe8, 0x8f, 0xe8, 0x96, 0x32, 0x87, 0xec, 0xeb, - 0x74, 0xc8, 0x44, 0x1a, 0x5d, 0xe0, 0x91, 0x3e, 0x7c, 0xb0, 0x99, 0x6c, 0xd9, 0x52, 0x9f, 0xd9, - 0xb2, 0x4f, 0x43, 0x35, 0x0c, 0x3c, 0xb7, 0xe1, 0xaa, 0xba, 0x86, 0x2c, 0x3f, 0x77, 0x59, 0xb4, - 0x61, 0x05, 0x45, 0x77, 0xa0, 0xa6, 0xee, 0xec, 0x17, 0xfe, 0xed, 0xa2, 0x0e, 0x7d, 0x94, 0xd1, - 0xa2, 0xef, 0xe2, 0xd7, 0xbc, 0x90, 0x0d, 0x83, 0x4c, 0x09, 0xca, 0xd0, 0x7f, 0xe6, 0x7b, 0x67, - 0xda, 0x31, 0xc6, 0x02, 0x62, 0x7f, 0xad, 0x06, 0x67, 0xf2, 0x2a, 0x6d, 0xa3, 0x8f, 0xc0, 0x20, - 0xef, 0x63, 0x31, 0x97, 0x39, 0xe4, 0xf1, 0x98, 0x63, 0x04, 0x45, 0xb7, 0xd8, 0x6f, 0x2c, 0x78, - 0x0a, 0xee, 0x9e, 0xb3, 0x26, 0x66, 0xc8, 0xf1, 0x70, 0x5f, 0x70, 0x34, 0xf7, 0x05, 0x87, 0x73, - 0xf7, 0x9c, 0x35, 0xb4, 0x0d, 0x95, 0x96, 0x9b, 0x10, 0x47, 0x38, 0x11, 0x6e, 0x1d, 0x0b, 0x73, - 0xe2, 0x70, 0x2b, 0x8d, 0xfd, 0xc4, 0x9c, 0x21, 0xfa, 0xaa, 0x05, 0x27, 0xd6, 0xd2, 0xa9, 0xf1, - 0x42, 0x78, 0x3a, 0xc7, 0x50, 0x4d, 0x3d, 0xcd, 0x88, 0xdf, 0x50, 0x94, 0x69, 0xc4, 0xd9, 0xee, - 0xa0, 0x4f, 0x5a, 0x30, 0xb4, 0xee, 0x7a, 0x46, 0x61, 0xdd, 0x63, 0xf8, 0x38, 0x97, 0x19, 0x03, - 0xbd, 0xe3, 0xe0, 0xff, 0x63, 0x2c, 0x39, 0xf7, 0xd2, 0x54, 0x83, 0x47, 0xd5, 0x54, 0x43, 0x0f, - 0x48, 0x53, 0x7d, 0xda, 0x82, 0x9a, 0x1a, 0x69, 0x91, 0xee, 0xfc, 0xc1, 0x63, 0xfc, 0xe4, 0xdc, - 0x73, 0xa2, 0xfe, 0x62, 0xcd, 0x1c, 0x7d, 0xc1, 0x82, 0x61, 0xe7, 0x8d, 0x4e, 0x44, 0x9a, 0x64, - 0x2b, 0x08, 0x63, 0x71, 0xbd, 0xe1, 0xab, 0xc5, 0x77, 0x66, 0x9a, 0x32, 0x99, 0x25, 0x5b, 0x4b, - 0x61, 0x2c, 0xd2, 0x92, 0x74, 0x03, 0x36, 0xbb, 0x60, 0xef, 0x96, 0x60, 0x62, 0x1f, 0x0a, 0xe8, - 0x45, 0x18, 0x09, 0xa2, 0x96, 0xe3, 0xbb, 0x6f, 0x98, 0xb5, 0x2e, 0x94, 0x95, 0xb5, 0x64, 0xc0, - 0x70, 0x0a, 0xd3, 0x4c, 0xc8, 0x2e, 0xed, 0x93, 0x90, 0x7d, 0x01, 0x06, 0x22, 0x12, 0x06, 0xd9, - 0xcd, 0x02, 0x4b, 0x09, 0x60, 0x10, 0xf4, 0x38, 0x94, 0x9d, 0xd0, 0x15, 0x81, 0x68, 0x6a, 0x0f, - 0x34, 0xbd, 0x3c, 0x8f, 0x69, 0x7b, 0xaa, 0x3e, 0x44, 0xe5, 0xbe, 0xd4, 0x87, 0xa0, 0x6a, 0x40, - 0x9c, 0x5d, 0x0c, 0x6a, 0x35, 0x90, 0x3e, 0x53, 0xb0, 0xdf, 0x2a, 0xc3, 0xe3, 0x7b, 0xce, 0x17, - 0x1d, 0x87, 0x67, 0xed, 0x11, 0x87, 0x27, 0x87, 0xa7, 0xb4, 0xdf, 0xf0, 0x94, 0x7b, 0x0c, 0xcf, - 0x27, 0xe9, 0x32, 0x90, 0x35, 0x42, 0x8a, 0xb9, 0xa0, 0xae, 0x57, 0xc9, 0x11, 0xb1, 0x02, 0x24, - 0x14, 0x6b, 0xbe, 0x74, 0x0f, 0x90, 0x4a, 0x46, 0xae, 0x14, 0xa1, 0x06, 0x7a, 0xd6, 0x0c, 0xe1, - 0x73, 0xbf, 0x57, 0x86, 0xb3, 0xfd, 0xf3, 0x25, 0x78, 0xb2, 0x0f, 0xe9, 0x6d, 0xce, 0x62, 0xab, - 0xcf, 0x59, 0xfc, 0xdd, 0xfd, 0x99, 0xec, 0xbf, 0x66, 0xc1, 0xf9, 0xde, 0xca, 0x03, 0x3d, 0x07, - 0xc3, 0x6b, 0x91, 0xe3, 0x37, 0x36, 0xd8, 0xa5, 0x9b, 0x72, 0x50, 0xd8, 0x58, 0xeb, 0x66, 0x6c, - 0xe2, 0xd0, 0xed, 0x2d, 0x8f, 0x49, 0x30, 0x30, 0x64, 0xf2, 0x28, 0xdd, 0xde, 0xae, 0x66, 0x81, - 0xb8, 0x1b, 0xdf, 0xfe, 0xb3, 0x52, 0x7e, 0xb7, 0xb8, 0x91, 0x71, 0x90, 0xef, 0x24, 0xbe, 0x42, - 0xa9, 0x0f, 0x59, 0x52, 0xbe, 0xdf, 0xb2, 0x64, 0xa0, 0x97, 0x2c, 0x41, 0xb3, 0x70, 0xd2, 0xb8, - 0x94, 0x85, 0x27, 0x04, 0xf3, 0x80, 0x5b, 0x55, 0x25, 0x63, 0x39, 0x03, 0xc7, 0x5d, 0x4f, 0xa0, - 0x67, 0xa0, 0xea, 0xfa, 0x31, 0x69, 0x74, 0x22, 0x1e, 0xe8, 0x6d, 0x24, 0x61, 0xcd, 0x8b, 0x76, - 0xac, 0x30, 0xec, 0x5f, 0x2e, 0xc1, 0xb9, 0x9e, 0x76, 0xd6, 0x7d, 0x92, 0x5d, 0xe6, 0xe7, 0x18, - 0xb8, 0x3f, 0x9f, 0xc3, 0x1c, 0xa4, 0xca, 0xbe, 0x83, 0xf4, 0x87, 0xbd, 0x27, 0x26, 0xb5, 0xb9, - 0xbf, 0x67, 0x47, 0xe9, 0x25, 0x18, 0x75, 0xc2, 0x90, 0xe3, 0xb1, 0x78, 0xcd, 0x4c, 0x95, 0x9c, - 0x69, 0x13, 0x88, 0xd3, 0xb8, 0x7d, 0x69, 0xcf, 0x3f, 0xb6, 0xa0, 0x86, 0xc9, 0x3a, 0x97, 0x0e, - 0xe8, 0xb6, 0x18, 0x22, 0xab, 0x88, 0x7a, 0x9a, 0x74, 0x60, 0x63, 0x97, 0xd5, 0x99, 0xcc, 0x1b, - 0xec, 0xee, 0xcb, 0x7b, 0x4a, 0x07, 0xba, 0xbc, 0x47, 0x5d, 0xdf, 0x52, 0xee, 0x7d, 0x7d, 0x8b, - 0xfd, 0xf5, 0x21, 0xfa, 0x7a, 0x61, 0x30, 0x13, 0x91, 0x66, 0x4c, 0xbf, 0x6f, 0x27, 0xf2, 0xc4, - 0x24, 0x51, 0xdf, 0xf7, 0x06, 0x5e, 0xc0, 0xb4, 0x3d, 0x75, 0x14, 0x53, 0x3a, 0x50, 0x8d, 0x90, - 0xf2, 0xbe, 0x35, 0x42, 0x5e, 0x82, 0xd1, 0x38, 0xde, 0x58, 0x8e, 0xdc, 0x2d, 0x27, 0x21, 0xd7, - 0xc8, 0x8e, 0xb0, 0xb2, 0x74, 0x5e, 0xff, 0xca, 0x15, 0x0d, 0xc4, 0x69, 0x5c, 0x34, 0x07, 0xa7, - 0x74, 0xa5, 0x0e, 0x12, 0x25, 0x2c, 0xba, 0x9f, 0xcf, 0x04, 0x95, 0xc4, 0xab, 0x6b, 0x7b, 0x08, - 0x04, 0xdc, 0xfd, 0x0c, 0x95, 0x6f, 0xa9, 0x46, 0xda, 0x91, 0xc1, 0xb4, 0x7c, 0x4b, 0xd1, 0xa1, - 0x7d, 0xe9, 0x7a, 0x02, 0x2d, 0xc2, 0x69, 0x3e, 0x31, 0xa6, 0xc3, 0xd0, 0x78, 0xa3, 0xa1, 0x74, - 0x1d, 0xc3, 0xb9, 0x6e, 0x14, 0x9c, 0xf7, 0x1c, 0x7a, 0x01, 0x86, 0x55, 0xf3, 0xfc, 0xac, 0x38, - 0x45, 0x50, 0x5e, 0x0c, 0x45, 0x66, 0xbe, 0x89, 0x4d, 0x3c, 0xf4, 0x01, 0x78, 0x54, 0xff, 0xe5, - 0x29, 0x60, 0xfc, 0x68, 0x6d, 0x56, 0x14, 0x41, 0x52, 0x97, 0x85, 0xcc, 0xe5, 0xa2, 0x35, 0x71, - 0xaf, 0xe7, 0xd1, 0x1a, 0x9c, 0x57, 0xa0, 0x4b, 0x7e, 0xc2, 0xf2, 0x39, 0x62, 0x52, 0x77, 0x62, - 0x72, 0x23, 0xf2, 0xc4, 0x6d, 0xab, 0xea, 0x1e, 0xc7, 0x39, 0x37, 0xb9, 0x92, 0x87, 0x89, 0x17, - 0xf0, 0x1e, 0x54, 0xd0, 0x14, 0xd4, 0x88, 0xef, 0xac, 0x79, 0x64, 0x69, 0x66, 0x9e, 0x15, 0x53, - 0x32, 0x4e, 0xf2, 0x2e, 0x49, 0x00, 0xd6, 0x38, 0x2a, 0xc2, 0x74, 0xa4, 0xe7, 0x9d, 0xa2, 0xcb, - 0x70, 0xa6, 0xd5, 0x08, 0xa9, 0xed, 0xe1, 0x36, 0xc8, 0x74, 0x83, 0x05, 0xd4, 0xd1, 0x0f, 0xc3, - 0x0b, 0x4c, 0xaa, 0xf0, 0xe9, 0xb9, 0x99, 0xe5, 0x2e, 0x1c, 0x9c, 0xfb, 0x24, 0x0b, 0xbc, 0x8c, - 0x82, 0xed, 0x9d, 0xf1, 0xd3, 0x99, 0xc0, 0x4b, 0xda, 0x88, 0x39, 0x0c, 0x5d, 0x05, 0xc4, 0x62, - 0xf1, 0xaf, 0x24, 0x49, 0xa8, 0x8c, 0x9d, 0xf1, 0x33, 0xec, 0x95, 0x54, 0x18, 0xd9, 0xe5, 0x2e, - 0x0c, 0x9c, 0xf3, 0x94, 0xfd, 0x1f, 0x2c, 0x18, 0x55, 0xeb, 0xf5, 0x3e, 0x64, 0xa3, 0x78, 0xe9, - 0x6c, 0x94, 0xb9, 0xa3, 0x4b, 0x3c, 0xd6, 0xf3, 0x1e, 0x21, 0xcd, 0x3f, 0x33, 0x0c, 0xa0, 0xa5, - 0xa2, 0x52, 0x48, 0x56, 0x4f, 0x85, 0xf4, 0xd0, 0x4a, 0xa4, 0xbc, 0xca, 0x29, 0x95, 0x07, 0x5b, - 0x39, 0x65, 0x05, 0xce, 0x4a, 0x73, 0x81, 0x9f, 0x15, 0x5d, 0x09, 0x62, 0x25, 0xe0, 0xaa, 0xf5, - 0xc7, 0x05, 0xa1, 0xb3, 0xf3, 0x79, 0x48, 0x38, 0xff, 0xd9, 0x94, 0x95, 0x32, 0xb4, 0x9f, 0x95, - 0xa2, 0xd7, 0xf4, 0xc2, 0xba, 0xbc, 0x15, 0x24, 0xb3, 0xa6, 0x17, 0x2e, 0xaf, 0x60, 0x8d, 0x93, - 0x2f, 0xd8, 0x6b, 0x05, 0x09, 0x76, 0x38, 0xb0, 0x60, 0x97, 0x22, 0x66, 0xb8, 0xa7, 0x88, 0x91, - 0x3e, 0xe9, 0x91, 0x9e, 0x3e, 0xe9, 0xf7, 0xc2, 0x98, 0xeb, 0x6f, 0x90, 0xc8, 0x4d, 0x48, 0x93, - 0xad, 0x05, 0x26, 0x7e, 0xaa, 0x5a, 0xad, 0xcf, 0xa7, 0xa0, 0x38, 0x83, 0x9d, 0x96, 0x8b, 0x63, - 0x7d, 0xc8, 0xc5, 0x1e, 0xda, 0xe8, 0x44, 0x31, 0xda, 0xe8, 0xe4, 0xd1, 0xb5, 0xd1, 0xa9, 0x63, - 0xd5, 0x46, 0xa8, 0x10, 0x6d, 0xd4, 0x97, 0xa0, 0x37, 0xb6, 0x7f, 0x67, 0xf6, 0xd9, 0xfe, 0xf5, - 0x52, 0x45, 0x67, 0x0f, 0xad, 0x8a, 0xf2, 0xb5, 0xcc, 0x23, 0x87, 0xd2, 0x32, 0x9f, 0x2e, 0xc1, - 0x59, 0x2d, 0x87, 0xe9, 0xec, 0x77, 0xd7, 0xa9, 0x24, 0x62, 0x17, 0x4b, 0xf1, 0x73, 0x1b, 0x23, - 0x39, 0x4a, 0xe7, 0x59, 0x29, 0x08, 0x36, 0xb0, 0x58, 0x8e, 0x11, 0x89, 0x58, 0x19, 0xdd, 0xac, - 0x90, 0x9e, 0x11, 0xed, 0x58, 0x61, 0xd0, 0xf9, 0x45, 0x7f, 0x8b, 0xbc, 0xcd, 0x6c, 0xb1, 0xb8, - 0x19, 0x0d, 0xc2, 0x26, 0x1e, 0x7a, 0x9a, 0x33, 0x61, 0x02, 0x82, 0x0a, 0xea, 0x11, 0x71, 0xd3, - 0xac, 0x94, 0x09, 0x0a, 0x2a, 0xbb, 0xc3, 0x92, 0xc9, 0x2a, 0xdd, 0xdd, 0x61, 0x21, 0x50, 0x0a, - 0xc3, 0xfe, 0x9f, 0x16, 0x9c, 0xcb, 0x1d, 0x8a, 0xfb, 0xa0, 0x7c, 0xb7, 0xd3, 0xca, 0x77, 0xa5, - 0xa8, 0xed, 0x86, 0xf1, 0x16, 0x3d, 0x14, 0xf1, 0xbf, 0xb3, 0x60, 0x4c, 0xe3, 0xdf, 0x87, 0x57, - 0x75, 0xd3, 0xaf, 0x5a, 0xdc, 0xce, 0xaa, 0xd6, 0xf5, 0x6e, 0xbf, 0x53, 0x02, 0x55, 0xc0, 0x71, - 0xba, 0x21, 0xcb, 0xe3, 0xee, 0x73, 0x92, 0xb8, 0x03, 0x83, 0xec, 0x20, 0x34, 0x2e, 0x26, 0xc8, - 0x23, 0xcd, 0x9f, 0x1d, 0xaa, 0xea, 0x43, 0x66, 0xf6, 0x37, 0xc6, 0x82, 0x21, 0x2b, 0xf2, 0xec, - 0xc6, 0x54, 0x9a, 0x37, 0x45, 0x5a, 0x96, 0x2e, 0xf2, 0x2c, 0xda, 0xb1, 0xc2, 0xa0, 0xea, 0xc1, - 0x6d, 0x04, 0xfe, 0x8c, 0xe7, 0xc4, 0xf2, 0x36, 0x45, 0xa5, 0x1e, 0xe6, 0x25, 0x00, 0x6b, 0x1c, - 0x76, 0x46, 0xea, 0xc6, 0xa1, 0xe7, 0xec, 0x18, 0xfb, 0x67, 0xa3, 0x3e, 0x81, 0x02, 0x61, 0x13, - 0xcf, 0x6e, 0xc3, 0x78, 0xfa, 0x25, 0x66, 0xc9, 0x3a, 0x0b, 0x50, 0xec, 0x6b, 0x38, 0xa7, 0xa0, - 0xe6, 0xb0, 0xa7, 0x16, 0x3a, 0x4e, 0xf6, 0x12, 0xf4, 0x69, 0x09, 0xc0, 0x1a, 0xc7, 0xfe, 0x55, - 0x0b, 0x4e, 0xe7, 0x0c, 0x5a, 0x81, 0x69, 0x6f, 0x89, 0x96, 0x36, 0x79, 0x8a, 0xfd, 0x07, 0x60, - 0xa8, 0x49, 0xd6, 0x1d, 0x19, 0x02, 0x67, 0xc8, 0xf6, 0x59, 0xde, 0x8c, 0x25, 0xdc, 0xfe, 0xef, - 0x16, 0x9c, 0x48, 0xf7, 0x35, 0x66, 0xa9, 0x24, 0x7c, 0x98, 0xdc, 0xb8, 0x11, 0x6c, 0x91, 0x68, - 0x87, 0xbe, 0xb9, 0x95, 0x49, 0x25, 0xe9, 0xc2, 0xc0, 0x39, 0x4f, 0xb1, 0xf2, 0xad, 0x4d, 0x35, - 0xda, 0x72, 0x46, 0xde, 0x2c, 0x72, 0x46, 0xea, 0x8f, 0x69, 0x1e, 0x97, 0x2b, 0x96, 0xd8, 0xe4, - 0x6f, 0x7f, 0x7b, 0x00, 0x54, 0x5e, 0x2c, 0x8b, 0x3f, 0x2a, 0x28, 0x7a, 0xeb, 0xa0, 0x19, 0x44, - 0x6a, 0x32, 0x0c, 0xec, 0x15, 0x10, 0xc0, 0xbd, 0x24, 0xa6, 0xeb, 0x52, 0xbd, 0xe1, 0xaa, 0x06, - 0x61, 0x13, 0x8f, 0xf6, 0xc4, 0x73, 0xb7, 0x08, 0x7f, 0x68, 0x30, 0xdd, 0x93, 0x05, 0x09, 0xc0, - 0x1a, 0x87, 0xf6, 0xa4, 0xe9, 0xae, 0xaf, 0x8b, 0x2d, 0xbf, 0xea, 0x09, 0x1d, 0x1d, 0xcc, 0x20, - 0xbc, 0x22, 0x77, 0xb0, 0x29, 0xac, 0x60, 0xa3, 0x22, 0x77, 0xb0, 0x89, 0x19, 0x84, 0xda, 0x6d, - 0x7e, 0x10, 0xb5, 0xd9, 0x25, 0xf5, 0x4d, 0xc5, 0x45, 0x58, 0xbf, 0xca, 0x6e, 0xbb, 0xde, 0x8d, - 0x82, 0xf3, 0x9e, 0xa3, 0x33, 0x30, 0x8c, 0x48, 0xd3, 0x6d, 0x24, 0x26, 0x35, 0x48, 0xcf, 0xc0, - 0xe5, 0x2e, 0x0c, 0x9c, 0xf3, 0x14, 0x9a, 0x86, 0x13, 0x32, 0xaf, 0x59, 0x56, 0xad, 0x19, 0x4e, - 0x57, 0xc9, 0xc0, 0x69, 0x30, 0xce, 0xe2, 0x53, 0xa9, 0xd6, 0x16, 0x05, 0xab, 0x98, 0xb1, 0x6c, - 0x48, 0x35, 0x59, 0xc8, 0x0a, 0x2b, 0x0c, 0xfb, 0x13, 0x65, 0xaa, 0x85, 0x7b, 0x14, 0x6a, 0xbb, - 0x6f, 0xd1, 0x82, 0xe9, 0x19, 0x39, 0xd0, 0xc7, 0x8c, 0x7c, 0x1e, 0x46, 0x6e, 0xc7, 0x81, 0xaf, - 0x22, 0xf1, 0x2a, 0x3d, 0x23, 0xf1, 0x0c, 0xac, 0xfc, 0x48, 0xbc, 0xc1, 0xa2, 0x22, 0xf1, 0x86, - 0x0e, 0x19, 0x89, 0xf7, 0xcd, 0x0a, 0xa8, 0xab, 0x41, 0xae, 0x93, 0xe4, 0x4e, 0x10, 0x6d, 0xba, - 0x7e, 0x8b, 0xe5, 0x83, 0x7f, 0xd5, 0x82, 0x11, 0xbe, 0x5e, 0x16, 0xcc, 0x4c, 0xaa, 0xf5, 0x82, - 0xee, 0x9c, 0x48, 0x31, 0x9b, 0x5c, 0x35, 0x18, 0x65, 0x2e, 0xf3, 0x34, 0x41, 0x38, 0xd5, 0x23, - 0xf4, 0x51, 0x00, 0xe9, 0x1f, 0x5d, 0x97, 0x22, 0x73, 0xbe, 0x98, 0xfe, 0x61, 0xb2, 0xae, 0x6d, - 0xe0, 0x55, 0xc5, 0x04, 0x1b, 0x0c, 0xd1, 0xa7, 0x75, 0x96, 0x19, 0x0f, 0xd9, 0xff, 0xf0, 0xb1, - 0x8c, 0x4d, 0x3f, 0x39, 0x66, 0x18, 0x86, 0x5c, 0xbf, 0x45, 0xe7, 0x89, 0x88, 0x58, 0x7a, 0x57, - 0x5e, 0x2d, 0x85, 0x85, 0xc0, 0x69, 0xd6, 0x1d, 0xcf, 0xf1, 0x1b, 0x24, 0x9a, 0xe7, 0xe8, 0xe6, - 0x15, 0xd6, 0xac, 0x01, 0x4b, 0x42, 0x5d, 0x97, 0xaa, 0x54, 0xfa, 0xb9, 0x54, 0xe5, 0xfc, 0xfb, - 0xe0, 0x54, 0xd7, 0xc7, 0x3c, 0x50, 0x4a, 0xd9, 0xe1, 0xb3, 0xd1, 0xec, 0x7f, 0x31, 0xa8, 0x95, - 0xd6, 0xf5, 0xa0, 0xc9, 0xaf, 0xf6, 0x88, 0xf4, 0x17, 0x15, 0x36, 0x6e, 0x81, 0x53, 0xc4, 0xb8, - 0x06, 0x5b, 0x35, 0x62, 0x93, 0x25, 0x9d, 0xa3, 0xa1, 0x13, 0x11, 0xff, 0xb8, 0xe7, 0xe8, 0xb2, - 0x62, 0x82, 0x0d, 0x86, 0x68, 0x23, 0x95, 0x53, 0x72, 0xf9, 0xe8, 0x39, 0x25, 0xac, 0xca, 0x54, - 0x5e, 0x35, 0xfe, 0x2f, 0x58, 0x30, 0xe6, 0xa7, 0x66, 0x6e, 0x31, 0x61, 0xa4, 0xf9, 0xab, 0x82, - 0xdf, 0x2c, 0x95, 0x6e, 0xc3, 0x19, 0xfe, 0x79, 0x2a, 0xad, 0x72, 0x40, 0x95, 0xa6, 0xef, 0x08, - 0x1a, 0xec, 0x75, 0x47, 0x10, 0xf2, 0xd5, 0x25, 0x69, 0x43, 0x85, 0x5f, 0x92, 0x06, 0x39, 0x17, - 0xa4, 0xdd, 0x82, 0x5a, 0x23, 0x22, 0x4e, 0x72, 0xc8, 0xfb, 0xb2, 0xd8, 0x01, 0xfd, 0x8c, 0x24, - 0x80, 0x35, 0x2d, 0xfb, 0xff, 0x0c, 0xc0, 0x49, 0x39, 0x22, 0x32, 0x04, 0x9d, 0xea, 0x47, 0xce, - 0x57, 0x1b, 0xb7, 0x4a, 0x3f, 0x5e, 0x91, 0x00, 0xac, 0x71, 0xa8, 0x3d, 0xd6, 0x89, 0xc9, 0x52, - 0x48, 0xfc, 0x05, 0x77, 0x2d, 0x16, 0xe7, 0x9c, 0x6a, 0xa1, 0xdc, 0xd0, 0x20, 0x6c, 0xe2, 0x51, - 0x63, 0x9c, 0xdb, 0xc5, 0x71, 0x36, 0x7d, 0x45, 0xd8, 0xdb, 0x58, 0xc2, 0xd1, 0x2f, 0xe4, 0x56, - 0x8e, 0x2d, 0x26, 0x71, 0xab, 0x2b, 0xf2, 0xfe, 0x80, 0x57, 0x2c, 0xfe, 0x6d, 0x0b, 0xce, 0xf2, - 0x56, 0x39, 0x92, 0x37, 0xc2, 0xa6, 0x93, 0x90, 0xb8, 0x98, 0x4a, 0xee, 0x39, 0xfd, 0xd3, 0x4e, - 0xde, 0x3c, 0xb6, 0x38, 0xbf, 0x37, 0xe8, 0x4d, 0x0b, 0x4e, 0x6c, 0xa6, 0x6a, 0x7e, 0x48, 0xd5, - 0x71, 0xd4, 0x74, 0xfc, 0x14, 0x51, 0xbd, 0xd4, 0xd2, 0xed, 0x31, 0xce, 0x72, 0xb7, 0xff, 0xcc, - 0x02, 0x53, 0x8c, 0xde, 0xff, 0x52, 0x21, 0x07, 0x37, 0x05, 0xa5, 0x75, 0x59, 0xe9, 0x69, 0x5d, - 0x3e, 0x0e, 0xe5, 0x8e, 0xdb, 0x14, 0xfb, 0x0b, 0x7d, 0xfa, 0x3a, 0x3f, 0x8b, 0x69, 0xbb, 0xfd, - 0x4f, 0x2b, 0xda, 0x6f, 0x21, 0xf2, 0xa2, 0xbe, 0x27, 0x5e, 0x7b, 0x5d, 0x15, 0x1b, 0xe3, 0x6f, - 0x7e, 0xbd, 0xab, 0xd8, 0xd8, 0x8f, 0x1e, 0x3c, 0xed, 0x8d, 0x0f, 0x50, 0xaf, 0x5a, 0x63, 0x43, - 0xfb, 0xe4, 0xbc, 0xdd, 0x86, 0x2a, 0xdd, 0x82, 0x31, 0x07, 0x64, 0x35, 0xd5, 0xa9, 0xea, 0x15, - 0xd1, 0x7e, 0x6f, 0x77, 0xe2, 0x47, 0x0e, 0xde, 0x2d, 0xf9, 0x34, 0x56, 0xf4, 0x51, 0x0c, 0x35, - 0xfa, 0x9b, 0xa5, 0xe7, 0x89, 0xcd, 0xdd, 0x0d, 0x25, 0x33, 0x25, 0xa0, 0x90, 0xdc, 0x3f, 0xcd, - 0x07, 0xf9, 0x50, 0x63, 0xb7, 0xd1, 0x32, 0xa6, 0x7c, 0x0f, 0xb8, 0xac, 0x92, 0xe4, 0x24, 0xe0, - 0xde, 0xee, 0xc4, 0x4b, 0x07, 0x67, 0xaa, 0x1e, 0xc7, 0x9a, 0x85, 0xfd, 0xc5, 0x01, 0x3d, 0x77, - 0x45, 0x8d, 0xb9, 0xef, 0x89, 0xb9, 0xfb, 0x62, 0x66, 0xee, 0x5e, 0xe8, 0x9a, 0xbb, 0x63, 0xfa, - 0xd6, 0xd4, 0xd4, 0x6c, 0xbc, 0xdf, 0x86, 0xc0, 0xfe, 0xfe, 0x06, 0x66, 0x01, 0xbd, 0xde, 0x71, - 0x23, 0x12, 0x2f, 0x47, 0x1d, 0xdf, 0xf5, 0x5b, 0x6c, 0x3a, 0x56, 0x4d, 0x0b, 0x28, 0x05, 0xc6, - 0x59, 0x7c, 0xba, 0xa9, 0xa7, 0xdf, 0xfc, 0x96, 0xb3, 0xc5, 0x67, 0x95, 0x51, 0x76, 0x6b, 0x45, - 0xb4, 0x63, 0x85, 0x61, 0x7f, 0x9d, 0x9d, 0x65, 0x1b, 0x79, 0xc1, 0x74, 0x4e, 0x78, 0xec, 0xfa, - 0x5f, 0x5e, 0xb3, 0x4b, 0xcd, 0x09, 0x7e, 0xe7, 0x2f, 0x87, 0xa1, 0x3b, 0x30, 0xb4, 0xc6, 0xef, - 0xbf, 0x2b, 0xa6, 0x3e, 0xb9, 0xb8, 0x4c, 0x8f, 0xdd, 0x72, 0x22, 0x6f, 0xd6, 0xbb, 0xa7, 0x7f, - 0x62, 0xc9, 0xcd, 0xfe, 0xfd, 0x0a, 0x9c, 0xc8, 0x5c, 0x10, 0x9b, 0xaa, 0x96, 0x5a, 0xda, 0xb7, - 0x5a, 0xea, 0x87, 0x00, 0x9a, 0x24, 0xf4, 0x82, 0x1d, 0x66, 0x8e, 0x0d, 0x1c, 0xd8, 0x1c, 0x53, - 0x16, 0xfc, 0xac, 0xa2, 0x82, 0x0d, 0x8a, 0xa2, 0x50, 0x19, 0x2f, 0xbe, 0x9a, 0x29, 0x54, 0x66, - 0xdc, 0x62, 0x30, 0x78, 0x7f, 0x6f, 0x31, 0x70, 0xe1, 0x04, 0xef, 0xa2, 0xca, 0xbe, 0x3d, 0x44, - 0x92, 0x2d, 0xcb, 0x5f, 0x98, 0x4d, 0x93, 0xc1, 0x59, 0xba, 0x0f, 0xf2, 0xfe, 0x67, 0xf4, 0x6e, - 0xa8, 0xc9, 0xef, 0x1c, 0x8f, 0xd7, 0x74, 0x05, 0x03, 0x39, 0x0d, 0xd8, 0xbd, 0xcc, 0xe2, 0x67, - 0x57, 0x21, 0x01, 0x78, 0x50, 0x85, 0x04, 0xec, 0xcf, 0x97, 0xa8, 0x1d, 0xcf, 0xfb, 0xa5, 0x6a, - 0xe2, 0x3c, 0x05, 0x83, 0x4e, 0x27, 0xd9, 0x08, 0xba, 0x6e, 0xf3, 0x9b, 0x66, 0xad, 0x58, 0x40, - 0xd1, 0x02, 0x0c, 0x34, 0x75, 0x9d, 0x93, 0x83, 0x7c, 0x4f, 0xed, 0x12, 0x75, 0x12, 0x82, 0x19, - 0x15, 0xf4, 0x18, 0x0c, 0x24, 0x4e, 0x4b, 0xa6, 0x5c, 0xb1, 0x34, 0xdb, 0x55, 0xa7, 0x15, 0x63, - 0xd6, 0x6a, 0xaa, 0xef, 0x81, 0x7d, 0xd4, 0xf7, 0x4b, 0x30, 0x1a, 0xbb, 0x2d, 0xdf, 0x49, 0x3a, - 0x11, 0x31, 0x8e, 0xf9, 0x74, 0xe4, 0x86, 0x09, 0xc4, 0x69, 0x5c, 0xfb, 0x37, 0x47, 0xe0, 0xcc, - 0xca, 0xcc, 0xa2, 0xac, 0xde, 0x7d, 0x6c, 0x59, 0x53, 0x79, 0x3c, 0xee, 0x5f, 0xd6, 0x54, 0x0f, - 0xee, 0x9e, 0x91, 0x35, 0xe5, 0x19, 0x59, 0x53, 0xe9, 0x14, 0x96, 0x72, 0x11, 0x29, 0x2c, 0x79, - 0x3d, 0xe8, 0x27, 0x85, 0xe5, 0xd8, 0xd2, 0xa8, 0xf6, 0xec, 0xd0, 0x81, 0xd2, 0xa8, 0x54, 0x8e, - 0x59, 0x21, 0xc9, 0x05, 0x3d, 0x3e, 0x55, 0x6e, 0x8e, 0x99, 0xca, 0xef, 0xe1, 0x89, 0x33, 0x42, - 0xd4, 0xbf, 0x5a, 0x7c, 0x07, 0xfa, 0xc8, 0xef, 0x11, 0xb9, 0x3b, 0x66, 0x4e, 0xd9, 0x50, 0x11, - 0x39, 0x65, 0x79, 0xdd, 0xd9, 0x37, 0xa7, 0xec, 0x25, 0x18, 0x6d, 0x78, 0x81, 0x4f, 0x96, 0xa3, - 0x20, 0x09, 0x1a, 0x81, 0x27, 0xcc, 0x7a, 0x25, 0x12, 0x66, 0x4c, 0x20, 0x4e, 0xe3, 0xf6, 0x4a, - 0x48, 0xab, 0x1d, 0x35, 0x21, 0x0d, 0x1e, 0x50, 0x42, 0xda, 0xcf, 0xea, 0xd4, 0xe9, 0x61, 0xf6, - 0x45, 0x3e, 0x54, 0xfc, 0x17, 0xe9, 0x27, 0x7f, 0x1a, 0xbd, 0xc5, 0xaf, 0xd3, 0xa3, 0x86, 0xf1, - 0x4c, 0xd0, 0xa6, 0x86, 0xdf, 0x08, 0x1b, 0x92, 0xd7, 0x8e, 0x61, 0xc2, 0xde, 0x5a, 0xd1, 0x6c, - 0xd4, 0x15, 0x7b, 0xba, 0x09, 0xa7, 0x3b, 0x72, 0x94, 0xd4, 0xee, 0x2f, 0x97, 0xe0, 0xfb, 0xf6, - 0xed, 0x02, 0xba, 0x03, 0x90, 0x38, 0x2d, 0x31, 0x51, 0xc5, 0x81, 0xc9, 0x11, 0xc3, 0x2b, 0x57, - 0x25, 0x3d, 0x5e, 0x93, 0x44, 0xfd, 0x65, 0x47, 0x11, 0xf2, 0x37, 0x8b, 0xaa, 0x0c, 0xbc, 0xae, - 0xd2, 0x8d, 0x38, 0xf0, 0x08, 0x66, 0x10, 0xaa, 0xfe, 0x23, 0xd2, 0xd2, 0xf7, 0x3f, 0xab, 0xcf, - 0x87, 0x59, 0x2b, 0x16, 0x50, 0xf4, 0x02, 0x0c, 0x3b, 0x9e, 0xc7, 0xf3, 0x63, 0x48, 0x2c, 0xee, - 0xd3, 0xd1, 0x35, 0xe4, 0x34, 0x08, 0x9b, 0x78, 0xf6, 0x9f, 0x96, 0x60, 0x62, 0x1f, 0x99, 0xd2, - 0x95, 0xf1, 0x57, 0xe9, 0x3b, 0xe3, 0x4f, 0xe4, 0x28, 0x0c, 0xf6, 0xc8, 0x51, 0x78, 0x01, 0x86, - 0x13, 0xe2, 0xb4, 0x45, 0x40, 0x96, 0xf0, 0x04, 0xe8, 0x13, 0x60, 0x0d, 0xc2, 0x26, 0x1e, 0x95, - 0x62, 0x63, 0x4e, 0xa3, 0x41, 0xe2, 0x58, 0x26, 0x21, 0x08, 0x6f, 0x6a, 0x61, 0x19, 0x0e, 0xcc, - 0x49, 0x3d, 0x9d, 0x62, 0x81, 0x33, 0x2c, 0xb3, 0x03, 0x5e, 0xeb, 0x73, 0xc0, 0xbf, 0x56, 0x82, - 0xc7, 0xf7, 0xd4, 0x6e, 0x7d, 0xe7, 0x87, 0x74, 0x62, 0x12, 0x65, 0x27, 0xce, 0x8d, 0x98, 0x44, - 0x98, 0x41, 0xf8, 0x28, 0x85, 0xa1, 0x71, 0xbf, 0x76, 0xd1, 0xc9, 0x4b, 0x7c, 0x94, 0x52, 0x2c, - 0x70, 0x86, 0xe5, 0x61, 0xa7, 0xe5, 0xdf, 0x2f, 0xc1, 0x93, 0x7d, 0xd8, 0x00, 0x05, 0x26, 0x79, - 0xa5, 0x53, 0xed, 0xca, 0x0f, 0x28, 0x23, 0xf2, 0x90, 0xc3, 0xf5, 0xf5, 0x12, 0x9c, 0xef, 0xad, - 0x8a, 0xd1, 0x8f, 0xc1, 0x89, 0x48, 0x45, 0x61, 0x99, 0x59, 0x7a, 0xa7, 0xb9, 0x27, 0x21, 0x05, - 0xc2, 0x59, 0x5c, 0x34, 0x09, 0x10, 0x3a, 0xc9, 0x46, 0x7c, 0x69, 0xdb, 0x8d, 0x13, 0x51, 0x85, - 0x66, 0x8c, 0x9f, 0x5d, 0xc9, 0x56, 0x6c, 0x60, 0x50, 0x76, 0xec, 0xdf, 0x6c, 0x70, 0x3d, 0x48, - 0xf8, 0x43, 0x7c, 0x1b, 0x71, 0x5a, 0xde, 0xd9, 0x61, 0x80, 0x70, 0x16, 0x97, 0xb2, 0x63, 0xa7, - 0xa3, 0xbc, 0xa3, 0x7c, 0x7f, 0xc1, 0xd8, 0x2d, 0xa8, 0x56, 0x6c, 0x60, 0x64, 0xf3, 0x0f, 0x2b, - 0xfb, 0xe7, 0x1f, 0xda, 0xff, 0xa4, 0x04, 0xe7, 0x7a, 0x9a, 0x72, 0xfd, 0x2d, 0xc0, 0x87, 0x2f, - 0x67, 0xf0, 0x70, 0x73, 0xe7, 0x80, 0xb9, 0x6d, 0x7f, 0xdc, 0x63, 0xa6, 0x89, 0xdc, 0xb6, 0xc3, - 0x27, 0x87, 0x3f, 0x7c, 0xe3, 0xd9, 0x95, 0xce, 0x36, 0x70, 0x80, 0x74, 0xb6, 0xcc, 0xc7, 0xa8, - 0xf4, 0xb9, 0x90, 0xff, 0xbc, 0xdc, 0x73, 0x78, 0xe9, 0xd6, 0xaf, 0x2f, 0x3f, 0xed, 0x2c, 0x9c, - 0x74, 0x7d, 0x76, 0x7f, 0xd3, 0x4a, 0x67, 0x4d, 0x14, 0x26, 0x29, 0xa5, 0x6f, 0x4f, 0x9f, 0xcf, - 0xc0, 0x71, 0xd7, 0x13, 0x0f, 0x61, 0x7a, 0xe1, 0xe1, 0x86, 0xf4, 0x60, 0x09, 0xae, 0x68, 0x09, - 0xce, 0xca, 0xa1, 0xd8, 0x70, 0x22, 0xd2, 0x14, 0x6a, 0x24, 0x16, 0x09, 0x15, 0xe7, 0x78, 0x52, - 0x46, 0x0e, 0x02, 0xce, 0x7f, 0x8e, 0x5d, 0x99, 0x13, 0x84, 0x6e, 0x43, 0x6c, 0x72, 0xf4, 0x95, - 0x39, 0xb4, 0x11, 0x73, 0x98, 0xfd, 0x21, 0xa8, 0xa9, 0xf7, 0xe7, 0x61, 0xdd, 0x6a, 0xd2, 0x75, - 0x85, 0x75, 0xab, 0x19, 0x67, 0x60, 0xd1, 0xaf, 0x45, 0x4d, 0xe2, 0xcc, 0xea, 0xb9, 0x46, 0x76, - 0x98, 0x7d, 0x6c, 0xff, 0x10, 0x8c, 0x28, 0x3f, 0x4b, 0xbf, 0x17, 0x09, 0xd9, 0x5f, 0x1c, 0x84, - 0xd1, 0x54, 0x71, 0xc0, 0x94, 0x83, 0xd5, 0xda, 0xd7, 0xc1, 0xca, 0xc2, 0xf4, 0x3b, 0xbe, 0xbc, - 0x65, 0xcc, 0x08, 0xd3, 0xef, 0xf8, 0x04, 0x73, 0x18, 0x35, 0x6f, 0x9b, 0xd1, 0x0e, 0xee, 0xf8, - 0x22, 0x9c, 0x56, 0x99, 0xb7, 0xb3, 0xac, 0x15, 0x0b, 0x28, 0xfa, 0xb8, 0x05, 0x23, 0x31, 0xf3, - 0xde, 0x73, 0xf7, 0xb4, 0x98, 0x74, 0x57, 0x8f, 0x5e, 0xfb, 0x50, 0x15, 0xc2, 0x64, 0x11, 0x32, - 0x66, 0x0b, 0x4e, 0x71, 0x44, 0x9f, 0xb2, 0xa0, 0xa6, 0x2e, 0x43, 0x11, 0x57, 0x01, 0xae, 0x14, - 0x5b, 0x7b, 0x91, 0xfb, 0x35, 0xd5, 0x41, 0x88, 0x2a, 0x82, 0x87, 0x35, 0x63, 0x14, 0x2b, 0xdf, - 0xf1, 0xd0, 0xf1, 0xf8, 0x8e, 0x21, 0xc7, 0x6f, 0xfc, 0x6e, 0xa8, 0xb5, 0x1d, 0xdf, 0x5d, 0x27, - 0x71, 0xc2, 0xdd, 0xb9, 0xb2, 0x24, 0xac, 0x6c, 0xc4, 0x1a, 0x4e, 0x15, 0x72, 0xcc, 0x5e, 0x2c, - 0x31, 0xfc, 0xaf, 0x4c, 0x21, 0xaf, 0xe8, 0x66, 0x6c, 0xe2, 0x98, 0xce, 0x62, 0x78, 0xa0, 0xce, - 0xe2, 0xe1, 0xbd, 0x9d, 0xc5, 0xf6, 0x3f, 0xb4, 0xe0, 0x6c, 0xee, 0x57, 0x7b, 0x78, 0x03, 0x1f, - 0xed, 0x2f, 0x55, 0xe0, 0x74, 0x4e, 0x95, 0x4f, 0xb4, 0x63, 0xce, 0x67, 0xab, 0x88, 0x18, 0x82, - 0xf4, 0x91, 0xb8, 0x1c, 0xc6, 0x9c, 0x49, 0x7c, 0xb0, 0xa3, 0x1a, 0x7d, 0x5c, 0x52, 0xbe, 0xbf, - 0xc7, 0x25, 0xc6, 0xb4, 0x1c, 0x78, 0xa0, 0xd3, 0xb2, 0xb2, 0xcf, 0x19, 0xc6, 0xaf, 0x59, 0x30, - 0xde, 0xee, 0x51, 0x5a, 0x5e, 0x38, 0x1e, 0x6f, 0x1e, 0x4f, 0xe1, 0xfa, 0xfa, 0x63, 0x77, 0x77, - 0x27, 0x7a, 0x56, 0xf4, 0xc7, 0x3d, 0x7b, 0x65, 0x7f, 0xbb, 0x0c, 0xac, 0xc4, 0x2c, 0xab, 0xe4, - 0xb6, 0x83, 0x3e, 0x66, 0x16, 0x0b, 0xb6, 0x8a, 0x2a, 0x6c, 0xcb, 0x89, 0xab, 0x62, 0xc3, 0x7c, - 0x04, 0xf3, 0x6a, 0x0f, 0x67, 0x85, 0x56, 0xa9, 0x0f, 0xa1, 0xe5, 0xc9, 0xaa, 0xcc, 0xe5, 0xe2, - 0xab, 0x32, 0xd7, 0xb2, 0x15, 0x99, 0xf7, 0xfe, 0xc4, 0x03, 0x0f, 0xe5, 0x27, 0xfe, 0x45, 0x8b, - 0x0b, 0x9e, 0xcc, 0x57, 0xd0, 0x96, 0x81, 0xb5, 0x87, 0x65, 0xf0, 0x0c, 0x54, 0x63, 0xe2, 0xad, - 0x5f, 0x21, 0x8e, 0x27, 0x2c, 0x08, 0x7d, 0x7e, 0x2d, 0xda, 0xb1, 0xc2, 0x60, 0xd7, 0xb6, 0x7a, - 0x5e, 0x70, 0xe7, 0x52, 0x3b, 0x4c, 0x76, 0x84, 0x2d, 0xa1, 0xaf, 0x6d, 0x55, 0x10, 0x6c, 0x60, - 0xd9, 0x7f, 0xab, 0xc4, 0x67, 0xa0, 0x08, 0x82, 0x78, 0x31, 0x73, 0xd1, 0x5e, 0xff, 0xf1, 0x03, - 0x1f, 0x01, 0x68, 0xa8, 0x2b, 0xea, 0xc5, 0x99, 0xd0, 0x95, 0x23, 0xdf, 0x9f, 0x2d, 0xe8, 0xe9, - 0xd7, 0xd0, 0x6d, 0xd8, 0xe0, 0x97, 0x92, 0xa5, 0xe5, 0x7d, 0x65, 0x69, 0x4a, 0xac, 0x0c, 0xec, - 0xa3, 0xed, 0xfe, 0xd4, 0x82, 0x94, 0x45, 0x84, 0x42, 0xa8, 0xd0, 0xee, 0xee, 0x14, 0x73, 0xfb, - 0xbe, 0x49, 0x9a, 0x8a, 0x46, 0x31, 0xed, 0xd9, 0x4f, 0xcc, 0x19, 0x21, 0x4f, 0xc4, 0x4a, 0xf0, - 0x51, 0xbd, 0x5e, 0x1c, 0xc3, 0x2b, 0x41, 0xb0, 0xc9, 0x0f, 0x36, 0x75, 0xdc, 0x85, 0xfd, 0x22, - 0x9c, 0xea, 0xea, 0x14, 0xbb, 0x53, 0x2b, 0xa0, 0xda, 0x27, 0x33, 0x5d, 0x59, 0x02, 0x27, 0xe6, - 0x30, 0xfb, 0xeb, 0x16, 0x9c, 0xcc, 0x92, 0x47, 0x6f, 0x59, 0x70, 0x2a, 0xce, 0xd2, 0x3b, 0xae, - 0xb1, 0x53, 0xf1, 0x8e, 0x5d, 0x20, 0xdc, 0xdd, 0x09, 0xfb, 0xff, 0x8a, 0xc9, 0x7f, 0xcb, 0xf5, - 0x9b, 0xc1, 0x1d, 0x65, 0x98, 0x58, 0x3d, 0x0d, 0x13, 0xba, 0x1e, 0x1b, 0x1b, 0xa4, 0xd9, 0xf1, - 0xba, 0x32, 0x47, 0x57, 0x44, 0x3b, 0x56, 0x18, 0x2c, 0x51, 0xae, 0x23, 0xca, 0xb6, 0x67, 0x26, - 0xe5, 0xac, 0x68, 0xc7, 0x0a, 0x03, 0x3d, 0x0f, 0x23, 0xc6, 0x4b, 0xca, 0x79, 0xc9, 0x0c, 0x72, - 0x43, 0x65, 0xc6, 0x38, 0x85, 0x85, 0x26, 0x01, 0x94, 0x91, 0x23, 0x55, 0x24, 0x73, 0x14, 0x29, - 0x49, 0x14, 0x63, 0x03, 0x83, 0xa5, 0xa5, 0x7a, 0x9d, 0x98, 0xf9, 0xf8, 0x07, 0x75, 0x29, 0xd1, - 0x19, 0xd1, 0x86, 0x15, 0x94, 0x4a, 0x93, 0xb6, 0xe3, 0x77, 0x1c, 0x8f, 0x8e, 0x90, 0xd8, 0xfa, - 0xa9, 0x65, 0xb8, 0xa8, 0x20, 0xd8, 0xc0, 0xa2, 0x6f, 0x9c, 0xb8, 0x6d, 0xf2, 0x4a, 0xe0, 0xcb, - 0x38, 0x35, 0x7d, 0xec, 0x23, 0xda, 0xb1, 0xc2, 0xb0, 0xff, 0xab, 0x05, 0x27, 0x74, 0x92, 0x3b, - 0xbf, 0x3d, 0xdb, 0xdc, 0xa9, 0x5a, 0xfb, 0xee, 0x54, 0xd3, 0xd9, 0xbf, 0xa5, 0xbe, 0xb2, 0x7f, - 0xcd, 0xc4, 0xdc, 0xf2, 0x9e, 0x89, 0xb9, 0xdf, 0xaf, 0x6f, 0x66, 0xe5, 0x19, 0xbc, 0xc3, 0x79, - 0xb7, 0xb2, 0x22, 0x1b, 0x06, 0x1b, 0x8e, 0xaa, 0xf0, 0x32, 0xc2, 0xf7, 0x0e, 0x33, 0xd3, 0x0c, - 0x49, 0x40, 0xec, 0x25, 0xa8, 0xa9, 0xd3, 0x0f, 0xb9, 0x51, 0xb5, 0xf2, 0x37, 0xaa, 0x7d, 0x25, - 0x08, 0xd6, 0xd7, 0xbe, 0xf1, 0x9d, 0x27, 0xde, 0xf1, 0x7b, 0xdf, 0x79, 0xe2, 0x1d, 0x7f, 0xf4, - 0x9d, 0x27, 0xde, 0xf1, 0xf1, 0xbb, 0x4f, 0x58, 0xdf, 0xb8, 0xfb, 0x84, 0xf5, 0x7b, 0x77, 0x9f, - 0xb0, 0xfe, 0xe8, 0xee, 0x13, 0xd6, 0xb7, 0xef, 0x3e, 0x61, 0x7d, 0xe1, 0x3f, 0x3d, 0xf1, 0x8e, - 0x57, 0x72, 0x03, 0x15, 0xe9, 0x8f, 0x67, 0x1b, 0xcd, 0xa9, 0xad, 0x8b, 0x2c, 0x56, 0x8e, 0x2e, - 0xaf, 0x29, 0x63, 0x4e, 0x4d, 0xc9, 0xe5, 0xf5, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x87, 0xd4, - 0x96, 0xc0, 0xad, 0xe1, 0x00, 0x00, + // 11136 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0xc7, + 0x75, 0x98, 0x66, 0x17, 0x0b, 0xec, 0x3e, 0x7c, 0xdd, 0xf5, 0xdd, 0x91, 0xb8, 0x13, 0x49, 0x9c, + 0x87, 0x31, 0x45, 0x45, 0x24, 0x60, 0x9e, 0x48, 0x99, 0x11, 0x6d, 0xc9, 0xf8, 0xb8, 0xc3, 0xe1, + 0x0e, 0x38, 0x80, 0x0d, 0xdc, 0x9d, 0x44, 0x89, 0xa2, 0x06, 0xbb, 0x8d, 0xc5, 0x1c, 0x66, 0x67, + 0x86, 0x33, 0xb3, 0x38, 0x80, 0x96, 0x64, 0xc9, 0x92, 0x6d, 0x25, 0xfa, 0xa0, 0x22, 0x25, 0x65, + 0x3a, 0xb1, 0x14, 0xd9, 0x72, 0x52, 0x71, 0x25, 0xac, 0x38, 0xc9, 0x8f, 0x38, 0x71, 0x52, 0x2e, + 0xdb, 0xa9, 0x94, 0x52, 0x4a, 0xca, 0x2a, 0x97, 0xcb, 0x72, 0x12, 0x1b, 0x91, 0xce, 0x95, 0x4a, + 0x2a, 0x55, 0x71, 0x95, 0x13, 0xff, 0x48, 0x2e, 0xf9, 0x91, 0xea, 0xef, 0x9e, 0xd9, 0x59, 0x60, + 0x01, 0x0c, 0xee, 0x4e, 0x32, 0xff, 0xed, 0xf6, 0x7b, 0xf3, 0x5e, 0x4f, 0x4f, 0xf7, 0x7b, 0xaf, + 0x5f, 0xbf, 0xf7, 0x1a, 0x16, 0x9a, 0x6e, 0xb2, 0xd1, 0x5e, 0x9b, 0xa8, 0x07, 0xad, 0x49, 0x27, + 0x6a, 0x06, 0x61, 0x14, 0xdc, 0x62, 0x3f, 0x9e, 0xae, 0x37, 0x26, 0xb7, 0x2e, 0x4c, 0x86, 0x9b, + 0xcd, 0x49, 0x27, 0x74, 0xe3, 0x49, 0x27, 0x0c, 0x3d, 0xb7, 0xee, 0x24, 0x6e, 0xe0, 0x4f, 0x6e, + 0x3d, 0xe3, 0x78, 0xe1, 0x86, 0xf3, 0xcc, 0x64, 0x93, 0xf8, 0x24, 0x72, 0x12, 0xd2, 0x98, 0x08, + 0xa3, 0x20, 0x09, 0xd0, 0x8f, 0x69, 0x6a, 0x13, 0x92, 0x1a, 0xfb, 0xf1, 0x4a, 0xbd, 0x31, 0xb1, + 0x75, 0x61, 0x22, 0xdc, 0x6c, 0x4e, 0x50, 0x6a, 0x13, 0x06, 0xb5, 0x09, 0x49, 0xed, 0xdc, 0xd3, + 0x46, 0x5f, 0x9a, 0x41, 0x33, 0x98, 0x64, 0x44, 0xd7, 0xda, 0xeb, 0xec, 0x1f, 0xfb, 0xc3, 0x7e, + 0x71, 0x66, 0xe7, 0xec, 0xcd, 0xe7, 0xe3, 0x09, 0x37, 0xa0, 0xdd, 0x9b, 0xac, 0x07, 0x11, 0x99, + 0xdc, 0xea, 0xe8, 0xd0, 0xb9, 0xcb, 0x1a, 0x87, 0x6c, 0x27, 0xc4, 0x8f, 0xdd, 0xc0, 0x8f, 0x9f, + 0xa6, 0x5d, 0x20, 0xd1, 0x16, 0x89, 0xcc, 0xd7, 0x33, 0x10, 0xf2, 0x28, 0x3d, 0xab, 0x29, 0xb5, + 0x9c, 0xfa, 0x86, 0xeb, 0x93, 0x68, 0x47, 0x3f, 0xde, 0x22, 0x89, 0x93, 0xf7, 0xd4, 0x64, 0xb7, + 0xa7, 0xa2, 0xb6, 0x9f, 0xb8, 0x2d, 0xd2, 0xf1, 0xc0, 0x7b, 0xf6, 0x7b, 0x20, 0xae, 0x6f, 0x90, + 0x96, 0xd3, 0xf1, 0xdc, 0xbb, 0xbb, 0x3d, 0xd7, 0x4e, 0x5c, 0x6f, 0xd2, 0xf5, 0x93, 0x38, 0x89, + 0xb2, 0x0f, 0xd9, 0xbf, 0x68, 0xc1, 0xf0, 0xd4, 0xcd, 0x95, 0xa9, 0x76, 0xb2, 0x31, 0x13, 0xf8, + 0xeb, 0x6e, 0x13, 0x3d, 0x07, 0x83, 0x75, 0xaf, 0x1d, 0x27, 0x24, 0xba, 0xe6, 0xb4, 0xc8, 0x98, + 0x75, 0xde, 0x7a, 0xb2, 0x36, 0x7d, 0xea, 0x9b, 0xbb, 0xe3, 0x6f, 0xbb, 0xb3, 0x3b, 0x3e, 0x38, + 0xa3, 0x41, 0xd8, 0xc4, 0x43, 0xef, 0x84, 0x81, 0x28, 0xf0, 0xc8, 0x14, 0xbe, 0x36, 0x56, 0x62, + 0x8f, 0x8c, 0x8a, 0x47, 0x06, 0x30, 0x6f, 0xc6, 0x12, 0x4e, 0x51, 0xc3, 0x28, 0x58, 0x77, 0x3d, + 0x32, 0x56, 0x4e, 0xa3, 0x2e, 0xf3, 0x66, 0x2c, 0xe1, 0xf6, 0x1f, 0x94, 0x00, 0xa6, 0xc2, 0x70, + 0x39, 0x0a, 0x6e, 0x91, 0x7a, 0x82, 0x3e, 0x0a, 0x55, 0x3a, 0xcc, 0x0d, 0x27, 0x71, 0x58, 0xc7, + 0x06, 0x2f, 0xfc, 0xc8, 0x04, 0x7f, 0xeb, 0x09, 0xf3, 0xad, 0xf5, 0x24, 0xa3, 0xd8, 0x13, 0x5b, + 0xcf, 0x4c, 0x2c, 0xad, 0xd1, 0xe7, 0x17, 0x49, 0xe2, 0x4c, 0x23, 0xc1, 0x0c, 0x74, 0x1b, 0x56, + 0x54, 0x91, 0x0f, 0x7d, 0x71, 0x48, 0xea, 0xec, 0x1d, 0x06, 0x2f, 0x2c, 0x4c, 0x1c, 0x65, 0x36, + 0x4f, 0xe8, 0x9e, 0xaf, 0x84, 0xa4, 0x3e, 0x3d, 0x24, 0x38, 0xf7, 0xd1, 0x7f, 0x98, 0xf1, 0x41, + 0x5b, 0xd0, 0x1f, 0x27, 0x4e, 0xd2, 0x8e, 0xd9, 0x50, 0x0c, 0x5e, 0xb8, 0x56, 0x18, 0x47, 0x46, + 0x75, 0x7a, 0x44, 0xf0, 0xec, 0xe7, 0xff, 0xb1, 0xe0, 0x66, 0xff, 0xb1, 0x05, 0x23, 0x1a, 0x79, + 0xc1, 0x8d, 0x13, 0xf4, 0xe1, 0x8e, 0xc1, 0x9d, 0xe8, 0x6d, 0x70, 0xe9, 0xd3, 0x6c, 0x68, 0x4f, + 0x08, 0x66, 0x55, 0xd9, 0x62, 0x0c, 0x6c, 0x0b, 0x2a, 0x6e, 0x42, 0x5a, 0xf1, 0x58, 0xe9, 0x7c, + 0xf9, 0xc9, 0xc1, 0x0b, 0x97, 0x8b, 0x7a, 0xcf, 0xe9, 0x61, 0xc1, 0xb4, 0x32, 0x4f, 0xc9, 0x63, + 0xce, 0xc5, 0xfe, 0xd5, 0x21, 0xf3, 0xfd, 0xe8, 0x80, 0xa3, 0x67, 0x60, 0x30, 0x0e, 0xda, 0x51, + 0x9d, 0x60, 0x12, 0x06, 0xf1, 0x98, 0x75, 0xbe, 0x4c, 0xa7, 0x1e, 0x9d, 0xd4, 0x2b, 0xba, 0x19, + 0x9b, 0x38, 0xe8, 0x8b, 0x16, 0x0c, 0x35, 0x48, 0x9c, 0xb8, 0x3e, 0xe3, 0x2f, 0x3b, 0xbf, 0x7a, + 0xe4, 0xce, 0xcb, 0xc6, 0x59, 0x4d, 0x7c, 0xfa, 0xb4, 0x78, 0x91, 0x21, 0xa3, 0x31, 0xc6, 0x29, + 0xfe, 0x74, 0x71, 0x36, 0x48, 0x5c, 0x8f, 0xdc, 0x90, 0xfe, 0x17, 0xcb, 0x47, 0x2d, 0xce, 0x59, + 0x0d, 0xc2, 0x26, 0x1e, 0xf2, 0xa1, 0x42, 0x17, 0x5f, 0x3c, 0xd6, 0xc7, 0xfa, 0x3f, 0x7f, 0xb4, + 0xfe, 0x8b, 0x41, 0xa5, 0xeb, 0x5a, 0x8f, 0x3e, 0xfd, 0x17, 0x63, 0xce, 0x06, 0x7d, 0xc1, 0x82, + 0x31, 0x21, 0x1c, 0x30, 0xe1, 0x03, 0x7a, 0x73, 0xc3, 0x4d, 0x88, 0xe7, 0xc6, 0xc9, 0x58, 0x85, + 0xf5, 0x61, 0xb2, 0xb7, 0xb9, 0x35, 0x17, 0x05, 0xed, 0xf0, 0xaa, 0xeb, 0x37, 0xa6, 0xcf, 0x0b, + 0x4e, 0x63, 0x33, 0x5d, 0x08, 0xe3, 0xae, 0x2c, 0xd1, 0x57, 0x2c, 0x38, 0xe7, 0x3b, 0x2d, 0x12, + 0x87, 0x0e, 0xfd, 0xb4, 0x1c, 0x3c, 0xed, 0x39, 0xf5, 0x4d, 0xd6, 0xa3, 0xfe, 0xc3, 0xf5, 0xc8, + 0x16, 0x3d, 0x3a, 0x77, 0xad, 0x2b, 0x69, 0xbc, 0x07, 0x5b, 0xf4, 0x0d, 0x0b, 0x4e, 0x06, 0x51, + 0xb8, 0xe1, 0xf8, 0xa4, 0x21, 0xa1, 0xf1, 0xd8, 0x00, 0x5b, 0x7a, 0x1f, 0x39, 0xda, 0x27, 0x5a, + 0xca, 0x92, 0x5d, 0x0c, 0x7c, 0x37, 0x09, 0xa2, 0x15, 0x92, 0x24, 0xae, 0xdf, 0x8c, 0xa7, 0xcf, + 0xdc, 0xd9, 0x1d, 0x3f, 0xd9, 0x81, 0x85, 0x3b, 0xfb, 0x83, 0x7e, 0x12, 0x06, 0xe3, 0x1d, 0xbf, + 0x7e, 0xd3, 0xf5, 0x1b, 0xc1, 0xed, 0x78, 0xac, 0x5a, 0xc4, 0xf2, 0x5d, 0x51, 0x04, 0xc5, 0x02, + 0xd4, 0x0c, 0xb0, 0xc9, 0x2d, 0xff, 0xc3, 0xe9, 0xa9, 0x54, 0x2b, 0xfa, 0xc3, 0xe9, 0xc9, 0xb4, + 0x07, 0x5b, 0xf4, 0x73, 0x16, 0x0c, 0xc7, 0x6e, 0xd3, 0x77, 0x92, 0x76, 0x44, 0xae, 0x92, 0x9d, + 0x78, 0x0c, 0x58, 0x47, 0xae, 0x1c, 0x71, 0x54, 0x0c, 0x92, 0xd3, 0x67, 0x44, 0x1f, 0x87, 0xcd, + 0xd6, 0x18, 0xa7, 0xf9, 0xe6, 0x2d, 0x34, 0x3d, 0xad, 0x07, 0x8b, 0x5d, 0x68, 0x7a, 0x52, 0x77, + 0x65, 0x89, 0x7e, 0x02, 0x4e, 0xf0, 0x26, 0x35, 0xb2, 0xf1, 0xd8, 0x10, 0x13, 0xb4, 0xa7, 0xef, + 0xec, 0x8e, 0x9f, 0x58, 0xc9, 0xc0, 0x70, 0x07, 0x36, 0x7a, 0x15, 0xc6, 0x43, 0x12, 0xb5, 0xdc, + 0x64, 0xc9, 0xf7, 0x76, 0xa4, 0xf8, 0xae, 0x07, 0x21, 0x69, 0x88, 0xee, 0xc4, 0x63, 0xc3, 0xe7, + 0xad, 0x27, 0xab, 0xd3, 0xef, 0x10, 0xdd, 0x1c, 0x5f, 0xde, 0x1b, 0x1d, 0xef, 0x47, 0xcf, 0xfe, + 0xb7, 0x25, 0x38, 0x91, 0x55, 0x9c, 0xe8, 0xef, 0x59, 0x30, 0x7a, 0xeb, 0x76, 0xb2, 0x1a, 0x6c, + 0x12, 0x3f, 0x9e, 0xde, 0xa1, 0xe2, 0x8d, 0xa9, 0x8c, 0xc1, 0x0b, 0xf5, 0x62, 0x55, 0xf4, 0xc4, + 0x95, 0x34, 0x97, 0x8b, 0x7e, 0x12, 0xed, 0x4c, 0x3f, 0x2c, 0xde, 0x6e, 0xf4, 0xca, 0xcd, 0x55, + 0x13, 0x8a, 0xb3, 0x9d, 0x3a, 0xf7, 0x39, 0x0b, 0x4e, 0xe7, 0x91, 0x40, 0x27, 0xa0, 0xbc, 0x49, + 0x76, 0xb8, 0x01, 0x87, 0xe9, 0x4f, 0xf4, 0x32, 0x54, 0xb6, 0x1c, 0xaf, 0x4d, 0x84, 0x75, 0x33, + 0x77, 0xb4, 0x17, 0x51, 0x3d, 0xc3, 0x9c, 0xea, 0x7b, 0x4b, 0xcf, 0x5b, 0xf6, 0xef, 0x96, 0x61, + 0xd0, 0xd0, 0x6f, 0xf7, 0xc0, 0x62, 0x0b, 0x52, 0x16, 0xdb, 0x62, 0x61, 0xaa, 0xb9, 0xab, 0xc9, + 0x76, 0x3b, 0x63, 0xb2, 0x2d, 0x15, 0xc7, 0x72, 0x4f, 0x9b, 0x0d, 0x25, 0x50, 0x0b, 0x42, 0x6a, + 0xbd, 0x53, 0xd5, 0xdf, 0x57, 0xc4, 0x27, 0x5c, 0x92, 0xe4, 0xa6, 0x87, 0xef, 0xec, 0x8e, 0xd7, + 0xd4, 0x5f, 0xac, 0x19, 0xd9, 0xdf, 0xb1, 0xe0, 0xb4, 0xd1, 0xc7, 0x99, 0xc0, 0x6f, 0xb8, 0xec, + 0xd3, 0x9e, 0x87, 0xbe, 0x64, 0x27, 0x94, 0x3b, 0x04, 0x35, 0x52, 0xab, 0x3b, 0x21, 0xc1, 0x0c, + 0x42, 0x0d, 0xfd, 0x16, 0x89, 0x63, 0xa7, 0x49, 0xb2, 0x7b, 0x82, 0x45, 0xde, 0x8c, 0x25, 0x1c, + 0x45, 0x80, 0x3c, 0x27, 0x4e, 0x56, 0x23, 0xc7, 0x8f, 0x19, 0xf9, 0x55, 0xb7, 0x45, 0xc4, 0x00, + 0xff, 0xe5, 0xde, 0x66, 0x0c, 0x7d, 0x62, 0xfa, 0xa1, 0x3b, 0xbb, 0xe3, 0x68, 0xa1, 0x83, 0x12, + 0xce, 0xa1, 0x6e, 0x7f, 0xc5, 0x82, 0x87, 0xf2, 0x6d, 0x31, 0xf4, 0x04, 0xf4, 0xf3, 0xed, 0xa1, + 0x78, 0x3b, 0xfd, 0x49, 0x58, 0x2b, 0x16, 0x50, 0x34, 0x09, 0x35, 0xa5, 0x27, 0xc4, 0x3b, 0x9e, + 0x14, 0xa8, 0x35, 0xad, 0x5c, 0x34, 0x0e, 0x1d, 0x34, 0xfa, 0x47, 0x58, 0x6e, 0x6a, 0xd0, 0xd8, + 0x7e, 0x8a, 0x41, 0xec, 0xff, 0x6c, 0xc1, 0xa8, 0xd1, 0xab, 0x7b, 0x60, 0x9a, 0xfb, 0x69, 0xd3, + 0x7c, 0xbe, 0xb0, 0xf9, 0xdc, 0xc5, 0x36, 0xff, 0x82, 0x05, 0xe7, 0x0c, 0xac, 0x45, 0x27, 0xa9, + 0x6f, 0x5c, 0xdc, 0x0e, 0x23, 0x12, 0xd3, 0xad, 0x37, 0x7a, 0xd4, 0x90, 0x5b, 0xd3, 0x83, 0x82, + 0x42, 0xf9, 0x2a, 0xd9, 0xe1, 0x42, 0xec, 0x29, 0xa8, 0xf2, 0xc9, 0x19, 0x44, 0x62, 0xc4, 0xd5, + 0xbb, 0x2d, 0x89, 0x76, 0xac, 0x30, 0x90, 0x0d, 0xfd, 0x4c, 0x38, 0xd1, 0xc5, 0x4a, 0xd5, 0x10, + 0xd0, 0x8f, 0x78, 0x83, 0xb5, 0x60, 0x01, 0xb1, 0xe3, 0x54, 0x77, 0x96, 0x23, 0xc2, 0x3e, 0x6e, + 0xe3, 0x92, 0x4b, 0xbc, 0x46, 0x4c, 0xb7, 0x0d, 0x8e, 0xef, 0x07, 0x89, 0xd8, 0x01, 0x18, 0xdb, + 0x86, 0x29, 0xdd, 0x8c, 0x4d, 0x1c, 0xca, 0xd4, 0x73, 0xd6, 0x88, 0xc7, 0x47, 0x54, 0x30, 0x5d, + 0x60, 0x2d, 0x58, 0x40, 0xec, 0x3b, 0x25, 0xb6, 0x41, 0x51, 0x4b, 0x9f, 0xdc, 0x8b, 0xdd, 0x6d, + 0x94, 0x92, 0x95, 0xcb, 0xc5, 0x09, 0x2e, 0xd2, 0x7d, 0x87, 0xfb, 0x5a, 0x46, 0x5c, 0xe2, 0x42, + 0xb9, 0xee, 0xbd, 0xcb, 0xfd, 0xad, 0x12, 0x8c, 0xa7, 0x1f, 0xe8, 0x90, 0xb6, 0x74, 0x4b, 0x65, + 0x30, 0xca, 0xfa, 0x3b, 0x0c, 0x7c, 0x6c, 0xe2, 0x75, 0x11, 0x58, 0xa5, 0xe3, 0x14, 0x58, 0xa6, + 0x3c, 0x2d, 0xef, 0x23, 0x4f, 0x9f, 0x50, 0xa3, 0xde, 0x97, 0x11, 0x60, 0x69, 0x9d, 0x72, 0x1e, + 0xfa, 0xe2, 0x84, 0x84, 0x63, 0x95, 0xb4, 0x3c, 0x5a, 0x49, 0x48, 0x88, 0x19, 0xc4, 0xfe, 0xef, + 0x25, 0x78, 0x38, 0x3d, 0x86, 0x5a, 0x05, 0xbc, 0x3f, 0xa5, 0x02, 0xde, 0x65, 0xaa, 0x80, 0xbb, + 0xbb, 0xe3, 0x6f, 0xef, 0xf2, 0xd8, 0xf7, 0x8d, 0x86, 0x40, 0x73, 0x99, 0x51, 0x9c, 0x4c, 0x8f, + 0xe2, 0xdd, 0xdd, 0xf1, 0x47, 0xbb, 0xbc, 0x63, 0x66, 0x98, 0x9f, 0x80, 0xfe, 0x88, 0x38, 0x71, + 0xe0, 0x8b, 0x81, 0x56, 0x9f, 0x03, 0xb3, 0x56, 0x2c, 0xa0, 0xf6, 0xef, 0xd5, 0xb2, 0x83, 0x3d, + 0xc7, 0x1d, 0x76, 0x41, 0x84, 0x5c, 0xe8, 0x63, 0x66, 0x3d, 0x17, 0x0d, 0x57, 0x8f, 0xb6, 0x8c, + 0xa8, 0x1a, 0x50, 0xa4, 0xa7, 0xab, 0xf4, 0xab, 0xd1, 0x26, 0xcc, 0x58, 0xa0, 0x6d, 0xa8, 0xd6, + 0xa5, 0xb5, 0x5d, 0x2a, 0xc2, 0x2f, 0x25, 0x6c, 0x6d, 0xcd, 0x71, 0x88, 0xca, 0x6b, 0x65, 0xa2, + 0x2b, 0x6e, 0x88, 0x40, 0xb9, 0xe9, 0x26, 0xe2, 0xb3, 0x1e, 0x71, 0x3f, 0x35, 0xe7, 0x1a, 0xaf, + 0x38, 0x40, 0x95, 0xc8, 0x9c, 0x9b, 0x60, 0x4a, 0x1f, 0xfd, 0x8c, 0x05, 0x83, 0x71, 0xbd, 0xb5, + 0x1c, 0x05, 0x5b, 0x6e, 0x83, 0x44, 0xc2, 0x9a, 0x3a, 0xa2, 0x68, 0x5a, 0x99, 0x59, 0x94, 0x04, + 0x35, 0x5f, 0xbe, 0xbf, 0xd5, 0x10, 0x6c, 0xf2, 0xa5, 0xbb, 0x8c, 0x87, 0xc5, 0xbb, 0xcf, 0x92, + 0xba, 0x4b, 0xf5, 0x9f, 0xdc, 0x54, 0xb1, 0x99, 0x72, 0x64, 0xeb, 0x72, 0xb6, 0x5d, 0xdf, 0xa4, + 0xeb, 0x4d, 0x77, 0xe8, 0xed, 0x77, 0x76, 0xc7, 0x1f, 0x9e, 0xc9, 0xe7, 0x89, 0xbb, 0x75, 0x86, + 0x0d, 0x58, 0xd8, 0xf6, 0x3c, 0x4c, 0x5e, 0x6d, 0x13, 0xe6, 0x32, 0x29, 0x60, 0xc0, 0x96, 0x35, + 0xc1, 0xcc, 0x80, 0x19, 0x10, 0x6c, 0xf2, 0x45, 0xaf, 0x42, 0x7f, 0xcb, 0x49, 0x22, 0x77, 0x5b, + 0xf8, 0x49, 0x8e, 0x68, 0xef, 0x2f, 0x32, 0x5a, 0x9a, 0x39, 0xd3, 0xd4, 0xbc, 0x11, 0x0b, 0x46, + 0xa8, 0x05, 0x95, 0x16, 0x89, 0x9a, 0x64, 0xac, 0x5a, 0x84, 0x4f, 0x78, 0x91, 0x92, 0xd2, 0x0c, + 0x6b, 0xd4, 0x3a, 0x62, 0x6d, 0x98, 0x73, 0x41, 0x2f, 0x43, 0x35, 0x26, 0x1e, 0xa9, 0x53, 0xfb, + 0xa6, 0xc6, 0x38, 0xbe, 0xbb, 0x47, 0x5b, 0x8f, 0x1a, 0x16, 0x2b, 0xe2, 0x51, 0xbe, 0xc0, 0xe4, + 0x3f, 0xac, 0x48, 0xd2, 0x01, 0x0c, 0xbd, 0x76, 0xd3, 0xf5, 0xc7, 0xa0, 0x88, 0x01, 0x5c, 0x66, + 0xb4, 0x32, 0x03, 0xc8, 0x1b, 0xb1, 0x60, 0x64, 0xff, 0x17, 0x0b, 0x50, 0x5a, 0xa8, 0xdd, 0x03, + 0xa3, 0xf6, 0xd5, 0xb4, 0x51, 0xbb, 0x50, 0xa4, 0xd5, 0xd1, 0xc5, 0xae, 0xfd, 0x8d, 0x1a, 0x64, + 0xd4, 0xc1, 0x35, 0x12, 0x27, 0xa4, 0xf1, 0x96, 0x08, 0x7f, 0x4b, 0x84, 0xbf, 0x25, 0xc2, 0x95, + 0x08, 0x5f, 0xcb, 0x88, 0xf0, 0xf7, 0x19, 0xab, 0x5e, 0x1f, 0xc0, 0xbe, 0xa2, 0x4e, 0x68, 0xcd, + 0x1e, 0x18, 0x08, 0x54, 0x12, 0x5c, 0x59, 0x59, 0xba, 0x96, 0x2b, 0xb3, 0x5f, 0x49, 0xcb, 0xec, + 0xa3, 0xb2, 0xf8, 0x8b, 0x20, 0xa5, 0xff, 0x8d, 0x05, 0xef, 0x48, 0x4b, 0x2f, 0x39, 0x73, 0xe6, + 0x9b, 0x7e, 0x10, 0x91, 0x59, 0x77, 0x7d, 0x9d, 0x44, 0xc4, 0xaf, 0x93, 0x58, 0x79, 0x31, 0xac, + 0x6e, 0x5e, 0x0c, 0xf4, 0x2c, 0x0c, 0xdd, 0x8a, 0x03, 0x7f, 0x39, 0x70, 0x7d, 0x21, 0x82, 0xe8, + 0x46, 0xf8, 0xc4, 0x9d, 0xdd, 0xf1, 0x21, 0x3a, 0xa2, 0xb2, 0x1d, 0xa7, 0xb0, 0xd0, 0x0c, 0x9c, + 0xbc, 0xf5, 0xea, 0xb2, 0x93, 0x18, 0xee, 0x00, 0xb9, 0x71, 0x67, 0x07, 0x16, 0x57, 0x5e, 0xcc, + 0x00, 0x71, 0x27, 0xbe, 0xfd, 0xb7, 0x4b, 0x70, 0x36, 0xf3, 0x22, 0x81, 0xe7, 0x05, 0xed, 0x84, + 0x6e, 0x6a, 0xd0, 0xd7, 0x2c, 0x38, 0xd1, 0x4a, 0x7b, 0x1c, 0x62, 0xe1, 0xd8, 0xfd, 0x40, 0x61, + 0x3a, 0x22, 0xe3, 0xd2, 0x98, 0x1e, 0x13, 0x23, 0x74, 0x22, 0x03, 0x88, 0x71, 0x47, 0x5f, 0xd0, + 0xcb, 0x50, 0x6b, 0x39, 0xdb, 0xd7, 0xc3, 0x86, 0x93, 0xc8, 0xfd, 0x64, 0x77, 0x37, 0x40, 0x3b, + 0x71, 0xbd, 0x09, 0x7e, 0xb4, 0x3f, 0x31, 0xef, 0x27, 0x4b, 0xd1, 0x4a, 0x12, 0xb9, 0x7e, 0x93, + 0xbb, 0xf3, 0x16, 0x25, 0x19, 0xac, 0x29, 0xda, 0x5f, 0xb5, 0xb2, 0x4a, 0x4a, 0x8d, 0x4e, 0xe4, + 0x24, 0xa4, 0xb9, 0x83, 0x3e, 0x06, 0x15, 0xba, 0xf1, 0x93, 0xa3, 0x72, 0xb3, 0x48, 0xcd, 0x69, + 0x7c, 0x09, 0xad, 0x44, 0xe9, 0xbf, 0x18, 0x73, 0xa6, 0xf6, 0xd7, 0x6a, 0x59, 0x63, 0x81, 0x1d, + 0xde, 0x5e, 0x00, 0x68, 0x06, 0xab, 0xa4, 0x15, 0x7a, 0x74, 0x58, 0x2c, 0x76, 0x02, 0xa0, 0x7c, + 0x1d, 0x73, 0x0a, 0x82, 0x0d, 0x2c, 0xf4, 0x57, 0x2d, 0x80, 0xa6, 0x9c, 0xf3, 0xd2, 0x10, 0xb8, + 0x5e, 0xe4, 0xeb, 0xe8, 0x15, 0xa5, 0xfb, 0xa2, 0x18, 0x62, 0x83, 0x39, 0xfa, 0x69, 0x0b, 0xaa, + 0x89, 0xec, 0x3e, 0x57, 0x8d, 0xab, 0x45, 0xf6, 0x44, 0xbe, 0xb4, 0xb6, 0x89, 0xd4, 0x90, 0x28, + 0xbe, 0xe8, 0x67, 0x2d, 0x80, 0x78, 0xc7, 0xaf, 0x2f, 0x07, 0x9e, 0x5b, 0xdf, 0x11, 0x1a, 0xf3, + 0x46, 0xa1, 0xfe, 0x18, 0x45, 0x7d, 0x7a, 0x84, 0x8e, 0x86, 0xfe, 0x8f, 0x0d, 0xce, 0xe8, 0x13, + 0x50, 0x8d, 0xc5, 0x74, 0x13, 0x3a, 0x72, 0xb5, 0x58, 0xaf, 0x10, 0xa7, 0x2d, 0xc4, 0xab, 0xf8, + 0x87, 0x15, 0x4f, 0xf4, 0xf3, 0x16, 0x8c, 0x86, 0x69, 0x3f, 0x9f, 0x50, 0x87, 0xc5, 0xc9, 0x80, + 0x8c, 0x1f, 0x71, 0xfa, 0xd4, 0x9d, 0xdd, 0xf1, 0xd1, 0x4c, 0x23, 0xce, 0xf6, 0x82, 0x4a, 0x40, + 0x3d, 0x83, 0x97, 0x42, 0xee, 0x73, 0x1c, 0xd0, 0x12, 0x70, 0x2e, 0x0b, 0xc4, 0x9d, 0xf8, 0x68, + 0x19, 0x4e, 0xd3, 0xde, 0xed, 0x70, 0xf3, 0x53, 0xaa, 0x97, 0x98, 0x29, 0xc3, 0xea, 0xf4, 0x23, + 0x62, 0x86, 0x30, 0xaf, 0x7e, 0x16, 0x07, 0xe7, 0x3e, 0x89, 0x7e, 0xd7, 0x82, 0x47, 0x5c, 0xa6, + 0x06, 0x4c, 0x87, 0xb9, 0xd6, 0x08, 0xe2, 0x24, 0x96, 0x14, 0x2a, 0x2b, 0xba, 0xa9, 0x9f, 0xe9, + 0xbf, 0x24, 0xde, 0xe0, 0x91, 0xf9, 0x3d, 0xba, 0x84, 0xf7, 0xec, 0x30, 0xfa, 0x51, 0x18, 0x96, + 0xeb, 0x62, 0x99, 0x8a, 0x60, 0xa6, 0x68, 0x6b, 0xd3, 0x27, 0xef, 0xec, 0x8e, 0x0f, 0xaf, 0x9a, + 0x00, 0x9c, 0xc6, 0xb3, 0xbf, 0x55, 0x4a, 0x9d, 0x87, 0x28, 0x27, 0x24, 0x13, 0x37, 0x75, 0xe9, + 0xff, 0x91, 0xd2, 0xb3, 0x50, 0x71, 0xa3, 0xbc, 0x4b, 0x5a, 0xdc, 0xa8, 0xa6, 0x18, 0x1b, 0xcc, + 0xa9, 0x51, 0x7a, 0xd2, 0xc9, 0xba, 0x3a, 0x85, 0x04, 0x7c, 0xb9, 0xc8, 0x2e, 0x75, 0x9e, 0x5e, + 0x9d, 0x15, 0x5d, 0x3b, 0xd9, 0x01, 0xc2, 0x9d, 0x5d, 0xb2, 0xbf, 0x95, 0x3e, 0x83, 0x31, 0x16, + 0x6f, 0x0f, 0xe7, 0x4b, 0x5f, 0xb4, 0x60, 0x30, 0x0a, 0x3c, 0xcf, 0xf5, 0x9b, 0x54, 0xd0, 0x08, + 0x6d, 0xf9, 0xa1, 0x63, 0x51, 0x58, 0x42, 0xa2, 0x30, 0xd3, 0x16, 0x6b, 0x9e, 0xd8, 0xec, 0x80, + 0xfd, 0xc7, 0x16, 0x8c, 0x75, 0x13, 0x88, 0x88, 0xc0, 0xdb, 0xe5, 0x6a, 0x57, 0xd1, 0x15, 0x4b, + 0xfe, 0x2c, 0xf1, 0x88, 0x72, 0x3c, 0x57, 0xa7, 0x1f, 0x17, 0xaf, 0xf9, 0xf6, 0xe5, 0xee, 0xa8, + 0x78, 0x2f, 0x3a, 0xe8, 0x25, 0x38, 0x61, 0xbc, 0x57, 0xac, 0x06, 0xa6, 0x36, 0x3d, 0x41, 0x2d, + 0x90, 0xa9, 0x0c, 0xec, 0xee, 0xee, 0xf8, 0x43, 0xd9, 0x36, 0x21, 0xb1, 0x3b, 0xe8, 0xd8, 0xbf, + 0x52, 0xca, 0x7e, 0x2d, 0xa5, 0x6c, 0xdf, 0xb0, 0x3a, 0xb6, 0xf3, 0x1f, 0x38, 0x0e, 0x05, 0xc7, + 0x36, 0xfe, 0x2a, 0x80, 0xa3, 0x3b, 0xce, 0x7d, 0x3c, 0x21, 0xb6, 0xff, 0x5d, 0x1f, 0xec, 0xd1, + 0xb3, 0x1e, 0xac, 0xe7, 0x03, 0x1f, 0x2b, 0x7e, 0xde, 0x52, 0x47, 0x4e, 0x65, 0xb6, 0xc8, 0x1b, + 0xc7, 0x35, 0xf6, 0x7c, 0x03, 0x13, 0xf3, 0x28, 0x05, 0xe5, 0xc6, 0x4e, 0x1f, 0x6e, 0xa1, 0xaf, + 0x5b, 0xe9, 0x43, 0x33, 0x1e, 0x76, 0xe6, 0x1e, 0x5b, 0x9f, 0x8c, 0x93, 0x38, 0xde, 0x31, 0x7d, + 0x7e, 0xd3, 0xed, 0x8c, 0x6e, 0x02, 0x60, 0xdd, 0xf5, 0x1d, 0xcf, 0x7d, 0x8d, 0x6e, 0x4f, 0x2a, + 0x4c, 0xc3, 0x32, 0x93, 0xe5, 0x92, 0x6a, 0xc5, 0x06, 0xc6, 0xb9, 0xbf, 0x02, 0x83, 0xc6, 0x9b, + 0xe7, 0x04, 0x57, 0x9c, 0x36, 0x83, 0x2b, 0x6a, 0x46, 0x4c, 0xc4, 0xb9, 0xf7, 0xc1, 0x89, 0x6c, + 0x07, 0x0f, 0xf2, 0xbc, 0xfd, 0xbf, 0x07, 0xb2, 0xa7, 0x58, 0xab, 0x24, 0x6a, 0xd1, 0xae, 0xbd, + 0xe5, 0x59, 0x7a, 0xcb, 0xb3, 0xf4, 0x96, 0x67, 0xc9, 0x3c, 0x1c, 0x10, 0x5e, 0x93, 0x81, 0x7b, + 0xe4, 0x35, 0x49, 0xf9, 0x81, 0xaa, 0x85, 0xfb, 0x81, 0xec, 0x6f, 0xf7, 0x43, 0xca, 0x8e, 0xe2, + 0xe3, 0xfd, 0x4e, 0x18, 0x88, 0x48, 0x18, 0x5c, 0xc7, 0x0b, 0x42, 0x87, 0xe8, 0x58, 0x7b, 0xde, + 0x8c, 0x25, 0x9c, 0xea, 0x9a, 0xd0, 0x49, 0x36, 0x84, 0x12, 0x51, 0xba, 0x66, 0xd9, 0x49, 0x36, + 0x30, 0x83, 0xa0, 0xf7, 0xc1, 0x48, 0xe2, 0x44, 0x4d, 0x6a, 0x6f, 0x6f, 0xb1, 0xcf, 0x2a, 0xce, + 0x3a, 0x1f, 0x12, 0xb8, 0x23, 0xab, 0x29, 0x28, 0xce, 0x60, 0xa3, 0x57, 0xa1, 0x6f, 0x83, 0x78, + 0x2d, 0x31, 0xe4, 0x2b, 0xc5, 0xc9, 0x78, 0xf6, 0xae, 0x97, 0x89, 0xd7, 0xe2, 0x12, 0x88, 0xfe, + 0xc2, 0x8c, 0x15, 0x9d, 0x6f, 0xb5, 0xcd, 0x76, 0x9c, 0x04, 0x2d, 0xf7, 0x35, 0xe9, 0xe2, 0xfb, + 0x40, 0xc1, 0x8c, 0xaf, 0x4a, 0xfa, 0xdc, 0x97, 0xa2, 0xfe, 0x62, 0xcd, 0x99, 0xf5, 0xa3, 0xe1, + 0x46, 0xec, 0x53, 0xed, 0x08, 0x4f, 0x5d, 0xd1, 0xfd, 0x98, 0x95, 0xf4, 0x79, 0x3f, 0xd4, 0x5f, + 0xac, 0x39, 0xa3, 0x1d, 0x35, 0xef, 0x07, 0x59, 0x1f, 0xae, 0x17, 0xdc, 0x07, 0x3e, 0xe7, 0x73, + 0xe7, 0xff, 0xe3, 0x50, 0xa9, 0x6f, 0x38, 0x51, 0x32, 0x36, 0xc4, 0x26, 0x8d, 0xf2, 0xe9, 0xcc, + 0xd0, 0x46, 0xcc, 0x61, 0xe8, 0x51, 0x28, 0x47, 0x64, 0x9d, 0xc5, 0x6d, 0x1a, 0x11, 0x3d, 0x98, + 0xac, 0x63, 0xda, 0x8e, 0x3c, 0xe8, 0x5b, 0x8f, 0x82, 0xd6, 0xd8, 0x48, 0x11, 0x41, 0xb4, 0x33, + 0x41, 0xb8, 0x73, 0x29, 0x0a, 0x5a, 0x69, 0xe3, 0x8c, 0xb6, 0x60, 0xc6, 0xc5, 0xfe, 0xa5, 0x52, + 0xda, 0x38, 0x4b, 0x8f, 0x32, 0x5f, 0x5b, 0xf5, 0x76, 0x14, 0x4b, 0x2f, 0x93, 0xb1, 0xb6, 0x58, + 0x33, 0x96, 0x70, 0xf4, 0x29, 0x0b, 0x06, 0x6e, 0xc5, 0x81, 0xef, 0x93, 0x44, 0x28, 0xc2, 0x1b, + 0x05, 0x0f, 0xfc, 0x15, 0x4e, 0x5d, 0xf7, 0x41, 0x34, 0x60, 0xc9, 0x97, 0x76, 0x97, 0x6c, 0xd7, + 0xbd, 0x76, 0xa3, 0x23, 0x24, 0xe4, 0x22, 0x6f, 0xc6, 0x12, 0x4e, 0x51, 0x5d, 0x9f, 0xa3, 0xf6, + 0xa5, 0x51, 0xe7, 0x7d, 0x81, 0x2a, 0xe0, 0xf6, 0xdf, 0xec, 0x87, 0x33, 0xb9, 0x4b, 0x91, 0x9a, + 0x4d, 0xcc, 0x30, 0xb9, 0xe4, 0x7a, 0x44, 0x06, 0x43, 0x31, 0xb3, 0xe9, 0x86, 0x6a, 0xc5, 0x06, + 0x06, 0xfa, 0x29, 0x80, 0xd0, 0x89, 0x9c, 0x16, 0x51, 0x5e, 0xe0, 0x23, 0x5b, 0x27, 0xb4, 0x1f, + 0xcb, 0x92, 0xa6, 0xde, 0x09, 0xab, 0xa6, 0x18, 0x1b, 0x2c, 0xd1, 0x73, 0x30, 0x18, 0x11, 0x8f, + 0x38, 0x31, 0x0b, 0x32, 0xce, 0x66, 0x4c, 0x60, 0x0d, 0xc2, 0x26, 0x1e, 0x7a, 0x42, 0xc5, 0x8d, + 0x65, 0xe2, 0x67, 0xd2, 0xb1, 0x63, 0xe8, 0x75, 0x0b, 0x46, 0xd6, 0x5d, 0x8f, 0x68, 0xee, 0x22, + 0xbf, 0x61, 0xe9, 0xe8, 0x2f, 0x79, 0xc9, 0xa4, 0xab, 0xe5, 0x71, 0xaa, 0x39, 0xc6, 0x19, 0xf6, + 0xf4, 0x33, 0x6f, 0x91, 0x88, 0x09, 0xf2, 0xfe, 0xf4, 0x67, 0xbe, 0xc1, 0x9b, 0xb1, 0x84, 0xa3, + 0x29, 0x18, 0x0d, 0x9d, 0x38, 0x9e, 0x89, 0x48, 0x83, 0xf8, 0x89, 0xeb, 0x78, 0x3c, 0xfb, 0xa0, + 0xaa, 0xa3, 0x8f, 0x97, 0xd3, 0x60, 0x9c, 0xc5, 0x47, 0x1f, 0x84, 0x87, 0xb9, 0x9b, 0x65, 0xd1, + 0x8d, 0x63, 0xd7, 0x6f, 0xea, 0x69, 0x20, 0xbc, 0x4d, 0xe3, 0x82, 0xd4, 0xc3, 0xf3, 0xf9, 0x68, + 0xb8, 0xdb, 0xf3, 0xe8, 0x29, 0xa8, 0xc6, 0x9b, 0x6e, 0x38, 0x13, 0x35, 0x62, 0x76, 0xc4, 0x52, + 0xd5, 0xbe, 0xcd, 0x15, 0xd1, 0x8e, 0x15, 0x06, 0xaa, 0xc3, 0x10, 0xff, 0x24, 0x3c, 0xf0, 0x4d, + 0x48, 0xe3, 0xa7, 0xbb, 0x2a, 0x63, 0x91, 0x4c, 0x37, 0x81, 0x9d, 0xdb, 0x17, 0xe5, 0x81, 0x0f, + 0x3f, 0x9f, 0xb8, 0x61, 0x90, 0xc1, 0x29, 0xa2, 0xf6, 0x2f, 0x94, 0xd2, 0xfb, 0x7b, 0x73, 0x91, + 0xa2, 0x98, 0x2e, 0xc5, 0xe4, 0x86, 0x13, 0x49, 0xdf, 0xcf, 0x11, 0x93, 0x24, 0x04, 0xdd, 0x1b, + 0x4e, 0x64, 0x2e, 0x6a, 0xc6, 0x00, 0x4b, 0x4e, 0xe8, 0x16, 0xf4, 0x25, 0x9e, 0x53, 0x50, 0x56, + 0x95, 0xc1, 0x51, 0xbb, 0x5b, 0x16, 0xa6, 0x62, 0xcc, 0x78, 0xa0, 0x47, 0xe8, 0x1e, 0x63, 0x4d, + 0x1e, 0xc8, 0x88, 0x6d, 0xc1, 0x5a, 0x8c, 0x59, 0xab, 0x7d, 0x17, 0x72, 0xe4, 0xaa, 0x52, 0x9b, + 0xe8, 0x02, 0x00, 0xdd, 0xae, 0x2e, 0x47, 0x64, 0xdd, 0xdd, 0x16, 0x66, 0x8b, 0x5a, 0xbb, 0xd7, + 0x14, 0x04, 0x1b, 0x58, 0xf2, 0x99, 0x95, 0xf6, 0x3a, 0x7d, 0xa6, 0xd4, 0xf9, 0x0c, 0x87, 0x60, + 0x03, 0x0b, 0x3d, 0x0b, 0xfd, 0x6e, 0xcb, 0x69, 0xaa, 0x80, 0xcf, 0x47, 0xe8, 0xa2, 0x9d, 0x67, + 0x2d, 0x77, 0x77, 0xc7, 0x47, 0x54, 0x87, 0x58, 0x13, 0x16, 0xb8, 0xe8, 0x57, 0x2c, 0x18, 0xaa, + 0x07, 0xad, 0x56, 0xe0, 0xf3, 0x4d, 0x9e, 0xd8, 0xb1, 0xde, 0x3a, 0x2e, 0xa3, 0x62, 0x62, 0xc6, + 0x60, 0xc6, 0xb7, 0xac, 0x2a, 0xfd, 0xcb, 0x04, 0xe1, 0x54, 0xaf, 0xcc, 0xb5, 0x5d, 0xd9, 0x67, + 0x6d, 0xff, 0xba, 0x05, 0x27, 0xf9, 0xb3, 0xc6, 0xde, 0x53, 0x64, 0x3a, 0x05, 0xc7, 0xfc, 0x5a, + 0x1d, 0xdb, 0x71, 0xe5, 0x13, 0xec, 0x80, 0xe3, 0xce, 0x4e, 0xa2, 0x39, 0x38, 0xb9, 0x1e, 0x44, + 0x75, 0x62, 0x0e, 0x84, 0x10, 0x4c, 0x8a, 0xd0, 0xa5, 0x2c, 0x02, 0xee, 0x7c, 0x06, 0xdd, 0x80, + 0x87, 0x8c, 0x46, 0x73, 0x1c, 0xb8, 0x6c, 0x7a, 0x4c, 0x50, 0x7b, 0xe8, 0x52, 0x2e, 0x16, 0xee, + 0xf2, 0x74, 0xda, 0x3d, 0x53, 0xeb, 0xc1, 0x3d, 0xf3, 0x0a, 0x9c, 0xad, 0x77, 0x8e, 0xcc, 0x56, + 0xdc, 0x5e, 0x8b, 0xb9, 0xa4, 0xaa, 0x4e, 0xff, 0x90, 0x20, 0x70, 0x76, 0xa6, 0x1b, 0x22, 0xee, + 0x4e, 0x03, 0x7d, 0x0c, 0xaa, 0x11, 0x61, 0x5f, 0x25, 0x16, 0x69, 0x3f, 0x47, 0xdc, 0x93, 0x6b, + 0x7b, 0x97, 0x93, 0xd5, 0xb2, 0x57, 0x34, 0xc4, 0x58, 0x71, 0x44, 0xb7, 0x61, 0x20, 0x74, 0x92, + 0xfa, 0x86, 0x48, 0xf6, 0x39, 0x72, 0xb4, 0x8d, 0x62, 0xce, 0x3c, 0xee, 0x46, 0x7a, 0x30, 0x67, + 0x82, 0x25, 0x37, 0x6a, 0x8d, 0xd4, 0x83, 0x56, 0x18, 0xf8, 0xc4, 0x4f, 0xe2, 0xb1, 0x61, 0x6d, + 0x8d, 0xcc, 0xa8, 0x56, 0x6c, 0x60, 0xa0, 0x65, 0x38, 0xcd, 0x3c, 0x54, 0x37, 0xdd, 0x64, 0x23, + 0x68, 0x27, 0x72, 0xc3, 0x35, 0x36, 0x92, 0x3e, 0x18, 0x59, 0xc8, 0xc1, 0xc1, 0xb9, 0x4f, 0x9e, + 0x7b, 0x3f, 0x9c, 0xec, 0x58, 0xca, 0x07, 0x72, 0x0e, 0xcd, 0xc2, 0x43, 0xf9, 0x8b, 0xe6, 0x40, + 0x2e, 0xa2, 0x7f, 0x9a, 0x09, 0xd2, 0x35, 0xcc, 0xf6, 0x1e, 0xdc, 0x8d, 0x0e, 0x94, 0x89, 0xbf, + 0x25, 0x74, 0xc8, 0xa5, 0xa3, 0x7d, 0xbb, 0x8b, 0xfe, 0x16, 0x5f, 0xf3, 0xcc, 0xa7, 0x72, 0xd1, + 0xdf, 0xc2, 0x94, 0x36, 0xfa, 0xb2, 0x95, 0x32, 0x04, 0xb9, 0x93, 0xf2, 0x23, 0xc7, 0xb2, 0x4f, + 0xe9, 0xd9, 0x36, 0xb4, 0xff, 0x7d, 0x09, 0xce, 0xef, 0x47, 0xa4, 0x87, 0xe1, 0x7b, 0x1c, 0xfa, + 0x63, 0x76, 0xec, 0x2e, 0x84, 0xf2, 0x20, 0x9d, 0xab, 0xfc, 0x20, 0xfe, 0x15, 0x2c, 0x40, 0xc8, + 0x83, 0x72, 0xcb, 0x09, 0x85, 0xef, 0x6a, 0xfe, 0xa8, 0x69, 0x3b, 0xf4, 0xbf, 0xe3, 0x2d, 0x3a, + 0x21, 0xf7, 0x88, 0x18, 0x0d, 0x98, 0xb2, 0x41, 0x09, 0x54, 0x9c, 0x28, 0x72, 0xe4, 0x19, 0xef, + 0xd5, 0x62, 0xf8, 0x4d, 0x51, 0x92, 0xfc, 0x88, 0x2c, 0xd5, 0x84, 0x39, 0x33, 0xfb, 0xf3, 0x03, + 0xa9, 0xd4, 0x15, 0x76, 0x70, 0x1f, 0x43, 0xbf, 0x70, 0x59, 0x59, 0x45, 0x67, 0x4b, 0xf1, 0xdc, + 0x43, 0xb6, 0x2b, 0x15, 0x19, 0xdc, 0x82, 0x15, 0xfa, 0x9c, 0xc5, 0xf2, 0xa4, 0x65, 0x3a, 0x8f, + 0xd8, 0x9d, 0x1d, 0x4f, 0xda, 0xb6, 0x99, 0x7d, 0x2d, 0x1b, 0xb1, 0xc9, 0x5d, 0xd4, 0x3b, 0x60, + 0x56, 0x69, 0x67, 0xbd, 0x03, 0x66, 0x65, 0x4a, 0x38, 0xda, 0xce, 0x39, 0xa0, 0x2f, 0x20, 0xd7, + 0xb6, 0x87, 0x23, 0xf9, 0xaf, 0x5b, 0x70, 0xd2, 0xcd, 0x9e, 0xb4, 0x8a, 0xbd, 0xcc, 0x11, 0x43, + 0x40, 0xba, 0x1f, 0xe4, 0x2a, 0x75, 0xde, 0x01, 0xc2, 0x9d, 0x9d, 0x41, 0x0d, 0xe8, 0x73, 0xfd, + 0xf5, 0x40, 0x18, 0x31, 0xd3, 0x47, 0xeb, 0xd4, 0xbc, 0xbf, 0x1e, 0xe8, 0xd5, 0x4c, 0xff, 0x61, + 0x46, 0x1d, 0x2d, 0xc0, 0xe9, 0x48, 0xf8, 0xb6, 0x2e, 0xbb, 0x71, 0x12, 0x44, 0x3b, 0x0b, 0x6e, + 0xcb, 0x4d, 0x98, 0x01, 0x52, 0x9e, 0x1e, 0xa3, 0xfa, 0x01, 0xe7, 0xc0, 0x71, 0xee, 0x53, 0xe8, + 0x35, 0x18, 0x90, 0x89, 0xdd, 0xd5, 0x22, 0xf6, 0x85, 0x9d, 0xf3, 0x5f, 0x4d, 0xa6, 0x15, 0x91, + 0xc3, 0x2d, 0x19, 0xda, 0xaf, 0x0f, 0x42, 0xe7, 0x21, 0x2c, 0xfa, 0x38, 0xd4, 0x22, 0x95, 0x6c, + 0x6e, 0x15, 0xa1, 0xae, 0xe5, 0xf7, 0x15, 0x07, 0xc0, 0xca, 0x14, 0xd2, 0x69, 0xe5, 0x9a, 0x23, + 0xdd, 0xb0, 0xc4, 0xfa, 0xac, 0xb6, 0x80, 0xb9, 0x2d, 0xb8, 0xea, 0x73, 0xb8, 0x1d, 0xbf, 0x8e, + 0x19, 0x0f, 0x14, 0x41, 0xff, 0x06, 0x71, 0xbc, 0x64, 0xa3, 0x98, 0x23, 0x83, 0xcb, 0x8c, 0x56, + 0x36, 0xe5, 0x88, 0xb7, 0x62, 0xc1, 0x09, 0x6d, 0xc3, 0xc0, 0x06, 0x9f, 0x00, 0x62, 0x0f, 0xb1, + 0x78, 0xd4, 0xc1, 0x4d, 0xcd, 0x2a, 0xfd, 0xb9, 0x45, 0x03, 0x96, 0xec, 0x58, 0x74, 0x8f, 0x11, + 0x7f, 0xc0, 0x97, 0x6e, 0x71, 0xd9, 0x56, 0xbd, 0x07, 0x1f, 0x7c, 0x14, 0x86, 0x22, 0x52, 0x0f, + 0xfc, 0xba, 0xeb, 0x91, 0xc6, 0x94, 0x3c, 0x0e, 0x38, 0x48, 0x8e, 0x0e, 0xdb, 0x87, 0x63, 0x83, + 0x06, 0x4e, 0x51, 0x44, 0x9f, 0xb5, 0x60, 0x44, 0x65, 0xa8, 0xd2, 0x0f, 0x42, 0x84, 0xfb, 0x79, + 0xa1, 0xa0, 0x7c, 0x58, 0x46, 0x73, 0x1a, 0xdd, 0xd9, 0x1d, 0x1f, 0x49, 0xb7, 0xe1, 0x0c, 0x5f, + 0xf4, 0x12, 0x40, 0xb0, 0xc6, 0x43, 0x78, 0xa6, 0x12, 0xe1, 0x8b, 0x3e, 0xc8, 0xab, 0x8e, 0xf0, + 0x64, 0x3d, 0x49, 0x01, 0x1b, 0xd4, 0xd0, 0x55, 0x00, 0xbe, 0x6c, 0x56, 0x77, 0x42, 0xb9, 0xd1, + 0x90, 0x49, 0x56, 0xb0, 0xa2, 0x20, 0x77, 0x77, 0xc7, 0x3b, 0xbd, 0x75, 0x2c, 0x4c, 0xc2, 0x78, + 0x1c, 0xfd, 0x24, 0x0c, 0xc4, 0xed, 0x56, 0xcb, 0x51, 0x9e, 0xea, 0x02, 0xd3, 0xff, 0x38, 0x5d, + 0x43, 0x14, 0xf1, 0x06, 0x2c, 0x39, 0xa2, 0x5b, 0x54, 0xa8, 0xc6, 0xc2, 0x8d, 0xc8, 0x56, 0x11, + 0xb7, 0x09, 0x06, 0xd9, 0x3b, 0xbd, 0x47, 0x1a, 0xde, 0x38, 0x07, 0xe7, 0xee, 0xee, 0xf8, 0x43, + 0xe9, 0xf6, 0x85, 0x40, 0x24, 0xe4, 0xe5, 0xd2, 0x44, 0x57, 0x64, 0x9d, 0x17, 0xfa, 0xda, 0xb2, + 0xfc, 0xc0, 0x93, 0xba, 0xce, 0x0b, 0x6b, 0xee, 0x3e, 0x66, 0xe6, 0xc3, 0x68, 0x11, 0x4e, 0xd5, + 0x03, 0x3f, 0x89, 0x02, 0xcf, 0xe3, 0x75, 0x8e, 0xf8, 0x9e, 0x8f, 0x7b, 0xb2, 0xdf, 0x2e, 0xba, + 0x7d, 0x6a, 0xa6, 0x13, 0x05, 0xe7, 0x3d, 0x67, 0xfb, 0xe9, 0xd8, 0x46, 0x31, 0x38, 0xcf, 0xc2, + 0x10, 0xd9, 0x4e, 0x48, 0xe4, 0x3b, 0xde, 0x75, 0xbc, 0x20, 0xbd, 0xaa, 0x6c, 0x0d, 0x5c, 0x34, + 0xda, 0x71, 0x0a, 0x0b, 0xd9, 0xca, 0xd1, 0x61, 0x24, 0x99, 0x72, 0x47, 0x87, 0x74, 0x6b, 0xd8, + 0xff, 0xa7, 0x94, 0x32, 0xc8, 0x56, 0x23, 0x42, 0x50, 0x00, 0x15, 0x3f, 0x68, 0x28, 0xd9, 0x7f, + 0xa5, 0x18, 0xd9, 0x7f, 0x2d, 0x68, 0x18, 0xc5, 0x60, 0xe8, 0xbf, 0x18, 0x73, 0x3e, 0xac, 0x5a, + 0x86, 0x2c, 0x2b, 0xc2, 0x00, 0x62, 0xa3, 0x51, 0x24, 0x67, 0x55, 0x2d, 0x63, 0xc9, 0x64, 0x84, + 0xd3, 0x7c, 0xd1, 0x26, 0x54, 0x36, 0x82, 0x38, 0x91, 0xdb, 0x8f, 0x23, 0xee, 0x74, 0x2e, 0x07, + 0x71, 0xc2, 0xac, 0x08, 0xf5, 0xda, 0xb4, 0x25, 0xc6, 0x9c, 0x87, 0xfd, 0x5f, 0xad, 0x94, 0x0f, + 0xfd, 0x26, 0x8b, 0xf3, 0xdd, 0x22, 0x3e, 0x5d, 0xd6, 0x66, 0x60, 0xd3, 0x8f, 0x66, 0xb2, 0x26, + 0xdf, 0xd1, 0xad, 0x8c, 0xd7, 0x6d, 0x4a, 0x61, 0x82, 0x91, 0x30, 0x62, 0xa0, 0x3e, 0x69, 0xa5, + 0xf3, 0x57, 0x4b, 0x45, 0x6c, 0x30, 0xcc, 0x1c, 0xee, 0x7d, 0x53, 0x61, 0xed, 0x2f, 0x5b, 0x30, + 0x30, 0xed, 0xd4, 0x37, 0x83, 0xf5, 0x75, 0xf4, 0x14, 0x54, 0x1b, 0xed, 0xc8, 0x4c, 0xa5, 0x55, + 0x8e, 0x83, 0x59, 0xd1, 0x8e, 0x15, 0x06, 0x9d, 0xc3, 0xeb, 0x4e, 0x5d, 0x66, 0x72, 0x97, 0xf9, + 0x1c, 0xbe, 0xc4, 0x5a, 0xb0, 0x80, 0xa0, 0xe7, 0x60, 0xb0, 0xe5, 0x6c, 0xcb, 0x87, 0xb3, 0x0e, + 0xfc, 0x45, 0x0d, 0xc2, 0x26, 0x9e, 0xfd, 0xaf, 0x2d, 0x18, 0x9b, 0x76, 0x62, 0xb7, 0x3e, 0xd5, + 0x4e, 0x36, 0xa6, 0xdd, 0x64, 0xad, 0x5d, 0xdf, 0x24, 0x09, 0x4f, 0xdf, 0xa7, 0xbd, 0x6c, 0xc7, + 0x74, 0x29, 0xa9, 0x7d, 0x9d, 0xea, 0xe5, 0x75, 0xd1, 0x8e, 0x15, 0x06, 0x7a, 0x0d, 0x06, 0x43, + 0x27, 0x8e, 0x6f, 0x07, 0x51, 0x03, 0x93, 0xf5, 0x62, 0x8a, 0x67, 0xac, 0x90, 0x7a, 0x44, 0x12, + 0x4c, 0xd6, 0xc5, 0x91, 0xb6, 0xa6, 0x8f, 0x4d, 0x66, 0xf6, 0x17, 0x2d, 0x38, 0x3b, 0x4d, 0x9c, + 0x88, 0x44, 0xac, 0xd6, 0x86, 0x7a, 0x91, 0x19, 0x2f, 0x68, 0x37, 0xd0, 0xab, 0x50, 0x4d, 0x68, + 0x33, 0xed, 0x96, 0x55, 0x6c, 0xb7, 0xd8, 0x89, 0xf4, 0xaa, 0x20, 0x8e, 0x15, 0x1b, 0xfb, 0x6f, + 0x59, 0x30, 0xc4, 0x0e, 0xf7, 0x66, 0x49, 0xe2, 0xb8, 0x5e, 0x47, 0x49, 0x2a, 0xab, 0xc7, 0x92, + 0x54, 0xe7, 0xa1, 0x6f, 0x23, 0x68, 0x91, 0xec, 0xc1, 0xf4, 0xe5, 0x80, 0x6e, 0xab, 0x29, 0x04, + 0x3d, 0x43, 0x3f, 0xbc, 0xeb, 0x27, 0x0e, 0x5d, 0x02, 0xd2, 0x9d, 0x3b, 0xca, 0x3f, 0xba, 0x6a, + 0xc6, 0x26, 0x8e, 0xfd, 0x5b, 0x35, 0x18, 0x10, 0xd1, 0x0b, 0x3d, 0x97, 0x70, 0x90, 0xfb, 0xfb, + 0x52, 0xd7, 0xfd, 0x7d, 0x0c, 0xfd, 0x75, 0x56, 0x1b, 0x4f, 0x98, 0x91, 0x57, 0x0b, 0x09, 0x77, + 0xe1, 0xe5, 0xf6, 0x74, 0xb7, 0xf8, 0x7f, 0x2c, 0x58, 0xa1, 0x2f, 0x59, 0x30, 0x5a, 0x0f, 0x7c, + 0x9f, 0xd4, 0xb5, 0x8d, 0xd3, 0x57, 0x44, 0x54, 0xc3, 0x4c, 0x9a, 0xa8, 0x3e, 0xeb, 0xc9, 0x00, + 0x70, 0x96, 0x3d, 0x7a, 0x01, 0x86, 0xf9, 0x98, 0xdd, 0x48, 0xf9, 0xa0, 0x75, 0xa5, 0x22, 0x13, + 0x88, 0xd3, 0xb8, 0x68, 0x82, 0xfb, 0xf2, 0x45, 0x4d, 0xa0, 0x7e, 0xed, 0xaa, 0x33, 0xaa, 0x01, + 0x19, 0x18, 0x28, 0x02, 0x14, 0x91, 0xf5, 0x88, 0xc4, 0x1b, 0x22, 0xba, 0x83, 0xd9, 0x57, 0x03, + 0x87, 0x4b, 0xf7, 0xc6, 0x1d, 0x94, 0x70, 0x0e, 0x75, 0xb4, 0x29, 0x36, 0x98, 0xd5, 0x22, 0x64, + 0xa8, 0xf8, 0xcc, 0x5d, 0xf7, 0x99, 0xe3, 0x50, 0x89, 0x37, 0x9c, 0xa8, 0xc1, 0xec, 0xba, 0x32, + 0x4f, 0x31, 0x5a, 0xa1, 0x0d, 0x98, 0xb7, 0xa3, 0x59, 0x38, 0x91, 0xa9, 0xb3, 0x14, 0x0b, 0x5f, + 0xb1, 0x4a, 0x27, 0xc9, 0x54, 0x68, 0x8a, 0x71, 0xc7, 0x13, 0xa6, 0xf3, 0x61, 0x70, 0x1f, 0xe7, + 0xc3, 0x8e, 0x8a, 0x21, 0xe4, 0x5e, 0xdc, 0x17, 0x0b, 0x19, 0x80, 0x9e, 0x02, 0x06, 0xbf, 0x90, + 0x09, 0x18, 0x1c, 0x66, 0x1d, 0xb8, 0x51, 0x4c, 0x07, 0x0e, 0x1e, 0x1d, 0x78, 0x3f, 0xa3, 0xfd, + 0xfe, 0xdc, 0x02, 0xf9, 0x5d, 0x67, 0x9c, 0xfa, 0x06, 0xa1, 0x53, 0x06, 0xbd, 0x0f, 0x46, 0xd4, + 0x16, 0x7a, 0x26, 0x68, 0xfb, 0x3c, 0xd0, 0xaf, 0xac, 0x0f, 0x85, 0x71, 0x0a, 0x8a, 0x33, 0xd8, + 0x68, 0x12, 0x6a, 0x74, 0x9c, 0xf8, 0xa3, 0x5c, 0xd7, 0xaa, 0x6d, 0xfa, 0xd4, 0xf2, 0xbc, 0x78, + 0x4a, 0xe3, 0xa0, 0x00, 0x4e, 0x7a, 0x4e, 0x9c, 0xb0, 0x1e, 0xd0, 0x1d, 0xf5, 0x21, 0x8b, 0x2d, + 0xb0, 0x9c, 0x85, 0x85, 0x2c, 0x21, 0xdc, 0x49, 0xdb, 0xfe, 0x4e, 0x1f, 0x0c, 0xa7, 0x24, 0xe3, + 0x01, 0x95, 0xf4, 0x53, 0x50, 0x95, 0x7a, 0x33, 0x5b, 0x16, 0x46, 0x29, 0x57, 0x85, 0x41, 0x95, + 0xd6, 0x9a, 0xd6, 0xaa, 0x59, 0xa3, 0xc2, 0x50, 0xb8, 0xd8, 0xc4, 0x63, 0x42, 0x39, 0xf1, 0xe2, + 0x19, 0xcf, 0x25, 0x7e, 0xc2, 0xbb, 0x59, 0x8c, 0x50, 0x5e, 0x5d, 0x58, 0x31, 0x89, 0x6a, 0xa1, + 0x9c, 0x01, 0xe0, 0x2c, 0x7b, 0xf4, 0x19, 0x0b, 0x86, 0x9d, 0xdb, 0xb1, 0x2e, 0xe0, 0x2a, 0x42, + 0x03, 0x8f, 0xa8, 0xa4, 0x52, 0x35, 0x61, 0xb9, 0xcb, 0x37, 0xd5, 0x84, 0xd3, 0x4c, 0xd1, 0x1b, + 0x16, 0x20, 0xb2, 0x4d, 0xea, 0x32, 0x78, 0x51, 0xf4, 0xa5, 0xbf, 0x88, 0x9d, 0xe6, 0xc5, 0x0e, + 0xba, 0x5c, 0xaa, 0x77, 0xb6, 0xe3, 0x9c, 0x3e, 0xd8, 0xff, 0xa2, 0xac, 0x16, 0x94, 0x8e, 0x97, + 0x75, 0x8c, 0xb8, 0x3d, 0xeb, 0xf0, 0x71, 0x7b, 0x3a, 0x22, 0xa1, 0x33, 0x87, 0x33, 0x95, 0xf2, + 0x55, 0xba, 0x4f, 0x29, 0x5f, 0x3f, 0x6d, 0xa5, 0x0a, 0x20, 0x0d, 0x5e, 0x78, 0xa9, 0xd8, 0x58, + 0xdd, 0x09, 0x1e, 0x2d, 0x91, 0x91, 0xee, 0xe9, 0x20, 0x19, 0x2a, 0x4d, 0x0d, 0xb4, 0x03, 0x49, + 0xc3, 0xff, 0x58, 0x86, 0x41, 0x43, 0x93, 0xe6, 0x9a, 0x45, 0xd6, 0x03, 0x66, 0x16, 0x95, 0x0e, + 0x60, 0x16, 0xfd, 0x14, 0xd4, 0xea, 0x52, 0xca, 0x17, 0x53, 0x02, 0x38, 0xab, 0x3b, 0xb4, 0xa0, + 0x57, 0x4d, 0x58, 0xf3, 0x44, 0x73, 0xa9, 0x44, 0x21, 0xa1, 0x21, 0xfa, 0x98, 0x86, 0xc8, 0xcb, + 0xe4, 0x11, 0x9a, 0xa2, 0xf3, 0x19, 0x56, 0x27, 0x2b, 0x74, 0xc5, 0x7b, 0xc9, 0x88, 0x7a, 0x5e, + 0x27, 0x6b, 0x79, 0x5e, 0x36, 0x63, 0x13, 0xc7, 0xfe, 0x8e, 0xa5, 0x3e, 0xee, 0x3d, 0xa8, 0x08, + 0x71, 0x2b, 0x5d, 0x11, 0xe2, 0x62, 0x21, 0xc3, 0xdc, 0xa5, 0x14, 0xc4, 0x35, 0x18, 0x98, 0x09, + 0x5a, 0x2d, 0xc7, 0x6f, 0xa0, 0x1f, 0x86, 0x81, 0x3a, 0xff, 0x29, 0x1c, 0x3b, 0xec, 0x78, 0x50, + 0x40, 0xb1, 0x84, 0xa1, 0x47, 0xa0, 0xcf, 0x89, 0x9a, 0xd2, 0x99, 0xc3, 0x82, 0x6b, 0xa6, 0xa2, + 0x66, 0x8c, 0x59, 0xab, 0xfd, 0x4f, 0xfa, 0x80, 0x9d, 0x69, 0x3b, 0x11, 0x69, 0xac, 0x06, 0xac, + 0x04, 0xe1, 0xb1, 0x1e, 0xaa, 0xe9, 0xcd, 0xd2, 0x83, 0x7c, 0xb0, 0x66, 0x1c, 0xae, 0x94, 0xef, + 0xf1, 0xe1, 0x4a, 0x97, 0xf3, 0xb2, 0xbe, 0x07, 0xe8, 0xbc, 0xcc, 0xfe, 0xbc, 0x05, 0x48, 0x05, + 0x42, 0xe8, 0x03, 0xed, 0x49, 0xa8, 0xa9, 0x90, 0x08, 0x61, 0x58, 0x69, 0x11, 0x21, 0x01, 0x58, + 0xe3, 0xf4, 0xb0, 0x43, 0x7e, 0x5c, 0xca, 0xef, 0x72, 0x3a, 0x0a, 0x98, 0x49, 0x7d, 0x21, 0xce, + 0xed, 0xdf, 0x2e, 0xc1, 0x43, 0x5c, 0x25, 0x2f, 0x3a, 0xbe, 0xd3, 0x24, 0x2d, 0xda, 0xab, 0x5e, + 0x43, 0x14, 0xea, 0x74, 0x6b, 0xe6, 0xca, 0x38, 0xdb, 0xa3, 0xae, 0x5d, 0xbe, 0xe6, 0xf8, 0x2a, + 0x9b, 0xf7, 0xdd, 0x04, 0x33, 0xe2, 0x28, 0x86, 0xaa, 0xac, 0x8f, 0x2f, 0x64, 0x71, 0x41, 0x8c, + 0x94, 0x58, 0x12, 0x7a, 0x93, 0x60, 0xc5, 0x88, 0x1a, 0xae, 0x5e, 0x50, 0xdf, 0xc4, 0x24, 0x0c, + 0x98, 0xdc, 0x35, 0xc2, 0x1c, 0x17, 0x44, 0x3b, 0x56, 0x18, 0xf6, 0x6f, 0x5b, 0x90, 0xd5, 0x48, + 0x46, 0xad, 0x37, 0x6b, 0xcf, 0x5a, 0x6f, 0x07, 0x28, 0xb6, 0xf6, 0x61, 0x18, 0x74, 0x12, 0x6a, + 0x44, 0xf0, 0x6d, 0x77, 0xf9, 0x70, 0xc7, 0x1a, 0x8b, 0x41, 0xc3, 0x5d, 0x77, 0xd9, 0x76, 0xdb, + 0x24, 0x67, 0xff, 0x89, 0x05, 0x43, 0x66, 0x9c, 0x36, 0xba, 0x20, 0x0f, 0x3a, 0x96, 0x9d, 0x64, + 0x23, 0x1b, 0x1c, 0xb8, 0xa2, 0x20, 0xd8, 0xc0, 0x42, 0x53, 0x30, 0x6a, 0xc8, 0x82, 0x65, 0x9d, + 0xe4, 0xa0, 0x34, 0xf7, 0x6c, 0x1a, 0x8c, 0xb3, 0xf8, 0xe8, 0xc3, 0x30, 0xb6, 0xee, 0xb8, 0xde, + 0x92, 0xbf, 0xd4, 0x4e, 0x96, 0xd6, 0xa7, 0x83, 0xb6, 0xdf, 0x88, 0x57, 0x76, 0x5a, 0x9e, 0xeb, + 0x6f, 0xb2, 0x57, 0xae, 0xea, 0x5a, 0xc8, 0x97, 0xba, 0xe0, 0xe1, 0xae, 0x14, 0xec, 0xff, 0xd9, + 0x07, 0x27, 0x3b, 0x32, 0x6c, 0xd0, 0xf3, 0x30, 0x54, 0x17, 0x8b, 0x20, 0x94, 0x6e, 0xbb, 0x9a, + 0x19, 0xfc, 0xa7, 0x61, 0x38, 0x85, 0xd9, 0xc3, 0x32, 0x9c, 0x87, 0x53, 0x11, 0x79, 0xb5, 0x4d, + 0xda, 0x64, 0x6a, 0x3d, 0x21, 0xd1, 0x0a, 0xa9, 0x07, 0x7e, 0x83, 0xd7, 0x5d, 0x2c, 0x4f, 0x3f, + 0x7c, 0x67, 0x77, 0xfc, 0x14, 0xee, 0x04, 0xe3, 0xbc, 0x67, 0x50, 0x08, 0xc3, 0x9e, 0x69, 0xe9, + 0x8a, 0x6d, 0xce, 0xa1, 0x8c, 0x64, 0x65, 0x09, 0xa5, 0x9a, 0x71, 0x9a, 0x41, 0xda, 0x5c, 0xae, + 0xdc, 0x27, 0x73, 0xf9, 0xd3, 0xda, 0x5c, 0xe6, 0x51, 0x06, 0x1f, 0x2a, 0x38, 0xc3, 0xea, 0xb8, + 0xed, 0xe5, 0x17, 0xa1, 0x2a, 0x23, 0xb0, 0x7a, 0x8a, 0x5c, 0x32, 0xe9, 0x74, 0x91, 0xdb, 0x77, + 0x4b, 0x90, 0xb3, 0xd5, 0xa2, 0xd2, 0x44, 0xdb, 0x35, 0x29, 0x69, 0x72, 0x30, 0xdb, 0x06, 0x6d, + 0xf3, 0xe8, 0x33, 0xae, 0xc1, 0x3f, 0x58, 0xf4, 0x56, 0x51, 0x07, 0xa4, 0xa9, 0xc4, 0x13, 0x15, + 0x94, 0x76, 0x01, 0x40, 0x9b, 0xa3, 0x22, 0xd0, 0x5f, 0x89, 0x1d, 0x6d, 0xb5, 0x62, 0x03, 0x0b, + 0x3d, 0x07, 0x83, 0xae, 0x1f, 0x27, 0x8e, 0xe7, 0x5d, 0x76, 0xfd, 0x44, 0xb8, 0x40, 0x95, 0xa9, + 0x32, 0xaf, 0x41, 0xd8, 0xc4, 0x3b, 0xf7, 0x1e, 0xe3, 0xbb, 0x1c, 0xe4, 0x7b, 0x6e, 0xc0, 0xd9, + 0x39, 0x37, 0x51, 0xe9, 0x29, 0x6a, 0x1e, 0x51, 0x6b, 0x53, 0x25, 0x77, 0x59, 0x5d, 0x93, 0xbb, + 0x8c, 0xf4, 0x90, 0x52, 0x3a, 0x9b, 0x25, 0x9b, 0x1e, 0x62, 0x3f, 0x0f, 0xa7, 0xe7, 0xdc, 0xe4, + 0x92, 0xeb, 0x91, 0x03, 0x32, 0xb1, 0x7f, 0xb3, 0x1f, 0x86, 0xcc, 0x74, 0xca, 0x83, 0xe4, 0xa7, + 0x7d, 0x91, 0x1a, 0x94, 0xe2, 0xed, 0x5c, 0x75, 0x34, 0x78, 0xf3, 0xc8, 0xb9, 0x9d, 0xf9, 0x23, + 0x66, 0xd8, 0x94, 0x9a, 0x27, 0x36, 0x3b, 0x80, 0x6e, 0x43, 0x65, 0x9d, 0xa5, 0x2f, 0x94, 0x8b, + 0x88, 0x9f, 0xc8, 0x1b, 0x51, 0xbd, 0xcc, 0x78, 0x02, 0x04, 0xe7, 0x47, 0xed, 0x80, 0x28, 0x9d, + 0x81, 0x67, 0x84, 0xdc, 0x8a, 0xdc, 0x3b, 0x85, 0xd1, 0x4d, 0xd4, 0x57, 0x0e, 0x21, 0xea, 0x53, + 0x82, 0xb7, 0xff, 0x3e, 0x09, 0x5e, 0x96, 0x8a, 0x92, 0x6c, 0x30, 0x2b, 0x55, 0xe4, 0x08, 0x0c, + 0xa4, 0xb5, 0xf9, 0x72, 0x1a, 0x8c, 0xb3, 0xf8, 0xe8, 0x13, 0x4a, 0x74, 0x57, 0x8b, 0xf0, 0x1e, + 0x9b, 0x33, 0xfa, 0xb8, 0xa5, 0xf6, 0xe7, 0x4b, 0x30, 0x32, 0xe7, 0xb7, 0x97, 0xe7, 0x96, 0xdb, + 0x6b, 0x9e, 0x5b, 0xbf, 0x4a, 0x76, 0xa8, 0x68, 0xde, 0x24, 0x3b, 0xf3, 0xb3, 0x62, 0x05, 0xa9, + 0x39, 0x73, 0x95, 0x36, 0x62, 0x0e, 0xa3, 0xc2, 0x68, 0xdd, 0xf5, 0x9b, 0x24, 0x0a, 0x23, 0x57, + 0x38, 0x76, 0x0d, 0x61, 0x74, 0x49, 0x83, 0xb0, 0x89, 0x47, 0x69, 0x07, 0xb7, 0x7d, 0x12, 0x65, + 0xcd, 0xf5, 0x25, 0xda, 0x88, 0x39, 0x8c, 0x22, 0x25, 0x51, 0x3b, 0x4e, 0xc4, 0x64, 0x54, 0x48, + 0xab, 0xb4, 0x11, 0x73, 0x18, 0x5d, 0xe9, 0x71, 0x7b, 0x8d, 0x85, 0xa7, 0x64, 0x12, 0x12, 0x56, + 0x78, 0x33, 0x96, 0x70, 0x8a, 0xba, 0x49, 0x76, 0x66, 0xe9, 0xde, 0x3e, 0x93, 0x97, 0x74, 0x95, + 0x37, 0x63, 0x09, 0x67, 0x05, 0x23, 0xd3, 0xc3, 0xf1, 0x7d, 0x57, 0x30, 0x32, 0xdd, 0xfd, 0x2e, + 0x5e, 0x82, 0x5f, 0xb6, 0x60, 0xc8, 0x0c, 0x2a, 0x43, 0xcd, 0x8c, 0x25, 0xbf, 0xd4, 0x51, 0x6f, + 0xf8, 0xc7, 0xf3, 0x2e, 0x6b, 0x6b, 0xba, 0x49, 0x10, 0xc6, 0x4f, 0x13, 0xbf, 0xe9, 0xfa, 0x84, + 0xc5, 0x0a, 0xf0, 0x60, 0xb4, 0x54, 0xc4, 0xda, 0x4c, 0xd0, 0x20, 0x87, 0xd8, 0x0a, 0xd8, 0x37, + 0xe1, 0x64, 0x47, 0x32, 0x5a, 0x0f, 0xa6, 0xc5, 0xbe, 0x89, 0xc7, 0x36, 0x86, 0x41, 0x4a, 0x58, + 0x16, 0x2d, 0x9a, 0x81, 0x93, 0x7c, 0x21, 0x51, 0x4e, 0x2b, 0xf5, 0x0d, 0xd2, 0x52, 0x09, 0x86, + 0xec, 0x14, 0xe1, 0x46, 0x16, 0x88, 0x3b, 0xf1, 0xed, 0x2f, 0x58, 0x30, 0x9c, 0xca, 0x0f, 0x2c, + 0xc8, 0x08, 0x62, 0x2b, 0x2d, 0x60, 0x31, 0x8e, 0x2c, 0xd0, 0x9b, 0xef, 0x0e, 0xf4, 0x4a, 0xd3, + 0x20, 0x6c, 0xe2, 0xd9, 0x5f, 0x2e, 0x41, 0x55, 0xc6, 0x89, 0xf4, 0xd0, 0x95, 0xcf, 0x59, 0x30, + 0xac, 0x4e, 0x6e, 0x98, 0x4b, 0xb0, 0x54, 0x44, 0x32, 0x07, 0xed, 0x81, 0x72, 0x2a, 0xf8, 0xeb, + 0x81, 0xb6, 0xc8, 0xb1, 0xc9, 0x0c, 0xa7, 0x79, 0xa3, 0x1b, 0x00, 0xf1, 0x4e, 0x9c, 0x90, 0x96, + 0xe1, 0x9c, 0xb4, 0x8d, 0x15, 0x37, 0x51, 0x0f, 0x22, 0x42, 0xd7, 0xd7, 0xb5, 0xa0, 0x41, 0x56, + 0x14, 0xa6, 0xb1, 0x73, 0x53, 0x6d, 0xd8, 0xa0, 0x64, 0xff, 0xa3, 0x12, 0x9c, 0xc8, 0x76, 0x09, + 0x7d, 0x08, 0x86, 0x24, 0x77, 0xe3, 0xde, 0x39, 0x19, 0x1c, 0x33, 0x84, 0x0d, 0xd8, 0xdd, 0xdd, + 0xf1, 0xf1, 0xce, 0x8b, 0xff, 0x26, 0x4c, 0x14, 0x9c, 0x22, 0xc6, 0x8f, 0xcf, 0xc4, 0x39, 0xef, + 0xf4, 0xce, 0x54, 0x18, 0x8a, 0x33, 0x30, 0xe3, 0xf8, 0xcc, 0x84, 0xe2, 0x0c, 0x36, 0x5a, 0x86, + 0xd3, 0x46, 0xcb, 0x35, 0xe2, 0x36, 0x37, 0xd6, 0x82, 0x48, 0xee, 0xac, 0x1e, 0xd1, 0xe1, 0x6b, + 0x9d, 0x38, 0x38, 0xf7, 0x49, 0xaa, 0xed, 0xeb, 0x4e, 0xe8, 0xd4, 0xdd, 0x64, 0x47, 0x78, 0x5b, + 0x95, 0x6c, 0x9a, 0x11, 0xed, 0x58, 0x61, 0xd8, 0x8b, 0xd0, 0xd7, 0xe3, 0x0c, 0xea, 0xc9, 0xa2, + 0x7f, 0x11, 0xaa, 0x94, 0x9c, 0x34, 0xef, 0x8a, 0x20, 0x19, 0x40, 0x55, 0xde, 0x07, 0x83, 0x6c, + 0x28, 0xbb, 0x8e, 0x3c, 0xa1, 0x54, 0xaf, 0x35, 0x1f, 0xc7, 0x6d, 0xe6, 0x0a, 0xa0, 0x40, 0xf4, + 0x38, 0x94, 0xc9, 0x76, 0x98, 0x3d, 0x8a, 0xbc, 0xb8, 0x1d, 0xba, 0x11, 0x89, 0x29, 0x12, 0xd9, + 0x0e, 0xd1, 0x39, 0x28, 0xb9, 0x0d, 0xa1, 0xa4, 0x40, 0xe0, 0x94, 0xe6, 0x67, 0x71, 0xc9, 0x6d, + 0xd8, 0xdb, 0x50, 0x53, 0x17, 0xd0, 0xa0, 0x4d, 0x29, 0xbb, 0xad, 0x22, 0x02, 0xbb, 0x24, 0xdd, + 0x2e, 0x52, 0xbb, 0x0d, 0xa0, 0x13, 0x25, 0x8b, 0x92, 0x2f, 0xe7, 0xa1, 0xaf, 0x1e, 0x88, 0x24, + 0xee, 0xaa, 0x26, 0xc3, 0x84, 0x36, 0x83, 0xd8, 0x37, 0x61, 0xe4, 0xaa, 0x1f, 0xdc, 0x66, 0xd5, + 0xf3, 0x59, 0xb1, 0x38, 0x4a, 0x78, 0x9d, 0xfe, 0xc8, 0x9a, 0x08, 0x0c, 0x8a, 0x39, 0x4c, 0x55, + 0xd1, 0x2a, 0x75, 0xab, 0xa2, 0x65, 0x7f, 0xd2, 0x82, 0x21, 0x95, 0x71, 0x35, 0xb7, 0xb5, 0x49, + 0xe9, 0x36, 0xa3, 0xa0, 0x1d, 0x66, 0xe9, 0xb2, 0x2b, 0xa2, 0x30, 0x87, 0x99, 0xa9, 0x88, 0xa5, + 0x7d, 0x52, 0x11, 0xcf, 0x43, 0xdf, 0xa6, 0xeb, 0x37, 0xb2, 0x77, 0x9e, 0x5c, 0x75, 0xfd, 0x06, + 0x66, 0x10, 0xda, 0x85, 0x13, 0xaa, 0x0b, 0x52, 0x21, 0x3c, 0x0f, 0x43, 0x6b, 0x6d, 0xd7, 0x6b, + 0xc8, 0x2a, 0x78, 0x19, 0x4f, 0xc9, 0xb4, 0x01, 0xc3, 0x29, 0x4c, 0xba, 0xaf, 0x5b, 0x73, 0x7d, + 0x27, 0xda, 0x31, 0xbc, 0x42, 0x4a, 0x28, 0x4d, 0x2b, 0x08, 0x36, 0xb0, 0xec, 0xd7, 0xcb, 0x30, + 0x92, 0xce, 0x3b, 0xeb, 0x61, 0x7b, 0xf5, 0x38, 0x54, 0x58, 0x2a, 0x5a, 0xf6, 0xd3, 0xf2, 0xc2, + 0x71, 0x1c, 0x86, 0x62, 0xe8, 0xe7, 0x25, 0x33, 0x8a, 0xb9, 0x2f, 0x48, 0x75, 0x52, 0xf9, 0x57, + 0x58, 0xd4, 0x9c, 0xa8, 0xd2, 0x21, 0x58, 0xa1, 0xcf, 0x58, 0x30, 0x10, 0x84, 0x66, 0xf5, 0xa5, + 0x0f, 0x16, 0x99, 0x93, 0x27, 0x52, 0x82, 0x84, 0x45, 0xac, 0x3e, 0xbd, 0xfc, 0x1c, 0x92, 0xf5, + 0xb9, 0xf7, 0xc2, 0x90, 0x89, 0xb9, 0x9f, 0x51, 0x5c, 0x35, 0x8d, 0xe2, 0xcf, 0x99, 0x93, 0x42, + 0x64, 0x1d, 0xf6, 0xb0, 0xdc, 0xae, 0x43, 0xa5, 0xae, 0xc2, 0x1c, 0x0e, 0x55, 0x3b, 0x55, 0xd5, + 0xb0, 0x60, 0x47, 0x5d, 0x9c, 0x9a, 0xfd, 0x1d, 0xcb, 0x98, 0x1f, 0x98, 0xc4, 0xf3, 0x0d, 0x14, + 0x41, 0xb9, 0xb9, 0xb5, 0x29, 0x4c, 0xd1, 0x2b, 0x05, 0x0d, 0xef, 0xdc, 0xd6, 0xa6, 0x9e, 0xe3, + 0x66, 0x2b, 0xa6, 0xcc, 0x7a, 0x70, 0x02, 0xa6, 0x92, 0x53, 0xcb, 0xfb, 0x27, 0xa7, 0xda, 0x6f, + 0x94, 0xe0, 0x64, 0xc7, 0xa4, 0x42, 0xaf, 0x41, 0x25, 0xa2, 0x6f, 0x29, 0x5e, 0x6f, 0xa1, 0xb0, + 0x74, 0xd2, 0x78, 0xbe, 0xa1, 0xf5, 0x6e, 0xba, 0x1d, 0x73, 0x96, 0xe8, 0x0a, 0x20, 0x1d, 0x8c, + 0xa3, 0x3c, 0x90, 0xfc, 0x95, 0xcf, 0x89, 0x47, 0xd1, 0x54, 0x07, 0x06, 0xce, 0x79, 0x0a, 0xbd, + 0x90, 0x75, 0x64, 0x96, 0xd3, 0xa7, 0xb3, 0x7b, 0xf9, 0x24, 0xed, 0x7f, 0x59, 0x82, 0xe1, 0x54, + 0x31, 0x2c, 0xe4, 0x41, 0x95, 0x78, 0xec, 0xe8, 0x42, 0x2a, 0x9b, 0xa3, 0xd6, 0x96, 0x56, 0x0a, + 0xf2, 0xa2, 0xa0, 0x8b, 0x15, 0x87, 0x07, 0x23, 0x84, 0xe0, 0x79, 0x18, 0x92, 0x1d, 0xfa, 0xa0, + 0xd3, 0xf2, 0xc4, 0x00, 0xaa, 0x39, 0x7a, 0xd1, 0x80, 0xe1, 0x14, 0xa6, 0xfd, 0x3b, 0x65, 0x18, + 0xe3, 0x67, 0x3d, 0x0d, 0x35, 0xf3, 0x16, 0xe5, 0x7e, 0xeb, 0xaf, 0xe9, 0x92, 0x75, 0x7c, 0x20, + 0xd7, 0x8e, 0x7a, 0x95, 0x43, 0x3e, 0xa3, 0x9e, 0xe2, 0xcf, 0xbe, 0x96, 0x89, 0x3f, 0xe3, 0x66, + 0x77, 0xf3, 0x98, 0x7a, 0xf4, 0xfd, 0x15, 0x90, 0xf6, 0xf7, 0x4b, 0x30, 0x9a, 0xb9, 0x27, 0x03, + 0xbd, 0x9e, 0x2e, 0xad, 0x6c, 0x15, 0xe1, 0x2b, 0xdf, 0xf3, 0xea, 0x84, 0x83, 0x15, 0x58, 0xbe, + 0x4f, 0x4b, 0xc5, 0xfe, 0xfd, 0x12, 0x8c, 0xa4, 0x2f, 0xf8, 0x78, 0x00, 0x47, 0xea, 0x5d, 0x50, + 0x63, 0x35, 0xec, 0xd9, 0xc5, 0xa5, 0xdc, 0x25, 0xcf, 0xcb, 0x85, 0xcb, 0x46, 0xac, 0xe1, 0x0f, + 0x44, 0xdd, 0x6a, 0xfb, 0x1f, 0x58, 0x70, 0x86, 0xbf, 0x65, 0x76, 0x1e, 0xfe, 0xf5, 0xbc, 0xd1, + 0x7d, 0xb9, 0xd8, 0x0e, 0x66, 0x4a, 0x2d, 0xee, 0x37, 0xbe, 0xec, 0xc2, 0x44, 0xd1, 0xdb, 0xf4, + 0x54, 0x78, 0x00, 0x3b, 0x7b, 0xa0, 0xc9, 0x60, 0xff, 0x7e, 0x19, 0xf4, 0x1d, 0x91, 0xc8, 0x15, + 0x99, 0x9c, 0x85, 0x94, 0x9c, 0x5c, 0xd9, 0xf1, 0xeb, 0xfa, 0x36, 0xca, 0x6a, 0x26, 0x91, 0xf3, + 0xe7, 0x2c, 0x18, 0x74, 0x7d, 0x37, 0x71, 0x1d, 0xb6, 0x8d, 0x2e, 0xe6, 0xfe, 0x3a, 0xc5, 0x6e, + 0x9e, 0x53, 0x0e, 0x22, 0xf3, 0x1c, 0x47, 0x31, 0xc3, 0x26, 0x67, 0xf4, 0x51, 0x11, 0x22, 0x5e, + 0x2e, 0x2c, 0x07, 0xb9, 0x9a, 0x89, 0x0b, 0x0f, 0xa9, 0xe1, 0x95, 0x44, 0x05, 0xa5, 0xee, 0x63, + 0x4a, 0x4a, 0x55, 0x2f, 0xd6, 0xb7, 0x75, 0xd3, 0x66, 0xcc, 0x19, 0xd9, 0x31, 0xa0, 0xce, 0xb1, + 0x38, 0x60, 0xf8, 0xed, 0x24, 0xd4, 0x9c, 0x76, 0x12, 0xb4, 0xe8, 0x30, 0x89, 0xa3, 0x26, 0x1d, + 0x60, 0x2c, 0x01, 0x58, 0xe3, 0xd8, 0xaf, 0x57, 0x20, 0x93, 0x5a, 0x89, 0xb6, 0xcd, 0xfb, 0x4d, + 0xad, 0x62, 0xef, 0x37, 0x55, 0x9d, 0xc9, 0xbb, 0xe3, 0x14, 0x35, 0xa1, 0x12, 0x6e, 0x38, 0xb1, + 0x34, 0xab, 0x5f, 0x54, 0xfb, 0x38, 0xda, 0x78, 0x77, 0x77, 0xfc, 0x27, 0x7a, 0xf3, 0xba, 0xd2, + 0xb9, 0x3a, 0xc9, 0x8b, 0xb4, 0x68, 0xd6, 0x8c, 0x06, 0xe6, 0xf4, 0x0f, 0x72, 0x83, 0xdf, 0xa7, + 0x44, 0xb1, 0x7e, 0x4c, 0xe2, 0xb6, 0x97, 0x88, 0xd9, 0xf0, 0x62, 0x81, 0xab, 0x8c, 0x13, 0xd6, + 0x45, 0x01, 0xf8, 0x7f, 0x6c, 0x30, 0x45, 0x1f, 0x82, 0x5a, 0x9c, 0x38, 0x51, 0x72, 0xc8, 0x34, + 0x5e, 0x35, 0xe8, 0x2b, 0x92, 0x08, 0xd6, 0xf4, 0xd0, 0x4b, 0xac, 0x02, 0xaf, 0x1b, 0x6f, 0x1c, + 0x32, 0xb3, 0x43, 0x56, 0xeb, 0x15, 0x14, 0xb0, 0x41, 0x0d, 0x5d, 0x00, 0x60, 0x73, 0x9b, 0x87, + 0x33, 0x56, 0x99, 0x97, 0x49, 0x89, 0x42, 0xac, 0x20, 0xd8, 0xc0, 0xb2, 0x7f, 0x04, 0xd2, 0x55, + 0x2d, 0xd0, 0xb8, 0x2c, 0xa2, 0xc1, 0xbd, 0xd0, 0x2c, 0x43, 0x23, 0x55, 0xef, 0xe2, 0xd7, 0x2d, + 0x30, 0x4b, 0x6f, 0xa0, 0x57, 0x79, 0x8d, 0x0f, 0xab, 0x88, 0x93, 0x43, 0x83, 0xee, 0xc4, 0xa2, + 0x13, 0x66, 0x8e, 0xb0, 0x65, 0xa1, 0x8f, 0x73, 0xef, 0x81, 0xaa, 0x84, 0x1e, 0xc8, 0xa8, 0xfb, + 0x04, 0x9c, 0xca, 0xde, 0xfe, 0x2e, 0x4e, 0x9d, 0xf6, 0x77, 0xfd, 0x48, 0x7f, 0x4e, 0xa9, 0x9b, + 0x3f, 0xa7, 0x87, 0x5b, 0x6e, 0x7f, 0xc3, 0x82, 0xf3, 0xfb, 0x5d, 0x52, 0x8f, 0x1e, 0x81, 0xbe, + 0xdb, 0x4e, 0x24, 0x4b, 0xa3, 0x33, 0x41, 0x79, 0xd3, 0x89, 0x7c, 0xcc, 0x5a, 0xd1, 0x0e, 0xf4, + 0xf3, 0x98, 0x37, 0x61, 0xad, 0xbf, 0x58, 0xec, 0x95, 0xf9, 0x57, 0x89, 0xb1, 0x5d, 0xe0, 0xf1, + 0x76, 0x58, 0x30, 0xb4, 0xbf, 0x6b, 0x01, 0x5a, 0xda, 0x22, 0x51, 0xe4, 0x36, 0x8c, 0x28, 0x3d, + 0x76, 0xe9, 0x8d, 0x71, 0xb9, 0x8d, 0x99, 0xc8, 0x9b, 0xb9, 0xf4, 0xc6, 0xf8, 0x97, 0x7f, 0xe9, + 0x4d, 0xe9, 0x60, 0x97, 0xde, 0xa0, 0x25, 0x38, 0xd3, 0xe2, 0xdb, 0x0d, 0x7e, 0x91, 0x04, 0xdf, + 0x7b, 0xa8, 0xb4, 0xb9, 0xb3, 0x77, 0x76, 0xc7, 0xcf, 0x2c, 0xe6, 0x21, 0xe0, 0xfc, 0xe7, 0xec, + 0xf7, 0x00, 0xe2, 0xc1, 0x79, 0x33, 0x79, 0x31, 0x48, 0x5d, 0xdd, 0x2f, 0xf6, 0x57, 0x2b, 0x30, + 0x9a, 0x29, 0x9c, 0x4b, 0xb7, 0x7a, 0x9d, 0x41, 0x4f, 0x47, 0xd6, 0xdf, 0x9d, 0xdd, 0xeb, 0x29, + 0x8c, 0xca, 0x87, 0x8a, 0xeb, 0x87, 0xed, 0xa4, 0x98, 0x4c, 0x59, 0xde, 0x89, 0x79, 0x4a, 0xd0, + 0x70, 0x17, 0xd3, 0xbf, 0x98, 0xb3, 0x29, 0x32, 0x28, 0x2b, 0x65, 0x8c, 0xf7, 0xdd, 0x27, 0x77, + 0xc0, 0xa7, 0x74, 0x88, 0x54, 0xa5, 0x08, 0xc7, 0x62, 0x66, 0xb2, 0x1c, 0xf7, 0x51, 0xfb, 0xaf, + 0x95, 0x60, 0xd0, 0xf8, 0x68, 0xe8, 0x97, 0xd2, 0x85, 0xa9, 0xac, 0xe2, 0x5e, 0x89, 0xd1, 0x9f, + 0xd0, 0xa5, 0xa7, 0xf8, 0x2b, 0x3d, 0xd1, 0x59, 0x93, 0xea, 0xee, 0xee, 0xf8, 0x89, 0x4c, 0xd5, + 0xa9, 0x54, 0x9d, 0xaa, 0x73, 0x1f, 0x87, 0xd1, 0x0c, 0x99, 0x9c, 0x57, 0x5e, 0x4d, 0x5f, 0xee, + 0x7f, 0x44, 0xb7, 0x94, 0x39, 0x64, 0x6f, 0xd2, 0x21, 0x13, 0xc9, 0x82, 0x81, 0x47, 0x7a, 0xf0, + 0xc1, 0x66, 0x72, 0x82, 0x4b, 0x3d, 0xe6, 0x04, 0x3f, 0x09, 0xd5, 0x30, 0xf0, 0xdc, 0xba, 0xab, + 0xaa, 0x37, 0xb2, 0x2c, 0xe4, 0x65, 0xd1, 0x86, 0x15, 0x14, 0xdd, 0x86, 0xda, 0xad, 0xdb, 0x09, + 0x3f, 0xfd, 0x11, 0xfe, 0xed, 0xa2, 0x0e, 0x7d, 0x94, 0xd1, 0xa2, 0x8e, 0x97, 0xb0, 0xe6, 0x85, + 0x6c, 0xe8, 0x67, 0x4a, 0x50, 0x26, 0x38, 0x30, 0xdf, 0x3b, 0xd3, 0x8e, 0x31, 0x16, 0x10, 0xfb, + 0x1b, 0x35, 0x38, 0x9d, 0x57, 0xbd, 0x1c, 0x7d, 0x0c, 0xfa, 0x79, 0x1f, 0x8b, 0xb9, 0x20, 0x23, + 0x8f, 0xc7, 0x1c, 0x23, 0x28, 0xba, 0xc5, 0x7e, 0x63, 0xc1, 0x53, 0x70, 0xf7, 0x9c, 0x35, 0x31, + 0x43, 0x8e, 0x87, 0xfb, 0x82, 0xa3, 0xb9, 0x2f, 0x38, 0x9c, 0xbb, 0xe7, 0xac, 0xa1, 0x6d, 0xa8, + 0x34, 0xdd, 0x84, 0x38, 0xc2, 0x89, 0x70, 0xf3, 0x58, 0x98, 0x13, 0x87, 0x5b, 0x69, 0xec, 0x27, + 0xe6, 0x0c, 0xd1, 0xd7, 0x2d, 0x18, 0x5d, 0x4b, 0x17, 0x00, 0x10, 0xc2, 0xd3, 0x39, 0x86, 0x0a, + 0xf5, 0x69, 0x46, 0xfc, 0xd6, 0xa7, 0x4c, 0x23, 0xce, 0x76, 0x07, 0x7d, 0xda, 0x82, 0x81, 0x75, + 0xd7, 0x33, 0xca, 0x07, 0x1f, 0xc3, 0xc7, 0xb9, 0xc4, 0x18, 0xe8, 0x1d, 0x07, 0xff, 0x1f, 0x63, + 0xc9, 0xb9, 0x9b, 0xa6, 0xea, 0x3f, 0xaa, 0xa6, 0x1a, 0xb8, 0x4f, 0x9a, 0xea, 0xb3, 0x16, 0xd4, + 0xd4, 0x48, 0x8b, 0xa4, 0xee, 0x0f, 0x1d, 0xe3, 0x27, 0xe7, 0x9e, 0x13, 0xf5, 0x17, 0x6b, 0xe6, + 0xe8, 0x4b, 0x16, 0x0c, 0x3a, 0xaf, 0xb5, 0x23, 0xd2, 0x20, 0x5b, 0x41, 0x18, 0x8b, 0x2b, 0x23, + 0x5f, 0x2e, 0xbe, 0x33, 0x53, 0x94, 0xc9, 0x2c, 0xd9, 0x5a, 0x0a, 0x63, 0x91, 0x7c, 0xa5, 0x1b, + 0xb0, 0xd9, 0x05, 0x7b, 0xb7, 0x04, 0xe3, 0xfb, 0x50, 0x40, 0xcf, 0xc3, 0x50, 0x10, 0x35, 0x1d, + 0xdf, 0x7d, 0xcd, 0xac, 0xe8, 0xa1, 0xac, 0xac, 0x25, 0x03, 0x86, 0x53, 0x98, 0x66, 0xda, 0x79, + 0x69, 0x9f, 0xb4, 0xf3, 0xf3, 0xd0, 0x17, 0x91, 0x30, 0xc8, 0x6e, 0x16, 0x58, 0xe2, 0x03, 0x83, + 0xa0, 0x47, 0xa1, 0xec, 0x84, 0xae, 0x08, 0x44, 0x53, 0x7b, 0xa0, 0xa9, 0xe5, 0x79, 0x4c, 0xdb, + 0x53, 0x55, 0x30, 0x2a, 0xf7, 0xa4, 0x0a, 0x06, 0x55, 0x03, 0xe2, 0xec, 0xa2, 0x5f, 0xab, 0x81, + 0xf4, 0x99, 0x82, 0xfd, 0x46, 0x19, 0x1e, 0xdd, 0x73, 0xbe, 0xe8, 0x38, 0x3c, 0x6b, 0x8f, 0x38, + 0x3c, 0x39, 0x3c, 0xa5, 0xfd, 0x86, 0xa7, 0xdc, 0x65, 0x78, 0x3e, 0x4d, 0x97, 0x81, 0xac, 0x84, + 0x52, 0xcc, 0xa5, 0x7f, 0xdd, 0x0a, 0xab, 0x88, 0x15, 0x20, 0xa1, 0x58, 0xf3, 0xa5, 0x7b, 0x80, + 0x54, 0xca, 0x75, 0xa5, 0x08, 0x35, 0xd0, 0xb5, 0x32, 0x0a, 0x9f, 0xfb, 0xdd, 0xf2, 0xb8, 0xed, + 0x9f, 0x2f, 0xc1, 0xe3, 0x3d, 0x48, 0x6f, 0x73, 0x16, 0x5b, 0x3d, 0xce, 0xe2, 0xef, 0xef, 0xcf, + 0x64, 0xff, 0x0d, 0x0b, 0xce, 0x75, 0x57, 0x1e, 0xe8, 0x19, 0x18, 0x5c, 0x8b, 0x1c, 0xbf, 0xbe, + 0xc1, 0x2e, 0x32, 0x95, 0x83, 0xc2, 0xc6, 0x5a, 0x37, 0x63, 0x13, 0x87, 0x6e, 0x6f, 0x79, 0x4c, + 0x82, 0x81, 0x21, 0x53, 0x64, 0xe9, 0xf6, 0x76, 0x35, 0x0b, 0xc4, 0x9d, 0xf8, 0xf6, 0x9f, 0x95, + 0xf2, 0xbb, 0xc5, 0x8d, 0x8c, 0x83, 0x7c, 0x27, 0xf1, 0x15, 0x4a, 0x3d, 0xc8, 0x92, 0xf2, 0xbd, + 0x96, 0x25, 0x7d, 0xdd, 0x64, 0x09, 0x9a, 0x85, 0x13, 0xc6, 0x45, 0x37, 0x3c, 0xed, 0x99, 0x07, + 0xdc, 0xaa, 0x5a, 0x20, 0xcb, 0x19, 0x38, 0xee, 0x78, 0x02, 0x3d, 0x05, 0x55, 0xd7, 0x8f, 0x49, + 0xbd, 0x1d, 0xf1, 0x40, 0x6f, 0x23, 0xd5, 0x6c, 0x5e, 0xb4, 0x63, 0x85, 0x61, 0xff, 0x72, 0x09, + 0xce, 0x76, 0xb5, 0xb3, 0xee, 0x91, 0xec, 0x32, 0x3f, 0x47, 0xdf, 0xbd, 0xf9, 0x1c, 0xe6, 0x20, + 0x55, 0xf6, 0x1d, 0xa4, 0x3f, 0xe8, 0x3e, 0x31, 0xa9, 0xcd, 0xfd, 0x03, 0x3b, 0x4a, 0x2f, 0xc0, + 0xb0, 0x13, 0x86, 0x1c, 0x8f, 0xc5, 0x6b, 0x66, 0x6a, 0x01, 0x4d, 0x99, 0x40, 0x9c, 0xc6, 0xed, + 0x49, 0x7b, 0xfe, 0x91, 0x05, 0x35, 0x4c, 0xd6, 0xb9, 0x74, 0x40, 0xb7, 0xc4, 0x10, 0x59, 0x45, + 0x54, 0x0d, 0xa5, 0x03, 0x1b, 0xbb, 0xac, 0x9a, 0x66, 0xde, 0x60, 0x77, 0x5e, 0x88, 0x54, 0x3a, + 0xd0, 0x85, 0x48, 0xea, 0x4a, 0x9c, 0x72, 0xf7, 0x2b, 0x71, 0xec, 0x37, 0x07, 0xe8, 0xeb, 0x85, + 0xc1, 0x4c, 0x44, 0x1a, 0x31, 0xfd, 0xbe, 0xed, 0xc8, 0x13, 0x93, 0x44, 0x7d, 0xdf, 0xeb, 0x78, + 0x01, 0xd3, 0xf6, 0xd4, 0x51, 0x4c, 0xe9, 0x40, 0x95, 0x50, 0xca, 0xfb, 0x56, 0x42, 0x79, 0x01, + 0x86, 0xe3, 0x78, 0x63, 0x39, 0x72, 0xb7, 0x9c, 0x84, 0x5c, 0x25, 0x3b, 0xc2, 0xca, 0xd2, 0xd5, + 0x0b, 0x56, 0x2e, 0x6b, 0x20, 0x4e, 0xe3, 0xa2, 0x39, 0x38, 0xa9, 0xeb, 0x91, 0x90, 0x28, 0x61, + 0xd1, 0xfd, 0x7c, 0x26, 0xa8, 0x54, 0x65, 0x5d, 0xc1, 0x44, 0x20, 0xe0, 0xce, 0x67, 0xa8, 0x7c, + 0x4b, 0x35, 0xd2, 0x8e, 0xf4, 0xa7, 0xe5, 0x5b, 0x8a, 0x0e, 0xed, 0x4b, 0xc7, 0x13, 0x68, 0x11, + 0x4e, 0xf1, 0x89, 0x31, 0x15, 0x86, 0xc6, 0x1b, 0x0d, 0xa4, 0xab, 0x35, 0xce, 0x75, 0xa2, 0xe0, + 0xbc, 0xe7, 0xd0, 0x73, 0x30, 0xa8, 0x9a, 0xe7, 0x67, 0xc5, 0x29, 0x82, 0xf2, 0x62, 0x28, 0x32, + 0xf3, 0x0d, 0x6c, 0xe2, 0xa1, 0x0f, 0xc2, 0xc3, 0xfa, 0x2f, 0x4f, 0x01, 0xe3, 0x47, 0x6b, 0xb3, + 0xa2, 0xd4, 0x93, 0xba, 0x12, 0x65, 0x2e, 0x17, 0xad, 0x81, 0xbb, 0x3d, 0x8f, 0xd6, 0xe0, 0x9c, + 0x02, 0x5d, 0xf4, 0x13, 0x96, 0xcf, 0x11, 0x93, 0x69, 0x27, 0x26, 0xd7, 0x23, 0x4f, 0xdc, 0x60, + 0xab, 0xee, 0xc6, 0x9c, 0x73, 0x93, 0xcb, 0x79, 0x98, 0x78, 0x01, 0xef, 0x41, 0x05, 0x4d, 0x42, + 0x8d, 0xf8, 0xce, 0x9a, 0x47, 0x96, 0x66, 0xe6, 0x59, 0xc9, 0x28, 0xe3, 0x24, 0xef, 0xa2, 0x04, + 0x60, 0x8d, 0xa3, 0x22, 0x4c, 0x87, 0xba, 0xde, 0xd3, 0xba, 0x0c, 0xa7, 0x9b, 0xf5, 0x90, 0xda, + 0x1e, 0x6e, 0x9d, 0x4c, 0xd5, 0x59, 0x40, 0x1d, 0xfd, 0x30, 0xbc, 0x8c, 0xa6, 0x0a, 0x9f, 0x9e, + 0x9b, 0x59, 0xee, 0xc0, 0xc1, 0xb9, 0x4f, 0xb2, 0xc0, 0xcb, 0x28, 0xd8, 0xde, 0x19, 0x3b, 0x95, + 0x09, 0xbc, 0xa4, 0x8d, 0x98, 0xc3, 0xd0, 0x15, 0x40, 0x2c, 0x16, 0xff, 0x72, 0x92, 0x84, 0xca, + 0xd8, 0x19, 0x3b, 0xcd, 0x5e, 0x49, 0x85, 0x91, 0x5d, 0xea, 0xc0, 0xc0, 0x39, 0x4f, 0xd9, 0xff, + 0xc9, 0x82, 0x61, 0xb5, 0x5e, 0xef, 0x41, 0x36, 0x8a, 0x97, 0xce, 0x46, 0x99, 0x3b, 0xba, 0xc4, + 0x63, 0x3d, 0xef, 0x12, 0xd2, 0xfc, 0x33, 0x83, 0x00, 0x5a, 0x2a, 0x2a, 0x85, 0x64, 0x75, 0x55, + 0x48, 0x0f, 0xac, 0x44, 0xca, 0xab, 0x0f, 0x53, 0xb9, 0xbf, 0xf5, 0x61, 0x56, 0xe0, 0x8c, 0x34, + 0x17, 0xf8, 0x59, 0xd1, 0xe5, 0x20, 0x56, 0x02, 0xae, 0x3a, 0xfd, 0xa8, 0x20, 0x74, 0x66, 0x3e, + 0x0f, 0x09, 0xe7, 0x3f, 0x9b, 0xb2, 0x52, 0x06, 0xf6, 0xb3, 0x52, 0xf4, 0x9a, 0x5e, 0x58, 0x97, + 0x77, 0x9f, 0x64, 0xd6, 0xf4, 0xc2, 0xa5, 0x15, 0xac, 0x71, 0xf2, 0x05, 0x7b, 0xad, 0x20, 0xc1, + 0x0e, 0x07, 0x16, 0xec, 0x52, 0xc4, 0x0c, 0x76, 0x15, 0x31, 0xd2, 0x27, 0x3d, 0xd4, 0xd5, 0x27, + 0xfd, 0x3e, 0x18, 0x71, 0xfd, 0x0d, 0x12, 0xb9, 0x09, 0x69, 0xb0, 0xb5, 0xc0, 0xc4, 0x4f, 0x55, + 0xab, 0xf5, 0xf9, 0x14, 0x14, 0x67, 0xb0, 0xd3, 0x72, 0x71, 0xa4, 0x07, 0xb9, 0xd8, 0x45, 0x1b, + 0x8d, 0x16, 0xa3, 0x8d, 0x4e, 0x1c, 0x5d, 0x1b, 0x9d, 0x3c, 0x56, 0x6d, 0x84, 0x0a, 0xd1, 0x46, + 0x3d, 0x09, 0x7a, 0x63, 0xfb, 0x77, 0x7a, 0x9f, 0xed, 0x5f, 0x37, 0x55, 0x74, 0xe6, 0xd0, 0xaa, + 0x28, 0x5f, 0xcb, 0x3c, 0x74, 0x28, 0x2d, 0xf3, 0xd9, 0x12, 0x9c, 0xd1, 0x72, 0x98, 0xce, 0x7e, + 0x77, 0x9d, 0x4a, 0x22, 0x76, 0x7d, 0x16, 0x3f, 0xb7, 0x31, 0x92, 0xa3, 0x74, 0x9e, 0x95, 0x82, + 0x60, 0x03, 0x8b, 0xe5, 0x18, 0x91, 0x88, 0x15, 0x0b, 0xce, 0x0a, 0xe9, 0x19, 0xd1, 0x8e, 0x15, + 0x06, 0x9d, 0x5f, 0xf4, 0xb7, 0xc8, 0xdb, 0xcc, 0x96, 0xc4, 0x9b, 0xd1, 0x20, 0x6c, 0xe2, 0xa1, + 0x27, 0x39, 0x13, 0x26, 0x20, 0xa8, 0xa0, 0x1e, 0x12, 0xb7, 0xf7, 0x4a, 0x99, 0xa0, 0xa0, 0xb2, + 0x3b, 0x2c, 0x99, 0xac, 0xd2, 0xd9, 0x1d, 0x16, 0x02, 0xa5, 0x30, 0xec, 0xff, 0x65, 0xc1, 0xd9, + 0xdc, 0xa1, 0xb8, 0x07, 0xca, 0x77, 0x3b, 0xad, 0x7c, 0x57, 0x8a, 0xda, 0x6e, 0x18, 0x6f, 0xd1, + 0x45, 0x11, 0xff, 0x07, 0x0b, 0x46, 0x34, 0xfe, 0x3d, 0x78, 0x55, 0x37, 0xfd, 0xaa, 0xc5, 0xed, + 0xac, 0x6a, 0x1d, 0xef, 0xf6, 0x3b, 0x25, 0x50, 0x65, 0x2a, 0xa7, 0xea, 0xb2, 0x08, 0xf0, 0x3e, + 0x27, 0x89, 0x3b, 0xd0, 0xcf, 0x0e, 0x42, 0xe3, 0x62, 0x82, 0x3c, 0xd2, 0xfc, 0xd9, 0xa1, 0xaa, + 0x3e, 0x64, 0x66, 0x7f, 0x63, 0x2c, 0x18, 0xb2, 0x52, 0xd6, 0x6e, 0x4c, 0xa5, 0x79, 0x43, 0xa4, + 0x65, 0xe9, 0x52, 0xd6, 0xa2, 0x1d, 0x2b, 0x0c, 0xaa, 0x1e, 0xdc, 0x7a, 0xe0, 0xcf, 0x78, 0x4e, + 0x2c, 0xef, 0x8c, 0x54, 0xea, 0x61, 0x5e, 0x02, 0xb0, 0xc6, 0x61, 0x67, 0xa4, 0x6e, 0x1c, 0x7a, + 0xce, 0x8e, 0xb1, 0x7f, 0x36, 0xea, 0x13, 0x28, 0x10, 0x36, 0xf1, 0xec, 0x16, 0x8c, 0xa5, 0x5f, + 0x62, 0x96, 0xac, 0xb3, 0x00, 0xc5, 0x9e, 0x86, 0x73, 0x12, 0x6a, 0x0e, 0x7b, 0x6a, 0xa1, 0xed, + 0x64, 0x2f, 0x96, 0x9f, 0x92, 0x00, 0xac, 0x71, 0xec, 0x5f, 0xb5, 0xe0, 0x54, 0xce, 0xa0, 0x15, + 0x98, 0xf6, 0x96, 0x68, 0x69, 0x93, 0xa7, 0xd8, 0xdf, 0x09, 0x03, 0x0d, 0xb2, 0xee, 0xc8, 0x10, + 0x38, 0x43, 0xb6, 0xcf, 0xf2, 0x66, 0x2c, 0xe1, 0xf6, 0xff, 0xb0, 0x60, 0x34, 0xdd, 0xd7, 0x98, + 0xa5, 0x92, 0xf0, 0x61, 0x72, 0xe3, 0x7a, 0xb0, 0x45, 0xa2, 0x1d, 0xfa, 0xe6, 0x56, 0x26, 0x95, + 0xa4, 0x03, 0x03, 0xe7, 0x3c, 0xc5, 0x8a, 0xd4, 0x36, 0xd4, 0x68, 0xcb, 0x19, 0x79, 0xa3, 0xc8, + 0x19, 0xa9, 0x3f, 0xa6, 0x79, 0x5c, 0xae, 0x58, 0x62, 0x93, 0xbf, 0xfd, 0xdd, 0x3e, 0x50, 0x79, + 0xb1, 0x2c, 0xfe, 0xa8, 0xa0, 0xe8, 0xad, 0x83, 0x66, 0x10, 0xa9, 0xc9, 0xd0, 0xb7, 0x57, 0x40, + 0x00, 0xf7, 0x92, 0x98, 0xae, 0x4b, 0xf5, 0x86, 0xab, 0x1a, 0x84, 0x4d, 0x3c, 0xda, 0x13, 0xcf, + 0xdd, 0x22, 0xfc, 0xa1, 0xfe, 0x74, 0x4f, 0x16, 0x24, 0x00, 0x6b, 0x1c, 0xda, 0x93, 0x86, 0xbb, + 0xbe, 0x2e, 0xb6, 0xfc, 0xaa, 0x27, 0x74, 0x74, 0x30, 0x83, 0xf0, 0xba, 0xe3, 0xc1, 0xa6, 0xb0, + 0x82, 0x8d, 0xba, 0xe3, 0xc1, 0x26, 0x66, 0x10, 0x6a, 0xb7, 0xf9, 0x41, 0xd4, 0x62, 0x17, 0xff, + 0x37, 0x14, 0x17, 0x61, 0xfd, 0x2a, 0xbb, 0xed, 0x5a, 0x27, 0x0a, 0xce, 0x7b, 0x8e, 0xce, 0xc0, + 0x30, 0x22, 0x0d, 0xb7, 0x9e, 0x98, 0xd4, 0x20, 0x3d, 0x03, 0x97, 0x3b, 0x30, 0x70, 0xce, 0x53, + 0x68, 0x0a, 0x46, 0x65, 0x5e, 0xb3, 0xac, 0x5a, 0x33, 0x98, 0xae, 0x92, 0x81, 0xd3, 0x60, 0x9c, + 0xc5, 0xa7, 0x52, 0xad, 0x25, 0xca, 0x72, 0x31, 0x63, 0xd9, 0x90, 0x6a, 0xb2, 0x5c, 0x17, 0x56, + 0x18, 0xf6, 0xa7, 0xca, 0x54, 0x0b, 0x77, 0x29, 0x47, 0x77, 0xcf, 0xa2, 0x05, 0xd3, 0x33, 0xb2, + 0xaf, 0x87, 0x19, 0xf9, 0x2c, 0x0c, 0xdd, 0x8a, 0x03, 0x5f, 0x45, 0xe2, 0x55, 0xba, 0x46, 0xe2, + 0x19, 0x58, 0xf9, 0x91, 0x78, 0xfd, 0x45, 0x45, 0xe2, 0x0d, 0x1c, 0x32, 0x12, 0xef, 0x5b, 0x15, + 0x50, 0x17, 0xa0, 0x5c, 0x23, 0xc9, 0xed, 0x20, 0xda, 0x74, 0xfd, 0x26, 0xcb, 0x07, 0xff, 0xba, + 0x05, 0x43, 0x7c, 0xbd, 0x2c, 0x98, 0x99, 0x54, 0xeb, 0x05, 0xdd, 0xac, 0x91, 0x62, 0x36, 0xb1, + 0x6a, 0x30, 0xca, 0x5c, 0x59, 0x6a, 0x82, 0x70, 0xaa, 0x47, 0xe8, 0xe3, 0x00, 0xd2, 0x3f, 0xba, + 0x2e, 0x45, 0xe6, 0x7c, 0x31, 0xfd, 0xc3, 0x64, 0x5d, 0xdb, 0xc0, 0xab, 0x8a, 0x09, 0x36, 0x18, + 0xa2, 0xcf, 0xea, 0x2c, 0x33, 0x1e, 0xb2, 0xff, 0xd1, 0x63, 0x19, 0x9b, 0x5e, 0x72, 0xcc, 0x30, + 0x0c, 0xb8, 0x7e, 0x93, 0xce, 0x13, 0x11, 0xb1, 0xf4, 0x8e, 0xbc, 0x5a, 0x0a, 0x0b, 0x81, 0xd3, + 0x98, 0x76, 0x3c, 0xc7, 0xaf, 0x93, 0x68, 0x9e, 0xa3, 0x9b, 0x17, 0x75, 0xb3, 0x06, 0x2c, 0x09, + 0x75, 0x5c, 0x1d, 0x53, 0xe9, 0xe5, 0xea, 0x98, 0x73, 0xef, 0x87, 0x93, 0x1d, 0x1f, 0xf3, 0x40, + 0x29, 0x65, 0x87, 0xcf, 0x46, 0xb3, 0xff, 0x55, 0xbf, 0x56, 0x5a, 0xd7, 0x82, 0x06, 0xbf, 0xc0, + 0x24, 0xd2, 0x5f, 0x54, 0xd8, 0xb8, 0x05, 0x4e, 0x11, 0xe3, 0xb2, 0x6f, 0xd5, 0x88, 0x4d, 0x96, + 0x74, 0x8e, 0x86, 0x4e, 0x44, 0xfc, 0xe3, 0x9e, 0xa3, 0xcb, 0x8a, 0x09, 0x36, 0x18, 0xa2, 0x8d, + 0x54, 0x4e, 0xc9, 0xa5, 0xa3, 0xe7, 0x94, 0xb0, 0x2a, 0x53, 0x79, 0x77, 0x0e, 0x7c, 0xc9, 0x82, + 0x11, 0x3f, 0x35, 0x73, 0x8b, 0x09, 0x23, 0xcd, 0x5f, 0x15, 0xfc, 0xfe, 0xac, 0x74, 0x1b, 0xce, + 0xf0, 0xcf, 0x53, 0x69, 0x95, 0x03, 0xaa, 0x34, 0x7d, 0x13, 0x52, 0x7f, 0xb7, 0x9b, 0x90, 0x90, + 0xaf, 0xae, 0x82, 0x1b, 0x28, 0xfc, 0x2a, 0x38, 0xc8, 0xb9, 0x06, 0xee, 0x26, 0xd4, 0xea, 0x11, + 0x71, 0x92, 0x43, 0xde, 0x0a, 0xc6, 0x0e, 0xe8, 0x67, 0x24, 0x01, 0xac, 0x69, 0xd9, 0xff, 0xb7, + 0x0f, 0x4e, 0xc8, 0x11, 0x91, 0x21, 0xe8, 0x54, 0x3f, 0x72, 0xbe, 0xda, 0xb8, 0x55, 0xfa, 0xf1, + 0xb2, 0x04, 0x60, 0x8d, 0x43, 0xed, 0xb1, 0x76, 0x4c, 0x96, 0x42, 0xe2, 0x2f, 0xb8, 0x6b, 0xb1, + 0x38, 0xe7, 0x54, 0x0b, 0xe5, 0xba, 0x06, 0x61, 0x13, 0x8f, 0x1a, 0xe3, 0xdc, 0x2e, 0x8e, 0xb3, + 0xe9, 0x2b, 0xc2, 0xde, 0xc6, 0x12, 0x8e, 0x7e, 0x21, 0xb7, 0x3e, 0x6e, 0x31, 0x89, 0x5b, 0x1d, + 0x91, 0xf7, 0x07, 0xbc, 0x48, 0xf2, 0xef, 0x5a, 0x70, 0x86, 0xb7, 0xca, 0x91, 0xbc, 0x1e, 0x36, + 0x9c, 0x84, 0xc4, 0xc5, 0xd4, 0xab, 0xcf, 0xe9, 0x9f, 0x76, 0xf2, 0xe6, 0xb1, 0xc5, 0xf9, 0xbd, + 0x41, 0xaf, 0x5b, 0x30, 0xba, 0x99, 0xaa, 0xf9, 0x21, 0x55, 0xc7, 0x51, 0xd3, 0xf1, 0x53, 0x44, + 0xf5, 0x52, 0x4b, 0xb7, 0xc7, 0x38, 0xcb, 0xdd, 0xfe, 0x33, 0x0b, 0x4c, 0x31, 0x7a, 0xef, 0x4b, + 0x85, 0x1c, 0xdc, 0x14, 0x94, 0xd6, 0x65, 0xa5, 0xab, 0x75, 0xf9, 0x28, 0x94, 0xdb, 0x6e, 0x43, + 0xec, 0x2f, 0xf4, 0xe9, 0xeb, 0xfc, 0x2c, 0xa6, 0xed, 0xf6, 0x3f, 0xaf, 0x68, 0xbf, 0x85, 0xc8, + 0x8b, 0xfa, 0x81, 0x78, 0xed, 0x75, 0x55, 0x6c, 0x8c, 0xbf, 0xf9, 0xb5, 0x8e, 0x62, 0x63, 0x3f, + 0x76, 0xf0, 0xb4, 0x37, 0x3e, 0x40, 0xdd, 0x6a, 0x8d, 0x0d, 0xec, 0x93, 0xf3, 0x76, 0x0b, 0xaa, + 0x74, 0x0b, 0xc6, 0x1c, 0x90, 0xd5, 0x54, 0xa7, 0xaa, 0x97, 0x45, 0xfb, 0xdd, 0xdd, 0xf1, 0xf7, + 0x1e, 0xbc, 0x5b, 0xf2, 0x69, 0xac, 0xe8, 0xa3, 0x18, 0x6a, 0xf4, 0x37, 0x4b, 0xcf, 0x13, 0x9b, + 0xbb, 0xeb, 0x4a, 0x66, 0x4a, 0x40, 0x21, 0xb9, 0x7f, 0x9a, 0x0f, 0xf2, 0xa1, 0xc6, 0xee, 0xdc, + 0x65, 0x4c, 0xf9, 0x1e, 0x70, 0x59, 0x25, 0xc9, 0x49, 0xc0, 0xdd, 0xdd, 0xf1, 0x17, 0x0e, 0xce, + 0x54, 0x3d, 0x8e, 0x35, 0x0b, 0xfb, 0xcb, 0x7d, 0x7a, 0xee, 0x8a, 0x1a, 0x73, 0x3f, 0x10, 0x73, + 0xf7, 0xf9, 0xcc, 0xdc, 0x3d, 0xdf, 0x31, 0x77, 0x47, 0xf4, 0xdd, 0xb0, 0xa9, 0xd9, 0x78, 0xaf, + 0x0d, 0x81, 0xfd, 0xfd, 0x0d, 0xcc, 0x02, 0x7a, 0xb5, 0xed, 0x46, 0x24, 0x5e, 0x8e, 0xda, 0xbe, + 0xeb, 0x37, 0xd9, 0x74, 0xac, 0x9a, 0x16, 0x50, 0x0a, 0x8c, 0xb3, 0xf8, 0x74, 0x53, 0x4f, 0xbf, + 0xf9, 0x4d, 0x67, 0x8b, 0xcf, 0x2a, 0xa3, 0xec, 0xd6, 0x8a, 0x68, 0xc7, 0x0a, 0xc3, 0x7e, 0x93, + 0x9d, 0x65, 0x1b, 0x79, 0xc1, 0x74, 0x4e, 0x78, 0xec, 0x92, 0x63, 0x5e, 0xb3, 0x4b, 0xcd, 0x09, + 0x7e, 0xb3, 0x31, 0x87, 0xa1, 0xdb, 0x30, 0xb0, 0xc6, 0x6f, 0xf9, 0x2b, 0xa6, 0x0a, 0xbb, 0xb8, + 0x32, 0x90, 0xdd, 0xe5, 0x22, 0xef, 0x0f, 0xbc, 0xab, 0x7f, 0x62, 0xc9, 0xcd, 0xfe, 0xbd, 0x0a, + 0x8c, 0x66, 0xae, 0xc1, 0x4d, 0x55, 0x4b, 0x2d, 0xed, 0x5b, 0x2d, 0xf5, 0x23, 0x00, 0x0d, 0x12, + 0x7a, 0xc1, 0x0e, 0x33, 0xc7, 0xfa, 0x0e, 0x6c, 0x8e, 0x29, 0x0b, 0x7e, 0x56, 0x51, 0xc1, 0x06, + 0x45, 0x51, 0xa8, 0x8c, 0x17, 0x5f, 0xcd, 0x14, 0x2a, 0x33, 0xee, 0x6a, 0xe8, 0xbf, 0xb7, 0x77, + 0x35, 0xb8, 0x30, 0xca, 0xbb, 0xa8, 0xb2, 0x6f, 0x0f, 0x91, 0x64, 0x7b, 0x8a, 0x17, 0x52, 0x4f, + 0x91, 0xc1, 0x59, 0xba, 0xf7, 0xf3, 0x96, 0x6b, 0xf4, 0x2e, 0xa8, 0xc9, 0xef, 0x1c, 0x8f, 0xd5, + 0x74, 0x05, 0x03, 0x39, 0x0d, 0xd8, 0xed, 0xd3, 0xe2, 0x67, 0x47, 0x21, 0x01, 0xb8, 0x5f, 0x85, + 0x04, 0xec, 0x2f, 0x96, 0xa8, 0x1d, 0xcf, 0xfb, 0xa5, 0x6a, 0xe2, 0x3c, 0x01, 0xfd, 0x4e, 0x3b, + 0xd9, 0x08, 0x3a, 0xee, 0x2c, 0x9c, 0x62, 0xad, 0x58, 0x40, 0xd1, 0x02, 0xf4, 0x35, 0x74, 0x9d, + 0x93, 0x83, 0x7c, 0x4f, 0xed, 0x12, 0x75, 0x12, 0x82, 0x19, 0x15, 0xf4, 0x08, 0xf4, 0x25, 0x4e, + 0x53, 0xa6, 0x5c, 0xb1, 0x34, 0xdb, 0x55, 0xa7, 0x19, 0x63, 0xd6, 0x6a, 0xaa, 0xef, 0xbe, 0x7d, + 0xd4, 0xf7, 0x0b, 0x30, 0x1c, 0xbb, 0x4d, 0xdf, 0x49, 0xda, 0x11, 0x31, 0x8e, 0xf9, 0x74, 0xe4, + 0x86, 0x09, 0xc4, 0x69, 0x5c, 0xfb, 0x37, 0x87, 0xe0, 0xf4, 0xca, 0xcc, 0xa2, 0xac, 0xde, 0x7d, + 0x6c, 0x59, 0x53, 0x79, 0x3c, 0xee, 0x5d, 0xd6, 0x54, 0x17, 0xee, 0x9e, 0x91, 0x35, 0xe5, 0x19, + 0x59, 0x53, 0xe9, 0x14, 0x96, 0x72, 0x11, 0x29, 0x2c, 0x79, 0x3d, 0xe8, 0x25, 0x85, 0xe5, 0xd8, + 0xd2, 0xa8, 0xf6, 0xec, 0xd0, 0x81, 0xd2, 0xa8, 0x54, 0x8e, 0x59, 0x21, 0xc9, 0x05, 0x5d, 0x3e, + 0x55, 0x6e, 0x8e, 0x99, 0xca, 0xef, 0xe1, 0x89, 0x33, 0x42, 0xd4, 0xbf, 0x5c, 0x7c, 0x07, 0x7a, + 0xc8, 0xef, 0x11, 0xb9, 0x3b, 0x66, 0x4e, 0xd9, 0x40, 0x11, 0x39, 0x65, 0x79, 0xdd, 0xd9, 0x37, + 0xa7, 0xec, 0x05, 0x18, 0xae, 0x7b, 0x81, 0x4f, 0x96, 0xa3, 0x20, 0x09, 0xea, 0x81, 0x27, 0xcc, + 0x7a, 0x25, 0x12, 0x66, 0x4c, 0x20, 0x4e, 0xe3, 0x76, 0x4b, 0x48, 0xab, 0x1d, 0x35, 0x21, 0x0d, + 0xee, 0x53, 0x42, 0xda, 0xcf, 0xea, 0xd4, 0xe9, 0x41, 0xf6, 0x45, 0x3e, 0x52, 0xfc, 0x17, 0xe9, + 0x25, 0x7f, 0x1a, 0xbd, 0xc1, 0x2f, 0x0d, 0xa4, 0x86, 0xf1, 0x4c, 0xd0, 0xa2, 0x86, 0xdf, 0x10, + 0x1b, 0x92, 0x57, 0x8e, 0x61, 0xc2, 0xde, 0x5c, 0xd1, 0x6c, 0xd4, 0x45, 0x82, 0xba, 0x09, 0xa7, + 0x3b, 0x72, 0x94, 0xd4, 0xee, 0xaf, 0x96, 0xe0, 0x87, 0xf6, 0xed, 0x02, 0xba, 0x0d, 0x90, 0x38, + 0x4d, 0x31, 0x51, 0xc5, 0x81, 0xc9, 0x11, 0xc3, 0x2b, 0x57, 0x25, 0x3d, 0x5e, 0x93, 0x44, 0xfd, + 0x65, 0x47, 0x11, 0xf2, 0x37, 0x8b, 0xaa, 0x0c, 0xbc, 0x8e, 0xd2, 0x8d, 0x38, 0xf0, 0x08, 0x66, + 0x10, 0xaa, 0xfe, 0x23, 0xd2, 0xd4, 0xb7, 0x5c, 0xab, 0xcf, 0x87, 0x59, 0x2b, 0x16, 0x50, 0xf4, + 0x1c, 0x0c, 0x3a, 0x9e, 0xc7, 0xf3, 0x63, 0x48, 0x2c, 0x6e, 0x0d, 0xd2, 0x35, 0xe4, 0x34, 0x08, + 0x9b, 0x78, 0xf6, 0x9f, 0x96, 0x60, 0x7c, 0x1f, 0x99, 0xd2, 0x91, 0xf1, 0x57, 0xe9, 0x39, 0xe3, + 0x4f, 0xe4, 0x28, 0xf4, 0x77, 0xc9, 0x51, 0x78, 0x0e, 0x06, 0x13, 0xe2, 0xb4, 0x44, 0x40, 0x96, + 0xf0, 0x04, 0xe8, 0x13, 0x60, 0x0d, 0xc2, 0x26, 0x1e, 0x95, 0x62, 0x23, 0x4e, 0xbd, 0x4e, 0xe2, + 0x58, 0x26, 0x21, 0x08, 0x6f, 0x6a, 0x61, 0x19, 0x0e, 0xcc, 0x49, 0x3d, 0x95, 0x62, 0x81, 0x33, + 0x2c, 0xb3, 0x03, 0x5e, 0xeb, 0x71, 0xc0, 0xbf, 0x51, 0x82, 0x47, 0xf7, 0xd4, 0x6e, 0x3d, 0xe7, + 0x87, 0xb4, 0x63, 0x12, 0x65, 0x27, 0xce, 0xf5, 0x98, 0x44, 0x98, 0x41, 0xf8, 0x28, 0x85, 0xa1, + 0x71, 0x8b, 0x78, 0xd1, 0xc9, 0x4b, 0x7c, 0x94, 0x52, 0x2c, 0x70, 0x86, 0xe5, 0x61, 0xa7, 0xe5, + 0x3f, 0x2c, 0xc1, 0xe3, 0x3d, 0xd8, 0x00, 0x05, 0x26, 0x79, 0xa5, 0x53, 0xed, 0xca, 0xf7, 0x29, + 0x23, 0xf2, 0x90, 0xc3, 0xf5, 0x66, 0x09, 0xce, 0x75, 0x57, 0xc5, 0xe8, 0xc7, 0x61, 0x34, 0x52, + 0x51, 0x58, 0x66, 0x96, 0xde, 0x29, 0xee, 0x49, 0x48, 0x81, 0x70, 0x16, 0x17, 0x4d, 0x00, 0x84, + 0x4e, 0xb2, 0x11, 0x5f, 0xdc, 0x76, 0xe3, 0x44, 0x54, 0xa1, 0x19, 0xe1, 0x67, 0x57, 0xb2, 0x15, + 0x1b, 0x18, 0x94, 0x1d, 0xfb, 0x37, 0x1b, 0x5c, 0x0b, 0x12, 0xfe, 0x10, 0xdf, 0x46, 0x9c, 0x92, + 0x77, 0x76, 0x18, 0x20, 0x9c, 0xc5, 0xa5, 0xec, 0xd8, 0xe9, 0x28, 0xef, 0x28, 0xdf, 0x5f, 0x30, + 0x76, 0x0b, 0xaa, 0x15, 0x1b, 0x18, 0xd9, 0xfc, 0xc3, 0xca, 0xfe, 0xf9, 0x87, 0xf6, 0x3f, 0x2b, + 0xc1, 0xd9, 0xae, 0xa6, 0x5c, 0x6f, 0x0b, 0xf0, 0xc1, 0xcb, 0x19, 0x3c, 0xdc, 0xdc, 0x39, 0x60, + 0x6e, 0xdb, 0x1f, 0x75, 0x99, 0x69, 0x22, 0xb7, 0xed, 0xf0, 0xc9, 0xe1, 0x0f, 0xde, 0x78, 0x76, + 0xa4, 0xb3, 0xf5, 0x1d, 0x20, 0x9d, 0x2d, 0xf3, 0x31, 0x2a, 0x3d, 0x2e, 0xe4, 0x3f, 0x2f, 0x77, + 0x1d, 0x5e, 0xba, 0xf5, 0xeb, 0xc9, 0x4f, 0x3b, 0x0b, 0x27, 0x5c, 0x9f, 0xdd, 0xdf, 0xb4, 0xd2, + 0x5e, 0x13, 0x85, 0x49, 0x4a, 0xe9, 0x3b, 0xe2, 0xe7, 0x33, 0x70, 0xdc, 0xf1, 0xc4, 0x03, 0x98, + 0x5e, 0x78, 0xb8, 0x21, 0x3d, 0x58, 0x82, 0x2b, 0x5a, 0x82, 0x33, 0x72, 0x28, 0x36, 0x9c, 0x88, + 0x34, 0x84, 0x1a, 0x89, 0x45, 0x42, 0xc5, 0x59, 0x9e, 0x94, 0x91, 0x83, 0x80, 0xf3, 0x9f, 0x63, + 0x57, 0xe6, 0x04, 0xa1, 0x5b, 0x17, 0x9b, 0x1c, 0x7d, 0x65, 0x0e, 0x6d, 0xc4, 0x1c, 0x66, 0x7f, + 0x04, 0x6a, 0xea, 0xfd, 0x79, 0x58, 0xb7, 0x9a, 0x74, 0x1d, 0x61, 0xdd, 0x6a, 0xc6, 0x19, 0x58, + 0xf4, 0x6b, 0x51, 0x93, 0x38, 0xb3, 0x7a, 0xae, 0x92, 0x1d, 0x66, 0x1f, 0xdb, 0xef, 0x86, 0x21, + 0xe5, 0x67, 0xe9, 0xf5, 0x22, 0x21, 0xfb, 0xcb, 0xfd, 0x30, 0x9c, 0x2a, 0x0e, 0x98, 0x72, 0xb0, + 0x5a, 0xfb, 0x3a, 0x58, 0x59, 0x98, 0x7e, 0xdb, 0x97, 0xb7, 0x8c, 0x19, 0x61, 0xfa, 0x6d, 0x9f, + 0x60, 0x0e, 0xa3, 0xe6, 0x6d, 0x23, 0xda, 0xc1, 0x6d, 0x5f, 0x84, 0xd3, 0x2a, 0xf3, 0x76, 0x96, + 0xb5, 0x62, 0x01, 0x45, 0x9f, 0xb4, 0x60, 0x28, 0x66, 0xde, 0x7b, 0xee, 0x9e, 0x16, 0x93, 0xee, + 0xca, 0xd1, 0x6b, 0x1f, 0xaa, 0x42, 0x98, 0x2c, 0x42, 0xc6, 0x6c, 0xc1, 0x29, 0x8e, 0xe8, 0x33, + 0x16, 0xd4, 0xd4, 0x65, 0x28, 0xe2, 0x2a, 0xc0, 0x95, 0x62, 0x6b, 0x2f, 0x72, 0xbf, 0xa6, 0x3a, + 0x08, 0x51, 0x45, 0xf0, 0xb0, 0x66, 0x8c, 0x62, 0xe5, 0x3b, 0x1e, 0x38, 0x1e, 0xdf, 0x31, 0xe4, + 0xf8, 0x8d, 0xdf, 0x05, 0xb5, 0x96, 0xe3, 0xbb, 0xeb, 0x24, 0x4e, 0xb8, 0x3b, 0x57, 0x96, 0x84, + 0x95, 0x8d, 0x58, 0xc3, 0xa9, 0x42, 0x8e, 0xd9, 0x8b, 0x25, 0x86, 0xff, 0x95, 0x29, 0xe4, 0x15, + 0xdd, 0x8c, 0x4d, 0x1c, 0xd3, 0x59, 0x0c, 0xf7, 0xd5, 0x59, 0x3c, 0xb8, 0xb7, 0xb3, 0xd8, 0xfe, + 0xc7, 0x16, 0x9c, 0xc9, 0xfd, 0x6a, 0x0f, 0x6e, 0xe0, 0xa3, 0xfd, 0x95, 0x0a, 0x9c, 0xca, 0xa9, + 0xf2, 0x89, 0x76, 0xcc, 0xf9, 0x6c, 0x15, 0x11, 0x43, 0x90, 0x3e, 0x12, 0x97, 0xc3, 0x98, 0x33, + 0x89, 0x0f, 0x76, 0x54, 0xa3, 0x8f, 0x4b, 0xca, 0xf7, 0xf6, 0xb8, 0xc4, 0x98, 0x96, 0x7d, 0xf7, + 0x75, 0x5a, 0x56, 0xf6, 0x39, 0xc3, 0xf8, 0x35, 0x0b, 0xc6, 0x5a, 0x5d, 0x4a, 0xcb, 0x0b, 0xc7, + 0xe3, 0x8d, 0xe3, 0x29, 0x5c, 0x3f, 0xfd, 0xc8, 0x9d, 0xdd, 0xf1, 0xae, 0x15, 0xfd, 0x71, 0xd7, + 0x5e, 0xd9, 0xdf, 0x2d, 0x03, 0x2b, 0x31, 0xcb, 0x2a, 0xb9, 0xed, 0xa0, 0x4f, 0x98, 0xc5, 0x82, + 0xad, 0xa2, 0x0a, 0xdb, 0x72, 0xe2, 0xaa, 0xd8, 0x30, 0x1f, 0xc1, 0xbc, 0xda, 0xc3, 0x59, 0xa1, + 0x55, 0xea, 0x41, 0x68, 0x79, 0xb2, 0x2a, 0x73, 0xb9, 0xf8, 0xaa, 0xcc, 0xb5, 0x6c, 0x45, 0xe6, + 0xbd, 0x3f, 0x71, 0xdf, 0x03, 0xf9, 0x89, 0x7f, 0xd1, 0xe2, 0x82, 0x27, 0xf3, 0x15, 0xb4, 0x65, + 0x60, 0xed, 0x61, 0x19, 0x3c, 0x05, 0xd5, 0x98, 0x78, 0xeb, 0x97, 0x89, 0xe3, 0x09, 0x0b, 0x42, + 0x9f, 0x5f, 0x8b, 0x76, 0xac, 0x30, 0xd8, 0xb5, 0xad, 0x9e, 0x17, 0xdc, 0xbe, 0xd8, 0x0a, 0x93, + 0x1d, 0x61, 0x4b, 0xe8, 0x6b, 0x5b, 0x15, 0x04, 0x1b, 0x58, 0xf6, 0xdf, 0x29, 0xf1, 0x19, 0x28, + 0x82, 0x20, 0x9e, 0xcf, 0x5c, 0xb4, 0xd7, 0x7b, 0xfc, 0xc0, 0xc7, 0x00, 0xea, 0xea, 0x22, 0x7e, + 0x71, 0x26, 0x74, 0xf9, 0xc8, 0xb7, 0x84, 0x0b, 0x7a, 0xfa, 0x35, 0x74, 0x1b, 0x36, 0xf8, 0xa5, + 0x64, 0x69, 0x79, 0x5f, 0x59, 0x9a, 0x12, 0x2b, 0x7d, 0xfb, 0x68, 0xbb, 0x3f, 0xb5, 0x20, 0x65, + 0x11, 0xa1, 0x10, 0x2a, 0xb4, 0xbb, 0x3b, 0x62, 0x85, 0x2e, 0x15, 0x67, 0x7e, 0x51, 0xd1, 0x28, + 0xa6, 0x3d, 0xfb, 0x89, 0x39, 0x23, 0xe4, 0x89, 0x58, 0x09, 0x3e, 0xaa, 0xd7, 0x8a, 0x63, 0x78, + 0x39, 0x08, 0x36, 0xf9, 0xc1, 0xa6, 0x8e, 0xbb, 0xb0, 0x9f, 0x87, 0x93, 0x1d, 0x9d, 0x62, 0x77, + 0x6a, 0x05, 0x54, 0xfb, 0x64, 0xa6, 0x2b, 0x4b, 0xe0, 0xc4, 0x1c, 0x66, 0xbf, 0x69, 0xc1, 0x89, + 0x2c, 0x79, 0xf4, 0x86, 0x05, 0x27, 0xe3, 0x2c, 0xbd, 0xe3, 0x1a, 0x3b, 0x15, 0xef, 0xd8, 0x01, + 0xc2, 0x9d, 0x9d, 0xb0, 0xff, 0x9f, 0x98, 0xfc, 0x37, 0x5d, 0xbf, 0x11, 0xdc, 0x56, 0x86, 0x89, + 0xd5, 0xd5, 0x30, 0xa1, 0xeb, 0xb1, 0xbe, 0x41, 0x1a, 0x6d, 0xaf, 0x23, 0x73, 0x74, 0x45, 0xb4, + 0x63, 0x85, 0xc1, 0x12, 0xe5, 0xda, 0xa2, 0x6c, 0x7b, 0x66, 0x52, 0xce, 0x8a, 0x76, 0xac, 0x30, + 0xd0, 0xb3, 0x30, 0x64, 0xbc, 0xa4, 0x9c, 0x97, 0xcc, 0x20, 0x37, 0x54, 0x66, 0x8c, 0x53, 0x58, + 0x68, 0x02, 0x40, 0x19, 0x39, 0x52, 0x45, 0x32, 0x47, 0x91, 0x92, 0x44, 0x31, 0x36, 0x30, 0x58, + 0x5a, 0xaa, 0xd7, 0x8e, 0x99, 0x8f, 0xbf, 0x5f, 0x97, 0x12, 0x9d, 0x11, 0x6d, 0x58, 0x41, 0xa9, + 0x34, 0x69, 0x39, 0x7e, 0xdb, 0xf1, 0xe8, 0x08, 0x89, 0xad, 0x9f, 0x5a, 0x86, 0x8b, 0x0a, 0x82, + 0x0d, 0x2c, 0xfa, 0xc6, 0x89, 0xdb, 0x22, 0x2f, 0x05, 0xbe, 0x8c, 0x53, 0xd3, 0xc7, 0x3e, 0xa2, + 0x1d, 0x2b, 0x0c, 0xfb, 0xbf, 0x59, 0x30, 0xaa, 0x93, 0xdc, 0xf9, 0xed, 0xd9, 0xe6, 0x4e, 0xd5, + 0xda, 0x77, 0xa7, 0x9a, 0xce, 0xfe, 0x2d, 0xf5, 0x94, 0xfd, 0x6b, 0x26, 0xe6, 0x96, 0xf7, 0x4c, + 0xcc, 0xfd, 0x61, 0x7d, 0x33, 0x2b, 0xcf, 0xe0, 0x1d, 0xcc, 0xbb, 0x95, 0x15, 0xd9, 0xd0, 0x5f, + 0x77, 0x54, 0x85, 0x97, 0x21, 0xbe, 0x77, 0x98, 0x99, 0x62, 0x48, 0x02, 0x62, 0x2f, 0x41, 0x4d, + 0x9d, 0x7e, 0xc8, 0x8d, 0xaa, 0x95, 0xbf, 0x51, 0xed, 0x29, 0x41, 0x70, 0x7a, 0xed, 0x9b, 0xdf, + 0x7b, 0xec, 0x6d, 0xdf, 0xfe, 0xde, 0x63, 0x6f, 0xfb, 0xc3, 0xef, 0x3d, 0xf6, 0xb6, 0x4f, 0xde, + 0x79, 0xcc, 0xfa, 0xe6, 0x9d, 0xc7, 0xac, 0x6f, 0xdf, 0x79, 0xcc, 0xfa, 0xc3, 0x3b, 0x8f, 0x59, + 0xdf, 0xbd, 0xf3, 0x98, 0xf5, 0xa5, 0x3f, 0x79, 0xec, 0x6d, 0x2f, 0xe5, 0x06, 0x2a, 0xd2, 0x1f, + 0x4f, 0xd7, 0x1b, 0x93, 0x5b, 0x17, 0x58, 0xac, 0x1c, 0x5d, 0x5e, 0x93, 0xc6, 0x9c, 0x9a, 0x94, + 0xcb, 0xeb, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x5d, 0xf0, 0x7f, 0xf5, 0x01, 0xe3, 0x00, 0x00, } func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) { @@ -6945,6 +6980,20 @@ func (m *ApplicationSource) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.From) > 0 { + for iNdEx := len(m.From) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.From[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + } i -= len(m.Ref) copy(dAtA[i:], m.Ref) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Ref))) @@ -8785,6 +8834,47 @@ func (m *ConnectionState) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *CopyFromSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CopyFromSpec) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CopyFromSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.FailOnOutOfBoundsSymlink { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + i -= len(m.DestinationPath) + copy(dAtA[i:], m.DestinationPath) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DestinationPath))) + i-- + dAtA[i] = 0x12 + i -= len(m.SourcePath) + copy(dAtA[i:], m.SourcePath) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SourcePath))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *DuckTypeGenerator) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -15059,6 +15149,12 @@ func (m *ApplicationSource) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Ref) n += 1 + l + sovGenerated(uint64(l)) + if len(m.From) > 0 { + for _, e := range m.From { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -15724,6 +15820,20 @@ func (m *ConnectionState) Size() (n int) { return n } +func (m *CopyFromSpec) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.SourcePath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DestinationPath) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + func (m *DuckTypeGenerator) Size() (n int) { if m == nil { return 0 @@ -18291,6 +18401,11 @@ func (this *ApplicationSource) String() string { if this == nil { return "nil" } + repeatedStringForFrom := "[]CopyFromSpec{" + for _, f := range this.From { + repeatedStringForFrom += strings.Replace(strings.Replace(f.String(), "CopyFromSpec", "CopyFromSpec", 1), `&`, ``, 1) + "," + } + repeatedStringForFrom += "}" s := strings.Join([]string{`&ApplicationSource{`, `RepoURL:` + fmt.Sprintf("%v", this.RepoURL) + `,`, `Path:` + fmt.Sprintf("%v", this.Path) + `,`, @@ -18301,6 +18416,7 @@ func (this *ApplicationSource) String() string { `Plugin:` + strings.Replace(this.Plugin.String(), "ApplicationSourcePlugin", "ApplicationSourcePlugin", 1) + `,`, `Chart:` + fmt.Sprintf("%v", this.Chart) + `,`, `Ref:` + fmt.Sprintf("%v", this.Ref) + `,`, + `From:` + repeatedStringForFrom + `,`, `}`, }, "") return s @@ -18812,6 +18928,18 @@ func (this *ConnectionState) String() string { }, "") return s } +func (this *CopyFromSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CopyFromSpec{`, + `SourcePath:` + fmt.Sprintf("%v", this.SourcePath) + `,`, + `DestinationPath:` + fmt.Sprintf("%v", this.DestinationPath) + `,`, + `FailOnOutOfBoundsSymlink:` + fmt.Sprintf("%v", this.FailOnOutOfBoundsSymlink) + `,`, + `}`, + }, "") + return s +} func (this *DuckTypeGenerator) String() string { if this == nil { return "nil" @@ -26061,6 +26189,40 @@ func (m *ApplicationSource) Unmarshal(dAtA []byte) error { } m.Ref = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = append(m.From, CopyFromSpec{}) + if err := m.From[len(m.From)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -31721,6 +31883,140 @@ func (m *ConnectionState) Unmarshal(dAtA []byte) error { } return nil } +func (m *CopyFromSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CopyFromSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CopyFromSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SourcePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SourcePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DestinationPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DestinationPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FailOnOutOfBoundsSymlink", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.FailOnOutOfBoundsSymlink = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *DuckTypeGenerator) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index 5916e42a53922..bb79ed0975ace 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -425,6 +425,9 @@ message ApplicationSource { // Ref is reference to another source within sources field. This field will not be used if used with a `source` tag. optional string ref = 13; + + // From is a list of filesystem objects that is to be copied into this source's tree. Only used within a `sources` tag. + repeated CopyFromSpec from = 14; } // ApplicationSourceDirectory holds options for applications of type plain YAML or Jsonnet @@ -875,6 +878,19 @@ message ConnectionState { optional k8s.io.apimachinery.pkg.apis.meta.v1.Time attemptedAt = 3; } +// CopyFromSpec defines a copy declaration from another source into this one +message CopyFromSpec { + // SourcePath is the path from the Ref'd repository, the source of the copy operation. + // It's syntax is matching helmValue's, $ref/path + optional string sourcePath = 1; + + // DestinationPath is the destination directory at the current repository where the object will be copied to. + optional string destinationPath = 2; + + // FailOnOutOfBoundsSymlink mode makes the complete operation error out if a single symlink is out-of-bound within the subtree + optional bool failOnOutOfBoundsSymlink = 3; +} + // DuckType defines a generator to match against clusters registered with ArgoCD. message DuckTypeGenerator { // ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go index 32eb8a725f353..c010532f43c5b 100644 --- a/pkg/apis/application/v1alpha1/openapi_generated.go +++ b/pkg/apis/application/v1alpha1/openapi_generated.go @@ -68,6 +68,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ComponentParameter": schema_pkg_apis_application_v1alpha1_ComponentParameter(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigManagementPlugin": schema_pkg_apis_application_v1alpha1_ConfigManagementPlugin(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConnectionState": schema_pkg_apis_application_v1alpha1_ConnectionState(ref), + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.CopyFromSpec": schema_pkg_apis_application_v1alpha1_CopyFromSpec(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DuckTypeGenerator": schema_pkg_apis_application_v1alpha1_DuckTypeGenerator(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.EnvEntry": schema_pkg_apis_application_v1alpha1_EnvEntry(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ExecProviderConfig": schema_pkg_apis_application_v1alpha1_ExecProviderConfig(ref), @@ -1618,12 +1619,26 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSource(ref common.Reference Format: "", }, }, + "from": { + SchemaProps: spec.SchemaProps{ + Description: "From is a list of filesystem objects that is to be copied into this source's tree. Only used within a `sources` tag.", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.CopyFromSpec"), + }, + }, + }, + }, + }, }, Required: []string{"repoURL"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourceDirectory", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourceHelm", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourceKustomize", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourcePlugin"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourceDirectory", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourceHelm", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourceKustomize", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSourcePlugin", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.CopyFromSpec"}, } } @@ -3127,6 +3142,43 @@ func schema_pkg_apis_application_v1alpha1_ConnectionState(ref common.ReferenceCa } } +func schema_pkg_apis_application_v1alpha1_CopyFromSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "CopyFromSpec defines a copy declaration from another source into this one", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "sourcePath": { + SchemaProps: spec.SchemaProps{ + Description: "SourcePath is the path from the Ref'd repository, the source of the copy operation. It's syntax is matching helmValue's, $ref/path", + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "destinationPath": { + SchemaProps: spec.SchemaProps{ + Description: "DestinationPath is the destination directory at the current repository where the object will be copied to.", + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "failOnOutOfBoundsSymlink": { + SchemaProps: spec.SchemaProps{ + Description: "FailOnOutOfBoundsSymlink mode makes the complete operation error out if a single symlink is out-of-bound within the subtree", + Type: []string{"boolean"}, + Format: "", + }, + }, + }, + Required: []string{"sourcePath", "destinationPath"}, + }, + }, + } +} + func schema_pkg_apis_application_v1alpha1_DuckTypeGenerator(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index fc2908c4643dc..f747f31e629bb 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -188,6 +188,8 @@ type ApplicationSource struct { Chart string `json:"chart,omitempty" protobuf:"bytes,12,opt,name=chart"` // Ref is reference to another source within sources field. This field will not be used if used with a `source` tag. Ref string `json:"ref,omitempty" protobuf:"bytes,13,opt,name=ref"` + // From is a list of filesystem objects that is to be copied into this source's tree. Only used within a `sources` tag. + From CopyFromSpecs `json:"from,omitempty" protobuf:"bytes,14,rep,name=from"` } // ApplicationSources contains list of required information about the sources of an application @@ -905,6 +907,23 @@ func (c *ApplicationSourcePlugin) RemoveEnvEntry(key string) error { return fmt.Errorf("unable to find env variable with key %q for plugin %q", key, c.Name) } +// CopyFromSpec defines a copy declaration from another source into this one +type CopyFromSpec struct { + // SourcePath is the path from the Ref'd repository, the source of the copy operation. + // It's syntax is matching helmValue's, $ref/path + SourcePath string `json:"sourcePath" protobuf:"bytes,1,name=sourcePath"` + // DestinationPath is the destination directory at the current repository where the object will be copied to. + DestinationPath string `json:"destinationPath" protobuf:"bytes,2,name=destinationPath"` + // FailOnOutOfBoundsSymlink mode makes the complete operation error out if a single symlink is out-of-bound within the subtree + FailOnOutOfBoundsSymlink bool `json:"failOnOutOfBoundsSymlink,omitempty" protobuf:"bytes,3,name=failOnOutOfBoundsSymlink"` +} + +type CopyFromSpecs []CopyFromSpec + +func (c CopyFromSpecs) String() string { + return fmt.Sprintf("%v", []CopyFromSpec(c)) +} + // ApplicationDestination holds information about the application's destination type ApplicationDestination struct { // Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set. diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index 8c851067a6be3..8f4ea19897931 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -977,6 +977,11 @@ func (in *ApplicationSource) DeepCopyInto(out *ApplicationSource) { *out = new(ApplicationSourcePlugin) (*in).DeepCopyInto(*out) } + if in.From != nil { + in, out := &in.From, &out.From + *out = make(CopyFromSpecs, len(*in)) + copy(*out, *in) + } return } @@ -1790,6 +1795,42 @@ func (in *ConnectionState) DeepCopy() *ConnectionState { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CopyFromSpec) DeepCopyInto(out *CopyFromSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CopyFromSpec. +func (in *CopyFromSpec) DeepCopy() *CopyFromSpec { + if in == nil { + return nil + } + out := new(CopyFromSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in CopyFromSpecs) DeepCopyInto(out *CopyFromSpecs) { + { + in := &in + *out = make(CopyFromSpecs, len(*in)) + copy(*out, *in) + return + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CopyFromSpecs. +func (in CopyFromSpecs) DeepCopy() CopyFromSpecs { + if in == nil { + return nil + } + out := new(CopyFromSpecs) + in.DeepCopyInto(out) + return *out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DuckTypeGenerator) DeepCopyInto(out *DuckTypeGenerator) { *out = *in diff --git a/pkg/client/clientset/versioned/clientset.go b/pkg/client/clientset/versioned/clientset.go index 869b10d0f82d6..5a48505428999 100644 --- a/pkg/client/clientset/versioned/clientset.go +++ b/pkg/client/clientset/versioned/clientset.go @@ -3,7 +3,7 @@ package versioned import ( - "fmt" + fmt "fmt" "net/http" argoprojv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned/typed/application/v1alpha1" diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go index 629fdbe60ded4..5631ab34b9a07 100644 --- a/reposerver/repository/repository.go +++ b/reposerver/repository/repository.go @@ -16,6 +16,8 @@ import ( "strings" "time" + secpath "github.com/cyphar/filepath-securejoin" + "github.com/golang/protobuf/ptypes/empty" kubeyaml "k8s.io/apimachinery/pkg/util/yaml" @@ -23,6 +25,7 @@ import ( "k8s.io/apimachinery/pkg/api/resource" "github.com/argoproj/argo-cd/v2/common" + argoutil "github.com/argoproj/argo-cd/v2/util/argo" "github.com/argoproj/argo-cd/v2/util/io/files" "github.com/argoproj/argo-cd/v2/util/manifeststream" @@ -709,6 +712,18 @@ func (s *Service) runManifestGenAsync(ctx context.Context, repoRoot, commitSHA, // Much of the multi-source handling logic is duplicated in resolveReferencedSources. If making changes here, // check whether they should be replicated in resolveReferencedSources. if q.HasMultipleSources { + + // At multiple sources we log the available sources + refKeys := make([]string, 0) + for refKey := range q.RefSources { + refKeys = append(refKeys, refKey) + } + log.WithFields(log.Fields{ + "AppName": q.AppName, + "NameSpace": q.Namespace, + "KubeVersion": q.KubeVersion, + }).Debugf("Processing a multi-source repo, available references: %s", strings.Join(refKeys, ", ")) + if q.ApplicationSource.Helm != nil { // Checkout every one of the referenced sources to the target revision before generating Manifests @@ -719,13 +734,10 @@ func (s *Service) runManifestGenAsync(ctx context.Context, repoRoot, commitSHA, refSourceMapping, ok := q.RefSources[refVar] if !ok { if len(q.RefSources) == 0 { - ch.errCh <- fmt.Errorf("source referenced %q, but no source has a 'ref' field defined", refVar) - } - refKeys := make([]string, 0) - for refKey := range q.RefSources { - refKeys = append(refKeys, refKey) + ch.errCh <- fmt.Errorf("source referenced %q, but no source has a 'ref' field defined, available sources: %s", refVar, strings.Join(refKeys, ", ")) + } else { + ch.errCh <- fmt.Errorf("source referenced %q, which is not one of the available sources, available sources: %s", refVar, strings.Join(refKeys, ", ")) } - ch.errCh <- fmt.Errorf("source referenced %q, which is not one of the available sources (%s)", refVar, strings.Join(refKeys, ", ")) return } if refSourceMapping.Chart != "" { @@ -792,6 +804,89 @@ func (s *Service) runManifestGenAsync(ctx context.Context, repoRoot, commitSHA, } } } + + // Before generating the manifests, copy any structure from references sources + // This is done for all types of sources, not just helm. + + // If the applicationsource has declared any subtrees to be copied + for _, copySpec := range q.ApplicationSource.From { + // First resolve the referenced source repo + // ref is of type RefTarget + + pathParts := strings.Split(copySpec.SourcePath, "/") + refVar := pathParts[0] + sourcePath := filepath.Join((pathParts[1:])...) + refSourceMapping, ok := q.RefSources[refVar] + if !ok { + if len(q.RefSources) == 0 { + ch.errCh <- fmt.Errorf("source in from referenced %q, but no source has a 'ref' field defined, available sources: %s", refVar, strings.Join(refKeys, ", ")) + } else { + ch.errCh <- fmt.Errorf("source in from referenced %q, which is not one of the available sources, available sources: %s", refVar, strings.Join(refKeys, ", ")) + } + return + } + + if refSourceMapping.Chart != "" { + ch.errCh <- fmt.Errorf("source has a 'chart' field defined, but Helm charts are not yet not supported for 'ref' sources") + return + } + + // The ref is available, now - checking the tree out + normalizedRepoURL := git.NormalizeGitURL(refSourceMapping.Repo.Repo) + + // Check whether the source ref in copyfrom is pointing at the current appsource + // Current AppSource's ref: q.Ref + if q.ApplicationSource.Ref == refVar { + ch.errCh <- fmt.Errorf("from cannot reference the ApplicationSource it's declared at: %s", q.ApplicationSource.Ref) + return + } + + gitClient, referencedCommitSHA, err := s.newClientResolveRevision(&refSourceMapping.Repo, refSourceMapping.TargetRevision) + if err != nil { + ch.errCh <- fmt.Errorf("failed to get git client for repo %s", refSourceMapping.Repo.Repo) + return + } + + if git.NormalizeGitURL(q.ApplicationSource.RepoURL) == normalizedRepoURL && commitSHA != referencedCommitSHA { + ch.errCh <- fmt.Errorf("cannot reference a different revision of the same repository (%s references %q which resolves to %q while the application references %q which resolves to %q)", refVar, refSourceMapping.TargetRevision, referencedCommitSHA, q.Revision, commitSHA) + return + } + closer, err := s.repoLock.Lock(gitClient.Root(), referencedCommitSHA, true, func() (goio.Closer, error) { + return s.checkoutRevision(gitClient, referencedCommitSHA, s.initConstants.SubmoduleEnabled) + }) + if err != nil { + log.Errorf("failed to acquire lock for referenced source %s", normalizedRepoURL) + ch.errCh <- err + return + } + defer func(closer goio.Closer) { + err := closer.Close() + if err != nil { + log.Errorf("Failed to release repo lock: %v", err) + } + }(closer) + + // Collect the copy's input data + srcRepoRoot := gitClient.Root() + dstRepoRoot := repoRoot + log.WithFields(log.Fields{ + "ref": refVar, + "srcpath": copySpec.SourcePath, + "dstpath": copySpec.DestinationPath, + "failOnOutOfBoundsSymlink": copySpec.FailOnOutOfBoundsSymlink, + "srcRepoRoot": srcRepoRoot, + "dstRepoRoot": dstRepoRoot, + }).Debug("Starting repo copy") + + // do the copy + err = copyFilesystemSubtree(srcRepoRoot, sourcePath, dstRepoRoot, copySpec.DestinationPath, copySpec.FailOnOutOfBoundsSymlink) + if err != nil { + log.Errorf("Copy failed: %v", err) + ch.errCh <- err + return + } + + } } manifestGenResult, err = GenerateManifests(ctx, opContext.appPath, repoRoot, commitSHA, q, false, s.gitCredsStore, s.initConstants.MaxCombinedDirectoryManifestsSize, s.gitRepoPaths, WithCMPTarDoneChannel(ch.tarDoneCh), WithCMPTarExcludedGlobs(s.initConstants.CMPTarExcludedGlobs)) @@ -1333,6 +1428,260 @@ func getRepoCredential(repoCredentials []*v1alpha1.RepoCreds, repoURL string) *v return nil } +func copyFilesystemSubtree(srcRoot string, srcPath string, dstRoot string, dstPath string, failOnOutOfBoundsSymlink bool) error { + logCtx := log.WithFields(log.Fields{ + "srcRoot": srcRoot, + "srcPath": srcPath, + "dstRoot": dstRoot, + "dstPath": dstPath, + "failOnOutOfBoundsSymlink": failOnOutOfBoundsSymlink, + }) + logCtx.Debugf("copyFilesystemSubtree called") + + // Absolute paths are disallowed: + if filepath.IsAbs(srcPath) { + logCtx.Errorf("copyFilesystemSubtree: srcPath is absolute") + return fmt.Errorf("Absolute paths for copy are not allowed: %s", srcPath) + } + if filepath.IsAbs(dstPath) { + logCtx.Errorf("copyFilesystemSubtree: dstPath is absolute") + return fmt.Errorf("Absolute paths for copy are not allowed: %s", dstPath) + } + + // srcPath and dstPath has to be checked to be within bound of srcRoot and dstRoot + + // First check whether the source file exists + // TODO: Once SecureJoin gets accepted to go stdlib, use that: https://github.com/golang/go/issues/20126 + srcFullPath, err := secpath.SecureJoin(srcRoot, srcPath) + if err != nil { + logCtx.Errorf("SecureJoin(%s, %s) failed: %v", srcRoot, srcPath, err) + return err + } + srcStat, err := os.Lstat(srcFullPath) + logCtx = logCtx.WithFields(log.Fields{ + "srcFullPath": srcFullPath, + "srcStat": srcStat, + }) + if err != nil { + logCtx.Debugf("copyFilesystemSubtree: lstat failed: %v", err) + return err + } + + // if the source is a symlink, we bail out, because it will certainly be out of bound + if srcStat.Mode()&fs.ModeSymlink > 0 { + logCtx.Debugf("copyFilesystemSubtree: lstat failed: %v", err) + return fmt.Errorf("Copy source is a symlink: %s", srcFullPath) + } + + // Check whether the source path is within the source root + if err := argopath.CheckPathOutOfBound(srcRoot, "", srcPath); err != nil { + logCtx.Debugf("copyFilesystemSubtree: argopath.CheckPathOutOfBound failed: %v", err) + return err + } + + // if we are in failOnOutOfBoundsSymlink mode, check for any out of bound symlinks + if failOnOutOfBoundsSymlink { + if err := argopath.CheckOutOfBoundsSymlinks(srcFullPath); err != nil { + logCtx.Debugf("copyFilesystemSubtree: srcFullPath contains OOB symlinks: %v", err) + return err + } + } + + // Checking whether the destination exists + dstFullPath, err := secpath.SecureJoin(dstRoot, dstPath) + if err != nil { + logCtx.Errorf("SecureJoin(%s, %s) failed: %v", dstRoot, dstPath, err) + return err + } + + dstStat, err := os.Lstat(dstFullPath) + dstExists := false + logCtx = logCtx.WithField("dstFullPath", dstFullPath) + + // check destination to be within bounds: + if err == nil { + dstExists = true + // if the target exists check it + if err := argopath.CheckPathOutOfBound(dstRoot, "", dstPath); err != nil { + logCtx.Debugf("copyFilesystemSubtree: argopath.CheckPathOutOfBound failed: %v", err) + return err + } + } else if errors.Is(err, os.ErrNotExist) { + // if the destination doesn't yet exist, check its parent + if err := argopath.CheckPathOutOfBound(dstRoot, "", filepath.Dir(dstPath)); err != nil { + logCtx.WithField("filepath.Dir(dstPath)", filepath.Dir(dstPath)).Debugf("copyFilesystemSubtree: argopath.CheckPathOutOfBound failed: %v", err) + return err + } + } else { + return fmt.Errorf("Error while checking destination path: %v", err) + } + + logCtx.WithFields(log.Fields{ + "dstStat": dstStat, + "dstExists": dstExists, + }).Debug("copyFilesystemSubtree: checks passed, starting copy logic") + + // if our source is just a single file + if srcStat.Mode().IsRegular() { + // in case the source is a regular file, we don't have to recurse + // If the dstpath already exists, we overwrite it. the reason for that + // is during a refresh the target repository is not necessarily cleanup up, + // meaning that the previous copy's result might still be there, thus needs + // overwriting. + + dstFile := dstFullPath + // if the destination exists, it has to be a directory + if dstExists { + // if it's already there, it has to be a directory + if !dstStat.Mode().IsDir() { + logCtx.Warnf("Copy destination exists, and it's going to be overwritten: %v", dstFullPath) + //return fmt.Errorf("Copy destination exists, and it's not a directory") + } + } else { + dstDir := filepath.Dir(dstFullPath) + // destination directory doesn't exist + if err := os.MkdirAll(dstDir, 0755); err != nil { + logCtx.Debugf("copyFilesystemSubtree: os.MkdirAll failed: %v", err) + return err + } + + // fetch the source file's name + fname := filepath.Base(dstFullPath) + if fname == "." || fname == string(os.PathSeparator) { + logCtx.Errorf("copyFilesystemSubtree: filepath.Base failed: %v", err) + return fmt.Errorf("Unable to extract source file's name") + } + + dstFile, err = secpath.SecureJoin(dstDir, fname) + if err != nil { + logCtx.Errorf("SecureJoin(%s, %s) failed: %v", dstDir, fname, err) + return err + } + } + // Now copy the file over + if err := argoutil.CopyFile(srcFullPath, dstFile, 0644); err != nil { + logCtx.Errorf("copyFilesystemSubtree: CopyFile failed: %v", err) + return err + } + } else if srcStat.Mode().IsDir() { + // now we are copying a directory + + // Make sure that the destination directory exists + if err := os.MkdirAll(dstFullPath, 0755); err != nil { + logCtx.Debugf("copyFilesystemSubtree: os.MkdirAll failed: %v", err) + return err + } + + // Copy the content of the source directory to the destination dir + err = filepath.WalkDir(srcFullPath, func(path string, d fs.DirEntry, err error) error { + return copyFilesystemSubtreeWalker(srcFullPath, dstFullPath, failOnOutOfBoundsSymlink, path, d, err) + }) + if err != nil { + return err + } + } else { + return fmt.Errorf("Copy src is neither a file or a directory") + } + return nil +} + +func copyFilesystemSubtreeWalker(srcFullPath string, dstFullPath string, failOnOutOfBoundsSymlink bool, path string, d fs.DirEntry, err error) error { + // we propagate encountered errors + if err != nil { + return err + } + logCtx := log.WithFields(log.Fields{ + "srcFullPath": srcFullPath, + "dstFullPath": dstFullPath, + "path": path, + }) + + logCtx.Debug("CopyFrom processing entry") + + // first get the relative path of the current entry to srcFullPath: + relpath, err := filepath.Rel(srcFullPath, path) + if err != nil { + logCtx.Errorf("CopyFrom cannot get relpath: %v", err) + return err + } + + targetPath, err := secpath.SecureJoin(dstFullPath, relpath) + if err != nil { + logCtx.Errorf("SecureJoin(%s, %s) failed: %v", dstFullPath, relpath, err) + return err + } + logCtx = logCtx.WithFields(log.Fields{ + "targetPath": targetPath, + "relpath": relpath, + }) + + // if it's a directory, then we have to create it + // files are to be copied + // symlinks checked + // rest ignored + if d.IsDir() { + if err := os.Mkdir(targetPath, 0755); err != nil && dstFullPath != targetPath { + logCtx.Errorf("CopyFrom mkdir failed: %v", err) + return err + } + logCtx.Debug("CopyFrom directory created") + return nil + } else if d.Type().IsRegular() { + // regular files are copied with CopyFile. + // Since it's a linear recursive walk on the fs, we can expect + // the parent directories to exist already + + if err = argoutil.CopyFile(path, targetPath, 0644); err != nil { + logCtx.Errorf("CopyFrom CopyFile failed: %v", err) + return err + } + logCtx.Debug("CopyFrom file copied") + return nil + } else if d.Type()&os.ModeSymlink > 0 { + // in failOnOutOfBoundsSymlink mode symlinks already have been checked + // in !failOnOutOfBoundsSymlink we check the individually, and if they are OOB, + // we ignore them + if !failOnOutOfBoundsSymlink { + // we need to stat it, becaus I've found no way to get to os/fs.FileInfo from + // os/fs.DirInfo + srcStat, err := os.Lstat(path) + if err != nil { + logCtx.Errorf("CopyFrom unable to stat file: %v", err) + return err + } + //srcLinkPath := filepath.Join(srcFullPath, relpath) + srcLinkPath, err := secpath.SecureJoin(srcFullPath, relpath) + if err != nil { + logCtx.Errorf("SecureJoin(%s, %s) failed: %v", srcFullPath, relpath, err) + return err + } + if err = argopath.CheckSymlinkOutOfBound(srcFullPath, srcLinkPath, srcStat); err != nil { + logCtx.Warnf("CopyFrom Out-Of-Bound symlink skipped: %v", err) + return nil + } + } + + linkTarget, err := os.Readlink(path) + if err != nil { + logCtx.Errorf("CopyFrom Readlink failed: %v", err) + return err + } + if err = os.Symlink(linkTarget, targetPath); err != nil { + logCtx.WithFields(log.Fields{ + "linkTarget": linkTarget, + }).Errorf("CopyFrom Symlink failed: %v", err) + return err + } + logCtx.WithFields(log.Fields{ + "linkTarget": linkTarget, + }).Debug("CopyFrom symlink created") + return nil + } else { + logCtx.Debug("CopyFrom ignored") + } + return nil +} + type GenerateManifestOpt func(*generateManifestOpt) type generateManifestOpt struct { cmpTarDoneCh chan<- bool diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go index 3f2f74c4e5ae0..956f6894569da 100644 --- a/reposerver/repository/repository_test.go +++ b/reposerver/repository/repository_test.go @@ -12,6 +12,7 @@ import ( "os/exec" "path" "path/filepath" + "reflect" "regexp" "sort" "strings" @@ -37,6 +38,7 @@ import ( repositorymocks "github.com/argoproj/argo-cd/v2/reposerver/cache/mocks" "github.com/argoproj/argo-cd/v2/reposerver/metrics" fileutil "github.com/argoproj/argo-cd/v2/test/fixture/path" + argopath "github.com/argoproj/argo-cd/v2/util/app/path" "github.com/argoproj/argo-cd/v2/util/argo" dbmocks "github.com/argoproj/argo-cd/v2/util/db/mocks" "github.com/argoproj/argo-cd/v2/util/git" @@ -3357,6 +3359,149 @@ func TestGetGitFiles(t *testing.T) { }) } +func Test_copyFilesystemSubtree(t *testing.T) { + testCases := []struct { + testName string + srcRoot string + srcPath string + dstPath string + failOnOutOfBoundsSymlink bool + shouldFail bool + ooblinks []string + }{ + {testName: "OK-failOnOutOfBoundsSymlink", + srcRoot: "testdata2/", + srcPath: "copyfrom-ok", + dstPath: "dst-dir", + failOnOutOfBoundsSymlink: true, + shouldFail: false, + }, + {testName: "OK-softfail", + srcRoot: "testdata2/", + srcPath: "copyfrom-ok", + dstPath: "dst-dir", + failOnOutOfBoundsSymlink: false, + shouldFail: false, + }, + {testName: "File", + srcRoot: "testdata2/", + srcPath: "copyfrom-file", + dstPath: "dst-file.txt", + failOnOutOfBoundsSymlink: false, + shouldFail: false, + }, + {testName: "OOB-failOnOutOfBoundsSymlink", + srcRoot: "testdata2/", + srcPath: "copyfrom-oob", + dstPath: "dst-dir", + failOnOutOfBoundsSymlink: true, + shouldFail: true, + }, + {testName: "OOB-softfail", + srcRoot: "testdata2/", + srcPath: "copyfrom-oob", + dstPath: "dst-dir", + failOnOutOfBoundsSymlink: false, + shouldFail: false, + }, + {testName: "OOB-directory", + srcRoot: "testdata2/", + srcPath: "copyfrom-ok", + dstPath: "dst-dir/b/../../../c", + failOnOutOfBoundsSymlink: false, + shouldFail: true, + }, + {testName: "OK-multilevel", + srcRoot: "testdata2/", + srcPath: "copyfrom-ok", + dstPath: "dst-dir/a/b/c", + failOnOutOfBoundsSymlink: false, + shouldFail: false, + }, + } + + // check the testdir first + cwd, err := os.Getwd() + if err != nil { + t.Fatalf("Unable to get cwd: %v", err) + } + + for _, testCase := range testCases { + tmpdir, err := os.MkdirTemp("testdata2", "copyfrom-test-") + if err != nil { + t.Fatalf("[%s] failed to create temporary directory: %v", testCase.testName, err) + } + defer os.RemoveAll(tmpdir) + tmpdirFull := filepath.Join(cwd, tmpdir) + + err = copyFilesystemSubtree(testCase.srcRoot, testCase.srcPath, + tmpdirFull, testCase.dstPath, testCase.failOnOutOfBoundsSymlink) + if err != nil { + if !testCase.shouldFail { + t.Fatalf("[%s] copyFileSystemSubtree failed: %v", testCase.testName, err) + } + continue + } + + // our test is good, now compare the resulting structures + srcStruct, err := getDirListing(filepath.Join(testCase.srcRoot, testCase.srcPath)) + if err != nil { + t.Fatalf("[%s] Cannot get getDirListing for src: %v", testCase.testName, err) + } + dstStruct, err := getDirListing(filepath.Join(tmpdirFull, testCase.dstPath)) + if err != nil { + t.Fatalf("[%s] Cannot get getDirListing for dst: %v", testCase.testName, err) + } + if !reflect.DeepEqual(srcStruct, dstStruct) { + t.Fatalf("[%s] Results are different: %v | %v", testCase.testName, srcStruct, dstStruct) + } + } +} + +func getDirListing(dir string) ([]string, error) { + var ret []string + + err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + + relpath, err := filepath.Rel(dir, path) + if err != nil { + return fmt.Errorf("Cannot get Rel(%s, %s): %v", dir, path, err) + } + if d.IsDir() { + ret = append(ret, fmt.Sprintf("dir:%s", relpath)) + } else if d.Type().IsRegular() { + ret = append(ret, fmt.Sprintf("file:%s", relpath)) + } else if d.Type()&os.ModeSymlink > 0 { + // first check whether it's oob + srcStat, err := os.Lstat(path) + if err != nil { + return fmt.Errorf("lstat %s: %v", path, err) + } + srcLinkPath := filepath.Join(dir, path) + if err = argopath.CheckSymlinkOutOfBound(dir, srcLinkPath, srcStat); err != nil { + return nil + } + // then add it to the result + tgt, err := os.Readlink(path) + if err != nil { + return fmt.Errorf("Unable to read symlink %s: %v", path, err) + } + ret = append(ret, fmt.Sprintf("link:%s:%s", relpath, tgt)) + } else { + return fmt.Errorf("DirType shouldn't be here: %s (%s)", d.Type(), path) + } + return nil + }) + if err != nil { + return nil, err + } + + return ret, nil +} + func Test_getRepoSanitizerRegex(t *testing.T) { r := getRepoSanitizerRegex("/tmp/_argocd-repo") msg := r.ReplaceAllString("error message containing /tmp/_argocd-repo/SENSITIVE and other stuff", "") diff --git a/reposerver/repository/testdata2/copyfrom-file b/reposerver/repository/testdata2/copyfrom-file new file mode 100644 index 0000000000000..ca4667d1ac06a Binary files /dev/null and b/reposerver/repository/testdata2/copyfrom-file differ diff --git a/reposerver/repository/testdata2/copyfrom-ok/foo/bar/barbaz b/reposerver/repository/testdata2/copyfrom-ok/foo/bar/barbaz new file mode 120000 index 0000000000000..43629a285f0c0 --- /dev/null +++ b/reposerver/repository/testdata2/copyfrom-ok/foo/bar/barbaz @@ -0,0 +1 @@ +../baz \ No newline at end of file diff --git a/reposerver/repository/testdata2/copyfrom-ok/foo/baz b/reposerver/repository/testdata2/copyfrom-ok/foo/baz new file mode 100644 index 0000000000000..84102df4576c9 --- /dev/null +++ b/reposerver/repository/testdata2/copyfrom-ok/foo/baz @@ -0,0 +1 @@ +The quick brown fox jumps over the lazy dog diff --git a/reposerver/repository/testdata2/copyfrom-ok/foobar/lorem.ipsum b/reposerver/repository/testdata2/copyfrom-ok/foobar/lorem.ipsum new file mode 100644 index 0000000000000..1dcec16894e78 --- /dev/null +++ b/reposerver/repository/testdata2/copyfrom-ok/foobar/lorem.ipsum @@ -0,0 +1,9 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Condimentum lacinia quis vel eros donec ac odio tempor. Porttitor lacus luctus accumsan tortor posuere ac ut consequat. Vestibulum rhoncus est pellentesque elit. Ultrices in iaculis nunc sed augue lacus viverra. Suscipit adipiscing bibendum est ultricies integer quis auctor. Sagittis nisl rhoncus mattis rhoncus urna neque viverra. Elementum tempus egestas sed sed risus pretium quam. Praesent tristique magna sit amet purus gravida. Cursus turpis massa tincidunt dui ut ornare lectus. + +Eget velit aliquet sagittis id consectetur purus ut faucibus. Tristique risus nec feugiat in fermentum posuere urna nec. Consequat interdum varius sit amet mattis vulputate enim nulla aliquet. Luctus venenatis lectus magna fringilla urna porttitor rhoncus. Quisque non tellus orci ac auctor augue mauris. Mattis enim ut tellus elementum sagittis vitae et leo duis. Elementum pulvinar etiam non quam lacus. Leo in vitae turpis massa sed elementum. Commodo odio aenean sed adipiscing diam donec adipiscing. Convallis posuere morbi leo urna molestie at. Vitae suscipit tellus mauris a diam maecenas sed enim ut. Elit sed vulputate mi sit. Facilisis mauris sit amet massa. Curabitur gravida arcu ac tortor dignissim convallis aenean et. At varius vel pharetra vel turpis. Arcu odio ut sem nulla pharetra diam sit. Nullam eget felis eget nunc lobortis mattis aliquam. Integer malesuada nunc vel risus commodo viverra maecenas accumsan lacus. + +Scelerisque viverra mauris in aliquam sem fringilla ut. Malesuada fames ac turpis egestas. Dignissim sodales ut eu sem integer vitae justo. Justo donec enim diam vulputate ut pharetra sit amet. Vestibulum morbi blandit cursus risus at ultrices mi. Sit amet luctus venenatis lectus magna fringilla urna porttitor rhoncus. Ut placerat orci nulla pellentesque dignissim enim sit amet. Viverra justo nec ultrices dui sapien eget mi proin sed. Ultricies mi eget mauris pharetra et. Malesuada proin libero nunc consequat. Arcu cursus euismod quis viverra nibh cras. Maecenas volutpat blandit aliquam etiam erat velit scelerisque in dictum. Enim neque volutpat ac tincidunt vitae. Egestas pretium aenean pharetra magna ac. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. At quis risus sed vulputate odio ut enim blandit. Amet commodo nulla facilisi nullam vehicula ipsum a arcu. Ultrices sagittis orci a scelerisque purus. Accumsan tortor posuere ac ut consequat semper viverra nam libero. + +Purus sit amet luctus venenatis. Morbi blandit cursus risus at ultrices. In ornare quam viverra orci sagittis eu volutpat odio. Ut aliquam purus sit amet luctus venenatis. Nunc mattis enim ut tellus elementum sagittis vitae et. Tempus imperdiet nulla malesuada pellentesque elit eget. Augue ut lectus arcu bibendum at varius. Rutrum quisque non tellus orci ac auctor augue mauris augue. Non tellus orci ac auctor augue mauris augue neque gravida. Eu volutpat odio facilisis mauris sit amet massa vitae tortor. Sed turpis tincidunt id aliquet risus feugiat in ante metus. Tellus rutrum tellus pellentesque eu tincidunt tortor aliquam. Adipiscing vitae proin sagittis nisl. Consequat interdum varius sit amet mattis vulputate. A lacus vestibulum sed arcu non. Id leo in vitae turpis massa. Faucibus purus in massa tempor nec feugiat nisl pretium fusce. Bibendum at varius vel pharetra vel turpis nunc. + +A diam maecenas sed enim ut sem. Elementum pulvinar etiam non quam lacus suspendisse faucibus interdum. Mauris vitae ultricies leo integer malesuada nunc vel risus. Odio facilisis mauris sit amet massa vitae tortor. Orci eu lobortis elementum nibh tellus. Lorem ipsum dolor sit amet consectetur adipiscing. Mauris pharetra et ultrices neque ornare aenean euismod. Semper auctor neque vitae tempus quam pellentesque nec. Rhoncus urna neque viverra justo nec ultrices dui. Urna id volutpat lacus laoreet non curabitur gravida arcu ac. Consequat semper viverra nam libero justo laoreet. In vitae turpis massa sed elementum tempus egestas sed sed. Netus et malesuada fames ac turpis egestas maecenas pharetra convallis. Nisi est sit amet facilisis magna. Vitae semper quis lectus nulla at volutpat diam ut. diff --git a/reposerver/repository/testdata2/copyfrom-oob/baz/boo b/reposerver/repository/testdata2/copyfrom-oob/baz/boo new file mode 120000 index 0000000000000..551944c561222 --- /dev/null +++ b/reposerver/repository/testdata2/copyfrom-oob/baz/boo @@ -0,0 +1 @@ +../../oob/nice \ No newline at end of file diff --git a/reposerver/repository/testdata2/copyfrom-oob/foo/prayer.txt b/reposerver/repository/testdata2/copyfrom-oob/foo/prayer.txt new file mode 100644 index 0000000000000..cb5b23882a3dc --- /dev/null +++ b/reposerver/repository/testdata2/copyfrom-oob/foo/prayer.txt @@ -0,0 +1,6 @@ +Our BOfH, who art in console, Hallowed be thy root. Thy kernel come. +Let thy kill -9 be done, On localhost as in NFS-server. Give us this +day our daily quota. And forgive us our malloc(), As we forgive those +who have flooded against us. And don't let us bruteforce /etc/shadow, +But deliver us to runlevel 5. For thine is the access to Vortex, + /dev/tty, and the inetd, for ever and ever. su. diff --git a/test/container/Dockerfile b/test/container/Dockerfile index 8258be1af72aa..ba0a26fb4768d 100644 --- a/test/container/Dockerfile +++ b/test/container/Dockerfile @@ -49,7 +49,7 @@ ENV GOPATH /go COPY hack/install.sh hack/tool-versions.sh go.* ./ COPY hack/installers installers -RUN ./install.sh helm-linux && \ +RUN ./install.sh helm && \ ./install.sh kustomize && \ ./install.sh codegen-tools && \ ./install.sh codegen-go-tools && \ diff --git a/test/e2e/app_multiple_sources_copyfrom_test.go b/test/e2e/app_multiple_sources_copyfrom_test.go new file mode 100644 index 0000000000000..93f3ad2284c9c --- /dev/null +++ b/test/e2e/app_multiple_sources_copyfrom_test.go @@ -0,0 +1,114 @@ +package e2e + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + . "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + . "github.com/argoproj/argo-cd/v2/test/e2e/fixture" + . "github.com/argoproj/argo-cd/v2/test/e2e/fixture/app" + . "github.com/argoproj/argo-cd/v2/util/argo" +) + +func TestMultiSourceFromAppDir(t *testing.T) { + sources := []ApplicationSource{{ + RepoURL: RepoURL(RepoURLTypeFile), + Path: "guestbook-envspec", + From: []CopyFromSpec{{ + SourcePath: "$envvalues/copyfrom-envfiles/dev", + DestinationPath: "guestbook-envspec/env", + FailOnOutOfBoundsSymlink: false, + }, + }, + }, { + RepoURL: RepoURL(RepoURLTypeFile), + Ref: "envvalues", + }} + ctx := Given(t) + ctx. + Sources(sources). + When(). + CreateMultiSourceAppFromFile(). + Then(). + And(func(app *Application) { + assert.Equal(t, Name(), app.Name) + for i, source := range app.Spec.GetSources() { + assert.Equal(t, sources[i].RepoURL, source.RepoURL) + } + assert.Equal(t, DeploymentNamespace(), app.Spec.Destination.Namespace) + assert.Equal(t, KubernetesInternalAPIServerAddr, app.Spec.Destination.Server) + }). + Expect(Event(EventReasonResourceCreated, "create")). + And(func(_ *Application) { + // app should be listed + output, err := RunCli("app", "list") + assert.NoError(t, err) + assert.Contains(t, output, Name()) + }). + Expect(Success("")). + Given().Timeout(60). + When().Wait().Then(). + Expect(Success("")). + And(func(app *Application) { + statusByName := map[string]SyncStatusCode{} + for _, r := range app.Status.Resources { + statusByName[r.Name] = r.Status + } + // check if the app has 3 resources, guestbook and 2 pods + assert.Len(t, statusByName, 2) + assert.Equal(t, SyncStatusCodeSynced, statusByName["copyfrom-envspec-cm"]) + assert.Equal(t, SyncStatusCodeSynced, statusByName["guestbook-ui"]) + }) +} + +func TestMultiSourceFromAppFile(t *testing.T) { + sources := []ApplicationSource{{ + RepoURL: RepoURL(RepoURLTypeFile), + Path: "guestbook-envspec", + From: []CopyFromSpec{{ + SourcePath: "$envvalues/copyfrom-envfiles/dev/cm.yaml", + DestinationPath: "guestbook-envspec/env/cm.yaml", + FailOnOutOfBoundsSymlink: false, + }, + }, + }, { + RepoURL: RepoURL(RepoURLTypeFile), + Ref: "envvalues", + }} + ctx := Given(t) + ctx. + Sources(sources). + When(). + CreateMultiSourceAppFromFile(). + Then(). + And(func(app *Application) { + assert.Equal(t, Name(), app.Name) + for i, source := range app.Spec.GetSources() { + assert.Equal(t, sources[i].RepoURL, source.RepoURL) + } + assert.Equal(t, DeploymentNamespace(), app.Spec.Destination.Namespace) + assert.Equal(t, KubernetesInternalAPIServerAddr, app.Spec.Destination.Server) + }). + Expect(Event(EventReasonResourceCreated, "create")). + And(func(_ *Application) { + // app should be listed + output, err := RunCli("app", "list") + assert.NoError(t, err) + assert.Contains(t, output, Name()) + }). + Expect(Success("")). + Given().Timeout(60). + When().Wait().Then(). + Expect(Success("")). + And(func(app *Application) { + statusByName := map[string]SyncStatusCode{} + for _, r := range app.Status.Resources { + statusByName[r.Name] = r.Status + } + // check if the app has 3 resources, guestbook and 2 pods + assert.Len(t, statusByName, 2) + assert.Equal(t, SyncStatusCodeSynced, statusByName["copyfrom-envspec-cm"]) + assert.Equal(t, SyncStatusCodeSynced, statusByName["guestbook-ui"]) + }) +} diff --git a/test/e2e/testdata/copyfrom-envfiles/dev/cm.yaml b/test/e2e/testdata/copyfrom-envfiles/dev/cm.yaml new file mode 100644 index 0000000000000..387bdae6759c8 --- /dev/null +++ b/test/e2e/testdata/copyfrom-envfiles/dev/cm.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: copyfrom-envspec-cm + labels: + app.kubernetes.io/name: copyfrom-envspec-cm +data: + foo: "bar" diff --git a/test/e2e/testdata/guestbook-envspec/guestbook-ui-deployment.yaml b/test/e2e/testdata/guestbook-envspec/guestbook-ui-deployment.yaml new file mode 100644 index 0000000000000..bf3375672f70c --- /dev/null +++ b/test/e2e/testdata/guestbook-envspec/guestbook-ui-deployment.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: guestbook-ui + labels: + test: "true" +spec: + replicas: 0 + revisionHistoryLimit: 3 + selector: + matchLabels: + app: guestbook-ui + template: + metadata: + labels: + app: guestbook-ui + spec: + containers: + - image: quay.io/argoprojlabs/argocd-e2e-container:0.2 + imagePullPolicy: IfNotPresent + name: guestbook-ui + ports: + - containerPort: 80 diff --git a/test/e2e/testdata/guestbook-envspec/guestbook-ui-svc.yaml b/test/e2e/testdata/guestbook-envspec/guestbook-ui-svc.yaml new file mode 100644 index 0000000000000..e8a4a27fbae40 --- /dev/null +++ b/test/e2e/testdata/guestbook-envspec/guestbook-ui-svc.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: guestbook-ui +spec: + ports: + - port: 80 + targetPort: 80 + selector: + app: guestbook-ui diff --git a/test/e2e/testdata/guestbook-envspec/kustomization.yaml b/test/e2e/testdata/guestbook-envspec/kustomization.yaml new file mode 100644 index 0000000000000..8b92e94898449 --- /dev/null +++ b/test/e2e/testdata/guestbook-envspec/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ./guestbook-ui-deployment.yaml + - ./guestbook-ui-svc.yaml + - ./env/cm.yaml diff --git a/util/app/path/path.go b/util/app/path/path.go index 0ff0b80f0d29d..b26acd764b440 100644 --- a/util/app/path/path.go +++ b/util/app/path/path.go @@ -6,6 +6,8 @@ import ( "path/filepath" "strings" + log "github.com/sirupsen/logrus" + "github.com/argoproj/argo-cd/v2/util/io/files" ) @@ -51,40 +53,70 @@ func CheckOutOfBoundsSymlinks(basePath string) error { if err != nil { return fmt.Errorf("failed to walk for symlinks in %s: %v", absBasePath, err) } - if files.IsSymlink(info) { - // We don't use filepath.EvalSymlinks because it fails without returning a path - // if the target doesn't exist. - linkTarget, err := os.Readlink(path) - if err != nil { - return fmt.Errorf("failed to read link %s: %v", path, err) - } - // get the path of the symlink relative to basePath, used for error description - linkRelPath, err := filepath.Rel(absBasePath, path) - if err != nil { - return fmt.Errorf("failed to get relative path for symlink: %v", err) - } - // deny all absolute symlinks - if filepath.IsAbs(linkTarget) { - return &OutOfBoundsSymlinkError{File: linkRelPath} - } - // get the parent directory of the symlink - currentDir := filepath.Dir(path) + return CheckSymlinkOutOfBound(absBasePath, path, info) + }) +} - // walk each part of the symlink target to make sure it never leaves basePath - parts := strings.Split(linkTarget, string(os.PathSeparator)) - for _, part := range parts { - newDir := filepath.Join(currentDir, part) - rel, err := filepath.Rel(absBasePath, newDir) - if err != nil { - return fmt.Errorf("failed to get relative path for symlink target: %v", err) - } - if rel == ".." || strings.HasPrefix(rel, ".."+string(os.PathSeparator)) { - // return an error so we don't keep traversing the tree - return &OutOfBoundsSymlinkError{File: linkRelPath} - } - currentDir = newDir - } +func CheckSymlinkOutOfBound(absBasePath string, path string, info os.FileInfo) error { + if files.IsSymlink(info) { + // We don't use filepath.EvalSymlinks because it fails without returning a path + // if the target doesn't exist. + linkTarget, err := os.Readlink(path) + if err != nil { + return fmt.Errorf("failed to read link %s: %v", path, err) } - return nil - }) + // get the path of the symlink relative to basePath, used for error description + linkRelPath, err := filepath.Rel(absBasePath, path) + if err != nil { + return fmt.Errorf("failed to get relative path for symlink: %v", err) + } + // deny all absolute symlinks + if filepath.IsAbs(linkTarget) { + return &OutOfBoundsSymlinkError{File: linkRelPath} + } + + return CheckPathOutOfBound(absBasePath, path, linkTarget) + } + return nil +} + +func CheckPathOutOfBound(basePath string, path string, target string) error { + log.WithFields(log.Fields{ + "basePath": basePath, + "path": path, + "target": target, + }).Debugf("CheckPathOutOfBound called") + // get the parent directory of the symlink + // if path is empty, we're not checking a symlink, we don't need the parent dir + currentDir := filepath.Dir(path) + if path == "" { + currentDir = basePath + } + + // walk each part of the symlink target to make sure it never leaves basePath + parts := strings.Split(target, string(os.PathSeparator)) + for _, part := range parts { + newDir := filepath.Join(currentDir, part) + rel, err := filepath.Rel(basePath, newDir) + if err != nil { + log.WithFields(log.Fields{ + "basePath": basePath, + "currentDir": currentDir, + "part": part, + "newDir": newDir, + }).Errorf("CheckPathOutOfBound: failed to get relative path for symlink target: %v", err) + return fmt.Errorf("failed to get relative path for symlink target: %v", err) + } + if rel == ".." || strings.HasPrefix(rel, ".."+string(os.PathSeparator)) { + // return an error so we don't keep traversing the tree + relPath, _ := filepath.Rel(basePath, path) + log.WithFields(log.Fields{ + "rel": rel, + "relPath": relPath, + }).Errorf("CheckPathOutOfBound: out of bound file found") + return &OutOfBoundsSymlinkError{File: relPath} + } + currentDir = newDir + } + return nil } diff --git a/util/argo/argo.go b/util/argo/argo.go index 36e513cf0f534..97fc3662880f5 100644 --- a/util/argo/argo.go +++ b/util/argo/argo.go @@ -4,6 +4,8 @@ import ( "context" "encoding/json" "fmt" + goio "io" + "os" "regexp" "sort" "strings" @@ -1105,3 +1107,31 @@ func IsValidContainerName(name string) bool { validationErrors := apimachineryvalidation.NameIsDNSLabel(name, false) return len(validationErrors) == 0 } + +// CopyFile has os.filemode, because despite currently (PR12508) we only need to +// copy files from appsrc repo to repo, being restricted to non-exec files, +// later it could be used to replace copying the cmp server with /bin/cp, +// therefore removing the dependency on one of the cli tools (going distroless) +func CopyFile(srcFile string, dstFile string, perm os.FileMode) error { + log.WithFields(log.Fields{ + "srcFile": srcFile, + "dstFile": dstFile, + "perm": perm, + }).Debugf("CopyFile called") + src, err := os.OpenFile(srcFile, os.O_RDONLY, 0644) + if err != nil { + return err + } + defer src.Close() + + // we're adding O_TRUNC, because if the file already exists, it needs + // to be truncated + dst, err := os.OpenFile(dstFile, os.O_WRONLY|os.O_CREATE|os.O_EXCL|os.O_TRUNC, perm) + if err != nil { + return err + } + defer dst.Close() + + _, err = goio.Copy(dst, src) + return err +} diff --git a/util/argo/argo_test.go b/util/argo/argo_test.go index 780a2c0403267..48d6005e88cf2 100644 --- a/util/argo/argo_test.go +++ b/util/argo/argo_test.go @@ -4,6 +4,8 @@ import ( "context" "errors" "fmt" + "hash/fnv" + "os" "path/filepath" "testing" @@ -1437,6 +1439,51 @@ func TestValidatePermissionsMultipleSources(t *testing.T) { }) } +func TestCopyFile(t *testing.T) { + + // check the testdir first + cwd, err := os.Getwd() + if err != nil { + t.Fatalf("Unable to get cwd: %v", err) + } + + testdir := filepath.Join(cwd, "testdata") + _, err = os.Lstat(testdir) + if err != nil { + t.Fatalf("Unable to stat testdir: %v", err) + } + + srcFile := filepath.Join(testdir, "copyfile.src") + // calculate the src file's checksum + srcdata, err := os.ReadFile(srcFile) + if err != nil { + t.Fatalf("Unable to read testfile: %v", err) + } + srch := fnv.New32a() + _, _ = srch.Write(srcdata) + srchash := srch.Sum32() + + // copy it over + dstFile := fmt.Sprintf("%s-dstcheck", srcFile) + err = CopyFile(srcFile, dstFile, 0644) + defer os.Remove(dstFile) + if err != nil { + t.Fatalf("CopyFile failed: %v", err) + } + + // calculate the dst checksum + // calculate the src file's checksum + dstdata, err := os.ReadFile(dstFile) + if err != nil { + t.Fatalf("Unable to read testfile dest: %v", err) + } + dsth := fnv.New32a() + _, _ = dsth.Write(dstdata) + dsthash := dsth.Sum32() + + assert.Equal(t, srchash, dsthash) +} + func TestAugmentSyncMsg(t *testing.T) { mockAPIResourcesFn := func() ([]kube.APIResourceInfo, error) { return []kube.APIResourceInfo{ diff --git a/util/argo/testdata/copyfile.src b/util/argo/testdata/copyfile.src new file mode 100644 index 0000000000000..2553fb7956a1f Binary files /dev/null and b/util/argo/testdata/copyfile.src differ