<ServerManagerConfiguration>
  <ProxyGroup name="filters">
    <!-- ==================================================================== -->
    <SourceProxy class="vtkExtractSubsetWithSeed"
      name="ExtractSubsetWithSeed"
      label="Extract Subset With Seed"
      number_of_output_ports="1">
      <Documentation
        long_help="Extract a subset from a structured-grid starting with a seed point.">
        Extract a subset (line or plane) from a structured-grid starting with a seed point.
        The filter supports cases where the structured grid is split up into multiple blocks
        (across multiple ranks). It also handles cases were the ijk origin for each the
        blocks is not aligned.
      </Documentation>
      <InputProperty name="Input"
                     command="SetInputConnection">
        <ProxyGroupDomain name="groups">
          <Group name="sources"/>
          <Group name="filters"/>
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkStructuredGrid"/>
        </DataTypeDomain>
      </InputProperty>
      <DoubleVectorProperty name="Seed"
        command="SetSeed"
        number_of_elements="3"
        default_values="0 0 0">
        <Documentation>
          Specify the seed point in x-y-z coordinates to initiate in the slice extraction.
        </Documentation>
        <BoundsDomain default_mode="mid" mode="normal" name="range">
          <RequiredProperties>
            <Property function="Input" name="Input" />
          </RequiredProperties>
        </BoundsDomain>
      </DoubleVectorProperty>
      <IntVectorProperty command="SetDirection"
                         default_values="0"
                         name="Direction"
                         number_of_elements="1"
                         panel_visibility="default">
        <EnumerationDomain name="enum">
          <Entry value="0" text="I" info="line" />
          <Entry value="1" text="J" info="line" />
          <Entry value="2" text="K" info="line" />
          <Entry value="3" text="IJ" info="plane" />
          <Entry value="4" text="JK" info="plane" />
          <Entry value="5" text="KI" info="plane" />
        </EnumerationDomain>
        <Documentation>
          Specify the direction in which to extract the slice starting with the **Seed**.
        </Documentation>
      </IntVectorProperty>
      <PropertyGroup label="Seed Parameters" panel_widget="InteractiveHandle">
        <Property function="WorldPosition" name="Seed" />
        <Property function="Input" name="Input" />
      </PropertyGroup>
      <Hints>
        <Visibility replace_input="2" />
      </Hints>
      <!-- End ExtractSubsetWithSeed -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkGenerateGlobalIds"
                 label="Generate Global Ids"
                 name="GenerateGlobalIds"
                 number_of_output_ports="1">
      <Documentation short_help="Generate global point and cell ids.">
        Generate global point and cell ids. Global ids are unique ids where the same point
        (or cell) will be assigned the same id even if the point (or cell) is duplicated among
        multiple blocks or ranks. This filter also flags duplicated points as ghost points.
      </Documentation>
      <InputProperty command="SetInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources" />
          <Group name="filters" />
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet" />
        </DataTypeDomain>
        <Documentation>This property specifies the input.</Documentation>
      </InputProperty>

      <DoubleVectorProperty name="Tolerance"
        command="SetTolerance"
        number_of_elements="1"
        default_values="0">
        <Documentation>
          Set the tolerance to use to identify coincident points. 0 means the
          points should be exactly identical.
        </Documentation>
        <DoubleRangeDomain name="range" min="0" />
      </DoubleVectorProperty>
      <!-- End GenerateGlobalIds -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkGhostCellsGenerator"
                 label="Ghost Cells Generator"
                 name="GhostCellsGenerator"
                 number_of_output_ports="1">
      <Documentation short_help="Generate ghosts.">
        Generate ghost cells and ghost points in a composite data set. Ghosts are exchanged
        between blocks / partitions of same type. Currently, vtkImageData, vtkRectilinearGrid,
        vtkStructuredGrid, vtkPolyData and vtkUnstructuredGrid are supported. Those input types can
        be dispatched in vtkPartitionedDataSet or vtkPartitionedDataSetCollection. Inside a,
        collection, 2 partitioned data sets do not exchange ghosts, but partitions inside a
        partitioned data set do.
      </Documentation>
      <InputProperty command="SetInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources" />
          <Group name="filters" />
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkCompositeDataSet" />
          <DataType value="vtkDataSet" />
        </DataTypeDomain>
        <Documentation>This property specifies the input.</Documentation>
      </InputProperty>
      <IntVectorProperty command="SetNumberOfGhostLayers"
                         default_values="1"
                         name="MinimumNumberOfGhosts"
                         number_of_elements="1"
                         panel_visibility="default">
        <Documentation>
          When **BuildIfRequired** if off, use this to specify the minimum number of
          ghost cells to request. The filter may request more ghost levels than indicated if a
          downstream filter asked for more ghost levels.
        </Documentation>
        <IntRangeDomain name="range" min="1" max="100"/>
        <Hints>
          <PropertyWidgetDecorator type="GenericDecorator"
                                   mode="visibility"
                                   property="BuildIfRequired"
                                   value="0">
          </PropertyWidgetDecorator>
        </Hints>
      </IntVectorProperty>
      <IntVectorProperty command="SetBuildIfRequired"
                         default_values="0"
                         name="BuildIfRequired"
                        number_of_elements="1">
      <Documentation>
        Specify if the filter must generate the ghost cells only
        if required by the pipeline downstream. To force at least a fixed level
        of ghosts, this must be set to 0 (unchecked).
      </Documentation>
                         panel_visibility="advanced">
        <BooleanDomain name="bool" />
      </IntVectorProperty>
      <!-- End CompositeDataSetGhostCellsGenerator -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkRedistributeDataSetFilter"
                 name="RedistributeDataSet"
                 label="Redistribute DataSet"
                 number_of_output_ports="1">
      <Documentation
        long_help="Redistribute dataset into requested number of partitions.">
        Redistribute data for load balancing. The filter either computes the bounding
        boxes, or uses a provided collection of bounding boxes, for distributing the
        data. Cells along partition boundaries can be uniquely assigned to a partition,
        duplicated among partitions, or split among the partitions. The output
        is an unstructured grid.
      </Documentation>
      <InputProperty name="Input"
                     command="SetInputConnection">
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
      </InputProperty>

      <IntVectorProperty name="BoundaryMode"
        number_of_elements="1"
        default_values="0"
        command="SetBoundaryMode">
        <EnumerationDomain name="enum">
          <Entry text="Assign to one region" value="0" />
          <Entry text="Assign to all regions" value="1" />
          <Entry text="Split cells" value="2" />
        </EnumerationDomain>
        <Documentation>This property determines how cells that lie on processor
        boundaries are handled. The "Assign to one region" option assigns each
        boundary cell to exactly one process, which is useful for isosurfacing.
        Selecting "Assign to all regions" causes the cells on the boundaries to be
        copied to each process that shares that boundary. The "Split cells"
        option breaks cells across process boundary lines so that pieces of the
        cell lie in different processes. This option is useful for volume
        rendering.</Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="NumberOfPartitions"
        command="SetNumberOfPartitions"
        number_of_elements="1"
        default_values="-1">
        <IntRangeDomain min="-1"
                        name="range" />
        <Documentation>Specify the number of partitions to split the dataset into.
          Set to 0 to indicate that the partitions should match the number of ranks.
          The value provided is a hint and the actual number of partitions will be
        equal to the power of 2 greater than or equal to the chosen value.</Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="LoadBalanceAcrossAllBlocks"
        command="SetLoadBalanceAcrossAllBlocks"
        number_of_elements="1"
        default_values="1">
        <BooleanDomain name="bool" />
        <Documentation>When checked, for datasets with multiple blocks,
          the filter will try to load balance across all blocks otherwise each block is separately
          load balanced.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty name="PreservePartitionsInOutput"
        command="SetPreservePartitionsInOutput"
        number_of_elements="1"
        default_values="0"
        panel_visibility="advanced">
        <Documentation>When unchecked, ranks with more than one partition will merge
          the partitions into a single vtkUnstructuredGrid. When checked, the partitions
          are preserved and the output is a vtkPartitionedDataSet.
        </Documentation>
        <BooleanDomain name="bool" />
      </IntVectorProperty>

      <IntVectorProperty name="GenerateGlobalCellIds"
        command="SetGenerateGlobalCellIds"
        number_of_elements="1"
        default_values="0">
        <Documentation>Generate global Ids for all cells across partitions.
        </Documentation>
        <BooleanDomain name="bool" />
      </IntVectorProperty>

      <IntVectorProperty name="EnableDebugging"
        command="SetEnableDebugging"
        number_of_elements="1"
        default_values="0"
        panel_visibility="advanced">
        <Documentation>Retains some helper arrays created for generating
        global cell Ids and ghost cells that are useful for debugging.</Documentation>
        <BooleanDomain name="bool" />
      </IntVectorProperty>
      <!-- End RedistributeDataSetFilter -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkOverlappingCellsDetector"
                 label="Overlapping Cells Detector"
                 name="OverlappingCellsDetector"
                 number_of_output_ports="1">
      <Documentation short_help="Detects overlapping cells.">
        Generates overlap count between cells of the input in a cell array named
        "NumberOfCollisionsPerCell".
      </Documentation>
      <InputProperty command="SetInputConnection"
                     name="Input">
        <ProxyGroupDomain name="groups">
          <Group name="sources" />
          <Group name="filters" />
        </ProxyGroupDomain>
        <DataTypeDomain name="input_type">
          <DataType value="vtkPointSet" />
          <DataType value="vtkCompositeDataSet" />
        </DataTypeDomain>
        <Documentation>This property specifies the input.</Documentation>
      </InputProperty>
      <DoubleVectorProperty name="Tolerance"
                         command="SetTolerance"
                         number_of_elements="1"
                         default_values="0">
      <Documentation short_help="The higher, the less overlaps are detected">
        Cells are deflated by 0.5 * Tolerance before the cell overlaps are computed.
        Deflating is done by translating each cell's faces and edges, in their normal direction,
        by a vector of norm Tolerance.
      </Documentation>
      </DoubleVectorProperty>
      <!-- End OverlappingCellsDetector -->
    </SourceProxy>

    <!-- ==================================================================== -->
    <SourceProxy class="vtkAdaptiveResampleToImage"
                 name="AdaptiveResampleToImage"
                 label="Adaptive Resample To Image"
                 number_of_output_ports="1">
      <Documentation
        long_help="Resample to image adaptively">
      </Documentation>
      <InputProperty name="Input"
                     command="SetInputConnection">
        <DataTypeDomain name="input_type">
          <DataType value="vtkDataSet"/>
        </DataTypeDomain>
      </InputProperty>

      <IntVectorProperty name="NumberOfImages"
        command="SetNumberOfImages"
        number_of_elements="1"
        default_values="0">
        <IntRangeDomain min="0"
                        name="range" />
        <Documentation>
          Specify the number of partitions to split the dataset into.
          Set to 0 to indicate that the partitions should match the number of ranks.
        </Documentation>
      </IntVectorProperty>

      <IntVectorProperty command="SetSamplingDimensions"
                         default_values="64 64 64"
                         name="SamplingDimensions"
                         number_of_elements="3"
                         panel_visibility="default">
                         <IntRangeDomain name="range" min="1 1 1"/>
        <Documentation>
        </Documentation>
      </IntVectorProperty>
    </SourceProxy>

  </ProxyGroup>
</ServerManagerConfiguration>
