<ServerManagerConfiguration>
  <ProxyGroup name="sources">
    <SourceProxy class="vtkIOSSReader" label="IOSS Reader" name="IOSSReader" number_of_output_ports="1">
      <Documentation short_help="Reader for IOSS-supported data">
        Reader for IOSS supported data. This is a distributed reader.
      </Documentation>
      <StringVectorProperty clean_command="ClearFileNames"
                            command="SetFileNames"
                            name="FileName"
                            number_of_elements="1"
                            panel_visibility="never"
                            repeat_command="1">
        <FileListDomain name="files" />
        <Documentation>This property specifies the file name for the IOSS reader.</Documentation>
      </StringVectorProperty>

      <DoubleVectorProperty information_only="1" name="TimestepValues" repeatable="1">
        <TimeStepsInformationHelper />
      </DoubleVectorProperty>

      <IntVectorProperty name="AssemblyTag"
        command="GetAssemblyTag"
        information_only="1">
        <Documentation>
          This is simply an int that changes whenever a new assembly is built
          by the reader. This can be used to determine if the assembly should be fetched from
          the reader whenever the reader is updated.
        </Documentation>
      </IntVectorProperty>

      <StringVectorProperty name="AssemblySelectors"
        command="AddSelector"
        clean_command="ClearSelectors"
        repeat_command="1"
        number_of_elements_per_command="1"
        panel_widget="data_assembly_editor" >
        <DataAssemblyDomain name="data_assembly">
          <RequiredProperties>
            <Property function="Tag" name="AssemblyTag" />
          </RequiredProperties>
        </DataAssemblyDomain>
        <Documentation>
          Specify the selectors for the data assembly chosen using **Assembly**
          to choose the blocks to extract from the input dataset.
        </Documentation>
        <Hints>
          <!-- AssemblyTag == 0 implies there's no assembly in the file,
          in which case, we want to hide this widget entirely -->
          <PropertyWidgetDecorator type="GenericDecorator"
            mode="visibility"
            property="AssemblyTag"
            value="0"
            inverse="1" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="EdgeBlockInfo"
        command="GetEdgeBlockSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="EdgeBlocks"
        command="SetEdgeBlockSelection"
        information_property="EdgeBlockInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="EdgeBlockInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the edge blocks to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="edge" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="FaceBlockInfo"
        command="GetFaceBlockSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="FaceBlocks"
        command="SetFaceBlockSelection"
        information_property="FaceBlockInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="FaceBlockInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Hints>
          <ArraySelectionWidget icon_type="face" />
        </Hints>
        <Documentation>Select the face blocks to read.</Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="ElementBlockInfo"
        command="GetElementBlockSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="ElementBlocks"
        command="SetElementBlockSelection"
        information_property="ElementBlockInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="ElementBlockInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Hints>
          <ArraySelectionWidget icon_type="cell" />
        </Hints>

        <Documentation>Select the element blocks to read.</Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="StructuredBlockInfo"
        command="GetStructuredBlockSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="StructuredBlocks"
        command="SetStructuredBlockSelection"
        information_property="StructuredBlockInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="StructuredBlockInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Hints>
          <ArraySelectionWidget icon_type="cell" />
        </Hints>
        <Documentation>Select the structured blocks to read.</Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="NodeBlockFieldInfo"
        command="GetNodeBlockFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="NodeBlockFields"
        command="SetNodeBlockFieldSelection"
        information_property="NodeBlockFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="NodeBlockFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the edge blocks fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="point" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="EdgeBlockFieldInfo"
        command="GetEdgeBlockFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="EdgeBlockFields"
        command="SetEdgeBlockFieldSelection"
        information_property="EdgeBlockFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="EdgeBlockFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the edge blocks fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="edge" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="FaceBlockFieldInfo"
        command="GetFaceBlockFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="FaceBlockFields"
        command="SetFaceBlockFieldSelection"
        information_property="FaceBlockFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="FaceBlockFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Hints>
          <ArraySelectionWidget icon_type="face" />
        </Hints>
        <Documentation>Select the face blocks fields / arrays to read.</Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="ElementBlockFieldInfo"
        command="GetElementBlockFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="ElementBlockFields"
        command="SetElementBlockFieldSelection"
        information_property="ElementBlockFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="ElementBlockFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Hints>
          <ArraySelectionWidget icon_type="cell" />
        </Hints>
        <Documentation>Select the element blocks fields / arrays to read.</Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="StructuredBlockFieldInfo"
        command="GetStructuredBlockFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="StructuredBlockFields"
        command="SetStructuredBlockFieldSelection"
        information_property="StructuredBlockFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="StructuredBlockFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Hints>
          <ArraySelectionWidget icon_type="cell" />
        </Hints>
        <Documentation>Select the structured blocks fields / arrays to read.</Documentation>
      </StringVectorProperty>

      <StringVectorProperty name="NodeSetInfo"
        command="GetNodeSetSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="NodeSets"
        command="SetNodeSetSelection"
        information_property="NodeSetInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="NodeSetInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the node sets to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="node-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="EdgeSetInfo"
        command="GetEdgeSetSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="EdgeSets"
        command="SetEdgeSetSelection"
        information_property="EdgeSetInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="EdgeSetInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the edge sets to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="edge-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="FaceSetInfo"
        command="GetFaceSetSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="FaceSets"
        command="SetFaceSetSelection"
        information_property="FaceSetInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="FaceSetInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the face sets to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="face-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="ElementSetInfo"
        command="GetElementSetSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="ElementSets"
        command="SetElementSetSelection"
        information_property="ElementSetInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="ElementSetInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the element sets to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="cell-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="SideSetInfo"
        command="GetSideSetSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="SideSets"
        command="SetSideSetSelection"
        information_property="SideSetInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="SideSetInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the side sets to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="side-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="NodeSetFieldInfo"
        command="GetNodeSetFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="NodeSetFields"
        command="SetNodeSetFieldSelection"
        information_property="NodeSetFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="NodeSetFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the node sets fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="node-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="EdgeSetFieldInfo"
        command="GetEdgeSetFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="EdgeSetFields"
        command="SetEdgeSetFieldSelection"
        information_property="EdgeSetFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="EdgeSetFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the edge sets fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="edge-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="FaceSetFieldInfo"
        command="GetFaceSetFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="FaceSetFields"
        command="SetFaceSetFieldSelection"
        information_property="FaceSetFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1" >
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="FaceSetFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the face sets fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="face-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="ElementSetFieldInfo"
        command="GetElementSetFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="ElementSetFields"
        command="SetElementSetFieldSelection"
        information_property="ElementSetFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="ElementSetFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the element sets fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="cell-set" />
        </Hints>
      </StringVectorProperty>

      <StringVectorProperty name="SideSetFieldInfo"
        command="GetSideSetFieldSelection"
        number_of_elements_per_command="2"
        information_only="1" />

      <StringVectorProperty name="SideSetFields"
        command="SetSideSetFieldSelection"
        information_property="SideSetFieldInfo"
        number_of_elements_per_command="2"
        element_types="2 0"
        repeat_command="1">
        <ArraySelectionDomain name="array_list">
          <RequiredProperties>
            <Property function="ArrayList" name="SideSetFieldInfo" />
          </RequiredProperties>
        </ArraySelectionDomain>
        <Documentation>Select the side sets fields / arrays to read.</Documentation>
        <Hints>
          <ArraySelectionWidget icon_type="side-set" />
        </Hints>
      </StringVectorProperty>


      <IntVectorProperty name="ScanForRelatedFiles"
        command="SetScanForRelatedFiles"
        number_of_elements="1"
        default_values="1"
        panel_visibility="advanced">
        <BooleanDomain name="bool" />
        <Documentation>
          This reader can lookup additional related files using pattern matching
          based on the files provided. This is useful to lookup restarted results,
          for example. To avoid this behavior, uncheck this property.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="FileRange"
        command="SetFileRange"
        number_of_elements="2"
        default_values="0 -1"
        panel_visibility="advanced">
        <Documentation>
          To limit reading a subset of files in spatial file-series,
          specify a valid range. You may also use **FileStride** to step over
          files in this range.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="FileStride"
        command="SetFileStride"
        number_of_elements="1"
        default_values="1"
        panel_visibility="advanced">
        <IntRangeDomain name="range" min="1" max="100" />
        <Documentation>
          Specify the stride to use when reading a subset of files
          as dictated by the **FileRange**.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty command="SetApplyDisplacements"
                         default_values="1"
                         name="ApplyDisplacements"
                         number_of_elements="1">
        <BooleanDomain name="bool" />
        <Documentation>Geometric locations can include displacements. When this
          option is on, the nodal positions are 'displaced' by the standard
          exodus displacement vector. If displacements are turned 'off', the user
          can explicitly add them by applying a warp filter.
        </Documentation>
      </IntVectorProperty>


      <IntVectorProperty name="RemoveUnusedPoints"
        command="SetRemoveUnusedPoints"
        number_of_elements="1"
        default_values="1"
        panel_visibility="advanced">
        <BooleanDomain name="bool" />
        <Documentation>
          Node related data, including point coordinates, point field data etc. is
          typically shared between all blocks and sets. By default, the reader will
          remove unused points for each block or set. To avoid this, set this flag to
          false.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="GenerateFileId"
        command="SetGenerateFileId"
        number_of_elements="1"
        default_values="0">
        <BooleanDomain name="bool" />
        <Documentation>
          When checked, the reader will add a cell array called 'file_id'
          indicate which partitioned file the cell came from.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="ReadIds"
        command="SetReadIds"
        number_of_elements="1"
        default_values="1"
        panel_visibility="advanced">
        <BooleanDomain name="bool" />
        <Documentation>
          When checked, the reader will read 'ids' and 'element_side'
          fields, if available.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="ReadGlobalFields"
        command="SetReadGlobalFields"
        number_of_elements="1"
        default_values="1"
        panel_visibility="advanced">
        <BooleanDomain name="bool" />
        <Documentation>
          When checked, the reader will read quality assurance and
          information records, if available.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="ReadQAAndInformationRecords"
        label="Read QA And Information Records"
        command="SetReadQAAndInformationRecords"
        number_of_elements="1"
        default_values="1"
        panel_visibility="advanced">
        <BooleanDomain name="bool" />
        <Documentation>
          When checked, the reader will read global fields, if available.
        </Documentation>
      </IntVectorProperty>

      <PropertyGroup label="Blocks"
        name="Blocks"
        panel_widget="ArrayStatus">
        <Property name="ElementBlocks" />
        <Property name="StructuredBlocks" />
        <Property name="EdgeBlocks" />
        <Property name="FaceBlocks" />
      </PropertyGroup>

      <PropertyGroup label="Block Arrays"
        name="BlockArrays"
        panel_widget="ArrayStatus">
        <Property name="NodeBlockFields" />
        <Property name="ElementBlockFields" />
        <Property name="StructuredBlockFields" />
        <Property name="EdgeBlockFields" />
        <Property name="FaceBlockFields" />
      </PropertyGroup>

      <PropertyGroup label="Sets"
        name="Sets"
        panel_widget="ArrayStatus">
        <Property name="NodeSets" />
        <Property name="EdgeSets" />
        <Property name="FaceSets" />
        <Property name="ElementSets" />
        <Property name="SideSets" />
      </PropertyGroup>

      <PropertyGroup label="Set Arrays"
        name="SetArrays"
        panel_widget="ArrayStatus">
        <Property name="NodeSetFields" />
        <Property name="EdgeSetFields" />
        <Property name="FaceSetFields" />
        <Property name="ElementSetFields" />
        <Property name="SideSetFields" />
      </PropertyGroup>

      <PropertyGroup label="Files">
        <Property name="ScanForRelatedFiles" />
        <Property name="FileRange" />
        <Property name="FileStride" />
      </PropertyGroup>

      <PropertyGroup label="Miscellaneous">
        <Property name="ApplyDisplacements" />
        <Property name="RemoveUnusedPoints" />
        <Property name="GenerateFileId" />
        <Property name="ReadIds" />
        <Property name="ReadGlobalFields" />
        <Property name="ReadQAAndInformationRecords" />
      </PropertyGroup>

      <Hints>
        <ReaderFactory extensions="g e h gc ex2 ex2v2 exo gen par exoII exii ex-timeseries cgns"
                       file_description="IOSS Files"
                       filename_patterns="*.e-s*" />
      </Hints>
    </SourceProxy>
  </ProxyGroup>
</ServerManagerConfiguration>
