<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<configuration>
  <property>
    <name>dt.application.EventClassifierApp.operator.hmapOper.keys</name>
    <value>ia,ib,ic,id</value>
  </property>
  <property>
    <name>dt.application.EventClassifierApp.operator.hmapOper.numKeys</name>
    <value>4</value>
  </property>
  <property>
    <name>dt.application.FilterClassifier.operator.hmapOper.keys</name>
    <value>ia,ib,ic,id</value>
  </property>
  <property>
    <name>dt.application.FilterClassifier.operator.hmapOper.numKeys</name>
    <value>2</value>
  </property>
  <property>
    <name>dt.application.FilteredEventClassifierApp.operator.hmapOper.keys</name>
    <value>ia,ib,ic,id</value>
  </property>
  <property>
    <name>dt.application.FilteredEventClassifierApp.operator.hmapOper.numKeys</name>
    <value>2</value>
  </property>
  <property>
    <name>dt.application.EventIncrementerApp.operator.hmapOper.seed</name>
    <value>a</value>
  </property>
  <property>
    <name>dt.application.EventIncrementerApp.operator.hmapOper.keys</name>
    <value>a,b</value>
  </property>
  <property>
    <name>dt.application.EventIncrementerApp.operator.hmapOper.numKeys</name>
    <value>2</value>
  </property>
  <property>
    <name>dt.application.ThroughputCounterApp.operator.hmapOper.keys</name>
    <value>a,b</value>
  </property>
  <property>
    <name>dt.application.ThroughputCounterApp.operator.hmapOper.numKeys</name>
    <value>2</value>
  </property>
  <property>
    <name>dt.application.EventGeneratorApp.operator.eventGenerator.keysHelper</name>
    <value>a,b,c,d</value>
  </property>
  <property>
    <name>dt.application.EventGeneratorApp.operator.eventGenerator.weightsHelper</name>
    <value>10,20,30,40</value>
  </property>
  <property>
    <name>dt.application.EventGeneratorApp.operator.eventGenerator.valuesHelper</name>
    <value></value>
  </property>
  <property>
    <name>dt.application.EventClassifierNumberToHashDoubleApp.operator.eventClassify.key</name>
    <value>Key1</value>
  </property>
  <property>
    <name>dt.application.EventClassifierNumberToHashDoubleApp.operator.eventClassify.s_start</name>
    <value>5</value>
  </property>
  <property>
    <name>dt.application.EventClassifierNumberToHashDoubleApp.operator.eventClassify.s_end</name>
    <value>15</value>
  </property>
</configuration>