diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7589ce41..16952d5b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,7 +36,7 @@ jobs: distribution: 'zulu' - name: Cache Maven packages - uses: actions/cache@v3.3.2 + uses: actions/cache@v4 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} @@ -70,6 +70,8 @@ jobs: cd /feedzai-openml-java && \ mvn test -B -Dsurefire.failIfNoSpecifiedTests=false -Dtest=!ClassifyUnknownCategoryTest#test,!H2OModelProviderTrainTest#trainModelsForAllAlgorithms' - - uses: codecov/codecov-action@v1 + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 with: + use_oidc: true fail_ci_if_error: true diff --git a/openml-lightgbm/lightgbm-builder/make-lightgbm b/openml-lightgbm/lightgbm-builder/make-lightgbm index fdb7fde9..2c43f44c 160000 --- a/openml-lightgbm/lightgbm-builder/make-lightgbm +++ b/openml-lightgbm/lightgbm-builder/make-lightgbm @@ -1 +1 @@ -Subproject commit fdb7fde9814c4f55b0cb5a2add7d0a1bdb3ed0c0 +Subproject commit 2c43f44c3ece1597b301c8a829267ed6c496df58 diff --git a/openml-lightgbm/lightgbm-builder/pom.xml b/openml-lightgbm/lightgbm-builder/pom.xml index d1c686eb..2b2f2783 100644 --- a/openml-lightgbm/lightgbm-builder/pom.xml +++ b/openml-lightgbm/lightgbm-builder/pom.xml @@ -85,15 +85,16 @@ maven-antrun-plugin + 3.1.0 generate-resources - + - + run diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMAlgorithms.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMAlgorithms.java index 9acab5c0..046ce4cf 100644 --- a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMAlgorithms.java +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMAlgorithms.java @@ -48,7 +48,7 @@ public enum LightGBMAlgorithms implements MLAlgorithmEnum { "FairGBM (LightGBM with Fairness)", FairGBMDescriptorUtil.PARAMS, MachineLearningAlgorithmType.SUPERVISED_BINARY_CLASSIFICATION, - "https://lightgbm.readthedocs.io/" // TODO: link to our documentation + "https://cam.feedzai.com/pulse/latest/docs/common/pulse/understanding-pulse/core-concepts/models/model-training/feedzai-fairgbm" )), ; diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainer.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainer.java index 69eb7b70..68794065 100644 --- a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainer.java +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainer.java @@ -22,6 +22,7 @@ import com.feedzai.openml.data.schema.CategoricalValueSchema; import com.feedzai.openml.data.schema.DatasetSchema; import com.feedzai.openml.data.schema.FieldSchema; + import com.google.common.collect.ImmutableSet; import com.microsoft.ml.lightgbm.SWIGTYPE_p_float; import com.microsoft.ml.lightgbm.SWIGTYPE_p_int; @@ -43,6 +44,7 @@ import static com.feedzai.openml.provider.lightgbm.FairGBMDescriptorUtil.CONSTRAINT_GROUP_COLUMN_PARAMETER_NAME; import static com.feedzai.openml.provider.lightgbm.LightGBMDescriptorUtil.NUM_ITERATIONS_PARAMETER_NAME; +import static com.feedzai.openml.provider.lightgbm.LightGBMDescriptorUtil.SAMPLE_WEIGHT_COL_PARAMETER_NAME; import static java.lang.Integer.parseInt; import static java.util.stream.Collectors.toList; @@ -129,7 +131,16 @@ static void fit(final Dataset dataset, final long instancesPerChunk) { final DatasetSchema schema = dataset.getSchema(); - final int numFeatures = schema.getPredictiveFields().size(); + + final Optional sampleWeightFieldName = SampleWeightParamParserUtil.getSampleWeightFieldName(params); + int numFeatures = schema.getPredictiveFields().size(); + + // Check if the weight field exists and is explicitly part of the predictive fields + final Optional sampleWeightColIndex = + SampleWeightParamParserUtil.getSampleWeightColumnIndex(params, schema); + if (sampleWeightColIndex.isPresent()) { + numFeatures--; + } // Parse train parameters to LightGBM format final String trainParams = getLightGBMTrainParamsString(params, schema); @@ -140,13 +151,22 @@ static void fit(final Dataset dataset, final SWIGTrainData swigTrainData = new SWIGTrainData( numFeatures, instancesPerChunk, - FairGBMParamParserUtil.isFairnessConstrained(params)); + FairGBMParamParserUtil.isFairnessConstrained(params), + sampleWeightColIndex.isPresent() + ); final SWIGTrainBooster swigTrainBooster = new SWIGTrainBooster(); /// Create LightGBM dataset final int constraintGroupColIndex = FairGBMParamParserUtil.getConstraintGroupColumnIndex(params, schema).orElse( FairGBMParamParserUtil.NO_SPECIFIC); - createTrainDataset(dataset, numFeatures, trainParams, constraintGroupColIndex, swigTrainData); + createTrainDataset( + dataset, + numFeatures, + trainParams, + constraintGroupColIndex, + sampleWeightColIndex, + swigTrainData + ); /// Create Booster from dataset createBoosterStructure(swigTrainBooster, swigTrainData, trainParams); @@ -203,6 +223,7 @@ private static void createTrainDataset(final Dataset dataset, final int numFeatures, final String trainParams, final int constraintGroupColIndex, + final Optional sampleWeightColIndex, final SWIGTrainData swigTrainData) { logger.info("Creating LightGBM dataset"); @@ -211,7 +232,8 @@ private static void createTrainDataset(final Dataset dataset, copyTrainDataToSWIGArrays( dataset, swigTrainData, - constraintGroupColIndex + constraintGroupColIndex, + sampleWeightColIndex ); initializeLightGBMTrainDatasetFeatures( @@ -224,13 +246,17 @@ private static void createTrainDataset(final Dataset dataset, swigTrainData ); + if (sampleWeightColIndex.isPresent()) { + setLightGBMDatasetSampleWeightData(swigTrainData); + } + if (constraintGroupColIndex != FairGBMParamParserUtil.NO_SPECIFIC) { setLightGBMDatasetConstraintGroupData( swigTrainData ); } - setLightGBMDatasetFeatureNames(swigTrainData.swigDatasetHandle, dataset.getSchema()); + setLightGBMDatasetFeatureNames(swigTrainData.swigDatasetHandle, dataset.getSchema(), sampleWeightColIndex); logger.info("Created LightGBM dataset."); } @@ -308,6 +334,33 @@ private static SWIGTYPE_p_int genSWIGFeatureChunkSizesArray(final SWIGTrainData return swigChunkSizesArray; } + /** + * Sets the LightGBM dataset sample weight data. + * + * @param swigTrainData SWIGTrainData object. + */ + private static void setLightGBMDatasetSampleWeightData(final SWIGTrainData swigTrainData) { + final long numInstances = swigTrainData.swigSampleWeightsChunkedArray.get_add_count(); + // Init SWIG array and copy from chunked data. + SWIGTYPE_p_float swigSampleWeightsData = swigTrainData.coalesceChunkedSwigSampleWeightDataArray(); + logger.debug("FTL: #weights={}", numInstances); + + logger.debug("Setting sample weight data..."); + final int returnCodeLGBM = lightgbmlib.LGBM_DatasetSetField( + swigTrainData.swigDatasetHandle, + "weight", // LightGBM weight column type. + lightgbmlib.float_to_voidp_ptr(swigSampleWeightsData), + (int) numInstances, + lightgbmlibConstants.C_API_DTYPE_FLOAT32 + ); + if (returnCodeLGBM == -1) { + logger.error("Could not set sample weight data."); + throw new LightGBMException(); + } + + swigTrainData.destroySwigSampleWeightsDataArray(); + } + /** * Sets the LightGBM dataset label data. * @@ -370,11 +423,16 @@ private static void setLightGBMDatasetConstraintGroupData(final SWIGTrainData sw * @param swigDatasetHandle SWIG dataset handle * @param schema Dataset schema */ - private static void setLightGBMDatasetFeatureNames(final SWIGTYPE_p_void swigDatasetHandle, final DatasetSchema schema) { + private static void setLightGBMDatasetFeatureNames(final SWIGTYPE_p_void swigDatasetHandle, + final DatasetSchema schema, + final Optional sampleWeightColIndex) { - final int numFeatures = schema.getPredictiveFields().size(); + final List featureFields = schema.getPredictiveFields().stream() + .filter(field -> !sampleWeightColIndex.equals(Optional.of(field.getFieldIndex()))) + .collect(toList()); + final int numFeatures = featureFields.size(); - final String[] featureNames = getFieldNames(schema.getPredictiveFields()); + final String[] featureNames = getFieldNames(featureFields); logger.debug("featureNames {}", Arrays.toString(featureNames)); final int returnCodeLGBM = lightgbmlib.LGBM_DatasetSetFeatureNames(swigDatasetHandle, featureNames, numFeatures); @@ -482,12 +540,13 @@ static void saveModelFileToDisk(final SWIGTYPE_p_void swigBoosterHandle, final P */ private static void copyTrainDataToSWIGArrays(final Dataset dataset, final SWIGTrainData swigTrainData) { - copyTrainDataToSWIGArrays(dataset, swigTrainData, FairGBMParamParserUtil.NO_SPECIFIC); + copyTrainDataToSWIGArrays(dataset, swigTrainData, FairGBMParamParserUtil.NO_SPECIFIC, Optional.empty()); } private static void copyTrainDataToSWIGArrays(final Dataset dataset, final SWIGTrainData swigTrainData, - final int constraintGroupIndex) { + final int constraintGroupIndex, + final Optional sampleWeightColIndex) { final DatasetSchema datasetSchema = dataset.getSchema(); final int numFields = datasetSchema.getFieldSchemas().size(); @@ -496,6 +555,7 @@ private static void copyTrainDataToSWIGArrays(final Dataset dataset, ValidationUtils' validateCategoricalSchema: */ final int targetIndex = datasetSchema.getTargetIndex().get(); + final int sampleWeightIdx = sampleWeightColIndex.orElse(-1); final Iterator iterator = dataset.getInstances(); while (iterator.hasNext()) { @@ -507,8 +567,21 @@ private static void copyTrainDataToSWIGArrays(final Dataset dataset, swigTrainData.addConstraintGroupValue((int) instance.getValue(constraintGroupIndex)); } + // Add sample weight and validate that it is non-negative + sampleWeightColIndex.ifPresent(integer -> { + final float weight = (float) instance.getValue(integer); + if (weight < 0) { + throw new IllegalArgumentException(String.format( + "Sample weight must be non-negative, but got: %f", weight + )); + } + swigTrainData.addSampleWeightValue(weight); + }); + for (int colIdx = 0; colIdx < numFields; ++colIdx) { - if (colIdx != targetIndex) { + // Don't add features for target and sample weight columns (in the case of sample weight, + // only if this is defined) + if ((colIdx != targetIndex) && (colIdx != sampleWeightIdx)) { swigTrainData.addFeatureValue(instance.getValue(colIdx)); } } @@ -522,6 +595,11 @@ private static void copyTrainDataToSWIGArrays(final Dataset dataset, swigTrainData.swigLabelsChunkedArray.get_add_count(); } + if (swigTrainData.useSampleWeight) { + assert swigTrainData.swigSampleWeightsChunkedArray.get_add_count() == + swigTrainData.swigLabelsChunkedArray.get_add_count(); + } + logger.debug("Copied train data of size {} into {} chunks.", swigTrainData.swigLabelsChunkedArray.get_add_count(), swigTrainData.swigLabelsChunkedArray.get_chunks_count() @@ -559,8 +637,11 @@ private static String getLightGBMTrainParamsString(final Map map constraintGroupColIdx.ifPresent( integer -> preprocessedMapParams.put(CONSTRAINT_GROUP_COLUMN_PARAMETER_NAME, Integer.toString(integer))); - // Add all **other** parameters - mapParams.forEach(preprocessedMapParams::putIfAbsent); + // Add all **other** parameters - remove sample weight parameter as it is passed to LightGBM in a different way + // (via lightgbmlib.LGBM_DatasetSetField(..., "weight", ...)) + mapParams.entrySet().stream() + .filter(e -> !e.getKey().equals(SAMPLE_WEIGHT_COL_PARAMETER_NAME)) + .forEach(e -> preprocessedMapParams.putIfAbsent(e.getKey(), e.getValue())); // Build string containing params in LightGBM format final StringBuilder paramsBuilder = new StringBuilder(); diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMDescriptorUtil.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMDescriptorUtil.java index cf03abe2..9d5722c3 100644 --- a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMDescriptorUtil.java +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMDescriptorUtil.java @@ -20,6 +20,8 @@ import com.feedzai.openml.provider.descriptor.ModelParameter; import com.feedzai.openml.provider.descriptor.fieldtype.BooleanFieldType; import com.feedzai.openml.provider.descriptor.fieldtype.ChoiceFieldType; +import com.feedzai.openml.provider.descriptor.fieldtype.FreeTextFieldType; + import com.google.common.collect.ImmutableSet; import java.util.Set; @@ -52,6 +54,11 @@ public class LightGBMDescriptorUtil extends AlgoDescriptorUtil { */ public static final String BAGGING_FREQUENCY_PARAMETER_NAME = "bagging_freq"; + /** + * Sample weight parameter name. + */ + public static final String SAMPLE_WEIGHT_COL_PARAMETER_NAME = "sample_weight"; + /** * Global seed parameter name. */ @@ -347,8 +354,17 @@ public class LightGBMDescriptorUtil extends AlgoDescriptorUtil { "Set to true if training data is unbalanced. \nWhilst enabling this should increase the overall performance metric of the model, it will also result in poor estimates of the individual class probabilities. Cannot be used at the same time as 'scale_pos_weight'.", // TODO nam parameter in ui (scale_pos_weight) NOT_MANDATORY, new BooleanFieldType(false) - ) + ), // TODO: https://lightgbm.readthedocs.io/en/latest/Parameters.html#scale_pos_weight ?? would require setting the pos label - + new ModelParameter( + SAMPLE_WEIGHT_COL_PARAMETER_NAME, + "Sample Weight", + "Name of the field containing per-instance weights for training. \n" + + "Higher weights result in the model prioritizing training on those samples. \n" + + "Values must be non-negative. \n" + + "If this field is selected, it is automatically dropped from the selected features.", + NOT_MANDATORY, + new FreeTextFieldType("") + ) ); } diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreator.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreator.java index f492f8cf..174c69b3 100644 --- a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreator.java +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreator.java @@ -22,12 +22,17 @@ import com.feedzai.openml.data.schema.CategoricalValueSchema; import com.feedzai.openml.data.schema.DatasetSchema; import com.feedzai.openml.data.schema.FieldSchema; +import com.feedzai.openml.data.schema.NumericValueSchema; import com.feedzai.openml.data.schema.StringValueSchema; import com.feedzai.openml.provider.descriptor.fieldtype.ParamValidationError; import com.feedzai.openml.provider.exception.ModelLoadingException; import com.feedzai.openml.provider.model.MachineLearningModelTrainer; import com.feedzai.openml.util.load.LoadSchemaUtils; import com.google.common.collect.ImmutableList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -131,7 +136,10 @@ public LightGBMBinaryClassificationModel fit(final Dataset dataset, try { LightGBMBinaryClassificationModelTrainer.fit( dataset, params, tmpModelFilePath); - return loadModel(tmpModelFilePath, dataset.getSchema()); + + // Build a schema without the weight column for model loading validation + final DatasetSchema schemaForLoading = getSchemaForLoading(params, dataset); + return loadModel(tmpModelFilePath, schemaForLoading); } catch (final Exception e) { logger.error("Could not train the model."); throw new RuntimeException(e); @@ -144,7 +152,32 @@ public LightGBMBinaryClassificationModel fit(final Dataset dataset, } } - + /** + * Retrieves the appropriate schema to be used to load a LightGBM model. + * If the model was trained with sample weight, then its schema will consist in the train + * data schema without the sample weight column; otherwise, the original raw schema of + * the train data will be considered. + * + * @param params LightGBM model parameters. + * @param dataset Train dataset. + * @return A {@link DatasetSchema} instance excluding the sample weight field if present; + * otherwise, the original schema layout mapped to the dataset + */ + private DatasetSchema getSchemaForLoading(Map params, Dataset dataset) { + final DatasetSchema schemaForLoading; + + final Optional weightColIdx = + SampleWeightParamParserUtil.getSampleWeightColumnIndex(params, dataset.getSchema()); + if (weightColIdx.isPresent()) { + final List fieldsWithoutWeight = dataset.getSchema().getPredictiveFields().stream() + .filter(field -> field.getFieldIndex() != weightColIdx.get()) + .collect(Collectors.toList()); + schemaForLoading = new DatasetSchema(fieldsWithoutWeight); + } else { + schemaForLoading = dataset.getSchema(); + } + return schemaForLoading; + } @Override public List validateForFit(final Path pathToPersist, @@ -155,7 +188,8 @@ public List validateForFit(final Path pathToPersist, errorsBuilder .addAll(validateModelPathToTrain(pathToPersist)) .addAll(validateSchema(schema)) - .addAll(validateFitParams(params)); + .addAll(validateFitParams(params)) + .addAll(validateSampleWeightsCol(schema, params)); return errorsBuilder.build(); } @@ -183,6 +217,42 @@ private List validateSchema(final DatasetSchema schema) { return errorsBuilder.build(); } + /** + * Ensure that if the sample weight column parameter is specified, it corresponds + * to a column in the dataset schema + * + * @param schema Dataset schema. + * @param params Model fit parameters. + * @return list of validation errors. + */ + private List validateSampleWeightsCol(DatasetSchema schema, + final Map params) { + // Don't test anything if the parameter is not set: + final Optional sampleWeightFieldName = SampleWeightParamParserUtil.getSampleWeightFieldName(params); + if (!sampleWeightFieldName.isPresent()) { + return ImmutableList.of(); + } + + // Check if the field exists in the dataset: + final Optional sampleWeightColIndex = + SampleWeightParamParserUtil.getSampleWeightColumnIndex(params, schema); + if (!sampleWeightColIndex.isPresent()) { + return ImmutableList.of(new ParamValidationError(String.format( + "Sample weight field %s doesn't exist in the dataset.", + sampleWeightFieldName.get() + ))); + } + + // Ensure the sample weight field is numeric + final FieldSchema sampleWeightSchema = schema.getFieldSchemas().get(sampleWeightColIndex.get()); + final AbstractValueSchema valueSchema = sampleWeightSchema.getValueSchema(); + if (!(valueSchema instanceof NumericValueSchema)) { + return ImmutableList.of(new ParamValidationError("Sample weight must be a numeric field!")); + } + + return ImmutableList.of(); + } + /** * Validate model fit parameters. * @@ -219,6 +289,17 @@ private boolean baggingDisabled(final Map params) { return ((Math.abs(freq - 0) < epsilon) || (Math.abs(1 - fraction) < epsilon)); } + /** + * Sanitizes a field name to match LightGBM's internal feature name format, + * replacing spaces with underscores. + * + * @param fieldName The original field name. + * @return The sanitized field name. + */ + static String sanitizeFieldName(final String fieldName) { + return fieldName.replace(" ", "_"); + } + @Override public LightGBMBinaryClassificationModel loadModel(final Path modelPath, final DatasetSchema schema) throws ModelLoadingException { @@ -235,11 +316,25 @@ public LightGBMBinaryClassificationModel loadModel(final Path modelPath, throw new ModelLoadingException(ERROR_MSG_CANNOT_LOAD_NON_BINARY_LIGHTGBM_MODEL); } - if (model.getBoosterNumFeatures() != schema.getPredictiveFields().size()) { + // Check predictive fields size + // - In LightGBM, if the sample weights are provided then the trained model will not + // have this field, but the DatasetSchema will -- Need to exclude this field + // + // Can only allow for the sample weight field to be extra in the DatasetSchema, + // when compared with the model fields; any other additional field will need to + // trigger an error + final String[] boosterFeatureNames = model.getBoosterFeatureNames(); + final Set modelFeatureSet = new HashSet<>(Arrays.asList(boosterFeatureNames)); + final List relevantFields = schema.getPredictiveFields().stream() + .filter(field -> modelFeatureSet.contains(sanitizeFieldName(field.getFieldName()))) + .collect(Collectors.toList()); + + if ((schema.getPredictiveFields().size() - relevantFields.size() > 1) + || (relevantFields.size() != boosterFeatureNames.length)) { throw new ModelLoadingException(ERROR_MSG_SCHEMA_WITH_WRONG_PREDICTIVE_FIELDS_SIZE); } - if (!schemaMatchAllFeatures(schema, model.getBoosterFeatureNames())) { + if (!schemaMatchAllFeatures(relevantFields, boosterFeatureNames)) { throw new ModelLoadingException(ERROR_MSG_SCHEMA_WITH_WRONG_PREDICTIVE_FIELD_NAMES); } @@ -338,37 +433,42 @@ private static Optional getNumTargetClasses(final DatasetSchema schema) } /** - * Gets the feature names from schema. + * Gets the feature names from the given fields. * * @implNote The space character is replaced with underscore * to comply with LightGBM's model features representation. * - * @param schema Schema + * @param fields List of field schemas. * @return Feature names from the schema. * @since 1.0.18 */ - private static String[] getFeatureNamesFrom(final DatasetSchema schema) { + private static String[] getFeatureNamesFrom(final List fields) { - return schema.getPredictiveFields().stream() + return fields.stream() .map(FieldSchema::getFieldName) - .map(fieldName -> fieldName.replace(" ", "_")) + .map(LightGBMModelCreator::sanitizeFieldName) .toArray(String[]::new); } /** * Performs a one-by-one feature name comparison between a - * {@link DatasetSchema} and an array of feature names. - * This way the first mismatch is logged, improving debug. + * given list of {@link FieldSchema} (containing only the + * relevant schema fields for comparison), and an array of feature + * names. This way the first mismatch is logged, improving debug. + * The provided list of relevant fields contains the fields from + * the model schema without the sample weight field, if it is + * considered for model training. * - * @param schema Schema - * @param featureNames Feature names to validate. - * @return {@code true} if the schema predictive field names - * match the provided array, {@code false} otherwise. + * @param schemaRelevantFields List containing the relevant model feature fields. + * @param featureNames Feature names to validate. + * @return {@code true} if the schema predictive field names + * match the provided array, {@code false} otherwise. * @since 1.0.18 */ - private boolean schemaMatchAllFeatures(final DatasetSchema schema, final String[] featureNames) { + private boolean schemaMatchAllFeatures(final List schemaRelevantFields, + final String[] featureNames) { - final String[] schemaFeatureNames = getFeatureNamesFrom(schema); + final String[] schemaFeatureNames = getFeatureNamesFrom(schemaRelevantFields); boolean isMatch = true; diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SWIGTrainData.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SWIGTrainData.java index 1036e753..0f1efafc 100644 --- a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SWIGTrainData.java +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SWIGTrainData.java @@ -92,6 +92,16 @@ public class SWIGTrainData implements AutoCloseable { */ floatChunkedArray swigLabelsChunkedArray; + /** + * SWIG object to hold the sample weights in chunks. + */ + floatChunkedArray swigSampleWeightsChunkedArray; + + /** + * SWIG pointer to the coalesced sample weights array. + */ + SWIGTYPE_p_float swigSampleWeightsDataArray; + /** * SWIG object to hold the constraint groups in chunks. */ @@ -102,6 +112,11 @@ public class SWIGTrainData implements AutoCloseable { */ public final boolean fairnessConstrained; + /** + * Whether the LightGBM model uses sample weights for training. + */ + public final boolean useSampleWeight; + /** * Constructor. * @@ -115,7 +130,7 @@ public class SWIGTrainData implements AutoCloseable { * @param numInstancesChunk The number of instances per chunk of data. */ public SWIGTrainData(final int numFeatures, final long numInstancesChunk) { - this(numFeatures, numInstancesChunk, false); + this(numFeatures, numInstancesChunk, false, false); } /** @@ -130,12 +145,18 @@ public SWIGTrainData(final int numFeatures, final long numInstancesChunk) { * @param numFeatures The number of features. * @param numInstancesChunk The number of instances per chunk of data. * @param fairnessConstrained Whether this data will be used for a model with fairness (group) constraints. + * @param useSampleWeight Whether this training data includes per-instance sample weights to be passed + * to LightGBM. */ - public SWIGTrainData(final int numFeatures, final long numInstancesChunk, final boolean fairnessConstrained) { + public SWIGTrainData(final int numFeatures, + final long numInstancesChunk, + final boolean fairnessConstrained, + final boolean useSampleWeight) { this.numFeatures = numFeatures; this.numInstancesChunk = numInstancesChunk; this.swigOutDatasetHandlePtr = lightgbmlib.voidpp_handle(); this.fairnessConstrained = fairnessConstrained; + this.useSampleWeight = useSampleWeight; logger.debug("Intermediate SWIG train buffers will be allocated in chunks of {} instances.", numInstancesChunk); // 1-D Array in row-major-order that stores only the features (excludes label) in double format by chunks: @@ -148,6 +169,10 @@ public SWIGTrainData(final int numFeatures, final long numInstancesChunk, final if (this.fairnessConstrained) { this.swigConstraintGroupChunkedArray = new int32ChunkedArray(numInstancesChunk); } + + if (this.useSampleWeight) { + this.swigSampleWeightsChunkedArray = new floatChunkedArray(numInstancesChunk); + } } /** @@ -165,6 +190,11 @@ public void addLabelValue(float value) { this.swigLabelsChunkedArray.add(value); } + public void addSampleWeightValue(final float value) { + assert this.useSampleWeight : "Attempting to set sample weight data with useSampleWeight=false"; + this.swigSampleWeightsChunkedArray.add(value); + } + /** * Adds a value to the constraint group ChunkedArray. * @param value the value to add. @@ -204,6 +234,18 @@ SWIGTYPE_p_int coalesceChunkedSwigConstraintGroupDataArray() { return this.swigConstraintGroupDataArray; } + /** + * Initializes the swigWeightDataArray, copies the chunked constraint group array data to it, + * and releases the chunked data from memory. + */ + SWIGTYPE_p_float coalesceChunkedSwigSampleWeightDataArray() { + assert this.useSampleWeight && this.swigSampleWeightsChunkedArray != null; + this.swigSampleWeightsDataArray = lightgbmlib.new_floatArray(this.swigSampleWeightsChunkedArray.get_add_count()); + this.swigSampleWeightsChunkedArray.coalesce_to(this.swigSampleWeightsDataArray); + this.swigSampleWeightsChunkedArray.release(); + return this.swigSampleWeightsDataArray; + } + /** * Setup swigDatasetHandle after its setup. */ @@ -235,6 +277,17 @@ void destroySwigConstraintGroupDataArray() { } } + /** + * Release the memory of the sample weight array. + * This can be called after instantiating the dataset and setting the sample weight. + */ + void destroySwigSampleWeightsDataArray() { + if (this.swigSampleWeightsDataArray != null) { + lightgbmlib.delete_floatArray(this.swigSampleWeightsDataArray); + this.swigSampleWeightsDataArray = null; + } + } + /** * Release the memory of the chunked features array. @@ -250,6 +303,8 @@ void releaseSwigTrainFeaturesChunkedArray() { /** * Releases the ChunkedArrays of both features and label. + * If ChunkedArrays for constraint group and/or sample weights are + * defined, these are also released. * Idempotent. After calling this ChunkedArrays cannot be re-used. */ void releaseChunkedResources() { @@ -259,6 +314,9 @@ void releaseChunkedResources() { if (this.swigConstraintGroupChunkedArray != null) { this.swigConstraintGroupChunkedArray.release(); } + if (this.swigSampleWeightsChunkedArray != null) { + this.swigSampleWeightsChunkedArray.release(); + } } /** @@ -271,6 +329,7 @@ public void close() { releaseChunkedResources(); destroySwigTrainLabelDataArray(); destroySwigConstraintGroupDataArray(); + destroySwigSampleWeightsDataArray(); if (this.swigOutDatasetHandlePtr != null) { lightgbmlib.delete_voidpp(this.swigOutDatasetHandlePtr); diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SampleWeightParamParserUtil.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SampleWeightParamParserUtil.java new file mode 100644 index 00000000..393a06c4 --- /dev/null +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SampleWeightParamParserUtil.java @@ -0,0 +1,62 @@ +/* + * The copyright of this file belongs to Feedzai. The file cannot be + * reproduced in whole or in part, stored in a retrieval system, + * transmitted in any form, or by any means electronic, mechanical, + * photocopying, or otherwise, without the prior permission of the owner. + * + * © 2026 Feedzai, Strictly Confidential + */ + +package com.feedzai.openml.provider.lightgbm; + +import java.util.Map; +import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.feedzai.openml.data.schema.DatasetSchema; + +import static com.feedzai.openml.provider.lightgbm.LightGBMDescriptorUtil.SAMPLE_WEIGHT_COL_PARAMETER_NAME; + +/** + * Utility class to parse and resolve the sample weight column parameter for LightGBM model training. + * + * @author Joaquim Leitão (joaquim.leitao@feedzai.com) + */ +public class SampleWeightParamParserUtil { + + /** + * This class is not meant to be instantiated. + */ + private SampleWeightParamParserUtil() { + } + + /** + * Retrieves the name of the sample weight field specified in the model parameters. + * + * @param params LightGBM train parameters. + * @return The name of the sample weight field, if specified in the model parameters; + * otherwise empty Optional + */ + public static Optional getSampleWeightFieldName(final Map params) { + final String sampleWeightFieldName = params.get(SAMPLE_WEIGHT_COL_PARAMETER_NAME); + + return sampleWeightFieldName == null || sampleWeightFieldName.isEmpty() ? + Optional.empty() : Optional.of(sampleWeightFieldName.trim()); + } + + /** + * Gets the (canonical) index of the constraint group column. + * NOTE: the sample weight column must be part of the features in the Dataset, but it may be ignored for training + * + * @param params LightGBM train parameters. + * @param schema Schema of the dataset. + * @return the index of the sample weight column if one was provided, else returns an empty Optional. + */ + public static Optional getSampleWeightColumnIndex(final Map params, + final DatasetSchema schema) { + final Optional sampleWeightFieldName = getSampleWeightFieldName(params); + return sampleWeightFieldName.isPresent() ? + SchemaFieldsUtil.getColumnIndex(sampleWeightFieldName.get(), schema) : Optional.empty(); + } +} diff --git a/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SchemaFieldsUtil.java b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SchemaFieldsUtil.java new file mode 100644 index 00000000..50043159 --- /dev/null +++ b/openml-lightgbm/lightgbm-provider/src/main/java/com/feedzai/openml/provider/lightgbm/SchemaFieldsUtil.java @@ -0,0 +1,82 @@ +/* + * The copyright of this file belongs to Feedzai. The file cannot be + * reproduced in whole or in part, stored in a retrieval system, + * transmitted in any form, or by any means electronic, mechanical, + * photocopying, or otherwise, without the prior permission of the owner. + * + * © 2026 Feedzai, Strictly Confidential + */ + +package com.feedzai.openml.provider.lightgbm; + + +import java.util.List; +import java.util.Optional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.feedzai.openml.data.schema.DatasetSchema; +import com.feedzai.openml.data.schema.FieldSchema; + +/** + * Utilities to compute fields/column indices. + * + * @author alberto.ferreira + */ +public class SchemaFieldsUtil { + + /** + * Logger for this class. + */ + private static final Logger logger = LoggerFactory.getLogger(SchemaFieldsUtil.class); + + /** + * Placeholder to use when an integer argument is not provided. + * E.g., when running standard unconstrained LightGBM the constrained_group_column parameter will take this value. + */ + public static final int NO_SPECIFIC = -1; + + public static Optional getColumnIndex(final String fieldName, + final DatasetSchema schema) { + + final List featureFields = schema.getFieldSchemas(); + Optional field = featureFields + .stream() + .filter(field_ -> field_.getFieldName().equalsIgnoreCase(fieldName)) + .findFirst(); + + // Check if column exists + if (!field.isPresent()) { + logger.error(String.format( + "Column %s was not found in the dataset.", + fieldName)); + return Optional.empty(); + } + + return Optional.of(field.get().getFieldIndex()); + } + + /** + * Gets the index of the soft label column without the label column (LightGBM-specific format) + * + * @param fieldName Name of the field in the dataset. + * @param schema Schema of the dataset. + * @return the index of the constraint group column without the label if the constraint_group_column parameter + * was provided, else returns an empty Optional. + */ + public static Optional getFieldIndexWithoutLabel(final String fieldName, + final DatasetSchema schema) { + + final Optional fieldIndex = getColumnIndex(fieldName, schema); + if (!fieldIndex.isPresent()) { + return Optional.empty(); + } + + // Compute column index in LightGBM-specific format (disregarding target column) + final int targetIndex = schema.getTargetIndex() + .orElseThrow(RuntimeException::new); // Our model is supervised. It needs the target. + + final int offsetIfFieldIsAfterLabel = fieldIndex.get() > targetIndex ? -1 : 0; + return Optional.of(fieldIndex.get() + offsetIfFieldIsAfterLabel); + } +} diff --git a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainerTest.java b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainerTest.java index 2b075b99..80d31578 100644 --- a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainerTest.java +++ b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMBinaryClassificationModelTrainerTest.java @@ -22,6 +22,8 @@ import com.feedzai.openml.data.schema.DatasetSchema; import com.feedzai.openml.mocks.MockDataset; import com.feedzai.openml.provider.exception.ModelLoadingException; + +import java.util.Arrays; import org.junit.BeforeClass; import org.junit.Test; @@ -38,6 +40,7 @@ import java.util.Random; import static com.feedzai.openml.provider.lightgbm.LightGBMDescriptorUtil.NUM_ITERATIONS_PARAMETER_NAME; +import static com.feedzai.openml.provider.lightgbm.LightGBMDescriptorUtil.SAMPLE_WEIGHT_COL_PARAMETER_NAME; import static java.nio.file.Files.createTempFile; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -301,6 +304,65 @@ public void fitWithNonASCIIFeatureNameIsPossible() { .isBetween(0.0, 1.0); } + /** + * Asserts that a model can be successfully trained with a sample weight column, + * and that the weight column is excluded from the model's features. + * + * @throws URISyntaxException For errors when loading the dataset resource. + * @throws IOException For errors when reading the dataset. + */ + @Test + public void fitWithSampleWeight() throws URISyntaxException, IOException { + // Replace "sample_weight" key-value pair in default model params + final Map params = new HashMap<>(MODEL_PARAMS); + params.put(SAMPLE_WEIGHT_COL_PARAMETER_NAME, "sample_weight_double"); + + final Dataset dataset = CSVUtils.getDatasetWithSchema( + TestResources.getResourcePath(TestResources.INSTANCES_WITH_SAMPLE_WEIGHT_NAME), + TestSchemas.NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END, + MAX_NUMBER_OF_INSTANCES_TO_TRAIN + ); + + try(final LightGBMBinaryClassificationModel model = fit( + dataset, + params, + SMALL_TRAIN_DATA_CHUNK_INSTANCES_SIZE + )) { + // Assert model trained successfully - sample weight column is not feature + assertThat(model.getBoosterNumFeatures()) + .as("Model features should not include sample weight") + .isEqualTo(4); + + assertThat(Arrays.asList(model.getBoosterFeatureNames())) + .as("Model feature names should not contain the weight column") + .doesNotContain("sample_weight_double"); + } catch (final Exception e) { + throw new RuntimeException("Could not train model with sample weights: ", e); + } + } + + /** + * Asserts that training with negative sample weights throws an error, + * as LightGBM does not support negative weights + * + * @throws URISyntaxException For errors when loading the dataset resource. + * @throws IOException For errors when reading the dataset. + * @throws ModelLoadingException For errors training the model. + */ + @Test(expected = RuntimeException.class) + public void fitWithNegativeSampleWeightThrows() throws URISyntaxException, IOException, ModelLoadingException { + final Map params = new HashMap<>(MODEL_PARAMS); + params.put(SAMPLE_WEIGHT_COL_PARAMETER_NAME, "sample_weight_double"); + + final Dataset dataset = CSVUtils.getDatasetWithSchema( + TestResources.getResourcePath(TestResources.INSTANCES_WITH_NEGATIVE_SAMPLE_WEIGHT_NAME), + TestSchemas.NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END, + MAX_NUMBER_OF_INSTANCES_TO_TRAIN + ); + + fit(dataset, params, SMALL_TRAIN_DATA_CHUNK_INSTANCES_SIZE); + } + /** * Test Feature Contributions with target at end. * @@ -352,6 +414,59 @@ public void testFeatureContributionsTargetBeginning() throws URISyntaxException, ensureFeatureContributions(dataset, MODEL_PARAMS); } + /** + * Asserts that sample weights affect model training by comparing recall between + * a model trained with high weights on fraud (10x) and a model trained without weights. + * The weighted model should achieve higher recall due to increased penalty on false negatives + * @throws URISyntaxException For errors when loading the dataset resource. + * @throws IOException For errors when reading the dataset. + */ + @Test + public void testSampleWeightAffectsRecall() throws URISyntaxException, IOException { + // Train first model and compute its recall + final Map unweightedParams = new HashMap<>(MODEL_PARAMS); + unweightedParams.put(NUM_ITERATIONS_PARAMETER_NAME, "10"); + final Dataset dataset = CSVUtils.getDatasetWithSchema( + TestResources.getResourcePath(TestResources.INSTANCES_WITH_SAMPLE_WEIGHT_NAME), + TestSchemas.NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END, + MAX_NUMBER_OF_INSTANCES_TO_TRAIN + ); + + final double recallUnweighted; + try (final LightGBMBinaryClassificationModel model = fit( + dataset, unweightedParams, SMALL_TRAIN_DATA_CHUNK_INSTANCES_SIZE + )) { + recallUnweighted = computeRecall(dataset, model); + } catch (final Exception e) { + throw new RuntimeException(e); + } + + // Train second model and compute its recall + final Map weightedParams = new HashMap<>(MODEL_PARAMS); + weightedParams.put(SAMPLE_WEIGHT_COL_PARAMETER_NAME, "sample_weight_double"); + weightedParams.put(NUM_ITERATIONS_PARAMETER_NAME, "10"); + + final Dataset weightedDataset = CSVUtils.getDatasetWithSchema( + TestResources.getResourcePath(TestResources.INSTANCES_WITH_FRAUD_SAMPLE_WEIGHT_NAME), + TestSchemas.NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END, + MAX_NUMBER_OF_INSTANCES_TO_TRAIN + ); + + final double recallWeighted; + try (final LightGBMBinaryClassificationModel model = fit( + weightedDataset, weightedParams, SMALL_TRAIN_DATA_CHUNK_INSTANCES_SIZE + )){ + recallWeighted = computeRecall(dataset, model); + } catch (final Exception e) { + throw new RuntimeException(e); + } + + // Assert that the recall of the second model (weighted samples) is higher + assertThat(recallWeighted) + .as("Weighted model (high weight on fraud) should have higher recall") + .isGreaterThan(recallUnweighted); + } + /** * Ensures feature contributions results by given dataset. * @@ -533,4 +648,31 @@ static ArrayList> getListOfTwoLists() { list.add(new LinkedList<>()); return list; } + + /** + * Computes recall (true positive rate) for the positive class using a 0.5 threshold + * + * @param dataset Dataset with labeled instances. + * @param model Trained model to evaluate. + * @return Recall value. + */ + static double computeRecall(final Dataset dataset, final LightGBMBinaryClassificationModel model) { + final int targetIndex = dataset.getSchema().getTargetIndex().get(); + int truePositives = 0; + int actualPositives = 0; + + final Iterator iterator = dataset.getInstances(); + while (iterator.hasNext()) { + final Instance instance = iterator.next(); + final int actualClass = (int) instance.getValue(targetIndex); + if (actualClass == 1) { + actualPositives++; + final double[] scores = model.getClassDistribution(instance); + if (scores[1] > 0.5) { + truePositives++; + } + } + } + return actualPositives > 0 ? (double) truePositives / actualPositives : 0.0; + } } diff --git a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreatorTest.java b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreatorTest.java index d3a147dd..18fc8110 100644 --- a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreatorTest.java +++ b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/LightGBMModelCreatorTest.java @@ -17,12 +17,17 @@ package com.feedzai.openml.provider.lightgbm; +import com.feedzai.openml.data.Dataset; +import com.feedzai.openml.data.schema.CategoricalValueSchema; import com.feedzai.openml.data.schema.DatasetSchema; import com.feedzai.openml.data.schema.FieldSchema; +import com.feedzai.openml.data.schema.NumericValueSchema; import com.feedzai.openml.data.schema.StringValueSchema; import com.feedzai.openml.provider.descriptor.fieldtype.ParamValidationError; import com.feedzai.openml.provider.exception.ModelLoadingException; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import java.util.Random; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -35,6 +40,7 @@ import java.util.List; import java.util.Map; +import static com.feedzai.openml.provider.lightgbm.LightGBMDescriptorUtil.SAMPLE_WEIGHT_COL_PARAMETER_NAME; import static com.feedzai.openml.provider.lightgbm.LightGBMModelCreator.ERROR_MSG_NON_BINARY_TARGET; import static com.feedzai.openml.provider.lightgbm.LightGBMModelCreator.ERROR_MSG_PREFIX_CANNOT_FIND_MODEL_FILE; import static com.feedzai.openml.provider.lightgbm.LightGBMModelCreator.ERROR_MSG_RANDOM_FOREST_REQUIRES_BAGGING; @@ -332,6 +338,20 @@ public void loadModelFileDoesNotThrowTest() { ).doesNotThrowAnyException(); } + /** + * Assert that loading a model with a schema containing sample weights works. + */ + @Test + public void loadModelFileWithSampleWeightDoesNotThrowTest() { + + assertThatCode(() -> + modelLoader.loadModel( + TestResources.getModelFilePath(), + TestSchemas.NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END + ) + ).doesNotThrowAnyException(); + } + /** * Assert that validate for fir doesn't return errors if inputs are Ok. */ @@ -410,6 +430,90 @@ public void validateForFitNoTargetReturnsErrorsTest() { assertThat(errors.size()).as("error count").isPositive(); } + /** + * Asserts that validateForFit returns an error when the sample weight parameter + * references a column that does not exist in the schema. + */ + @Test + public void validateForFitSampleWeightColumnNotInSchemaReturnsErrorTest() { + final Map params = TestParameters.getDefaultLightGBMParameters(); + params.put(SAMPLE_WEIGHT_COL_PARAMETER_NAME, "__sample_column__"); + + final List errors = modelLoader.validateForFit( + tmpEmptyDir, + TestSchemas.NUMERICALS_SCHEMA_WITH_LABEL_AT_END, + params + ); + + assertThat(errors).as("Should return error for nonexistent sample weight column").hasSize(1); + assertThat(errors.get(0).getMessage()).contains("doesn't exist in the dataset"); + } + + /** + * Assert that validateForFit returns an error when the sample weight parameter + * references a non-numeric column. + */ + @Test + public void validateWeightColumnNonNumericReturnsErrorTest() { + final Map params = TestParameters.getDefaultLightGBMParameters(); + params.put(SAMPLE_WEIGHT_COL_PARAMETER_NAME, "is_fraud_label_indexed"); + + final List errors = modelLoader.validateForFit( + tmpEmptyDir, + TestSchemas.NUMERICALS_SCHEMA_WITH_LABEL_AT_END, + params + ); + + assertThat(errors).as("Should return error for non-numeric sample weight column").hasSize(1); + assertThat(errors.get(0).getMessage()).isEqualTo("Sample weight must be a numeric field!"); + } + + /** + * Tests training a LightGBM model via the LightGBMModelCreator class + * + * @throws URISyntaxException For errors when loading the dataset resource. + * @throws IOException For errors when reading the dataset. + */ + @Test + public void fitWithSampleWeightViaModelCreator() throws URISyntaxException, IOException { + final Map params = TestParameters.getDefaultLightGBMParameters(); + params.put(SAMPLE_WEIGHT_COL_PARAMETER_NAME, "sample_weight_double"); + + final Dataset dataset = CSVUtils.getDatasetWithSchema( + TestResources.getResourcePath(TestResources.INSTANCES_WITH_SAMPLE_WEIGHT_NAME), + TestSchemas.NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END, + 5000 + ); + + LightGBMBinaryClassificationModel model = modelLoader.fit(dataset, new Random(0), params); + assertThat(model.getBoosterNumFeatures()).isEqualTo(4); + } + + /** + * Tests that loading a LightGBM model with an incompatible dataset schema throws an exception. + * + * @throws URISyntaxException For errors when loading the dataset resource. + * @throws ModelLoadingException For errors loading the model + */ + @Test(expected = ModelLoadingException.class) + public void loadModelWithWrongFieldCountThrowsException() throws URISyntaxException, ModelLoadingException { + // Schema with fewer fields than the model expects + final DatasetSchema wrongSchema = new DatasetSchema( + 2, + ImmutableList.of( + new FieldSchema("amount", 0, new NumericValueSchema(false)), + new FieldSchema("num1_float", 1, new NumericValueSchema(false)), + new FieldSchema("is_fraud_label_indexed", 2, + new CategoricalValueSchema(true, ImmutableSet.of("0.0", "1.0"))) + ) + ); + + LightGBMBinaryClassificationModel lightGBMBinaryClassificationModel = modelLoader.loadModel( + TestResources.getModelFilePath(), + wrongSchema + ); + } + /** * Asserts that there are no errors. * diff --git a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/SchemaFieldsUtilTest.java b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/SchemaFieldsUtilTest.java new file mode 100644 index 00000000..988a4766 --- /dev/null +++ b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/SchemaFieldsUtilTest.java @@ -0,0 +1,125 @@ +/* + * The copyright of this file belongs to Feedzai. The file cannot be + * reproduced in whole or in part, stored in a retrieval system, + * transmitted in any form, or by any means electronic, mechanical, + * photocopying, or otherwise, without the prior permission of the owner. + * + * © 2026 Feedzai, Strictly Confidential + */ + +package com.feedzai.openml.provider.lightgbm; + +import com.feedzai.openml.data.schema.CategoricalValueSchema; +import com.feedzai.openml.data.schema.DatasetSchema; +import com.feedzai.openml.data.schema.FieldSchema; +import com.feedzai.openml.data.schema.NumericValueSchema; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import org.junit.Test; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link SchemaFieldsUtil}. + * + * @author Joaquim Leitão (joaquim.leitao@feedzai.com) + */ +public class SchemaFieldsUtilTest { + + /** + * Schema: amount(0), num1(1), label(2), num2(3) + * Target index: 2 + */ + private static final DatasetSchema SCHEMA_LABEL_IN_MIDDLE = new DatasetSchema( + 2, + ImmutableList.of( + new FieldSchema("amount", 0, new NumericValueSchema(false)), + new FieldSchema("num1", 1, new NumericValueSchema(false)), + new FieldSchema("label", 2, new CategoricalValueSchema(true, ImmutableSet.of("0", "1"))), + new FieldSchema("num2", 3, new NumericValueSchema(false)) + ) + ); + + /** + * Tests that {@link SchemaFieldsUtil#getColumnIndex} correctly identifies the index + * of a field that is present in the provided schema. + */ + @Test + public void testGetColumnIndexExistingField() { + final Optional result = SchemaFieldsUtil.getColumnIndex("amount", SCHEMA_LABEL_IN_MIDDLE); + assertThat(result).isPresent().contains(0); + } + + /** + * Tests that {@link SchemaFieldsUtil#getColumnIndex} correctly identifies the index + * of a field that is present in the provided schema, in a case-insensitive manner. + */ + @Test + public void testGetColumnIndexCaseInsensitive() { + final Optional result = SchemaFieldsUtil.getColumnIndex("AMOUNT", SCHEMA_LABEL_IN_MIDDLE); + assertThat(result).isPresent().contains(0); + } + + /** + * Tests that {@link SchemaFieldsUtil#getColumnIndex} returns an empty {@link Optional} + * when the requested field name is not present in the schema. + */ + @Test + public void testGetColumnIndexNotFound() { + final Optional result = SchemaFieldsUtil.getColumnIndex("nonexistent_field", SCHEMA_LABEL_IN_MIDDLE); + assertThat(result).isEmpty(); + } + + /** + * Test that when a field comes before the target column in the schema, + * {@link SchemaFieldsUtil#getColumnIndex} returns its index unchanged + * (LightGBM's internal representation excludes the target column, so + * fields before the target should retain their index unchanged). + */ + @Test + public void testGetFieldIndexWithoutLabelFieldBeforeTarget() { + final Optional result = SchemaFieldsUtil.getFieldIndexWithoutLabel("num1", SCHEMA_LABEL_IN_MIDDLE); + assertThat(result).isPresent().contains(1); + } + + /** + * Test that when a field comes after the target column in the schema, + * {@link SchemaFieldsUtil#getColumnIndex} offsets the field index by -1 + * (LightGBM's internal representation excludes the target column, so + * fields after the target have their index offset by -1). + */ + @Test + public void testGetFieldIndexWithoutLabelFieldAfterTarget() { + final Optional result = SchemaFieldsUtil.getFieldIndexWithoutLabel("num2", SCHEMA_LABEL_IN_MIDDLE); + assertThat(result).isPresent().contains(2); + } + + /** + * Tests that {@link SchemaFieldsUtil#getFieldIndexWithoutLabel} returns + * an empty {@link Optional} when the requested field name is not present + * in the schema. + */ + @Test + public void testGetFieldIndexWithoutLabelNotFound() { + final Optional result = SchemaFieldsUtil.getFieldIndexWithoutLabel("nonexistent", SCHEMA_LABEL_IN_MIDDLE); + assertThat(result).isEmpty(); + } + + /** + * Tests that {@link SchemaFieldsUtil#getFieldIndexWithoutLabel} throws + * a RuntimeException when no target is specified in the schema. + */ + @Test(expected = RuntimeException.class) + public void testGetFieldIndexWithoutLabelNoTarget() { + // Schema without a target index + final DatasetSchema schemaNoTarget = new DatasetSchema( + ImmutableList.of( + new FieldSchema("amount", 0, new NumericValueSchema(false)), + new FieldSchema("num1", 1, new NumericValueSchema(false)) + ) + ); + SchemaFieldsUtil.getFieldIndexWithoutLabel("amount", schemaNoTarget); + } +} diff --git a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestResources.java b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestResources.java index 49d2f533..a547a4ff 100644 --- a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestResources.java +++ b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestResources.java @@ -38,6 +38,22 @@ public class TestResources { */ public static final String SCORED_INSTANCES_NAME = "scored_instances.csv"; + /** + * Name of the resource containing instances with random sample weights, between 0 and 2. + */ + public static final String INSTANCES_WITH_SAMPLE_WEIGHT_NAME = "instances_with_weight.csv"; + + /** + * Name of the resource containing instances with sample weights where fraud instances (class 1) have + * weight 10, and non-fraud instances (class 0) have weight 1. + */ + public static final String INSTANCES_WITH_FRAUD_SAMPLE_WEIGHT_NAME = "instances_with_fraud_weight.csv"; + + /** + * Name of the resource containing instances with negative sample weights. + */ + public static final String INSTANCES_WITH_NEGATIVE_SAMPLE_WEIGHT_NAME = "instances_with_negative_weight.csv"; + /** * Model folder resource name. */ diff --git a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestSchemas.java b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestSchemas.java index 61d9e6b6..cfe71683 100644 --- a/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestSchemas.java +++ b/openml-lightgbm/lightgbm-provider/src/test/java/com/feedzai/openml/provider/lightgbm/TestSchemas.java @@ -102,6 +102,20 @@ public class TestSchemas { .build() ); + /** + * Schema with numerical features, a numeric sample weight column, and binary label at end. + * Fields: amount(0), num1_float(1), num2_double(2), num3_int(3), sample_weight_double(4), + * is_fraud_label_indexed(5). + */ + public static final DatasetSchema NUMERICALS_SCHEMA_WITH_WEIGHT_LABEL_AT_END = new DatasetSchema( + 5, + ImmutableList.builder() + .addAll(NUMERICAL_SCHEMA_FEATURES) + .add(new FieldSchema("sample_weight_double", 4, new NumericValueSchema(false))) + .add(SchemaUtils.getFieldCopyWithIndex(FRAUD_LABEL_INDEXED_FIELD, 5)) + .build() + ); + /** * Test schema with categoricals and label as last field in instance. * diff --git a/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_fraud_weight.csv b/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_fraud_weight.csv new file mode 100644 index 00000000..ffea50e4 --- /dev/null +++ b/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_fraud_weight.csv @@ -0,0 +1,713 @@ +card,amount,event_timestamp,uuid,num1_float,num2_double,num3_int,cat1_string,is_fraud_label_indexed,sample_weight_double +17,567,2018-10-6,1049288,160.4,6025580.7,11819,C,1.0,10.0 +56,38,2018-10-6,1049289,83.4,5283538.7,10565,aaa,0.0,1.0 +7,503,2018-11-5,1049290,757.4,28760094.7,11177,b,0.0,1.0 +15,749,2018-11-22,1049291,319.4,3522113.7,11822,b,0.0,1.0 +87,524,2018-12-3,1049292,815.4,32883183.7,11003,aaa,0.0,1.0 +48,968,2018-10-7,1049293,34.4,3723194.7,11699,b,0.0,1.0 +91,552,2018-11-19,1049294,474.4,12149864.7,11836,aaa,0.0,1.0 +44,902,2018-11-1,1049295,111.4,27091506.7,11830,b,0.0,1.0 +51,26,2018-12-27,1049296,521.4,17449759.7,11991,b,0.0,1.0 +35,24,2018-10-18,1049297,404.4,37359857.7,11554,C,0.0,1.0 +21,582,2018-11-15,1049298,645.4,8400166.7,11341,C,1.0,10.0 +20,128,2018-11-13,1049299,953.4,28996407.7,10890,aaa,0.0,1.0 +54,847,2018-12-18,1049300,18.4,19075072.7,11065,C,0.0,1.0 +54,636,2018-11-8,1049301,546.4,6903447.7,11121,dDd,0.0,1.0 +85,231,2018-10-10,1049302,645.4,19859752.7,10973,aaa,0.0,1.0 +6,691,2018-10-28,1049303,74.4,31026014.7,10388,b,0.0,1.0 +29,311,2018-11-15,1049304,957.4,22808904.7,10299,b,0.0,1.0 +78,805,2018-10-27,1049305,931.4,10358131.7,10907,C,0.0,1.0 +84,882,2018-12-10,1049306,790.4,37998060.7,11038,b,0.0,1.0 +57,579,2018-11-25,1049307,954.4,35367561.7,11540,C,0.0,1.0 +79,544,2018-11-21,1049308,67.4,34387902.7,10280,dDd,0.0,1.0 +92,649,2018-12-13,1049309,295.4,16600833.7,11241,b,0.0,1.0 +46,152,2018-10-3,1049310,692.4,31376892.7,11776,b,0.0,1.0 +37,832,2018-11-25,1049311,77.4,33046809.7,10262,b,0.0,1.0 +79,90,2018-11-1,1049312,897.4,26019875.7,11006,b,0.0,1.0 +36,419,2018-10-3,1049313,848.4,33393435.7,10937,b,0.0,1.0 +99,194,2018-10-28,1049314,389.4,16413028.7,10230,aaa,0.0,1.0 +18,977,2018-11-1,1049315,602.4,36307673.7,11421,dDd,0.0,1.0 +59,643,2018-11-27,1049316,170.4,8919422.7,11490,dDd,0.0,1.0 +39,320,2018-10-24,1049317,530.4,8713834.7,11933,aaa,0.0,1.0 +29,950,2018-11-22,1049318,44.4,11624206.7,10918,dDd,0.0,1.0 +50,359,2018-12-29,1049319,937.4,8182500.7,10396,C,0.0,1.0 +69,961,2018-11-18,1049320,999.4,13074615.7,10372,aaa,0.0,1.0 +17,173,2018-11-18,1049321,527.4,4531587.7,11237,aaa,0.0,1.0 +90,480,2018-12-1,1049322,594.4,19013138.7,10573,dDd,0.0,1.0 +41,528,2018-10-5,1049323,424.4,31516519.7,10731,b,0.0,1.0 +49,641,2018-12-19,1049324,599.4,21868175.7,10771,b,0.0,1.0 +46,672,2018-11-3,1049325,396.4,27860735.7,11473,b,0.0,1.0 +16,552,2018-10-21,1049326,627.4,25320892.7,11056,C,1.0,10.0 +95,613,2018-12-1,1049327,818.4,31341462.7,10873,dDd,0.0,1.0 +75,910,2018-11-14,1049328,644.4,11239364.7,10776,dDd,0.0,1.0 +51,179,2018-12-16,1049329,774.4,29858606.7,11328,dDd,0.0,1.0 +30,477,2018-12-24,1049330,521.4,4150163.7,10661,C,1.0,10.0 +58,266,2018-11-4,1049331,522.4,37458619.7,11806,dDd,0.0,1.0 +49,319,2018-12-29,1049332,707.4,22404561.7,11808,dDd,0.0,1.0 +74,924,2018-12-10,1049333,686.4,16087861.7,11949,aaa,0.0,1.0 +49,673,2018-12-20,1049334,117.4,14259755.7,11403,C,1.0,10.0 +27,642,2018-12-3,1049335,879.4,28985545.7,10193,C,0.0,1.0 +31,702,2018-10-10,1049336,180.4,25185877.7,11748,b,0.0,1.0 +36,101,2018-11-30,1049337,923.4,15362870.7,10519,dDd,0.0,1.0 +26,296,2018-11-1,1049338,843.4,26609141.7,11301,b,0.0,1.0 +3,412,2018-12-22,1049339,354.4,23396197.7,11876,b,0.0,1.0 +26,265,2018-11-12,1049340,961.4,10331127.7,11151,dDd,0.0,1.0 +80,987,2018-12-22,1049341,255.4,18799834.7,11832,dDd,0.0,1.0 +85,50,2018-10-17,1049342,25.4,4539677.7,11563,aaa,0.0,1.0 +63,553,2018-10-25,1049343,447.4,36735570.7,10287,b,0.0,1.0 +61,778,2018-11-26,1049344,362.4,5427283.7,11992,aaa,0.0,1.0 +85,544,2018-11-16,1049345,52.4,4001584.7,10558,aaa,0.0,1.0 +9,138,2018-11-9,1049346,270.4,37231785.7,10929,C,0.0,1.0 +10,616,2018-12-9,1049347,334.4,27942777.7,11806,aaa,0.0,1.0 +42,858,2018-12-23,1049348,158.4,8404215.7,10777,dDd,0.0,1.0 +69,6,2018-11-13,1049349,546.4,15308850.7,11832,dDd,0.0,1.0 +71,456,2018-11-6,1049350,13.4,11477405.7,10776,dDd,0.0,1.0 +69,424,2018-10-17,1049351,877.4,7552889.7,10988,b,0.0,1.0 +91,412,2018-12-1,1049352,142.4,23523400.7,10300,C,1.0,10.0 +41,7,2018-10-8,1049353,764.4,798581.7,11735,dDd,0.0,1.0 +2,656,2018-12-30,1049354,142.4,7892579.7,10920,C,1.0,10.0 +32,174,2018-10-15,1049355,424.4,30096218.7,11920,C,0.0,1.0 +74,102,2018-12-17,1049356,628.4,9966560.7,11969,aaa,0.0,1.0 +39,597,2018-11-28,1049357,174.4,18238744.7,11288,dDd,0.0,1.0 +96,339,2018-12-10,1049358,810.4,332899.7,11519,aaa,0.0,1.0 +85,350,2018-12-12,1049359,954.4,2988438.7,10731,b,0.0,1.0 +93,170,2018-11-12,1049360,916.4,20065446.7,11591,C,0.0,1.0 +39,447,2018-10-6,1049361,146.4,39232857.7,11760,dDd,0.0,1.0 +89,704,2018-10-3,1049362,738.4,13707294.7,10924,C,0.0,1.0 +26,559,2018-10-27,1049363,558.4,23584741.7,11565,dDd,0.0,1.0 +45,459,2018-11-26,1049364,822.4,17639277.7,11100,aaa,0.0,1.0 +6,266,2018-11-12,1049365,953.4,27744001.7,10920,b,0.0,1.0 +95,612,2018-10-18,1049366,592.4,29096246.7,10451,b,0.0,1.0 +18,547,2018-10-4,1049367,251.4,38682762.7,11877,aaa,0.0,1.0 +7,812,2018-11-1,1049368,546.4,38793076.7,10342,b,0.0,1.0 +30,337,2018-10-29,1049369,509.4,38968593.7,10310,dDd,0.0,1.0 +82,645,2018-12-14,1049370,752.4,35080814.7,10726,dDd,0.0,1.0 +5,771,2018-10-7,1049371,451.4,1491396.7,11898,b,0.0,1.0 +30,470,2018-10-2,1049372,867.4,7016700.7,10355,C,0.0,1.0 +97,752,2018-12-12,1049373,652.4,12584033.7,11393,b,0.0,1.0 +35,457,2018-12-4,1049374,4.4,10623678.7,11012,C,1.0,10.0 +48,999,2018-12-12,1049375,181.4,26896719.7,11864,b,0.0,1.0 +63,971,2018-11-16,1049376,300.4,29618446.7,10605,aaa,0.0,1.0 +40,659,2018-11-13,1049377,935.4,35644646.7,10331,aaa,0.0,1.0 +70,524,2018-10-26,1049378,893.4,4015615.7,10365,aaa,0.0,1.0 +80,586,2018-10-10,1049379,834.4,11959317.7,10399,aaa,0.0,1.0 +32,323,2018-12-15,1049380,307.4,28778499.7,10012,aaa,0.0,1.0 +37,99,2018-11-6,1049381,223.4,15410836.7,11786,b,0.0,1.0 +98,751,2018-11-17,1049382,533.4,35268985.7,10634,dDd,0.0,1.0 +89,176,2018-10-25,1049383,323.4,33315743.7,10637,dDd,0.0,1.0 +17,226,2018-12-7,1049384,119.4,26961321.7,10831,C,0.0,1.0 +49,629,2018-12-26,1049385,557.4,2256305.7,10302,b,0.0,1.0 +8,95,2018-10-8,1049386,864.4,23430968.7,11426,aaa,0.0,1.0 +99,397,2018-11-3,1049387,93.4,20621185.7,10267,C,0.0,1.0 +10,309,2018-11-29,1049388,701.4,16742514.7,11911,b,0.0,1.0 +3,866,2018-10-4,1049389,56.4,22865562.7,11820,dDd,0.0,1.0 +65,419,2018-12-10,1049390,656.4,3643620.7,11842,aaa,0.0,1.0 +94,28,2018-10-30,1049391,387.4,37732277.7,11360,b,0.0,1.0 +25,214,2018-12-29,1049392,228.4,8527569.7,11042,dDd,0.0,1.0 +100,753,2018-12-19,1049393,80.4,26252736.7,11731,aaa,0.0,1.0 +25,462,2018-11-27,1049394,712.4,30032785.7,11701,aaa,0.0,1.0 +43,703,2018-10-11,1049395,615.4,32048887.7,11958,C,0.0,1.0 +62,419,2018-12-17,1049396,424.4,7517607.7,10732,aaa,0.0,1.0 +49,96,2018-11-18,1049397,188.4,4148488.7,10887,dDd,0.0,1.0 +0,472,2018-11-23,1049398,839.4,891910.7,10073,dDd,0.0,1.0 +16,364,2018-12-27,1049399,404.4,35638674.7,11463,b,0.0,1.0 +27,489,2018-10-29,1049400,496.4,34884999.7,11699,b,0.0,1.0 +61,676,2018-10-19,1049401,972.4,35040651.7,11796,dDd,0.0,1.0 +25,169,2018-12-3,1049402,573.4,16312929.7,10295,aaa,0.0,1.0 +94,818,2018-10-2,1049403,114.4,15176170.7,11895,dDd,0.0,1.0 +57,674,2018-12-14,1049404,23.4,25085712.7,10857,dDd,0.0,1.0 +37,239,2018-10-21,1049405,692.4,22977705.7,10273,C,0.0,1.0 +29,962,2018-12-9,1049406,653.4,26601831.7,11616,b,0.0,1.0 +43,200,2018-10-24,1049407,973.4,25474351.7,11384,b,0.0,1.0 +0,491,2018-12-10,1049408,174.4,13135459.7,10549,b,0.0,1.0 +5,132,2018-10-17,1049409,666.4,30477808.7,10253,b,0.0,1.0 +43,809,2018-10-10,1049410,775.4,11598450.7,11232,b,0.0,1.0 +99,669,2018-11-10,1049411,21.4,8480195.7,11104,dDd,0.0,1.0 +1,781,2018-10-11,1049412,485.4,4735963.7,11505,C,0.0,1.0 +8,178,2018-11-7,1049413,979.4,34664212.7,11941,C,0.0,1.0 +32,115,2018-12-4,1049414,486.4,19001289.7,10731,C,0.0,1.0 +16,423,2018-12-21,1049415,274.4,16735797.7,11887,dDd,0.0,1.0 +93,735,2018-10-28,1049416,878.4,15996480.7,10525,C,0.0,1.0 +96,95,2018-10-4,1049417,31.4,6696057.7,11861,dDd,0.0,1.0 +59,31,2018-10-27,1049418,723.4,844560.7,10124,aaa,0.0,1.0 +90,330,2018-10-19,1049419,164.4,31217361.7,10675,C,0.0,1.0 +15,168,2018-12-10,1049420,205.4,17969936.7,11753,aaa,0.0,1.0 +30,742,2018-10-13,1049421,542.4,12175267.7,10551,dDd,0.0,1.0 +97,867,2018-10-5,1049422,182.4,18356710.7,10680,C,0.0,1.0 +68,159,2018-11-3,1049423,275.4,31053000.7,11540,dDd,0.0,1.0 +36,711,2018-10-5,1049424,262.4,31535243.7,10447,b,0.0,1.0 +42,481,2018-12-4,1049425,745.4,39197227.7,10699,b,0.0,1.0 +11,661,2018-12-22,1049426,526.4,37307237.7,11889,C,1.0,10.0 +72,380,2018-10-7,1049427,906.4,20607507.7,10642,b,0.0,1.0 +53,103,2018-12-16,1049428,218.4,7616086.7,10258,b,0.0,1.0 +36,402,2018-12-22,1049429,770.4,23259431.7,11350,b,0.0,1.0 +23,990,2018-11-14,1049430,871.4,25274658.7,10442,b,0.0,1.0 +44,301,2018-12-5,1049431,27.4,4670603.7,11472,b,0.0,1.0 +0,513,2018-10-19,1049432,373.4,36532176.7,10186,C,1.0,10.0 +13,415,2018-11-7,1049433,629.4,28633245.7,11822,dDd,0.0,1.0 +5,317,2018-10-25,1049434,649.4,13168783.7,10529,dDd,0.0,1.0 +55,251,2018-11-27,1049435,993.4,22013773.7,10673,C,0.0,1.0 +47,51,2018-12-18,1049436,618.4,3456270.7,11615,dDd,0.0,1.0 +90,877,2018-11-1,1049437,901.4,12666128.7,10633,b,0.0,1.0 +44,626,2018-12-17,1049438,56.4,9089618.7,11024,aaa,0.0,1.0 +41,112,2018-11-2,1049439,238.4,29917321.7,11834,dDd,0.0,1.0 +72,478,2018-10-8,1049440,909.4,14433213.7,10557,dDd,0.0,1.0 +38,306,2018-12-4,1049441,324.4,6569835.7,10620,dDd,0.0,1.0 +51,324,2018-11-9,1049442,665.4,31890909.7,11062,aaa,0.0,1.0 +98,60,2018-10-26,1049443,116.4,23384717.7,11083,dDd,0.0,1.0 +54,641,2018-10-9,1049444,624.4,16638992.7,11697,aaa,0.0,1.0 +76,640,2018-12-13,1049445,689.4,24430247.7,11096,aaa,0.0,1.0 +56,814,2018-11-27,1049446,14.4,37625839.7,11302,aaa,0.0,1.0 +86,533,2018-11-1,1049447,163.4,245131.7,10473,aaa,0.0,1.0 +89,686,2018-11-4,1049448,457.4,15016709.7,11890,b,0.0,1.0 +48,443,2018-10-28,1049449,351.4,7795400.7,11179,dDd,0.0,1.0 +47,618,2018-12-16,1049450,572.4,12519492.7,10666,b,0.0,1.0 +20,403,2018-10-18,1049451,357.4,5029242.7,11981,dDd,0.0,1.0 +62,238,2018-10-20,1049452,235.4,24811206.7,10705,C,0.0,1.0 +45,569,2018-12-27,1049453,953.4,17939174.7,10286,b,0.0,1.0 +5,406,2018-11-19,1049454,468.4,2646862.7,10437,aaa,0.0,1.0 +98,218,2018-12-13,1049455,992.4,19349809.7,10036,C,0.0,1.0 +86,974,2018-10-29,1049456,64.4,36516019.7,10536,C,0.0,1.0 +12,627,2018-11-26,1049457,466.4,3112591.7,11093,aaa,0.0,1.0 +90,600,2018-12-17,1049458,231.4,7624169.7,11984,dDd,0.0,1.0 +59,237,2018-12-12,1049459,600.4,38441315.7,11117,dDd,0.0,1.0 +77,780,2018-12-9,1049460,368.4,24752703.7,11455,aaa,0.0,1.0 +30,39,2018-11-9,1049461,320.4,12058750.7,11233,aaa,0.0,1.0 +78,203,2018-10-27,1049462,593.4,24970811.7,10249,dDd,0.0,1.0 +13,688,2018-10-1,1049463,615.4,29657479.7,11569,dDd,0.0,1.0 +91,78,2018-12-5,1049464,563.4,7204973.7,10594,aaa,0.0,1.0 +31,218,2018-10-17,1049465,558.4,4362915.7,11650,C,0.0,1.0 +5,899,2018-10-27,1049466,845.4,17971788.7,10178,C,0.0,1.0 +53,891,2018-11-12,1049467,274.4,26592075.7,11103,aaa,0.0,1.0 +64,553,2018-12-19,1049468,265.4,1929575.7,11996,b,0.0,1.0 +74,366,2018-12-22,1049469,691.4,2088511.7,10587,C,0.0,1.0 +29,866,2018-11-18,1049470,518.4,20174337.7,10487,aaa,0.0,1.0 +35,608,2018-11-14,1049471,97.4,20662806.7,11331,b,0.0,1.0 +10,122,2018-12-3,1049472,317.4,1510426.7,10537,C,0.0,1.0 +41,71,2018-10-6,1049473,594.4,15039203.7,11600,C,0.0,1.0 +0,670,2018-12-5,1049474,302.4,16543567.7,10827,C,1.0,10.0 +61,828,2018-10-5,1049475,732.4,33239363.7,11160,b,0.0,1.0 +84,99,2018-12-28,1049476,236.4,36293614.7,10722,b,0.0,1.0 +53,834,2018-11-2,1049477,492.4,19458376.7,10444,b,0.0,1.0 +97,213,2018-11-6,1049478,619.4,10047739.7,10001,C,0.0,1.0 +87,582,2018-12-18,1049479,536.4,2498679.7,10247,aaa,0.0,1.0 +94,651,2018-11-23,1049480,889.4,32350240.7,11700,C,0.0,1.0 +42,511,2018-10-19,1049481,773.4,15983466.7,11138,b,0.0,1.0 +90,226,2018-11-22,1049482,883.4,18627824.7,10753,aaa,0.0,1.0 +50,826,2018-11-9,1049483,358.4,15077180.7,10565,b,0.0,1.0 +88,907,2018-10-19,1049484,981.4,39380395.7,11621,aaa,0.0,1.0 +100,456,2018-10-15,1049485,890.4,35427831.7,10527,dDd,0.0,1.0 +71,248,2018-10-27,1049486,126.4,23126790.7,11294,b,0.0,1.0 +99,504,2018-11-25,1049487,176.4,21857401.7,11276,C,1.0,10.0 +54,899,2018-12-1,1049488,645.4,32542900.7,10010,dDd,0.0,1.0 +96,40,2018-11-19,1049489,567.4,25396572.7,11859,C,0.0,1.0 +50,255,2018-10-11,1049490,653.4,12780974.7,10357,aaa,0.0,1.0 +32,259,2018-10-23,1049491,900.4,6830317.7,10587,dDd,0.0,1.0 +31,17,2018-12-25,1049492,805.4,13832927.7,11012,dDd,0.0,1.0 +51,825,2018-11-29,1049493,230.4,37520032.7,11070,aaa,0.0,1.0 +6,495,2018-11-10,1049494,541.4,26678573.7,11640,aaa,0.0,1.0 +81,651,2018-10-23,1049495,300.4,26470328.7,11070,b,0.0,1.0 +4,843,2018-12-17,1049496,834.4,11395154.7,11499,dDd,0.0,1.0 +46,113,2018-11-26,1049497,470.4,9527269.7,11590,b,0.0,1.0 +0,769,2018-12-27,1049498,415.4,31241419.7,10682,aaa,0.0,1.0 +60,17,2018-12-22,1049499,131.4,5933267.7,10919,aaa,0.0,1.0 +61,537,2018-12-5,1049500,868.4,33351755.7,11937,b,0.0,1.0 +9,16,2018-11-26,1049501,462.4,14462691.7,10390,aaa,0.0,1.0 +38,919,2018-10-16,1049502,988.4,19264188.7,11377,aaa,0.0,1.0 +53,630,2018-11-17,1049503,974.4,26744420.7,11110,b,0.0,1.0 +63,25,2018-12-9,1049504,268.4,36783590.7,11586,dDd,0.0,1.0 +16,811,2018-12-22,1049505,472.4,39084976.7,11699,C,0.0,1.0 +43,464,2018-10-27,1049506,747.4,19793308.7,11049,b,0.0,1.0 +37,412,2018-11-27,1049507,42.4,1358285.7,10462,aaa,0.0,1.0 +95,559,2018-11-20,1049508,727.4,20365379.7,11373,b,0.0,1.0 +29,236,2018-11-13,1049509,664.4,26605061.7,11170,b,0.0,1.0 +41,255,2018-11-2,1049510,253.4,28466751.7,11235,C,0.0,1.0 +20,635,2018-12-8,1049511,404.4,17016091.7,10069,b,0.0,1.0 +86,223,2018-10-21,1049512,688.4,34237770.7,10533,b,0.0,1.0 +39,522,2018-10-12,1049513,417.4,15643014.7,10569,b,0.0,1.0 +94,449,2018-11-21,1049514,433.4,6168090.7,11029,aaa,0.0,1.0 +79,638,2018-11-8,1049515,870.4,12464362.7,11903,b,0.0,1.0 +86,162,2018-11-4,1049516,234.4,25425977.7,10968,C,0.0,1.0 +22,324,2018-12-15,1049517,270.4,23999471.7,11926,C,0.0,1.0 +85,557,2018-12-18,1049518,733.4,15451423.7,10691,aaa,0.0,1.0 +89,843,2018-10-3,1049519,114.4,12184849.7,11343,C,0.0,1.0 +78,719,2018-10-5,1049520,238.4,506401.7,11253,aaa,0.0,1.0 +90,375,2018-11-14,1049521,4.4,5266344.7,10727,aaa,0.0,1.0 +77,255,2018-12-26,1049522,666.4,15800484.7,10201,b,0.0,1.0 +97,973,2018-12-24,1049523,724.4,30507970.7,10698,aaa,0.0,1.0 +65,893,2018-11-7,1049524,659.4,30215369.7,10682,C,0.0,1.0 +3,371,2018-11-15,1049525,607.4,3139760.7,10084,C,0.0,1.0 +86,524,2018-10-12,1049526,774.4,15891699.7,10806,dDd,0.0,1.0 +14,0,2018-10-28,1049527,260.4,16023321.7,10953,C,0.0,1.0 +23,554,2018-11-20,1049528,733.4,33462835.7,10493,aaa,0.0,1.0 +40,359,2018-10-28,1049529,469.4,2437866.7,11001,dDd,0.0,1.0 +26,782,2018-12-18,1049530,20.4,7936545.7,11619,b,0.0,1.0 +96,967,2018-10-28,1049531,207.4,37802309.7,11073,dDd,0.0,1.0 +4,13,2018-12-7,1049532,887.4,27264494.7,10737,C,0.0,1.0 +77,855,2018-11-25,1049533,229.4,25635084.7,10797,dDd,0.0,1.0 +0,160,2018-11-11,1049534,162.4,29388904.7,11082,dDd,0.0,1.0 +66,320,2018-10-2,1049535,37.4,35592587.7,10087,C,0.0,1.0 +10,509,2018-11-23,1049536,220.4,22169042.7,11672,b,0.0,1.0 +57,968,2018-10-27,1049537,497.4,29900043.7,10895,C,0.0,1.0 +47,377,2018-11-30,1049538,95.4,17035699.7,11311,C,0.0,1.0 +57,74,2018-10-29,1049539,973.4,31494828.7,10572,dDd,0.0,1.0 +58,559,2018-11-5,1049540,635.4,7420786.7,10017,b,0.0,1.0 +28,34,2018-12-11,1049541,334.4,13379455.7,11015,aaa,0.0,1.0 +38,743,2018-10-20,1049542,391.4,23837989.7,10131,b,0.0,1.0 +83,532,2018-12-18,1049543,832.4,15830137.7,11532,aaa,0.0,1.0 +2,814,2018-10-22,1049544,467.4,26559223.7,10484,C,0.0,1.0 +14,432,2018-12-9,1049545,318.4,37408336.7,11568,b,0.0,1.0 +2,500,2018-10-17,1049546,100.4,8430870.7,11698,aaa,0.0,1.0 +35,362,2018-11-6,1049547,450.4,24589518.7,10519,dDd,0.0,1.0 +15,427,2018-10-17,1049548,517.4,4999325.7,11914,aaa,0.0,1.0 +24,156,2018-12-19,1049549,456.4,39681730.7,10450,dDd,0.0,1.0 +56,434,2018-10-5,1049550,541.4,37773712.7,11090,b,0.0,1.0 +67,712,2018-10-1,1049551,354.4,17495832.7,11596,C,0.0,1.0 +21,536,2018-12-1,1049552,563.4,37445113.7,10293,b,0.0,1.0 +91,936,2018-11-28,1049553,632.4,10719934.7,10689,C,0.0,1.0 +55,689,2018-10-10,1049554,514.4,18151461.7,10965,dDd,0.0,1.0 +36,337,2018-10-25,1049555,881.4,36739079.7,10175,dDd,0.0,1.0 +99,332,2018-10-12,1049556,300.4,29258614.7,11338,b,0.0,1.0 +87,463,2018-10-16,1049557,24.4,18942510.7,10513,dDd,0.0,1.0 +52,88,2018-11-7,1049558,628.4,971485.7,10862,dDd,0.0,1.0 +58,162,2018-12-11,1049559,262.4,6407442.7,11569,C,0.0,1.0 +27,598,2018-11-28,1049560,643.4,29104760.7,11936,aaa,0.0,1.0 +21,112,2018-10-3,1049561,76.4,32042059.7,11926,C,0.0,1.0 +43,859,2018-11-24,1049562,738.4,5694327.7,11718,aaa,0.0,1.0 +96,975,2018-12-5,1049563,424.4,25840502.7,11461,C,0.0,1.0 +62,684,2018-12-5,1049564,679.4,31541667.7,10040,C,1.0,10.0 +65,730,2018-10-19,1049565,694.4,9127884.7,10146,C,0.0,1.0 +7,367,2018-12-20,1049566,861.4,37266786.7,10173,b,0.0,1.0 +80,853,2018-11-15,1049567,425.4,12547948.7,11871,dDd,0.0,1.0 +73,319,2018-11-19,1049568,177.4,29644133.7,11820,C,0.0,1.0 +7,132,2018-10-17,1049569,395.4,37072122.7,11115,aaa,0.0,1.0 +64,145,2018-12-8,1049570,466.4,26805861.7,10503,C,0.0,1.0 +86,943,2018-10-19,1049571,578.4,599195.7,11385,dDd,0.0,1.0 +56,245,2018-10-30,1049572,110.4,7061397.7,11043,C,0.0,1.0 +50,900,2018-11-8,1049573,56.4,26249111.7,11980,dDd,0.0,1.0 +56,819,2018-12-23,1049574,109.4,30989840.7,10145,dDd,0.0,1.0 +55,786,2018-10-4,1049575,579.4,28692037.7,11790,C,0.0,1.0 +85,19,2018-10-19,1049576,522.4,7374515.7,11794,b,0.0,1.0 +28,941,2018-11-27,1049577,846.4,26778909.7,11802,C,0.0,1.0 +45,674,2018-10-26,1049578,875.4,14939610.7,11915,aaa,0.0,1.0 +100,425,2018-11-24,1049579,988.4,36351644.7,11944,C,0.0,1.0 +35,411,2018-12-5,1049580,41.4,27837948.7,11583,b,0.0,1.0 +74,795,2018-10-4,1049581,116.4,12779913.7,10238,C,0.0,1.0 +85,705,2018-12-4,1049582,210.4,12428721.7,10518,C,0.0,1.0 +76,430,2018-12-8,1049583,810.4,35819436.7,11815,b,0.0,1.0 +26,700,2018-10-24,1049584,942.4,20950356.7,10132,b,0.0,1.0 +14,712,2018-11-21,1049585,497.4,13672264.7,10991,b,0.0,1.0 +83,635,2018-10-18,1049586,260.4,10104005.7,11073,C,1.0,10.0 +91,325,2018-11-20,1049587,359.4,4037476.7,11398,C,0.0,1.0 +36,531,2018-12-27,1049588,219.4,27039922.7,10637,aaa,0.0,1.0 +82,263,2018-10-17,1049589,909.4,26087186.7,11663,C,0.0,1.0 +85,545,2018-12-10,1049590,162.4,1375397.7,11090,aaa,0.0,1.0 +48,116,2018-10-7,1049591,505.4,31234848.7,11399,dDd,0.0,1.0 +99,56,2018-12-12,1049592,101.4,11812821.7,10217,b,0.0,1.0 +59,96,2018-11-17,1049593,978.4,14740509.7,10929,dDd,0.0,1.0 +19,574,2018-11-2,1049594,687.4,29212360.7,11613,b,0.0,1.0 +75,80,2018-12-6,1049595,938.4,33129952.7,10648,b,0.0,1.0 +22,607,2018-11-18,1049596,508.4,36055006.7,11185,C,1.0,10.0 +25,37,2018-11-14,1049597,387.4,18986592.7,10883,C,0.0,1.0 +64,598,2018-10-7,1049598,316.4,4121792.7,10350,C,1.0,10.0 +64,560,2018-12-21,1049599,797.4,14348711.7,11077,dDd,0.0,1.0 +45,444,2018-10-1,1049600,804.4,27080873.7,10099,C,0.0,1.0 +61,9,2018-11-12,1049601,385.4,24576148.7,10404,b,0.0,1.0 +22,914,2018-10-10,1049602,657.4,31263293.7,11379,dDd,0.0,1.0 +33,561,2018-11-15,1049603,910.4,37233038.7,11115,dDd,0.0,1.0 +25,986,2018-11-10,1049604,923.4,36135003.7,11375,b,0.0,1.0 +50,769,2018-11-4,1049605,990.4,9494034.7,10167,b,0.0,1.0 +67,554,2018-12-17,1049606,927.4,28523734.7,11694,b,0.0,1.0 +64,704,2018-12-20,1049607,629.4,24745778.7,10735,dDd,0.0,1.0 +10,113,2018-12-20,1049608,425.4,26401363.7,11352,C,0.0,1.0 +62,716,2018-11-23,1049609,576.4,3283958.7,11545,aaa,0.0,1.0 +42,969,2018-10-10,1049610,902.4,30534179.7,10590,b,0.0,1.0 +41,354,2018-11-23,1049611,220.4,35013301.7,10288,aaa,0.0,1.0 +49,928,2018-10-25,1049612,371.4,2759386.7,11062,aaa,0.0,1.0 +53,476,2018-11-15,1049613,544.4,23726385.7,10822,b,0.0,1.0 +23,375,2018-10-30,1049614,509.4,25415534.7,11213,aaa,0.0,1.0 +56,520,2018-12-29,1049615,185.4,24945970.7,10221,b,0.0,1.0 +96,983,2018-11-6,1049616,420.4,845683.7,10980,C,0.0,1.0 +85,14,2018-11-13,1049617,278.4,6397136.7,11194,b,0.0,1.0 +84,259,2018-12-29,1049618,389.4,36714381.7,11499,dDd,0.0,1.0 +48,728,2018-12-9,1049619,299.4,13907476.7,10925,b,0.0,1.0 +54,85,2018-12-7,1049620,95.4,33614476.7,10910,dDd,0.0,1.0 +84,366,2018-10-20,1049621,326.4,38777188.7,10508,aaa,0.0,1.0 +80,889,2018-12-23,1049622,768.4,33975392.7,11101,b,0.0,1.0 +64,734,2018-11-25,1049623,171.4,21955001.7,10569,aaa,0.0,1.0 +44,690,2018-11-7,1049624,403.4,19079824.7,11885,aaa,0.0,1.0 +93,869,2018-10-28,1049625,201.4,11904345.7,10975,aaa,0.0,1.0 +7,888,2018-10-25,1049626,443.4,14073884.7,11716,aaa,0.0,1.0 +84,944,2018-12-14,1049627,457.4,5684496.7,11597,aaa,0.0,1.0 +77,913,2018-12-21,1049628,701.4,29643687.7,11970,dDd,0.0,1.0 +54,892,2018-11-19,1049629,882.4,5505089.7,10969,b,0.0,1.0 +95,473,2018-12-28,1049630,811.4,16460707.7,10951,b,0.0,1.0 +75,833,2018-11-7,1049631,192.4,17636562.7,11575,b,0.0,1.0 +20,209,2018-11-30,1049632,395.4,37296971.7,10780,C,0.0,1.0 +30,517,2018-11-2,1049633,143.4,35049531.7,10386,aaa,0.0,1.0 +57,516,2018-10-10,1049634,903.4,28042668.7,10800,b,0.0,1.0 +12,401,2018-11-27,1049635,151.4,11724322.7,11453,C,1.0,10.0 +3,688,2018-11-21,1049636,422.4,26006899.7,11891,C,1.0,10.0 +57,74,2018-11-18,1049637,511.4,36545314.7,11201,dDd,0.0,1.0 +6,878,2018-12-16,1049638,739.4,35663177.7,10869,aaa,0.0,1.0 +28,179,2018-11-24,1049639,416.4,21462072.7,11346,dDd,0.0,1.0 +89,643,2018-10-9,1049640,502.4,37094367.7,11641,dDd,0.0,1.0 +68,746,2018-11-12,1049641,367.4,20828977.7,11898,C,0.0,1.0 +83,842,2018-10-27,1049642,226.4,36999604.7,11583,C,0.0,1.0 +19,556,2018-12-27,1049643,102.4,30512916.7,11211,dDd,0.0,1.0 +87,9,2018-10-27,1049644,642.4,4720144.7,10369,b,0.0,1.0 +62,116,2018-11-29,1049645,90.4,29831265.7,10700,b,0.0,1.0 +4,168,2018-12-6,1049646,559.4,6261914.7,11750,C,0.0,1.0 +71,2,2018-11-13,1049647,526.4,30863515.7,10897,C,0.0,1.0 +88,926,2018-12-28,1049648,815.4,17353708.7,11403,b,0.0,1.0 +3,46,2018-10-2,1049649,829.4,299797.7,11696,aaa,0.0,1.0 +88,722,2018-12-19,1049650,878.4,16682757.7,10490,aaa,0.0,1.0 +94,894,2018-12-30,1049651,200.4,30204803.7,11182,dDd,0.0,1.0 +3,582,2018-11-25,1049652,48.4,8694012.7,11140,C,1.0,10.0 +97,603,2018-12-4,1049653,612.4,2044256.7,11386,C,1.0,10.0 +97,889,2018-12-8,1049654,198.4,34710801.7,11018,dDd,0.0,1.0 +73,310,2018-12-29,1049655,79.4,23483770.7,11383,dDd,0.0,1.0 +99,782,2018-11-20,1049656,222.4,6575175.7,11215,b,0.0,1.0 +1,98,2018-12-25,1049657,449.4,31928623.7,11206,b,0.0,1.0 +5,692,2018-12-3,1049658,767.4,1265000.7,10910,aaa,0.0,1.0 +44,501,2018-12-28,1049659,677.4,33962220.7,10026,dDd,0.0,1.0 +88,236,2018-10-14,1049660,278.4,19955045.7,11647,aaa,0.0,1.0 +32,507,2018-10-27,1049661,169.4,37561857.7,11131,C,1.0,10.0 +23,74,2018-10-8,1049662,866.4,9868752.7,10126,aaa,0.0,1.0 +26,303,2018-11-8,1049663,623.4,24342629.7,10522,aaa,0.0,1.0 +10,406,2018-12-20,1049664,845.4,34252486.7,10958,b,0.0,1.0 +34,157,2018-10-12,1049665,25.4,10618198.7,10793,C,0.0,1.0 +40,724,2018-12-12,1049666,179.4,39668470.7,11690,aaa,0.0,1.0 +21,603,2018-10-17,1049667,464.4,35038544.7,10709,dDd,0.0,1.0 +65,611,2018-11-13,1049668,726.4,7915660.7,10512,C,0.0,1.0 +66,574,2018-10-24,1049669,871.4,4761966.7,11071,aaa,0.0,1.0 +42,14,2018-11-9,1049670,712.4,1210364.7,11942,C,0.0,1.0 +0,436,2018-11-1,1049671,267.4,12509164.7,10897,C,1.0,10.0 +27,572,2018-12-10,1049672,227.4,39585155.7,11737,b,0.0,1.0 +24,195,2018-11-23,1049673,788.4,39058581.7,10835,C,0.0,1.0 +2,833,2018-12-25,1049674,209.4,14846642.7,11081,aaa,0.0,1.0 +75,635,2018-12-16,1049675,740.4,32442488.7,11327,aaa,0.0,1.0 +67,762,2018-12-21,1049676,956.4,28250631.7,11548,C,0.0,1.0 +9,907,2018-10-22,1049677,236.4,235469.7,11117,C,0.0,1.0 +43,617,2018-11-20,1049678,508.4,12662350.7,11842,C,1.0,10.0 +64,267,2018-11-28,1049679,708.4,8395033.7,10331,dDd,0.0,1.0 +49,380,2018-11-14,1049680,422.4,16453200.7,10676,C,0.0,1.0 +71,740,2018-10-22,1049681,773.4,16391788.7,10967,C,0.0,1.0 +19,556,2018-11-23,1049682,374.4,26851619.7,10927,b,0.0,1.0 +21,436,2018-10-19,1049683,404.4,21754058.7,10710,aaa,0.0,1.0 +71,18,2018-10-3,1049684,560.4,31338947.7,10915,b,0.0,1.0 +26,990,2018-12-30,1049685,374.4,38890594.7,11978,dDd,0.0,1.0 +86,651,2018-10-22,1049686,14.4,8546118.7,10972,dDd,0.0,1.0 +93,270,2018-10-24,1049687,558.4,36775546.7,10923,C,0.0,1.0 +77,33,2018-12-6,1049688,280.4,10691314.7,10716,dDd,0.0,1.0 +61,275,2018-10-13,1049689,10.4,14188820.7,11010,dDd,0.0,1.0 +8,335,2018-12-28,1049690,429.4,11580333.7,10356,C,0.0,1.0 +24,412,2018-10-29,1049691,822.4,22949069.7,10061,aaa,0.0,1.0 +16,462,2018-12-7,1049692,655.4,319376.7,10058,dDd,0.0,1.0 +57,137,2018-10-8,1049693,603.4,21213757.7,10553,b,0.0,1.0 +92,112,2018-12-23,1049694,692.4,36535443.7,10339,b,0.0,1.0 +25,711,2018-10-28,1049695,267.4,38790980.7,11837,dDd,0.0,1.0 +21,160,2018-11-28,1049696,762.4,12698235.7,10442,dDd,0.0,1.0 +27,315,2018-11-1,1049697,377.4,8287556.7,11544,dDd,0.0,1.0 +33,311,2018-11-7,1049698,293.4,25056056.7,11526,dDd,0.0,1.0 +78,566,2018-11-30,1049699,135.4,32273158.7,11722,aaa,0.0,1.0 +42,808,2018-11-3,1049700,22.4,22842214.7,10064,b,0.0,1.0 +6,771,2018-10-24,1049701,823.4,14900821.7,10301,b,0.0,1.0 +13,140,2018-12-11,1049702,873.4,25130170.7,10903,dDd,0.0,1.0 +77,330,2018-12-20,1049703,999.4,27412209.7,10653,aaa,0.0,1.0 +85,566,2018-11-5,1049704,33.4,13338176.7,11110,aaa,0.0,1.0 +90,330,2018-12-10,1049705,87.4,15276449.7,11761,aaa,0.0,1.0 +90,972,2018-10-1,1049706,929.4,5413107.7,11505,b,0.0,1.0 +99,990,2018-11-15,1049707,278.4,20643864.7,10609,b,0.0,1.0 +7,872,2018-11-5,1049708,883.4,485320.7,10244,b,0.0,1.0 +20,79,2018-12-11,1049709,748.4,6829642.7,10167,dDd,0.0,1.0 +1,531,2018-11-26,1049710,762.4,15050865.7,11160,dDd,0.0,1.0 +92,324,2018-10-27,1049711,95.4,4055632.7,10232,b,0.0,1.0 +11,302,2018-10-16,1049712,254.4,20423099.7,11388,aaa,0.0,1.0 +7,299,2018-10-13,1049713,778.4,18975982.7,11908,aaa,0.0,1.0 +86,75,2018-10-17,1049714,898.4,39764088.7,10415,dDd,0.0,1.0 +36,606,2018-11-15,1049715,205.4,39293799.7,10471,C,1.0,10.0 +19,86,2018-10-26,1049716,222.4,39066597.7,11910,b,0.0,1.0 +44,482,2018-10-27,1049717,730.4,17717496.7,11497,dDd,0.0,1.0 +34,980,2018-11-30,1049718,722.4,37922202.7,10626,aaa,0.0,1.0 +94,38,2018-12-20,1049719,278.4,36396997.7,11718,aaa,0.0,1.0 +3,717,2018-10-24,1049720,27.4,5076374.7,10130,dDd,0.0,1.0 +27,524,2018-10-5,1049721,454.4,32626467.7,10524,b,0.0,1.0 +41,170,2018-12-15,1049722,17.4,1021409.7,11619,C,0.0,1.0 +50,997,2018-10-11,1049723,469.4,18180702.7,10240,b,0.0,1.0 +19,597,2018-12-21,1049724,334.4,8088207.7,11586,aaa,0.0,1.0 +50,698,2018-10-7,1049725,823.4,6586905.7,10021,dDd,0.0,1.0 +12,180,2018-11-16,1049726,519.4,26622483.7,10690,aaa,0.0,1.0 +40,807,2018-12-22,1049727,854.4,31130704.7,10531,aaa,0.0,1.0 +67,883,2018-11-13,1049728,859.4,6689719.7,11353,C,0.0,1.0 +34,697,2018-11-26,1049729,560.4,13239267.7,10098,aaa,0.0,1.0 +43,828,2018-10-12,1049730,122.4,37434413.7,11053,b,0.0,1.0 +69,827,2018-11-25,1049731,188.4,15954819.7,10664,b,0.0,1.0 +70,202,2018-10-7,1049732,897.4,39168156.7,11695,dDd,0.0,1.0 +42,345,2018-11-6,1049733,687.4,37172397.7,11850,aaa,0.0,1.0 +52,340,2018-11-19,1049734,607.4,12452469.7,10400,aaa,0.0,1.0 +79,154,2018-11-1,1049735,902.4,30571073.7,10465,aaa,0.0,1.0 +79,986,2018-11-21,1049736,433.4,23237013.7,11223,C,0.0,1.0 +100,205,2018-11-22,1049737,663.4,18137333.7,11608,dDd,0.0,1.0 +83,743,2018-11-19,1049738,473.4,38373326.7,11178,C,0.0,1.0 +21,924,2018-11-11,1049739,828.4,20999639.7,10329,aaa,0.0,1.0 +39,351,2018-12-23,1049740,722.4,27348575.7,11973,aaa,0.0,1.0 +23,469,2018-12-6,1049741,584.4,36098347.7,11565,C,1.0,10.0 +17,806,2018-11-14,1049742,144.4,39470364.7,11295,dDd,0.0,1.0 +59,553,2018-12-20,1049743,125.4,14942710.7,10749,C,1.0,10.0 +46,514,2018-10-17,1049744,854.4,1437819.7,11805,b,0.0,1.0 +74,186,2018-10-25,1049745,550.4,33319018.7,11637,aaa,0.0,1.0 +55,512,2018-10-7,1049746,824.4,39320021.7,10001,dDd,0.0,1.0 +45,694,2018-12-22,1049747,393.4,13460948.7,10383,dDd,0.0,1.0 +18,248,2018-12-23,1049748,504.4,23629364.7,11813,C,0.0,1.0 +80,639,2018-11-25,1049749,346.4,31830108.7,10252,dDd,0.0,1.0 +98,905,2018-10-10,1049750,129.4,7085030.7,11476,C,0.0,1.0 +68,67,2018-10-11,1049751,641.4,20329898.7,11627,b,0.0,1.0 +40,971,2018-12-20,1049752,511.4,37255249.7,11723,aaa,0.0,1.0 +80,717,2018-12-1,1049753,692.4,2065939.7,10429,dDd,0.0,1.0 +32,37,2018-11-2,1049754,191.4,32184525.7,11252,b,0.0,1.0 +51,259,2018-12-8,1049755,567.4,5928686.7,10250,dDd,0.0,1.0 +14,254,2018-10-28,1049756,38.4,15403241.7,10706,b,0.0,1.0 +49,7,2018-11-2,1049757,752.4,24710634.7,11417,aaa,0.0,1.0 +39,392,2018-10-12,1049758,64.4,34967252.7,11335,aaa,0.0,1.0 +100,466,2018-10-23,1049759,953.4,24848538.7,11386,aaa,0.0,1.0 +73,433,2018-10-21,1049760,929.4,4764149.7,11170,aaa,0.0,1.0 +9,393,2018-11-12,1049761,656.4,38569613.7,10332,dDd,0.0,1.0 +46,363,2018-10-24,1049762,90.4,33965748.7,10023,dDd,0.0,1.0 +69,439,2018-12-28,1049763,984.4,9852930.7,10377,C,0.0,1.0 +54,390,2018-10-29,1049764,952.4,13031463.7,10182,aaa,0.0,1.0 +46,300,2018-10-1,1049765,259.4,26505540.7,10530,aaa,0.0,1.0 +11,101,2018-11-2,1049766,133.4,6016198.7,10071,b,0.0,1.0 +39,477,2018-11-19,1049767,948.4,19515888.7,10907,C,0.0,1.0 +85,776,2018-11-6,1049768,69.4,26961242.7,10260,dDd,0.0,1.0 +68,926,2018-10-5,1049769,792.4,23638589.7,10129,dDd,0.0,1.0 +70,1,2018-12-7,1049770,870.4,28429581.7,11219,dDd,0.0,1.0 +22,464,2018-12-17,1049771,38.4,31189827.7,10387,b,0.0,1.0 +19,948,2018-12-22,1049772,972.4,9858477.7,10300,C,0.0,1.0 +1,487,2018-11-13,1049773,185.4,25188993.7,10025,C,1.0,10.0 +92,47,2018-10-29,1049774,790.4,35565244.7,11953,aaa,0.0,1.0 +40,403,2018-10-20,1049775,901.4,25294272.7,11145,aaa,0.0,1.0 +71,710,2018-12-16,1049776,520.4,13493521.7,10570,aaa,0.0,1.0 +2,764,2018-10-13,1049777,628.4,36373613.7,10535,aaa,0.0,1.0 +45,957,2018-12-13,1049778,297.4,33646111.7,11478,aaa,0.0,1.0 +5,876,2018-10-2,1049779,820.4,31364483.7,10763,aaa,0.0,1.0 +71,634,2018-12-22,1049780,675.4,22519001.7,11517,dDd,0.0,1.0 +85,868,2018-10-28,1049781,351.4,3228285.7,11618,b,0.0,1.0 +10,712,2018-11-4,1049782,851.4,36031178.7,11851,dDd,0.0,1.0 +55,765,2018-12-29,1049783,461.4,16590798.7,10517,C,0.0,1.0 +34,837,2018-12-29,1049784,22.4,11315908.7,10801,C,0.0,1.0 +15,547,2018-10-19,1049785,962.4,1777890.7,10558,C,0.0,1.0 +34,370,2018-11-26,1049786,525.4,691876.7,10146,C,0.0,1.0 +11,517,2018-11-17,1049787,275.4,1601811.7,11607,C,1.0,10.0 +40,388,2018-11-15,1049788,632.4,6987671.7,10512,C,0.0,1.0 +76,518,2018-10-14,1049789,298.4,1886372.7,11327,C,1.0,10.0 +53,267,2018-10-21,1049790,432.4,8351594.7,11274,b,0.0,1.0 +74,322,2018-12-4,1049791,294.4,32866557.7,10347,dDd,0.0,1.0 +89,145,2018-11-30,1049792,795.4,30815308.7,10017,aaa,0.0,1.0 +89,282,2018-12-12,1049793,296.4,33327072.7,11073,aaa,0.0,1.0 +94,111,2018-11-12,1049794,406.4,8200874.7,11328,b,0.0,1.0 +45,973,2018-10-28,1049795,938.4,4373504.7,10921,dDd,0.0,1.0 +40,370,2018-11-17,1049796,186.4,31190901.7,10018,b,0.0,1.0 +12,963,2018-12-4,1049797,391.4,32614914.7,10312,aaa,0.0,1.0 +2,356,2018-10-26,1049798,536.4,34946832.7,11591,aaa,0.0,1.0 +73,26,2018-11-22,1049799,120.4,24211015.7,11864,C,0.0,1.0 +69,329,2018-12-26,1049800,707.4,10827844.7,10774,aaa,0.0,1.0 +88,168,2018-10-28,1049801,740.4,20308442.7,10267,b,0.0,1.0 +52,412,2018-12-13,1049802,161.4,7679505.7,11993,C,1.0,10.0 +27,378,2018-11-26,1049803,274.4,14635592.7,11045,C,0.0,1.0 +66,513,2018-11-10,1049804,45.4,33848364.7,10433,aaa,0.0,1.0 +86,46,2018-10-3,1049805,601.4,37147806.7,11546,aaa,0.0,1.0 +73,93,2018-10-2,1049806,458.4,3232966.7,11178,b,0.0,1.0 +31,1,2018-12-11,1049807,840.4,34640553.7,10811,aaa,0.0,1.0 +92,25,2018-11-15,1049808,281.4,18054196.7,10437,C,0.0,1.0 +36,687,2018-12-10,1049809,405.4,37648967.7,10151,C,1.0,10.0 +18,201,2018-11-7,1049810,345.4,35205745.7,11874,C,0.0,1.0 +70,869,2018-11-9,1049811,958.4,36749445.7,11328,aaa,0.0,1.0 +93,328,2018-10-20,1049812,92.4,31913310.7,11988,aaa,0.0,1.0 +40,860,2018-10-13,1049813,58.4,17236021.7,10611,aaa,0.0,1.0 +25,486,2018-12-8,1049814,711.4,11060297.7,11890,b,0.0,1.0 +4,122,2018-10-30,1049815,101.4,12309948.7,10473,dDd,0.0,1.0 +74,951,2018-11-18,1049816,694.4,13080141.7,11056,dDd,0.0,1.0 +35,192,2018-11-24,1049817,542.4,27092275.7,11047,C,0.0,1.0 +32,813,2018-10-24,1049818,98.4,23284294.7,11053,dDd,0.0,1.0 +10,439,2018-12-11,1049819,698.4,35131275.7,11417,aaa,0.0,1.0 +46,942,2018-11-11,1049820,682.4,17169217.7,11462,C,0.0,1.0 +28,510,2018-12-17,1049821,913.4,7773846.7,11374,b,0.0,1.0 +18,9,2018-10-13,1049822,749.4,3221448.7,10969,C,0.0,1.0 +14,370,2018-11-15,1049823,632.4,33027359.7,11040,C,0.0,1.0 +1,146,2018-10-11,1049824,825.4,18266569.7,11348,dDd,0.0,1.0 +37,570,2018-10-22,1049825,350.4,26198681.7,10306,b,0.0,1.0 +1,693,2018-11-21,1049826,416.4,21474656.7,10724,dDd,0.0,1.0 +26,612,2018-10-28,1049827,653.4,6633836.7,11286,aaa,0.0,1.0 +64,76,2018-11-15,1049828,930.4,28304092.7,11043,C,0.0,1.0 +0,334,2018-12-18,1049829,635.4,33185217.7,10839,dDd,0.0,1.0 +73,880,2018-10-10,1049830,557.4,32708628.7,11518,dDd,0.0,1.0 +26,784,2018-10-10,1049831,37.4,1604211.7,10581,dDd,0.0,1.0 +47,460,2018-12-11,1049832,531.4,21688779.7,11279,dDd,0.0,1.0 +21,158,2018-12-6,1049833,864.4,27389165.7,10910,C,0.0,1.0 +8,418,2018-11-12,1049834,844.4,39506657.7,10387,b,0.0,1.0 +85,94,2018-12-8,1049835,490.4,10371939.7,10112,aaa,0.0,1.0 +100,998,2018-10-16,1049836,82.4,38817885.7,10587,aaa,0.0,1.0 +84,652,2018-12-8,1049837,310.4,35449720.7,11583,C,1.0,10.0 +63,490,2018-10-9,1049838,298.4,7459300.7,11528,aaa,0.0,1.0 +61,197,2018-11-17,1049839,602.4,28288048.7,11411,C,0.0,1.0 +72,584,2018-11-28,1049840,286.4,38526274.7,10056,C,1.0,10.0 +4,64,2018-11-27,1049841,486.4,20371487.7,10993,C,0.0,1.0 +82,636,2018-11-18,1049842,42.4,8262923.7,11382,aaa,0.0,1.0 +94,780,2018-12-3,1049843,734.4,22414368.7,10909,aaa,0.0,1.0 +100,391,2018-12-2,1049844,171.4,13329799.7,10217,C,0.0,1.0 +27,678,2018-11-7,1049845,234.4,6742778.7,11691,b,0.0,1.0 +38,858,2018-12-2,1049846,857.4,8130573.7,10951,b,0.0,1.0 +18,710,2018-10-13,1049847,748.4,14666580.7,10021,dDd,0.0,1.0 +78,666,2018-12-4,1049848,25.4,12639838.7,11980,aaa,0.0,1.0 +3,995,2018-11-30,1049849,205.4,6788832.7,10495,b,0.0,1.0 +13,703,2018-12-17,1049850,763.4,15166712.7,11989,b,0.0,1.0 +36,240,2018-11-28,1049851,872.4,24234390.7,11536,C,0.0,1.0 +14,769,2018-11-30,1049852,386.4,23029611.7,11523,dDd,0.0,1.0 +78,375,2018-12-15,1049853,838.4,6127787.7,10775,dDd,0.0,1.0 +74,517,2018-11-4,1049854,549.4,37305421.7,11889,b,0.0,1.0 +9,562,2018-10-6,1049855,741.4,24516025.7,10177,b,0.0,1.0 +80,913,2018-12-24,1049856,691.4,19680284.7,10650,dDd,0.0,1.0 +81,983,2018-12-10,1049857,721.4,2128860.7,11592,aaa,0.0,1.0 +92,187,2018-10-6,1049858,238.4,15355527.7,10874,b,0.0,1.0 +39,528,2018-11-1,1049859,521.4,19614508.7,11862,dDd,0.0,1.0 +4,248,2018-10-27,1049860,712.4,2948571.7,10185,b,0.0,1.0 +52,814,2018-12-17,1049861,533.4,10370209.7,10628,aaa,0.0,1.0 +69,71,2018-11-29,1049862,827.4,1967276.7,11687,C,0.0,1.0 +80,839,2018-11-29,1049863,895.4,19543265.7,10240,b,0.0,1.0 +13,751,2018-12-11,1049864,226.4,30711711.7,11698,C,0.0,1.0 +12,719,2018-12-22,1049865,132.4,17693003.7,11851,aaa,0.0,1.0 +31,381,2018-12-29,1049866,320.4,26797551.7,10469,dDd,0.0,1.0 +73,840,2018-10-4,1049867,656.4,29796637.7,10551,aaa,0.0,1.0 +27,277,2018-11-12,1049868,311.4,21257189.7,11800,dDd,0.0,1.0 +58,815,2018-11-18,1049869,16.4,30803479.7,10377,dDd,0.0,1.0 +91,143,2018-11-26,1049870,703.4,31406570.7,11850,C,0.0,1.0 +49,661,2018-10-8,1049871,591.4,33010542.7,10540,aaa,0.0,1.0 +14,361,2018-10-2,1049872,73.4,28461783.7,11872,b,0.0,1.0 +29,204,2018-11-26,1049873,457.4,28098559.7,10133,b,0.0,1.0 +9,630,2018-11-1,1049874,429.4,6462374.7,10844,b,0.0,1.0 +45,398,2018-11-6,1049875,809.4,30342380.7,10062,C,0.0,1.0 +86,615,2018-11-24,1049876,173.4,31671458.7,10306,C,1.0,10.0 +66,255,2018-12-18,1049877,128.4,38939877.7,10097,b,0.0,1.0 +3,221,2018-11-8,1049878,316.4,21291487.7,11579,aaa,0.0,1.0 +29,88,2018-11-1,1049879,438.4,10490925.7,11576,dDd,0.0,1.0 +70,663,2018-10-12,1049880,909.4,33995754.7,11091,C,0.0,1.0 +33,768,2018-12-13,1049881,179.4,10985173.7,11987,dDd,0.0,1.0 +50,311,2018-12-3,1049882,271.4,32421950.7,10134,dDd,0.0,1.0 +74,824,2018-10-26,1049883,206.4,9480962.7,11111,C,0.0,1.0 +98,708,2018-11-12,1049884,161.4,35661061.7,10413,dDd,0.0,1.0 +62,127,2018-12-12,1049885,337.4,25711928.7,10323,C,0.0,1.0 +43,536,2018-11-10,1049886,254.4,5257207.7,10330,aaa,0.0,1.0 +0,857,2018-10-30,1049887,873.4,18826077.7,11146,b,0.0,1.0 +43,942,2018-11-12,1049888,580.4,34823143.7,11875,aaa,0.0,1.0 +35,48,2018-10-23,1049889,593.4,5734100.7,10859,b,0.0,1.0 +98,997,2018-11-12,1049890,709.4,2322233.7,11118,dDd,0.0,1.0 +33,798,2018-10-29,1049891,198.4,27067323.7,11083,dDd,0.0,1.0 +86,654,2018-10-21,1049892,748.4,29489548.7,10972,dDd,0.0,1.0 +69,493,2018-12-19,1049893,456.4,29521195.7,11443,dDd,0.0,1.0 +80,117,2018-11-11,1049894,507.4,5317629.7,10924,b,0.0,1.0 +12,642,2018-12-7,1049895,18.4,7908923.7,11035,dDd,0.0,1.0 +81,210,2018-11-1,1049896,246.4,17015865.7,10017,aaa,0.0,1.0 +50,152,2018-10-20,1049897,887.4,35156849.7,10176,aaa,0.0,1.0 +51,34,2018-10-2,1049898,301.4,2341632.7,11202,dDd,0.0,1.0 +79,355,2018-11-13,1049899,666.4,12479913.7,11696,dDd,0.0,1.0 +66,886,2018-12-12,1049900,94.4,26957298.7,10042,dDd,0.0,1.0 +23,179,2018-11-9,1049901,816.4,39461570.7,10335,dDd,0.0,1.0 +19,239,2018-11-17,1049902,257.4,3168625.7,10353,C,0.0,1.0 +13,122,2018-12-19,1049903,354.4,26222450.7,10147,b,0.0,1.0 +34,917,2018-12-11,1049904,723.4,9419580.7,11838,b,0.0,1.0 +45,557,2018-11-4,1049905,923.4,39663552.7,11267,b,0.0,1.0 +21,702,2018-10-18,1049906,651.4,38949276.7,10564,aaa,0.0,1.0 +96,503,2018-11-2,1049907,129.4,3446627.7,10371,aaa,0.0,1.0 +99,929,2018-11-14,1049908,703.4,28339635.7,11689,aaa,0.0,1.0 +57,34,2018-11-23,1049909,934.4,35614330.7,10109,aaa,0.0,1.0 +87,852,2018-11-2,1049910,316.4,22974034.7,11243,b,0.0,1.0 +83,170,2018-11-16,1049911,70.4,16942877.7,11128,C,0.0,1.0 +7,491,2018-12-10,1049912,264.4,27489350.7,11357,dDd,0.0,1.0 +100,92,2018-10-12,1049913,939.4,14858263.7,10648,C,0.0,1.0 +23,907,2018-10-20,1049914,763.4,2186573.7,10771,b,0.0,1.0 +62,474,2018-12-18,1049915,912.4,37763744.7,11153,aaa,0.0,1.0 +90,473,2018-10-6,1049916,16.4,21002603.7,11750,b,0.0,1.0 +96,582,2018-11-19,1049917,143.4,14865801.7,10067,dDd,0.0,1.0 +34,520,2018-10-12,1049918,87.4,18027844.7,10547,C,1.0,10.0 +21,641,2018-11-14,1049919,698.4,2027518.7,11282,b,0.0,1.0 +33,615,2018-12-30,1049920,354.4,15049499.7,10367,dDd,0.0,1.0 +9,494,2018-11-6,1049921,582.4,34932543.7,10185,aaa,0.0,1.0 +11,898,2018-10-9,1049922,950.4,10750329.7,11883,b,0.0,1.0 +19,74,2018-10-4,1049923,973.4,19654119.7,11162,aaa,0.0,1.0 +50,999,2018-10-22,1049924,267.4,38897187.7,10929,aaa,0.0,1.0 +40,567,2018-11-18,1049925,78.4,25973217.7,10610,C,1.0,10.0 +80,385,2018-12-18,1049926,119.4,9922474.7,11733,b,0.0,1.0 +16,485,2018-10-15,1049927,765.4,25854515.7,10110,dDd,0.0,1.0 +32,735,2018-11-2,1049928,897.4,12113517.7,11022,dDd,0.0,1.0 +96,146,2018-10-7,1049929,511.4,9173018.7,10095,aaa,0.0,1.0 +45,140,2018-10-29,1049930,596.4,27586529.7,11235,b,0.0,1.0 +28,777,2018-10-29,1049931,212.4,17260845.7,10879,dDd,0.0,1.0 +15,699,2018-11-22,1049932,553.4,27308084.7,11714,aaa,0.0,1.0 +10,348,2018-12-9,1049933,622.4,22745320.7,10102,C,0.0,1.0 +53,65,2018-11-27,1049934,504.4,11399239.7,10019,dDd,0.0,1.0 +8,437,2018-11-29,1049935,474.4,37233935.7,10285,C,1.0,10.0 +54,705,2018-12-11,1049936,226.4,6331758.7,10857,aaa,0.0,1.0 +92,999,2018-12-7,1049937,365.4,32144246.7,10785,b,0.0,1.0 +59,468,2018-11-16,1049938,470.4,37056211.7,11237,C,1.0,10.0 +3,436,2018-11-15,1049939,170.4,18257815.7,11216,C,1.0,10.0 +52,160,2018-12-24,1049940,471.4,31498441.7,10550,dDd,0.0,1.0 +12,643,2018-10-17,1049941,679.4,21858927.7,11262,C,1.0,10.0 +8,66,2018-11-13,1049942,797.4,7757464.7,10028,b,0.0,1.0 +79,146,2018-12-24,1049943,684.4,21052481.7,10053,b,0.0,1.0 +10,848,2018-10-26,1049944,464.4,26449872.7,11994,b,0.0,1.0 +89,946,2018-10-8,1049945,426.4,5384283.7,11797,dDd,0.0,1.0 +8,487,2018-12-10,1049946,386.4,4485378.7,11809,b,0.0,1.0 +41,676,2018-10-17,1049947,818.4,4511628.7,10908,b,0.0,1.0 +79,923,2018-10-24,1049948,685.4,26053284.7,11680,C,0.0,1.0 +25,937,2018-12-26,1049949,167.4,30144346.7,11544,dDd,0.0,1.0 +94,275,2018-11-14,1049950,588.4,33183432.7,10521,aaa,0.0,1.0 +15,902,2018-11-30,1049951,726.4,24027515.7,10029,C,0.0,1.0 +27,786,2018-12-17,1049952,266.4,33644391.7,11835,aaa,0.0,1.0 +50,241,2018-11-2,1049953,744.4,18473514.7,11900,C,0.0,1.0 +45,243,2018-12-20,1049954,367.4,9426050.7,11261,b,0.0,1.0 +17,969,2018-10-21,1049955,333.4,31721222.7,10802,dDd,0.0,1.0 +60,441,2018-10-7,1049956,239.4,19940361.7,11246,aaa,0.0,1.0 +92,929,2018-12-10,1049957,105.4,7633714.7,10010,b,0.0,1.0 +75,287,2018-11-16,1049958,154.4,37197926.7,10973,aaa,0.0,1.0 +28,64,2018-10-8,1049959,276.4,30681125.7,11710,aaa,0.0,1.0 +87,424,2018-12-7,1049960,387.4,13636919.7,10421,b,0.0,1.0 +34,706,2018-10-18,1049961,407.4,16752267.7,10628,aaa,0.0,1.0 +34,138,2018-12-12,1049962,303.4,26785575.7,10033,dDd,0.0,1.0 +73,390,2018-12-19,1049963,759.4,35804356.7,11553,C,0.0,1.0 +81,301,2018-12-20,1049964,475.4,17992492.7,10386,dDd,0.0,1.0 +47,475,2018-11-13,1049965,509.4,32738223.7,11615,aaa,0.0,1.0 +35,374,2018-12-15,1049966,772.4,37608793.7,10685,aaa,0.0,1.0 +94,432,2018-12-18,1049967,245.4,10902153.7,10953,b,0.0,1.0 +30,490,2018-12-20,1049968,820.4,28768015.7,10659,aaa,0.0,1.0 +75,179,2018-10-23,1049969,786.4,32880228.7,10925,b,0.0,1.0 +11,95,2018-10-30,1049970,104.4,18661024.7,10493,b,0.0,1.0 +12,135,2018-11-2,1049971,249.4,5877149.7,10604,dDd,0.0,1.0 +12,520,2018-10-28,1049972,302.4,24648459.7,10880,C,1.0,10.0 +36,375,2018-11-18,1049973,387.4,21618787.7,10230,C,0.0,1.0 +60,312,2018-10-24,1049974,164.4,17482396.7,11588,C,0.0,1.0 +91,682,2018-11-29,1049975,408.4,26458193.7,11048,aaa,0.0,1.0 +45,914,2018-10-6,1049976,739.4,39562790.7,11103,dDd,0.0,1.0 +10,744,2018-11-1,1049977,965.4,11342856.7,11815,aaa,0.0,1.0 +18,565,2018-10-3,1049978,650.4,32226926.7,11929,aaa,0.0,1.0 +85,337,2018-11-2,1049979,475.4,581517.7,11990,dDd,0.0,1.0 +3,895,2018-12-16,1049980,156.4,5035395.7,10918,aaa,0.0,1.0 +40,153,2018-11-1,1049981,948.4,38389740.7,11644,dDd,0.0,1.0 +12,409,2018-10-14,1049982,236.4,35471562.7,10483,dDd,0.0,1.0 +76,796,2018-12-2,1049983,301.4,5066702.7,10574,dDd,0.0,1.0 +86,706,2018-10-4,1049984,665.4,6170065.7,10293,b,0.0,1.0 +63,919,2018-12-26,1049985,891.4,724333.7,10051,dDd,0.0,1.0 +19,663,2018-10-28,1049986,775.4,12063732.7,11996,dDd,0.0,1.0 +96,541,2018-10-26,1049987,78.4,35719826.7,11675,C,1.0,10.0 +59,503,2018-10-9,1049988,111.4,2853594.7,11103,b,0.0,1.0 +23,299,2018-10-4,1049989,25.4,17413830.7,11792,dDd,0.0,1.0 +11,611,2018-11-25,1049990,383.4,5327693.7,11810,b,0.0,1.0 +70,226,2018-11-7,1049991,577.4,23854000.7,10903,aaa,0.0,1.0 +31,137,2018-10-13,1049992,816.4,30840207.7,11949,aaa,0.0,1.0 +77,492,2018-11-25,1049993,375.4,11017846.7,11617,aaa,0.0,1.0 +74,672,2018-12-16,1049994,997.4,29622187.7,11782,aaa,0.0,1.0 +92,469,2018-11-26,1049995,25.4,12345168.7,10268,dDd,0.0,1.0 +15,728,2018-10-21,1049996,474.4,25623075.7,11489,aaa,0.0,1.0 +6,831,2018-10-3,1049997,320.4,34930523.7,10284,dDd,0.0,1.0 +666,831,2018-12-22,1049998,582.4,16144459.7,11133,b,0.0,1.0 +666,527,2018-10-14,1049999,727.4,31138011.7,10805,aaa,0.0,1.0 diff --git a/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_negative_weight.csv b/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_negative_weight.csv new file mode 100644 index 00000000..3b6fca95 --- /dev/null +++ b/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_negative_weight.csv @@ -0,0 +1,713 @@ +card,amount,event_timestamp,uuid,num1_float,num2_double,num3_int,cat1_string,is_fraud_label_indexed,sample_weight_double +17,567,2018-10-6,1049288,160.4,6025580.7,11819,C,1.0,0.0669 +56,38,2018-10-6,1049289,83.4,5283538.7,10565,aaa,0.0,0.6599 +7,503,2018-11-5,1049290,757.4,28760094.7,11177,b,0.0,-0.5 +15,749,2018-11-22,1049291,319.4,3522113.7,11822,b,0.0,0.8450 +87,524,2018-12-3,1049292,815.4,32883183.7,11003,aaa,0.0,0.4125 +48,968,2018-10-7,1049293,34.4,3723194.7,11699,b,0.0,-0.5 +91,552,2018-11-19,1049294,474.4,12149864.7,11836,aaa,0.0,1.2731 +44,902,2018-11-1,1049295,111.4,27091506.7,11830,b,0.0,1.7272 +51,26,2018-12-27,1049296,521.4,17449759.7,11991,b,0.0,-0.5 +35,24,2018-10-18,1049297,404.4,37359857.7,11554,C,0.0,0.0498 +21,582,2018-11-15,1049298,645.4,8400166.7,11341,C,1.0,0.7300 +20,128,2018-11-13,1049299,953.4,28996407.7,10890,aaa,0.0,-0.5 +54,847,2018-12-18,1049300,18.4,19075072.7,11065,C,0.0,0.6357 +54,636,2018-11-8,1049301,546.4,6903447.7,11121,dDd,0.0,0.2715 +85,231,2018-10-10,1049302,645.4,19859752.7,10973,aaa,0.0,-0.5 +6,691,2018-10-28,1049303,74.4,31026014.7,10388,b,0.0,1.5213 +29,311,2018-11-15,1049304,957.4,22808904.7,10299,b,0.0,0.1633 +78,805,2018-10-27,1049305,931.4,10358131.7,10907,C,0.0,-0.5 +84,882,2018-12-10,1049306,790.4,37998060.7,11038,b,0.0,1.1293 +57,579,2018-11-25,1049307,954.4,35367561.7,11540,C,0.0,1.4865 +79,544,2018-11-21,1049308,67.4,34387902.7,10280,dDd,0.0,-0.5 +92,649,2018-12-13,1049309,295.4,16600833.7,11241,b,0.0,0.4377 +46,152,2018-10-3,1049310,692.4,31376892.7,11776,b,0.0,0.9088 +37,832,2018-11-25,1049311,77.4,33046809.7,10262,b,0.0,-0.5 +79,90,2018-11-1,1049312,897.4,26019875.7,11006,b,0.0,1.1477 +36,419,2018-10-3,1049313,848.4,33393435.7,10937,b,0.0,1.1105 +99,194,2018-10-28,1049314,389.4,16413028.7,10230,aaa,0.0,-0.5 +18,977,2018-11-1,1049315,602.4,36307673.7,11421,dDd,0.0,1.2577 +59,643,2018-11-27,1049316,170.4,8919422.7,11490,dDd,0.0,1.5923 +39,320,2018-10-24,1049317,530.4,8713834.7,11933,aaa,0.0,-0.5 +29,950,2018-11-22,1049318,44.4,11624206.7,10918,dDd,0.0,0.5495 +50,359,2018-12-29,1049319,937.4,8182500.7,10396,C,0.0,1.6592 +69,961,2018-11-18,1049320,999.4,13074615.7,10372,aaa,0.0,-0.5 +17,173,2018-11-18,1049321,527.4,4531587.7,11237,aaa,0.0,1.9308 +90,480,2018-12-1,1049322,594.4,19013138.7,10573,dDd,0.0,0.5042 +41,528,2018-10-5,1049323,424.4,31516519.7,10731,b,0.0,-0.5 +49,641,2018-12-19,1049324,599.4,21868175.7,10771,b,0.0,0.4311 +46,672,2018-11-3,1049325,396.4,27860735.7,11473,b,0.0,1.7773 +16,552,2018-10-21,1049326,627.4,25320892.7,11056,C,1.0,-0.5 +95,613,2018-12-1,1049327,818.4,31341462.7,10873,dDd,0.0,1.0344 +75,910,2018-11-14,1049328,644.4,11239364.7,10776,dDd,0.0,1.8271 +51,179,2018-12-16,1049329,774.4,29858606.7,11328,dDd,0.0,-0.5 +30,477,2018-12-24,1049330,521.4,4150163.7,10661,C,1.0,0.5651 +58,266,2018-11-4,1049331,522.4,37458619.7,11806,dDd,0.0,0.4629 +49,319,2018-12-29,1049332,707.4,22404561.7,11808,dDd,0.0,-0.5 +74,924,2018-12-10,1049333,686.4,16087861.7,11949,aaa,0.0,0.7786 +49,673,2018-12-20,1049334,117.4,14259755.7,11403,C,1.0,1.9842 +27,642,2018-12-3,1049335,879.4,28985545.7,10193,C,0.0,-0.5 +31,702,2018-10-10,1049336,180.4,25185877.7,11748,b,0.0,1.8805 +36,101,2018-11-30,1049337,923.4,15362870.7,10519,dDd,0.0,1.1135 +26,296,2018-11-1,1049338,843.4,26609141.7,11301,b,0.0,-0.5 +3,412,2018-12-22,1049339,354.4,23396197.7,11876,b,0.0,1.8441 +26,265,2018-11-12,1049340,961.4,10331127.7,11151,dDd,0.0,1.5512 +80,987,2018-12-22,1049341,255.4,18799834.7,11832,dDd,0.0,-0.5 +85,50,2018-10-17,1049342,25.4,4539677.7,11563,aaa,0.0,0.8814 +63,553,2018-10-25,1049343,447.4,36735570.7,10287,b,0.0,0.6989 +61,778,2018-11-26,1049344,362.4,5427283.7,11992,aaa,0.0,-0.5 +85,544,2018-11-16,1049345,52.4,4001584.7,10558,aaa,0.0,0.3385 +9,138,2018-11-9,1049346,270.4,37231785.7,10929,C,0.0,1.9566 +10,616,2018-12-9,1049347,334.4,27942777.7,11806,aaa,0.0,-0.5 +42,858,2018-12-23,1049348,158.4,8404215.7,10777,dDd,0.0,1.5059 +69,6,2018-11-13,1049349,546.4,15308850.7,11832,dDd,0.0,0.5062 +71,456,2018-11-6,1049350,13.4,11477405.7,10776,dDd,0.0,-0.5 +69,424,2018-10-17,1049351,877.4,7552889.7,10988,b,0.0,1.3332 +91,412,2018-12-1,1049352,142.4,23523400.7,10300,C,1.0,0.4370 +41,7,2018-10-8,1049353,764.4,798581.7,11735,dDd,0.0,-0.5 +2,656,2018-12-30,1049354,142.4,7892579.7,10920,C,1.0,1.5731 +32,174,2018-10-15,1049355,424.4,30096218.7,11920,C,0.0,0.8680 +74,102,2018-12-17,1049356,628.4,9966560.7,11969,aaa,0.0,-0.5 +39,597,2018-11-28,1049357,174.4,18238744.7,11288,dDd,0.0,1.5403 +96,339,2018-12-10,1049358,810.4,332899.7,11519,aaa,0.0,1.9024 +85,350,2018-12-12,1049359,954.4,2988438.7,10731,b,0.0,-0.5 +93,170,2018-11-12,1049360,916.4,20065446.7,11591,C,0.0,0.2374 +39,447,2018-10-6,1049361,146.4,39232857.7,11760,dDd,0.0,0.4675 +89,704,2018-10-3,1049362,738.4,13707294.7,10924,C,0.0,-0.5 +26,559,2018-10-27,1049363,558.4,23584741.7,11565,dDd,0.0,1.2060 +45,459,2018-11-26,1049364,822.4,17639277.7,11100,aaa,0.0,1.2462 +6,266,2018-11-12,1049365,953.4,27744001.7,10920,b,0.0,-0.5 +95,612,2018-10-18,1049366,592.4,29096246.7,10451,b,0.0,0.3379 +18,547,2018-10-4,1049367,251.4,38682762.7,11877,aaa,0.0,1.1267 +7,812,2018-11-1,1049368,546.4,38793076.7,10342,b,0.0,-0.5 +30,337,2018-10-29,1049369,509.4,38968593.7,10310,dDd,0.0,0.9564 +82,645,2018-12-14,1049370,752.4,35080814.7,10726,dDd,0.0,0.9708 +5,771,2018-10-7,1049371,451.4,1491396.7,11898,b,0.0,-0.5 +30,470,2018-10-2,1049372,867.4,7016700.7,10355,C,0.0,0.4836 +97,752,2018-12-12,1049373,652.4,12584033.7,11393,b,0.0,1.8521 +35,457,2018-12-4,1049374,4.4,10623678.7,11012,C,1.0,-0.5 +48,999,2018-12-12,1049375,181.4,26896719.7,11864,b,0.0,1.1213 +63,971,2018-11-16,1049376,300.4,29618446.7,10605,aaa,0.0,0.1906 +40,659,2018-11-13,1049377,935.4,35644646.7,10331,aaa,0.0,-0.5 +70,524,2018-10-26,1049378,893.4,4015615.7,10365,aaa,0.0,1.3513 +80,586,2018-10-10,1049379,834.4,11959317.7,10399,aaa,0.0,1.6965 +32,323,2018-12-15,1049380,307.4,28778499.7,10012,aaa,0.0,-0.5 +37,99,2018-11-6,1049381,223.4,15410836.7,11786,b,0.0,1.2405 +98,751,2018-11-17,1049382,533.4,35268985.7,10634,dDd,0.0,1.0297 +89,176,2018-10-25,1049383,323.4,33315743.7,10637,dDd,0.0,-0.5 +17,226,2018-12-7,1049384,119.4,26961321.7,10831,C,0.0,1.6338 +49,629,2018-12-26,1049385,557.4,2256305.7,10302,b,0.0,0.6029 +8,95,2018-10-8,1049386,864.4,23430968.7,11426,aaa,0.0,-0.5 +99,397,2018-11-3,1049387,93.4,20621185.7,10267,C,0.0,1.8044 +10,309,2018-11-29,1049388,701.4,16742514.7,11911,b,0.0,0.1431 +3,866,2018-10-4,1049389,56.4,22865562.7,11820,dDd,0.0,-0.5 +65,419,2018-12-10,1049390,656.4,3643620.7,11842,aaa,0.0,1.8022 +94,28,2018-10-30,1049391,387.4,37732277.7,11360,b,0.0,0.3805 +25,214,2018-12-29,1049392,228.4,8527569.7,11042,dDd,0.0,-0.5 +100,753,2018-12-19,1049393,80.4,26252736.7,11731,aaa,0.0,0.2628 +25,462,2018-11-27,1049394,712.4,30032785.7,11701,aaa,0.0,1.5865 +43,703,2018-10-11,1049395,615.4,32048887.7,11958,C,0.0,-0.5 +62,419,2018-12-17,1049396,424.4,7517607.7,10732,aaa,0.0,0.7076 +49,96,2018-11-18,1049397,188.4,4148488.7,10887,dDd,0.0,1.9244 +0,472,2018-11-23,1049398,839.4,891910.7,10073,dDd,0.0,-0.5 +16,364,2018-12-27,1049399,404.4,35638674.7,11463,b,0.0,0.2659 +27,489,2018-10-29,1049400,496.4,34884999.7,11699,b,0.0,0.8808 +61,676,2018-10-19,1049401,972.4,35040651.7,11796,dDd,0.0,-0.5 +25,169,2018-12-3,1049402,573.4,16312929.7,10295,aaa,0.0,1.3755 +94,818,2018-10-2,1049403,114.4,15176170.7,11895,dDd,0.0,1.3644 +57,674,2018-12-14,1049404,23.4,25085712.7,10857,dDd,0.0,-0.5 +37,239,2018-10-21,1049405,692.4,22977705.7,10273,C,0.0,1.1839 +29,962,2018-12-9,1049406,653.4,26601831.7,11616,b,0.0,0.4857 +43,200,2018-10-24,1049407,973.4,25474351.7,11384,b,0.0,-0.5 +0,491,2018-12-10,1049408,174.4,13135459.7,10549,b,0.0,0.9489 +5,132,2018-10-17,1049409,666.4,30477808.7,10253,b,0.0,1.8370 +43,809,2018-10-10,1049410,775.4,11598450.7,11232,b,0.0,-0.5 +99,669,2018-11-10,1049411,21.4,8480195.7,11104,dDd,0.0,1.2201 +1,781,2018-10-11,1049412,485.4,4735963.7,11505,C,0.0,1.0775 +8,178,2018-11-7,1049413,979.4,34664212.7,11941,C,0.0,-0.5 +32,115,2018-12-4,1049414,486.4,19001289.7,10731,C,0.0,1.9283 +16,423,2018-12-21,1049415,274.4,16735797.7,11887,dDd,0.0,0.7113 +93,735,2018-10-28,1049416,878.4,15996480.7,10525,C,0.0,-0.5 +96,95,2018-10-4,1049417,31.4,6696057.7,11861,dDd,0.0,1.5045 +59,31,2018-10-27,1049418,723.4,844560.7,10124,aaa,0.0,0.5157 +90,330,2018-10-19,1049419,164.4,31217361.7,10675,C,0.0,-0.5 +15,168,2018-12-10,1049420,205.4,17969936.7,11753,aaa,0.0,0.9831 +30,742,2018-10-13,1049421,542.4,12175267.7,10551,dDd,0.0,0.3179 +97,867,2018-10-5,1049422,182.4,18356710.7,10680,C,0.0,-0.5 +68,159,2018-11-3,1049423,275.4,31053000.7,11540,dDd,0.0,0.9292 +36,711,2018-10-5,1049424,262.4,31535243.7,10447,b,0.0,0.5807 +42,481,2018-12-4,1049425,745.4,39197227.7,10699,b,0.0,-0.5 +11,661,2018-12-22,1049426,526.4,37307237.7,11889,C,1.0,0.1215 +72,380,2018-10-7,1049427,906.4,20607507.7,10642,b,0.0,1.2883 +53,103,2018-12-16,1049428,218.4,7616086.7,10258,b,0.0,-0.5 +36,402,2018-12-22,1049429,770.4,23259431.7,11350,b,0.0,0.4405 +23,990,2018-11-14,1049430,871.4,25274658.7,10442,b,0.0,1.5543 +44,301,2018-12-5,1049431,27.4,4670603.7,11472,b,0.0,-0.5 +0,513,2018-10-19,1049432,373.4,36532176.7,10186,C,1.0,1.7303 +13,415,2018-11-7,1049433,629.4,28633245.7,11822,dDd,0.0,0.9297 +5,317,2018-10-25,1049434,649.4,13168783.7,10529,dDd,0.0,-0.5 +55,251,2018-11-27,1049435,993.4,22013773.7,10673,C,0.0,0.8722 +47,51,2018-12-18,1049436,618.4,3456270.7,11615,dDd,0.0,0.1136 +90,877,2018-11-1,1049437,901.4,12666128.7,10633,b,0.0,-0.5 +44,626,2018-12-17,1049438,56.4,9089618.7,11024,aaa,0.0,0.2046 +41,112,2018-11-2,1049439,238.4,29917321.7,11834,dDd,0.0,1.0625 +72,478,2018-10-8,1049440,909.4,14433213.7,10557,dDd,0.0,-0.5 +38,306,2018-12-4,1049441,324.4,6569835.7,10620,dDd,0.0,1.2336 +51,324,2018-11-9,1049442,665.4,31890909.7,11062,aaa,0.0,0.2826 +98,60,2018-10-26,1049443,116.4,23384717.7,11083,dDd,0.0,-0.5 +54,641,2018-10-9,1049444,624.4,16638992.7,11697,aaa,0.0,1.2922 +76,640,2018-12-13,1049445,689.4,24430247.7,11096,aaa,0.0,0.2108 +56,814,2018-11-27,1049446,14.4,37625839.7,11302,aaa,0.0,-0.5 +86,533,2018-11-1,1049447,163.4,245131.7,10473,aaa,0.0,1.9538 +89,686,2018-11-4,1049448,457.4,15016709.7,11890,b,0.0,1.7153 +48,443,2018-10-28,1049449,351.4,7795400.7,11179,dDd,0.0,-0.5 +47,618,2018-12-16,1049450,572.4,12519492.7,10666,b,0.0,0.7584 +20,403,2018-10-18,1049451,357.4,5029242.7,11981,dDd,0.0,0.6984 +62,238,2018-10-20,1049452,235.4,24811206.7,10705,C,0.0,-0.5 +45,569,2018-12-27,1049453,953.4,17939174.7,10286,b,0.0,1.9436 +5,406,2018-11-19,1049454,468.4,2646862.7,10437,aaa,0.0,1.6276 +98,218,2018-12-13,1049455,992.4,19349809.7,10036,C,0.0,-0.5 +86,974,2018-10-29,1049456,64.4,36516019.7,10536,C,0.0,0.7153 +12,627,2018-11-26,1049457,466.4,3112591.7,11093,aaa,0.0,1.7491 +90,600,2018-12-17,1049458,231.4,7624169.7,11984,dDd,0.0,-0.5 +59,237,2018-12-12,1049459,600.4,38441315.7,11117,dDd,0.0,1.4114 +77,780,2018-12-9,1049460,368.4,24752703.7,11455,aaa,0.0,0.1896 +30,39,2018-11-9,1049461,320.4,12058750.7,11233,aaa,0.0,-0.5 +78,203,2018-10-27,1049462,593.4,24970811.7,10249,dDd,0.0,0.9883 +13,688,2018-10-1,1049463,615.4,29657479.7,11569,dDd,0.0,1.9199 +91,78,2018-12-5,1049464,563.4,7204973.7,10594,aaa,0.0,-0.5 +31,218,2018-10-17,1049465,558.4,4362915.7,11650,C,0.0,1.9295 +5,899,2018-10-27,1049466,845.4,17971788.7,10178,C,0.0,0.7920 +53,891,2018-11-12,1049467,274.4,26592075.7,11103,aaa,0.0,-0.5 +64,553,2018-12-19,1049468,265.4,1929575.7,11996,b,0.0,1.3564 +74,366,2018-12-22,1049469,691.4,2088511.7,10587,C,0.0,0.9967 +29,866,2018-11-18,1049470,518.4,20174337.7,10487,aaa,0.0,-0.5 +35,608,2018-11-14,1049471,97.4,20662806.7,11331,b,0.0,0.6204 +10,122,2018-12-3,1049472,317.4,1510426.7,10537,C,0.0,0.2302 +41,71,2018-10-6,1049473,594.4,15039203.7,11600,C,0.0,-0.5 +0,670,2018-12-5,1049474,302.4,16543567.7,10827,C,1.0,0.9618 +61,828,2018-10-5,1049475,732.4,33239363.7,11160,b,0.0,1.5225 +84,99,2018-12-28,1049476,236.4,36293614.7,10722,b,0.0,-0.5 +53,834,2018-11-2,1049477,492.4,19458376.7,10444,b,0.0,0.0145 +97,213,2018-11-6,1049478,619.4,10047739.7,10001,C,0.0,1.4762 +87,582,2018-12-18,1049479,536.4,2498679.7,10247,aaa,0.0,-0.5 +94,651,2018-11-23,1049480,889.4,32350240.7,11700,C,0.0,1.5829 +42,511,2018-10-19,1049481,773.4,15983466.7,11138,b,0.0,0.2347 +90,226,2018-11-22,1049482,883.4,18627824.7,10753,aaa,0.0,-0.5 +50,826,2018-11-9,1049483,358.4,15077180.7,10565,b,0.0,1.4692 +88,907,2018-10-19,1049484,981.4,39380395.7,11621,aaa,0.0,0.1783 +100,456,2018-10-15,1049485,890.4,35427831.7,10527,dDd,0.0,-0.5 +71,248,2018-10-27,1049486,126.4,23126790.7,11294,b,0.0,1.9363 +99,504,2018-11-25,1049487,176.4,21857401.7,11276,C,1.0,0.8936 +54,899,2018-12-1,1049488,645.4,32542900.7,10010,dDd,0.0,-0.5 +96,40,2018-11-19,1049489,567.4,25396572.7,11859,C,0.0,1.6917 +50,255,2018-10-11,1049490,653.4,12780974.7,10357,aaa,0.0,0.3050 +32,259,2018-10-23,1049491,900.4,6830317.7,10587,dDd,0.0,-0.5 +31,17,2018-12-25,1049492,805.4,13832927.7,11012,dDd,0.0,1.0014 +51,825,2018-11-29,1049493,230.4,37520032.7,11070,aaa,0.0,1.2933 +6,495,2018-11-10,1049494,541.4,26678573.7,11640,aaa,0.0,-0.5 +81,651,2018-10-23,1049495,300.4,26470328.7,11070,b,0.0,1.2408 +4,843,2018-12-17,1049496,834.4,11395154.7,11499,dDd,0.0,1.2228 +46,113,2018-11-26,1049497,470.4,9527269.7,11590,b,0.0,-0.5 +0,769,2018-12-27,1049498,415.4,31241419.7,10682,aaa,0.0,1.5939 +60,17,2018-12-22,1049499,131.4,5933267.7,10919,aaa,0.0,0.5793 +61,537,2018-12-5,1049500,868.4,33351755.7,11937,b,0.0,-0.5 +9,16,2018-11-26,1049501,462.4,14462691.7,10390,aaa,0.0,1.0094 +38,919,2018-10-16,1049502,988.4,19264188.7,11377,aaa,0.0,1.1996 +53,630,2018-11-17,1049503,974.4,26744420.7,11110,b,0.0,-0.5 +63,25,2018-12-9,1049504,268.4,36783590.7,11586,dDd,0.0,0.7075 +16,811,2018-12-22,1049505,472.4,39084976.7,11699,C,0.0,0.1614 +43,464,2018-10-27,1049506,747.4,19793308.7,11049,b,0.0,-0.5 +37,412,2018-11-27,1049507,42.4,1358285.7,10462,aaa,0.0,0.6164 +95,559,2018-11-20,1049508,727.4,20365379.7,11373,b,0.0,0.1759 +29,236,2018-11-13,1049509,664.4,26605061.7,11170,b,0.0,-0.5 +41,255,2018-11-2,1049510,253.4,28466751.7,11235,C,0.0,0.2406 +20,635,2018-12-8,1049511,404.4,17016091.7,10069,b,0.0,1.7588 +86,223,2018-10-21,1049512,688.4,34237770.7,10533,b,0.0,-0.5 +39,522,2018-10-12,1049513,417.4,15643014.7,10569,b,0.0,0.5632 +94,449,2018-11-21,1049514,433.4,6168090.7,11029,aaa,0.0,1.2280 +79,638,2018-11-8,1049515,870.4,12464362.7,11903,b,0.0,-0.5 +86,162,2018-11-4,1049516,234.4,25425977.7,10968,C,0.0,0.5133 +22,324,2018-12-15,1049517,270.4,23999471.7,11926,C,0.0,1.1643 +85,557,2018-12-18,1049518,733.4,15451423.7,10691,aaa,0.0,-0.5 +89,843,2018-10-3,1049519,114.4,12184849.7,11343,C,0.0,0.2125 +78,719,2018-10-5,1049520,238.4,506401.7,11253,aaa,0.0,0.8560 +90,375,2018-11-14,1049521,4.4,5266344.7,10727,aaa,0.0,-0.5 +77,255,2018-12-26,1049522,666.4,15800484.7,10201,b,0.0,0.1012 +97,973,2018-12-24,1049523,724.4,30507970.7,10698,aaa,0.0,1.8574 +65,893,2018-11-7,1049524,659.4,30215369.7,10682,C,0.0,-0.5 +3,371,2018-11-15,1049525,607.4,3139760.7,10084,C,0.0,1.9099 +86,524,2018-10-12,1049526,774.4,15891699.7,10806,dDd,0.0,1.0983 +14,0,2018-10-28,1049527,260.4,16023321.7,10953,C,0.0,-0.5 +23,554,2018-11-20,1049528,733.4,33462835.7,10493,aaa,0.0,0.5105 +40,359,2018-10-28,1049529,469.4,2437866.7,11001,dDd,0.0,0.6921 +26,782,2018-12-18,1049530,20.4,7936545.7,11619,b,0.0,-0.5 +96,967,2018-10-28,1049531,207.4,37802309.7,11073,dDd,0.0,0.1079 +4,13,2018-12-7,1049532,887.4,27264494.7,10737,C,0.0,1.7015 +77,855,2018-11-25,1049533,229.4,25635084.7,10797,dDd,0.0,-0.5 +0,160,2018-11-11,1049534,162.4,29388904.7,11082,dDd,0.0,1.9355 +66,320,2018-10-2,1049535,37.4,35592587.7,10087,C,0.0,0.4090 +10,509,2018-11-23,1049536,220.4,22169042.7,11672,b,0.0,-0.5 +57,968,2018-10-27,1049537,497.4,29900043.7,10895,C,0.0,1.2855 +47,377,2018-11-30,1049538,95.4,17035699.7,11311,C,0.0,1.0253 +57,74,2018-10-29,1049539,973.4,31494828.7,10572,dDd,0.0,-0.5 +58,559,2018-11-5,1049540,635.4,7420786.7,10017,b,0.0,0.1118 +28,34,2018-12-11,1049541,334.4,13379455.7,11015,aaa,0.0,1.2659 +38,743,2018-10-20,1049542,391.4,23837989.7,10131,b,0.0,-0.5 +83,532,2018-12-18,1049543,832.4,15830137.7,11532,aaa,0.0,1.1728 +2,814,2018-10-22,1049544,467.4,26559223.7,10484,C,0.0,1.8291 +14,432,2018-12-9,1049545,318.4,37408336.7,11568,b,0.0,-0.5 +2,500,2018-10-17,1049546,100.4,8430870.7,11698,aaa,0.0,0.4121 +35,362,2018-11-6,1049547,450.4,24589518.7,10519,dDd,0.0,0.3424 +15,427,2018-10-17,1049548,517.4,4999325.7,11914,aaa,0.0,-0.5 +24,156,2018-12-19,1049549,456.4,39681730.7,10450,dDd,0.0,0.5450 +56,434,2018-10-5,1049550,541.4,37773712.7,11090,b,0.0,0.5548 +67,712,2018-10-1,1049551,354.4,17495832.7,11596,C,0.0,-0.5 +21,536,2018-12-1,1049552,563.4,37445113.7,10293,b,0.0,0.9829 +91,936,2018-11-28,1049553,632.4,10719934.7,10689,C,0.0,0.6561 +55,689,2018-10-10,1049554,514.4,18151461.7,10965,dDd,0.0,-0.5 +36,337,2018-10-25,1049555,881.4,36739079.7,10175,dDd,0.0,0.7141 +99,332,2018-10-12,1049556,300.4,29258614.7,11338,b,0.0,0.5659 +87,463,2018-10-16,1049557,24.4,18942510.7,10513,dDd,0.0,-0.5 +52,88,2018-11-7,1049558,628.4,971485.7,10862,dDd,0.0,1.6681 +58,162,2018-12-11,1049559,262.4,6407442.7,11569,C,0.0,1.0765 +27,598,2018-11-28,1049560,643.4,29104760.7,11936,aaa,0.0,-0.5 +21,112,2018-10-3,1049561,76.4,32042059.7,11926,C,0.0,1.2014 +43,859,2018-11-24,1049562,738.4,5694327.7,11718,aaa,0.0,1.1843 +96,975,2018-12-5,1049563,424.4,25840502.7,11461,C,0.0,-0.5 +62,684,2018-12-5,1049564,679.4,31541667.7,10040,C,1.0,1.9343 +65,730,2018-10-19,1049565,694.4,9127884.7,10146,C,0.0,1.1198 +7,367,2018-12-20,1049566,861.4,37266786.7,10173,b,0.0,-0.5 +80,853,2018-11-15,1049567,425.4,12547948.7,11871,dDd,0.0,0.8287 +73,319,2018-11-19,1049568,177.4,29644133.7,11820,C,0.0,0.4053 +7,132,2018-10-17,1049569,395.4,37072122.7,11115,aaa,0.0,-0.5 +64,145,2018-12-8,1049570,466.4,26805861.7,10503,C,0.0,1.8990 +86,943,2018-10-19,1049571,578.4,599195.7,11385,dDd,0.0,0.5172 +56,245,2018-10-30,1049572,110.4,7061397.7,11043,C,0.0,-0.5 +50,900,2018-11-8,1049573,56.4,26249111.7,11980,dDd,0.0,0.7280 +56,819,2018-12-23,1049574,109.4,30989840.7,10145,dDd,0.0,1.6900 +55,786,2018-10-4,1049575,579.4,28692037.7,11790,C,0.0,-0.5 +85,19,2018-10-19,1049576,522.4,7374515.7,11794,b,0.0,0.7851 +28,941,2018-11-27,1049577,846.4,26778909.7,11802,C,0.0,0.1021 +45,674,2018-10-26,1049578,875.4,14939610.7,11915,aaa,0.0,-0.5 +100,425,2018-11-24,1049579,988.4,36351644.7,11944,C,0.0,0.0066 +35,411,2018-12-5,1049580,41.4,27837948.7,11583,b,0.0,0.6471 +74,795,2018-10-4,1049581,116.4,12779913.7,10238,C,0.0,-0.5 +85,705,2018-12-4,1049582,210.4,12428721.7,10518,C,0.0,0.0841 +76,430,2018-12-8,1049583,810.4,35819436.7,11815,b,0.0,1.6300 +26,700,2018-10-24,1049584,942.4,20950356.7,10132,b,0.0,-0.5 +14,712,2018-11-21,1049585,497.4,13672264.7,10991,b,0.0,0.0190 +83,635,2018-10-18,1049586,260.4,10104005.7,11073,C,1.0,0.3441 +91,325,2018-11-20,1049587,359.4,4037476.7,11398,C,0.0,-0.5 +36,531,2018-12-27,1049588,219.4,27039922.7,10637,aaa,0.0,1.0521 +82,263,2018-10-17,1049589,909.4,26087186.7,11663,C,0.0,0.0122 +85,545,2018-12-10,1049590,162.4,1375397.7,11090,aaa,0.0,-0.5 +48,116,2018-10-7,1049591,505.4,31234848.7,11399,dDd,0.0,0.7774 +99,56,2018-12-12,1049592,101.4,11812821.7,10217,b,0.0,1.2136 +59,96,2018-11-17,1049593,978.4,14740509.7,10929,dDd,0.0,-0.5 +19,574,2018-11-2,1049594,687.4,29212360.7,11613,b,0.0,0.2042 +75,80,2018-12-6,1049595,938.4,33129952.7,10648,b,0.0,1.1480 +22,607,2018-11-18,1049596,508.4,36055006.7,11185,C,1.0,-0.5 +25,37,2018-11-14,1049597,387.4,18986592.7,10883,C,0.0,0.0399 +64,598,2018-10-7,1049598,316.4,4121792.7,10350,C,1.0,1.9767 +64,560,2018-12-21,1049599,797.4,14348711.7,11077,dDd,0.0,-0.5 +45,444,2018-10-1,1049600,804.4,27080873.7,10099,C,0.0,0.9010 +61,9,2018-11-12,1049601,385.4,24576148.7,10404,b,0.0,1.8757 +22,914,2018-10-10,1049602,657.4,31263293.7,11379,dDd,0.0,-0.5 +33,561,2018-11-15,1049603,910.4,37233038.7,11115,dDd,0.0,1.0280 +25,986,2018-11-10,1049604,923.4,36135003.7,11375,b,0.0,0.6037 +50,769,2018-11-4,1049605,990.4,9494034.7,10167,b,0.0,-0.5 +67,554,2018-12-17,1049606,927.4,28523734.7,11694,b,0.0,0.9841 +64,704,2018-12-20,1049607,629.4,24745778.7,10735,dDd,0.0,1.3888 +10,113,2018-12-20,1049608,425.4,26401363.7,11352,C,0.0,-0.5 +62,716,2018-11-23,1049609,576.4,3283958.7,11545,aaa,0.0,1.2825 +42,969,2018-10-10,1049610,902.4,30534179.7,10590,b,0.0,1.3954 +41,354,2018-11-23,1049611,220.4,35013301.7,10288,aaa,0.0,-0.5 +49,928,2018-10-25,1049612,371.4,2759386.7,11062,aaa,0.0,0.1358 +53,476,2018-11-15,1049613,544.4,23726385.7,10822,b,0.0,1.4795 +23,375,2018-10-30,1049614,509.4,25415534.7,11213,aaa,0.0,-0.5 +56,520,2018-12-29,1049615,185.4,24945970.7,10221,b,0.0,1.6451 +96,983,2018-11-6,1049616,420.4,845683.7,10980,C,0.0,1.4985 +85,14,2018-11-13,1049617,278.4,6397136.7,11194,b,0.0,-0.5 +84,259,2018-12-29,1049618,389.4,36714381.7,11499,dDd,0.0,1.7204 +48,728,2018-12-9,1049619,299.4,13907476.7,10925,b,0.0,0.5506 +54,85,2018-12-7,1049620,95.4,33614476.7,10910,dDd,0.0,-0.5 +84,366,2018-10-20,1049621,326.4,38777188.7,10508,aaa,0.0,0.8721 +80,889,2018-12-23,1049622,768.4,33975392.7,11101,b,0.0,1.3280 +64,734,2018-11-25,1049623,171.4,21955001.7,10569,aaa,0.0,-0.5 +44,690,2018-11-7,1049624,403.4,19079824.7,11885,aaa,0.0,1.2082 +93,869,2018-10-28,1049625,201.4,11904345.7,10975,aaa,0.0,1.5321 +7,888,2018-10-25,1049626,443.4,14073884.7,11716,aaa,0.0,-0.5 +84,944,2018-12-14,1049627,457.4,5684496.7,11597,aaa,0.0,0.6641 +77,913,2018-12-21,1049628,701.4,29643687.7,11970,dDd,0.0,1.5720 +54,892,2018-11-19,1049629,882.4,5505089.7,10969,b,0.0,-0.5 +95,473,2018-12-28,1049630,811.4,16460707.7,10951,b,0.0,0.5253 +75,833,2018-11-7,1049631,192.4,17636562.7,11575,b,0.0,0.4730 +20,209,2018-11-30,1049632,395.4,37296971.7,10780,C,0.0,-0.5 +30,517,2018-11-2,1049633,143.4,35049531.7,10386,aaa,0.0,0.9037 +57,516,2018-10-10,1049634,903.4,28042668.7,10800,b,0.0,1.5009 +12,401,2018-11-27,1049635,151.4,11724322.7,11453,C,1.0,-0.5 +3,688,2018-11-21,1049636,422.4,26006899.7,11891,C,1.0,0.9722 +57,74,2018-11-18,1049637,511.4,36545314.7,11201,dDd,0.0,0.4850 +6,878,2018-12-16,1049638,739.4,35663177.7,10869,aaa,0.0,-0.5 +28,179,2018-11-24,1049639,416.4,21462072.7,11346,dDd,0.0,1.1427 +89,643,2018-10-9,1049640,502.4,37094367.7,11641,dDd,0.0,1.7675 +68,746,2018-11-12,1049641,367.4,20828977.7,11898,C,0.0,-0.5 +83,842,2018-10-27,1049642,226.4,36999604.7,11583,C,0.0,1.9603 +19,556,2018-12-27,1049643,102.4,30512916.7,11211,dDd,0.0,1.9033 +87,9,2018-10-27,1049644,642.4,4720144.7,10369,b,0.0,-0.5 +62,116,2018-11-29,1049645,90.4,29831265.7,10700,b,0.0,0.4080 +4,168,2018-12-6,1049646,559.4,6261914.7,11750,C,0.0,1.5484 +71,2,2018-11-13,1049647,526.4,30863515.7,10897,C,0.0,-0.5 +88,926,2018-12-28,1049648,815.4,17353708.7,11403,b,0.0,1.1996 +3,46,2018-10-2,1049649,829.4,299797.7,11696,aaa,0.0,1.2688 +88,722,2018-12-19,1049650,878.4,16682757.7,10490,aaa,0.0,-0.5 +94,894,2018-12-30,1049651,200.4,30204803.7,11182,dDd,0.0,0.0036 +3,582,2018-11-25,1049652,48.4,8694012.7,11140,C,1.0,0.1409 +97,603,2018-12-4,1049653,612.4,2044256.7,11386,C,1.0,-0.5 +97,889,2018-12-8,1049654,198.4,34710801.7,11018,dDd,0.0,0.0211 +73,310,2018-12-29,1049655,79.4,23483770.7,11383,dDd,0.0,1.3491 +99,782,2018-11-20,1049656,222.4,6575175.7,11215,b,0.0,-0.5 +1,98,2018-12-25,1049657,449.4,31928623.7,11206,b,0.0,1.1867 +5,692,2018-12-3,1049658,767.4,1265000.7,10910,aaa,0.0,0.0132 +44,501,2018-12-28,1049659,677.4,33962220.7,10026,dDd,0.0,-0.5 +88,236,2018-10-14,1049660,278.4,19955045.7,11647,aaa,0.0,0.3289 +32,507,2018-10-27,1049661,169.4,37561857.7,11131,C,1.0,0.5385 +23,74,2018-10-8,1049662,866.4,9868752.7,10126,aaa,0.0,-0.5 +26,303,2018-11-8,1049663,623.4,24342629.7,10522,aaa,0.0,1.3468 +10,406,2018-12-20,1049664,845.4,34252486.7,10958,b,0.0,1.4423 +34,157,2018-10-12,1049665,25.4,10618198.7,10793,C,0.0,-0.5 +40,724,2018-12-12,1049666,179.4,39668470.7,11690,aaa,0.0,0.9684 +21,603,2018-10-17,1049667,464.4,35038544.7,10709,dDd,0.0,0.4144 +65,611,2018-11-13,1049668,726.4,7915660.7,10512,C,0.0,-0.5 +66,574,2018-10-24,1049669,871.4,4761966.7,11071,aaa,0.0,1.9789 +42,14,2018-11-9,1049670,712.4,1210364.7,11942,C,0.0,1.5571 +0,436,2018-11-1,1049671,267.4,12509164.7,10897,C,1.0,-0.5 +27,572,2018-12-10,1049672,227.4,39585155.7,11737,b,0.0,0.3847 +24,195,2018-11-23,1049673,788.4,39058581.7,10835,C,0.0,1.5175 +2,833,2018-12-25,1049674,209.4,14846642.7,11081,aaa,0.0,-0.5 +75,635,2018-12-16,1049675,740.4,32442488.7,11327,aaa,0.0,0.2700 +67,762,2018-12-21,1049676,956.4,28250631.7,11548,C,0.0,1.9254 +9,907,2018-10-22,1049677,236.4,235469.7,11117,C,0.0,-0.5 +43,617,2018-11-20,1049678,508.4,12662350.7,11842,C,1.0,1.6538 +64,267,2018-11-28,1049679,708.4,8395033.7,10331,dDd,0.0,1.1251 +49,380,2018-11-14,1049680,422.4,16453200.7,10676,C,0.0,-0.5 +71,740,2018-10-22,1049681,773.4,16391788.7,10967,C,0.0,1.5882 +19,556,2018-11-23,1049682,374.4,26851619.7,10927,b,0.0,1.1287 +21,436,2018-10-19,1049683,404.4,21754058.7,10710,aaa,0.0,-0.5 +71,18,2018-10-3,1049684,560.4,31338947.7,10915,b,0.0,0.8506 +26,990,2018-12-30,1049685,374.4,38890594.7,11978,dDd,0.0,1.1498 +86,651,2018-10-22,1049686,14.4,8546118.7,10972,dDd,0.0,-0.5 +93,270,2018-10-24,1049687,558.4,36775546.7,10923,C,0.0,1.6450 +77,33,2018-12-6,1049688,280.4,10691314.7,10716,dDd,0.0,0.3365 +61,275,2018-10-13,1049689,10.4,14188820.7,11010,dDd,0.0,-0.5 +8,335,2018-12-28,1049690,429.4,11580333.7,10356,C,0.0,0.0115 +24,412,2018-10-29,1049691,822.4,22949069.7,10061,aaa,0.0,0.6654 +16,462,2018-12-7,1049692,655.4,319376.7,10058,dDd,0.0,-0.5 +57,137,2018-10-8,1049693,603.4,21213757.7,10553,b,0.0,0.8510 +92,112,2018-12-23,1049694,692.4,36535443.7,10339,b,0.0,0.0122 +25,711,2018-10-28,1049695,267.4,38790980.7,11837,dDd,0.0,-0.5 +21,160,2018-11-28,1049696,762.4,12698235.7,10442,dDd,0.0,1.1914 +27,315,2018-11-1,1049697,377.4,8287556.7,11544,dDd,0.0,0.9806 +33,311,2018-11-7,1049698,293.4,25056056.7,11526,dDd,0.0,-0.5 +78,566,2018-11-30,1049699,135.4,32273158.7,11722,aaa,0.0,0.0168 +42,808,2018-11-3,1049700,22.4,22842214.7,10064,b,0.0,0.9595 +6,771,2018-10-24,1049701,823.4,14900821.7,10301,b,0.0,-0.5 +13,140,2018-12-11,1049702,873.4,25130170.7,10903,dDd,0.0,0.6098 +77,330,2018-12-20,1049703,999.4,27412209.7,10653,aaa,0.0,1.3442 +85,566,2018-11-5,1049704,33.4,13338176.7,11110,aaa,0.0,-0.5 +90,330,2018-12-10,1049705,87.4,15276449.7,11761,aaa,0.0,1.1060 +90,972,2018-10-1,1049706,929.4,5413107.7,11505,b,0.0,1.6142 +99,990,2018-11-15,1049707,278.4,20643864.7,10609,b,0.0,-0.5 +7,872,2018-11-5,1049708,883.4,485320.7,10244,b,0.0,1.1506 +20,79,2018-12-11,1049709,748.4,6829642.7,10167,dDd,0.0,1.2681 +1,531,2018-11-26,1049710,762.4,15050865.7,11160,dDd,0.0,-0.5 +92,324,2018-10-27,1049711,95.4,4055632.7,10232,b,0.0,0.4640 +11,302,2018-10-16,1049712,254.4,20423099.7,11388,aaa,0.0,0.8563 +7,299,2018-10-13,1049713,778.4,18975982.7,11908,aaa,0.0,-0.5 +86,75,2018-10-17,1049714,898.4,39764088.7,10415,dDd,0.0,1.9183 +36,606,2018-11-15,1049715,205.4,39293799.7,10471,C,1.0,1.7068 +19,86,2018-10-26,1049716,222.4,39066597.7,11910,b,0.0,-0.5 +44,482,2018-10-27,1049717,730.4,17717496.7,11497,dDd,0.0,0.7217 +34,980,2018-11-30,1049718,722.4,37922202.7,10626,aaa,0.0,1.3519 +94,38,2018-12-20,1049719,278.4,36396997.7,11718,aaa,0.0,-0.5 +3,717,2018-10-24,1049720,27.4,5076374.7,10130,dDd,0.0,1.5383 +27,524,2018-10-5,1049721,454.4,32626467.7,10524,b,0.0,1.3634 +41,170,2018-12-15,1049722,17.4,1021409.7,11619,C,0.0,-0.5 +50,997,2018-10-11,1049723,469.4,18180702.7,10240,b,0.0,0.8934 +19,597,2018-12-21,1049724,334.4,8088207.7,11586,aaa,0.0,0.2144 +50,698,2018-10-7,1049725,823.4,6586905.7,10021,dDd,0.0,-0.5 +12,180,2018-11-16,1049726,519.4,26622483.7,10690,aaa,0.0,1.6908 +40,807,2018-12-22,1049727,854.4,31130704.7,10531,aaa,0.0,1.4059 +67,883,2018-11-13,1049728,859.4,6689719.7,11353,C,0.0,-0.5 +34,697,2018-11-26,1049729,560.4,13239267.7,10098,aaa,0.0,0.9027 +43,828,2018-10-12,1049730,122.4,37434413.7,11053,b,0.0,1.4227 +69,827,2018-11-25,1049731,188.4,15954819.7,10664,b,0.0,-0.5 +70,202,2018-10-7,1049732,897.4,39168156.7,11695,dDd,0.0,1.6717 +42,345,2018-11-6,1049733,687.4,37172397.7,11850,aaa,0.0,0.0325 +52,340,2018-11-19,1049734,607.4,12452469.7,10400,aaa,0.0,-0.5 +79,154,2018-11-1,1049735,902.4,30571073.7,10465,aaa,0.0,1.9582 +79,986,2018-11-21,1049736,433.4,23237013.7,11223,C,0.0,1.1384 +100,205,2018-11-22,1049737,663.4,18137333.7,11608,dDd,0.0,-0.5 +83,743,2018-11-19,1049738,473.4,38373326.7,11178,C,0.0,0.1701 +21,924,2018-11-11,1049739,828.4,20999639.7,10329,aaa,0.0,0.2890 +39,351,2018-12-23,1049740,722.4,27348575.7,11973,aaa,0.0,-0.5 +23,469,2018-12-6,1049741,584.4,36098347.7,11565,C,1.0,1.5071 +17,806,2018-11-14,1049742,144.4,39470364.7,11295,dDd,0.0,0.7529 +59,553,2018-12-20,1049743,125.4,14942710.7,10749,C,1.0,-0.5 +46,514,2018-10-17,1049744,854.4,1437819.7,11805,b,0.0,1.9727 +74,186,2018-10-25,1049745,550.4,33319018.7,11637,aaa,0.0,0.6712 +55,512,2018-10-7,1049746,824.4,39320021.7,10001,dDd,0.0,-0.5 +45,694,2018-12-22,1049747,393.4,13460948.7,10383,dDd,0.0,1.5882 +18,248,2018-12-23,1049748,504.4,23629364.7,11813,C,0.0,1.3929 +80,639,2018-11-25,1049749,346.4,31830108.7,10252,dDd,0.0,-0.5 +98,905,2018-10-10,1049750,129.4,7085030.7,11476,C,0.0,1.5401 +68,67,2018-10-11,1049751,641.4,20329898.7,11627,b,0.0,0.9312 +40,971,2018-12-20,1049752,511.4,37255249.7,11723,aaa,0.0,-0.5 +80,717,2018-12-1,1049753,692.4,2065939.7,10429,dDd,0.0,0.1573 +32,37,2018-11-2,1049754,191.4,32184525.7,11252,b,0.0,1.8246 +51,259,2018-12-8,1049755,567.4,5928686.7,10250,dDd,0.0,-0.5 +14,254,2018-10-28,1049756,38.4,15403241.7,10706,b,0.0,0.7868 +49,7,2018-11-2,1049757,752.4,24710634.7,11417,aaa,0.0,1.5154 +39,392,2018-10-12,1049758,64.4,34967252.7,11335,aaa,0.0,-0.5 +100,466,2018-10-23,1049759,953.4,24848538.7,11386,aaa,0.0,0.3969 +73,433,2018-10-21,1049760,929.4,4764149.7,11170,aaa,0.0,0.4181 +9,393,2018-11-12,1049761,656.4,38569613.7,10332,dDd,0.0,-0.5 +46,363,2018-10-24,1049762,90.4,33965748.7,10023,dDd,0.0,0.9664 +69,439,2018-12-28,1049763,984.4,9852930.7,10377,C,0.0,0.0898 +54,390,2018-10-29,1049764,952.4,13031463.7,10182,aaa,0.0,-0.5 +46,300,2018-10-1,1049765,259.4,26505540.7,10530,aaa,0.0,0.8802 +11,101,2018-11-2,1049766,133.4,6016198.7,10071,b,0.0,0.0479 +39,477,2018-11-19,1049767,948.4,19515888.7,10907,C,0.0,-0.5 +85,776,2018-11-6,1049768,69.4,26961242.7,10260,dDd,0.0,0.4082 +68,926,2018-10-5,1049769,792.4,23638589.7,10129,dDd,0.0,0.2180 +70,1,2018-12-7,1049770,870.4,28429581.7,11219,dDd,0.0,-0.5 +22,464,2018-12-17,1049771,38.4,31189827.7,10387,b,0.0,1.2042 +19,948,2018-12-22,1049772,972.4,9858477.7,10300,C,0.0,1.7251 +1,487,2018-11-13,1049773,185.4,25188993.7,10025,C,1.0,-0.5 +92,47,2018-10-29,1049774,790.4,35565244.7,11953,aaa,0.0,0.8566 +40,403,2018-10-20,1049775,901.4,25294272.7,11145,aaa,0.0,1.6978 +71,710,2018-12-16,1049776,520.4,13493521.7,10570,aaa,0.0,-0.5 +2,764,2018-10-13,1049777,628.4,36373613.7,10535,aaa,0.0,0.2157 +45,957,2018-12-13,1049778,297.4,33646111.7,11478,aaa,0.0,1.2860 +5,876,2018-10-2,1049779,820.4,31364483.7,10763,aaa,0.0,-0.5 +71,634,2018-12-22,1049780,675.4,22519001.7,11517,dDd,0.0,0.9268 +85,868,2018-10-28,1049781,351.4,3228285.7,11618,b,0.0,0.8260 +10,712,2018-11-4,1049782,851.4,36031178.7,11851,dDd,0.0,-0.5 +55,765,2018-12-29,1049783,461.4,16590798.7,10517,C,0.0,1.0013 +34,837,2018-12-29,1049784,22.4,11315908.7,10801,C,0.0,0.9833 +15,547,2018-10-19,1049785,962.4,1777890.7,10558,C,0.0,-0.5 +34,370,2018-11-26,1049786,525.4,691876.7,10146,C,0.0,1.2902 +11,517,2018-11-17,1049787,275.4,1601811.7,11607,C,1.0,1.7701 +40,388,2018-11-15,1049788,632.4,6987671.7,10512,C,0.0,-0.5 +76,518,2018-10-14,1049789,298.4,1886372.7,11327,C,1.0,0.9849 +53,267,2018-10-21,1049790,432.4,8351594.7,11274,b,0.0,0.1670 +74,322,2018-12-4,1049791,294.4,32866557.7,10347,dDd,0.0,-0.5 +89,145,2018-11-30,1049792,795.4,30815308.7,10017,aaa,0.0,0.1024 +89,282,2018-12-12,1049793,296.4,33327072.7,11073,aaa,0.0,1.1334 +94,111,2018-11-12,1049794,406.4,8200874.7,11328,b,0.0,-0.5 +45,973,2018-10-28,1049795,938.4,4373504.7,10921,dDd,0.0,1.2523 +40,370,2018-11-17,1049796,186.4,31190901.7,10018,b,0.0,0.0136 +12,963,2018-12-4,1049797,391.4,32614914.7,10312,aaa,0.0,-0.5 +2,356,2018-10-26,1049798,536.4,34946832.7,11591,aaa,0.0,1.5406 +73,26,2018-11-22,1049799,120.4,24211015.7,11864,C,0.0,0.4217 +69,329,2018-12-26,1049800,707.4,10827844.7,10774,aaa,0.0,-0.5 +88,168,2018-10-28,1049801,740.4,20308442.7,10267,b,0.0,0.1179 +52,412,2018-12-13,1049802,161.4,7679505.7,11993,C,1.0,1.6260 +27,378,2018-11-26,1049803,274.4,14635592.7,11045,C,0.0,-0.5 +66,513,2018-11-10,1049804,45.4,33848364.7,10433,aaa,0.0,1.4482 +86,46,2018-10-3,1049805,601.4,37147806.7,11546,aaa,0.0,0.4825 +73,93,2018-10-2,1049806,458.4,3232966.7,11178,b,0.0,-0.5 +31,1,2018-12-11,1049807,840.4,34640553.7,10811,aaa,0.0,1.4497 +92,25,2018-11-15,1049808,281.4,18054196.7,10437,C,0.0,0.6982 +36,687,2018-12-10,1049809,405.4,37648967.7,10151,C,1.0,-0.5 +18,201,2018-11-7,1049810,345.4,35205745.7,11874,C,0.0,0.8440 +70,869,2018-11-9,1049811,958.4,36749445.7,11328,aaa,0.0,1.6250 +93,328,2018-10-20,1049812,92.4,31913310.7,11988,aaa,0.0,-0.5 +40,860,2018-10-13,1049813,58.4,17236021.7,10611,aaa,0.0,1.1695 +25,486,2018-12-8,1049814,711.4,11060297.7,11890,b,0.0,0.6263 +4,122,2018-10-30,1049815,101.4,12309948.7,10473,dDd,0.0,-0.5 +74,951,2018-11-18,1049816,694.4,13080141.7,11056,dDd,0.0,1.3196 +35,192,2018-11-24,1049817,542.4,27092275.7,11047,C,0.0,1.9165 +32,813,2018-10-24,1049818,98.4,23284294.7,11053,dDd,0.0,-0.5 +10,439,2018-12-11,1049819,698.4,35131275.7,11417,aaa,0.0,0.9851 +46,942,2018-11-11,1049820,682.4,17169217.7,11462,C,0.0,0.9014 +28,510,2018-12-17,1049821,913.4,7773846.7,11374,b,0.0,-0.5 +18,9,2018-10-13,1049822,749.4,3221448.7,10969,C,0.0,1.0687 +14,370,2018-11-15,1049823,632.4,33027359.7,11040,C,0.0,1.0038 +1,146,2018-10-11,1049824,825.4,18266569.7,11348,dDd,0.0,-0.5 +37,570,2018-10-22,1049825,350.4,26198681.7,10306,b,0.0,1.2420 +1,693,2018-11-21,1049826,416.4,21474656.7,10724,dDd,0.0,0.2561 +26,612,2018-10-28,1049827,653.4,6633836.7,11286,aaa,0.0,-0.5 +64,76,2018-11-15,1049828,930.4,28304092.7,11043,C,0.0,1.4633 +0,334,2018-12-18,1049829,635.4,33185217.7,10839,dDd,0.0,1.7967 +73,880,2018-10-10,1049830,557.4,32708628.7,11518,dDd,0.0,-0.5 +26,784,2018-10-10,1049831,37.4,1604211.7,10581,dDd,0.0,1.9025 +47,460,2018-12-11,1049832,531.4,21688779.7,11279,dDd,0.0,1.9146 +21,158,2018-12-6,1049833,864.4,27389165.7,10910,C,0.0,-0.5 +8,418,2018-11-12,1049834,844.4,39506657.7,10387,b,0.0,0.0668 +85,94,2018-12-8,1049835,490.4,10371939.7,10112,aaa,0.0,1.3628 +100,998,2018-10-16,1049836,82.4,38817885.7,10587,aaa,0.0,-0.5 +84,652,2018-12-8,1049837,310.4,35449720.7,11583,C,1.0,1.9289 +63,490,2018-10-9,1049838,298.4,7459300.7,11528,aaa,0.0,0.8124 +61,197,2018-11-17,1049839,602.4,28288048.7,11411,C,0.0,-0.5 +72,584,2018-11-28,1049840,286.4,38526274.7,10056,C,1.0,1.0769 +4,64,2018-11-27,1049841,486.4,20371487.7,10993,C,0.0,1.6564 +82,636,2018-11-18,1049842,42.4,8262923.7,11382,aaa,0.0,-0.5 +94,780,2018-12-3,1049843,734.4,22414368.7,10909,aaa,0.0,1.0510 +100,391,2018-12-2,1049844,171.4,13329799.7,10217,C,0.0,0.8259 +27,678,2018-11-7,1049845,234.4,6742778.7,11691,b,0.0,-0.5 +38,858,2018-12-2,1049846,857.4,8130573.7,10951,b,0.0,0.0084 +18,710,2018-10-13,1049847,748.4,14666580.7,10021,dDd,0.0,0.1455 +78,666,2018-12-4,1049848,25.4,12639838.7,11980,aaa,0.0,-0.5 +3,995,2018-11-30,1049849,205.4,6788832.7,10495,b,0.0,0.7360 +13,703,2018-12-17,1049850,763.4,15166712.7,11989,b,0.0,1.1306 +36,240,2018-11-28,1049851,872.4,24234390.7,11536,C,0.0,-0.5 +14,769,2018-11-30,1049852,386.4,23029611.7,11523,dDd,0.0,1.6305 +78,375,2018-12-15,1049853,838.4,6127787.7,10775,dDd,0.0,0.1993 +74,517,2018-11-4,1049854,549.4,37305421.7,11889,b,0.0,-0.5 +9,562,2018-10-6,1049855,741.4,24516025.7,10177,b,0.0,1.6584 +80,913,2018-12-24,1049856,691.4,19680284.7,10650,dDd,0.0,1.4414 +81,983,2018-12-10,1049857,721.4,2128860.7,11592,aaa,0.0,-0.5 +92,187,2018-10-6,1049858,238.4,15355527.7,10874,b,0.0,1.6999 +39,528,2018-11-1,1049859,521.4,19614508.7,11862,dDd,0.0,0.9046 +4,248,2018-10-27,1049860,712.4,2948571.7,10185,b,0.0,-0.5 +52,814,2018-12-17,1049861,533.4,10370209.7,10628,aaa,0.0,0.1631 +69,71,2018-11-29,1049862,827.4,1967276.7,11687,C,0.0,0.8072 +80,839,2018-11-29,1049863,895.4,19543265.7,10240,b,0.0,-0.5 +13,751,2018-12-11,1049864,226.4,30711711.7,11698,C,0.0,0.2523 +12,719,2018-12-22,1049865,132.4,17693003.7,11851,aaa,0.0,0.8739 +31,381,2018-12-29,1049866,320.4,26797551.7,10469,dDd,0.0,-0.5 +73,840,2018-10-4,1049867,656.4,29796637.7,10551,aaa,0.0,0.8240 +27,277,2018-11-12,1049868,311.4,21257189.7,11800,dDd,0.0,0.8028 +58,815,2018-11-18,1049869,16.4,30803479.7,10377,dDd,0.0,-0.5 +91,143,2018-11-26,1049870,703.4,31406570.7,11850,C,0.0,0.0940 +49,661,2018-10-8,1049871,591.4,33010542.7,10540,aaa,0.0,1.8798 +14,361,2018-10-2,1049872,73.4,28461783.7,11872,b,0.0,-0.5 +29,204,2018-11-26,1049873,457.4,28098559.7,10133,b,0.0,0.9889 +9,630,2018-11-1,1049874,429.4,6462374.7,10844,b,0.0,0.9308 +45,398,2018-11-6,1049875,809.4,30342380.7,10062,C,0.0,-0.5 +86,615,2018-11-24,1049876,173.4,31671458.7,10306,C,1.0,0.5102 +66,255,2018-12-18,1049877,128.4,38939877.7,10097,b,0.0,0.9392 +3,221,2018-11-8,1049878,316.4,21291487.7,11579,aaa,0.0,-0.5 +29,88,2018-11-1,1049879,438.4,10490925.7,11576,dDd,0.0,1.9480 +70,663,2018-10-12,1049880,909.4,33995754.7,11091,C,0.0,1.6752 +33,768,2018-12-13,1049881,179.4,10985173.7,11987,dDd,0.0,-0.5 +50,311,2018-12-3,1049882,271.4,32421950.7,10134,dDd,0.0,0.2871 +74,824,2018-10-26,1049883,206.4,9480962.7,11111,C,0.0,1.3057 +98,708,2018-11-12,1049884,161.4,35661061.7,10413,dDd,0.0,-0.5 +62,127,2018-12-12,1049885,337.4,25711928.7,10323,C,0.0,1.6300 +43,536,2018-11-10,1049886,254.4,5257207.7,10330,aaa,0.0,0.9640 +0,857,2018-10-30,1049887,873.4,18826077.7,11146,b,0.0,-0.5 +43,942,2018-11-12,1049888,580.4,34823143.7,11875,aaa,0.0,1.2290 +35,48,2018-10-23,1049889,593.4,5734100.7,10859,b,0.0,0.6639 +98,997,2018-11-12,1049890,709.4,2322233.7,11118,dDd,0.0,-0.5 +33,798,2018-10-29,1049891,198.4,27067323.7,11083,dDd,0.0,0.6247 +86,654,2018-10-21,1049892,748.4,29489548.7,10972,dDd,0.0,0.8271 +69,493,2018-12-19,1049893,456.4,29521195.7,11443,dDd,0.0,-0.5 +80,117,2018-11-11,1049894,507.4,5317629.7,10924,b,0.0,1.9349 +12,642,2018-12-7,1049895,18.4,7908923.7,11035,dDd,0.0,1.0794 +81,210,2018-11-1,1049896,246.4,17015865.7,10017,aaa,0.0,-0.5 +50,152,2018-10-20,1049897,887.4,35156849.7,10176,aaa,0.0,0.6080 +51,34,2018-10-2,1049898,301.4,2341632.7,11202,dDd,0.0,1.9034 +79,355,2018-11-13,1049899,666.4,12479913.7,11696,dDd,0.0,-0.5 +66,886,2018-12-12,1049900,94.4,26957298.7,10042,dDd,0.0,0.0934 +23,179,2018-11-9,1049901,816.4,39461570.7,10335,dDd,0.0,1.9974 +19,239,2018-11-17,1049902,257.4,3168625.7,10353,C,0.0,-0.5 +13,122,2018-12-19,1049903,354.4,26222450.7,10147,b,0.0,1.2353 +34,917,2018-12-11,1049904,723.4,9419580.7,11838,b,0.0,0.9863 +45,557,2018-11-4,1049905,923.4,39663552.7,11267,b,0.0,-0.5 +21,702,2018-10-18,1049906,651.4,38949276.7,10564,aaa,0.0,1.2032 +96,503,2018-11-2,1049907,129.4,3446627.7,10371,aaa,0.0,1.4965 +99,929,2018-11-14,1049908,703.4,28339635.7,11689,aaa,0.0,-0.5 +57,34,2018-11-23,1049909,934.4,35614330.7,10109,aaa,0.0,1.3166 +87,852,2018-11-2,1049910,316.4,22974034.7,11243,b,0.0,1.4445 +83,170,2018-11-16,1049911,70.4,16942877.7,11128,C,0.0,-0.5 +7,491,2018-12-10,1049912,264.4,27489350.7,11357,dDd,0.0,0.5607 +100,92,2018-10-12,1049913,939.4,14858263.7,10648,C,0.0,1.7316 +23,907,2018-10-20,1049914,763.4,2186573.7,10771,b,0.0,-0.5 +62,474,2018-12-18,1049915,912.4,37763744.7,11153,aaa,0.0,0.0040 +90,473,2018-10-6,1049916,16.4,21002603.7,11750,b,0.0,1.3617 +96,582,2018-11-19,1049917,143.4,14865801.7,10067,dDd,0.0,-0.5 +34,520,2018-10-12,1049918,87.4,18027844.7,10547,C,1.0,0.8888 +21,641,2018-11-14,1049919,698.4,2027518.7,11282,b,0.0,0.5907 +33,615,2018-12-30,1049920,354.4,15049499.7,10367,dDd,0.0,-0.5 +9,494,2018-11-6,1049921,582.4,34932543.7,10185,aaa,0.0,0.6782 +11,898,2018-10-9,1049922,950.4,10750329.7,11883,b,0.0,1.2153 +19,74,2018-10-4,1049923,973.4,19654119.7,11162,aaa,0.0,-0.5 +50,999,2018-10-22,1049924,267.4,38897187.7,10929,aaa,0.0,1.2748 +40,567,2018-11-18,1049925,78.4,25973217.7,10610,C,1.0,1.1503 +80,385,2018-12-18,1049926,119.4,9922474.7,11733,b,0.0,-0.5 +16,485,2018-10-15,1049927,765.4,25854515.7,10110,dDd,0.0,0.7453 +32,735,2018-11-2,1049928,897.4,12113517.7,11022,dDd,0.0,1.7582 +96,146,2018-10-7,1049929,511.4,9173018.7,10095,aaa,0.0,-0.5 +45,140,2018-10-29,1049930,596.4,27586529.7,11235,b,0.0,1.0186 +28,777,2018-10-29,1049931,212.4,17260845.7,10879,dDd,0.0,1.8516 +15,699,2018-11-22,1049932,553.4,27308084.7,11714,aaa,0.0,-0.5 +10,348,2018-12-9,1049933,622.4,22745320.7,10102,C,0.0,1.1717 +53,65,2018-11-27,1049934,504.4,11399239.7,10019,dDd,0.0,1.0870 +8,437,2018-11-29,1049935,474.4,37233935.7,10285,C,1.0,-0.5 +54,705,2018-12-11,1049936,226.4,6331758.7,10857,aaa,0.0,0.2556 +92,999,2018-12-7,1049937,365.4,32144246.7,10785,b,0.0,0.2902 +59,468,2018-11-16,1049938,470.4,37056211.7,11237,C,1.0,-0.5 +3,436,2018-11-15,1049939,170.4,18257815.7,11216,C,1.0,0.2787 +52,160,2018-12-24,1049940,471.4,31498441.7,10550,dDd,0.0,1.6068 +12,643,2018-10-17,1049941,679.4,21858927.7,11262,C,1.0,-0.5 +8,66,2018-11-13,1049942,797.4,7757464.7,10028,b,0.0,1.9770 +79,146,2018-12-24,1049943,684.4,21052481.7,10053,b,0.0,0.1674 +10,848,2018-10-26,1049944,464.4,26449872.7,11994,b,0.0,-0.5 +89,946,2018-10-8,1049945,426.4,5384283.7,11797,dDd,0.0,0.9809 +8,487,2018-12-10,1049946,386.4,4485378.7,11809,b,0.0,0.1715 +41,676,2018-10-17,1049947,818.4,4511628.7,10908,b,0.0,-0.5 +79,923,2018-10-24,1049948,685.4,26053284.7,11680,C,0.0,0.9489 +25,937,2018-12-26,1049949,167.4,30144346.7,11544,dDd,0.0,1.0603 +94,275,2018-11-14,1049950,588.4,33183432.7,10521,aaa,0.0,-0.5 +15,902,2018-11-30,1049951,726.4,24027515.7,10029,C,0.0,1.5808 +27,786,2018-12-17,1049952,266.4,33644391.7,11835,aaa,0.0,1.7385 +50,241,2018-11-2,1049953,744.4,18473514.7,11900,C,0.0,-0.5 +45,243,2018-12-20,1049954,367.4,9426050.7,11261,b,0.0,1.0398 +17,969,2018-10-21,1049955,333.4,31721222.7,10802,dDd,0.0,1.0133 +60,441,2018-10-7,1049956,239.4,19940361.7,11246,aaa,0.0,-0.5 +92,929,2018-12-10,1049957,105.4,7633714.7,10010,b,0.0,1.5781 +75,287,2018-11-16,1049958,154.4,37197926.7,10973,aaa,0.0,1.7585 +28,64,2018-10-8,1049959,276.4,30681125.7,11710,aaa,0.0,-0.5 +87,424,2018-12-7,1049960,387.4,13636919.7,10421,b,0.0,0.0199 +34,706,2018-10-18,1049961,407.4,16752267.7,10628,aaa,0.0,0.7772 +34,138,2018-12-12,1049962,303.4,26785575.7,10033,dDd,0.0,-0.5 +73,390,2018-12-19,1049963,759.4,35804356.7,11553,C,0.0,0.4590 +81,301,2018-12-20,1049964,475.4,17992492.7,10386,dDd,0.0,1.9489 +47,475,2018-11-13,1049965,509.4,32738223.7,11615,aaa,0.0,-0.5 +35,374,2018-12-15,1049966,772.4,37608793.7,10685,aaa,0.0,1.8844 +94,432,2018-12-18,1049967,245.4,10902153.7,10953,b,0.0,0.2045 +30,490,2018-12-20,1049968,820.4,28768015.7,10659,aaa,0.0,-0.5 +75,179,2018-10-23,1049969,786.4,32880228.7,10925,b,0.0,0.8064 +11,95,2018-10-30,1049970,104.4,18661024.7,10493,b,0.0,0.4832 +12,135,2018-11-2,1049971,249.4,5877149.7,10604,dDd,0.0,-0.5 +12,520,2018-10-28,1049972,302.4,24648459.7,10880,C,1.0,1.1728 +36,375,2018-11-18,1049973,387.4,21618787.7,10230,C,0.0,0.4602 +60,312,2018-10-24,1049974,164.4,17482396.7,11588,C,0.0,-0.5 +91,682,2018-11-29,1049975,408.4,26458193.7,11048,aaa,0.0,1.2709 +45,914,2018-10-6,1049976,739.4,39562790.7,11103,dDd,0.0,1.4411 +10,744,2018-11-1,1049977,965.4,11342856.7,11815,aaa,0.0,-0.5 +18,565,2018-10-3,1049978,650.4,32226926.7,11929,aaa,0.0,0.7306 +85,337,2018-11-2,1049979,475.4,581517.7,11990,dDd,0.0,0.3901 +3,895,2018-12-16,1049980,156.4,5035395.7,10918,aaa,0.0,-0.5 +40,153,2018-11-1,1049981,948.4,38389740.7,11644,dDd,0.0,0.7810 +12,409,2018-10-14,1049982,236.4,35471562.7,10483,dDd,0.0,1.9709 +76,796,2018-12-2,1049983,301.4,5066702.7,10574,dDd,0.0,-0.5 +86,706,2018-10-4,1049984,665.4,6170065.7,10293,b,0.0,0.0468 +63,919,2018-12-26,1049985,891.4,724333.7,10051,dDd,0.0,1.0106 +19,663,2018-10-28,1049986,775.4,12063732.7,11996,dDd,0.0,-0.5 +96,541,2018-10-26,1049987,78.4,35719826.7,11675,C,1.0,0.4628 +59,503,2018-10-9,1049988,111.4,2853594.7,11103,b,0.0,0.5888 +23,299,2018-10-4,1049989,25.4,17413830.7,11792,dDd,0.0,-0.5 +11,611,2018-11-25,1049990,383.4,5327693.7,11810,b,0.0,0.6370 +70,226,2018-11-7,1049991,577.4,23854000.7,10903,aaa,0.0,0.6086 +31,137,2018-10-13,1049992,816.4,30840207.7,11949,aaa,0.0,-0.5 +77,492,2018-11-25,1049993,375.4,11017846.7,11617,aaa,0.0,0.6628 +74,672,2018-12-16,1049994,997.4,29622187.7,11782,aaa,0.0,1.0676 +92,469,2018-11-26,1049995,25.4,12345168.7,10268,dDd,0.0,-0.5 +15,728,2018-10-21,1049996,474.4,25623075.7,11489,aaa,0.0,1.7756 +6,831,2018-10-3,1049997,320.4,34930523.7,10284,dDd,0.0,0.9521 +666,831,2018-12-22,1049998,582.4,16144459.7,11133,b,0.0,-0.5 +666,527,2018-10-14,1049999,727.4,31138011.7,10805,aaa,0.0,1.1787 diff --git a/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_weight.csv b/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_weight.csv new file mode 100644 index 00000000..c86e1ddc --- /dev/null +++ b/openml-lightgbm/lightgbm-provider/src/test/resources/instances_with_weight.csv @@ -0,0 +1,713 @@ +card,amount,event_timestamp,uuid,num1_float,num2_double,num3_int,cat1_string,is_fraud_label_indexed,sample_weight_double +17,567,2018-10-6,1049288,160.4,6025580.7,11819,C,1.0,0.0669 +56,38,2018-10-6,1049289,83.4,5283538.7,10565,aaa,0.0,0.6599 +7,503,2018-11-5,1049290,757.4,28760094.7,11177,b,0.0,1.3813 +15,749,2018-11-22,1049291,319.4,3522113.7,11822,b,0.0,0.8450 +87,524,2018-12-3,1049292,815.4,32883183.7,11003,aaa,0.0,0.4125 +48,968,2018-10-7,1049293,34.4,3723194.7,11699,b,0.0,0.5003 +91,552,2018-11-19,1049294,474.4,12149864.7,11836,aaa,0.0,1.2731 +44,902,2018-11-1,1049295,111.4,27091506.7,11830,b,0.0,1.7272 +51,26,2018-12-27,1049296,521.4,17449759.7,11991,b,0.0,0.6033 +35,24,2018-10-18,1049297,404.4,37359857.7,11554,C,0.0,0.0498 +21,582,2018-11-15,1049298,645.4,8400166.7,11341,C,1.0,0.7300 +20,128,2018-11-13,1049299,953.4,28996407.7,10890,aaa,0.0,1.5308 +54,847,2018-12-18,1049300,18.4,19075072.7,11065,C,0.0,0.6357 +54,636,2018-11-8,1049301,546.4,6903447.7,11121,dDd,0.0,0.2715 +85,231,2018-10-10,1049302,645.4,19859752.7,10973,aaa,0.0,0.2135 +6,691,2018-10-28,1049303,74.4,31026014.7,10388,b,0.0,1.5213 +29,311,2018-11-15,1049304,957.4,22808904.7,10299,b,0.0,0.1633 +78,805,2018-10-27,1049305,931.4,10358131.7,10907,C,0.0,1.1019 +84,882,2018-12-10,1049306,790.4,37998060.7,11038,b,0.0,1.1293 +57,579,2018-11-25,1049307,954.4,35367561.7,11540,C,0.0,1.4865 +79,544,2018-11-21,1049308,67.4,34387902.7,10280,dDd,0.0,1.9635 +92,649,2018-12-13,1049309,295.4,16600833.7,11241,b,0.0,0.4377 +46,152,2018-10-3,1049310,692.4,31376892.7,11776,b,0.0,0.9088 +37,832,2018-11-25,1049311,77.4,33046809.7,10262,b,0.0,1.0373 +79,90,2018-11-1,1049312,897.4,26019875.7,11006,b,0.0,1.1477 +36,419,2018-10-3,1049313,848.4,33393435.7,10937,b,0.0,1.1105 +99,194,2018-10-28,1049314,389.4,16413028.7,10230,aaa,0.0,1.4571 +18,977,2018-11-1,1049315,602.4,36307673.7,11421,dDd,0.0,1.2577 +59,643,2018-11-27,1049316,170.4,8919422.7,11490,dDd,0.0,1.5923 +39,320,2018-10-24,1049317,530.4,8713834.7,11933,aaa,0.0,1.1674 +29,950,2018-11-22,1049318,44.4,11624206.7,10918,dDd,0.0,0.5495 +50,359,2018-12-29,1049319,937.4,8182500.7,10396,C,0.0,1.6592 +69,961,2018-11-18,1049320,999.4,13074615.7,10372,aaa,0.0,1.8274 +17,173,2018-11-18,1049321,527.4,4531587.7,11237,aaa,0.0,1.9308 +90,480,2018-12-1,1049322,594.4,19013138.7,10573,dDd,0.0,0.5042 +41,528,2018-10-5,1049323,424.4,31516519.7,10731,b,0.0,0.2399 +49,641,2018-12-19,1049324,599.4,21868175.7,10771,b,0.0,0.4311 +46,672,2018-11-3,1049325,396.4,27860735.7,11473,b,0.0,1.7773 +16,552,2018-10-21,1049326,627.4,25320892.7,11056,C,1.0,1.9671 +95,613,2018-12-1,1049327,818.4,31341462.7,10873,dDd,0.0,1.0344 +75,910,2018-11-14,1049328,644.4,11239364.7,10776,dDd,0.0,1.8271 +51,179,2018-12-16,1049329,774.4,29858606.7,11328,dDd,0.0,0.6971 +30,477,2018-12-24,1049330,521.4,4150163.7,10661,C,1.0,0.5651 +58,266,2018-11-4,1049331,522.4,37458619.7,11806,dDd,0.0,0.4629 +49,319,2018-12-29,1049332,707.4,22404561.7,11808,dDd,0.0,0.9686 +74,924,2018-12-10,1049333,686.4,16087861.7,11949,aaa,0.0,0.7786 +49,673,2018-12-20,1049334,117.4,14259755.7,11403,C,1.0,1.9842 +27,642,2018-12-3,1049335,879.4,28985545.7,10193,C,0.0,1.1319 +31,702,2018-10-10,1049336,180.4,25185877.7,11748,b,0.0,1.8805 +36,101,2018-11-30,1049337,923.4,15362870.7,10519,dDd,0.0,1.1135 +26,296,2018-11-1,1049338,843.4,26609141.7,11301,b,0.0,0.6185 +3,412,2018-12-22,1049339,354.4,23396197.7,11876,b,0.0,1.8441 +26,265,2018-11-12,1049340,961.4,10331127.7,11151,dDd,0.0,1.5512 +80,987,2018-12-22,1049341,255.4,18799834.7,11832,dDd,0.0,1.5273 +85,50,2018-10-17,1049342,25.4,4539677.7,11563,aaa,0.0,0.8814 +63,553,2018-10-25,1049343,447.4,36735570.7,10287,b,0.0,0.6989 +61,778,2018-11-26,1049344,362.4,5427283.7,11992,aaa,0.0,0.6377 +85,544,2018-11-16,1049345,52.4,4001584.7,10558,aaa,0.0,0.3385 +9,138,2018-11-9,1049346,270.4,37231785.7,10929,C,0.0,1.9566 +10,616,2018-12-9,1049347,334.4,27942777.7,11806,aaa,0.0,0.2300 +42,858,2018-12-23,1049348,158.4,8404215.7,10777,dDd,0.0,1.5059 +69,6,2018-11-13,1049349,546.4,15308850.7,11832,dDd,0.0,0.5062 +71,456,2018-11-6,1049350,13.4,11477405.7,10776,dDd,0.0,1.8892 +69,424,2018-10-17,1049351,877.4,7552889.7,10988,b,0.0,1.3332 +91,412,2018-12-1,1049352,142.4,23523400.7,10300,C,1.0,0.4370 +41,7,2018-10-8,1049353,764.4,798581.7,11735,dDd,0.0,0.3933 +2,656,2018-12-30,1049354,142.4,7892579.7,10920,C,1.0,1.5731 +32,174,2018-10-15,1049355,424.4,30096218.7,11920,C,0.0,0.8680 +74,102,2018-12-17,1049356,628.4,9966560.7,11969,aaa,0.0,0.1706 +39,597,2018-11-28,1049357,174.4,18238744.7,11288,dDd,0.0,1.5403 +96,339,2018-12-10,1049358,810.4,332899.7,11519,aaa,0.0,1.9024 +85,350,2018-12-12,1049359,954.4,2988438.7,10731,b,0.0,1.9978 +93,170,2018-11-12,1049360,916.4,20065446.7,11591,C,0.0,0.2374 +39,447,2018-10-6,1049361,146.4,39232857.7,11760,dDd,0.0,0.4675 +89,704,2018-10-3,1049362,738.4,13707294.7,10924,C,0.0,0.4606 +26,559,2018-10-27,1049363,558.4,23584741.7,11565,dDd,0.0,1.2060 +45,459,2018-11-26,1049364,822.4,17639277.7,11100,aaa,0.0,1.2462 +6,266,2018-11-12,1049365,953.4,27744001.7,10920,b,0.0,0.4448 +95,612,2018-10-18,1049366,592.4,29096246.7,10451,b,0.0,0.3379 +18,547,2018-10-4,1049367,251.4,38682762.7,11877,aaa,0.0,1.1267 +7,812,2018-11-1,1049368,546.4,38793076.7,10342,b,0.0,1.5583 +30,337,2018-10-29,1049369,509.4,38968593.7,10310,dDd,0.0,0.9564 +82,645,2018-12-14,1049370,752.4,35080814.7,10726,dDd,0.0,0.9708 +5,771,2018-10-7,1049371,451.4,1491396.7,11898,b,0.0,1.1095 +30,470,2018-10-2,1049372,867.4,7016700.7,10355,C,0.0,0.4836 +97,752,2018-12-12,1049373,652.4,12584033.7,11393,b,0.0,1.8521 +35,457,2018-12-4,1049374,4.4,10623678.7,11012,C,1.0,1.8084 +48,999,2018-12-12,1049375,181.4,26896719.7,11864,b,0.0,1.1213 +63,971,2018-11-16,1049376,300.4,29618446.7,10605,aaa,0.0,0.1906 +40,659,2018-11-13,1049377,935.4,35644646.7,10331,aaa,0.0,1.7650 +70,524,2018-10-26,1049378,893.4,4015615.7,10365,aaa,0.0,1.3513 +80,586,2018-10-10,1049379,834.4,11959317.7,10399,aaa,0.0,1.6965 +32,323,2018-12-15,1049380,307.4,28778499.7,10012,aaa,0.0,0.2712 +37,99,2018-11-6,1049381,223.4,15410836.7,11786,b,0.0,1.2405 +98,751,2018-11-17,1049382,533.4,35268985.7,10634,dDd,0.0,1.0297 +89,176,2018-10-25,1049383,323.4,33315743.7,10637,dDd,0.0,0.7082 +17,226,2018-12-7,1049384,119.4,26961321.7,10831,C,0.0,1.6338 +49,629,2018-12-26,1049385,557.4,2256305.7,10302,b,0.0,0.6029 +8,95,2018-10-8,1049386,864.4,23430968.7,11426,aaa,0.0,1.5762 +99,397,2018-11-3,1049387,93.4,20621185.7,10267,C,0.0,1.8044 +10,309,2018-11-29,1049388,701.4,16742514.7,11911,b,0.0,0.1431 +3,866,2018-10-4,1049389,56.4,22865562.7,11820,dDd,0.0,1.4786 +65,419,2018-12-10,1049390,656.4,3643620.7,11842,aaa,0.0,1.8022 +94,28,2018-10-30,1049391,387.4,37732277.7,11360,b,0.0,0.3805 +25,214,2018-12-29,1049392,228.4,8527569.7,11042,dDd,0.0,1.9461 +100,753,2018-12-19,1049393,80.4,26252736.7,11731,aaa,0.0,0.2628 +25,462,2018-11-27,1049394,712.4,30032785.7,11701,aaa,0.0,1.5865 +43,703,2018-10-11,1049395,615.4,32048887.7,11958,C,0.0,1.1923 +62,419,2018-12-17,1049396,424.4,7517607.7,10732,aaa,0.0,0.7076 +49,96,2018-11-18,1049397,188.4,4148488.7,10887,dDd,0.0,1.9244 +0,472,2018-11-23,1049398,839.4,891910.7,10073,dDd,0.0,0.3190 +16,364,2018-12-27,1049399,404.4,35638674.7,11463,b,0.0,0.2659 +27,489,2018-10-29,1049400,496.4,34884999.7,11699,b,0.0,0.8808 +61,676,2018-10-19,1049401,972.4,35040651.7,11796,dDd,0.0,1.2898 +25,169,2018-12-3,1049402,573.4,16312929.7,10295,aaa,0.0,1.3755 +94,818,2018-10-2,1049403,114.4,15176170.7,11895,dDd,0.0,1.3644 +57,674,2018-12-14,1049404,23.4,25085712.7,10857,dDd,0.0,1.1419 +37,239,2018-10-21,1049405,692.4,22977705.7,10273,C,0.0,1.1839 +29,962,2018-12-9,1049406,653.4,26601831.7,11616,b,0.0,0.4857 +43,200,2018-10-24,1049407,973.4,25474351.7,11384,b,0.0,1.3325 +0,491,2018-12-10,1049408,174.4,13135459.7,10549,b,0.0,0.9489 +5,132,2018-10-17,1049409,666.4,30477808.7,10253,b,0.0,1.8370 +43,809,2018-10-10,1049410,775.4,11598450.7,11232,b,0.0,1.0289 +99,669,2018-11-10,1049411,21.4,8480195.7,11104,dDd,0.0,1.2201 +1,781,2018-10-11,1049412,485.4,4735963.7,11505,C,0.0,1.0775 +8,178,2018-11-7,1049413,979.4,34664212.7,11941,C,0.0,0.0587 +32,115,2018-12-4,1049414,486.4,19001289.7,10731,C,0.0,1.9283 +16,423,2018-12-21,1049415,274.4,16735797.7,11887,dDd,0.0,0.7113 +93,735,2018-10-28,1049416,878.4,15996480.7,10525,C,0.0,0.6615 +96,95,2018-10-4,1049417,31.4,6696057.7,11861,dDd,0.0,1.5045 +59,31,2018-10-27,1049418,723.4,844560.7,10124,aaa,0.0,0.5157 +90,330,2018-10-19,1049419,164.4,31217361.7,10675,C,0.0,0.8047 +15,168,2018-12-10,1049420,205.4,17969936.7,11753,aaa,0.0,0.9831 +30,742,2018-10-13,1049421,542.4,12175267.7,10551,dDd,0.0,0.3179 +97,867,2018-10-5,1049422,182.4,18356710.7,10680,C,0.0,1.1852 +68,159,2018-11-3,1049423,275.4,31053000.7,11540,dDd,0.0,0.9292 +36,711,2018-10-5,1049424,262.4,31535243.7,10447,b,0.0,0.5807 +42,481,2018-12-4,1049425,745.4,39197227.7,10699,b,0.0,0.7717 +11,661,2018-12-22,1049426,526.4,37307237.7,11889,C,1.0,0.1215 +72,380,2018-10-7,1049427,906.4,20607507.7,10642,b,0.0,1.2883 +53,103,2018-12-16,1049428,218.4,7616086.7,10258,b,0.0,0.6961 +36,402,2018-12-22,1049429,770.4,23259431.7,11350,b,0.0,0.4405 +23,990,2018-11-14,1049430,871.4,25274658.7,10442,b,0.0,1.5543 +44,301,2018-12-5,1049431,27.4,4670603.7,11472,b,0.0,1.5769 +0,513,2018-10-19,1049432,373.4,36532176.7,10186,C,1.0,1.7303 +13,415,2018-11-7,1049433,629.4,28633245.7,11822,dDd,0.0,0.9297 +5,317,2018-10-25,1049434,649.4,13168783.7,10529,dDd,0.0,0.9412 +55,251,2018-11-27,1049435,993.4,22013773.7,10673,C,0.0,0.8722 +47,51,2018-12-18,1049436,618.4,3456270.7,11615,dDd,0.0,0.1136 +90,877,2018-11-1,1049437,901.4,12666128.7,10633,b,0.0,1.4269 +44,626,2018-12-17,1049438,56.4,9089618.7,11024,aaa,0.0,0.2046 +41,112,2018-11-2,1049439,238.4,29917321.7,11834,dDd,0.0,1.0625 +72,478,2018-10-8,1049440,909.4,14433213.7,10557,dDd,0.0,1.2639 +38,306,2018-12-4,1049441,324.4,6569835.7,10620,dDd,0.0,1.2336 +51,324,2018-11-9,1049442,665.4,31890909.7,11062,aaa,0.0,0.2826 +98,60,2018-10-26,1049443,116.4,23384717.7,11083,dDd,0.0,0.3414 +54,641,2018-10-9,1049444,624.4,16638992.7,11697,aaa,0.0,1.2922 +76,640,2018-12-13,1049445,689.4,24430247.7,11096,aaa,0.0,0.2108 +56,814,2018-11-27,1049446,14.4,37625839.7,11302,aaa,0.0,1.0527 +86,533,2018-11-1,1049447,163.4,245131.7,10473,aaa,0.0,1.9538 +89,686,2018-11-4,1049448,457.4,15016709.7,11890,b,0.0,1.7153 +48,443,2018-10-28,1049449,351.4,7795400.7,11179,dDd,0.0,1.5684 +47,618,2018-12-16,1049450,572.4,12519492.7,10666,b,0.0,0.7584 +20,403,2018-10-18,1049451,357.4,5029242.7,11981,dDd,0.0,0.6984 +62,238,2018-10-20,1049452,235.4,24811206.7,10705,C,0.0,1.8863 +45,569,2018-12-27,1049453,953.4,17939174.7,10286,b,0.0,1.9436 +5,406,2018-11-19,1049454,468.4,2646862.7,10437,aaa,0.0,1.6276 +98,218,2018-12-13,1049455,992.4,19349809.7,10036,C,0.0,0.4671 +86,974,2018-10-29,1049456,64.4,36516019.7,10536,C,0.0,0.7153 +12,627,2018-11-26,1049457,466.4,3112591.7,11093,aaa,0.0,1.7491 +90,600,2018-12-17,1049458,231.4,7624169.7,11984,dDd,0.0,1.7554 +59,237,2018-12-12,1049459,600.4,38441315.7,11117,dDd,0.0,1.4114 +77,780,2018-12-9,1049460,368.4,24752703.7,11455,aaa,0.0,0.1896 +30,39,2018-11-9,1049461,320.4,12058750.7,11233,aaa,0.0,1.3097 +78,203,2018-10-27,1049462,593.4,24970811.7,10249,dDd,0.0,0.9883 +13,688,2018-10-1,1049463,615.4,29657479.7,11569,dDd,0.0,1.9199 +91,78,2018-12-5,1049464,563.4,7204973.7,10594,aaa,0.0,0.2394 +31,218,2018-10-17,1049465,558.4,4362915.7,11650,C,0.0,1.9295 +5,899,2018-10-27,1049466,845.4,17971788.7,10178,C,0.0,0.7920 +53,891,2018-11-12,1049467,274.4,26592075.7,11103,aaa,0.0,0.3530 +64,553,2018-12-19,1049468,265.4,1929575.7,11996,b,0.0,1.3564 +74,366,2018-12-22,1049469,691.4,2088511.7,10587,C,0.0,0.9967 +29,866,2018-11-18,1049470,518.4,20174337.7,10487,aaa,0.0,1.4155 +35,608,2018-11-14,1049471,97.4,20662806.7,11331,b,0.0,0.6204 +10,122,2018-12-3,1049472,317.4,1510426.7,10537,C,0.0,0.2302 +41,71,2018-10-6,1049473,594.4,15039203.7,11600,C,0.0,1.6981 +0,670,2018-12-5,1049474,302.4,16543567.7,10827,C,1.0,0.9618 +61,828,2018-10-5,1049475,732.4,33239363.7,11160,b,0.0,1.5225 +84,99,2018-12-28,1049476,236.4,36293614.7,10722,b,0.0,1.9089 +53,834,2018-11-2,1049477,492.4,19458376.7,10444,b,0.0,0.0145 +97,213,2018-11-6,1049478,619.4,10047739.7,10001,C,0.0,1.4762 +87,582,2018-12-18,1049479,536.4,2498679.7,10247,aaa,0.0,1.6242 +94,651,2018-11-23,1049480,889.4,32350240.7,11700,C,0.0,1.5829 +42,511,2018-10-19,1049481,773.4,15983466.7,11138,b,0.0,0.2347 +90,226,2018-11-22,1049482,883.4,18627824.7,10753,aaa,0.0,0.3226 +50,826,2018-11-9,1049483,358.4,15077180.7,10565,b,0.0,1.4692 +88,907,2018-10-19,1049484,981.4,39380395.7,11621,aaa,0.0,0.1783 +100,456,2018-10-15,1049485,890.4,35427831.7,10527,dDd,0.0,1.9501 +71,248,2018-10-27,1049486,126.4,23126790.7,11294,b,0.0,1.9363 +99,504,2018-11-25,1049487,176.4,21857401.7,11276,C,1.0,0.8936 +54,899,2018-12-1,1049488,645.4,32542900.7,10010,dDd,0.0,1.6992 +96,40,2018-11-19,1049489,567.4,25396572.7,11859,C,0.0,1.6917 +50,255,2018-10-11,1049490,653.4,12780974.7,10357,aaa,0.0,0.3050 +32,259,2018-10-23,1049491,900.4,6830317.7,10587,dDd,0.0,1.8888 +31,17,2018-12-25,1049492,805.4,13832927.7,11012,dDd,0.0,1.0014 +51,825,2018-11-29,1049493,230.4,37520032.7,11070,aaa,0.0,1.2933 +6,495,2018-11-10,1049494,541.4,26678573.7,11640,aaa,0.0,1.8086 +81,651,2018-10-23,1049495,300.4,26470328.7,11070,b,0.0,1.2408 +4,843,2018-12-17,1049496,834.4,11395154.7,11499,dDd,0.0,1.2228 +46,113,2018-11-26,1049497,470.4,9527269.7,11590,b,0.0,0.6007 +0,769,2018-12-27,1049498,415.4,31241419.7,10682,aaa,0.0,1.5939 +60,17,2018-12-22,1049499,131.4,5933267.7,10919,aaa,0.0,0.5793 +61,537,2018-12-5,1049500,868.4,33351755.7,11937,b,0.0,1.5973 +9,16,2018-11-26,1049501,462.4,14462691.7,10390,aaa,0.0,1.0094 +38,919,2018-10-16,1049502,988.4,19264188.7,11377,aaa,0.0,1.1996 +53,630,2018-11-17,1049503,974.4,26744420.7,11110,b,0.0,1.8276 +63,25,2018-12-9,1049504,268.4,36783590.7,11586,dDd,0.0,0.7075 +16,811,2018-12-22,1049505,472.4,39084976.7,11699,C,0.0,0.1614 +43,464,2018-10-27,1049506,747.4,19793308.7,11049,b,0.0,1.3501 +37,412,2018-11-27,1049507,42.4,1358285.7,10462,aaa,0.0,0.6164 +95,559,2018-11-20,1049508,727.4,20365379.7,11373,b,0.0,0.1759 +29,236,2018-11-13,1049509,664.4,26605061.7,11170,b,0.0,0.8263 +41,255,2018-11-2,1049510,253.4,28466751.7,11235,C,0.0,0.2406 +20,635,2018-12-8,1049511,404.4,17016091.7,10069,b,0.0,1.7588 +86,223,2018-10-21,1049512,688.4,34237770.7,10533,b,0.0,1.0610 +39,522,2018-10-12,1049513,417.4,15643014.7,10569,b,0.0,0.5632 +94,449,2018-11-21,1049514,433.4,6168090.7,11029,aaa,0.0,1.2280 +79,638,2018-11-8,1049515,870.4,12464362.7,11903,b,0.0,1.2393 +86,162,2018-11-4,1049516,234.4,25425977.7,10968,C,0.0,0.5133 +22,324,2018-12-15,1049517,270.4,23999471.7,11926,C,0.0,1.1643 +85,557,2018-12-18,1049518,733.4,15451423.7,10691,aaa,0.0,0.1329 +89,843,2018-10-3,1049519,114.4,12184849.7,11343,C,0.0,0.2125 +78,719,2018-10-5,1049520,238.4,506401.7,11253,aaa,0.0,0.8560 +90,375,2018-11-14,1049521,4.4,5266344.7,10727,aaa,0.0,0.4379 +77,255,2018-12-26,1049522,666.4,15800484.7,10201,b,0.0,0.1012 +97,973,2018-12-24,1049523,724.4,30507970.7,10698,aaa,0.0,1.8574 +65,893,2018-11-7,1049524,659.4,30215369.7,10682,C,0.0,1.7312 +3,371,2018-11-15,1049525,607.4,3139760.7,10084,C,0.0,1.9099 +86,524,2018-10-12,1049526,774.4,15891699.7,10806,dDd,0.0,1.0983 +14,0,2018-10-28,1049527,260.4,16023321.7,10953,C,0.0,0.9540 +23,554,2018-11-20,1049528,733.4,33462835.7,10493,aaa,0.0,0.5105 +40,359,2018-10-28,1049529,469.4,2437866.7,11001,dDd,0.0,0.6921 +26,782,2018-12-18,1049530,20.4,7936545.7,11619,b,0.0,1.5333 +96,967,2018-10-28,1049531,207.4,37802309.7,11073,dDd,0.0,0.1079 +4,13,2018-12-7,1049532,887.4,27264494.7,10737,C,0.0,1.7015 +77,855,2018-11-25,1049533,229.4,25635084.7,10797,dDd,0.0,0.7329 +0,160,2018-11-11,1049534,162.4,29388904.7,11082,dDd,0.0,1.9355 +66,320,2018-10-2,1049535,37.4,35592587.7,10087,C,0.0,0.4090 +10,509,2018-11-23,1049536,220.4,22169042.7,11672,b,0.0,0.8944 +57,968,2018-10-27,1049537,497.4,29900043.7,10895,C,0.0,1.2855 +47,377,2018-11-30,1049538,95.4,17035699.7,11311,C,0.0,1.0253 +57,74,2018-10-29,1049539,973.4,31494828.7,10572,dDd,0.0,1.0703 +58,559,2018-11-5,1049540,635.4,7420786.7,10017,b,0.0,0.1118 +28,34,2018-12-11,1049541,334.4,13379455.7,11015,aaa,0.0,1.2659 +38,743,2018-10-20,1049542,391.4,23837989.7,10131,b,0.0,0.8291 +83,532,2018-12-18,1049543,832.4,15830137.7,11532,aaa,0.0,1.1728 +2,814,2018-10-22,1049544,467.4,26559223.7,10484,C,0.0,1.8291 +14,432,2018-12-9,1049545,318.4,37408336.7,11568,b,0.0,0.0571 +2,500,2018-10-17,1049546,100.4,8430870.7,11698,aaa,0.0,0.4121 +35,362,2018-11-6,1049547,450.4,24589518.7,10519,dDd,0.0,0.3424 +15,427,2018-10-17,1049548,517.4,4999325.7,11914,aaa,0.0,1.2214 +24,156,2018-12-19,1049549,456.4,39681730.7,10450,dDd,0.0,0.5450 +56,434,2018-10-5,1049550,541.4,37773712.7,11090,b,0.0,0.5548 +67,712,2018-10-1,1049551,354.4,17495832.7,11596,C,0.0,0.0775 +21,536,2018-12-1,1049552,563.4,37445113.7,10293,b,0.0,0.9829 +91,936,2018-11-28,1049553,632.4,10719934.7,10689,C,0.0,0.6561 +55,689,2018-10-10,1049554,514.4,18151461.7,10965,dDd,0.0,1.9349 +36,337,2018-10-25,1049555,881.4,36739079.7,10175,dDd,0.0,0.7141 +99,332,2018-10-12,1049556,300.4,29258614.7,11338,b,0.0,0.5659 +87,463,2018-10-16,1049557,24.4,18942510.7,10513,dDd,0.0,1.0332 +52,88,2018-11-7,1049558,628.4,971485.7,10862,dDd,0.0,1.6681 +58,162,2018-12-11,1049559,262.4,6407442.7,11569,C,0.0,1.0765 +27,598,2018-11-28,1049560,643.4,29104760.7,11936,aaa,0.0,1.7253 +21,112,2018-10-3,1049561,76.4,32042059.7,11926,C,0.0,1.2014 +43,859,2018-11-24,1049562,738.4,5694327.7,11718,aaa,0.0,1.1843 +96,975,2018-12-5,1049563,424.4,25840502.7,11461,C,0.0,1.4268 +62,684,2018-12-5,1049564,679.4,31541667.7,10040,C,1.0,1.9343 +65,730,2018-10-19,1049565,694.4,9127884.7,10146,C,0.0,1.1198 +7,367,2018-12-20,1049566,861.4,37266786.7,10173,b,0.0,1.8357 +80,853,2018-11-15,1049567,425.4,12547948.7,11871,dDd,0.0,0.8287 +73,319,2018-11-19,1049568,177.4,29644133.7,11820,C,0.0,0.4053 +7,132,2018-10-17,1049569,395.4,37072122.7,11115,aaa,0.0,0.8611 +64,145,2018-12-8,1049570,466.4,26805861.7,10503,C,0.0,1.8990 +86,943,2018-10-19,1049571,578.4,599195.7,11385,dDd,0.0,0.5172 +56,245,2018-10-30,1049572,110.4,7061397.7,11043,C,0.0,0.1270 +50,900,2018-11-8,1049573,56.4,26249111.7,11980,dDd,0.0,0.7280 +56,819,2018-12-23,1049574,109.4,30989840.7,10145,dDd,0.0,1.6900 +55,786,2018-10-4,1049575,579.4,28692037.7,11790,C,0.0,1.9561 +85,19,2018-10-19,1049576,522.4,7374515.7,11794,b,0.0,0.7851 +28,941,2018-11-27,1049577,846.4,26778909.7,11802,C,0.0,0.1021 +45,674,2018-10-26,1049578,875.4,14939610.7,11915,aaa,0.0,0.2985 +100,425,2018-11-24,1049579,988.4,36351644.7,11944,C,0.0,0.0066 +35,411,2018-12-5,1049580,41.4,27837948.7,11583,b,0.0,0.6471 +74,795,2018-10-4,1049581,116.4,12779913.7,10238,C,0.0,0.8533 +85,705,2018-12-4,1049582,210.4,12428721.7,10518,C,0.0,0.0841 +76,430,2018-12-8,1049583,810.4,35819436.7,11815,b,0.0,1.6300 +26,700,2018-10-24,1049584,942.4,20950356.7,10132,b,0.0,1.5093 +14,712,2018-11-21,1049585,497.4,13672264.7,10991,b,0.0,0.0190 +83,635,2018-10-18,1049586,260.4,10104005.7,11073,C,1.0,0.3441 +91,325,2018-11-20,1049587,359.4,4037476.7,11398,C,0.0,0.0753 +36,531,2018-12-27,1049588,219.4,27039922.7,10637,aaa,0.0,1.0521 +82,263,2018-10-17,1049589,909.4,26087186.7,11663,C,0.0,0.0122 +85,545,2018-12-10,1049590,162.4,1375397.7,11090,aaa,0.0,1.1517 +48,116,2018-10-7,1049591,505.4,31234848.7,11399,dDd,0.0,0.7774 +99,56,2018-12-12,1049592,101.4,11812821.7,10217,b,0.0,1.2136 +59,96,2018-11-17,1049593,978.4,14740509.7,10929,dDd,0.0,0.3361 +19,574,2018-11-2,1049594,687.4,29212360.7,11613,b,0.0,0.2042 +75,80,2018-12-6,1049595,938.4,33129952.7,10648,b,0.0,1.1480 +22,607,2018-11-18,1049596,508.4,36055006.7,11185,C,1.0,1.4559 +25,37,2018-11-14,1049597,387.4,18986592.7,10883,C,0.0,0.0399 +64,598,2018-10-7,1049598,316.4,4121792.7,10350,C,1.0,1.9767 +64,560,2018-12-21,1049599,797.4,14348711.7,11077,dDd,0.0,1.8612 +45,444,2018-10-1,1049600,804.4,27080873.7,10099,C,0.0,0.9010 +61,9,2018-11-12,1049601,385.4,24576148.7,10404,b,0.0,1.8757 +22,914,2018-10-10,1049602,657.4,31263293.7,11379,dDd,0.0,0.3784 +33,561,2018-11-15,1049603,910.4,37233038.7,11115,dDd,0.0,1.0280 +25,986,2018-11-10,1049604,923.4,36135003.7,11375,b,0.0,0.6037 +50,769,2018-11-4,1049605,990.4,9494034.7,10167,b,0.0,0.0684 +67,554,2018-12-17,1049606,927.4,28523734.7,11694,b,0.0,0.9841 +64,704,2018-12-20,1049607,629.4,24745778.7,10735,dDd,0.0,1.3888 +10,113,2018-12-20,1049608,425.4,26401363.7,11352,C,0.0,0.1705 +62,716,2018-11-23,1049609,576.4,3283958.7,11545,aaa,0.0,1.2825 +42,969,2018-10-10,1049610,902.4,30534179.7,10590,b,0.0,1.3954 +41,354,2018-11-23,1049611,220.4,35013301.7,10288,aaa,0.0,0.8176 +49,928,2018-10-25,1049612,371.4,2759386.7,11062,aaa,0.0,0.1358 +53,476,2018-11-15,1049613,544.4,23726385.7,10822,b,0.0,1.4795 +23,375,2018-10-30,1049614,509.4,25415534.7,11213,aaa,0.0,0.4476 +56,520,2018-12-29,1049615,185.4,24945970.7,10221,b,0.0,1.6451 +96,983,2018-11-6,1049616,420.4,845683.7,10980,C,0.0,1.4985 +85,14,2018-11-13,1049617,278.4,6397136.7,11194,b,0.0,0.7917 +84,259,2018-12-29,1049618,389.4,36714381.7,11499,dDd,0.0,1.7204 +48,728,2018-12-9,1049619,299.4,13907476.7,10925,b,0.0,0.5506 +54,85,2018-12-7,1049620,95.4,33614476.7,10910,dDd,0.0,0.8039 +84,366,2018-10-20,1049621,326.4,38777188.7,10508,aaa,0.0,0.8721 +80,889,2018-12-23,1049622,768.4,33975392.7,11101,b,0.0,1.3280 +64,734,2018-11-25,1049623,171.4,21955001.7,10569,aaa,0.0,0.0176 +44,690,2018-11-7,1049624,403.4,19079824.7,11885,aaa,0.0,1.2082 +93,869,2018-10-28,1049625,201.4,11904345.7,10975,aaa,0.0,1.5321 +7,888,2018-10-25,1049626,443.4,14073884.7,11716,aaa,0.0,1.1656 +84,944,2018-12-14,1049627,457.4,5684496.7,11597,aaa,0.0,0.6641 +77,913,2018-12-21,1049628,701.4,29643687.7,11970,dDd,0.0,1.5720 +54,892,2018-11-19,1049629,882.4,5505089.7,10969,b,0.0,1.1422 +95,473,2018-12-28,1049630,811.4,16460707.7,10951,b,0.0,0.5253 +75,833,2018-11-7,1049631,192.4,17636562.7,11575,b,0.0,0.4730 +20,209,2018-11-30,1049632,395.4,37296971.7,10780,C,0.0,1.0179 +30,517,2018-11-2,1049633,143.4,35049531.7,10386,aaa,0.0,0.9037 +57,516,2018-10-10,1049634,903.4,28042668.7,10800,b,0.0,1.5009 +12,401,2018-11-27,1049635,151.4,11724322.7,11453,C,1.0,1.6216 +3,688,2018-11-21,1049636,422.4,26006899.7,11891,C,1.0,0.9722 +57,74,2018-11-18,1049637,511.4,36545314.7,11201,dDd,0.0,0.4850 +6,878,2018-12-16,1049638,739.4,35663177.7,10869,aaa,0.0,1.0104 +28,179,2018-11-24,1049639,416.4,21462072.7,11346,dDd,0.0,1.1427 +89,643,2018-10-9,1049640,502.4,37094367.7,11641,dDd,0.0,1.7675 +68,746,2018-11-12,1049641,367.4,20828977.7,11898,C,0.0,0.4059 +83,842,2018-10-27,1049642,226.4,36999604.7,11583,C,0.0,1.9603 +19,556,2018-12-27,1049643,102.4,30512916.7,11211,dDd,0.0,1.9033 +87,9,2018-10-27,1049644,642.4,4720144.7,10369,b,0.0,1.8853 +62,116,2018-11-29,1049645,90.4,29831265.7,10700,b,0.0,0.4080 +4,168,2018-12-6,1049646,559.4,6261914.7,11750,C,0.0,1.5484 +71,2,2018-11-13,1049647,526.4,30863515.7,10897,C,0.0,1.3838 +88,926,2018-12-28,1049648,815.4,17353708.7,11403,b,0.0,1.1996 +3,46,2018-10-2,1049649,829.4,299797.7,11696,aaa,0.0,1.2688 +88,722,2018-12-19,1049650,878.4,16682757.7,10490,aaa,0.0,1.9344 +94,894,2018-12-30,1049651,200.4,30204803.7,11182,dDd,0.0,0.0036 +3,582,2018-11-25,1049652,48.4,8694012.7,11140,C,1.0,0.1409 +97,603,2018-12-4,1049653,612.4,2044256.7,11386,C,1.0,1.2623 +97,889,2018-12-8,1049654,198.4,34710801.7,11018,dDd,0.0,0.0211 +73,310,2018-12-29,1049655,79.4,23483770.7,11383,dDd,0.0,1.3491 +99,782,2018-11-20,1049656,222.4,6575175.7,11215,b,0.0,0.7945 +1,98,2018-12-25,1049657,449.4,31928623.7,11206,b,0.0,1.1867 +5,692,2018-12-3,1049658,767.4,1265000.7,10910,aaa,0.0,0.0132 +44,501,2018-12-28,1049659,677.4,33962220.7,10026,dDd,0.0,0.3665 +88,236,2018-10-14,1049660,278.4,19955045.7,11647,aaa,0.0,0.3289 +32,507,2018-10-27,1049661,169.4,37561857.7,11131,C,1.0,0.5385 +23,74,2018-10-8,1049662,866.4,9868752.7,10126,aaa,0.0,0.8395 +26,303,2018-11-8,1049663,623.4,24342629.7,10522,aaa,0.0,1.3468 +10,406,2018-12-20,1049664,845.4,34252486.7,10958,b,0.0,1.4423 +34,157,2018-10-12,1049665,25.4,10618198.7,10793,C,0.0,0.3404 +40,724,2018-12-12,1049666,179.4,39668470.7,11690,aaa,0.0,0.9684 +21,603,2018-10-17,1049667,464.4,35038544.7,10709,dDd,0.0,0.4144 +65,611,2018-11-13,1049668,726.4,7915660.7,10512,C,0.0,0.8254 +66,574,2018-10-24,1049669,871.4,4761966.7,11071,aaa,0.0,1.9789 +42,14,2018-11-9,1049670,712.4,1210364.7,11942,C,0.0,1.5571 +0,436,2018-11-1,1049671,267.4,12509164.7,10897,C,1.0,0.5929 +27,572,2018-12-10,1049672,227.4,39585155.7,11737,b,0.0,0.3847 +24,195,2018-11-23,1049673,788.4,39058581.7,10835,C,0.0,1.5175 +2,833,2018-12-25,1049674,209.4,14846642.7,11081,aaa,0.0,0.4962 +75,635,2018-12-16,1049675,740.4,32442488.7,11327,aaa,0.0,0.2700 +67,762,2018-12-21,1049676,956.4,28250631.7,11548,C,0.0,1.9254 +9,907,2018-10-22,1049677,236.4,235469.7,11117,C,0.0,0.0446 +43,617,2018-11-20,1049678,508.4,12662350.7,11842,C,1.0,1.6538 +64,267,2018-11-28,1049679,708.4,8395033.7,10331,dDd,0.0,1.1251 +49,380,2018-11-14,1049680,422.4,16453200.7,10676,C,0.0,1.3134 +71,740,2018-10-22,1049681,773.4,16391788.7,10967,C,0.0,1.5882 +19,556,2018-11-23,1049682,374.4,26851619.7,10927,b,0.0,1.1287 +21,436,2018-10-19,1049683,404.4,21754058.7,10710,aaa,0.0,1.4543 +71,18,2018-10-3,1049684,560.4,31338947.7,10915,b,0.0,0.8506 +26,990,2018-12-30,1049685,374.4,38890594.7,11978,dDd,0.0,1.1498 +86,651,2018-10-22,1049686,14.4,8546118.7,10972,dDd,0.0,0.8034 +93,270,2018-10-24,1049687,558.4,36775546.7,10923,C,0.0,1.6450 +77,33,2018-12-6,1049688,280.4,10691314.7,10716,dDd,0.0,0.3365 +61,275,2018-10-13,1049689,10.4,14188820.7,11010,dDd,0.0,0.8166 +8,335,2018-12-28,1049690,429.4,11580333.7,10356,C,0.0,0.0115 +24,412,2018-10-29,1049691,822.4,22949069.7,10061,aaa,0.0,0.6654 +16,462,2018-12-7,1049692,655.4,319376.7,10058,dDd,0.0,1.3551 +57,137,2018-10-8,1049693,603.4,21213757.7,10553,b,0.0,0.8510 +92,112,2018-12-23,1049694,692.4,36535443.7,10339,b,0.0,0.0122 +25,711,2018-10-28,1049695,267.4,38790980.7,11837,dDd,0.0,0.7974 +21,160,2018-11-28,1049696,762.4,12698235.7,10442,dDd,0.0,1.1914 +27,315,2018-11-1,1049697,377.4,8287556.7,11544,dDd,0.0,0.9806 +33,311,2018-11-7,1049698,293.4,25056056.7,11526,dDd,0.0,1.2118 +78,566,2018-11-30,1049699,135.4,32273158.7,11722,aaa,0.0,0.0168 +42,808,2018-11-3,1049700,22.4,22842214.7,10064,b,0.0,0.9595 +6,771,2018-10-24,1049701,823.4,14900821.7,10301,b,0.0,0.7690 +13,140,2018-12-11,1049702,873.4,25130170.7,10903,dDd,0.0,0.6098 +77,330,2018-12-20,1049703,999.4,27412209.7,10653,aaa,0.0,1.3442 +85,566,2018-11-5,1049704,33.4,13338176.7,11110,aaa,0.0,0.2865 +90,330,2018-12-10,1049705,87.4,15276449.7,11761,aaa,0.0,1.1060 +90,972,2018-10-1,1049706,929.4,5413107.7,11505,b,0.0,1.6142 +99,990,2018-11-15,1049707,278.4,20643864.7,10609,b,0.0,0.2119 +7,872,2018-11-5,1049708,883.4,485320.7,10244,b,0.0,1.1506 +20,79,2018-12-11,1049709,748.4,6829642.7,10167,dDd,0.0,1.2681 +1,531,2018-11-26,1049710,762.4,15050865.7,11160,dDd,0.0,1.3370 +92,324,2018-10-27,1049711,95.4,4055632.7,10232,b,0.0,0.4640 +11,302,2018-10-16,1049712,254.4,20423099.7,11388,aaa,0.0,0.8563 +7,299,2018-10-13,1049713,778.4,18975982.7,11908,aaa,0.0,0.4657 +86,75,2018-10-17,1049714,898.4,39764088.7,10415,dDd,0.0,1.9183 +36,606,2018-11-15,1049715,205.4,39293799.7,10471,C,1.0,1.7068 +19,86,2018-10-26,1049716,222.4,39066597.7,11910,b,0.0,1.6154 +44,482,2018-10-27,1049717,730.4,17717496.7,11497,dDd,0.0,0.7217 +34,980,2018-11-30,1049718,722.4,37922202.7,10626,aaa,0.0,1.3519 +94,38,2018-12-20,1049719,278.4,36396997.7,11718,aaa,0.0,1.9519 +3,717,2018-10-24,1049720,27.4,5076374.7,10130,dDd,0.0,1.5383 +27,524,2018-10-5,1049721,454.4,32626467.7,10524,b,0.0,1.3634 +41,170,2018-12-15,1049722,17.4,1021409.7,11619,C,0.0,0.6173 +50,997,2018-10-11,1049723,469.4,18180702.7,10240,b,0.0,0.8934 +19,597,2018-12-21,1049724,334.4,8088207.7,11586,aaa,0.0,0.2144 +50,698,2018-10-7,1049725,823.4,6586905.7,10021,dDd,0.0,0.6295 +12,180,2018-11-16,1049726,519.4,26622483.7,10690,aaa,0.0,1.6908 +40,807,2018-12-22,1049727,854.4,31130704.7,10531,aaa,0.0,1.4059 +67,883,2018-11-13,1049728,859.4,6689719.7,11353,C,0.0,1.6101 +34,697,2018-11-26,1049729,560.4,13239267.7,10098,aaa,0.0,0.9027 +43,828,2018-10-12,1049730,122.4,37434413.7,11053,b,0.0,1.4227 +69,827,2018-11-25,1049731,188.4,15954819.7,10664,b,0.0,0.5696 +70,202,2018-10-7,1049732,897.4,39168156.7,11695,dDd,0.0,1.6717 +42,345,2018-11-6,1049733,687.4,37172397.7,11850,aaa,0.0,0.0325 +52,340,2018-11-19,1049734,607.4,12452469.7,10400,aaa,0.0,1.9137 +79,154,2018-11-1,1049735,902.4,30571073.7,10465,aaa,0.0,1.9582 +79,986,2018-11-21,1049736,433.4,23237013.7,11223,C,0.0,1.1384 +100,205,2018-11-22,1049737,663.4,18137333.7,11608,dDd,0.0,1.5280 +83,743,2018-11-19,1049738,473.4,38373326.7,11178,C,0.0,0.1701 +21,924,2018-11-11,1049739,828.4,20999639.7,10329,aaa,0.0,0.2890 +39,351,2018-12-23,1049740,722.4,27348575.7,11973,aaa,0.0,0.7961 +23,469,2018-12-6,1049741,584.4,36098347.7,11565,C,1.0,1.5071 +17,806,2018-11-14,1049742,144.4,39470364.7,11295,dDd,0.0,0.7529 +59,553,2018-12-20,1049743,125.4,14942710.7,10749,C,1.0,1.6523 +46,514,2018-10-17,1049744,854.4,1437819.7,11805,b,0.0,1.9727 +74,186,2018-10-25,1049745,550.4,33319018.7,11637,aaa,0.0,0.6712 +55,512,2018-10-7,1049746,824.4,39320021.7,10001,dDd,0.0,1.3592 +45,694,2018-12-22,1049747,393.4,13460948.7,10383,dDd,0.0,1.5882 +18,248,2018-12-23,1049748,504.4,23629364.7,11813,C,0.0,1.3929 +80,639,2018-11-25,1049749,346.4,31830108.7,10252,dDd,0.0,0.7111 +98,905,2018-10-10,1049750,129.4,7085030.7,11476,C,0.0,1.5401 +68,67,2018-10-11,1049751,641.4,20329898.7,11627,b,0.0,0.9312 +40,971,2018-12-20,1049752,511.4,37255249.7,11723,aaa,0.0,0.0745 +80,717,2018-12-1,1049753,692.4,2065939.7,10429,dDd,0.0,0.1573 +32,37,2018-11-2,1049754,191.4,32184525.7,11252,b,0.0,1.8246 +51,259,2018-12-8,1049755,567.4,5928686.7,10250,dDd,0.0,0.2889 +14,254,2018-10-28,1049756,38.4,15403241.7,10706,b,0.0,0.7868 +49,7,2018-11-2,1049757,752.4,24710634.7,11417,aaa,0.0,1.5154 +39,392,2018-10-12,1049758,64.4,34967252.7,11335,aaa,0.0,1.6948 +100,466,2018-10-23,1049759,953.4,24848538.7,11386,aaa,0.0,0.3969 +73,433,2018-10-21,1049760,929.4,4764149.7,11170,aaa,0.0,0.4181 +9,393,2018-11-12,1049761,656.4,38569613.7,10332,dDd,0.0,1.1175 +46,363,2018-10-24,1049762,90.4,33965748.7,10023,dDd,0.0,0.9664 +69,439,2018-12-28,1049763,984.4,9852930.7,10377,C,0.0,0.0898 +54,390,2018-10-29,1049764,952.4,13031463.7,10182,aaa,0.0,1.1499 +46,300,2018-10-1,1049765,259.4,26505540.7,10530,aaa,0.0,0.8802 +11,101,2018-11-2,1049766,133.4,6016198.7,10071,b,0.0,0.0479 +39,477,2018-11-19,1049767,948.4,19515888.7,10907,C,0.0,0.2883 +85,776,2018-11-6,1049768,69.4,26961242.7,10260,dDd,0.0,0.4082 +68,926,2018-10-5,1049769,792.4,23638589.7,10129,dDd,0.0,0.2180 +70,1,2018-12-7,1049770,870.4,28429581.7,11219,dDd,0.0,0.5773 +22,464,2018-12-17,1049771,38.4,31189827.7,10387,b,0.0,1.2042 +19,948,2018-12-22,1049772,972.4,9858477.7,10300,C,0.0,1.7251 +1,487,2018-11-13,1049773,185.4,25188993.7,10025,C,1.0,1.3303 +92,47,2018-10-29,1049774,790.4,35565244.7,11953,aaa,0.0,0.8566 +40,403,2018-10-20,1049775,901.4,25294272.7,11145,aaa,0.0,1.6978 +71,710,2018-12-16,1049776,520.4,13493521.7,10570,aaa,0.0,0.0015 +2,764,2018-10-13,1049777,628.4,36373613.7,10535,aaa,0.0,0.2157 +45,957,2018-12-13,1049778,297.4,33646111.7,11478,aaa,0.0,1.2860 +5,876,2018-10-2,1049779,820.4,31364483.7,10763,aaa,0.0,1.3943 +71,634,2018-12-22,1049780,675.4,22519001.7,11517,dDd,0.0,0.9268 +85,868,2018-10-28,1049781,351.4,3228285.7,11618,b,0.0,0.8260 +10,712,2018-11-4,1049782,851.4,36031178.7,11851,dDd,0.0,0.3255 +55,765,2018-12-29,1049783,461.4,16590798.7,10517,C,0.0,1.0013 +34,837,2018-12-29,1049784,22.4,11315908.7,10801,C,0.0,0.9833 +15,547,2018-10-19,1049785,962.4,1777890.7,10558,C,0.0,0.1501 +34,370,2018-11-26,1049786,525.4,691876.7,10146,C,0.0,1.2902 +11,517,2018-11-17,1049787,275.4,1601811.7,11607,C,1.0,1.7701 +40,388,2018-11-15,1049788,632.4,6987671.7,10512,C,0.0,1.6655 +76,518,2018-10-14,1049789,298.4,1886372.7,11327,C,1.0,0.9849 +53,267,2018-10-21,1049790,432.4,8351594.7,11274,b,0.0,0.1670 +74,322,2018-12-4,1049791,294.4,32866557.7,10347,dDd,0.0,0.0836 +89,145,2018-11-30,1049792,795.4,30815308.7,10017,aaa,0.0,0.1024 +89,282,2018-12-12,1049793,296.4,33327072.7,11073,aaa,0.0,1.1334 +94,111,2018-11-12,1049794,406.4,8200874.7,11328,b,0.0,0.1733 +45,973,2018-10-28,1049795,938.4,4373504.7,10921,dDd,0.0,1.2523 +40,370,2018-11-17,1049796,186.4,31190901.7,10018,b,0.0,0.0136 +12,963,2018-12-4,1049797,391.4,32614914.7,10312,aaa,0.0,0.2212 +2,356,2018-10-26,1049798,536.4,34946832.7,11591,aaa,0.0,1.5406 +73,26,2018-11-22,1049799,120.4,24211015.7,11864,C,0.0,0.4217 +69,329,2018-12-26,1049800,707.4,10827844.7,10774,aaa,0.0,0.4392 +88,168,2018-10-28,1049801,740.4,20308442.7,10267,b,0.0,0.1179 +52,412,2018-12-13,1049802,161.4,7679505.7,11993,C,1.0,1.6260 +27,378,2018-11-26,1049803,274.4,14635592.7,11045,C,0.0,0.1643 +66,513,2018-11-10,1049804,45.4,33848364.7,10433,aaa,0.0,1.4482 +86,46,2018-10-3,1049805,601.4,37147806.7,11546,aaa,0.0,0.4825 +73,93,2018-10-2,1049806,458.4,3232966.7,11178,b,0.0,1.8621 +31,1,2018-12-11,1049807,840.4,34640553.7,10811,aaa,0.0,1.4497 +92,25,2018-11-15,1049808,281.4,18054196.7,10437,C,0.0,0.6982 +36,687,2018-12-10,1049809,405.4,37648967.7,10151,C,1.0,1.1481 +18,201,2018-11-7,1049810,345.4,35205745.7,11874,C,0.0,0.8440 +70,869,2018-11-9,1049811,958.4,36749445.7,11328,aaa,0.0,1.6250 +93,328,2018-10-20,1049812,92.4,31913310.7,11988,aaa,0.0,1.9741 +40,860,2018-10-13,1049813,58.4,17236021.7,10611,aaa,0.0,1.1695 +25,486,2018-12-8,1049814,711.4,11060297.7,11890,b,0.0,0.6263 +4,122,2018-10-30,1049815,101.4,12309948.7,10473,dDd,0.0,0.9574 +74,951,2018-11-18,1049816,694.4,13080141.7,11056,dDd,0.0,1.3196 +35,192,2018-11-24,1049817,542.4,27092275.7,11047,C,0.0,1.9165 +32,813,2018-10-24,1049818,98.4,23284294.7,11053,dDd,0.0,0.7275 +10,439,2018-12-11,1049819,698.4,35131275.7,11417,aaa,0.0,0.9851 +46,942,2018-11-11,1049820,682.4,17169217.7,11462,C,0.0,0.9014 +28,510,2018-12-17,1049821,913.4,7773846.7,11374,b,0.0,0.8945 +18,9,2018-10-13,1049822,749.4,3221448.7,10969,C,0.0,1.0687 +14,370,2018-11-15,1049823,632.4,33027359.7,11040,C,0.0,1.0038 +1,146,2018-10-11,1049824,825.4,18266569.7,11348,dDd,0.0,0.0279 +37,570,2018-10-22,1049825,350.4,26198681.7,10306,b,0.0,1.2420 +1,693,2018-11-21,1049826,416.4,21474656.7,10724,dDd,0.0,0.2561 +26,612,2018-10-28,1049827,653.4,6633836.7,11286,aaa,0.0,0.0415 +64,76,2018-11-15,1049828,930.4,28304092.7,11043,C,0.0,1.4633 +0,334,2018-12-18,1049829,635.4,33185217.7,10839,dDd,0.0,1.7967 +73,880,2018-10-10,1049830,557.4,32708628.7,11518,dDd,0.0,0.4632 +26,784,2018-10-10,1049831,37.4,1604211.7,10581,dDd,0.0,1.9025 +47,460,2018-12-11,1049832,531.4,21688779.7,11279,dDd,0.0,1.9146 +21,158,2018-12-6,1049833,864.4,27389165.7,10910,C,0.0,0.0892 +8,418,2018-11-12,1049834,844.4,39506657.7,10387,b,0.0,0.0668 +85,94,2018-12-8,1049835,490.4,10371939.7,10112,aaa,0.0,1.3628 +100,998,2018-10-16,1049836,82.4,38817885.7,10587,aaa,0.0,0.5717 +84,652,2018-12-8,1049837,310.4,35449720.7,11583,C,1.0,1.9289 +63,490,2018-10-9,1049838,298.4,7459300.7,11528,aaa,0.0,0.8124 +61,197,2018-11-17,1049839,602.4,28288048.7,11411,C,0.0,1.2699 +72,584,2018-11-28,1049840,286.4,38526274.7,10056,C,1.0,1.0769 +4,64,2018-11-27,1049841,486.4,20371487.7,10993,C,0.0,1.6564 +82,636,2018-11-18,1049842,42.4,8262923.7,11382,aaa,0.0,0.8950 +94,780,2018-12-3,1049843,734.4,22414368.7,10909,aaa,0.0,1.0510 +100,391,2018-12-2,1049844,171.4,13329799.7,10217,C,0.0,0.8259 +27,678,2018-11-7,1049845,234.4,6742778.7,11691,b,0.0,1.5213 +38,858,2018-12-2,1049846,857.4,8130573.7,10951,b,0.0,0.0084 +18,710,2018-10-13,1049847,748.4,14666580.7,10021,dDd,0.0,0.1455 +78,666,2018-12-4,1049848,25.4,12639838.7,11980,aaa,0.0,1.4378 +3,995,2018-11-30,1049849,205.4,6788832.7,10495,b,0.0,0.7360 +13,703,2018-12-17,1049850,763.4,15166712.7,11989,b,0.0,1.1306 +36,240,2018-11-28,1049851,872.4,24234390.7,11536,C,0.0,0.3392 +14,769,2018-11-30,1049852,386.4,23029611.7,11523,dDd,0.0,1.6305 +78,375,2018-12-15,1049853,838.4,6127787.7,10775,dDd,0.0,0.1993 +74,517,2018-11-4,1049854,549.4,37305421.7,11889,b,0.0,1.3429 +9,562,2018-10-6,1049855,741.4,24516025.7,10177,b,0.0,1.6584 +80,913,2018-12-24,1049856,691.4,19680284.7,10650,dDd,0.0,1.4414 +81,983,2018-12-10,1049857,721.4,2128860.7,11592,aaa,0.0,1.5990 +92,187,2018-10-6,1049858,238.4,15355527.7,10874,b,0.0,1.6999 +39,528,2018-11-1,1049859,521.4,19614508.7,11862,dDd,0.0,0.9046 +4,248,2018-10-27,1049860,712.4,2948571.7,10185,b,0.0,1.3956 +52,814,2018-12-17,1049861,533.4,10370209.7,10628,aaa,0.0,0.1631 +69,71,2018-11-29,1049862,827.4,1967276.7,11687,C,0.0,0.8072 +80,839,2018-11-29,1049863,895.4,19543265.7,10240,b,0.0,1.3102 +13,751,2018-12-11,1049864,226.4,30711711.7,11698,C,0.0,0.2523 +12,719,2018-12-22,1049865,132.4,17693003.7,11851,aaa,0.0,0.8739 +31,381,2018-12-29,1049866,320.4,26797551.7,10469,dDd,0.0,0.6730 +73,840,2018-10-4,1049867,656.4,29796637.7,10551,aaa,0.0,0.8240 +27,277,2018-11-12,1049868,311.4,21257189.7,11800,dDd,0.0,0.8028 +58,815,2018-11-18,1049869,16.4,30803479.7,10377,dDd,0.0,1.4855 +91,143,2018-11-26,1049870,703.4,31406570.7,11850,C,0.0,0.0940 +49,661,2018-10-8,1049871,591.4,33010542.7,10540,aaa,0.0,1.8798 +14,361,2018-10-2,1049872,73.4,28461783.7,11872,b,0.0,1.1419 +29,204,2018-11-26,1049873,457.4,28098559.7,10133,b,0.0,0.9889 +9,630,2018-11-1,1049874,429.4,6462374.7,10844,b,0.0,0.9308 +45,398,2018-11-6,1049875,809.4,30342380.7,10062,C,0.0,1.9679 +86,615,2018-11-24,1049876,173.4,31671458.7,10306,C,1.0,0.5102 +66,255,2018-12-18,1049877,128.4,38939877.7,10097,b,0.0,0.9392 +3,221,2018-11-8,1049878,316.4,21291487.7,11579,aaa,0.0,0.1134 +29,88,2018-11-1,1049879,438.4,10490925.7,11576,dDd,0.0,1.9480 +70,663,2018-10-12,1049880,909.4,33995754.7,11091,C,0.0,1.6752 +33,768,2018-12-13,1049881,179.4,10985173.7,11987,dDd,0.0,1.2440 +50,311,2018-12-3,1049882,271.4,32421950.7,10134,dDd,0.0,0.2871 +74,824,2018-10-26,1049883,206.4,9480962.7,11111,C,0.0,1.3057 +98,708,2018-11-12,1049884,161.4,35661061.7,10413,dDd,0.0,1.4434 +62,127,2018-12-12,1049885,337.4,25711928.7,10323,C,0.0,1.6300 +43,536,2018-11-10,1049886,254.4,5257207.7,10330,aaa,0.0,0.9640 +0,857,2018-10-30,1049887,873.4,18826077.7,11146,b,0.0,0.8848 +43,942,2018-11-12,1049888,580.4,34823143.7,11875,aaa,0.0,1.2290 +35,48,2018-10-23,1049889,593.4,5734100.7,10859,b,0.0,0.6639 +98,997,2018-11-12,1049890,709.4,2322233.7,11118,dDd,0.0,1.7894 +33,798,2018-10-29,1049891,198.4,27067323.7,11083,dDd,0.0,0.6247 +86,654,2018-10-21,1049892,748.4,29489548.7,10972,dDd,0.0,0.8271 +69,493,2018-12-19,1049893,456.4,29521195.7,11443,dDd,0.0,0.5966 +80,117,2018-11-11,1049894,507.4,5317629.7,10924,b,0.0,1.9349 +12,642,2018-12-7,1049895,18.4,7908923.7,11035,dDd,0.0,1.0794 +81,210,2018-11-1,1049896,246.4,17015865.7,10017,aaa,0.0,1.4705 +50,152,2018-10-20,1049897,887.4,35156849.7,10176,aaa,0.0,0.6080 +51,34,2018-10-2,1049898,301.4,2341632.7,11202,dDd,0.0,1.9034 +79,355,2018-11-13,1049899,666.4,12479913.7,11696,dDd,0.0,0.2733 +66,886,2018-12-12,1049900,94.4,26957298.7,10042,dDd,0.0,0.0934 +23,179,2018-11-9,1049901,816.4,39461570.7,10335,dDd,0.0,1.9974 +19,239,2018-11-17,1049902,257.4,3168625.7,10353,C,0.0,0.1531 +13,122,2018-12-19,1049903,354.4,26222450.7,10147,b,0.0,1.2353 +34,917,2018-12-11,1049904,723.4,9419580.7,11838,b,0.0,0.9863 +45,557,2018-11-4,1049905,923.4,39663552.7,11267,b,0.0,1.0839 +21,702,2018-10-18,1049906,651.4,38949276.7,10564,aaa,0.0,1.2032 +96,503,2018-11-2,1049907,129.4,3446627.7,10371,aaa,0.0,1.4965 +99,929,2018-11-14,1049908,703.4,28339635.7,11689,aaa,0.0,0.0231 +57,34,2018-11-23,1049909,934.4,35614330.7,10109,aaa,0.0,1.3166 +87,852,2018-11-2,1049910,316.4,22974034.7,11243,b,0.0,1.4445 +83,170,2018-11-16,1049911,70.4,16942877.7,11128,C,0.0,1.6983 +7,491,2018-12-10,1049912,264.4,27489350.7,11357,dDd,0.0,0.5607 +100,92,2018-10-12,1049913,939.4,14858263.7,10648,C,0.0,1.7316 +23,907,2018-10-20,1049914,763.4,2186573.7,10771,b,0.0,1.0039 +62,474,2018-12-18,1049915,912.4,37763744.7,11153,aaa,0.0,0.0040 +90,473,2018-10-6,1049916,16.4,21002603.7,11750,b,0.0,1.3617 +96,582,2018-11-19,1049917,143.4,14865801.7,10067,dDd,0.0,1.9680 +34,520,2018-10-12,1049918,87.4,18027844.7,10547,C,1.0,0.8888 +21,641,2018-11-14,1049919,698.4,2027518.7,11282,b,0.0,0.5907 +33,615,2018-12-30,1049920,354.4,15049499.7,10367,dDd,0.0,0.6319 +9,494,2018-11-6,1049921,582.4,34932543.7,10185,aaa,0.0,0.6782 +11,898,2018-10-9,1049922,950.4,10750329.7,11883,b,0.0,1.2153 +19,74,2018-10-4,1049923,973.4,19654119.7,11162,aaa,0.0,1.4590 +50,999,2018-10-22,1049924,267.4,38897187.7,10929,aaa,0.0,1.2748 +40,567,2018-11-18,1049925,78.4,25973217.7,10610,C,1.0,1.1503 +80,385,2018-12-18,1049926,119.4,9922474.7,11733,b,0.0,0.5383 +16,485,2018-10-15,1049927,765.4,25854515.7,10110,dDd,0.0,0.7453 +32,735,2018-11-2,1049928,897.4,12113517.7,11022,dDd,0.0,1.7582 +96,146,2018-10-7,1049929,511.4,9173018.7,10095,aaa,0.0,0.4418 +45,140,2018-10-29,1049930,596.4,27586529.7,11235,b,0.0,1.0186 +28,777,2018-10-29,1049931,212.4,17260845.7,10879,dDd,0.0,1.8516 +15,699,2018-11-22,1049932,553.4,27308084.7,11714,aaa,0.0,0.4391 +10,348,2018-12-9,1049933,622.4,22745320.7,10102,C,0.0,1.1717 +53,65,2018-11-27,1049934,504.4,11399239.7,10019,dDd,0.0,1.0870 +8,437,2018-11-29,1049935,474.4,37233935.7,10285,C,1.0,1.4254 +54,705,2018-12-11,1049936,226.4,6331758.7,10857,aaa,0.0,0.2556 +92,999,2018-12-7,1049937,365.4,32144246.7,10785,b,0.0,0.2902 +59,468,2018-11-16,1049938,470.4,37056211.7,11237,C,1.0,0.9220 +3,436,2018-11-15,1049939,170.4,18257815.7,11216,C,1.0,0.2787 +52,160,2018-12-24,1049940,471.4,31498441.7,10550,dDd,0.0,1.6068 +12,643,2018-10-17,1049941,679.4,21858927.7,11262,C,1.0,0.3665 +8,66,2018-11-13,1049942,797.4,7757464.7,10028,b,0.0,1.9770 +79,146,2018-12-24,1049943,684.4,21052481.7,10053,b,0.0,0.1674 +10,848,2018-10-26,1049944,464.4,26449872.7,11994,b,0.0,0.0981 +89,946,2018-10-8,1049945,426.4,5384283.7,11797,dDd,0.0,0.9809 +8,487,2018-12-10,1049946,386.4,4485378.7,11809,b,0.0,0.1715 +41,676,2018-10-17,1049947,818.4,4511628.7,10908,b,0.0,1.4597 +79,923,2018-10-24,1049948,685.4,26053284.7,11680,C,0.0,0.9489 +25,937,2018-12-26,1049949,167.4,30144346.7,11544,dDd,0.0,1.0603 +94,275,2018-11-14,1049950,588.4,33183432.7,10521,aaa,0.0,0.0504 +15,902,2018-11-30,1049951,726.4,24027515.7,10029,C,0.0,1.5808 +27,786,2018-12-17,1049952,266.4,33644391.7,11835,aaa,0.0,1.7385 +50,241,2018-11-2,1049953,744.4,18473514.7,11900,C,0.0,1.2657 +45,243,2018-12-20,1049954,367.4,9426050.7,11261,b,0.0,1.0398 +17,969,2018-10-21,1049955,333.4,31721222.7,10802,dDd,0.0,1.0133 +60,441,2018-10-7,1049956,239.4,19940361.7,11246,aaa,0.0,0.4160 +92,929,2018-12-10,1049957,105.4,7633714.7,10010,b,0.0,1.5781 +75,287,2018-11-16,1049958,154.4,37197926.7,10973,aaa,0.0,1.7585 +28,64,2018-10-8,1049959,276.4,30681125.7,11710,aaa,0.0,0.1742 +87,424,2018-12-7,1049960,387.4,13636919.7,10421,b,0.0,0.0199 +34,706,2018-10-18,1049961,407.4,16752267.7,10628,aaa,0.0,0.7772 +34,138,2018-12-12,1049962,303.4,26785575.7,10033,dDd,0.0,0.0258 +73,390,2018-12-19,1049963,759.4,35804356.7,11553,C,0.0,0.4590 +81,301,2018-12-20,1049964,475.4,17992492.7,10386,dDd,0.0,1.9489 +47,475,2018-11-13,1049965,509.4,32738223.7,11615,aaa,0.0,1.1128 +35,374,2018-12-15,1049966,772.4,37608793.7,10685,aaa,0.0,1.8844 +94,432,2018-12-18,1049967,245.4,10902153.7,10953,b,0.0,0.2045 +30,490,2018-12-20,1049968,820.4,28768015.7,10659,aaa,0.0,1.4030 +75,179,2018-10-23,1049969,786.4,32880228.7,10925,b,0.0,0.8064 +11,95,2018-10-30,1049970,104.4,18661024.7,10493,b,0.0,0.4832 +12,135,2018-11-2,1049971,249.4,5877149.7,10604,dDd,0.0,1.0098 +12,520,2018-10-28,1049972,302.4,24648459.7,10880,C,1.0,1.1728 +36,375,2018-11-18,1049973,387.4,21618787.7,10230,C,0.0,0.4602 +60,312,2018-10-24,1049974,164.4,17482396.7,11588,C,0.0,1.1773 +91,682,2018-11-29,1049975,408.4,26458193.7,11048,aaa,0.0,1.2709 +45,914,2018-10-6,1049976,739.4,39562790.7,11103,dDd,0.0,1.4411 +10,744,2018-11-1,1049977,965.4,11342856.7,11815,aaa,0.0,1.3487 +18,565,2018-10-3,1049978,650.4,32226926.7,11929,aaa,0.0,0.7306 +85,337,2018-11-2,1049979,475.4,581517.7,11990,dDd,0.0,0.3901 +3,895,2018-12-16,1049980,156.4,5035395.7,10918,aaa,0.0,0.4090 +40,153,2018-11-1,1049981,948.4,38389740.7,11644,dDd,0.0,0.7810 +12,409,2018-10-14,1049982,236.4,35471562.7,10483,dDd,0.0,1.9709 +76,796,2018-12-2,1049983,301.4,5066702.7,10574,dDd,0.0,0.1475 +86,706,2018-10-4,1049984,665.4,6170065.7,10293,b,0.0,0.0468 +63,919,2018-12-26,1049985,891.4,724333.7,10051,dDd,0.0,1.0106 +19,663,2018-10-28,1049986,775.4,12063732.7,11996,dDd,0.0,1.1608 +96,541,2018-10-26,1049987,78.4,35719826.7,11675,C,1.0,0.4628 +59,503,2018-10-9,1049988,111.4,2853594.7,11103,b,0.0,0.5888 +23,299,2018-10-4,1049989,25.4,17413830.7,11792,dDd,0.0,0.9193 +11,611,2018-11-25,1049990,383.4,5327693.7,11810,b,0.0,0.6370 +70,226,2018-11-7,1049991,577.4,23854000.7,10903,aaa,0.0,0.6086 +31,137,2018-10-13,1049992,816.4,30840207.7,11949,aaa,0.0,1.6965 +77,492,2018-11-25,1049993,375.4,11017846.7,11617,aaa,0.0,0.6628 +74,672,2018-12-16,1049994,997.4,29622187.7,11782,aaa,0.0,1.0676 +92,469,2018-11-26,1049995,25.4,12345168.7,10268,dDd,0.0,1.6454 +15,728,2018-10-21,1049996,474.4,25623075.7,11489,aaa,0.0,1.7756 +6,831,2018-10-3,1049997,320.4,34930523.7,10284,dDd,0.0,0.9521 +666,831,2018-12-22,1049998,582.4,16144459.7,11133,b,0.0,1.8499 +666,527,2018-10-14,1049999,727.4,31138011.7,10805,aaa,0.0,1.1787