From 2e39955e7d6de2f67b83233e158729d4477b7d80 Mon Sep 17 00:00:00 2001 From: Makarand Milind Hinge Date: Sun, 19 Jul 2026 12:36:14 +0530 Subject: [PATCH 1/6] Add Wayang JDBC protocol module Add Wayang JDBC driver URL parsing Add SQL result metadata for Wayang JDBC Add Wayang JDBC server query bridge Add Wayang JDBC driver protocol client Add Wayang JDBC connection implementation Added Jdbc implementation plan doc and deleted unrelated test class and doc Finalize Wayang JDBC connection phase Add Wayang JDBC statement and result set support Add basic Wayang JDBC database metadata Connect JDBC metadata requests through protocol --- pom.xml | 1 + .../wayang/api/sql/context/SqlColumn.java | 84 ++ .../wayang/api/sql/context/SqlContext.java | 55 +- .../api/sql/context/SqlQueryResult.java | 47 + .../wayang/api/sql/SqlToWayangRelTest.java | 19 + wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md | 347 ++++++++ wayang-jdbc/README.md | 162 ++++ wayang-jdbc/pom.xml | 45 + wayang-jdbc/wayang-jdbc-driver/pom.xml | 50 ++ .../wayang/jdbc/driver/WayangConnection.java | 439 ++++++++++ .../jdbc/driver/WayangDatabaseMetaData.java | 802 ++++++++++++++++++ .../wayang/jdbc/driver/WayangDriver.java | 79 ++ .../wayang/jdbc/driver/WayangJdbcClient.java | 348 ++++++++ .../wayang/jdbc/driver/WayangJdbcUrl.java | 130 +++ .../wayang/jdbc/driver/WayangResultSet.java | 594 +++++++++++++ .../jdbc/driver/WayangResultSetMetaData.java | 213 +++++ .../wayang/jdbc/driver/WayangStatement.java | 436 ++++++++++ .../META-INF/services/java.sql.Driver | 16 + wayang-jdbc/wayang-jdbc-protocol/pom.xml | 49 ++ .../wayang/jdbc/protocol/MessageEnvelope.java | 87 ++ .../wayang/jdbc/protocol/MessageType.java | 41 + .../jdbc/protocol/ProtocolConstants.java | 33 + .../jdbc/protocol/ProtocolException.java | 34 + .../protocol/io/ProtocolMessageCodec.java | 140 +++ .../protocol/message/CancelQueryRequest.java | 67 ++ .../protocol/message/CancelQueryResponse.java | 79 ++ .../message/CloseConnectionRequest.java | 41 + .../message/CloseConnectionResponse.java | 41 + .../protocol/message/CloseCursorRequest.java | 67 ++ .../protocol/message/CloseCursorResponse.java | 67 ++ .../jdbc/protocol/message/ColumnInfo.java | 139 +++ .../jdbc/protocol/message/ErrorCode.java | 31 + .../jdbc/protocol/message/ErrorResponse.java | 112 +++ .../protocol/message/ExecuteQueryRequest.java | 79 ++ .../jdbc/protocol/message/FetchRequest.java | 63 ++ .../jdbc/protocol/message/FetchResponse.java | 82 ++ .../protocol/message/GetColumnsRequest.java | 91 ++ .../protocol/message/GetSchemasRequest.java | 71 ++ .../protocol/message/GetTablesRequest.java | 94 ++ .../message/MetadataResultResponse.java | 82 ++ .../jdbc/protocol/message/MetadataType.java | 27 + .../message/OpenConnectionRequest.java | 70 ++ .../message/OpenConnectionResponse.java | 70 ++ .../protocol/message/QueryResultResponse.java | 106 +++ wayang-jdbc/wayang-jdbc-server/pom.xml | 55 ++ .../wayang/jdbc/server/CursorStore.java | 129 +++ .../server/DefaultSqlMetadataProvider.java | 197 +++++ .../wayang/jdbc/server/JdbcClientHandler.java | 58 ++ .../jdbc/server/JdbcRequestDispatcher.java | 341 ++++++++ .../wayang/jdbc/server/JdbcServerSession.java | 65 ++ .../jdbc/server/JdbcServerSessionManager.java | 61 ++ .../jdbc/server/SqlMetadataProvider.java | 46 + .../wayang/jdbc/server/SqlQueryExecutor.java | 29 + .../jdbc/server/SqlQueryResultAdapter.java | 66 ++ .../wayang/jdbc/server/WayangJdbcServer.java | 126 +++ .../jdbc/server/WayangSqlQueryExecutor.java | 49 ++ 56 files changed, 6938 insertions(+), 14 deletions(-) create mode 100644 wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlColumn.java create mode 100644 wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlQueryResult.java create mode 100644 wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md create mode 100644 wayang-jdbc/README.md create mode 100644 wayang-jdbc/pom.xml create mode 100644 wayang-jdbc/wayang-jdbc-driver/pom.xml create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/main/resources/META-INF/services/java.sql.Driver create mode 100644 wayang-jdbc/wayang-jdbc-protocol/pom.xml create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageEnvelope.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolConstants.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolException.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ColumnInfo.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorCode.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ExecuteQueryRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetColumnsRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetSchemasRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetTablesRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataResultResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataType.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/QueryResultResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-server/pom.xml create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlMetadataProvider.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryExecutor.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java diff --git a/pom.xml b/pom.xml index f0d5cf77e..c900d01d6 100644 --- a/pom.xml +++ b/pom.xml @@ -1308,6 +1308,7 @@ wayang-commons wayang-platforms wayang-api + wayang-jdbc wayang-profiler wayang-plugins wayang-resources diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlColumn.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlColumn.java new file mode 100644 index 000000000..89984f522 --- /dev/null +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlColumn.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.api.sql.context; + +/** + * Metadata for a column produced by the Wayang SQL API. + */ +public class SqlColumn { + + private final String name; + + private final String label; + + private final String typeName; + + private final int jdbcType; + + private final int precision; + + private final int scale; + + private final boolean nullable; + + public SqlColumn( + final String name, + final String label, + final String typeName, + final int jdbcType, + final int precision, + final int scale, + final boolean nullable + ) { + this.name = name; + this.label = label; + this.typeName = typeName; + this.jdbcType = jdbcType; + this.precision = precision; + this.scale = scale; + this.nullable = nullable; + } + + public String getName() { + return this.name; + } + + public String getLabel() { + return this.label; + } + + public String getTypeName() { + return this.typeName; + } + + public int getJdbcType() { + return this.jdbcType; + } + + public int getPrecision() { + return this.precision; + } + + public int getScale() { + return this.scale; + } + + public boolean isNullable() { + return this.nullable; + } +} diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java index 3b8209979..f486907b4 100755 --- a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java @@ -26,11 +26,14 @@ import org.apache.calcite.jdbc.CalciteSchema; import org.apache.calcite.jdbc.JavaTypeFactoryImpl; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.rel.type.RelDataTypeFactory; +import org.apache.calcite.rel.type.RelDataTypeField; import org.apache.calcite.rel.rules.CoreRules; import org.apache.calcite.rel.rules.SubQueryRemoveRule; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.calcite.sql.type.SqlTypeName; import org.apache.calcite.tools.RuleSet; import org.apache.calcite.tools.RuleSets; @@ -182,6 +185,10 @@ public static void main(final String[] args) throws Exception { } public Collection executeSql(final String sql) throws SqlParseException { + return this.executeSqlWithMetadata(sql).getRows(); + } + + public SqlQueryResult executeSqlWithMetadata(final String sql) throws SqlParseException { final Properties configProperties = Optimizer.ConfigProperties.getDefaults(); final RelDataTypeFactory relDataTypeFactory = new JavaTypeFactoryImpl(); @@ -194,7 +201,23 @@ public Collection executeSql(final String sql) throws SqlParseException PrintUtils.print("After parsing sql query", relNode); - final RuleSet rules = RuleSets.ofList( + final RelNode wayangRel = optimizer.optimize( + relNode, + relNode.getTraitSet().plus(WayangConvention.INSTANCE), + createDefaultRuleSet()); + + PrintUtils.print("After translating logical intermediate plan", wayangRel); + + final Collection collector = new ArrayList<>(); + final WayangPlan wayangPlan = Optimizer.convertWithConfig(wayangRel, this.getConfiguration(), collector); + + this.execute(getJobName(), wayangPlan); + + return new SqlQueryResult(createColumns(wayangRel.getRowType()), collector); + } + + private static RuleSet createDefaultRuleSet() { + return RuleSets.ofList( SubQueryRemoveRule.Config.FILTER.toRule(), SubQueryRemoveRule.Config.JOIN.toRule(), SubQueryRemoveRule.Config.PROJECT.toRule(), @@ -206,20 +229,24 @@ public Collection executeSql(final String sql) throws SqlParseException WayangRules.WAYANG_JOIN_RULE, WayangRules.WAYANG_AGGREGATE_RULE, WayangRules.WAYANG_SORT_RULE); + } - final RelNode wayangRel = optimizer.optimize( - relNode, - relNode.getTraitSet().plus(WayangConvention.INSTANCE), - rules); - - PrintUtils.print("After translating logical intermediate plan", wayangRel); - - final Collection collector = new ArrayList<>(); - final WayangPlan wayangPlan = Optimizer.convert(wayangRel, collector); - - this.execute(getJobName(), wayangPlan); - - return collector; + private static List createColumns(final RelDataType rowType) { + final List columns = new ArrayList<>(rowType.getFieldCount()); + for (final RelDataTypeField field : rowType.getFieldList()) { + final RelDataType fieldType = field.getType(); + final SqlTypeName sqlTypeName = fieldType.getSqlTypeName(); + columns.add(new SqlColumn( + field.getName(), + field.getName(), + sqlTypeName.getName(), + sqlTypeName.getJdbcOrdinal(), + fieldType.getPrecision(), + fieldType.getScale(), + fieldType.isNullable() + )); + } + return columns; } private static String getJobName() { diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlQueryResult.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlQueryResult.java new file mode 100644 index 000000000..e6b58b68e --- /dev/null +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlQueryResult.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.api.sql.context; + +import org.apache.wayang.basic.data.Record; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * Rows and result metadata produced by the Wayang SQL API. + */ +public class SqlQueryResult { + + private final List columns; + + private final Collection rows; + + public SqlQueryResult(final List columns, final Collection rows) { + this.columns = List.copyOf(columns); + this.rows = new ArrayList<>(rows); + } + + public List getColumns() { + return this.columns; + } + + public Collection getRows() { + return new ArrayList<>(this.rows); + } +} diff --git a/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java b/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java index 77537826d..a7f6298a5 100755 --- a/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java +++ b/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java @@ -29,6 +29,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.sql.SQLException; +import java.sql.Types; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -81,6 +82,7 @@ import org.apache.wayang.api.sql.calcite.schema.SchemaUtils; import org.apache.wayang.api.sql.calcite.utils.ModelParser; import org.apache.wayang.api.sql.context.SqlContext; +import org.apache.wayang.api.sql.context.SqlQueryResult; import org.apache.wayang.basic.data.Record; import org.apache.wayang.basic.data.Tuple2; import org.apache.wayang.core.api.Configuration; @@ -224,6 +226,23 @@ void javaFilterWithCastUsingNumbers() throws Exception { assertTrue(result.stream().allMatch(field -> field.getField(1).equals(1))); } + @Test + void executeSqlWithMetadataReturnsRowsAndColumns() throws Exception { + final SqlContext sqlContext = this.createSqlContext("/data/exampleInt.csv"); + + final SqlQueryResult result = sqlContext.executeSqlWithMetadata( + "SELECT NAMEA, NAMEB FROM fs.exampleInt" + ); + + assertTrue(!result.getRows().isEmpty()); + assertEquals(Arrays.asList("NAMEA", "NAMEB"), result.getColumns().stream() + .map(column -> column.getName()) + .collect(Collectors.toList())); + assertEquals("NAMEA", result.getColumns().get(0).getLabel()); + assertEquals(Types.INTEGER, result.getColumns().get(1).getJdbcType()); + assertEquals("INTEGER", result.getColumns().get(1).getTypeName()); + } + @Test void javaFilterWithCast() throws Exception { final SqlContext sqlContext = this.createSqlContext("/data/largeLeftTableIndex.csv"); diff --git a/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md b/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md new file mode 100644 index 000000000..dba8ca312 --- /dev/null +++ b/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md @@ -0,0 +1,347 @@ + + +# Wayang JDBC Implementation Plan + +## Goal + +Build the first external JDBC interface for Apache Wayang. + +Target architecture: + +```text +JDBC client -> Wayang JDBC driver -> Wayang JDBC server -> Wayang SQL API -> Wayang execution +``` + +Wayang is not a database and does not own table storage. The JDBC layer is a +read-only SQL gateway for query execution and metadata browsing. + +Unsupported write or database-owned operations should throw +`SQLFeatureNotSupportedException` unless JDBC requires a default value. + +## Scope + +Supported first: + +* Open JDBC connections through `DriverManager`. +* Create JDBC statements. +* Execute read-only SQL queries. +* Read result rows through `ResultSet`. +* Read result column metadata through `ResultSetMetaData`. +* Browse basic metadata later through `DatabaseMetaData`. + +Unsupported first: + +* `CREATE`, `INSERT`, `UPDATE`, `DELETE`, `MERGE`. +* Transactions and savepoints. +* Stored procedures. +* Writable result sets. +* Batch updates. +* Generated keys. +* Full JDBC compliance. + +## Start To End Plan + +1. Create JDBC module structure. + * Add `wayang-jdbc-protocol`. + * Add `wayang-jdbc-driver`. + * Add `wayang-jdbc-server`. + +2. Define shared protocol. + * Add message envelope. + * Add message types. + * Add request and response payloads. + * Add length-prefixed JSON codec. + * Add protocol tests. + +3. Add driver registration and URL parsing. + * Add `WayangDriver`. + * Add `WayangJdbcUrl`. + * Add service loader file for `java.sql.Driver`. + * Support URL format `jdbc:wayang://host:port[/database]`. + * Add URL parsing tests. + +4. Extend Wayang SQL API for metadata. + * Add SQL result object with rows and columns. + * Add SQL column metadata model. + * Add `SqlContext.executeSqlWithMetadata(String)`. + * Keep old `executeSql(String)` behavior. + * Derive JDBC metadata from Calcite row types. + +5. Implement server-side protocol bridge. + * Add TCP server. + * Add client handler. + * Add request dispatcher. + * Add logical session manager. + * Add in-memory cursor store. + * Add SQL query executor boundary. + * Adapt SQL API results into protocol rows and columns. + * Add dispatcher and socket tests. + +6. Implement driver-side protocol client. + * Open socket to server. + * Send `OPEN_CONNECTION`. + * Store server `connectionId`. + * Send `EXECUTE_QUERY`. + * Send `FETCH`. + * Send `CLOSE_CURSOR`. + * Send `CANCEL_QUERY`. + * Send `CLOSE_CONNECTION`. + * Convert protocol errors into `SQLException`. + * Add driver-only socket tests. + +7. Implement JDBC `Connection`. + * Add `WayangConnection`. + * Hold `WayangJdbcClient`. + * Implement `close`. + * Implement `isClosed`. + * Implement read-only and auto-commit defaults. + * Keep transactions unsupported. + * Wire `WayangDriver.connect(...)` to return `WayangConnection`. + * Add connection tests. + +8. Implement JDBC `Statement`. + * Add `WayangStatement`. + * Implement `executeQuery(String)`. + * Generate statement IDs. + * Support fetch size. + * Close current result set on statement close. + * Reject update and batch methods. + * Add statement tests. + +9. Implement JDBC `ResultSet`. + * Add `WayangResultSet`. + * Hold first query result batch. + * Implement `next`. + * Fetch more rows when cursor has more data. + * Implement `getObject`. + * Implement `getString`. + * Implement primitive getters. + * Implement `wasNull`. + * Close server cursor when needed. + * Add result set tests. + +10. Implement JDBC `ResultSetMetaData`. + * Add `WayangResultSetMetaData`. + * Use protocol `ColumnInfo`. + * Implement column count. + * Implement column name and label. + * Implement JDBC type and type name. + * Implement precision, scale, and nullability. + * Add metadata tests. + +11. Add end-to-end JDBC tests. + * Start `WayangJdbcServer` with fake SQL executor. + * Connect through `DriverManager`. + * Create statement. + * Execute query. + * Read rows. + * Read result metadata. + * Verify cursor paging. + * Verify close behavior. + +12. Implement basic `DatabaseMetaData`. + * Add driver and product information. + * Add read-only capability flags. + * Add schemas, tables, and columns after server metadata support exists. + * Keep unsupported metadata explicit. + +13. Test with JDBC tools. + * Try DBeaver. + * Try DataGrip. + * Implement only required additional JDBC methods. + * Keep unsupported write operations explicit. + +## Completed Work In Sequence + +1. Added module structure. + * `wayang-jdbc/wayang-jdbc-protocol` + * `wayang-jdbc/wayang-jdbc-driver` + * `wayang-jdbc/wayang-jdbc-server` + +2. Added documentation. + * `wayang-jdbc/README.md` + * `wayang-jdbc/DEVELOPMENT_LOG.md` + +3. Added protocol module. + * `MessageEnvelope` + * `MessageType` + * `ProtocolConstants` + * `ProtocolException` + * `ProtocolMessageCodec` + * Connection messages. + * Query messages. + * Fetch messages. + * Cursor close messages. + * Cancel messages. + * Metadata message placeholders. + * Error messages. + +4. Added initial driver skeleton. + * `WayangDriver` + * `WayangJdbcUrl` + * `META-INF/services/java.sql.Driver` + * URL parsing tests. + +5. Added SQL API query metadata support. + * `SqlColumn` + * `SqlQueryResult` + * `SqlContext.executeSqlWithMetadata(String)` + * Existing `executeSql(String)` still works. + +6. Added server-side JDBC bridge. + * `WayangJdbcServer` + * `JdbcClientHandler` + * `JdbcRequestDispatcher` + * `JdbcServerSessionManager` + * `CursorStore` + * `SqlQueryExecutor` + * `WayangSqlQueryExecutor` + * `SqlQueryResultAdapter` + +7. Server can now: + * Open logical connections. + * Execute SQL through `SqlContext.executeSqlWithMetadata`. + * Return rows. + * Return column metadata. + * Page results through in-memory cursors. + * Fetch more rows. + * Close cursors. + * Close connections. + * Return protocol errors. + +8. Added driver-side protocol client. + * `WayangJdbcClient` + * Opens socket to server. + * Sends `OPEN_CONNECTION`. + * Sends `EXECUTE_QUERY`. + * Sends `FETCH`. + * Sends `CLOSE_CURSOR`. + * Sends `CANCEL_QUERY`. + * Sends `CLOSE_CONNECTION`. + * Converts protocol errors into JDBC exceptions. + +9. Added JDBC connection layer. + * `WayangConnection` + * `WayangDriver.connect(...)` now opens `WayangJdbcClient`. + * `WayangDriver.connect(...)` now returns a read-only JDBC connection. + * Connection close sends `CLOSE_CONNECTION`. + * Transactions, savepoints, metadata, statements, prepared statements, and + callable statements are still explicitly unsupported. + +10. Test classes are deferred for the final implementation pass. + * Re-add focused unit tests after the main JDBC path is complete. + * Add end-to-end JDBC tests after `Connection`, `Statement`, `ResultSet`, + and `ResultSetMetaData` work together. + +11. Added JDBC statement and query result layer. + * `WayangStatement` + * `WayangConnection.createStatement()` now returns a statement. + * `Statement.executeQuery(String)` sends queries through `WayangJdbcClient`. + * `WayangResultSet` + * `WayangResultSetMetaData` + * Result sets can move through rows with `next`. + * Result sets can fetch more rows from server cursors. + * Result sets support basic object, string, primitive, and metadata access. + * Result set close releases server cursors when needed. + * Update, batch, generated-key, writable result set, and unsupported methods + remain explicit unsupported operations. + +12. Hardened plain Java JDBC result handling. + * `Statement.setMaxRows(...)` is applied during result iteration. + * Reaching the maximum row limit closes the server cursor when needed. + * Added common result getters for character streams, binary streams, + `getNString`, and URL values. + * Added explicit unsupported handling for SQL ARRAY, BLOB, CLOB, NCLOB, and + SQLXML result values. + * Added read-only row state defaults for `rowUpdated`, `rowInserted`, and + `rowDeleted`. + * Kept scroll navigation unsupported because result sets are forward-only. + +13. Added basic JDBC database metadata. + * `Connection.getMetaData()` now returns metadata instead of unsupported. + * Metadata reports Apache Wayang driver and product information. + * Metadata reports read-only capability flags. + * Transactions, stored procedures, batches, generated keys, savepoints, and + writable result sets are reported unsupported. + * Schemas, catalogs, tables, columns, table types, type info, keys, indexes, + procedures, functions, and other common metadata methods return JDBC + `ResultSet` objects. + * Table and column browsing returns empty result sets until server-side + metadata discovery is connected. + +14. Connected metadata requests through the JDBC protocol. + * Driver sends `GET_SCHEMAS`, `GET_TABLES`, and `GET_COLUMNS`. + * Server dispatches metadata requests and returns `METADATA_RESULT`. + * Server tracks connection database information in logical sessions. + * Added a server-side `SqlMetadataProvider` boundary. + * Default provider returns schema metadata from the connection database. + * Default table and column metadata still return correctly shaped empty + result sets until Calcite/catalog-backed discovery is added. + +## Current State + +Working: + +* Protocol layer. +* URL parsing. +* SQL API metadata result support. +* JDBC server query bridge. +* Driver-side protocol client. +* `DriverManager.getConnection(...)` path up to `WayangConnection`. +* Read-only JDBC connection defaults and close behavior. +* `Connection.createStatement()`. +* `Statement.executeQuery(String)`. +* Forward-only read-only result sets. +* Basic `ResultSetMetaData`. +* Basic `DatabaseMetaData`. +* Metadata protocol path for schemas, tables, and columns. +* Plain Java JDBC query flow for connection, statement, result set iteration, + getters, metadata, and close behavior. + +Not complete yet: + +* Result set support still needs final compatibility testing. +* JDBC `DatabaseMetaData` table and column discovery still needs Calcite or + catalog-backed metadata rows. + +## Next Immediate Work + +1. Review and harden result set method coverage. +2. Back `SqlMetadataProvider` with Calcite or configured catalog metadata. +3. Add end-to-end `DriverManager` query tests in the final test pass. +4. Add focused tests for cursor paging, metadata, getters, and close behavior. + +## Verification Commands Used + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am test +``` + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-api-sql -am test +``` + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-server -am test +``` + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-driver -am test +``` diff --git a/wayang-jdbc/README.md b/wayang-jdbc/README.md new file mode 100644 index 000000000..980de81cb --- /dev/null +++ b/wayang-jdbc/README.md @@ -0,0 +1,162 @@ + + +# Wayang JDBC + +This module provides the external JDBC interface for Apache Wayang. + +Apache Wayang is not a database and does not own table storage. The JDBC layer +is therefore designed as a read-only SQL gateway: + +```text +JDBC client -> Wayang JDBC driver -> Wayang JDBC server -> Wayang SQL API -> Wayang execution +``` + +The first implementation target is a minimal JDBC driver that can be used by +standard Java JDBC clients and database tools for SQL query execution against +data sources configured in Wayang. + +See `DEVELOPMENT_LOG.md` for the date-wise implementation log, decisions, +verification, and remaining work. + +## Module Roles + +`wayang-jdbc-protocol` +: Shared request and response messages plus the wire codec used by the driver + and server. + +`wayang-jdbc-driver` +: The client-side JDBC driver. It exposes the `java.sql` interfaces and talks to + the Wayang JDBC server over the protocol module. + +`wayang-jdbc-server` +: The server-side gateway. It accepts driver requests, delegates SQL execution + to the Wayang SQL API, and returns rows and metadata to the driver. + +The existing `wayang-platforms/wayang-jdbc-template`, +`wayang-platforms/wayang-postgres`, `wayang-platforms/wayang-sqlite3`, and +`wayang-platforms/wayang-generic-jdbc` modules solve the opposite direction: +Wayang reading from JDBC-accessible databases. They are not the external JDBC +client interface. + +## First Supported Scope + +The first usable version is intentionally read-only and limited to query +execution. + +Supported first: + +* `DriverManager.getConnection("jdbc:wayang://host:port[/database]")` +* `Connection.createStatement()` +* `Connection.close()` +* `Connection.isClosed()` +* `Connection.getMetaData()` +* `Statement.executeQuery(String)` +* `Statement.close()` +* `ResultSet.next()` +* `ResultSet.getObject(...)` +* `ResultSet.getString(...)` +* `ResultSet.getBoolean(...)` +* `ResultSet.getByte(...)` +* `ResultSet.getShort(...)` +* `ResultSet.getInt(...)` +* `ResultSet.getLong(...)` +* `ResultSet.getFloat(...)` +* `ResultSet.getDouble(...)` +* `ResultSet.wasNull()` +* `ResultSet.getMetaData()` +* `ResultSetMetaData` basics: column count, name, label, JDBC type, type name, + precision, scale, nullability. +* `DatabaseMetaData` basics: schemas, tables, columns, driver/product + information, and common capability flags. + +Unsupported first: + +* `CREATE TABLE`, `INSERT`, `UPDATE`, `DELETE`, `MERGE` +* transactions and savepoints +* stored procedures +* writable or scrollable result sets +* batched statements +* generated keys +* advanced SQL functions beyond the Wayang SQL API support +* full JDBC compliance + +Unsupported JDBC operations should throw `SQLFeatureNotSupportedException` +unless the JDBC contract requires a default value. + +## Query Execution Contract + +The server delegates SQL queries to the Wayang SQL API. The SQL API currently +returns `Collection`, where `Record` contains row values only. JDBC +requires result metadata as well, so the SQL API needs an execution method that +returns both rows and the Calcite-derived row type. + +The target result shape is: + +```java +SqlQueryResult { + List columns; + List rows; +} +``` + +Column metadata should be derived from the validated/optimized Calcite +`RelNode.getRowType()` before the Wayang plan is executed. + +The first server implementation may keep query results in memory and expose +them through cursor IDs for fetch paging. This is acceptable for the first JDBC +gateway version. Streaming results can be added later. + +## Metadata Contract + +JDBC tools usually call metadata methods before query execution. The server +should answer metadata requests from the Calcite schema loaded by Wayang SQL +configuration. + +Initial metadata support: + +* schemas from the configured Calcite root schema +* tables from each schema table map +* columns from each table row type +* Java/Calcite type mapping to `java.sql.Types` + +The driver should return metadata rows with standard JDBC column names and +ordering for the implemented `DatabaseMetaData` methods. + +## Package Boundary + +The current external JDBC modules use `org.apache.wayang.jdbc.driver` and +`org.apache.wayang.jdbc.protocol`. Internal JDBC platform code already uses +`org.apache.wayang.jdbc.*` under `wayang-platforms/wayang-jdbc-template`. + +To keep implementation risk low, the current package layout is retained for the +first JDBC gateway implementation. Classes should still be named clearly with +driver/server/protocol responsibilities to avoid mixing external JDBC gateway +code with internal JDBC platform operators. + +## Implementation Order + +1. Add a SQL API result object that includes rows and metadata. +2. Implement the server dispatcher and in-memory cursor store. +3. Implement the driver socket client. +4. Implement `Connection`, `Statement`, `ResultSet`, and `ResultSetMetaData`. +5. Implement basic `DatabaseMetaData`. +6. Add end-to-end JDBC tests using `DriverManager`. +7. Run a compatibility pass with DBeaver/DataGrip and fill only the methods they + require for browsing and query execution. diff --git a/wayang-jdbc/pom.xml b/wayang-jdbc/pom.xml new file mode 100644 index 000000000..f88565ca7 --- /dev/null +++ b/wayang-jdbc/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + pom + + + wayang + org.apache.wayang + 1.1.2-SNAPSHOT + + + wayang-jdbc + + Wayang JDBC + + This module aggregates the external client-server JDBC interface for Apache Wayang. + + + + wayang-jdbc-protocol + wayang-jdbc-driver + wayang-jdbc-server + + + diff --git a/wayang-jdbc/wayang-jdbc-driver/pom.xml b/wayang-jdbc/wayang-jdbc-driver/pom.xml new file mode 100644 index 000000000..a66ceab4e --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/pom.xml @@ -0,0 +1,50 @@ + + + + 4.0.0 + + + wayang-jdbc + org.apache.wayang + 1.1.2-SNAPSHOT + + + wayang-jdbc-driver + + Wayang JDBC Driver + + Lightweight JDBC client driver that connects external JDBC applications to a Wayang JDBC server. + + + + org.apache.wayang.jdbc.driver + + + + + org.apache.wayang + wayang-jdbc-protocol + 1.1.2-SNAPSHOT + + + + diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java new file mode 100644 index 000000000..07e71beb4 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java @@ -0,0 +1,439 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import java.sql.Array; +import java.sql.Blob; +import java.sql.CallableStatement; +import java.sql.Clob; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.NClob; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLException; +import java.sql.SQLWarning; +import java.sql.SQLXML; +import java.sql.Savepoint; +import java.sql.Statement; +import java.sql.Struct; +import java.util.Collections; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.Executor; + +class WayangConnection implements Connection { + + private final WayangJdbcClient client; + + private final String jdbcUrl; + + private final String userName; + + private final Properties clientInfo = new Properties(); + + private boolean closed; + private boolean readOnly = true; + private boolean autoCommit = true; + private String catalog; + private String schema; + + WayangConnection(final WayangJdbcClient client, final String database) { + this(client, database, null, null); + } + + WayangConnection( + final WayangJdbcClient client, + final String database, + final String jdbcUrl, + final Properties properties + ) { + if (client == null) { + throw new IllegalArgumentException("JDBC client must not be null."); + } + this.client = client; + this.jdbcUrl = jdbcUrl; + this.userName = properties == null ? null : properties.getProperty("user"); + this.catalog = database; + this.schema = database; + } + + @Override + public Statement createStatement() throws SQLException { + this.ensureOpen(); + return new WayangStatement(this, this.client); + } + + @Override + public void close() throws SQLException { + if (this.closed) { + return; + } + try { + this.client.close(); + } finally { + this.closed = true; + } + } + + @Override + public boolean isClosed() { + return this.closed || this.client.isClosed(); + } + + @Override + public boolean getAutoCommit() throws SQLException { + this.ensureOpen(); + return this.autoCommit; + } + + @Override + public void setAutoCommit(final boolean autoCommit) throws SQLException { + this.ensureOpen(); + if (!autoCommit) { + throw this.unsupported("Wayang JDBC does not support transactions."); + } + this.autoCommit = true; + } + + @Override + public boolean isReadOnly() throws SQLException { + this.ensureOpen(); + return this.readOnly; + } + + @Override + public void setReadOnly(final boolean readOnly) throws SQLException { + this.ensureOpen(); + if (!readOnly) { + throw this.unsupported("Wayang JDBC connections are read-only."); + } + this.readOnly = true; + } + + @Override + public String getCatalog() throws SQLException { + this.ensureOpen(); + return this.catalog; + } + + @Override + public void setCatalog(final String catalog) throws SQLException { + this.ensureOpen(); + this.catalog = catalog; + } + + @Override + public String getSchema() throws SQLException { + this.ensureOpen(); + return this.schema; + } + + @Override + public void setSchema(final String schema) throws SQLException { + this.ensureOpen(); + this.schema = schema; + } + + @Override + public boolean isValid(final int timeout) throws SQLException { + if (timeout < 0) { + throw new SQLException("Timeout must not be negative."); + } + return !this.isClosed(); + } + + @Override + public DatabaseMetaData getMetaData() throws SQLException { + this.ensureOpen(); + return WayangDatabaseMetaData.create(this); + } + + @Override + public void commit() throws SQLException { + throw this.unsupported("Transactions are not supported."); + } + + @Override + public void rollback() throws SQLException { + throw this.unsupported("Transactions are not supported."); + } + + @Override + public void rollback(final Savepoint savepoint) throws SQLException { + throw this.unsupported("Savepoints are not supported."); + } + + @Override + public Savepoint setSavepoint() throws SQLException { + throw this.unsupported("Savepoints are not supported."); + } + + @Override + public Savepoint setSavepoint(final String name) throws SQLException { + throw this.unsupported("Savepoints are not supported."); + } + + @Override + public void releaseSavepoint(final Savepoint savepoint) throws SQLException { + throw this.unsupported("Savepoints are not supported."); + } + + @Override + public PreparedStatement prepareStatement(final String sql) throws SQLException { + throw this.unsupported("Prepared statements are not supported yet."); + } + + @Override + public CallableStatement prepareCall(final String sql) throws SQLException { + throw this.unsupported("Callable statements are not supported."); + } + + @Override + public String nativeSQL(final String sql) throws SQLException { + this.ensureOpen(); + return sql; + } + + @Override + public Statement createStatement(final int type, final int concurrency) throws SQLException { + this.ensureOpen(); + this.requireSupportedResultSetOptions(type, concurrency, ResultSet.CLOSE_CURSORS_AT_COMMIT); + return this.createStatement(); + } + + @Override + public Statement createStatement(final int type, final int concurrency, final int holdability) throws SQLException { + this.ensureOpen(); + this.requireSupportedResultSetOptions(type, concurrency, holdability); + return this.createStatement(); + } + + @Override + public PreparedStatement prepareStatement(final String sql, final int type, final int concurrency) throws SQLException { + throw this.unsupported("Prepared statements are not supported yet."); + } + + @Override + public PreparedStatement prepareStatement(final String sql, final int type, final int concurrency, final int holdability) throws SQLException { + throw this.unsupported("Prepared statements are not supported yet."); + } + + @Override + public PreparedStatement prepareStatement(final String sql, final int autoGeneratedKeys) throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public PreparedStatement prepareStatement(final String sql, final int[] columnIndexes) throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public PreparedStatement prepareStatement(final String sql, final String[] columnNames) throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public CallableStatement prepareCall(final String sql, final int type, final int concurrency) throws SQLException { + throw this.unsupported("Callable statements are not supported."); + } + + @Override + public CallableStatement prepareCall(final String sql, final int type, final int concurrency, final int holdability) throws SQLException { + throw this.unsupported("Callable statements are not supported."); + } + + @Override + public int getTransactionIsolation() throws SQLException { + this.ensureOpen(); + return Connection.TRANSACTION_NONE; + } + + @Override + public void setTransactionIsolation(final int level) throws SQLException { + this.ensureOpen(); + if (level != Connection.TRANSACTION_NONE) { + throw this.unsupported("Transactions are not supported."); + } + } + + @Override + public SQLWarning getWarnings() throws SQLException { + this.ensureOpen(); + return null; + } + + @Override + public void clearWarnings() throws SQLException { + this.ensureOpen(); + } + + @Override + public Map> getTypeMap() throws SQLException { + this.ensureOpen(); + return Collections.emptyMap(); + } + + @Override + public void setTypeMap(final Map> map) throws SQLException { + throw this.unsupported("Custom type maps are not supported."); + } + + @Override + public int getHoldability() throws SQLException { + this.ensureOpen(); + return ResultSet.CLOSE_CURSORS_AT_COMMIT; + } + + @Override + public void setHoldability(final int holdability) throws SQLException { + this.ensureOpen(); + if (holdability != ResultSet.CLOSE_CURSORS_AT_COMMIT) { + throw this.unsupported("Wayang JDBC supports only close-cursors-at-commit holdability."); + } + } + + @Override + public Clob createClob() throws SQLException { + throw this.unsupported("CLOB values are not supported."); + } + + @Override + public Blob createBlob() throws SQLException { + throw this.unsupported("BLOB values are not supported."); + } + + @Override + public NClob createNClob() throws SQLException { + throw this.unsupported("NCLOB values are not supported."); + } + + @Override + public SQLXML createSQLXML() throws SQLException { + throw this.unsupported("SQLXML values are not supported."); + } + + @Override + public Array createArrayOf(final String typeName, final Object[] elements) throws SQLException { + throw this.unsupported("SQL ARRAY values are not supported."); + } + + @Override + public Struct createStruct(final String typeName, final Object[] attributes) throws SQLException { + throw this.unsupported("SQL STRUCT values are not supported."); + } + + @Override + public void setClientInfo(final String name, final String value) { + this.clientInfo.setProperty(name, value); + } + + @Override + public String getClientInfo(final String name) { + return this.clientInfo.getProperty(name); + } + + @Override + public Properties getClientInfo() { + final Properties copy = new Properties(); + copy.putAll(this.clientInfo); + return copy; + } + + @Override + public void setClientInfo(final Properties properties) { + this.clientInfo.putAll(properties); + } + + @Override + public void abort(final Executor executor) throws SQLException { + if (executor == null) { + throw new SQLException("Executor must not be null."); + } + executor.execute(() -> { + try { + close(); + } catch (SQLException ignored) { + } + }); + } + + @Override + public void setNetworkTimeout(final Executor executor, final int milliseconds) throws SQLException { + throw this.unsupported("Network timeout is not supported."); + } + + @Override + public int getNetworkTimeout() throws SQLException { + this.ensureOpen(); + return 0; + } + + @Override + public T unwrap(final Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("Connection does not wrap " + iface.getName()); + } + + @Override + public boolean isWrapperFor(final Class iface) { + return iface.isInstance(this); + } + + String getJdbcUrl() { + return this.jdbcUrl; + } + + String getUserName() { + return this.userName; + } + + WayangJdbcClient getClient() { + return this.client; + } + + private void ensureOpen() throws SQLException { + if (this.isClosed()) { + throw new SQLException("Wayang JDBC connection is closed.", "08003"); + } + } + + private void requireSupportedResultSetOptions( + final int type, + final int concurrency, + final int holdability + ) throws SQLException { + if (type != ResultSet.TYPE_FORWARD_ONLY) { + throw this.unsupported("Wayang JDBC supports only forward-only result sets."); + } + if (concurrency != ResultSet.CONCUR_READ_ONLY) { + throw this.unsupported("Wayang JDBC supports only read-only result sets."); + } + if (holdability != ResultSet.CLOSE_CURSORS_AT_COMMIT) { + throw this.unsupported("Wayang JDBC supports only close-cursors-at-commit holdability."); + } + } + + private SQLFeatureNotSupportedException unsupported(final String message) { + return new SQLFeatureNotSupportedException(message, "0A000"); + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java new file mode 100644 index 000000000..12fc385e7 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java @@ -0,0 +1,802 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.RowIdLifetime; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.Types; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import javax.sql.rowset.CachedRowSet; +import javax.sql.rowset.RowSetMetaDataImpl; +import javax.sql.rowset.RowSetProvider; + +final class WayangDatabaseMetaData implements InvocationHandler { + + private static final String DRIVER_NAME = "Apache Wayang JDBC Driver"; + + private static final String PRODUCT_NAME = "Apache Wayang"; + + private static final String FALLBACK_VERSION = "1.1.2-SNAPSHOT"; + + private final WayangConnection connection; + + private WayangDatabaseMetaData(final WayangConnection connection) { + if (connection == null) { + throw new IllegalArgumentException("Connection must not be null."); + } + this.connection = connection; + } + + static DatabaseMetaData create(final WayangConnection connection) { + return (DatabaseMetaData) Proxy.newProxyInstance( + DatabaseMetaData.class.getClassLoader(), + new Class[]{DatabaseMetaData.class}, + new WayangDatabaseMetaData(connection) + ); + } + + @Override + public Object invoke( + final Object proxy, + final Method method, + final Object[] args + ) throws Throwable { + if (method.getDeclaringClass() == Object.class) { + return this.invokeObjectMethod(proxy, method, args); + } + + this.ensureOpen(); + + final String methodName = method.getName(); + switch (methodName) { + case "getConnection": + return this.connection; + case "getURL": + return this.emptyIfNull(this.connection.getJdbcUrl()); + case "getUserName": + return this.emptyIfNull(this.connection.getUserName()); + case "getDriverName": + return DRIVER_NAME; + case "getDriverVersion": + return this.version(); + case "getDriverMajorVersion": + return 1; + case "getDriverMinorVersion": + return 0; + case "getDatabaseProductName": + return PRODUCT_NAME; + case "getDatabaseProductVersion": + return this.version(); + case "getDatabaseMajorVersion": + return 1; + case "getDatabaseMinorVersion": + return 1; + case "getJDBCMajorVersion": + return 4; + case "getJDBCMinorVersion": + return 2; + case "isReadOnly": + return true; + case "allProceduresAreCallable": + return false; + case "allTablesAreSelectable": + return true; + case "getSQLStateType": + return DatabaseMetaData.sqlStateSQL; + case "getResultSetHoldability": + return ResultSet.CLOSE_CURSORS_AT_COMMIT; + case "supportsResultSetType": + return (Integer) args[0] == ResultSet.TYPE_FORWARD_ONLY; + case "supportsResultSetConcurrency": + return (Integer) args[0] == ResultSet.TYPE_FORWARD_ONLY + && (Integer) args[1] == ResultSet.CONCUR_READ_ONLY; + case "supportsResultSetHoldability": + return (Integer) args[0] == ResultSet.CLOSE_CURSORS_AT_COMMIT; + case "supportsTransactions": + case "supportsMultipleTransactions": + case "supportsSavepoints": + case "supportsBatchUpdates": + case "supportsStoredProcedures": + case "supportsNamedParameters": + case "supportsGetGeneratedKeys": + case "supportsMultipleOpenResults": + case "supportsMultipleResultSets": + case "supportsStatementPooling": + case "supportsDataDefinitionAndDataManipulationTransactions": + case "supportsDataManipulationTransactionsOnly": + case "dataDefinitionCausesTransactionCommit": + case "dataDefinitionIgnoredInTransactions": + case "supportsOpenCursorsAcrossCommit": + case "supportsOpenCursorsAcrossRollback": + case "supportsOpenStatementsAcrossCommit": + case "supportsOpenStatementsAcrossRollback": + case "supportsStoredFunctionsUsingCallSyntax": + case "autoCommitFailureClosesAllResultSets": + case "generatedKeyAlwaysReturned": + case "supportsRefCursors": + case "supportsSharding": + return false; + case "getDefaultTransactionIsolation": + return Connection.TRANSACTION_NONE; + case "getIdentifierQuoteString": + return "\""; + case "getSearchStringEscape": + return "\\"; + case "getExtraNameCharacters": + case "getSQLKeywords": + case "getNumericFunctions": + case "getStringFunctions": + case "getSystemFunctions": + case "getTimeDateFunctions": + return ""; + case "getCatalogTerm": + return "catalog"; + case "getSchemaTerm": + return "schema"; + case "getProcedureTerm": + return "procedure"; + case "getCatalogSeparator": + return "."; + case "isCatalogAtStart": + return true; + case "nullsAreSortedAtEnd": + return true; + case "getCatalogs": + return this.catalogs(); + case "getSchemas": + return this.schemas(args); + case "getTableTypes": + return this.tableTypes(); + case "getTables": + return this.tables(args); + case "getColumns": + return this.columns(args); + case "getProcedures": + return this.procedures(); + case "getProcedureColumns": + return this.procedureColumns(); + case "getTypeInfo": + return this.typeInfo(); + case "getColumnPrivileges": + return this.columnPrivileges(); + case "getTablePrivileges": + return this.tablePrivileges(); + case "getBestRowIdentifier": + return this.bestRowIdentifier(); + case "getVersionColumns": + return this.versionColumns(); + case "getImportedKeys": + case "getExportedKeys": + case "getCrossReference": + return this.foreignKeys(); + case "getPrimaryKeys": + return this.primaryKeys(); + case "getIndexInfo": + return this.indexInfo(); + case "getUDTs": + return this.udts(); + case "getSuperTypes": + return this.superTypes(); + case "getSuperTables": + return this.superTables(); + case "getAttributes": + return this.attributes(); + case "getClientInfoProperties": + return this.clientInfoProperties(); + case "getFunctions": + return this.functions(); + case "getFunctionColumns": + return this.functionColumns(); + case "getPseudoColumns": + return this.pseudoColumns(); + case "getRowIdLifetime": + return RowIdLifetime.ROWID_UNSUPPORTED; + case "unwrap": + return this.unwrap(proxy, (Class) args[0]); + case "isWrapperFor": + return this.isWrapperFor(proxy, (Class) args[0]); + default: + return this.defaultValue(method); + } + } + + private Object invokeObjectMethod( + final Object proxy, + final Method method, + final Object[] args + ) { + switch (method.getName()) { + case "toString": + return "WayangDatabaseMetaData"; + case "hashCode": + return System.identityHashCode(proxy); + case "equals": + return proxy == args[0]; + default: + throw new IllegalStateException("Unexpected Object method: " + method.getName()); + } + } + + private ResultSet catalogs() throws SQLException { + final String catalog = this.connection.getCatalog(); + final List> rows = new ArrayList<>(); + if (catalog != null) { + rows.add(Collections.singletonList(catalog)); + } + return this.resultSet( + Arrays.asList(column("TABLE_CAT", Types.VARCHAR)), + rows + ); + } + + private ResultSet schemas(final Object[] args) throws SQLException { + final String catalog = this.stringArg(args, 0); + final String schemaPattern = this.stringArg(args, 1); + return this.resultSet(this.connection.getClient().getSchemas(catalog, schemaPattern)); + } + + private ResultSet tableTypes() throws SQLException { + return this.resultSet( + Arrays.asList(column("TABLE_TYPE", Types.VARCHAR)), + Arrays.asList( + Collections.singletonList("TABLE"), + Collections.singletonList("VIEW") + ) + ); + } + + private ResultSet tables(final Object[] args) throws SQLException { + return this.resultSet(this.connection.getClient().getTables( + this.stringArg(args, 0), + this.stringArg(args, 1), + this.stringArg(args, 2), + this.stringArrayArg(args, 3) + )); + } + + private ResultSet columns(final Object[] args) throws SQLException { + return this.resultSet(this.connection.getClient().getColumns( + this.stringArg(args, 0), + this.stringArg(args, 1), + this.stringArg(args, 2), + this.stringArg(args, 3) + )); + } + + private ResultSet procedures() throws SQLException { + return this.resultSet( + Arrays.asList( + column("PROCEDURE_CAT", Types.VARCHAR), + column("PROCEDURE_SCHEM", Types.VARCHAR), + column("PROCEDURE_NAME", Types.VARCHAR), + column("RESERVED1", Types.VARCHAR), + column("RESERVED2", Types.VARCHAR), + column("RESERVED3", Types.VARCHAR), + column("REMARKS", Types.VARCHAR), + column("PROCEDURE_TYPE", Types.SMALLINT), + column("SPECIFIC_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet procedureColumns() throws SQLException { + return this.resultSet( + Arrays.asList( + column("PROCEDURE_CAT", Types.VARCHAR), + column("PROCEDURE_SCHEM", Types.VARCHAR), + column("PROCEDURE_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("COLUMN_TYPE", Types.SMALLINT), + column("DATA_TYPE", Types.INTEGER), + column("TYPE_NAME", Types.VARCHAR), + column("PRECISION", Types.INTEGER), + column("LENGTH", Types.INTEGER), + column("SCALE", Types.SMALLINT), + column("RADIX", Types.SMALLINT), + column("NULLABLE", Types.SMALLINT), + column("REMARKS", Types.VARCHAR), + column("COLUMN_DEF", Types.VARCHAR), + column("SQL_DATA_TYPE", Types.INTEGER), + column("SQL_DATETIME_SUB", Types.INTEGER), + column("CHAR_OCTET_LENGTH", Types.INTEGER), + column("ORDINAL_POSITION", Types.INTEGER), + column("IS_NULLABLE", Types.VARCHAR), + column("SPECIFIC_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet typeInfo() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TYPE_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("PRECISION", Types.INTEGER), + column("LITERAL_PREFIX", Types.VARCHAR), + column("LITERAL_SUFFIX", Types.VARCHAR), + column("CREATE_PARAMS", Types.VARCHAR), + column("NULLABLE", Types.SMALLINT), + column("CASE_SENSITIVE", Types.BOOLEAN), + column("SEARCHABLE", Types.SMALLINT), + column("UNSIGNED_ATTRIBUTE", Types.BOOLEAN), + column("FIXED_PREC_SCALE", Types.BOOLEAN), + column("AUTO_INCREMENT", Types.BOOLEAN), + column("LOCAL_TYPE_NAME", Types.VARCHAR), + column("MINIMUM_SCALE", Types.SMALLINT), + column("MAXIMUM_SCALE", Types.SMALLINT), + column("SQL_DATA_TYPE", Types.INTEGER), + column("SQL_DATETIME_SUB", Types.INTEGER), + column("NUM_PREC_RADIX", Types.INTEGER) + ), + Collections.emptyList() + ); + } + + private ResultSet columnPrivileges() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("GRANTOR", Types.VARCHAR), + column("GRANTEE", Types.VARCHAR), + column("PRIVILEGE", Types.VARCHAR), + column("IS_GRANTABLE", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet tablePrivileges() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("GRANTOR", Types.VARCHAR), + column("GRANTEE", Types.VARCHAR), + column("PRIVILEGE", Types.VARCHAR), + column("IS_GRANTABLE", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet bestRowIdentifier() throws SQLException { + return this.resultSet( + Arrays.asList( + column("SCOPE", Types.SMALLINT), + column("COLUMN_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("TYPE_NAME", Types.VARCHAR), + column("COLUMN_SIZE", Types.INTEGER), + column("BUFFER_LENGTH", Types.INTEGER), + column("DECIMAL_DIGITS", Types.SMALLINT), + column("PSEUDO_COLUMN", Types.SMALLINT) + ), + Collections.emptyList() + ); + } + + private ResultSet versionColumns() throws SQLException { + return this.resultSet( + Arrays.asList( + column("SCOPE", Types.SMALLINT), + column("COLUMN_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("TYPE_NAME", Types.VARCHAR), + column("COLUMN_SIZE", Types.INTEGER), + column("BUFFER_LENGTH", Types.INTEGER), + column("DECIMAL_DIGITS", Types.SMALLINT), + column("PSEUDO_COLUMN", Types.SMALLINT) + ), + Collections.emptyList() + ); + } + + private ResultSet primaryKeys() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("KEY_SEQ", Types.SMALLINT), + column("PK_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet foreignKeys() throws SQLException { + return this.resultSet( + Arrays.asList( + column("PKTABLE_CAT", Types.VARCHAR), + column("PKTABLE_SCHEM", Types.VARCHAR), + column("PKTABLE_NAME", Types.VARCHAR), + column("PKCOLUMN_NAME", Types.VARCHAR), + column("FKTABLE_CAT", Types.VARCHAR), + column("FKTABLE_SCHEM", Types.VARCHAR), + column("FKTABLE_NAME", Types.VARCHAR), + column("FKCOLUMN_NAME", Types.VARCHAR), + column("KEY_SEQ", Types.SMALLINT), + column("UPDATE_RULE", Types.SMALLINT), + column("DELETE_RULE", Types.SMALLINT), + column("FK_NAME", Types.VARCHAR), + column("PK_NAME", Types.VARCHAR), + column("DEFERRABILITY", Types.SMALLINT) + ), + Collections.emptyList() + ); + } + + private ResultSet indexInfo() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("NON_UNIQUE", Types.BOOLEAN), + column("INDEX_QUALIFIER", Types.VARCHAR), + column("INDEX_NAME", Types.VARCHAR), + column("TYPE", Types.SMALLINT), + column("ORDINAL_POSITION", Types.SMALLINT), + column("COLUMN_NAME", Types.VARCHAR), + column("ASC_OR_DESC", Types.VARCHAR), + column("CARDINALITY", Types.BIGINT), + column("PAGES", Types.BIGINT), + column("FILTER_CONDITION", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet udts() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TYPE_CAT", Types.VARCHAR), + column("TYPE_SCHEM", Types.VARCHAR), + column("TYPE_NAME", Types.VARCHAR), + column("CLASS_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("REMARKS", Types.VARCHAR), + column("BASE_TYPE", Types.SMALLINT) + ), + Collections.emptyList() + ); + } + + private ResultSet superTypes() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TYPE_CAT", Types.VARCHAR), + column("TYPE_SCHEM", Types.VARCHAR), + column("TYPE_NAME", Types.VARCHAR), + column("SUPERTYPE_CAT", Types.VARCHAR), + column("SUPERTYPE_SCHEM", Types.VARCHAR), + column("SUPERTYPE_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet superTables() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("SUPERTABLE_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet attributes() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TYPE_CAT", Types.VARCHAR), + column("TYPE_SCHEM", Types.VARCHAR), + column("TYPE_NAME", Types.VARCHAR), + column("ATTR_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("ATTR_TYPE_NAME", Types.VARCHAR), + column("ATTR_SIZE", Types.INTEGER), + column("DECIMAL_DIGITS", Types.INTEGER), + column("NUM_PREC_RADIX", Types.INTEGER), + column("NULLABLE", Types.INTEGER), + column("REMARKS", Types.VARCHAR), + column("ATTR_DEF", Types.VARCHAR), + column("SQL_DATA_TYPE", Types.INTEGER), + column("SQL_DATETIME_SUB", Types.INTEGER), + column("CHAR_OCTET_LENGTH", Types.INTEGER), + column("ORDINAL_POSITION", Types.INTEGER), + column("IS_NULLABLE", Types.VARCHAR), + column("SCOPE_CATALOG", Types.VARCHAR), + column("SCOPE_SCHEMA", Types.VARCHAR), + column("SCOPE_TABLE", Types.VARCHAR), + column("SOURCE_DATA_TYPE", Types.SMALLINT) + ), + Collections.emptyList() + ); + } + + private ResultSet clientInfoProperties() throws SQLException { + return this.resultSet( + Arrays.asList( + column("NAME", Types.VARCHAR), + column("MAX_LEN", Types.INTEGER), + column("DEFAULT_VALUE", Types.VARCHAR), + column("DESCRIPTION", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet functions() throws SQLException { + return this.resultSet( + Arrays.asList( + column("FUNCTION_CAT", Types.VARCHAR), + column("FUNCTION_SCHEM", Types.VARCHAR), + column("FUNCTION_NAME", Types.VARCHAR), + column("REMARKS", Types.VARCHAR), + column("FUNCTION_TYPE", Types.SMALLINT), + column("SPECIFIC_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet functionColumns() throws SQLException { + return this.resultSet( + Arrays.asList( + column("FUNCTION_CAT", Types.VARCHAR), + column("FUNCTION_SCHEM", Types.VARCHAR), + column("FUNCTION_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("COLUMN_TYPE", Types.SMALLINT), + column("DATA_TYPE", Types.INTEGER), + column("TYPE_NAME", Types.VARCHAR), + column("PRECISION", Types.INTEGER), + column("LENGTH", Types.INTEGER), + column("SCALE", Types.SMALLINT), + column("RADIX", Types.SMALLINT), + column("NULLABLE", Types.SMALLINT), + column("REMARKS", Types.VARCHAR), + column("CHAR_OCTET_LENGTH", Types.INTEGER), + column("ORDINAL_POSITION", Types.INTEGER), + column("IS_NULLABLE", Types.VARCHAR), + column("SPECIFIC_NAME", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet pseudoColumns() throws SQLException { + return this.resultSet( + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("COLUMN_SIZE", Types.INTEGER), + column("DECIMAL_DIGITS", Types.INTEGER), + column("NUM_PREC_RADIX", Types.INTEGER), + column("COLUMN_USAGE", Types.VARCHAR), + column("REMARKS", Types.VARCHAR), + column("CHAR_OCTET_LENGTH", Types.INTEGER), + column("IS_NULLABLE", Types.VARCHAR) + ), + Collections.emptyList() + ); + } + + private ResultSet resultSet( + final List columns, + final List> rows + ) throws SQLException { + final CachedRowSet rowSet = RowSetProvider.newFactory().createCachedRowSet(); + final RowSetMetaDataImpl metaData = new RowSetMetaDataImpl(); + metaData.setColumnCount(columns.size()); + + for (int index = 0; index < columns.size(); index++) { + final MetadataColumn column = columns.get(index); + final int columnIndex = index + 1; + metaData.setColumnName(columnIndex, column.name); + metaData.setColumnLabel(columnIndex, column.name); + metaData.setColumnType(columnIndex, column.type); + metaData.setColumnTypeName(columnIndex, column.typeName); + metaData.setNullable(columnIndex, ResultSetMetaData.columnNullable); + metaData.setColumnDisplaySize(columnIndex, 128); + } + + rowSet.setMetaData(metaData); + for (List row : rows) { + if (row.size() != columns.size()) { + throw new SQLException("Metadata row has " + row.size() + + " values but " + columns.size() + " columns were declared."); + } + rowSet.moveToInsertRow(); + for (int index = 0; index < row.size(); index++) { + rowSet.updateObject(index + 1, row.get(index)); + } + rowSet.insertRow(); + rowSet.moveToCurrentRow(); + } + rowSet.beforeFirst(); + return rowSet; + } + + private ResultSet resultSet(final MetadataResultResponse response) throws SQLException { + final List columns = new ArrayList<>(); + if (response.getColumns() != null) { + for (ColumnInfo column : response.getColumns()) { + columns.add(new MetadataColumn( + column.getColumnName(), + column.getJdbcType(), + column.getTypeName() + )); + } + } + final List> rows = response.getRows() == null + ? Collections.emptyList() + : response.getRows(); + return this.resultSet(columns, rows); + } + + private String stringArg(final Object[] args, final int index) { + if (args == null || index >= args.length || args[index] == null) { + return null; + } + return String.valueOf(args[index]); + } + + private String[] stringArrayArg(final Object[] args, final int index) { + if (args == null || index >= args.length || args[index] == null) { + return null; + } + return (String[]) args[index]; + } + + private Object defaultValue(final Method method) throws SQLFeatureNotSupportedException { + final Class returnType = method.getReturnType(); + if (returnType == Boolean.TYPE) { + return false; + } + if (returnType == Integer.TYPE) { + return 0; + } + if (returnType == Long.TYPE) { + return 0L; + } + if (returnType == Short.TYPE) { + return (short) 0; + } + if (returnType == Byte.TYPE) { + return (byte) 0; + } + if (returnType == Float.TYPE) { + return 0F; + } + if (returnType == Double.TYPE) { + return 0D; + } + if (returnType == Void.TYPE) { + return null; + } + if (returnType == String.class) { + return ""; + } + if (returnType == ResultSet.class) { + throw this.unsupported("DatabaseMetaData method is not supported yet: " + method.getName()); + } + throw this.unsupported("DatabaseMetaData method is not supported yet: " + method.getName()); + } + + private Object unwrap(final Object proxy, final Class iface) throws SQLException { + if (iface.isInstance(proxy)) { + return iface.cast(proxy); + } + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("DatabaseMetaData does not wrap " + iface.getName()); + } + + private boolean isWrapperFor(final Object proxy, final Class iface) { + return iface.isInstance(proxy) || iface.isInstance(this); + } + + private void ensureOpen() throws SQLException { + if (this.connection.isClosed()) { + throw new SQLException("Wayang JDBC connection is closed.", "08003"); + } + } + + private String version() { + final Package driverPackage = WayangDriver.class.getPackage(); + final String version = driverPackage == null ? null : driverPackage.getImplementationVersion(); + return version == null || version.isBlank() ? FALLBACK_VERSION : version; + } + + private String emptyIfNull(final String value) { + return value == null ? "" : value; + } + + private SQLFeatureNotSupportedException unsupported(final String message) { + return new SQLFeatureNotSupportedException(message, "0A000"); + } + + private static MetadataColumn column(final String name, final int type) { + return new MetadataColumn(name, type); + } + + private static final class MetadataColumn { + + private final String name; + + private final int type; + + private final String typeName; + + private MetadataColumn(final String name, final int type) { + this(name, type, jdbcTypeName(type)); + } + + private MetadataColumn(final String name, final int type, final String typeName) { + this.name = name == null ? "" : name; + this.type = type; + this.typeName = typeName == null || typeName.isBlank() ? jdbcTypeName(type) : typeName; + } + } + + private static String jdbcTypeName(final int type) { + switch (type) { + case Types.BIGINT: + return "BIGINT"; + case Types.BOOLEAN: + return "BOOLEAN"; + case Types.INTEGER: + return "INTEGER"; + case Types.SMALLINT: + return "SMALLINT"; + case Types.VARCHAR: + return "VARCHAR"; + default: + return "OTHER"; + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java new file mode 100644 index 000000000..5d862f304 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import java.sql.Connection; +import java.sql.Driver; +import java.sql.DriverManager; +import java.sql.DriverPropertyInfo; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.util.Properties; +import java.util.logging.Logger; + +public class WayangDriver implements Driver { + + static { + try { + DriverManager.registerDriver(new WayangDriver()); + } catch (SQLException e) { + throw new ExceptionInInitializerError(e); + } + } + + @Override + public Connection connect(final String url, final Properties info) throws SQLException { + if (!this.acceptsURL(url)) { + return null; + } + + final WayangJdbcUrl jdbcUrl = WayangJdbcUrl.parse(url, info); + final WayangJdbcClient client = new WayangJdbcClient(jdbcUrl); + return new WayangConnection(client, jdbcUrl.getDatabase(), url, jdbcUrl.getProperties()); + } + + @Override + public boolean acceptsURL(final String url) { + return WayangJdbcUrl.accepts(url); + } + + @Override + public DriverPropertyInfo[] getPropertyInfo(final String url, final Properties info) { + return new DriverPropertyInfo[0]; + } + + @Override + public int getMajorVersion() { + return 1; + } + + @Override + public int getMinorVersion() { + return 0; + } + + @Override + public boolean jdbcCompliant() { + return false; + } + + @Override + public Logger getParentLogger() throws SQLFeatureNotSupportedException { + throw new SQLFeatureNotSupportedException("Wayang JDBC does not use java.util.logging."); + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java new file mode 100644 index 000000000..678bc918a --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java @@ -0,0 +1,348 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.MessageType; +import org.apache.wayang.jdbc.protocol.io.ProtocolMessageCodec; +import org.apache.wayang.jdbc.protocol.message.CancelQueryRequest; +import org.apache.wayang.jdbc.protocol.message.CancelQueryResponse; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.CloseCursorRequest; +import org.apache.wayang.jdbc.protocol.message.CloseCursorResponse; +import org.apache.wayang.jdbc.protocol.message.ErrorCode; +import org.apache.wayang.jdbc.protocol.message.ErrorResponse; +import org.apache.wayang.jdbc.protocol.message.ExecuteQueryRequest; +import org.apache.wayang.jdbc.protocol.message.FetchRequest; +import org.apache.wayang.jdbc.protocol.message.FetchResponse; +import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; +import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; +import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import java.io.IOException; +import java.net.Socket; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.UUID; + +class WayangJdbcClient implements AutoCloseable { + + private final Socket socket; + + private final ProtocolMessageCodec codec; + + private final String connectionId; + + private boolean closed; + + WayangJdbcClient(final WayangJdbcUrl jdbcUrl) throws SQLException { + if (jdbcUrl == null) { + throw new IllegalArgumentException("JDBC URL must not be null."); + } + + this.codec = new ProtocolMessageCodec(); + this.socket = this.openSocket(jdbcUrl); + try { + final Properties properties = jdbcUrl.getProperties(); + final OpenConnectionRequest request = new OpenConnectionRequest( + properties.getProperty("user"), + jdbcUrl.getDatabase(), + this.toStringMap(properties) + ); + + final OpenConnectionResponse response = this.sendAndReceive( + MessageType.OPEN_CONNECTION, + request, + MessageType.OPEN_CONNECTION_OK, + OpenConnectionResponse.class + ); + this.requireText(response.getConnectionId(), "Connection id"); + this.connectionId = response.getConnectionId(); + } catch (SQLException e) { + this.closed = true; + try { + this.socket.close(); + } catch (IOException closeException) { + e.addSuppressed(closeException); + } + throw e; + } + } + + String getConnectionId() { + return this.connectionId; + } + + boolean isClosed() { + return this.closed || this.socket.isClosed(); + } + + QueryResultResponse executeQuery( + final String statementId, + final String sql, + final int fetchSize + ) throws SQLException { + this.requireText(statementId, "Statement id"); + this.requireText(sql, "SQL query"); + + return this.sendAndReceive( + MessageType.EXECUTE_QUERY, + new ExecuteQueryRequest(this.connectionId, statementId, sql, fetchSize), + MessageType.QUERY_RESULT, + QueryResultResponse.class + ); + } + + FetchResponse fetch(final String cursorId, final int fetchSize) throws SQLException { + this.requireText(cursorId, "Cursor id"); + + return this.sendAndReceive( + MessageType.FETCH, + new FetchRequest(this.connectionId, cursorId, fetchSize), + MessageType.FETCH_RESULT, + FetchResponse.class + ); + } + + void closeCursor(final String statementId, final String cursorId) throws SQLException { + this.requireText(statementId, "Statement id"); + this.requireText(cursorId, "Cursor id"); + + this.sendAndReceive( + MessageType.CLOSE_CURSOR, + new CloseCursorRequest(this.connectionId, statementId, cursorId), + MessageType.CLOSE_CURSOR_OK, + CloseCursorResponse.class + ); + } + + CancelQueryResponse cancelQuery(final String statementId, final String cursorId) throws SQLException { + this.requireText(statementId, "Statement id"); + + return this.sendAndReceive( + MessageType.CANCEL_QUERY, + new CancelQueryRequest(this.connectionId, statementId, cursorId), + MessageType.CANCEL_QUERY_OK, + CancelQueryResponse.class + ); + } + + MetadataResultResponse getSchemas( + final String catalog, + final String schemaPattern + ) throws SQLException { + return this.sendAndReceive( + MessageType.GET_SCHEMAS, + new GetSchemasRequest(this.connectionId, catalog, schemaPattern), + MessageType.METADATA_RESULT, + MetadataResultResponse.class + ); + } + + MetadataResultResponse getTables( + final String catalog, + final String schemaPattern, + final String tableNamePattern, + final String[] tableTypes + ) throws SQLException { + return this.sendAndReceive( + MessageType.GET_TABLES, + new GetTablesRequest( + this.connectionId, + catalog, + schemaPattern, + tableNamePattern, + this.toList(tableTypes) + ), + MessageType.METADATA_RESULT, + MetadataResultResponse.class + ); + } + + MetadataResultResponse getColumns( + final String catalog, + final String schemaPattern, + final String tableNamePattern, + final String columnNamePattern + ) throws SQLException { + return this.sendAndReceive( + MessageType.GET_COLUMNS, + new GetColumnsRequest( + this.connectionId, + catalog, + schemaPattern, + tableNamePattern, + columnNamePattern + ), + MessageType.METADATA_RESULT, + MetadataResultResponse.class + ); + } + + @Override + public void close() throws SQLException { + if (this.closed) { + return; + } + + SQLException failure = null; + try { + this.sendAndReceive( + MessageType.CLOSE_CONNECTION, + new CloseConnectionRequest(this.connectionId), + MessageType.CLOSE_CONNECTION_OK, + CloseConnectionResponse.class + ); + } catch (SQLException e) { + failure = e; + } finally { + this.closed = true; + try { + this.socket.close(); + } catch (IOException e) { + if (failure == null) { + failure = new SQLException("Could not close Wayang JDBC socket.", "08006", e); + } + } + } + + if (failure != null) { + throw failure; + } + } + + private Socket openSocket(final WayangJdbcUrl jdbcUrl) throws SQLException { + try { + return new Socket(jdbcUrl.getHost(), jdbcUrl.getPort()); + } catch (IOException e) { + throw new SQLException("Could not connect to Wayang JDBC server.", "08001", e); + } + } + + private synchronized T sendAndReceive( + final MessageType requestType, + final Object requestPayload, + final MessageType expectedResponseType, + final Class responseClass + ) throws SQLException { + this.ensureOpen(); + + final String requestId = UUID.randomUUID().toString(); + try { + this.codec.write( + this.socket.getOutputStream(), + this.codec.toEnvelope(requestId, requestType, requestPayload) + ); + + final MessageEnvelope response = this.codec.read(this.socket.getInputStream()); + if (response == null) { + throw new SQLException("Wayang JDBC server closed the connection.", "08006"); + } + + if (!requestId.equals(response.getRequestId())) { + throw new SQLException("Wayang JDBC server returned a mismatched request id.", "HY000"); + } + + if (response.getType() == MessageType.ERROR) { + throw this.toSqlException(this.codec.payloadAs(response, ErrorResponse.class)); + } + + if (response.getType() != expectedResponseType) { + throw new SQLException( + "Wayang JDBC server returned unexpected response type: " + response.getType(), + "HY000" + ); + } + + return this.codec.payloadAs(response, responseClass); + } catch (SQLException e) { + throw e; + } catch (IOException e) { + throw new SQLException("Could not communicate with Wayang JDBC server.", "08006", e); + } + } + + private SQLException toSqlException(final ErrorResponse response) { + String message = response.getMessage(); + + if (message == null || message.isBlank()) { + message = "Wayang JDBC server returned an error."; + } + + if (response.getDetail() != null && !response.getDetail().isBlank()) { + message = message + " " + response.getDetail(); + } + + if (response.getErrorCode() == ErrorCode.UNSUPPORTED_OPERATION) { + return new SQLFeatureNotSupportedException( + message, + response.getSqlState(), + response.getVendorCode() + ); + } + + return new SQLException( + message, + response.getSqlState(), + response.getVendorCode() + ); + } + + private void ensureOpen() throws SQLException { + if (this.isClosed()) { + throw new SQLException("Wayang JDBC connection is closed.", "08003"); + } + } + + private void requireText( + final String value, + final String fieldName + ) throws SQLException { + if (value == null || value.isBlank()) { + throw new SQLException( + fieldName + " must not be blank.", "HY000" + ); + } + } + + private Map toStringMap(final Properties properties) { + final Map values = new LinkedHashMap<>(); + for (String name : properties.stringPropertyNames()) { + values.put(name, properties.getProperty(name)); + } + return values; + } + + private List toList(final String[] values) { + if (values == null) { + return Collections.emptyList(); + } + return Arrays.asList(values); + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java new file mode 100644 index 000000000..0283ca15f --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java @@ -0,0 +1,130 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.ProtocolConstants; + +import java.net.URI; +import java.net.URISyntaxException; +import java.sql.SQLException; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Properties; + +public final class WayangJdbcUrl { + + public static final String PREFIX = "jdbc:wayang://"; + + private final String host; + + private final int port; + + private final String database; + + private final Properties properties; + + private WayangJdbcUrl( + final String host, + final int port, + final String database, + final Properties properties + ) { + this.host = host; + this.port = port; + this.database = database; + this.properties = properties; + } + + public static boolean accepts(final String url) { + return url != null && url.startsWith(PREFIX); + } + + public static WayangJdbcUrl parse(final String url, final Properties inputProperties) throws SQLException { + if (!accepts(url)) { + throw new SQLException("Invalid Wayang JDBC URL: " + url); + } + + final String uriValue = "wayang://" + url.substring(PREFIX.length()); + + final URI uri; + try { + uri = new URI(uriValue); + } catch (URISyntaxException e) { + throw new SQLException("Could not parse Wayang JDBC URL: " + url, e); + } + + final String host = uri.getHost(); + if (host == null || host.isBlank()) { + throw new SQLException("Wayang JDBC URL must contain a host."); + } + + final int port = uri.getPort() == -1 ? ProtocolConstants.DEFAULT_PORT : uri.getPort(); + final String database = parseDatabase(uri.getPath()); + + final Properties properties = new Properties(); + if (inputProperties != null) { + properties.putAll(inputProperties); + } + parseQueryProperties(uri.getRawQuery()).forEach(properties::setProperty); + + return new WayangJdbcUrl(host, port, database, properties); + } + + private static String parseDatabase(final String path) { + if (path == null || path.isBlank() || "/".equals(path)) { + return null; + } + return path.startsWith("/") ? path.substring(1) : path; + } + + private static Map parseQueryProperties(final String query) throws SQLException { + final Map properties = new LinkedHashMap<>(); + if (query == null || query.isBlank()) { + return properties; + } + + final String[] pairs = query.split("&"); + for (String pair : pairs) { + final int separator = pair.indexOf('='); + if (separator <= 0) { + throw new SQLException("Invalid Wayang JDBC URL query property: " + pair); + } + properties.put(pair.substring(0, separator), pair.substring(separator + 1)); + } + + return properties; + } + + public String getHost() { + return this.host; + } + + public int getPort() { + return this.port; + } + + public String getDatabase() { + return this.database; + } + + public Properties getProperties() { + final Properties copy = new Properties(); + copy.putAll(this.properties); + return copy; + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java new file mode 100644 index 000000000..a81f0c8a0 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java @@ -0,0 +1,594 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.FetchResponse; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.sql.Array; +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Date; +import java.sql.NClob; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLXML; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +final class WayangResultSet implements InvocationHandler { + + private final WayangStatement statement; + + private final WayangJdbcClient client; + + private final List columns; + + private final ResultSetMetaData metaData; + + private final int fetchSize; + + private final int maxRows; + + private List> rows; + + private String cursorId; + + private boolean hasMoreRows; + + private int rowIndex = -1; + + private int rowNumber; + + private boolean afterLast; + + private boolean closed; + + private Object lastValue; + + private WayangResultSet( + final WayangStatement statement, + final WayangJdbcClient client, + final QueryResultResponse response, + final int fetchSize, + final int maxRows + ) { + this.statement = statement; + this.client = client; + this.columns = List.copyOf(response.getColumns()); + this.rows = this.copyRows(response.getRows()); + this.cursorId = response.getCursorId(); + this.hasMoreRows = response.isHasMoreRows(); + this.fetchSize = fetchSize; + this.maxRows = maxRows; + this.metaData = new WayangResultSetMetaData(this.columns); + } + + static ResultSet create( + final WayangStatement statement, + final WayangJdbcClient client, + final QueryResultResponse response, + final int fetchSize, + final int maxRows + ) { + return (ResultSet) Proxy.newProxyInstance( + ResultSet.class.getClassLoader(), + new Class[]{ResultSet.class}, + new WayangResultSet(statement, client, response, fetchSize, maxRows) + ); + } + + @Override + public Object invoke( + final Object proxy, + final Method method, + final Object[] args + ) throws Throwable { + if (method.getDeclaringClass() == Object.class) { + return this.invokeObjectMethod(proxy, method, args); + } + + final String methodName = method.getName(); + switch (methodName) { + case "next": + return this.next(); + case "close": + this.close((ResultSet) proxy); + return null; + case "isClosed": + return this.closed; + case "wasNull": + this.ensureOpen(); + return this.lastValue == null; + case "getMetaData": + this.ensureOpen(); + return this.metaData; + case "getStatement": + this.ensureOpen(); + return this.statement; + case "findColumn": + this.ensureOpen(); + return this.findColumn((String) args[0]); + case "getObject": + return this.getObject(args); + case "getString": + case "getNString": + return this.asString(this.value(args[0])); + case "getBoolean": + return this.asBoolean(this.value(args[0])); + case "getByte": + return this.asNumber(this.value(args[0])).byteValue(); + case "getShort": + return this.asNumber(this.value(args[0])).shortValue(); + case "getInt": + return this.asNumber(this.value(args[0])).intValue(); + case "getLong": + return this.asNumber(this.value(args[0])).longValue(); + case "getFloat": + return this.asNumber(this.value(args[0])).floatValue(); + case "getDouble": + return this.asNumber(this.value(args[0])).doubleValue(); + case "getBigDecimal": + return this.asBigDecimal(this.value(args[0])); + case "getBytes": + return this.asBytes(this.value(args[0])); + case "getAsciiStream": + case "getBinaryStream": + case "getUnicodeStream": + return this.asBinaryStream(this.value(args[0])); + case "getCharacterStream": + case "getNCharacterStream": + return this.asCharacterStream(this.value(args[0])); + case "getDate": + return this.asDate(this.value(args[0])); + case "getTime": + return this.asTime(this.value(args[0])); + case "getTimestamp": + return this.asTimestamp(this.value(args[0])); + case "getURL": + return this.asUrl(this.value(args[0])); + case "getArray": + return this.unsupportedValue("SQL ARRAY values are not supported."); + case "getBlob": + return this.unsupportedValue("BLOB values are not supported."); + case "getClob": + return this.unsupportedValue("CLOB values are not supported."); + case "getNClob": + return this.unsupportedValue("NCLOB values are not supported."); + case "getSQLXML": + return this.unsupportedValue("SQLXML values are not supported."); + case "getRow": + this.ensureOpen(); + return this.rowIndex >= 0 && this.rowIndex < this.rows.size() ? this.rowNumber : 0; + case "isBeforeFirst": + this.ensureOpen(); + return this.rowNumber == 0 && !this.afterLast; + case "isAfterLast": + this.ensureOpen(); + return this.afterLast; + case "isFirst": + this.ensureOpen(); + return this.rowNumber == 1 && this.rowIndex >= 0; + case "isLast": + this.ensureOpen(); + return !this.hasMoreRows && this.rowIndex == this.rows.size() - 1 && this.rowIndex >= 0; + case "rowUpdated": + case "rowInserted": + case "rowDeleted": + this.ensureOpen(); + return false; + case "beforeFirst": + case "afterLast": + case "first": + case "last": + case "absolute": + case "relative": + case "previous": + throw this.unsupported("Wayang JDBC supports only forward-only result sets."); + case "getType": + this.ensureOpen(); + return ResultSet.TYPE_FORWARD_ONLY; + case "getConcurrency": + this.ensureOpen(); + return ResultSet.CONCUR_READ_ONLY; + case "getHoldability": + this.ensureOpen(); + return ResultSet.CLOSE_CURSORS_AT_COMMIT; + case "getFetchDirection": + this.ensureOpen(); + return ResultSet.FETCH_FORWARD; + case "setFetchDirection": + this.ensureOpen(); + if ((Integer) args[0] != ResultSet.FETCH_FORWARD) { + throw this.unsupported("Wayang JDBC supports only forward fetch direction."); + } + return null; + case "getFetchSize": + this.ensureOpen(); + return this.fetchSize; + case "setFetchSize": + this.ensureOpen(); + if ((Integer) args[0] < 0) { + throw new SQLException("Fetch size must not be negative."); + } + return null; + case "getWarnings": + this.ensureOpen(); + return null; + case "clearWarnings": + this.ensureOpen(); + return null; + case "unwrap": + return this.unwrap(proxy, (Class) args[0]); + case "isWrapperFor": + return ((Class) args[0]).isInstance(proxy); + default: + throw this.unsupported("ResultSet method is not supported yet: " + methodName); + } + } + + private Object invokeObjectMethod( + final Object proxy, + final Method method, + final Object[] args + ) { + switch (method.getName()) { + case "toString": + return "WayangResultSet"; + case "hashCode": + return System.identityHashCode(proxy); + case "equals": + return proxy == args[0]; + default: + throw new IllegalStateException("Unsupported Object method: " + method.getName()); + } + } + + private boolean next() throws SQLException { + this.ensureOpen(); + this.lastValue = null; + + if (this.reachedMaxRows()) { + this.closeCursorIfOpen(); + this.afterLast = true; + return false; + } + + if (this.rowIndex + 1 < this.rows.size()) { + this.rowIndex++; + this.rowNumber++; + return true; + } + + while (this.hasMoreRows && this.cursorId != null) { + final FetchResponse response = this.client.fetch(this.cursorId, this.fetchSize); + this.rows = this.copyRows(response.getRows()); + this.hasMoreRows = response.isHasMoreRows(); + if (!this.hasMoreRows) { + this.cursorId = null; + } + this.rowIndex = -1; + + if (this.reachedMaxRows()) { + this.closeCursorIfOpen(); + this.afterLast = true; + return false; + } + + if (this.rowIndex + 1 < this.rows.size()) { + this.rowIndex++; + this.rowNumber++; + return true; + } + } + + this.afterLast = true; + return false; + } + + private Object getObject(final Object[] args) throws SQLException { + if (args.length == 1) { + return this.value(args[0]); + } + + final Object value = this.value(args[0]); + if (!(args[1] instanceof Class)) { + return value; + } + + final Class targetType = (Class) args[1]; + if (value == null || targetType.isInstance(value)) { + return value; + } + if (targetType == String.class) { + return this.asString(value); + } + if (targetType == Boolean.class || targetType == boolean.class) { + return this.asBoolean(value); + } + if (targetType == Byte.class || targetType == byte.class) { + return this.asNumber(value).byteValue(); + } + if (targetType == Short.class || targetType == short.class) { + return this.asNumber(value).shortValue(); + } + if (targetType == Integer.class || targetType == int.class) { + return this.asNumber(value).intValue(); + } + if (targetType == Long.class || targetType == long.class) { + return this.asNumber(value).longValue(); + } + if (targetType == Float.class || targetType == float.class) { + return this.asNumber(value).floatValue(); + } + if (targetType == Double.class || targetType == double.class) { + return this.asNumber(value).doubleValue(); + } + if (targetType == BigDecimal.class) { + return this.asBigDecimal(value); + } + throw new SQLException("Cannot convert value to " + targetType.getName()); + } + + private Object value(final Object column) throws SQLException { + this.ensureOpen(); + final int columnIndex; + if (column instanceof Integer) { + columnIndex = (Integer) column; + } else if (column instanceof String) { + columnIndex = this.findColumn((String) column); + } else { + throw new SQLException("Unsupported column reference: " + column); + } + + final List row = this.currentRow(); + if (columnIndex < 1 || columnIndex > this.columns.size()) { + throw new SQLException("Column index out of bounds: " + columnIndex); + } + this.lastValue = columnIndex <= row.size() ? row.get(columnIndex - 1) : null; + return this.lastValue; + } + + private List currentRow() throws SQLException { + if (this.rowIndex < 0 || this.rowIndex >= this.rows.size()) { + throw new SQLException("ResultSet cursor is not positioned on a row."); + } + return this.rows.get(this.rowIndex); + } + + private int findColumn(final String columnLabel) throws SQLException { + if (columnLabel == null || columnLabel.isBlank()) { + throw new SQLException("Column label must not be blank."); + } + for (int i = 0; i < this.columns.size(); i++) { + final ColumnInfo column = this.columns.get(i); + if (columnLabel.equalsIgnoreCase(column.getColumnLabel()) + || columnLabel.equalsIgnoreCase(column.getColumnName())) { + return i + 1; + } + } + throw new SQLException("Unknown column label: " + columnLabel); + } + + private void close(final ResultSet proxy) throws SQLException { + if (this.closed) { + return; + } + + SQLException failure = null; + try { + this.closeCursorIfOpen(); + } catch (SQLException e) { + failure = e; + } finally { + this.closed = true; + this.statement.resultSetClosed(proxy); + } + + if (failure != null) { + throw failure; + } + } + + private List> copyRows(final List> sourceRows) { + final List> copy = new ArrayList<>(); + if (sourceRows == null) { + return copy; + } + for (List row : sourceRows) { + copy.add(new ArrayList<>(row)); + } + return copy; + } + + private boolean reachedMaxRows() { + return this.maxRows > 0 && this.rowNumber >= this.maxRows; + } + + private void closeCursorIfOpen() throws SQLException { + if (this.cursorId != null) { + this.client.closeCursor(this.statement.getStatementId(), this.cursorId); + this.cursorId = null; + this.hasMoreRows = false; + } + } + + private String asString(final Object value) { + return value == null ? null : String.valueOf(value); + } + + private Boolean asBoolean(final Object value) throws SQLException { + if (value == null) { + return false; + } + if (value instanceof Boolean) { + return (Boolean) value; + } + if (value instanceof Number) { + return ((Number) value).doubleValue() != 0D; + } + final String text = String.valueOf(value).trim().toLowerCase(Locale.ROOT); + if ("true".equals(text) || "1".equals(text)) { + return true; + } + if ("false".equals(text) || "0".equals(text)) { + return false; + } + throw new SQLException("Cannot convert value to boolean: " + value); + } + + private Number asNumber(final Object value) throws SQLException { + if (value == null) { + return 0; + } + if (value instanceof Number) { + return (Number) value; + } + if (value instanceof Boolean) { + return (Boolean) value ? 1 : 0; + } + try { + return new BigDecimal(String.valueOf(value)); + } catch (NumberFormatException e) { + throw new SQLException("Cannot convert value to number: " + value, e); + } + } + + private BigDecimal asBigDecimal(final Object value) throws SQLException { + if (value == null) { + return null; + } + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + if (value instanceof Number || value instanceof Boolean || value instanceof String) { + return new BigDecimal(String.valueOf(this.asNumber(value))); + } + throw new SQLException("Cannot convert value to BigDecimal: " + value); + } + + private byte[] asBytes(final Object value) throws SQLException { + if (value == null) { + return null; + } + if (value instanceof byte[]) { + return (byte[]) value; + } + return String.valueOf(value).getBytes(StandardCharsets.UTF_8); + } + + private java.io.InputStream asBinaryStream(final Object value) throws SQLException { + final byte[] bytes = this.asBytes(value); + return bytes == null ? null : new java.io.ByteArrayInputStream(bytes); + } + + private java.io.Reader asCharacterStream(final Object value) { + final String text = this.asString(value); + return text == null ? null : new java.io.StringReader(text); + } + + private Date asDate(final Object value) throws SQLException { + if (value == null) { + return null; + } + if (value instanceof Date) { + return (Date) value; + } + try { + return Date.valueOf(String.valueOf(value)); + } catch (IllegalArgumentException e) { + throw new SQLException("Cannot convert value to Date: " + value, e); + } + } + + private Time asTime(final Object value) throws SQLException { + if (value == null) { + return null; + } + if (value instanceof Time) { + return (Time) value; + } + try { + return Time.valueOf(String.valueOf(value)); + } catch (IllegalArgumentException e) { + throw new SQLException("Cannot convert value to Time: " + value, e); + } + } + + private Timestamp asTimestamp(final Object value) throws SQLException { + if (value == null) { + return null; + } + if (value instanceof Timestamp) { + return (Timestamp) value; + } + try { + return Timestamp.valueOf(String.valueOf(value)); + } catch (IllegalArgumentException e) { + throw new SQLException("Cannot convert value to Timestamp: " + value, e); + } + } + + private URL asUrl(final Object value) throws SQLException { + if (value == null) { + return null; + } + if (value instanceof URL) { + return (URL) value; + } + try { + return new URL(String.valueOf(value)); + } catch (MalformedURLException e) { + throw new SQLException("Cannot convert value to URL: " + value, e); + } + } + + private Object unsupportedValue(final String message) throws SQLFeatureNotSupportedException { + throw this.unsupported(message); + } + + private Object unwrap(final Object proxy, final Class iface) throws SQLException { + if (iface.isInstance(proxy)) { + return iface.cast(proxy); + } + throw new SQLException("ResultSet does not wrap " + iface.getName()); + } + + private void ensureOpen() throws SQLException { + if (this.closed) { + throw new SQLException("Wayang JDBC result set is closed.", "24000"); + } + } + + private SQLFeatureNotSupportedException unsupported(final String message) { + return new SQLFeatureNotSupportedException(message, "0A000"); + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java new file mode 100644 index 000000000..7517ecbbc --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java @@ -0,0 +1,213 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; + +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Types; +import java.util.List; + +class WayangResultSetMetaData implements ResultSetMetaData { + + private final List columns; + + WayangResultSetMetaData(final List columns) { + this.columns = List.copyOf(columns); + } + + @Override + public int getColumnCount() { + return this.columns.size(); + } + + @Override + public boolean isAutoIncrement(final int column) throws SQLException { + this.column(column); + return false; + } + + @Override + public boolean isCaseSensitive(final int column) throws SQLException { + this.column(column); + return true; + } + + @Override + public boolean isSearchable(final int column) throws SQLException { + this.column(column); + return true; + } + + @Override + public boolean isCurrency(final int column) throws SQLException { + this.column(column); + return false; + } + + @Override + public int isNullable(final int column) throws SQLException { + return this.column(column).getNullable(); + } + + @Override + public boolean isSigned(final int column) throws SQLException { + switch (this.column(column).getJdbcType()) { + case Types.BIGINT: + case Types.DECIMAL: + case Types.DOUBLE: + case Types.FLOAT: + case Types.INTEGER: + case Types.NUMERIC: + case Types.REAL: + case Types.SMALLINT: + case Types.TINYINT: + return true; + default: + return false; + } + } + + @Override + public int getColumnDisplaySize(final int column) throws SQLException { + final int precision = this.column(column).getPrecision(); + return precision > 0 ? precision : 255; + } + + @Override + public String getColumnLabel(final int column) throws SQLException { + final ColumnInfo columnInfo = this.column(column); + return columnInfo.getColumnLabel() != null ? columnInfo.getColumnLabel() : columnInfo.getColumnName(); + } + + @Override + public String getColumnName(final int column) throws SQLException { + return this.column(column).getColumnName(); + } + + @Override + public String getSchemaName(final int column) throws SQLException { + final String schemaName = this.column(column).getSchemaName(); + return schemaName == null ? "" : schemaName; + } + + @Override + public int getPrecision(final int column) throws SQLException { + return this.column(column).getPrecision(); + } + + @Override + public int getScale(final int column) throws SQLException { + return this.column(column).getScale(); + } + + @Override + public String getTableName(final int column) throws SQLException { + final String tableName = this.column(column).getTableName(); + return tableName == null ? "" : tableName; + } + + @Override + public String getCatalogName(final int column) throws SQLException { + this.column(column); + return ""; + } + + @Override + public int getColumnType(final int column) throws SQLException { + return this.column(column).getJdbcType(); + } + + @Override + public String getColumnTypeName(final int column) throws SQLException { + final String typeName = this.column(column).getTypeName(); + return typeName == null ? "" : typeName; + } + + @Override + public boolean isReadOnly(final int column) throws SQLException { + this.column(column); + return true; + } + + @Override + public boolean isWritable(final int column) throws SQLException { + this.column(column); + return false; + } + + @Override + public boolean isDefinitelyWritable(final int column) throws SQLException { + this.column(column); + return false; + } + + @Override + public String getColumnClassName(final int column) throws SQLException { + switch (this.column(column).getJdbcType()) { + case Types.BIGINT: + return Long.class.getName(); + case Types.BIT: + case Types.BOOLEAN: + return Boolean.class.getName(); + case Types.DATE: + return java.sql.Date.class.getName(); + case Types.DECIMAL: + case Types.NUMERIC: + return java.math.BigDecimal.class.getName(); + case Types.DOUBLE: + case Types.FLOAT: + return Double.class.getName(); + case Types.INTEGER: + return Integer.class.getName(); + case Types.REAL: + return Float.class.getName(); + case Types.SMALLINT: + return Short.class.getName(); + case Types.TIME: + return java.sql.Time.class.getName(); + case Types.TIMESTAMP: + return java.sql.Timestamp.class.getName(); + case Types.TINYINT: + return Byte.class.getName(); + default: + return String.class.getName(); + } + } + + @Override + public T unwrap(final Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("ResultSetMetaData does not wrap " + iface.getName()); + } + + @Override + public boolean isWrapperFor(final Class iface) { + return iface.isInstance(this); + } + + private ColumnInfo column(final int column) throws SQLException { + if (column < 1 || column > this.columns.size()) { + throw new SQLException("Column index out of bounds: " + column); + } + return this.columns.get(column - 1); + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java new file mode 100644 index 000000000..a33c37a4b --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java @@ -0,0 +1,436 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.message.CancelQueryResponse; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLWarning; +import java.sql.Statement; +import java.util.UUID; + +class WayangStatement implements Statement { + + private final WayangConnection connection; + + private final WayangJdbcClient client; + + private final String statementId; + + private int fetchSize; + + private int maxRows; + + private int queryTimeout; + + private boolean poolable; + + private boolean closeOnCompletion; + + private boolean closed; + + private ResultSet currentResultSet; + + private String currentCursorId; + + WayangStatement( + final WayangConnection connection, + final WayangJdbcClient client + ) { + if (connection == null) { + throw new IllegalArgumentException("Connection must not be null."); + } + if (client == null) { + throw new IllegalArgumentException("JDBC client must not be null."); + } + this.connection = connection; + this.client = client; + this.statementId = UUID.randomUUID().toString(); + } + + String getStatementId() { + return this.statementId; + } + + @Override + public ResultSet executeQuery(final String sql) throws SQLException { + this.ensureOpen(); + this.closeCurrentResultSet(); + + final QueryResultResponse response = this.client.executeQuery(this.statementId, sql, this.fetchSize); + this.currentCursorId = response.getCursorId(); + this.currentResultSet = WayangResultSet.create(this, this.client, response, this.fetchSize, this.maxRows); + return this.currentResultSet; + } + + @Override + public boolean execute(final String sql) throws SQLException { + this.executeQuery(sql); + return true; + } + + @Override + public void close() throws SQLException { + if (this.closed) { + return; + } + try { + this.closeCurrentResultSet(); + } finally { + this.closed = true; + } + } + + @Override + public int getMaxFieldSize() throws SQLException { + this.ensureOpen(); + return 0; + } + + @Override + public void setMaxFieldSize(final int max) throws SQLException { + this.ensureOpen(); + if (max < 0) { + throw new SQLException("Maximum field size must not be negative."); + } + if (max > 0) { + throw this.unsupported("Maximum field size limiting is not supported."); + } + } + + @Override + public int getMaxRows() throws SQLException { + this.ensureOpen(); + return this.maxRows; + } + + @Override + public void setMaxRows(final int max) throws SQLException { + this.ensureOpen(); + if (max < 0) { + throw new SQLException("Maximum rows must not be negative."); + } + this.maxRows = max; + } + + @Override + public void setEscapeProcessing(final boolean enable) throws SQLException { + this.ensureOpen(); + } + + @Override + public int getQueryTimeout() throws SQLException { + this.ensureOpen(); + return this.queryTimeout; + } + + @Override + public void setQueryTimeout(final int seconds) throws SQLException { + this.ensureOpen(); + if (seconds < 0) { + throw new SQLException("Query timeout must not be negative."); + } + this.queryTimeout = seconds; + } + + @Override + public void cancel() throws SQLException { + this.ensureOpen(); + if (this.currentCursorId != null) { + final CancelQueryResponse response = this.client.cancelQuery(this.statementId, this.currentCursorId); + if (response.isCancelled()) { + this.currentCursorId = null; + } + } + } + + @Override + public SQLWarning getWarnings() throws SQLException { + this.ensureOpen(); + return null; + } + + @Override + public void clearWarnings() throws SQLException { + this.ensureOpen(); + } + + @Override + public void setCursorName(final String name) throws SQLException { + this.ensureOpen(); + throw this.unsupported("Named cursors are not supported."); + } + + @Override + public ResultSet getResultSet() throws SQLException { + this.ensureOpen(); + return this.currentResultSet; + } + + @Override + public int getUpdateCount() throws SQLException { + this.ensureOpen(); + return -1; + } + + @Override + public boolean getMoreResults() throws SQLException { + this.ensureOpen(); + this.closeCurrentResultSet(); + return false; + } + + @Override + public boolean getMoreResults(final int current) throws SQLException { + this.ensureOpen(); + if (current == Statement.CLOSE_CURRENT_RESULT || current == Statement.CLOSE_ALL_RESULTS) { + this.closeCurrentResultSet(); + } else if (current != Statement.KEEP_CURRENT_RESULT) { + throw new SQLException("Unsupported getMoreResults option: " + current); + } + return false; + } + + @Override + public void setFetchDirection(final int direction) throws SQLException { + this.ensureOpen(); + if (direction != ResultSet.FETCH_FORWARD) { + throw this.unsupported("Wayang JDBC supports only forward fetch direction."); + } + } + + @Override + public int getFetchDirection() throws SQLException { + this.ensureOpen(); + return ResultSet.FETCH_FORWARD; + } + + @Override + public void setFetchSize(final int rows) throws SQLException { + this.ensureOpen(); + if (rows < 0) { + throw new SQLException("Fetch size must not be negative."); + } + this.fetchSize = rows; + } + + @Override + public int getFetchSize() throws SQLException { + this.ensureOpen(); + return this.fetchSize; + } + + @Override + public int getResultSetConcurrency() throws SQLException { + this.ensureOpen(); + return ResultSet.CONCUR_READ_ONLY; + } + + @Override + public int getResultSetType() throws SQLException { + this.ensureOpen(); + return ResultSet.TYPE_FORWARD_ONLY; + } + + @Override + public int getResultSetHoldability() throws SQLException { + this.ensureOpen(); + return ResultSet.CLOSE_CURSORS_AT_COMMIT; + } + + @Override + public Connection getConnection() throws SQLException { + this.ensureOpen(); + return this.connection; + } + + @Override + public boolean isClosed() { + return this.closed || this.connection.isClosed(); + } + + @Override + public void setPoolable(final boolean poolable) throws SQLException { + this.ensureOpen(); + this.poolable = poolable; + } + + @Override + public boolean isPoolable() throws SQLException { + this.ensureOpen(); + return this.poolable; + } + + @Override + public void closeOnCompletion() throws SQLException { + this.ensureOpen(); + this.closeOnCompletion = true; + } + + @Override + public boolean isCloseOnCompletion() throws SQLException { + this.ensureOpen(); + return this.closeOnCompletion; + } + + @Override + public ResultSet getGeneratedKeys() throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public int executeUpdate(final String sql) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public int executeUpdate(final String sql, final int autoGeneratedKeys) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public int executeUpdate(final String sql, final int[] columnIndexes) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public int executeUpdate(final String sql, final String[] columnNames) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public boolean execute(final String sql, final int autoGeneratedKeys) throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public boolean execute(final String sql, final int[] columnIndexes) throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public boolean execute(final String sql, final String[] columnNames) throws SQLException { + throw this.unsupported("Generated keys are not supported."); + } + + @Override + public void addBatch(final String sql) throws SQLException { + throw this.unsupported("Batch execution is not supported."); + } + + @Override + public void clearBatch() throws SQLException { + this.ensureOpen(); + } + + @Override + public int[] executeBatch() throws SQLException { + throw this.unsupported("Batch execution is not supported."); + } + + @Override + public long getLargeUpdateCount() throws SQLException { + this.ensureOpen(); + return -1L; + } + + @Override + public void setLargeMaxRows(final long max) throws SQLException { + this.ensureOpen(); + if (max < 0L || max > Integer.MAX_VALUE) { + throw new SQLException("Large maximum rows must be between 0 and " + Integer.MAX_VALUE + "."); + } + this.maxRows = (int) max; + } + + @Override + public long getLargeMaxRows() throws SQLException { + this.ensureOpen(); + return this.maxRows; + } + + @Override + public long[] executeLargeBatch() throws SQLException { + throw this.unsupported("Batch execution is not supported."); + } + + @Override + public long executeLargeUpdate(final String sql) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public long executeLargeUpdate(final String sql, final int autoGeneratedKeys) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public long executeLargeUpdate(final String sql, final int[] columnIndexes) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public long executeLargeUpdate(final String sql, final String[] columnNames) throws SQLException { + throw this.unsupported("Wayang JDBC is read-only and does not support updates."); + } + + @Override + public T unwrap(final Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("Statement does not wrap " + iface.getName()); + } + + @Override + public boolean isWrapperFor(final Class iface) { + return iface.isInstance(this); + } + + void resultSetClosed(final ResultSet resultSet) throws SQLException { + if (this.currentResultSet == resultSet) { + this.currentResultSet = null; + this.currentCursorId = null; + if (this.closeOnCompletion && !this.closed) { + this.close(); + } + } + } + + private void closeCurrentResultSet() throws SQLException { + if (this.currentResultSet != null && !this.currentResultSet.isClosed()) { + this.currentResultSet.close(); + } + this.currentResultSet = null; + this.currentCursorId = null; + } + + private void ensureOpen() throws SQLException { + if (this.isClosed()) { + throw new SQLException("Wayang JDBC statement is closed.", "07000"); + } + } + + private SQLFeatureNotSupportedException unsupported(final String message) { + return new SQLFeatureNotSupportedException(message, "0A000"); + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/resources/META-INF/services/java.sql.Driver b/wayang-jdbc/wayang-jdbc-driver/src/main/resources/META-INF/services/java.sql.Driver new file mode 100644 index 000000000..c427b237f --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/resources/META-INF/services/java.sql.Driver @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +org.apache.wayang.jdbc.driver.WayangDriver diff --git a/wayang-jdbc/wayang-jdbc-protocol/pom.xml b/wayang-jdbc/wayang-jdbc-protocol/pom.xml new file mode 100644 index 000000000..827c9c769 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/pom.xml @@ -0,0 +1,49 @@ + + + + 4.0.0 + + + wayang-jdbc + org.apache.wayang + 1.1.2-SNAPSHOT + + + wayang-jdbc-protocol + + Wayang JDBC Protocol + + Shared request, response, and metadata protocol objects for the Wayang JDBC driver and server. + + + + org.apache.wayang.jdbc.protocol + + + + + com.fasterxml.jackson.core + jackson-databind + + + + diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageEnvelope.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageEnvelope.java new file mode 100644 index 000000000..23d7b243c --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageEnvelope.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol; + +import com.fasterxml.jackson.databind.JsonNode; + + +public class MessageEnvelope { + + private int version = ProtocolConstants.CURRENT_VERSION; + + private String requestId; + + private MessageType type; + + private JsonNode payload; + + public MessageEnvelope() { + } + + public MessageEnvelope( + final String requestId, + final MessageType type, + final JsonNode payload + ) { + this(ProtocolConstants.CURRENT_VERSION, requestId, type, payload); + } + + public MessageEnvelope( + final int version, + final String requestId, + final MessageType type, + final JsonNode payload + ) { + this.version = version; + this.requestId = requestId; + this.type = type; + this.payload = payload; + } + + public int getVersion() { + return this.version; + } + + public void setVersion(final int version) { + this.version = version; + } + + public String getRequestId() { + return this.requestId; + } + + public void setRequestId(final String requestId) { + this.requestId = requestId; + } + + public MessageType getType() { + return this.type; + } + + public void setType(final MessageType type) { + this.type = type; + } + + public JsonNode getPayload() { + return this.payload; + } + + public void setPayload(final JsonNode payload) { + this.payload = payload; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java new file mode 100644 index 000000000..23904c2f2 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol; + +/** + * Message types exchanged between the Wayang JDBC driver and server. + */ +public enum MessageType { + OPEN_CONNECTION, + OPEN_CONNECTION_OK, + EXECUTE_QUERY, + QUERY_RESULT, + FETCH, + FETCH_RESULT, + GET_SCHEMAS, + GET_TABLES, + GET_COLUMNS, + METADATA_RESULT, + CLOSE_CURSOR, + CLOSE_CURSOR_OK, + CANCEL_QUERY, + CANCEL_QUERY_OK, + CLOSE_CONNECTION, + CLOSE_CONNECTION_OK, + ERROR +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolConstants.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolConstants.java new file mode 100644 index 000000000..e35d90c95 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolConstants.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol; + +/** + * Constants shared by the Wayang JDBC driver and server. + */ +public final class ProtocolConstants { + + public static final int CURRENT_VERSION = 1; + + public static final int DEFAULT_PORT = 9999; + + public static final int DEFAULT_MAX_FRAME_LENGTH = 16 * 1024 * 1024; + + private ProtocolConstants() { + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolException.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolException.java new file mode 100644 index 000000000..a8d511a77 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/ProtocolException.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol; + +import java.io.IOException; + +/** + * Signals malformed or unsupported Wayang JDBC protocol data. + */ +public class ProtocolException extends IOException { + + public ProtocolException(final String message) { + super(message); + } + + public ProtocolException(final String message, final Throwable cause) { + super(message, cause); + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java new file mode 100644 index 000000000..90f4b45fa --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java @@ -0,0 +1,140 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.io; + +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.MessageType; +import org.apache.wayang.jdbc.protocol.ProtocolConstants; +import org.apache.wayang.jdbc.protocol.ProtocolException; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * Encodes and decodes length-prefixed JSON protocol messages. + */ +public class ProtocolMessageCodec { + + private final ObjectMapper objectMapper; + + private final int maxFrameLength; + + public ProtocolMessageCodec() { + this(new ObjectMapper(), ProtocolConstants.DEFAULT_MAX_FRAME_LENGTH); + } + + public ProtocolMessageCodec(final int maxFrameLength) { + this(new ObjectMapper(), maxFrameLength); + } + + public ProtocolMessageCodec(final ObjectMapper objectMapper, final int maxFrameLength) { + if (objectMapper == null) { + throw new IllegalArgumentException("Object mapper must not be null."); + } + if (maxFrameLength <= 0) { + throw new IllegalArgumentException("Maximum frame length must be positive."); + } + this.objectMapper = objectMapper; + this.maxFrameLength = maxFrameLength; + } + + public MessageEnvelope toEnvelope( + final String requestId, + final MessageType type, + final Object payload + ) { + final JsonNode payloadNode = this.objectMapper.valueToTree(payload); + return new MessageEnvelope(requestId, type, payloadNode); + } + + public T payloadAs(final MessageEnvelope envelope, final Class payloadClass) throws ProtocolException { + try { + return this.objectMapper.treeToValue(envelope.getPayload(), payloadClass); + } catch (JsonProcessingException e) { + throw new ProtocolException("Could not decode payload for message type " + envelope.getType(), e); + } + } + + public void write(final OutputStream outputStream, final MessageEnvelope message) throws IOException { + this.validateEnvelope(message); + + final byte[] payload = this.objectMapper.writeValueAsBytes(message); + if (payload.length > this.maxFrameLength) { + throw new ProtocolException("Protocol frame exceeds maximum length: " + payload.length); + } + + final DataOutputStream dataOutputStream = new DataOutputStream(outputStream); + dataOutputStream.writeInt(payload.length); + dataOutputStream.write(payload); + dataOutputStream.flush(); + } + + public MessageEnvelope read(final InputStream inputStream) throws IOException { + final DataInputStream dataInputStream = new DataInputStream(inputStream); + final int frameLength; + try { + frameLength = dataInputStream.readInt(); + } catch (EOFException e) { + return null; + } + + this.validateFrameLength(frameLength); + + final byte[] payload = new byte[frameLength]; + dataInputStream.readFully(payload); + + final MessageEnvelope envelope = this.objectMapper.readValue(payload, MessageEnvelope.class); + this.validateEnvelope(envelope); + return envelope; + } + + private void validateFrameLength(final int frameLength) throws ProtocolException { + if (frameLength <= 0) { + throw new ProtocolException("Protocol frame length must be positive: " + frameLength); + } + if (frameLength > this.maxFrameLength) { + throw new ProtocolException("Protocol frame exceeds maximum length: " + frameLength); + } + } + + private void validateEnvelope(final MessageEnvelope envelope) throws ProtocolException { + if (envelope == null) { + throw new ProtocolException("Protocol message must not be null."); + } + if (envelope.getVersion() != ProtocolConstants.CURRENT_VERSION) { + throw new ProtocolException("Unsupported protocol version: " + envelope.getVersion()); + } + if (envelope.getRequestId() == null || envelope.getRequestId().isBlank()) { + throw new ProtocolException("Protocol message is missing a request id."); + } + if (envelope.getType() == null) { + throw new ProtocolException("Protocol message is missing a message type."); + } + if (envelope.getPayload() == null || envelope.getPayload().isNull()) { + throw new ProtocolException("Protocol message is missing a payload."); + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryRequest.java new file mode 100644 index 000000000..ee7eb1c76 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryRequest.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Requests cancellation of a running statement. + */ +public class CancelQueryRequest { + + private String connectionId; + + private String statementId; + + private String cursorId; + + public CancelQueryRequest() { + } + + public CancelQueryRequest( + final String connectionId, + final String statementId, + final String cursorId + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.cursorId = cursorId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getStatementId() { + return this.statementId; + } + + public void setStatementId(final String statementId) { + this.statementId = statementId; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryResponse.java new file mode 100644 index 000000000..b824815f5 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CancelQueryResponse.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Confirms that the server accepted a query cancellation request. + */ +public class CancelQueryResponse { + + private String connectionId; + + private String statementId; + + private String cursorId; + + private boolean cancelled; + + public CancelQueryResponse() { + } + + public CancelQueryResponse( + final String connectionId, + final String statementId, + final String cursorId, + final boolean cancelled + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.cursorId = cursorId; + this.cancelled = cancelled; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getStatementId() { + return this.statementId; + } + + public void setStatementId(final String statementId) { + this.statementId = statementId; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } + + public boolean isCancelled() { + return this.cancelled; + } + + public void setCancelled(final boolean cancelled) { + this.cancelled = cancelled; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionRequest.java new file mode 100644 index 000000000..00b2266ce --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionRequest.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Closes a logical JDBC connection on the Wayang JDBC server. + */ +public class CloseConnectionRequest { + + private String connectionId; + + public CloseConnectionRequest() { + } + + public CloseConnectionRequest(final String connectionId) { + this.connectionId = connectionId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionResponse.java new file mode 100644 index 000000000..25656d36a --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseConnectionResponse.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Confirms that a logical JDBC connection was closed. + */ +public class CloseConnectionResponse { + + private String connectionId; + + public CloseConnectionResponse() { + } + + public CloseConnectionResponse(final String connectionId) { + this.connectionId = connectionId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorRequest.java new file mode 100644 index 000000000..12e591063 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorRequest.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Closes a server-side cursor associated with a result set. + */ +public class CloseCursorRequest { + + private String connectionId; + + private String statementId; + + private String cursorId; + + public CloseCursorRequest() { + } + + public CloseCursorRequest( + final String connectionId, + final String statementId, + final String cursorId + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.cursorId = cursorId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getStatementId() { + return this.statementId; + } + + public void setStatementId(final String statementId) { + this.statementId = statementId; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorResponse.java new file mode 100644 index 000000000..d9cfdda33 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/CloseCursorResponse.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Confirms that a server-side cursor was closed. + */ +public class CloseCursorResponse { + + private String connectionId; + + private String statementId; + + private String cursorId; + + public CloseCursorResponse() { + } + + public CloseCursorResponse( + final String connectionId, + final String statementId, + final String cursorId + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.cursorId = cursorId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getStatementId() { + return this.statementId; + } + + public void setStatementId(final String statementId) { + this.statementId = statementId; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ColumnInfo.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ColumnInfo.java new file mode 100644 index 000000000..4cf7402be --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ColumnInfo.java @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * JDBC-facing metadata for one result column. + */ +public class ColumnInfo { + + private String columnName; + + private String columnLabel; + + private String tableName; + + private String schemaName; + + private String typeName; + + private int jdbcType; + + private int nullable; + + private int precision; + + private int scale; + + public ColumnInfo() { + } + + public ColumnInfo( + final String columnName, + final String columnLabel, + final String tableName, + final String schemaName, + final String typeName, + final int jdbcType, + final int nullable, + final int precision, + final int scale + ) { + this.columnName = columnName; + this.columnLabel = columnLabel; + this.tableName = tableName; + this.schemaName = schemaName; + this.typeName = typeName; + this.jdbcType = jdbcType; + this.nullable = nullable; + this.precision = precision; + this.scale = scale; + } + + public String getColumnName() { + return this.columnName; + } + + public void setColumnName(final String columnName) { + this.columnName = columnName; + } + + public String getColumnLabel() { + return this.columnLabel; + } + + public void setColumnLabel(final String columnLabel) { + this.columnLabel = columnLabel; + } + + public String getTableName() { + return this.tableName; + } + + public void setTableName(final String tableName) { + this.tableName = tableName; + } + + public String getSchemaName() { + return this.schemaName; + } + + public void setSchemaName(final String schemaName) { + this.schemaName = schemaName; + } + + public String getTypeName() { + return this.typeName; + } + + public void setTypeName(final String typeName) { + this.typeName = typeName; + } + + public int getJdbcType() { + return this.jdbcType; + } + + public void setJdbcType(final int jdbcType) { + this.jdbcType = jdbcType; + } + + public int getNullable() { + return this.nullable; + } + + public void setNullable(final int nullable) { + this.nullable = nullable; + } + + public int getPrecision() { + return this.precision; + } + + public void setPrecision(final int precision) { + this.precision = precision; + } + + public int getScale() { + return this.scale; + } + + public void setScale(final int scale) { + this.scale = scale; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorCode.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorCode.java new file mode 100644 index 000000000..eae163301 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorCode.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Stable protocol-level error categories. + */ +public enum ErrorCode { + CONNECTION_ERROR, + INVALID_REQUEST, + UNSUPPORTED_OPERATION, + QUERY_PARSE_ERROR, + QUERY_EXECUTION_ERROR, + METADATA_ERROR, + INTERNAL_ERROR +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorResponse.java new file mode 100644 index 000000000..155785339 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ErrorResponse.java @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Carries an error that should be surfaced by the JDBC driver as a {@link java.sql.SQLException}. + */ +public class ErrorResponse { + + private ErrorCode errorCode; + + private String sqlState; + + private int vendorCode; + + private String message; + + private String detail; + + private String exceptionClass; + + public ErrorResponse() { + } + + public ErrorResponse( + final String sqlState, + final int vendorCode, + final String message, + final String detail + ) { + this(null, sqlState, vendorCode, message, detail, null); + } + + public ErrorResponse( + final ErrorCode errorCode, + final String sqlState, + final int vendorCode, + final String message, + final String detail, + final String exceptionClass + ) { + this.errorCode = errorCode; + this.sqlState = sqlState; + this.vendorCode = vendorCode; + this.message = message; + this.detail = detail; + this.exceptionClass = exceptionClass; + } + + public ErrorCode getErrorCode() { + return this.errorCode; + } + + public void setErrorCode(final ErrorCode errorCode) { + this.errorCode = errorCode; + } + + public String getSqlState() { + return this.sqlState; + } + + public void setSqlState(final String sqlState) { + this.sqlState = sqlState; + } + + public int getVendorCode() { + return this.vendorCode; + } + + public void setVendorCode(final int vendorCode) { + this.vendorCode = vendorCode; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(final String message) { + this.message = message; + } + + public String getDetail() { + return this.detail; + } + + public void setDetail(final String detail) { + this.detail = detail; + } + + public String getExceptionClass() { + return this.exceptionClass; + } + + public void setExceptionClass(final String exceptionClass) { + this.exceptionClass = exceptionClass; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ExecuteQueryRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ExecuteQueryRequest.java new file mode 100644 index 000000000..dab99ef65 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/ExecuteQueryRequest.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Sends a SQL query from the JDBC driver to the Wayang JDBC server. + */ +public class ExecuteQueryRequest { + + private String connectionId; + + private String statementId; + + private String sql; + + private int fetchSize; + + public ExecuteQueryRequest() { + } + + public ExecuteQueryRequest( + final String connectionId, + final String statementId, + final String sql, + final int fetchSize + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.sql = sql; + this.fetchSize = fetchSize; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getStatementId() { + return this.statementId; + } + + public void setStatementId(final String statementId) { + this.statementId = statementId; + } + + public String getSql() { + return this.sql; + } + + public void setSql(final String sql) { + this.sql = sql; + } + + public int getFetchSize() { + return this.fetchSize; + } + + public void setFetchSize(final int fetchSize) { + this.fetchSize = fetchSize; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchRequest.java new file mode 100644 index 000000000..074f86f92 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchRequest.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Requests the next row batch for an open query cursor. + */ +public class FetchRequest { + + private String connectionId; + + private String cursorId; + + private int fetchSize; + + public FetchRequest() { + } + + public FetchRequest(final String connectionId, final String cursorId, final int fetchSize) { + this.connectionId = connectionId; + this.cursorId = cursorId; + this.fetchSize = fetchSize; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } + + public int getFetchSize() { + return this.fetchSize; + } + + public void setFetchSize(final int fetchSize) { + this.fetchSize = fetchSize; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchResponse.java new file mode 100644 index 000000000..ea0a5dba6 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/FetchResponse.java @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +import java.util.ArrayList; +import java.util.List; + +/** + * Carries a row batch for an open query cursor. + */ +public class FetchResponse { + + private String connectionId; + + private String cursorId; + + private List> rows = new ArrayList<>(); + + private boolean hasMoreRows; + + public FetchResponse() { + } + + public FetchResponse( + final String connectionId, + final String cursorId, + final List> rows, + final boolean hasMoreRows + ) { + this.connectionId = connectionId; + this.cursorId = cursorId; + this.rows = rows; + this.hasMoreRows = hasMoreRows; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } + + public List> getRows() { + return this.rows; + } + + public void setRows(final List> rows) { + this.rows = rows; + } + + public boolean isHasMoreRows() { + return this.hasMoreRows; + } + + public void setHasMoreRows(final boolean hasMoreRows) { + this.hasMoreRows = hasMoreRows; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetColumnsRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetColumnsRequest.java new file mode 100644 index 000000000..9343c0d55 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetColumnsRequest.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Requests column metadata for {@link java.sql.DatabaseMetaData#getColumns(String, String, String, String)}. + */ +public class GetColumnsRequest { + + private String connectionId; + + private String catalogPattern; + + private String schemaPattern; + + private String tableNamePattern; + + private String columnNamePattern; + + public GetColumnsRequest() { + } + + public GetColumnsRequest( + final String connectionId, + final String catalogPattern, + final String schemaPattern, + final String tableNamePattern, + final String columnNamePattern + ) { + this.connectionId = connectionId; + this.catalogPattern = catalogPattern; + this.schemaPattern = schemaPattern; + this.tableNamePattern = tableNamePattern; + this.columnNamePattern = columnNamePattern; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getCatalogPattern() { + return this.catalogPattern; + } + + public void setCatalogPattern(final String catalogPattern) { + this.catalogPattern = catalogPattern; + } + + public String getSchemaPattern() { + return this.schemaPattern; + } + + public void setSchemaPattern(final String schemaPattern) { + this.schemaPattern = schemaPattern; + } + + public String getTableNamePattern() { + return this.tableNamePattern; + } + + public void setTableNamePattern(final String tableNamePattern) { + this.tableNamePattern = tableNamePattern; + } + + public String getColumnNamePattern() { + return this.columnNamePattern; + } + + public void setColumnNamePattern(final String columnNamePattern) { + this.columnNamePattern = columnNamePattern; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetSchemasRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetSchemasRequest.java new file mode 100644 index 000000000..f31a99c7b --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetSchemasRequest.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Requests schema metadata for {@link java.sql.DatabaseMetaData#getSchemas()}. + */ +public class GetSchemasRequest { + + private String connectionId; + + private String catalog; + + private String schemaPattern; + + public GetSchemasRequest() { + } + + public GetSchemasRequest(final String connectionId) { + this.connectionId = connectionId; + } + + public GetSchemasRequest( + final String connectionId, + final String catalog, + final String schemaPattern + ) { + this.connectionId = connectionId; + this.catalog = catalog; + this.schemaPattern = schemaPattern; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getCatalog() { + return this.catalog; + } + + public void setCatalog(final String catalog) { + this.catalog = catalog; + } + + public String getSchemaPattern() { + return this.schemaPattern; + } + + public void setSchemaPattern(final String schemaPattern) { + this.schemaPattern = schemaPattern; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetTablesRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetTablesRequest.java new file mode 100644 index 000000000..f3af4fac9 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/GetTablesRequest.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +import java.util.ArrayList; +import java.util.List; + +/** + * Requests table metadata for {@link java.sql.DatabaseMetaData#getTables(String, String, String, String[])}. + */ +public class GetTablesRequest { + + private String connectionId; + + private String catalogPattern; + + private String schemaPattern; + + private String tableNamePattern; + + private List tableTypes = new ArrayList<>(); + + public GetTablesRequest() { + } + + public GetTablesRequest( + final String connectionId, + final String catalogPattern, + final String schemaPattern, + final String tableNamePattern, + final List tableTypes + ) { + this.connectionId = connectionId; + this.catalogPattern = catalogPattern; + this.schemaPattern = schemaPattern; + this.tableNamePattern = tableNamePattern; + this.tableTypes = tableTypes; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getCatalogPattern() { + return this.catalogPattern; + } + + public void setCatalogPattern(final String catalogPattern) { + this.catalogPattern = catalogPattern; + } + + public String getSchemaPattern() { + return this.schemaPattern; + } + + public void setSchemaPattern(final String schemaPattern) { + this.schemaPattern = schemaPattern; + } + + public String getTableNamePattern() { + return this.tableNamePattern; + } + + public void setTableNamePattern(final String tableNamePattern) { + this.tableNamePattern = tableNamePattern; + } + + public List getTableTypes() { + return this.tableTypes; + } + + public void setTableTypes(final List tableTypes) { + this.tableTypes = tableTypes; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataResultResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataResultResponse.java new file mode 100644 index 000000000..9e643446e --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataResultResponse.java @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +import java.util.ArrayList; +import java.util.List; + +/** + * Carries tabular metadata rows for JDBC {@link java.sql.DatabaseMetaData} calls. + */ +public class MetadataResultResponse { + + private String connectionId; + + private MetadataType metadataType; + + private List columns = new ArrayList<>(); + + private List> rows = new ArrayList<>(); + + public MetadataResultResponse() { + } + + public MetadataResultResponse( + final String connectionId, + final MetadataType metadataType, + final List columns, + final List> rows + ) { + this.connectionId = connectionId; + this.metadataType = metadataType; + this.columns = columns; + this.rows = rows; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public MetadataType getMetadataType() { + return this.metadataType; + } + + public void setMetadataType(final MetadataType metadataType) { + this.metadataType = metadataType; + } + + public List getColumns() { + return this.columns; + } + + public void setColumns(final List columns) { + this.columns = columns; + } + + public List> getRows() { + return this.rows; + } + + public void setRows(final List> rows) { + this.rows = rows; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataType.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataType.java new file mode 100644 index 000000000..3eb0b708e --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/MetadataType.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Metadata result categories supported by the protocol. + */ +public enum MetadataType { + SCHEMAS, + TABLES, + COLUMNS +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionRequest.java new file mode 100644 index 000000000..3250e3aab --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionRequest.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Opens a logical JDBC connection on the Wayang JDBC server. + */ +public class OpenConnectionRequest { + + private String username; + + private String database; + + private Map properties = new LinkedHashMap<>(); + + public OpenConnectionRequest() { + } + + public OpenConnectionRequest( + final String username, + final String database, + final Map properties + ) { + this.username = username; + this.database = database; + this.properties = properties; + } + + public String getUsername() { + return this.username; + } + + public void setUsername(final String username) { + this.username = username; + } + + public String getDatabase() { + return this.database; + } + + public void setDatabase(final String database) { + this.database = database; + } + + public Map getProperties() { + return this.properties; + } + + public void setProperties(final Map properties) { + this.properties = properties; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionResponse.java new file mode 100644 index 000000000..a0f837b47 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/OpenConnectionResponse.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Confirms that a logical JDBC connection was opened by the server. + */ +public class OpenConnectionResponse { + + private String connectionId; + + private String serverVersion; + + private Map properties = new LinkedHashMap<>(); + + public OpenConnectionResponse() { + } + + public OpenConnectionResponse( + final String connectionId, + final String serverVersion, + final Map properties + ) { + this.connectionId = connectionId; + this.serverVersion = serverVersion; + this.properties = properties; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getServerVersion() { + return this.serverVersion; + } + + public void setServerVersion(final String serverVersion) { + this.serverVersion = serverVersion; + } + + public Map getProperties() { + return this.properties; + } + + public void setProperties(final Map properties) { + this.properties = properties; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/QueryResultResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/QueryResultResponse.java new file mode 100644 index 000000000..be49d6c47 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/QueryResultResponse.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +import java.util.ArrayList; +import java.util.List; + +/** + * Carries the first batch of rows and metadata for a query. + */ +public class QueryResultResponse { + + private String connectionId; + + private String statementId; + + private List columns = new ArrayList<>(); + + private List> rows = new ArrayList<>(); + + private boolean hasMoreRows; + + private String cursorId; + + public QueryResultResponse() { + } + + public QueryResultResponse( + final String connectionId, + final String statementId, + final List columns, + final List> rows, + final boolean hasMoreRows, + final String cursorId + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.columns = columns; + this.rows = rows; + this.hasMoreRows = hasMoreRows; + this.cursorId = cursorId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } + + public String getStatementId() { + return this.statementId; + } + + public void setStatementId(final String statementId) { + this.statementId = statementId; + } + + public List getColumns() { + return this.columns; + } + + public void setColumns(final List columns) { + this.columns = columns; + } + + public List> getRows() { + return this.rows; + } + + public void setRows(final List> rows) { + this.rows = rows; + } + + public boolean isHasMoreRows() { + return this.hasMoreRows; + } + + public void setHasMoreRows(final boolean hasMoreRows) { + this.hasMoreRows = hasMoreRows; + } + + public String getCursorId() { + return this.cursorId; + } + + public void setCursorId(final String cursorId) { + this.cursorId = cursorId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/pom.xml b/wayang-jdbc/wayang-jdbc-server/pom.xml new file mode 100644 index 000000000..e859032fb --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/pom.xml @@ -0,0 +1,55 @@ + + + + 4.0.0 + + + wayang-jdbc + org.apache.wayang + 1.1.2-SNAPSHOT + + + wayang-jdbc-server + + Wayang JDBC Server + + TCP/IP server that accepts Wayang JDBC driver requests and delegates SQL execution to the Wayang SQL API. + + + + org.apache.wayang.jdbc.server + + + + + org.apache.wayang + wayang-jdbc-protocol + 1.1.2-SNAPSHOT + + + org.apache.wayang + wayang-api-sql + 1.1.2-SNAPSHOT + + + + diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java new file mode 100644 index 000000000..7ffd3896a --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java @@ -0,0 +1,129 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Stores in-memory row cursors for query results that need fetch paging. + */ +class CursorStore { + + private final Map cursors = new ConcurrentHashMap<>(); + + String openCursor( + final String connectionId, + final String statementId, + final List> rows, + final int position + ) { + final String cursorId = UUID.randomUUID().toString(); + this.cursors.put(cursorId, new Cursor(connectionId, statementId, rows, position)); + return cursorId; + } + + FetchBatch fetch(final String connectionId, final String cursorId, final int fetchSize) { + final Cursor cursor = this.cursors.get(cursorId); + if (cursor == null || !cursor.connectionId.equals(connectionId)) { + return null; + } + + final FetchBatch batch = cursor.fetch(fetchSize); + if (!batch.hasMoreRows()) { + this.cursors.remove(cursorId); + } + return batch; + } + + boolean closeCursor(final String connectionId, final String cursorId) { + final Cursor cursor = this.cursors.get(cursorId); + if (cursor == null || !cursor.connectionId.equals(connectionId)) { + return false; + } + return this.cursors.remove(cursorId) != null; + } + + boolean cancelCursor(final String connectionId, final String cursorId) { + return this.closeCursor(connectionId, cursorId); + } + + void closeConnection(final String connectionId) { + final Iterator> iterator = this.cursors.entrySet().iterator(); + while (iterator.hasNext()) { + final Map.Entry entry = iterator.next(); + if (entry.getValue().connectionId.equals(connectionId)) { + iterator.remove(); + } + } + } + + static class FetchBatch { + + private final List> rows; + + private final boolean hasMoreRows; + + FetchBatch(final List> rows, final boolean hasMoreRows) { + this.rows = rows; + this.hasMoreRows = hasMoreRows; + } + + List> getRows() { + return this.rows; + } + + boolean hasMoreRows() { + return this.hasMoreRows; + } + } + + private static class Cursor { + + private final String connectionId; + + private final String statementId; + + private final List> rows; + + private int position; + + Cursor( + final String connectionId, + final String statementId, + final List> rows, + final int position + ) { + this.connectionId = connectionId; + this.statementId = statementId; + this.rows = rows; + this.position = position; + } + + synchronized FetchBatch fetch(final int fetchSize) { + final int end = Math.min(this.position + fetchSize, this.rows.size()); + final List> batch = new ArrayList<>(this.rows.subList(this.position, end)); + this.position = end; + return new FetchBatch(batch, this.position < this.rows.size()); + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java new file mode 100644 index 000000000..17f585803 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java @@ -0,0 +1,197 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; +import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; +import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.MetadataType; + +import java.sql.ResultSetMetaData; +import java.sql.Types; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.regex.Pattern; + +/** + * Default metadata provider for the read-only Wayang JDBC gateway. + */ +class DefaultSqlMetadataProvider implements SqlMetadataProvider { + + @Override + public MetadataResultResponse getSchemas( + final JdbcServerSession session, + final GetSchemasRequest request + ) { + final List> rows = new ArrayList<>(); + final String schema = session.getDatabase(); + final String catalog = session.getDatabase(); + if (schema != null + && this.matchesCatalog(catalog, request.getCatalog()) + && this.matchesPattern(schema, request.getSchemaPattern())) { + rows.add(Arrays.asList(schema, catalog)); + } + + return new MetadataResultResponse( + session.getConnectionId(), + MetadataType.SCHEMAS, + this.schemasColumns(), + rows + ); + } + + @Override + public MetadataResultResponse getTables( + final JdbcServerSession session, + final GetTablesRequest request + ) { + return new MetadataResultResponse( + session.getConnectionId(), + MetadataType.TABLES, + this.tablesColumns(), + Collections.emptyList() + ); + } + + @Override + public MetadataResultResponse getColumns( + final JdbcServerSession session, + final GetColumnsRequest request + ) { + return new MetadataResultResponse( + session.getConnectionId(), + MetadataType.COLUMNS, + this.columnsColumns(), + Collections.emptyList() + ); + } + + private List schemasColumns() { + return Arrays.asList( + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_CATALOG", Types.VARCHAR) + ); + } + + private List tablesColumns() { + return Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("TABLE_TYPE", Types.VARCHAR), + column("REMARKS", Types.VARCHAR), + column("TYPE_CAT", Types.VARCHAR), + column("TYPE_SCHEM", Types.VARCHAR), + column("TYPE_NAME", Types.VARCHAR), + column("SELF_REFERENCING_COL_NAME", Types.VARCHAR), + column("REF_GENERATION", Types.VARCHAR) + ); + } + + private List columnsColumns() { + return Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("TYPE_NAME", Types.VARCHAR), + column("COLUMN_SIZE", Types.INTEGER), + column("BUFFER_LENGTH", Types.INTEGER), + column("DECIMAL_DIGITS", Types.INTEGER), + column("NUM_PREC_RADIX", Types.INTEGER), + column("NULLABLE", Types.INTEGER), + column("REMARKS", Types.VARCHAR), + column("COLUMN_DEF", Types.VARCHAR), + column("SQL_DATA_TYPE", Types.INTEGER), + column("SQL_DATETIME_SUB", Types.INTEGER), + column("CHAR_OCTET_LENGTH", Types.INTEGER), + column("ORDINAL_POSITION", Types.INTEGER), + column("IS_NULLABLE", Types.VARCHAR), + column("SCOPE_CATALOG", Types.VARCHAR), + column("SCOPE_SCHEMA", Types.VARCHAR), + column("SCOPE_TABLE", Types.VARCHAR), + column("SOURCE_DATA_TYPE", Types.SMALLINT), + column("IS_AUTOINCREMENT", Types.VARCHAR), + column("IS_GENERATEDCOLUMN", Types.VARCHAR) + ); + } + + private boolean matchesCatalog(final String value, final String catalog) { + if (catalog == null) { + return true; + } + return catalog.equals(value); + } + + private boolean matchesPattern(final String value, final String pattern) { + if (pattern == null) { + return true; + } + if (value == null) { + return false; + } + return Pattern.compile(this.toRegex(pattern), Pattern.CASE_INSENSITIVE).matcher(value).matches(); + } + + private String toRegex(final String pattern) { + final StringBuilder regex = new StringBuilder(); + for (int index = 0; index < pattern.length(); index++) { + final char current = pattern.charAt(index); + if (current == '%') { + regex.append(".*"); + } else if (current == '_') { + regex.append('.'); + } else { + regex.append(Pattern.quote(String.valueOf(current))); + } + } + return regex.toString(); + } + + private static ColumnInfo column(final String name, final int jdbcType) { + return new ColumnInfo( + name, + name, + "", + "", + jdbcTypeName(jdbcType), + jdbcType, + ResultSetMetaData.columnNullable, + 0, + 0 + ); + } + + private static String jdbcTypeName(final int jdbcType) { + switch (jdbcType) { + case Types.INTEGER: + return "INTEGER"; + case Types.SMALLINT: + return "SMALLINT"; + case Types.VARCHAR: + return "VARCHAR"; + default: + return "OTHER"; + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java new file mode 100644 index 000000000..14432b99c --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.io.ProtocolMessageCodec; + +import java.io.IOException; +import java.net.Socket; + +/** + * Handles one TCP client connection. + */ +class JdbcClientHandler implements Runnable { + + private final Socket socket; + + private final JdbcRequestDispatcher dispatcher; + + private final ProtocolMessageCodec codec; + + JdbcClientHandler(final Socket socket, final JdbcRequestDispatcher dispatcher) { + this.socket = socket; + this.dispatcher = dispatcher; + this.codec = new ProtocolMessageCodec(); + } + + @Override + public void run() { + try (Socket clientSocket = this.socket) { + while (!clientSocket.isClosed()) { + final MessageEnvelope request = this.codec.read(clientSocket.getInputStream()); + if (request == null) { + return; + } + final MessageEnvelope response = this.dispatcher.dispatch(request); + this.codec.write(clientSocket.getOutputStream(), response); + } + } catch (IOException ignored) { + // The driver will surface connection failures through JDBC exceptions. + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java new file mode 100644 index 000000000..aaa0e523c --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java @@ -0,0 +1,341 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.wayang.api.sql.context.SqlQueryResult; +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.MessageType; +import org.apache.wayang.jdbc.protocol.ProtocolException; +import org.apache.wayang.jdbc.protocol.io.ProtocolMessageCodec; +import org.apache.wayang.jdbc.protocol.message.CancelQueryRequest; +import org.apache.wayang.jdbc.protocol.message.CancelQueryResponse; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.CloseCursorRequest; +import org.apache.wayang.jdbc.protocol.message.CloseCursorResponse; +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.ErrorCode; +import org.apache.wayang.jdbc.protocol.message.ErrorResponse; +import org.apache.wayang.jdbc.protocol.message.ExecuteQueryRequest; +import org.apache.wayang.jdbc.protocol.message.FetchRequest; +import org.apache.wayang.jdbc.protocol.message.FetchResponse; +import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; +import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; +import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import java.sql.SQLException; +import java.util.LinkedHashMap; +import java.util.List; + +/** + * Dispatches protocol messages to server-side JDBC gateway actions. + */ +public class JdbcRequestDispatcher { + + private static final int DEFAULT_FETCH_SIZE = 100; + + private static final String SERVER_VERSION = "1.1.2-SNAPSHOT"; + + private final ProtocolMessageCodec codec; + + private final SqlQueryExecutor queryExecutor; + + private final SqlMetadataProvider metadataProvider; + + private final JdbcServerSessionManager sessionManager; + + private final CursorStore cursorStore; + + private final int defaultFetchSize; + + public JdbcRequestDispatcher(final SqlQueryExecutor queryExecutor) { + this(queryExecutor, DEFAULT_FETCH_SIZE); + } + + public JdbcRequestDispatcher(final SqlQueryExecutor queryExecutor, final int defaultFetchSize) { + this(queryExecutor, new DefaultSqlMetadataProvider(), defaultFetchSize); + } + + public JdbcRequestDispatcher( + final SqlQueryExecutor queryExecutor, + final SqlMetadataProvider metadataProvider, + final int defaultFetchSize + ) { + if (queryExecutor == null) { + throw new IllegalArgumentException("Query executor must not be null."); + } + if (metadataProvider == null) { + throw new IllegalArgumentException("Metadata provider must not be null."); + } + if (defaultFetchSize <= 0) { + throw new IllegalArgumentException("Default fetch size must be positive."); + } + this.codec = new ProtocolMessageCodec(); + this.queryExecutor = queryExecutor; + this.metadataProvider = metadataProvider; + this.sessionManager = new JdbcServerSessionManager(); + this.cursorStore = new CursorStore(); + this.defaultFetchSize = defaultFetchSize; + } + + public MessageEnvelope dispatch(final MessageEnvelope request) { + try { + switch (request.getType()) { + case OPEN_CONNECTION: + return this.openConnection(request); + case EXECUTE_QUERY: + return this.executeQuery(request); + case FETCH: + return this.fetch(request); + case CLOSE_CURSOR: + return this.closeCursor(request); + case CANCEL_QUERY: + return this.cancelQuery(request); + case CLOSE_CONNECTION: + return this.closeConnection(request); + case GET_SCHEMAS: + return this.getSchemas(request); + case GET_TABLES: + return this.getTables(request); + case GET_COLUMNS: + return this.getColumns(request); + default: + return this.error( + request.getRequestId(), + ErrorCode.INVALID_REQUEST, + "HY000", + 1000, + "Unsupported request message type: " + request.getType(), + null, + null + ); + } + } catch (ProtocolException | IllegalArgumentException e) { + return this.error( + request.getRequestId(), + ErrorCode.INVALID_REQUEST, + "HY000", + 1000, + e.getMessage(), + null, + e.getClass().getName() + ); + } catch (SqlParseException e) { + return this.error( + request.getRequestId(), + ErrorCode.QUERY_PARSE_ERROR, + "42000", + 1002, + "Could not parse SQL query.", + e.getMessage(), + e.getClass().getName() + ); + } catch (Exception e) { + return this.error( + request.getRequestId(), + ErrorCode.QUERY_EXECUTION_ERROR, + "HY000", + 1001, + "Could not execute SQL query.", + e.getMessage(), + e.getClass().getName() + ); + } + } + + private MessageEnvelope openConnection(final MessageEnvelope request) throws ProtocolException { + final OpenConnectionRequest openRequest = this.codec.payloadAs(request, OpenConnectionRequest.class); + final String connectionId = this.sessionManager.openConnection( + openRequest.getUsername(), + openRequest.getDatabase(), + openRequest.getProperties() + ); + final OpenConnectionResponse response = new OpenConnectionResponse( + connectionId, + SERVER_VERSION, + new LinkedHashMap<>() + ); + return this.codec.toEnvelope(request.getRequestId(), MessageType.OPEN_CONNECTION_OK, response); + } + + private MessageEnvelope executeQuery(final MessageEnvelope request) throws Exception { + final ExecuteQueryRequest executeRequest = this.codec.payloadAs(request, ExecuteQueryRequest.class); + this.requireOpenConnection(executeRequest.getConnectionId()); + this.requireText(executeRequest.getStatementId(), "Statement id"); + this.requireText(executeRequest.getSql(), "SQL query"); + + final SqlQueryResult result = this.queryExecutor.execute(executeRequest.getSql()); + final List columns = SqlQueryResultAdapter.toColumnInfo(result); + final List> rows = SqlQueryResultAdapter.toRows(result); + final int fetchSize = this.normalizeFetchSize(executeRequest.getFetchSize()); + final int batchEnd = Math.min(fetchSize, rows.size()); + final List> firstBatch = List.copyOf(rows.subList(0, batchEnd)); + final boolean hasMoreRows = batchEnd < rows.size(); + final String cursorId = hasMoreRows + ? this.cursorStore.openCursor( + executeRequest.getConnectionId(), + executeRequest.getStatementId(), + rows, + batchEnd + ) + : null; + + final QueryResultResponse response = new QueryResultResponse( + executeRequest.getConnectionId(), + executeRequest.getStatementId(), + columns, + firstBatch, + hasMoreRows, + cursorId + ); + return this.codec.toEnvelope(request.getRequestId(), MessageType.QUERY_RESULT, response); + } + + private MessageEnvelope getSchemas(final MessageEnvelope request) throws SQLException, ProtocolException { + final GetSchemasRequest metadataRequest = this.codec.payloadAs(request, GetSchemasRequest.class); + final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId()); + final MetadataResultResponse response = this.metadataProvider.getSchemas(session, metadataRequest); + return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + } + + private MessageEnvelope getTables(final MessageEnvelope request) throws SQLException, ProtocolException { + final GetTablesRequest metadataRequest = this.codec.payloadAs(request, GetTablesRequest.class); + final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId()); + final MetadataResultResponse response = this.metadataProvider.getTables(session, metadataRequest); + return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + } + + private MessageEnvelope getColumns(final MessageEnvelope request) throws SQLException, ProtocolException { + final GetColumnsRequest metadataRequest = this.codec.payloadAs(request, GetColumnsRequest.class); + final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId()); + final MetadataResultResponse response = this.metadataProvider.getColumns(session, metadataRequest); + return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + } + + private MessageEnvelope fetch(final MessageEnvelope request) throws ProtocolException { + final FetchRequest fetchRequest = this.codec.payloadAs(request, FetchRequest.class); + this.requireOpenConnection(fetchRequest.getConnectionId()); + this.requireText(fetchRequest.getCursorId(), "Cursor id"); + + final CursorStore.FetchBatch batch = this.cursorStore.fetch( + fetchRequest.getConnectionId(), + fetchRequest.getCursorId(), + this.normalizeFetchSize(fetchRequest.getFetchSize()) + ); + if (batch == null) { + throw new IllegalArgumentException("Unknown cursor id: " + fetchRequest.getCursorId()); + } + + final FetchResponse response = new FetchResponse( + fetchRequest.getConnectionId(), + fetchRequest.getCursorId(), + batch.getRows(), + batch.hasMoreRows() + ); + return this.codec.toEnvelope(request.getRequestId(), MessageType.FETCH_RESULT, response); + } + + private MessageEnvelope closeCursor(final MessageEnvelope request) throws ProtocolException { + final CloseCursorRequest closeRequest = this.codec.payloadAs(request, CloseCursorRequest.class); + this.requireOpenConnection(closeRequest.getConnectionId()); + this.requireText(closeRequest.getStatementId(), "Statement id"); + this.requireText(closeRequest.getCursorId(), "Cursor id"); + this.cursorStore.closeCursor(closeRequest.getConnectionId(), closeRequest.getCursorId()); + + final CloseCursorResponse response = new CloseCursorResponse( + closeRequest.getConnectionId(), + closeRequest.getStatementId(), + closeRequest.getCursorId() + ); + return this.codec.toEnvelope(request.getRequestId(), MessageType.CLOSE_CURSOR_OK, response); + } + + private MessageEnvelope cancelQuery(final MessageEnvelope request) throws ProtocolException { + final CancelQueryRequest cancelRequest = this.codec.payloadAs(request, CancelQueryRequest.class); + this.requireOpenConnection(cancelRequest.getConnectionId()); + this.requireText(cancelRequest.getStatementId(), "Statement id"); + final boolean cancelled = cancelRequest.getCursorId() != null + && this.cursorStore.cancelCursor(cancelRequest.getConnectionId(), cancelRequest.getCursorId()); + + final CancelQueryResponse response = new CancelQueryResponse( + cancelRequest.getConnectionId(), + cancelRequest.getStatementId(), + cancelRequest.getCursorId(), + cancelled + ); + return this.codec.toEnvelope(request.getRequestId(), MessageType.CANCEL_QUERY_OK, response); + } + + private MessageEnvelope closeConnection(final MessageEnvelope request) throws ProtocolException { + final CloseConnectionRequest closeRequest = this.codec.payloadAs(request, CloseConnectionRequest.class); + this.requireOpenConnection(closeRequest.getConnectionId()); + this.cursorStore.closeConnection(closeRequest.getConnectionId()); + this.sessionManager.closeConnection(closeRequest.getConnectionId()); + + final CloseConnectionResponse response = new CloseConnectionResponse(closeRequest.getConnectionId()); + return this.codec.toEnvelope(request.getRequestId(), MessageType.CLOSE_CONNECTION_OK, response); + } + + private void requireOpenConnection(final String connectionId) { + this.requireOpenSession(connectionId); + } + + private JdbcServerSession requireOpenSession(final String connectionId) { + this.requireText(connectionId, "Connection id"); + final JdbcServerSession session = this.sessionManager.getSession(connectionId); + if (session == null) { + throw new IllegalArgumentException("Unknown connection id: " + connectionId); + } + return session; + } + + private void requireText(final String value, final String fieldName) { + if (value == null || value.isBlank()) { + throw new IllegalArgumentException(fieldName + " must not be blank."); + } + } + + private int normalizeFetchSize(final int fetchSize) { + return fetchSize > 0 ? fetchSize : this.defaultFetchSize; + } + + private MessageEnvelope error( + final String requestId, + final ErrorCode errorCode, + final String sqlState, + final int vendorCode, + final String message, + final String detail, + final String exceptionClass + ) { + final ErrorResponse response = new ErrorResponse( + errorCode, + sqlState, + vendorCode, + message, + detail, + exceptionClass + ); + return this.codec.toEnvelope(requestId, MessageType.ERROR, response); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java new file mode 100644 index 000000000..87cf7f7aa --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Server-side state for one logical JDBC connection. + */ +public final class JdbcServerSession { + + private final String connectionId; + + private final String username; + + private final String database; + + private final Map properties; + + JdbcServerSession( + final String connectionId, + final String username, + final String database, + final Map properties + ) { + this.connectionId = connectionId; + this.username = username; + this.database = database; + this.properties = properties == null + ? new LinkedHashMap<>() + : new LinkedHashMap<>(properties); + } + + public String getConnectionId() { + return this.connectionId; + } + + public String getUsername() { + return this.username; + } + + public String getDatabase() { + return this.database; + } + + public Map getProperties() { + return new LinkedHashMap<>(this.properties); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java new file mode 100644 index 000000000..eae690816 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Tracks logical JDBC connections managed by the server. + */ +class JdbcServerSessionManager { + + private final Map sessions = new ConcurrentHashMap<>(); + + String openConnection() { + return this.openConnection(null, null, null); + } + + String openConnection( + final String username, + final String database, + final Map properties + ) { + final String connectionId = UUID.randomUUID().toString(); + this.sessions.put( + connectionId, + new JdbcServerSession(connectionId, username, database, properties) + ); + return connectionId; + } + + boolean isOpen(final String connectionId) { + return connectionId != null && this.sessions.containsKey(connectionId); + } + + JdbcServerSession getSession(final String connectionId) { + return connectionId == null ? null : this.sessions.get(connectionId); + } + + void closeConnection(final String connectionId) { + if (connectionId != null) { + this.sessions.remove(connectionId); + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlMetadataProvider.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlMetadataProvider.java new file mode 100644 index 000000000..63c7f8e9f --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlMetadataProvider.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; +import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; +import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; + +import java.sql.SQLException; + +/** + * Supplies metadata rows for JDBC {@link java.sql.DatabaseMetaData} requests. + */ +public interface SqlMetadataProvider { + + MetadataResultResponse getSchemas( + JdbcServerSession session, + GetSchemasRequest request + ) throws SQLException; + + MetadataResultResponse getTables( + JdbcServerSession session, + GetTablesRequest request + ) throws SQLException; + + MetadataResultResponse getColumns( + JdbcServerSession session, + GetColumnsRequest request + ) throws SQLException; +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryExecutor.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryExecutor.java new file mode 100644 index 000000000..7bec90229 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryExecutor.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.wayang.api.sql.context.SqlQueryResult; + +/** + * Executes SQL for the JDBC server. + */ +public interface SqlQueryExecutor { + + SqlQueryResult execute(String sql) throws SqlParseException; +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java new file mode 100644 index 000000000..cf1dc6060 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.wayang.api.sql.context.SqlColumn; +import org.apache.wayang.api.sql.context.SqlQueryResult; +import org.apache.wayang.basic.data.Record; +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; + +import java.sql.ResultSetMetaData; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Converts SQL API results into JDBC protocol result structures. + */ +final class SqlQueryResultAdapter { + + private SqlQueryResultAdapter() { + } + + static List toColumnInfo(final SqlQueryResult result) { + return result.getColumns().stream() + .map(SqlQueryResultAdapter::toColumnInfo) + .collect(Collectors.toList()); + } + + static List> toRows(final SqlQueryResult result) { + final List> rows = new ArrayList<>(); + for (final Record record : result.getRows()) { + rows.add(new ArrayList<>(Arrays.asList(record.getValues()))); + } + return rows; + } + + private static ColumnInfo toColumnInfo(final SqlColumn column) { + return new ColumnInfo( + column.getName(), + column.getLabel(), + null, + null, + column.getTypeName(), + column.getJdbcType(), + column.isNullable() ? ResultSetMetaData.columnNullable : ResultSetMetaData.columnNoNulls, + column.getPrecision(), + column.getScale() + ); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java new file mode 100644 index 000000000..5575da45a --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.wayang.core.api.Configuration; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.sql.SQLException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * TCP server for the external Wayang JDBC protocol. + */ +public class WayangJdbcServer implements AutoCloseable { + + private final String host; + + private final int port; + + private final JdbcRequestDispatcher dispatcher; + + private final ExecutorService clientExecutor; + + private final AtomicBoolean running = new AtomicBoolean(false); + + private ServerSocket serverSocket; + + private Thread acceptThread; + + public WayangJdbcServer( + final String host, + final int port, + final SqlQueryExecutor queryExecutor + ) { + this.host = host; + this.port = port; + this.dispatcher = new JdbcRequestDispatcher(queryExecutor); + this.clientExecutor = Executors.newCachedThreadPool(); + } + + public void start() throws IOException { + if (!this.running.compareAndSet(false, true)) { + throw new IllegalStateException("Wayang JDBC server is already running."); + } + + this.serverSocket = new ServerSocket(this.port, 50, InetAddress.getByName(this.host)); + this.acceptThread = new Thread(this::acceptLoop, "wayang-jdbc-server-accept"); + this.acceptThread.setDaemon(true); + this.acceptThread.start(); + } + + public int getPort() { + if (this.serverSocket == null) { + return this.port; + } + return this.serverSocket.getLocalPort(); + } + + @Override + public void close() throws IOException { + this.running.set(false); + if (this.serverSocket != null) { + this.serverSocket.close(); + } + this.clientExecutor.shutdownNow(); + try { + this.clientExecutor.awaitTermination(5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + public static void main(final String[] args) throws IOException, SQLException, InterruptedException { + final String host = args.length > 0 ? args[0] : "127.0.0.1"; + final int port = args.length > 1 ? Integer.parseInt(args[1]) : 4567; + final Configuration configuration = args.length > 2 ? new Configuration(args[2]) : new Configuration(); + + final WayangJdbcServer server = new WayangJdbcServer( + host, + port, + new WayangSqlQueryExecutor(configuration) + ); + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + try { + server.close(); + } catch (IOException ignored) { + } + })); + server.start(); + Thread.currentThread().join(); + } + + private void acceptLoop() { + while (this.running.get()) { + try { + final Socket socket = this.serverSocket.accept(); + this.clientExecutor.submit(new JdbcClientHandler(socket, this.dispatcher)); + } catch (IOException e) { + if (this.running.get()) { + this.running.set(false); + } + } + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java new file mode 100644 index 000000000..da218e731 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.wayang.api.sql.context.SqlContext; +import org.apache.wayang.api.sql.context.SqlQueryResult; +import org.apache.wayang.core.api.Configuration; + +import java.sql.SQLException; + +/** + * Delegates JDBC server query execution to the Wayang SQL API. + */ +public class WayangSqlQueryExecutor implements SqlQueryExecutor { + + private final SqlContext sqlContext; + + public WayangSqlQueryExecutor(final Configuration configuration) throws SQLException { + this(new SqlContext(configuration)); + } + + public WayangSqlQueryExecutor(final SqlContext sqlContext) { + if (sqlContext == null) { + throw new IllegalArgumentException("SQL context must not be null."); + } + this.sqlContext = sqlContext; + } + + @Override + public SqlQueryResult execute(final String sql) throws SqlParseException { + return this.sqlContext.executeSqlWithMetadata(sql); + } +} From c408774f4acffc782cb91aea0ab30240324c514e Mon Sep 17 00:00:00 2001 From: Makarand Milind Hinge Date: Mon, 27 Jul 2026 22:44:43 +0530 Subject: [PATCH 2/6] Complete Phase 1 Wayang JDBC gateway Add Calcite-backed metadata discovery, protocol ping support, bounded cursor and session handling, read-only SQL enforcement, JDBC driver hardening, demo docs, and Java client/server tests. --- .../api/sql/context/SqlCatalogMetadata.java | 39 + .../wayang/api/sql/context/SqlContext.java | 99 +- .../api/sql/context/SqlSchemaMetadata.java | 49 + .../api/sql/context/SqlTableMetadata.java | 63 ++ wayang-jdbc/DEVELOPMENT_LOG.md | 228 +++++ wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md | 109 ++- wayang-jdbc/README.md | 382 ++++++-- wayang-jdbc/demo/README.md | 58 ++ wayang-jdbc/demo/WayangJdbcDemoClient.java | 58 ++ wayang-jdbc/demo/data/people.csv | 4 + wayang-jdbc/demo/run-demo-client.sh | 42 + wayang-jdbc/demo/start-demo-server.sh | 57 ++ .../wayang/jdbc/driver/WayangConnection.java | 201 +++- .../jdbc/driver/WayangDatabaseMetaData.java | 198 +++- .../wayang/jdbc/driver/WayangDriver.java | 43 +- .../wayang/jdbc/driver/WayangJdbcClient.java | 427 +++++++- .../wayang/jdbc/driver/WayangJdbcUrl.java | 94 +- .../wayang/jdbc/driver/WayangResultSet.java | 909 +++++++++++++++--- .../jdbc/driver/WayangResultSetMetaData.java | 62 +- .../wayang/jdbc/driver/WayangStatement.java | 112 ++- .../driver/WayangJdbcClientProtocolTest.java | 281 ++++++ .../wayang/jdbc/driver/WayangJdbcUrlTest.java | 79 ++ .../wayang/jdbc/protocol/MessageType.java | 2 + .../protocol/io/ProtocolMessageCodec.java | 10 +- .../jdbc/protocol/message/PingRequest.java | 41 + .../jdbc/protocol/message/PingResponse.java | 41 + .../protocol/io/ProtocolMessageCodecTest.java | 107 +++ wayang-jdbc/wayang-jdbc-server/pom.xml | 6 + .../wayang/jdbc/server/CursorStore.java | 163 +++- .../server/DefaultSqlMetadataProvider.java | 253 ++++- .../wayang/jdbc/server/JdbcClientHandler.java | 40 +- .../jdbc/server/JdbcRequestDispatcher.java | 558 +++++++++-- .../wayang/jdbc/server/JdbcServerSession.java | 8 + .../jdbc/server/JdbcServerSessionManager.java | 85 +- .../jdbc/server/SqlQueryResultAdapter.java | 138 ++- .../wayang/jdbc/server/WayangJdbcServer.java | 195 +++- .../jdbc/server/WayangSqlQueryExecutor.java | 8 + .../wayang/jdbc/server/CursorStoreTest.java | 119 +++ .../DefaultSqlMetadataProviderTest.java | 160 +++ .../server/JdbcRequestDispatcherTest.java | 241 +++++ .../server/JdbcServerSessionManagerTest.java | 83 ++ .../WayangJdbcServerJavaClientTest.java | 492 ++++++++++ 42 files changed, 5878 insertions(+), 466 deletions(-) create mode 100644 wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlCatalogMetadata.java create mode 100644 wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlSchemaMetadata.java create mode 100644 wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlTableMetadata.java create mode 100644 wayang-jdbc/DEVELOPMENT_LOG.md create mode 100644 wayang-jdbc/demo/README.md create mode 100644 wayang-jdbc/demo/WayangJdbcDemoClient.java create mode 100644 wayang-jdbc/demo/data/people.csv create mode 100644 wayang-jdbc/demo/run-demo-client.sh create mode 100644 wayang-jdbc/demo/start-demo-server.sh create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java create mode 100644 wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingRequest.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingResponse.java create mode 100644 wayang-jdbc/wayang-jdbc-protocol/src/test/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodecTest.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/CursorStoreTest.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProviderTest.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcherTest.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcServerSessionManagerTest.java create mode 100644 wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/WayangJdbcServerJavaClientTest.java diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlCatalogMetadata.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlCatalogMetadata.java new file mode 100644 index 000000000..a9401aa67 --- /dev/null +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlCatalogMetadata.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.api.sql.context; + +import java.util.List; + +/** + * Immutable snapshot of the schemas and tables visible to a {@link SqlContext}. + */ +public final class SqlCatalogMetadata { + + private final List schemas; + + public SqlCatalogMetadata(final List schemas) { + if (schemas == null) { + throw new IllegalArgumentException("Schemas must not be null."); + } + this.schemas = List.copyOf(schemas); + } + + public List getSchemas() { + return this.schemas; + } +} diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java index f486907b4..8c4692bf9 100755 --- a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlContext.java @@ -31,6 +31,9 @@ import org.apache.calcite.rel.type.RelDataTypeField; import org.apache.calcite.rel.rules.CoreRules; import org.apache.calcite.rel.rules.SubQueryRemoveRule; +import org.apache.calcite.schema.Schema; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.Table; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.parser.SqlParseException; import org.apache.calcite.sql.type.SqlTypeName; @@ -61,6 +64,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; import java.util.List; @@ -216,6 +220,51 @@ public SqlQueryResult executeSqlWithMetadata(final String sql) throws SqlParseEx return new SqlQueryResult(createColumns(wayangRel.getRowType()), collector); } + /** + * Creates a metadata snapshot from the same Calcite root schema that is + * used to validate and execute SQL queries. + * + *

JDBC exposes schemas as single identifiers, whereas Calcite schemas + * can be nested. Therefore, this Phase 1 snapshot includes the root + * schema's tables and each immediate child schema's direct tables. + * Deeper nested schemas are deliberately omitted instead of publishing a + * dotted name that JDBC clients would quote as one, incorrect identifier.

+ * + * @return configured schemas, tables, and table row types + * @throws SQLException if a schema or table cannot expose its metadata + */ + public SqlCatalogMetadata getCatalogMetadata() throws SQLException { + try { + final SchemaPlus rootSchema = this.calciteSchema.plus(); + final RelDataTypeFactory typeFactory = new JavaTypeFactoryImpl(); + final List schemas = new ArrayList<>(); + + if (!rootSchema.getTableNames().isEmpty()) { + schemas.add(this.createSchemaMetadata(rootSchema, "", typeFactory)); + } + + final List schemaNames = new ArrayList<>(rootSchema.getSubSchemaNames()); + schemaNames.sort(Comparator.naturalOrder()); + for (final String schemaName : schemaNames) { + final SchemaPlus schema = rootSchema.getSubSchema(schemaName); + if (schema != null) { + schemas.add(this.createSchemaMetadata(schema, schemaName, typeFactory)); + } + } + return new SqlCatalogMetadata(schemas); + } catch (final RuntimeException e) { + final SQLException sqlException = findSqlException(e); + if (sqlException != null) { + throw sqlException; + } + throw new SQLException( + "Could not inspect the configured Calcite catalog.", + "HY000", + e + ); + } + } + private static RuleSet createDefaultRuleSet() { return RuleSets.ofList( SubQueryRemoveRule.Config.FILTER.toRule(), @@ -241,14 +290,60 @@ private static List createColumns(final RelDataType rowType) { field.getName(), sqlTypeName.getName(), sqlTypeName.getJdbcOrdinal(), - fieldType.getPrecision(), - fieldType.getScale(), + Math.max(0, fieldType.getPrecision()), + Math.max(0, fieldType.getScale()), fieldType.isNullable() )); } return columns; } + private SqlSchemaMetadata createSchemaMetadata( + final SchemaPlus schema, + final String schemaName, + final RelDataTypeFactory typeFactory + ) throws SQLException { + final List tableNames = new ArrayList<>(schema.getTableNames()); + tableNames.sort(Comparator.naturalOrder()); + final List tables = new ArrayList<>(tableNames.size()); + try { + for (final String tableName : tableNames) { + final Table table = schema.getTable(tableName); + if (table == null) { + continue; + } + final Schema.TableType tableType = table.getJdbcTableType(); + tables.add(new SqlTableMetadata( + tableName, + tableType == null ? Schema.TableType.TABLE.jdbcName : tableType.jdbcName, + createColumns(table.getRowType(typeFactory)) + )); + } + } catch (final RuntimeException e) { + final SQLException sqlException = findSqlException(e); + if (sqlException != null) { + throw sqlException; + } + throw new SQLException( + "Could not inspect Calcite schema '" + schemaName + "'.", + "HY000", + e + ); + } + return new SqlSchemaMetadata(schemaName, tables); + } + + private static SQLException findSqlException(final Throwable throwable) { + Throwable current = throwable; + while (current != null) { + if (current instanceof SQLException) { + return (SQLException) current; + } + current = current.getCause(); + } + return null; + } + private static String getJobName() { return "SQL[" + jobId.incrementAndGet() + "]"; } diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlSchemaMetadata.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlSchemaMetadata.java new file mode 100644 index 000000000..a63d58a43 --- /dev/null +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlSchemaMetadata.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.api.sql.context; + +import java.util.List; + +/** + * Metadata for one schema in the configured SQL catalog. + */ +public final class SqlSchemaMetadata { + + private final String name; + + private final List tables; + + public SqlSchemaMetadata(final String name, final List tables) { + if (name == null) { + throw new IllegalArgumentException("Schema name must not be null."); + } + if (tables == null) { + throw new IllegalArgumentException("Tables must not be null."); + } + this.name = name; + this.tables = List.copyOf(tables); + } + + public String getName() { + return this.name; + } + + public List getTables() { + return this.tables; + } +} diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlTableMetadata.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlTableMetadata.java new file mode 100644 index 000000000..e20158d3d --- /dev/null +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/context/SqlTableMetadata.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.api.sql.context; + +import java.util.List; + +/** + * Metadata for one table in the configured SQL catalog. + */ +public final class SqlTableMetadata { + + private final String name; + + private final String type; + + private final List columns; + + public SqlTableMetadata( + final String name, + final String type, + final List columns + ) { + if (name == null || name.isEmpty()) { + throw new IllegalArgumentException("Table name must not be empty."); + } + if (type == null || type.isEmpty()) { + throw new IllegalArgumentException("Table type must not be empty."); + } + if (columns == null) { + throw new IllegalArgumentException("Columns must not be null."); + } + this.name = name; + this.type = type; + this.columns = List.copyOf(columns); + } + + public String getName() { + return this.name; + } + + public String getType() { + return this.type; + } + + public List getColumns() { + return this.columns; + } +} diff --git a/wayang-jdbc/DEVELOPMENT_LOG.md b/wayang-jdbc/DEVELOPMENT_LOG.md new file mode 100644 index 000000000..d047c0242 --- /dev/null +++ b/wayang-jdbc/DEVELOPMENT_LOG.md @@ -0,0 +1,228 @@ + + +# Wayang JDBC Development Log + +## Design Baseline + +The external JDBC layer is a read-only gateway. Apache Wayang does not own +table storage, so JDBC operations that imply database-owned mutable state are +not emulated. Updates, DDL, transactions, savepoints, procedures, batches, +generated keys, and writable result sets are explicitly unsupported. + +The first implementation uses: + +```text +JDBC client -> driver -> TCP protocol -> server -> SqlContext -> Wayang execution +``` + +Query results are materialized in memory and exposed through paged server +cursors. Streaming execution is intentionally deferred. + +## Foundation Completed + +The initial implementation established: + +* the protocol, driver, and server Maven modules +* a versioned length-prefixed JSON protocol +* driver service registration and `jdbc:wayang://` URL parsing +* SQL API query results containing both rows and Calcite-derived columns +* logical server sessions, query dispatch, fetch cursors, and protocol errors +* the driver socket client and the first `Connection`, `Statement`, + `ResultSet`, `ResultSetMetaData`, and `DatabaseMetaData` implementations + +## 2026-07-23 — Phase 1 Production Completion + +### Read-only boundary + +* Added an authoritative server-side Calcite AST check before query execution. +* Accepted query nodes, including read-only `WITH` and `EXPLAIN` forms. +* Rejected DDL, DML, transaction commands, calls, and other state-changing + statements with `UNSUPPORTED_OPERATION` and SQLState `0A000`. +* Added a conservative lexical fallback so unsupported write statements remain + rejected even when Calcite cannot parse their syntax. + +### SQL results and JDBC objects + +* Corrected `ResultSet` cursor states for empty, before-first, on-row, and + after-last results. +* Hardened response identifiers, cursor invariants, column definitions, and row + widths against malformed protocol data. +* Added JDBC-default value coercion based on `ColumnInfo`, including exact + decimal decoding, binary data, temporal values, primitive range checks, and + JDBC 4.2 typed `getObject`. +* Completed common string, numeric, temporal, stream, metadata, and + `wasNull()` access paths. +* Made fetch-size changes affect later fetches and applied maximum-row limits + while iterating. +* Tracked statements from their connection and closed dependent result sets and + server cursors deterministically. +* Kept query cancellation, query timeout, writable results, and unsupported + statement forms explicit instead of reporting capabilities that are not + implemented. + +### Catalog metadata + +* Added immutable SQL catalog, schema, and table metadata snapshots to + `SqlContext`. +* Derived tables and columns from the same configured Calcite schema used for + query validation and execution. +* Implemented JDBC-shaped schema, table, and column responses with exact + catalog selection, wildcard identifier filtering, table-type filtering, and + JDBC ordering. +* Added useful SQL type information and read-only capability reporting for + JDBC metadata consumers. +* Corrected metadata result ordering and type/class mappings. + +### Transport and server lifecycle + +* Aligned the driver and server default port at `9999`. +* Added bounded client, session, cursor, and fetch resources. +* Bound logical sessions to the socket that created them and released sessions + and cursors on disconnect. +* Validated statement ownership when closing or cancelling cursors. +* Added a protocol ping for connection validation. +* Made terminal protocol/transport failures invalidate the client connection. +* Added deterministic server startup rollback and shutdown of sockets, + sessions, cursors, and worker threads. +* Prevented cursor leaks or lost batches when a result cannot be encoded. + +### Scope intentionally deferred + +The current request explicitly excluded adding unit or end-to-end test sources. +The next validation phase should add focused protocol, driver, server, paging, +metadata, getter, lifecycle, and `DriverManager` loopback coverage. + +External compatibility passes with DBeaver and DataGrip are also deferred. The +driver currently uses normal Maven transitive dependencies and does not produce +a shaded JDBC-tool bundle. + +### Known Phase 1 limitations + +* Query results are fully materialized before cursor paging. +* JDBC cancellation cannot interrupt a Wayang job that is already running. +* Authentication, authorization, and TLS are not implemented. +* Prepared statements and advanced JDBC metadata are not implemented. +* Nested Calcite schema hierarchies cannot be losslessly represented by the + current single JDBC schema field and are not flattened into dotted names. + +### Verification + +Production sources were compiled on Java 17 with focused Maven reactors. +The final serial verification commands are: + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -DskipTests -Dmaven.javadoc.skip=true package +``` + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-api-sql -am -DskipTests -Dmaven.javadoc.skip=true compile +``` + +## 2026-07-27 - First Java Client Test Scope + +The first automated validation scope now uses a plain Java JDBC client. It does +not depend on DBeaver, DataGrip, or another external tool. + +Added tests: + +* `ProtocolMessageCodecTest` for ping message round-trip, decimal row payloads, + and maximum frame enforcement. +* `WayangJdbcUrlTest` for URL acceptance, host/port/database parsing, property + precedence, percent decoding, and invalid URL rejection. +* `WayangJdbcClientProtocolTest` for driver handling of mismatched request IDs, + server EOF, and unsupported-operation protocol errors. +* `CursorStoreTest` for cursor paging consistency, failed response factories, + cursor replacement, connection cleanup, and capacity enforcement. +* `JdbcServerSessionManagerTest` for logical connection ownership, per-client + limits, total limits, and client cleanup. +* `JdbcRequestDispatcherTest` for server-side read-only rejection, cursor paging + and final-fetch cleanup, client ownership, and connection-close cleanup. +* `DefaultSqlMetadataProviderTest` for JDBC metadata catalog selection, wildcard + filtering, escaped patterns, table-type filtering, column attributes, and + ordering. +* `WayangJdbcServerJavaClientTest` for a `DriverManager` loopback client + against an in-process `WayangJdbcServer`. + +The loopback test covers: + +* `Connection`, `Statement`, `ResultSet`, `ResultSetMetaData`, and + `DatabaseMetaData` through standard `java.sql` interfaces +* cursor paging through fetch size +* object, primitive, decimal, date, binary, and null getters +* `wasNull()` +* server-side rejection of write SQL before query execution +* metadata browsing for schemas, tables, and columns +* `Connection.isValid(...)` using the protocol ping + +Implementation adjustment: + +* `Connection.isValid(...)` now sends the server ping instead of only checking + local closed state. +* `WayangJdbcServer` has a package-private constructor for tests to inject a + metadata provider while keeping the public API unchanged. + +Verification: + +```bash +env -u npm_config_prefix JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:/usr/bin:/bin ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dtest=ProtocolMessageCodecTest,WayangJdbcUrlTest,WayangJdbcClientProtocolTest,CursorStoreTest,JdbcServerSessionManagerTest,JdbcRequestDispatcherTest,DefaultSqlMetadataProviderTest,WayangJdbcServerJavaClientTest -Dsurefire.failIfNoSpecifiedTests=false -Dmaven.javadoc.skip=true test +``` + +Result: build success, 29 JDBC gateway tests run, 0 failures. + +The unfiltered JDBC reactor was also run: + +```bash +env -u npm_config_prefix JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:/usr/bin:/bin ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dmaven.javadoc.skip=true test +``` + +Result: build success across the selected JDBC modules and their local reactor +dependencies. The JDBC modules ran 29 tests with 0 failures. One upstream +Python dependency test was skipped because `numpy` is not installed in this +environment; it is not related to the JDBC module. + +Use `-am` for this command in the current snapshot workspace. Running only the +three JDBC modules without `-am` can resolve same-version Wayang snapshot +dependencies from the remote snapshot repository instead of the local checkout. + +## 2026-07-27 - Beginner Demo Quickstart + +Added a self-contained demo under `wayang-jdbc/demo` so users do not need to +manually create a Calcite model or Wayang properties file just to verify the +JDBC gateway. + +The demo includes: + +* `data/people.csv` sample input data +* `start-demo-server.sh`, which builds the server artifacts, writes a concrete + `/tmp/wayang-jdbc-demo/wayang.properties` file with the correct absolute data + path, and starts `WayangJdbcServer` on `127.0.0.1:9999` +* `WayangJdbcDemoClient.java`, a plain Java `DriverManager` client +* `run-demo-client.sh`, which builds the driver artifacts, compiles the demo + client, connects to the server, and runs a read-only `SELECT` + +The README quickstart now starts with these two commands: + +```bash +bash wayang-jdbc/demo/start-demo-server.sh +``` + +```bash +bash wayang-jdbc/demo/run-demo-client.sh +``` diff --git a/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md b/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md index dba8ca312..e56d7997f 100644 --- a/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md +++ b/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md @@ -44,7 +44,7 @@ Supported first: * Execute read-only SQL queries. * Read result rows through `ResultSet`. * Read result column metadata through `ResultSetMetaData`. -* Browse basic metadata later through `DatabaseMetaData`. +* Browse basic metadata through `DatabaseMetaData`. Unsupported first: @@ -197,7 +197,7 @@ Unsupported first: * `WayangDriver` * `WayangJdbcUrl` * `META-INF/services/java.sql.Driver` - * URL parsing tests. + * URL validation and connection-property parsing. 5. Added SQL API query metadata support. * `SqlColumn` @@ -283,17 +283,71 @@ Unsupported first: * Schemas, catalogs, tables, columns, table types, type info, keys, indexes, procedures, functions, and other common metadata methods return JDBC `ResultSet` objects. - * Table and column browsing returns empty result sets until server-side - metadata discovery is connected. + * Unsupported advanced metadata returns correctly shaped empty results or + explicit unsupported exceptions as required by JDBC. 14. Connected metadata requests through the JDBC protocol. * Driver sends `GET_SCHEMAS`, `GET_TABLES`, and `GET_COLUMNS`. * Server dispatches metadata requests and returns `METADATA_RESULT`. * Server tracks connection database information in logical sessions. * Added a server-side `SqlMetadataProvider` boundary. - * Default provider returns schema metadata from the connection database. - * Default table and column metadata still return correctly shaped empty - result sets until Calcite/catalog-backed discovery is added. + * Default provider reads schemas, tables, and columns from the same Calcite + catalog used by `SqlContext`. + * Metadata filters implement exact catalog selection, JDBC wildcard + matching, table-type filtering, and JDBC-required ordering. + +15. Completed the Phase 1 read-only production boundary. + * Server accepts only Calcite query nodes and rejects DDL, DML, + transactions, calls, and other state-changing SQL with SQLState `0A000`. + * Logical sessions are owned by their client socket and are cleaned up on + disconnect. + * Server client, cursor, per-connection cursor, and fetch resources are + bounded. + * Cursor close and cancel requests validate statement ownership. + * Server startup, bind rollback, disconnect, and shutdown paths release + sockets, sessions, cursors, and worker threads deterministically. + * Driver and server use the same default port, `9999`. + +16. Hardened JDBC behavior and wire type fidelity. + * `Connection` owns and closes child statements safely. + * `Statement` lifecycle, fetch sizing, maximum rows, and result replacement + are deterministic. + * `ResultSet` implements correct empty/before/on/after cursor states. + * Protocol responses are checked for identifiers, column definitions, row + widths, cursor invariants, and metadata shape. + * JDBC values are coerced by declared type so numeric width, decimal + precision, binary values, and temporal values agree with metadata. + * Terminal protocol and transport failures invalidate the JDBC connection. + * A protocol ping supports `Connection.isValid`. + * Unsupported timeout, cancellation, write, transaction, and writable + result operations remain explicit. + +17. Added first-scope Java JDBC client tests. + * Added protocol codec coverage for ping messages, decimal row payloads, and + frame-size rejection. + * Added driver URL parsing coverage for default ports, database paths, + property precedence, and invalid URLs. + * Added a plain Java `DriverManager` loopback test that starts + `WayangJdbcServer` on an ephemeral port and uses standard JDBC + `Connection`, `Statement`, `ResultSet`, `ResultSetMetaData`, and + `DatabaseMetaData` calls. + * Covered cursor paging, typed getters, `wasNull`, metadata browsing, + read-only write rejection, and `Connection.isValid` ping behavior. + * Added a package-private server constructor for test metadata-provider + injection without changing the public server API. + +18. Added focused robustness tests for the completed Java client scope. + * Added driver socket-protocol tests for mismatched request IDs, server EOF, + and unsupported-operation errors. + * Added server cursor tests for paging consistency, failed response + factories, cursor replacement, connection cleanup, and capacity limits. + * Added server session-manager tests for client ownership and connection + limits. + * Added dispatcher tests for read-only enforcement, cursor paging and + cleanup, client ownership, and connection-close behavior. + * Added metadata-provider tests for JDBC catalog selection, wildcard + matching, escaped patterns, table-type filtering, column attributes, and + ordering. ## Current State @@ -311,37 +365,54 @@ Working: * Forward-only read-only result sets. * Basic `ResultSetMetaData`. * Basic `DatabaseMetaData`. -* Metadata protocol path for schemas, tables, and columns. +* Calcite-backed metadata protocol path for schemas, tables, and columns. * Plain Java JDBC query flow for connection, statement, result set iteration, getters, metadata, and close behavior. +* Server-enforced read-only SQL classification. +* Defensive protocol validation and JDBC value coercion. +* Bounded server resources and disconnect cleanup. +* First-scope plain Java JDBC client tests. +* Focused negative protocol, cursor lifecycle, session ownership, dispatcher, + and metadata-provider tests. Not complete yet: -* Result set support still needs final compatibility testing. -* JDBC `DatabaseMetaData` table and column discovery still needs Calcite or - catalog-backed metadata rows. +* DBeaver and DataGrip compatibility validation is still required. +* A live Calcite-model metadata fixture beyond the existing SQL API regression + and provider tests can be added if needed for tool compatibility hardening. +* Streaming execution, authentication, TLS, prepared statements, and running + Wayang-job cancellation remain future phases. +* A shaded all-in-one JDBC-tool artifact is not currently produced; Maven and + Gradle consumers use the normal transitive runtime dependencies. ## Next Immediate Work -1. Review and harden result set method coverage. -2. Back `SqlMetadataProvider` with Calcite or configured catalog metadata. -3. Add end-to-end `DriverManager` query tests in the final test pass. -4. Add focused tests for cursor paging, metadata, getters, and close behavior. +1. Run DBeaver and DataGrip compatibility passes and add only the read-only + methods those tools require. +2. Decide whether release packaging should include a shaded JDBC-tool bundle. +3. Add a live Calcite-model metadata fixture if external JDBC tools expose a + metadata gap not covered by the current SQL API and provider tests. +4. Design streaming execution and real Wayang job cancellation as later + protocol revisions. ## Verification Commands Used ```bash -env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am test +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -DskipTests -Dmaven.javadoc.skip=true package ``` ```bash -env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-api-sql -am test +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-api-sql -am -DskipTests -Dmaven.javadoc.skip=true compile ``` ```bash -env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-server -am test +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dtest=ProtocolMessageCodecTest,WayangJdbcUrlTest,WayangJdbcServerJavaClientTest -Dsurefire.failIfNoSpecifiedTests=false -Dmaven.javadoc.skip=true test ``` ```bash -env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-driver -am test +env -u npm_config_prefix JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:/usr/bin:/bin ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dtest=ProtocolMessageCodecTest,WayangJdbcUrlTest,WayangJdbcClientProtocolTest,CursorStoreTest,JdbcServerSessionManagerTest,JdbcRequestDispatcherTest,DefaultSqlMetadataProviderTest,WayangJdbcServerJavaClientTest -Dsurefire.failIfNoSpecifiedTests=false -Dmaven.javadoc.skip=true test +``` + +```bash +env -u npm_config_prefix JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:/usr/bin:/bin ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dmaven.javadoc.skip=true test ``` diff --git a/wayang-jdbc/README.md b/wayang-jdbc/README.md index 980de81cb..d2b0119bd 100644 --- a/wayang-jdbc/README.md +++ b/wayang-jdbc/README.md @@ -19,35 +19,32 @@ # Wayang JDBC -This module provides the external JDBC interface for Apache Wayang. +This module provides the first external JDBC interface for Apache Wayang. Apache Wayang is not a database and does not own table storage. The JDBC layer -is therefore designed as a read-only SQL gateway: +is a read-only SQL gateway: ```text JDBC client -> Wayang JDBC driver -> Wayang JDBC server -> Wayang SQL API -> Wayang execution ``` -The first implementation target is a minimal JDBC driver that can be used by -standard Java JDBC clients and database tools for SQL query execution against -data sources configured in Wayang. +The Phase 1 production path supports standard JDBC connections, read-only +statement execution, paged result-set access, result metadata, and catalog +browsing for the Calcite model configured in the server. See `DEVELOPMENT_LOG.md` for the date-wise implementation log, decisions, verification, and remaining work. ## Module Roles -`wayang-jdbc-protocol` -: Shared request and response messages plus the wire codec used by the driver - and server. +* `wayang-jdbc-protocol` contains the versioned messages and length-prefixed + JSON codec shared by the driver and server. -`wayang-jdbc-driver` -: The client-side JDBC driver. It exposes the `java.sql` interfaces and talks to - the Wayang JDBC server over the protocol module. +* `wayang-jdbc-driver` implements the client-side `java.sql` interfaces and + communicates with the server over TCP. -`wayang-jdbc-server` -: The server-side gateway. It accepts driver requests, delegates SQL execution - to the Wayang SQL API, and returns rows and metadata to the driver. +* `wayang-jdbc-server` owns logical JDBC sessions, delegates queries to the + Wayang SQL API, and returns rows and Calcite-backed metadata. The existing `wayang-platforms/wayang-jdbc-template`, `wayang-platforms/wayang-postgres`, `wayang-platforms/wayang-sqlite3`, and @@ -57,87 +54,290 @@ client interface. ## First Supported Scope -The first usable version is intentionally read-only and limited to query -execution. - -Supported first: +The first usable version is intentionally read-only. Its supported surface is: * `DriverManager.getConnection("jdbc:wayang://host:port[/database]")` -* `Connection.createStatement()` -* `Connection.close()` -* `Connection.isClosed()` -* `Connection.getMetaData()` -* `Statement.executeQuery(String)` -* `Statement.close()` -* `ResultSet.next()` -* `ResultSet.getObject(...)` -* `ResultSet.getString(...)` -* `ResultSet.getBoolean(...)` -* `ResultSet.getByte(...)` -* `ResultSet.getShort(...)` -* `ResultSet.getInt(...)` -* `ResultSet.getLong(...)` -* `ResultSet.getFloat(...)` -* `ResultSet.getDouble(...)` -* `ResultSet.wasNull()` -* `ResultSet.getMetaData()` +* forward-only, read-only `Connection`, `Statement`, and `ResultSet` objects +* `Statement.executeQuery(String)` and `Statement.execute(String)` for queries +* cursor paging through `ResultSet.next()` +* object, string, numeric, binary, and temporal result getters +* JDBC 4.2 typed `ResultSet.getObject(..., Class)` +* `ResultSet.wasNull()` and common stream getters * `ResultSetMetaData` basics: column count, name, label, JDBC type, type name, precision, scale, nullability. -* `DatabaseMetaData` basics: schemas, tables, columns, driver/product - information, and common capability flags. +* `DatabaseMetaData` driver/product information, capability flags, SQL type + information, schemas, tables, and columns -Unsupported first: +The following remain deliberately unsupported and throw +`SQLFeatureNotSupportedException` with SQLState `0A000` where JDBC exposes an +operation: * `CREATE TABLE`, `INSERT`, `UPDATE`, `DELETE`, `MERGE` * transactions and savepoints +* prepared and callable statements * stored procedures * writable or scrollable result sets * batched statements * generated keys -* advanced SQL functions beyond the Wayang SQL API support -* full JDBC compliance +* query cancellation and timeouts +* SQL features not supported by the Wayang SQL API + +The server independently parses every submitted statement and accepts only +Calcite query nodes, including read-only `WITH` and `EXPLAIN` forms. This +server-side gate is authoritative even when a caller bypasses normal JDBC +methods such as `executeUpdate`. + +## Connecting + +The URL format is: + +```text +jdbc:wayang://host[:port][/database][?property=value&...] +``` + +The default port is `9999`. Connection properties can be supplied either in +the URL query or through the `Properties` passed to `DriverManager`; URL query +values take precedence. Supported client properties are exposed through +`Driver.getPropertyInfo`. + +`user` and `password` are carried in the opening protocol request for future +authentication integration. Phase 1 does not authenticate or encrypt +connections, so the gateway should be used only on a trusted network. -Unsupported JDBC operations should throw `SQLFeatureNotSupportedException` -unless the JDBC contract requires a default value. +The server entry point accepts: + +```text +WayangJdbcServer [host] [port] [configuration-file] +``` -## Query Execution Contract +It defaults to `127.0.0.1:9999`. The server configuration must provide the +Calcite model used by `SqlContext`, including the `wayang.calcite.model` +property required by the SQL API. + +## Quickstart: Plain Java Client + +If you only want to verify that the JDBC module works, use the bundled demo. +It creates the required configuration file for you. + +Terminal 1, from the repository root: + +```bash +bash wayang-jdbc/demo/start-demo-server.sh +``` + +Terminal 2, from the repository root: + +```bash +bash wayang-jdbc/demo/run-demo-client.sh +``` + +The demo starts the server on `127.0.0.1:9999`, connects through +`DriverManager`, and runs: + +```sql +SELECT ID, NAME, CITY FROM fs.people ORDER BY ID +``` -The server delegates SQL queries to the Wayang SQL API. The SQL API currently -returns `Collection`, where `Record` contains row values only. JDBC -requires result metadata as well, so the SQL API needs an execution method that -returns both rows and the Calcite-derived row type. +The sample data is in `wayang-jdbc/demo/data/people.csv`. -The target result shape is: +The external JDBC interface has two running pieces: + +1. Start a `WayangJdbcServer` process with a Wayang configuration that points + to the Calcite model. +2. Put `wayang-jdbc-driver` and its runtime dependencies on the client + application's classpath, then connect with normal `java.sql` APIs. + +### 1. Build the JDBC artifacts + +From the repository root: + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-server -am -DskipTests -Dmaven.javadoc.skip=true install +``` + +This builds and installs the JDBC server, driver, protocol, and required +Wayang snapshot artifacts into the local Maven repository. + +### 2. Prepare the server configuration + +Create or reuse a Wayang configuration file that contains the Calcite model +used for SQL validation, query planning, execution, and metadata browsing: + +```properties +wayang.calcite.model={"version":"1.0","defaultSchema":"fs","schemas":[...]} +``` + +The value is the inline Calcite model JSON string expected by the Wayang SQL +API. Table names, schema names, and metadata visible through JDBC come from +this model. The optional `/database` part of the JDBC URL is exposed as the +JDBC catalog/session database; it does not create storage. + +For manual startup, the configuration path must point to a real file. Do not +paste placeholder paths such as `/path/to/wayang.properties`. If you are only +testing locally, prefer the bundled demo script because it creates this file +for you. + +### 3. Start the Wayang JDBC server + +Build a runtime classpath for the server module: + +```bash +./mvnw -pl :wayang-jdbc-server -DincludeScope=runtime -Dmdep.outputFile=target/runtime-classpath.txt dependency:build-classpath +``` + +Start the server: + +```bash +java -cp "wayang-jdbc/wayang-jdbc-server/target/apache-wayang-jdbc-server-1.1.2-SNAPSHOT.jar:$(cat wayang-jdbc/wayang-jdbc-server/target/runtime-classpath.txt)" org.apache.wayang.jdbc.server.WayangJdbcServer 127.0.0.1 9999 /path/to/wayang.properties +``` + +Arguments are: + +```text +WayangJdbcServer [host] [port] [configuration-file] +``` + +If omitted, `host` defaults to `127.0.0.1` and `port` defaults to `9999`. + +### 4. Add the driver to a Java application + +For a Maven client project, use the driver dependency: + +```xml + + org.apache.wayang + wayang-jdbc-driver + 1.1.2-SNAPSHOT + +``` + +The driver depends on `wayang-jdbc-protocol` and Jackson. Maven and Gradle +resolve those dependencies transitively after the artifacts have been installed +or published. + +If you run a plain `javac`/`java` command or configure a JDBC GUI tool from +local files, include all runtime JARs. You can copy them with: + +```bash +./mvnw -pl :wayang-jdbc-driver -DincludeScope=runtime -DoutputDirectory=target/driver-libs dependency:copy-dependencies +``` + +Then put these on the client classpath: + +* `wayang-jdbc/wayang-jdbc-driver/target/apache-wayang-jdbc-driver-1.1.2-SNAPSHOT.jar` +* every JAR in `wayang-jdbc/wayang-jdbc-driver/target/driver-libs/` + +The JDBC driver class is: + +```text +org.apache.wayang.jdbc.driver.WayangDriver +``` + +Java applications normally do not need to instantiate the driver directly +because the driver JAR contains the `META-INF/services/java.sql.Driver` service +loader entry. Calling `Class.forName(...)` is still safe for explicit loading. + +### 5. Connect and query from plain Java + +```java +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.Statement; +import java.util.Properties; + +public class WayangJdbcExample { + + public static void main(String[] args) throws Exception { + Class.forName("org.apache.wayang.jdbc.driver.WayangDriver"); + + Properties properties = new Properties(); + properties.setProperty("user", "demo"); + properties.setProperty("connectTimeout", "5000"); + + String url = "jdbc:wayang://127.0.0.1:9999/analytics"; + + try (Connection connection = DriverManager.getConnection(url, properties); + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery("SELECT * FROM PEOPLE")) { + + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + + while (resultSet.next()) { + for (int column = 1; column <= columnCount; column++) { + System.out.printf( + "%s=%s%n", + metaData.getColumnLabel(column), + resultSet.getObject(column) + ); + } + } + } + } +} +``` + +URL examples: + +```text +jdbc:wayang://127.0.0.1:9999 +jdbc:wayang://127.0.0.1:9999/analytics +jdbc:wayang://127.0.0.1:9999/analytics?user=demo&connectTimeout=5000 +``` + +Supported connection properties: + +* `user` - optional user name carried to the server for future authentication. +* `password` - optional password carried to the server for future + authentication. +* `connectTimeout` - TCP connect and initial handshake timeout in + milliseconds. + +The connection is read-only. Use `SELECT`, `VALUES`, `TABLE`, and read-only +forms supported by the Wayang SQL API. Operations such as `CREATE`, `INSERT`, +`UPDATE`, `DELETE`, `MERGE`, transactions, procedures, and writable result sets +are intentionally unsupported. + +## Query and Result Contract + +`SqlContext.executeSqlWithMetadata(String)` returns: ```java SqlQueryResult { - List columns; - List rows; + List columns; + Collection rows; } ``` -Column metadata should be derived from the validated/optimized Calcite -`RelNode.getRowType()` before the Wayang plan is executed. +Column metadata comes from the optimized Calcite `RelNode` row type. The +server converts each value to a stable wire representation, and the driver +coerces it back according to the advertised JDBC type. This preserves decimal +precision and the JDBC default mappings for numeric, binary, and temporal +values. -The first server implementation may keep query results in memory and expose -them through cursor IDs for fetch paging. This is acceptable for the first JDBC -gateway version. Streaming results can be added later. +Phase 1 materializes each query result in server memory. The protocol exposes +in-memory cursor IDs so the driver can fetch it in pages; this is paging, not +streaming execution. Server-side cursor and connection limits prevent +unbounded resource growth, and disconnecting a client releases its sessions +and cursors. ## Metadata Contract -JDBC tools usually call metadata methods before query execution. The server -should answer metadata requests from the Calcite schema loaded by Wayang SQL -configuration. - -Initial metadata support: +The server answers metadata requests from the same Calcite root schema used to +validate and execute SQL: * schemas from the configured Calcite root schema -* tables from each schema table map +* tables from schema table maps * columns from each table row type * Java/Calcite type mapping to `java.sql.Types` +* JDBC wildcard matching for schema, table, and column patterns +* exact matching for catalog selectors -The driver should return metadata rows with standard JDBC column names and -ordering for the implemented `DatabaseMetaData` methods. +Metadata rows use the JDBC-mandated column names, shapes, and sort order for +the implemented `DatabaseMetaData` methods. Metadata result sets are +read-only. ## Package Boundary @@ -150,13 +350,49 @@ first JDBC gateway implementation. Classes should still be named clearly with driver/server/protocol responsibilities to avoid mixing external JDBC gateway code with internal JDBC platform operators. -## Implementation Order +## Packaging for JDBC Tools + +The driver artifact has normal Maven runtime dependencies on +`wayang-jdbc-protocol` and Jackson. Maven and Gradle consumers receive those +dependencies transitively. A JDBC tool configured from local JAR files must be +given the driver JAR and its runtime dependencies; the current build does not +produce a shaded all-in-one driver. + +## Test Scope + +The first automated client scope is a plain Java JDBC client. The test starts +`WayangJdbcServer` on an ephemeral local port and connects with +`DriverManager.getConnection(...)`, then verifies query execution, cursor +paging, result metadata, typed getters, `wasNull`, metadata browsing, read-only +write rejection, and `Connection.isValid(...)`. + +Additional focused tests cover driver protocol failures, server EOF handling, +unsupported-operation error mapping, server-side cursor lifecycle, logical +session ownership, dispatcher cleanup, and JDBC metadata filtering/order. + +Run the focused Java-client JDBC gateway tests from the repository root with: + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dtest=ProtocolMessageCodecTest,WayangJdbcUrlTest,WayangJdbcClientProtocolTest,CursorStoreTest,JdbcServerSessionManagerTest,JdbcRequestDispatcherTest,DefaultSqlMetadataProviderTest,WayangJdbcServerJavaClientTest -Dsurefire.failIfNoSpecifiedTests=false -Dmaven.javadoc.skip=true test +``` + +Run the unfiltered JDBC reactor tests with: + +```bash +env JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH ./mvnw -pl :wayang-jdbc-protocol,:wayang-jdbc-driver,:wayang-jdbc-server -am -Dmaven.javadoc.skip=true test +``` + +The `-am` flag is intentional in this snapshot workspace so same-version +Wayang dependencies are built from the checkout rather than resolved from a +remote snapshot repository. + +## Phase 1 Limitations -1. Add a SQL API result object that includes rows and metadata. -2. Implement the server dispatcher and in-memory cursor store. -3. Implement the driver socket client. -4. Implement `Connection`, `Statement`, `ResultSet`, and `ResultSetMetaData`. -5. Implement basic `DatabaseMetaData`. -6. Add end-to-end JDBC tests using `DriverManager`. -7. Run a compatibility pass with DBeaver/DataGrip and fill only the methods they - require for browsing and query execution. +* Results are fully materialized before paging. +* A running Wayang job cannot yet be interrupted through JDBC cancellation. +* Authentication, authorization, and TLS are not implemented. +* Nested Calcite schema hierarchies are not flattened into invalid dotted JDBC + schema identifiers; browsing is limited to the representable schema level. +* DBeaver and DataGrip compatibility validation, streaming, optional live + Calcite metadata fixture hardening, and JDBC-tool packaging remain follow-up + work. diff --git a/wayang-jdbc/demo/README.md b/wayang-jdbc/demo/README.md new file mode 100644 index 000000000..b1e2aab1e --- /dev/null +++ b/wayang-jdbc/demo/README.md @@ -0,0 +1,58 @@ + + +# Wayang JDBC Demo + +This demo is the easiest way to verify the external Wayang JDBC interface with +a plain Java client. + +Run from the repository root. + +Terminal 1: + +```bash +bash wayang-jdbc/demo/start-demo-server.sh +``` + +Terminal 2: + +```bash +bash wayang-jdbc/demo/run-demo-client.sh +``` + +The server script: + +* builds the JDBC server and dependencies +* creates `/tmp/wayang-jdbc-demo/wayang.properties` +* points the Calcite file schema at `wayang-jdbc/demo/data` +* starts `org.apache.wayang.jdbc.server.WayangJdbcServer` on `127.0.0.1:9999` + +The client script: + +* builds the JDBC driver and dependencies +* compiles `WayangJdbcDemoClient.java` +* connects to `jdbc:wayang://127.0.0.1:9999/demo` +* runs: + +```sql +SELECT ID, NAME, CITY FROM fs.people ORDER BY ID +``` + +The demo is intentionally read-only. It reads `data/people.csv`; it does not +create, insert, update, or delete tables. diff --git a/wayang-jdbc/demo/WayangJdbcDemoClient.java b/wayang-jdbc/demo/WayangJdbcDemoClient.java new file mode 100644 index 000000000..7d00621d3 --- /dev/null +++ b/wayang-jdbc/demo/WayangJdbcDemoClient.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.Statement; +import java.util.Properties; + +public class WayangJdbcDemoClient { + + public static void main(final String[] args) throws Exception { + Class.forName("org.apache.wayang.jdbc.driver.WayangDriver"); + + final Properties properties = new Properties(); + properties.setProperty("user", "demo"); + properties.setProperty("connectTimeout", "5000"); + + final String url = "jdbc:wayang://127.0.0.1:9999/demo"; + final String sql = "SELECT ID, NAME, CITY FROM fs.people ORDER BY ID"; + + try (Connection connection = DriverManager.getConnection(url, properties); + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(sql)) { + + System.out.println("Connected to " + url); + System.out.println("Query: " + sql); + System.out.println(); + + final ResultSetMetaData metaData = resultSet.getMetaData(); + final int columnCount = metaData.getColumnCount(); + while (resultSet.next()) { + for (int column = 1; column <= columnCount; column++) { + if (column > 1) { + System.out.print(" | "); + } + System.out.print(metaData.getColumnLabel(column) + "=" + resultSet.getObject(column)); + } + System.out.println(); + } + } + } +} diff --git a/wayang-jdbc/demo/data/people.csv b/wayang-jdbc/demo/data/people.csv new file mode 100644 index 000000000..bb94e93a4 --- /dev/null +++ b/wayang-jdbc/demo/data/people.csv @@ -0,0 +1,4 @@ +ID:int,NAME:String,CITY:String +1;Ada;London +2;Grace;Arlington +3;Katherine;White Sulphur Springs diff --git a/wayang-jdbc/demo/run-demo-client.sh b/wayang-jdbc/demo/run-demo-client.sh new file mode 100644 index 000000000..2cc0f1a6f --- /dev/null +++ b/wayang-jdbc/demo/run-demo-client.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +repo_root="$(cd "${script_dir}/../.." && pwd)" +demo_classes_dir="${repo_root}/target/wayang-jdbc-demo/classes" +driver_classpath_file="${repo_root}/wayang-jdbc/wayang-jdbc-driver/target/runtime-classpath.txt" +driver_jar="${repo_root}/wayang-jdbc/wayang-jdbc-driver/target/apache-wayang-jdbc-driver-1.1.2-SNAPSHOT.jar" + +cd "${repo_root}" + +echo "Building Wayang JDBC driver artifacts..." +./mvnw -pl :wayang-jdbc-driver -am -DskipTests -Dmaven.javadoc.skip=true install + +echo "Creating driver runtime classpath..." +./mvnw -pl :wayang-jdbc-driver -DincludeScope=runtime -Dmdep.outputFile=target/runtime-classpath.txt dependency:build-classpath + +mkdir -p "${demo_classes_dir}" + +echo "Compiling demo client..." +javac -cp "${driver_jar}:$(cat "${driver_classpath_file}")" \ + -d "${demo_classes_dir}" \ + "${script_dir}/WayangJdbcDemoClient.java" + +echo "Running demo client..." +java -cp "${demo_classes_dir}:${driver_jar}:$(cat "${driver_classpath_file}")" WayangJdbcDemoClient diff --git a/wayang-jdbc/demo/start-demo-server.sh b/wayang-jdbc/demo/start-demo-server.sh new file mode 100644 index 000000000..321920df7 --- /dev/null +++ b/wayang-jdbc/demo/start-demo-server.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +repo_root="$(cd "${script_dir}/../.." && pwd)" +demo_work_dir="${TMPDIR:-/tmp}/wayang-jdbc-demo" +demo_properties="${demo_work_dir}/wayang.properties" +data_dir="${script_dir}/data" +model_data_dir="/${data_dir}" +demo_properties_url="file:${demo_properties}" +server_classpath_file="${repo_root}/wayang-jdbc/wayang-jdbc-server/target/runtime-classpath.txt" +server_jar="${repo_root}/wayang-jdbc/wayang-jdbc-server/target/apache-wayang-jdbc-server-1.1.2-SNAPSHOT.jar" + +mkdir -p "${demo_work_dir}" + +cat > "${demo_properties}" < statements = new LinkedHashSet<>(); + + private volatile boolean closed; + private volatile boolean closing; private boolean readOnly = true; private boolean autoCommit = true; - private String catalog; - private String schema; + private final String catalog; + private final String schema; WayangConnection(final WayangJdbcClient client, final String database) { this(client, database, null, null); @@ -71,30 +80,59 @@ class WayangConnection implements Connection { this.jdbcUrl = jdbcUrl; this.userName = properties == null ? null : properties.getProperty("user"); this.catalog = database; - this.schema = database; + this.schema = null; } @Override public Statement createStatement() throws SQLException { - this.ensureOpen(); - return new WayangStatement(this, this.client); + synchronized (this) { + this.ensureOpen(); + final WayangStatement statement = new WayangStatement(this, this.client); + this.statements.add(statement); + return statement; + } } @Override public void close() throws SQLException { - if (this.closed) { - return; + final Set statementsToClose; + synchronized (this) { + if (this.closed || this.closing) { + return; + } + this.closing = true; + statementsToClose = new LinkedHashSet<>(this.statements); } + + SQLException failure = null; try { - this.client.close(); + for (WayangStatement statement : statementsToClose) { + try { + statement.close(); + } catch (SQLException e) { + failure = this.accumulate(failure, e); + } + } + try { + this.client.close(); + } catch (SQLException e) { + failure = this.accumulate(failure, e); + } } finally { - this.closed = true; + synchronized (this) { + this.closed = true; + this.closing = false; + this.statements.clear(); + } + } + if (failure != null) { + throw failure; } } @Override public boolean isClosed() { - return this.closed || this.client.isClosed(); + return this.closed || this.closing || this.client.isClosed(); } @Override @@ -136,7 +174,9 @@ public String getCatalog() throws SQLException { @Override public void setCatalog(final String catalog) throws SQLException { this.ensureOpen(); - this.catalog = catalog; + if (!Objects.equals(this.catalog, catalog)) { + throw this.unsupported("Changing the Wayang JDBC catalog is not supported."); + } } @Override @@ -148,15 +188,24 @@ public String getSchema() throws SQLException { @Override public void setSchema(final String schema) throws SQLException { this.ensureOpen(); - this.schema = schema; + if (!Objects.equals(this.schema, schema)) { + throw this.unsupported("Changing the Wayang JDBC schema is not supported."); + } } @Override public boolean isValid(final int timeout) throws SQLException { if (timeout < 0) { - throw new SQLException("Timeout must not be negative."); + throw new SQLException("Timeout must not be negative.", "HY092"); + } + if (this.isClosed()) { + return false; + } + try { + return this.client.ping(timeout); + } catch (SQLException e) { + return false; } - return !this.isClosed(); } @Override @@ -167,47 +216,58 @@ public DatabaseMetaData getMetaData() throws SQLException { @Override public void commit() throws SQLException { + this.ensureOpen(); throw this.unsupported("Transactions are not supported."); } @Override public void rollback() throws SQLException { + this.ensureOpen(); throw this.unsupported("Transactions are not supported."); } @Override public void rollback(final Savepoint savepoint) throws SQLException { + this.ensureOpen(); throw this.unsupported("Savepoints are not supported."); } @Override public Savepoint setSavepoint() throws SQLException { + this.ensureOpen(); throw this.unsupported("Savepoints are not supported."); } @Override public Savepoint setSavepoint(final String name) throws SQLException { + this.ensureOpen(); throw this.unsupported("Savepoints are not supported."); } @Override public void releaseSavepoint(final Savepoint savepoint) throws SQLException { + this.ensureOpen(); throw this.unsupported("Savepoints are not supported."); } @Override public PreparedStatement prepareStatement(final String sql) throws SQLException { + this.ensureOpen(); throw this.unsupported("Prepared statements are not supported yet."); } @Override public CallableStatement prepareCall(final String sql) throws SQLException { + this.ensureOpen(); throw this.unsupported("Callable statements are not supported."); } @Override public String nativeSQL(final String sql) throws SQLException { this.ensureOpen(); + if (sql == null) { + throw new SQLException("SQL must not be null."); + } return sql; } @@ -227,36 +287,43 @@ public Statement createStatement(final int type, final int concurrency, final in @Override public PreparedStatement prepareStatement(final String sql, final int type, final int concurrency) throws SQLException { + this.ensureOpen(); throw this.unsupported("Prepared statements are not supported yet."); } @Override public PreparedStatement prepareStatement(final String sql, final int type, final int concurrency, final int holdability) throws SQLException { + this.ensureOpen(); throw this.unsupported("Prepared statements are not supported yet."); } @Override public PreparedStatement prepareStatement(final String sql, final int autoGeneratedKeys) throws SQLException { + this.ensureOpen(); throw this.unsupported("Generated keys are not supported."); } @Override public PreparedStatement prepareStatement(final String sql, final int[] columnIndexes) throws SQLException { + this.ensureOpen(); throw this.unsupported("Generated keys are not supported."); } @Override public PreparedStatement prepareStatement(final String sql, final String[] columnNames) throws SQLException { + this.ensureOpen(); throw this.unsupported("Generated keys are not supported."); } @Override public CallableStatement prepareCall(final String sql, final int type, final int concurrency) throws SQLException { + this.ensureOpen(); throw this.unsupported("Callable statements are not supported."); } @Override public CallableStatement prepareCall(final String sql, final int type, final int concurrency, final int holdability) throws SQLException { + this.ensureOpen(); throw this.unsupported("Callable statements are not supported."); } @@ -293,6 +360,7 @@ public Map> getTypeMap() throws SQLException { @Override public void setTypeMap(final Map> map) throws SQLException { + this.ensureOpen(); throw this.unsupported("Custom type maps are not supported."); } @@ -312,54 +380,87 @@ public void setHoldability(final int holdability) throws SQLException { @Override public Clob createClob() throws SQLException { + this.ensureOpen(); throw this.unsupported("CLOB values are not supported."); } @Override public Blob createBlob() throws SQLException { + this.ensureOpen(); throw this.unsupported("BLOB values are not supported."); } @Override public NClob createNClob() throws SQLException { + this.ensureOpen(); throw this.unsupported("NCLOB values are not supported."); } @Override public SQLXML createSQLXML() throws SQLException { + this.ensureOpen(); throw this.unsupported("SQLXML values are not supported."); } @Override public Array createArrayOf(final String typeName, final Object[] elements) throws SQLException { + this.ensureOpen(); throw this.unsupported("SQL ARRAY values are not supported."); } @Override public Struct createStruct(final String typeName, final Object[] attributes) throws SQLException { + this.ensureOpen(); throw this.unsupported("SQL STRUCT values are not supported."); } @Override - public void setClientInfo(final String name, final String value) { - this.clientInfo.setProperty(name, value); + public void setClientInfo(final String name, final String value) throws SQLClientInfoException { + this.ensureOpenForClientInfo(name); + if (name == null || name.isBlank()) { + throw this.clientInfoException( + "Client info property name must not be blank.", + name, + ClientInfoStatus.REASON_UNKNOWN_PROPERTY + ); + } + if (value == null) { + this.clientInfo.remove(name); + } else { + this.clientInfo.setProperty(name, value); + } } @Override - public String getClientInfo(final String name) { + public String getClientInfo(final String name) throws SQLException { + this.ensureOpen(); + if (name == null) { + throw new SQLException("Client info property name must not be null."); + } return this.clientInfo.getProperty(name); } @Override - public Properties getClientInfo() { + public Properties getClientInfo() throws SQLException { + this.ensureOpen(); final Properties copy = new Properties(); copy.putAll(this.clientInfo); return copy; } @Override - public void setClientInfo(final Properties properties) { - this.clientInfo.putAll(properties); + public void setClientInfo(final Properties properties) throws SQLClientInfoException { + this.ensureOpenForClientInfo(null); + if (properties == null) { + throw this.clientInfoException( + "Client info properties must not be null.", + null, + ClientInfoStatus.REASON_VALUE_INVALID + ); + } + for (String name : properties.stringPropertyNames()) { + this.setClientInfo(name, properties.getProperty(name)); + } } @Override @@ -377,7 +478,16 @@ public void abort(final Executor executor) throws SQLException { @Override public void setNetworkTimeout(final Executor executor, final int milliseconds) throws SQLException { - throw this.unsupported("Network timeout is not supported."); + this.ensureOpen(); + if (executor == null) { + throw new SQLException("Executor must not be null."); + } + if (milliseconds < 0) { + throw new SQLException("Network timeout must not be negative."); + } + if (milliseconds > 0) { + throw this.unsupported("Network timeout is not supported."); + } } @Override @@ -388,6 +498,10 @@ public int getNetworkTimeout() throws SQLException { @Override public T unwrap(final Class iface) throws SQLException { + this.ensureOpen(); + if (iface == null) { + throw new SQLException("Wrapper interface must not be null."); + } if (iface.isInstance(this)) { return iface.cast(this); } @@ -395,7 +509,11 @@ public T unwrap(final Class iface) throws SQLException { } @Override - public boolean isWrapperFor(final Class iface) { + public boolean isWrapperFor(final Class iface) throws SQLException { + this.ensureOpen(); + if (iface == null) { + throw new SQLException("Wrapper interface must not be null."); + } return iface.isInstance(this); } @@ -411,12 +529,49 @@ WayangJdbcClient getClient() { return this.client; } + synchronized void statementClosed(final WayangStatement statement) { + this.statements.remove(statement); + } + private void ensureOpen() throws SQLException { if (this.isClosed()) { throw new SQLException("Wayang JDBC connection is closed.", "08003"); } } + private void ensureOpenForClientInfo(final String propertyName) throws SQLClientInfoException { + if (this.isClosed()) { + throw this.clientInfoException( + "Wayang JDBC connection is closed.", + propertyName, + ClientInfoStatus.REASON_UNKNOWN + ); + } + } + + private SQLClientInfoException clientInfoException( + final String message, + final String propertyName, + final ClientInfoStatus status + ) { + final Map failedProperties = new LinkedHashMap<>(); + if (propertyName != null) { + failedProperties.put(propertyName, status); + } + return new SQLClientInfoException(message, "08003", failedProperties); + } + + private SQLException accumulate( + final SQLException existing, + final SQLException additional + ) { + if (existing == null) { + return additional; + } + existing.addSuppressed(additional); + return existing; + } + private void requireSupportedResultSetOptions( final int type, final int concurrency, diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java index 12fc385e7..10b985c25 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.List; import javax.sql.rowset.CachedRowSet; import javax.sql.rowset.RowSetMetaDataImpl; @@ -95,17 +96,27 @@ public Object invoke( case "getDatabaseProductName": return PRODUCT_NAME; case "getDatabaseProductVersion": - return this.version(); + return this.databaseVersion(); case "getDatabaseMajorVersion": - return 1; + return this.databaseVersionPart(0, 1); case "getDatabaseMinorVersion": - return 1; + return this.databaseVersionPart(1, 1); case "getJDBCMajorVersion": return 4; case "getJDBCMinorVersion": return 2; case "isReadOnly": return true; + case "supportsMixedCaseIdentifiers": + case "storesMixedCaseIdentifiers": + case "supportsMixedCaseQuotedIdentifiers": + case "storesMixedCaseQuotedIdentifiers": + return true; + case "storesUpperCaseIdentifiers": + case "storesLowerCaseIdentifiers": + case "storesUpperCaseQuotedIdentifiers": + case "storesLowerCaseQuotedIdentifiers": + return false; case "allProceduresAreCallable": return false; case "allTablesAreSelectable": @@ -114,6 +125,18 @@ public Object invoke( return DatabaseMetaData.sqlStateSQL; case "getResultSetHoldability": return ResultSet.CLOSE_CURSORS_AT_COMMIT; + case "supportsSchemasInDataManipulation": + return true; + case "supportsSchemasInProcedureCalls": + case "supportsSchemasInTableDefinitions": + case "supportsSchemasInIndexDefinitions": + case "supportsSchemasInPrivilegeDefinitions": + case "supportsCatalogsInDataManipulation": + case "supportsCatalogsInProcedureCalls": + case "supportsCatalogsInTableDefinitions": + case "supportsCatalogsInIndexDefinitions": + case "supportsCatalogsInPrivilegeDefinitions": + return false; case "supportsResultSetType": return (Integer) args[0] == ResultSet.TYPE_FORWARD_ONLY; case "supportsResultSetConcurrency": @@ -168,8 +191,12 @@ public Object invoke( return "."; case "isCatalogAtStart": return true; - case "nullsAreSortedAtEnd": + case "nullsAreSortedHigh": return true; + case "nullsAreSortedLow": + case "nullsAreSortedAtStart": + case "nullsAreSortedAtEnd": + return false; case "getCatalogs": return this.catalogs(); case "getSchemas": @@ -338,28 +365,111 @@ private ResultSet procedureColumns() throws SQLException { } private ResultSet typeInfo() throws SQLException { - return this.resultSet( - Arrays.asList( - column("TYPE_NAME", Types.VARCHAR), - column("DATA_TYPE", Types.INTEGER), - column("PRECISION", Types.INTEGER), - column("LITERAL_PREFIX", Types.VARCHAR), - column("LITERAL_SUFFIX", Types.VARCHAR), - column("CREATE_PARAMS", Types.VARCHAR), - column("NULLABLE", Types.SMALLINT), - column("CASE_SENSITIVE", Types.BOOLEAN), - column("SEARCHABLE", Types.SMALLINT), - column("UNSIGNED_ATTRIBUTE", Types.BOOLEAN), - column("FIXED_PREC_SCALE", Types.BOOLEAN), - column("AUTO_INCREMENT", Types.BOOLEAN), - column("LOCAL_TYPE_NAME", Types.VARCHAR), - column("MINIMUM_SCALE", Types.SMALLINT), - column("MAXIMUM_SCALE", Types.SMALLINT), - column("SQL_DATA_TYPE", Types.INTEGER), - column("SQL_DATETIME_SUB", Types.INTEGER), - column("NUM_PREC_RADIX", Types.INTEGER) - ), - Collections.emptyList() + final List columns = Arrays.asList( + column("TYPE_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("PRECISION", Types.INTEGER), + column("LITERAL_PREFIX", Types.VARCHAR), + column("LITERAL_SUFFIX", Types.VARCHAR), + column("CREATE_PARAMS", Types.VARCHAR), + column("NULLABLE", Types.SMALLINT), + column("CASE_SENSITIVE", Types.BOOLEAN), + column("SEARCHABLE", Types.SMALLINT), + column("UNSIGNED_ATTRIBUTE", Types.BOOLEAN), + column("FIXED_PREC_SCALE", Types.BOOLEAN), + column("AUTO_INCREMENT", Types.BOOLEAN), + column("LOCAL_TYPE_NAME", Types.VARCHAR), + column("MINIMUM_SCALE", Types.SMALLINT), + column("MAXIMUM_SCALE", Types.SMALLINT), + column("SQL_DATA_TYPE", Types.INTEGER), + column("SQL_DATETIME_SUB", Types.INTEGER), + column("NUM_PREC_RADIX", Types.INTEGER) + ); + final List> rows = new ArrayList<>(); + rows.add(this.typeInfoRow("BOOLEAN", Types.BOOLEAN, 1, null, null, null, false, 0, 0, null)); + rows.add(this.typeInfoRow("TINYINT", Types.TINYINT, 3, null, null, null, false, 0, 0, 10)); + rows.add(this.typeInfoRow("SMALLINT", Types.SMALLINT, 5, null, null, null, false, 0, 0, 10)); + rows.add(this.typeInfoRow("INTEGER", Types.INTEGER, 10, null, null, null, false, 0, 0, 10)); + rows.add(this.typeInfoRow("BIGINT", Types.BIGINT, 19, null, null, null, false, 0, 0, 10)); + rows.add(this.typeInfoRow( + "NUMERIC", Types.NUMERIC, 38, null, null, "precision,scale", false, 0, 38, 10 + )); + rows.add(this.typeInfoRow( + "DECIMAL", Types.DECIMAL, 38, null, null, "precision,scale", false, 0, 38, 10 + )); + rows.add(this.typeInfoRow("REAL", Types.REAL, 7, null, null, null, false, 0, 0, 2)); + rows.add(this.typeInfoRow("FLOAT", Types.FLOAT, 15, null, null, null, false, 0, 0, 2)); + rows.add(this.typeInfoRow("DOUBLE", Types.DOUBLE, 15, null, null, null, false, 0, 0, 2)); + rows.add(this.typeInfoRow("CHAR", Types.CHAR, 65536, "'", "'", "length", true, 0, 0, null)); + rows.add(this.typeInfoRow("VARCHAR", Types.VARCHAR, 65536, "'", "'", "length", true, 0, 0, null)); + rows.add(this.typeInfoRow("BINARY", Types.BINARY, 65536, "X'", "'", "length", false, 0, 0, null)); + rows.add(this.typeInfoRow( + "VARBINARY", Types.VARBINARY, 65536, "X'", "'", "length", false, 0, 0, null + )); + rows.add(this.typeInfoRow("DATE", Types.DATE, 10, "DATE '", "'", null, false, 0, 0, null)); + rows.add(this.typeInfoRow("TIME", Types.TIME, 18, "TIME '", "'", "precision", false, 0, 9, null)); + rows.add(this.typeInfoRow( + "TIME WITH TIME ZONE", + Types.TIME_WITH_TIMEZONE, + 24, + "TIME '", + "'", + "precision", + false, + 0, + 9, + null + )); + rows.add(this.typeInfoRow( + "TIMESTAMP", Types.TIMESTAMP, 29, "TIMESTAMP '", "'", "precision", false, 0, 9, null + )); + rows.add(this.typeInfoRow( + "TIMESTAMP WITH TIME ZONE", + Types.TIMESTAMP_WITH_TIMEZONE, + 35, + "TIMESTAMP '", + "'", + "precision", + false, + 0, + 9, + null + )); + rows.sort(Comparator.comparingInt(row -> (Integer) row.get(1))); + return this.resultSet(columns, rows); + } + + private List typeInfoRow( + final String name, + final int jdbcType, + final int precision, + final String literalPrefix, + final String literalSuffix, + final String createParameters, + final boolean caseSensitive, + final int minimumScale, + final int maximumScale, + final Integer numericRadix + ) { + return Arrays.asList( + name, + jdbcType, + precision, + literalPrefix, + literalSuffix, + createParameters, + (short) DatabaseMetaData.typeNullable, + caseSensitive, + (short) DatabaseMetaData.typeSearchable, + null, + false, + false, + null, + (short) minimumScale, + (short) maximumScale, + null, + null, + numericRadix ); } @@ -644,7 +754,10 @@ private ResultSet resultSet( } rowSet.setMetaData(metaData); - for (List row : rows) { + // CachedRowSet.insertRow() inserts before its current cursor position. + // Insert in reverse so clients observe the JDBC-required source order. + for (int rowIndex = rows.size() - 1; rowIndex >= 0; rowIndex--) { + final List row = rows.get(rowIndex); if (row.size() != columns.size()) { throw new SQLException("Metadata row has " + row.size() + " values but " + columns.size() + " columns were declared."); @@ -657,6 +770,9 @@ private ResultSet resultSet( rowSet.moveToCurrentRow(); } rowSet.beforeFirst(); + rowSet.setType(ResultSet.TYPE_FORWARD_ONLY); + rowSet.setConcurrency(ResultSet.CONCUR_READ_ONLY); + rowSet.setReadOnly(true); return rowSet; } @@ -727,6 +843,9 @@ private Object defaultValue(final Method method) throws SQLFeatureNotSupportedEx } private Object unwrap(final Object proxy, final Class iface) throws SQLException { + if (iface == null) { + throw new SQLException("Interface must not be null.", "HY009"); + } if (iface.isInstance(proxy)) { return iface.cast(proxy); } @@ -736,7 +855,13 @@ private Object unwrap(final Object proxy, final Class iface) throws SQLExcept throw new SQLException("DatabaseMetaData does not wrap " + iface.getName()); } - private boolean isWrapperFor(final Object proxy, final Class iface) { + private boolean isWrapperFor( + final Object proxy, + final Class iface + ) throws SQLException { + if (iface == null) { + throw new SQLException("Interface must not be null.", "HY009"); + } return iface.isInstance(proxy) || iface.isInstance(this); } @@ -752,6 +877,23 @@ private String version() { return version == null || version.isBlank() ? FALLBACK_VERSION : version; } + private String databaseVersion() { + final String serverVersion = this.connection.getClient().getServerVersion(); + return serverVersion == null || serverVersion.isBlank() ? this.version() : serverVersion; + } + + private int databaseVersionPart(final int index, final int fallback) { + final String[] parts = this.databaseVersion().split("[.-]"); + if (index >= parts.length) { + return fallback; + } + try { + return Integer.parseInt(parts[index]); + } catch (NumberFormatException ignored) { + return fallback; + } + } + private String emptyIfNull(final String value) { return value == null ? "" : value; } diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java index 5d862f304..410caa163 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java @@ -53,8 +53,36 @@ public boolean acceptsURL(final String url) { } @Override - public DriverPropertyInfo[] getPropertyInfo(final String url, final Properties info) { - return new DriverPropertyInfo[0]; + public DriverPropertyInfo[] getPropertyInfo( + final String url, + final Properties info + ) throws SQLException { + final Properties properties = new Properties(); + if (info != null) { + properties.putAll(info); + } + if (url != null && this.acceptsURL(url)) { + properties.putAll(WayangJdbcUrl.parse(url, info).getProperties()); + } + + return new DriverPropertyInfo[]{ + this.property( + "user", + properties.getProperty("user"), + "Optional user name reported to the Wayang JDBC server." + ), + this.property( + "password", + properties.getProperty("password"), + "Optional password passed to the Wayang JDBC server." + ), + this.property( + "connectTimeout", + properties.getProperty("connectTimeout"), + "TCP connect and initial server handshake timeout in milliseconds; " + + "zero uses DriverManager.getLoginTimeout or the driver default." + ) + }; } @Override @@ -76,4 +104,15 @@ public boolean jdbcCompliant() { public Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new SQLFeatureNotSupportedException("Wayang JDBC does not use java.util.logging."); } + + private DriverPropertyInfo property( + final String name, + final String value, + final String description + ) { + final DriverPropertyInfo property = new DriverPropertyInfo(name, value); + property.description = description; + property.required = false; + return property; + } } diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java index 678bc918a..f4aeca608 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java @@ -35,31 +35,42 @@ import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.MetadataType; import org.apache.wayang.jdbc.protocol.message.OpenConnectionRequest; import org.apache.wayang.jdbc.protocol.message.OpenConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.PingRequest; +import org.apache.wayang.jdbc.protocol.message.PingResponse; import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; import java.io.IOException; +import java.net.InetSocketAddress; import java.net.Socket; +import java.net.SocketException; +import java.sql.DriverManager; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; +import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Properties; import java.util.UUID; class WayangJdbcClient implements AutoCloseable { + private static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 10_000; + private final Socket socket; private final ProtocolMessageCodec codec; private final String connectionId; - private boolean closed; + private final String serverVersion; + + private volatile boolean closed; WayangJdbcClient(final WayangJdbcUrl jdbcUrl) throws SQLException { if (jdbcUrl == null) { @@ -68,6 +79,8 @@ class WayangJdbcClient implements AutoCloseable { this.codec = new ProtocolMessageCodec(); this.socket = this.openSocket(jdbcUrl); + final String openedConnectionId; + final String openedServerVersion; try { final Properties properties = jdbcUrl.getProperties(); final OpenConnectionRequest request = new OpenConnectionRequest( @@ -82,28 +95,95 @@ class WayangJdbcClient implements AutoCloseable { MessageType.OPEN_CONNECTION_OK, OpenConnectionResponse.class ); - this.requireText(response.getConnectionId(), "Connection id"); - this.connectionId = response.getConnectionId(); - } catch (SQLException e) { - this.closed = true; - try { - this.socket.close(); - } catch (IOException closeException) { - e.addSuppressed(closeException); + if (response.getConnectionId() == null || response.getConnectionId().isBlank()) { + throw this.protocolFailure( + "Wayang JDBC server returned an invalid connection id." + ); } + openedConnectionId = response.getConnectionId(); + openedServerVersion = response.getServerVersion(); + this.socket.setSoTimeout(0); + } catch (SQLException e) { + this.markBroken(); throw e; + } catch (SocketException e) { + throw this.communicationFailure( + "Could not reset the Wayang JDBC socket after the initial handshake.", + e + ); } + this.connectionId = openedConnectionId; + this.serverVersion = openedServerVersion; } String getConnectionId() { return this.connectionId; } + String getServerVersion() { + return this.serverVersion; + } + boolean isClosed() { return this.closed || this.socket.isClosed(); } - QueryResultResponse executeQuery( + synchronized boolean ping(final int timeoutSeconds) throws SQLException { + if (timeoutSeconds < 0) { + throw new SQLException("Ping timeout must not be negative.", "HY092"); + } + this.ensureOpen(); + + final boolean hasTemporaryTimeout = timeoutSeconds > 0; + final int previousTimeout; + try { + previousTimeout = this.socket.getSoTimeout(); + if (hasTemporaryTimeout) { + this.socket.setSoTimeout(this.secondsToMilliseconds(timeoutSeconds)); + } + } catch (SocketException e) { + throw this.communicationFailure( + "Could not configure the Wayang JDBC ping timeout.", + e + ); + } + + SQLException failure = null; + try { + final PingResponse response = this.sendAndReceive( + MessageType.PING, + new PingRequest(this.connectionId), + MessageType.PING_OK, + PingResponse.class + ); + this.validateIdentifier(response.getConnectionId(), this.connectionId, "connection"); + } catch (SQLException e) { + failure = e; + } + + if (hasTemporaryTimeout && !this.socket.isClosed()) { + try { + this.socket.setSoTimeout(previousTimeout); + } catch (SocketException e) { + final SQLException resetFailure = this.communicationFailure( + "Could not restore the Wayang JDBC socket timeout after ping.", + e + ); + if (failure == null) { + failure = resetFailure; + } else { + failure.addSuppressed(resetFailure); + } + } + } + + if (failure != null) { + throw failure; + } + return true; + } + + synchronized QueryResultResponse executeQuery( final String statementId, final String sql, final int fetchSize @@ -111,67 +191,89 @@ QueryResultResponse executeQuery( this.requireText(statementId, "Statement id"); this.requireText(sql, "SQL query"); - return this.sendAndReceive( + final QueryResultResponse response = this.sendAndReceive( MessageType.EXECUTE_QUERY, new ExecuteQueryRequest(this.connectionId, statementId, sql, fetchSize), MessageType.QUERY_RESULT, QueryResultResponse.class ); + this.validateQueryResponse(response, statementId); + return response; } - FetchResponse fetch(final String cursorId, final int fetchSize) throws SQLException { + synchronized FetchResponse fetch( + final String cursorId, + final int fetchSize + ) throws SQLException { this.requireText(cursorId, "Cursor id"); - return this.sendAndReceive( + final FetchResponse response = this.sendAndReceive( MessageType.FETCH, new FetchRequest(this.connectionId, cursorId, fetchSize), MessageType.FETCH_RESULT, FetchResponse.class ); + this.validateFetchResponse(response, cursorId); + return response; } - void closeCursor(final String statementId, final String cursorId) throws SQLException { + synchronized void closeCursor( + final String statementId, + final String cursorId + ) throws SQLException { this.requireText(statementId, "Statement id"); this.requireText(cursorId, "Cursor id"); - this.sendAndReceive( + final CloseCursorResponse response = this.sendAndReceive( MessageType.CLOSE_CURSOR, new CloseCursorRequest(this.connectionId, statementId, cursorId), MessageType.CLOSE_CURSOR_OK, CloseCursorResponse.class ); + this.validateIdentifier(response.getConnectionId(), this.connectionId, "connection"); + this.validateIdentifier(response.getStatementId(), statementId, "statement"); + this.validateIdentifier(response.getCursorId(), cursorId, "cursor"); } - CancelQueryResponse cancelQuery(final String statementId, final String cursorId) throws SQLException { + synchronized CancelQueryResponse cancelQuery( + final String statementId, + final String cursorId + ) throws SQLException { this.requireText(statementId, "Statement id"); - return this.sendAndReceive( + final CancelQueryResponse response = this.sendAndReceive( MessageType.CANCEL_QUERY, new CancelQueryRequest(this.connectionId, statementId, cursorId), MessageType.CANCEL_QUERY_OK, CancelQueryResponse.class ); + this.validateIdentifier(response.getConnectionId(), this.connectionId, "connection"); + this.validateIdentifier(response.getStatementId(), statementId, "statement"); + this.validateIdentifier(response.getCursorId(), cursorId, "cursor"); + return response; } - MetadataResultResponse getSchemas( + synchronized MetadataResultResponse getSchemas( final String catalog, final String schemaPattern ) throws SQLException { - return this.sendAndReceive( + final MetadataResultResponse response = this.sendAndReceive( MessageType.GET_SCHEMAS, new GetSchemasRequest(this.connectionId, catalog, schemaPattern), MessageType.METADATA_RESULT, MetadataResultResponse.class ); + this.validateMetadataResponse(response, MetadataType.SCHEMAS, 2); + return response; } - MetadataResultResponse getTables( + synchronized MetadataResultResponse getTables( final String catalog, final String schemaPattern, final String tableNamePattern, final String[] tableTypes ) throws SQLException { - return this.sendAndReceive( + final MetadataResultResponse response = this.sendAndReceive( MessageType.GET_TABLES, new GetTablesRequest( this.connectionId, @@ -183,15 +285,17 @@ MetadataResultResponse getTables( MessageType.METADATA_RESULT, MetadataResultResponse.class ); + this.validateMetadataResponse(response, MetadataType.TABLES, 10); + return response; } - MetadataResultResponse getColumns( + synchronized MetadataResultResponse getColumns( final String catalog, final String schemaPattern, final String tableNamePattern, final String columnNamePattern ) throws SQLException { - return this.sendAndReceive( + final MetadataResultResponse response = this.sendAndReceive( MessageType.GET_COLUMNS, new GetColumnsRequest( this.connectionId, @@ -203,22 +307,29 @@ MetadataResultResponse getColumns( MessageType.METADATA_RESULT, MetadataResultResponse.class ); + this.validateMetadataResponse(response, MetadataType.COLUMNS, 24); + return response; } @Override - public void close() throws SQLException { + public synchronized void close() throws SQLException { if (this.closed) { return; } SQLException failure = null; try { - this.sendAndReceive( + final CloseConnectionResponse response = this.sendAndReceive( MessageType.CLOSE_CONNECTION, new CloseConnectionRequest(this.connectionId), MessageType.CLOSE_CONNECTION_OK, CloseConnectionResponse.class ); + this.validateIdentifier( + response.getConnectionId(), + this.connectionId, + "connection" + ); } catch (SQLException e) { failure = e; } finally { @@ -238,13 +349,64 @@ public void close() throws SQLException { } private Socket openSocket(final WayangJdbcUrl jdbcUrl) throws SQLException { + final int connectTimeout = this.connectTimeout(jdbcUrl.getProperties()); + final Socket openedSocket = new Socket(); try { - return new Socket(jdbcUrl.getHost(), jdbcUrl.getPort()); + openedSocket.connect( + new InetSocketAddress(jdbcUrl.getHost(), jdbcUrl.getPort()), + connectTimeout + ); + openedSocket.setSoTimeout(connectTimeout); + return openedSocket; } catch (IOException e) { + try { + openedSocket.close(); + } catch (IOException closeException) { + e.addSuppressed(closeException); + } throw new SQLException("Could not connect to Wayang JDBC server.", "08001", e); } } + private int connectTimeout(final Properties properties) throws SQLException { + final String configuredValue = properties.getProperty("connectTimeout"); + if (configuredValue != null && !configuredValue.isBlank()) { + final long configuredTimeout; + try { + configuredTimeout = Long.parseLong(configuredValue.trim()); + } catch (NumberFormatException e) { + throw new SQLException( + "Wayang JDBC connectTimeout must be an integer number of milliseconds.", + "HY092", + e + ); + } + if (configuredTimeout < 0 || configuredTimeout > Integer.MAX_VALUE) { + throw new SQLException( + "Wayang JDBC connectTimeout must be between 0 and " + + Integer.MAX_VALUE + " milliseconds.", + "HY092" + ); + } + if (configuredTimeout > 0) { + return (int) configuredTimeout; + } + } + + final int loginTimeoutSeconds = DriverManager.getLoginTimeout(); + if (loginTimeoutSeconds > 0) { + return this.secondsToMilliseconds(loginTimeoutSeconds); + } + return DEFAULT_CONNECT_TIMEOUT_MILLIS; + } + + private int secondsToMilliseconds(final int seconds) { + return (int) Math.min( + Integer.MAX_VALUE, + Math.multiplyExact((long) seconds, 1_000L) + ); + } + private synchronized T sendAndReceive( final MessageType requestType, final Object requestPayload, @@ -262,29 +424,56 @@ private synchronized T sendAndReceive( final MessageEnvelope response = this.codec.read(this.socket.getInputStream()); if (response == null) { - throw new SQLException("Wayang JDBC server closed the connection.", "08006"); + throw this.communicationFailure( + "Wayang JDBC server closed the connection.", + null + ); } if (!requestId.equals(response.getRequestId())) { - throw new SQLException("Wayang JDBC server returned a mismatched request id.", "HY000"); + throw this.protocolFailure( + "Wayang JDBC server returned a mismatched request id." + ); } if (response.getType() == MessageType.ERROR) { - throw this.toSqlException(this.codec.payloadAs(response, ErrorResponse.class)); + final ErrorResponse errorResponse = + this.codec.payloadAs(response, ErrorResponse.class); + if (errorResponse == null) { + throw this.protocolFailure( + "Wayang JDBC server returned an empty error response." + ); + } + // A well-formed server error describes a request failure and + // does not make the protocol connection unusable. + throw this.toSqlException(errorResponse); } if (response.getType() != expectedResponseType) { - throw new SQLException( - "Wayang JDBC server returned unexpected response type: " + response.getType(), - "HY000" + throw this.protocolFailure( + "Wayang JDBC server returned unexpected response type: " + + response.getType() ); } - return this.codec.payloadAs(response, responseClass); - } catch (SQLException e) { - throw e; + final T responsePayload = this.codec.payloadAs(response, responseClass); + if (responsePayload == null) { + throw this.protocolFailure( + "Wayang JDBC server returned an empty " + + expectedResponseType + " response." + ); + } + return responsePayload; } catch (IOException e) { - throw new SQLException("Could not communicate with Wayang JDBC server.", "08006", e); + throw this.communicationFailure( + "Could not communicate with Wayang JDBC server.", + e + ); + } catch (RuntimeException e) { + throw this.protocolFailure( + "Could not process the Wayang JDBC server response.", + e + ); } } @@ -314,6 +503,166 @@ private SQLException toSqlException(final ErrorResponse response) { ); } + private void validateQueryResponse( + final QueryResultResponse response, + final String expectedStatementId + ) throws SQLException { + this.validateIdentifier(response.getConnectionId(), this.connectionId, "connection"); + this.validateIdentifier(response.getStatementId(), expectedStatementId, "statement"); + if (response.getColumns() == null || response.getRows() == null) { + throw this.protocolFailure( + "Wayang JDBC server returned null query columns or rows." + ); + } + for (int index = 0; index < response.getColumns().size(); index++) { + if (response.getColumns().get(index) == null) { + throw this.protocolFailure( + "Wayang JDBC server returned a null query column at index " + + index + "." + ); + } + } + this.validateRowWidths( + response.getRows(), + response.getColumns().size(), + "query" + ); + + final boolean hasCursor = response.getCursorId() != null + && !response.getCursorId().isBlank(); + if (response.isHasMoreRows() != hasCursor) { + throw this.protocolFailure( + "Wayang JDBC server returned inconsistent query cursor state." + ); + } + if (response.isHasMoreRows() && response.getRows().isEmpty()) { + throw this.protocolFailure( + "Wayang JDBC server reported more query rows after an empty batch." + ); + } + } + + private void validateFetchResponse( + final FetchResponse response, + final String expectedCursorId + ) throws SQLException { + this.validateIdentifier(response.getConnectionId(), this.connectionId, "connection"); + this.validateIdentifier(response.getCursorId(), expectedCursorId, "cursor"); + if (response.getRows() == null) { + throw this.protocolFailure( + "Wayang JDBC server returned null fetch rows." + ); + } + for (int index = 0; index < response.getRows().size(); index++) { + if (response.getRows().get(index) == null) { + throw this.protocolFailure( + "Wayang JDBC server returned a null fetch row at index " + + index + "." + ); + } + } + if (response.isHasMoreRows() && response.getRows().isEmpty()) { + throw this.protocolFailure( + "Wayang JDBC server reported more fetched rows after an empty batch." + ); + } + } + + private void validateMetadataResponse( + final MetadataResultResponse response, + final MetadataType expectedType, + final int expectedColumnCount + ) throws SQLException { + this.validateIdentifier(response.getConnectionId(), this.connectionId, "connection"); + if (response.getMetadataType() != expectedType) { + throw this.protocolFailure( + "Wayang JDBC server returned metadata type " + + response.getMetadataType() + " for " + expectedType + "." + ); + } + if (response.getColumns() == null || response.getRows() == null) { + throw this.protocolFailure( + "Wayang JDBC server returned null metadata columns or rows." + ); + } + if (response.getColumns().size() != expectedColumnCount) { + throw this.protocolFailure( + "Wayang JDBC server returned " + response.getColumns().size() + + " columns for " + expectedType + " metadata; expected " + + expectedColumnCount + "." + ); + } + for (int index = 0; index < response.getColumns().size(); index++) { + if (response.getColumns().get(index) == null + || response.getColumns().get(index).getColumnName() == null + || response.getColumns().get(index).getColumnName().isBlank()) { + throw this.protocolFailure( + "Wayang JDBC server returned an invalid metadata column at index " + + index + "." + ); + } + } + this.validateRowWidths(response.getRows(), expectedColumnCount, "metadata"); + } + + private void validateRowWidths( + final List> rows, + final int expectedColumnCount, + final String resultName + ) throws SQLException { + for (int index = 0; index < rows.size(); index++) { + final List row = rows.get(index); + if (row == null || row.size() != expectedColumnCount) { + throw this.protocolFailure( + "Wayang JDBC server returned an invalid " + resultName + + " row at index " + index + "." + ); + } + } + } + + private void validateIdentifier( + final String actual, + final String expected, + final String identifierName + ) throws SQLException { + if (!Objects.equals(actual, expected)) { + throw this.protocolFailure( + "Wayang JDBC server returned a mismatched " + + identifierName + " id." + ); + } + } + + private SQLException protocolFailure(final String message) { + return this.protocolFailure(message, null); + } + + private SQLException protocolFailure( + final String message, + final Throwable cause + ) { + this.markBroken(); + return new SQLException(message, "08S01", cause); + } + + private SQLException communicationFailure( + final String message, + final Throwable cause + ) { + this.markBroken(); + return new SQLException(message, "08006", cause); + } + + private synchronized void markBroken() { + this.closed = true; + try { + this.socket.close(); + } catch (IOException ignored) { + // The original communication/protocol failure is more useful. + } + } + private void ensureOpen() throws SQLException { if (this.isClosed()) { throw new SQLException("Wayang JDBC connection is closed.", "08003"); @@ -341,8 +690,8 @@ private Map toStringMap(final Properties properties) { private List toList(final String[] values) { if (values == null) { - return Collections.emptyList(); + return null; } - return Arrays.asList(values); + return new ArrayList<>(Arrays.asList(values)); } } diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java index 0283ca15f..75f06e515 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java @@ -19,8 +19,13 @@ import org.apache.wayang.jdbc.protocol.ProtocolConstants; +import java.io.ByteArrayOutputStream; import java.net.URI; import java.net.URISyntaxException; +import java.nio.ByteBuffer; +import java.nio.charset.CharacterCodingException; +import java.nio.charset.CodingErrorAction; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.Map; @@ -72,24 +77,48 @@ public static WayangJdbcUrl parse(final String url, final Properties inputProper if (host == null || host.isBlank()) { throw new SQLException("Wayang JDBC URL must contain a host."); } + if (uri.getRawUserInfo() != null) { + throw new SQLException("Wayang JDBC URLs do not support user information."); + } + if (uri.getRawFragment() != null) { + throw new SQLException("Wayang JDBC URLs do not support fragments."); + } final int port = uri.getPort() == -1 ? ProtocolConstants.DEFAULT_PORT : uri.getPort(); - final String database = parseDatabase(uri.getPath()); + if (port < 1 || port > 65_535) { + throw new SQLException("Wayang JDBC URL port must be between 1 and 65535."); + } + final String database = parseDatabase(uri.getRawPath()); final Properties properties = new Properties(); if (inputProperties != null) { properties.putAll(inputProperties); } + // JDBC URL query properties deliberately take precedence over the + // Properties supplied to Driver.connect. parseQueryProperties(uri.getRawQuery()).forEach(properties::setProperty); return new WayangJdbcUrl(host, port, database, properties); } - private static String parseDatabase(final String path) { - if (path == null || path.isBlank() || "/".equals(path)) { + private static String parseDatabase(final String rawPath) throws SQLException { + if (rawPath == null || rawPath.isEmpty() || "/".equals(rawPath)) { return null; } - return path.startsWith("/") ? path.substring(1) : path; + if (!rawPath.startsWith("/")) { + throw new SQLException("Wayang JDBC URL database path must start with '/'."); + } + + final String rawDatabase = rawPath.substring(1); + if (rawDatabase.isEmpty() || rawDatabase.indexOf('/') >= 0) { + throw new SQLException("Wayang JDBC URL supports at most one database path segment."); + } + + final String database = percentDecode(rawDatabase, "database"); + if (database.isBlank() || database.indexOf('/') >= 0) { + throw new SQLException("Wayang JDBC URL database must be a non-blank path segment."); + } + return database; } private static Map parseQueryProperties(final String query) throws SQLException { @@ -98,18 +127,71 @@ private static Map parseQueryProperties(final String query) thro return properties; } - final String[] pairs = query.split("&"); + final String[] pairs = query.split("&", -1); for (String pair : pairs) { final int separator = pair.indexOf('='); if (separator <= 0) { throw new SQLException("Invalid Wayang JDBC URL query property: " + pair); } - properties.put(pair.substring(0, separator), pair.substring(separator + 1)); + final String name = percentDecode(pair.substring(0, separator), "query property name"); + final String value = percentDecode(pair.substring(separator + 1), "query property value"); + if (name.isBlank()) { + throw new SQLException("Wayang JDBC URL query property names must not be blank."); + } + properties.put(name, value); } return properties; } + private static String percentDecode( + final String value, + final String fieldName + ) throws SQLException { + final StringBuilder decoded = new StringBuilder(value.length()); + int index = 0; + while (index < value.length()) { + if (value.charAt(index) != '%') { + decoded.append(value.charAt(index)); + index++; + continue; + } + + final ByteArrayOutputStream escapedBytes = new ByteArrayOutputStream(); + while (index < value.length() && value.charAt(index) == '%') { + if (index + 2 >= value.length()) { + throw invalidPercentEncoding(fieldName); + } + final int high = Character.digit(value.charAt(index + 1), 16); + final int low = Character.digit(value.charAt(index + 2), 16); + if (high < 0 || low < 0) { + throw invalidPercentEncoding(fieldName); + } + escapedBytes.write((high << 4) + low); + index += 3; + } + + try { + decoded.append(StandardCharsets.UTF_8.newDecoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT) + .decode(ByteBuffer.wrap(escapedBytes.toByteArray()))); + } catch (CharacterCodingException e) { + throw new SQLException( + "Wayang JDBC URL " + fieldName + " is not valid UTF-8.", + e + ); + } + } + return decoded.toString(); + } + + private static SQLException invalidPercentEncoding(final String fieldName) { + return new SQLException( + "Wayang JDBC URL " + fieldName + " contains invalid percent encoding." + ); + } + public String getHost() { return this.host; } diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java index a81f0c8a0..12a1ad978 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java @@ -25,24 +25,32 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; -import java.sql.Array; -import java.sql.Blob; -import java.sql.Clob; import java.sql.Date; -import java.sql.NClob; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; -import java.sql.SQLXML; import java.sql.Time; import java.sql.Timestamp; +import java.sql.Types; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.ZoneOffset; import java.util.ArrayList; +import java.util.Base64; +import java.util.Calendar; +import java.util.Collections; import java.util.List; import java.util.Locale; +import java.util.Map; final class WayangResultSet implements InvocationHandler { @@ -54,8 +62,6 @@ final class WayangResultSet implements InvocationHandler { private final ResultSetMetaData metaData; - private final int fetchSize; - private final int maxRows; private List> rows; @@ -64,31 +70,37 @@ final class WayangResultSet implements InvocationHandler { private boolean hasMoreRows; + private int fetchSize; + private int rowIndex = -1; private int rowNumber; - private boolean afterLast; + private CursorState cursorState; - private boolean closed; + private volatile boolean closed; private Object lastValue; + private boolean columnWasRead; + private WayangResultSet( final WayangStatement statement, final WayangJdbcClient client, final QueryResultResponse response, final int fetchSize, final int maxRows - ) { + ) throws SQLException { this.statement = statement; this.client = client; - this.columns = List.copyOf(response.getColumns()); - this.rows = this.copyRows(response.getRows()); - this.cursorId = response.getCursorId(); - this.hasMoreRows = response.isHasMoreRows(); this.fetchSize = fetchSize; this.maxRows = maxRows; + this.validateInitialResponse(response); + this.columns = this.copyColumns(response.getColumns()); + this.rows = this.copyRows(response.getRows(), "query result"); + this.cursorId = this.normalizeCursorId(response.getCursorId()); + this.hasMoreRows = response.isHasMoreRows(); + this.cursorState = this.rows.isEmpty() ? CursorState.EMPTY : CursorState.BEFORE_FIRST; this.metaData = new WayangResultSetMetaData(this.columns); } @@ -98,7 +110,7 @@ static ResultSet create( final QueryResultResponse response, final int fetchSize, final int maxRows - ) { + ) throws SQLException { return (ResultSet) Proxy.newProxyInstance( ResultSet.class.getClassLoader(), new Class[]{ResultSet.class}, @@ -117,62 +129,85 @@ public Object invoke( } final String methodName = method.getName(); + if ("close".equals(methodName)) { + this.close((ResultSet) proxy); + return null; + } + if ("isClosed".equals(methodName)) { + return this.isEffectivelyClosed(); + } + + this.ensureOpen(); + switch (methodName) { case "next": return this.next(); - case "close": - this.close((ResultSet) proxy); - return null; - case "isClosed": - return this.closed; case "wasNull": - this.ensureOpen(); - return this.lastValue == null; + return this.columnWasRead && this.lastValue == null; case "getMetaData": - this.ensureOpen(); return this.metaData; case "getStatement": - this.ensureOpen(); return this.statement; case "findColumn": - this.ensureOpen(); return this.findColumn((String) args[0]); case "getObject": - return this.getObject(args); + return this.getObject(method, args); case "getString": case "getNString": return this.asString(this.value(args[0])); case "getBoolean": return this.asBoolean(this.value(args[0])); case "getByte": - return this.asNumber(this.value(args[0])).byteValue(); + return this.asBoundedIntegral( + this.value(args[0]), + Byte.MIN_VALUE, + Byte.MAX_VALUE, + "byte" + ).byteValue(); case "getShort": - return this.asNumber(this.value(args[0])).shortValue(); + return this.asBoundedIntegral( + this.value(args[0]), + Short.MIN_VALUE, + Short.MAX_VALUE, + "short" + ).shortValue(); case "getInt": - return this.asNumber(this.value(args[0])).intValue(); + return this.asBoundedIntegral( + this.value(args[0]), + Integer.MIN_VALUE, + Integer.MAX_VALUE, + "int" + ).intValue(); case "getLong": - return this.asNumber(this.value(args[0])).longValue(); + return this.asBoundedIntegral( + this.value(args[0]), + Long.MIN_VALUE, + Long.MAX_VALUE, + "long" + ).longValue(); case "getFloat": - return this.asNumber(this.value(args[0])).floatValue(); + return this.asFloat(this.value(args[0])); case "getDouble": - return this.asNumber(this.value(args[0])).doubleValue(); + return this.asDouble(this.value(args[0])); case "getBigDecimal": - return this.asBigDecimal(this.value(args[0])); + return this.getBigDecimal(args); case "getBytes": return this.asBytes(this.value(args[0])); case "getAsciiStream": + return this.asAsciiStream(this.value(args[0])); case "getBinaryStream": - case "getUnicodeStream": return this.asBinaryStream(this.value(args[0])); + case "getUnicodeStream": + return this.asUnicodeStream(this.value(args[0])); case "getCharacterStream": case "getNCharacterStream": return this.asCharacterStream(this.value(args[0])); case "getDate": - return this.asDate(this.value(args[0])); + return this.asDate(this.value(args[0]), this.calendarArg(args)); case "getTime": - return this.asTime(this.value(args[0])); + return this.asTime(this.value(args[0]), this.calendarArg(args)); case "getTimestamp": - return this.asTimestamp(this.value(args[0])); + return this.asTimestamp(this.value(args[0]), this.calendarArg(args)); case "getURL": return this.asUrl(this.value(args[0])); case "getArray": @@ -185,25 +220,25 @@ public Object invoke( return this.unsupportedValue("NCLOB values are not supported."); case "getSQLXML": return this.unsupportedValue("SQLXML values are not supported."); + case "getRef": + return this.unsupportedValue("SQL REF values are not supported."); + case "getRowId": + return this.unsupportedValue("ROWID values are not supported."); + case "getCursorName": + return this.unsupportedValue("Named cursors are not supported."); case "getRow": - this.ensureOpen(); - return this.rowIndex >= 0 && this.rowIndex < this.rows.size() ? this.rowNumber : 0; + return this.cursorState == CursorState.ON_ROW ? this.rowNumber : 0; case "isBeforeFirst": - this.ensureOpen(); - return this.rowNumber == 0 && !this.afterLast; + return this.cursorState == CursorState.BEFORE_FIRST; case "isAfterLast": - this.ensureOpen(); - return this.afterLast; + return this.cursorState == CursorState.AFTER_LAST; case "isFirst": - this.ensureOpen(); - return this.rowNumber == 1 && this.rowIndex >= 0; + return this.cursorState == CursorState.ON_ROW && this.rowNumber == 1; case "isLast": - this.ensureOpen(); - return !this.hasMoreRows && this.rowIndex == this.rows.size() - 1 && this.rowIndex >= 0; + return this.isOnLastRow(); case "rowUpdated": case "rowInserted": case "rowDeleted": - this.ensureOpen(); return false; case "beforeFirst": case "afterLast": @@ -214,43 +249,36 @@ public Object invoke( case "previous": throw this.unsupported("Wayang JDBC supports only forward-only result sets."); case "getType": - this.ensureOpen(); return ResultSet.TYPE_FORWARD_ONLY; case "getConcurrency": - this.ensureOpen(); return ResultSet.CONCUR_READ_ONLY; case "getHoldability": - this.ensureOpen(); return ResultSet.CLOSE_CURSORS_AT_COMMIT; case "getFetchDirection": - this.ensureOpen(); return ResultSet.FETCH_FORWARD; case "setFetchDirection": - this.ensureOpen(); + this.validateFetchDirection((Integer) args[0]); if ((Integer) args[0] != ResultSet.FETCH_FORWARD) { throw this.unsupported("Wayang JDBC supports only forward fetch direction."); } return null; case "getFetchSize": - this.ensureOpen(); return this.fetchSize; case "setFetchSize": - this.ensureOpen(); - if ((Integer) args[0] < 0) { - throw new SQLException("Fetch size must not be negative."); - } + this.setFetchSize((Integer) args[0]); return null; case "getWarnings": - this.ensureOpen(); return null; case "clearWarnings": - this.ensureOpen(); return null; case "unwrap": return this.unwrap(proxy, (Class) args[0]); case "isWrapperFor": - return ((Class) args[0]).isInstance(proxy); + return this.isWrapperFor(proxy, (Class) args[0]); default: + if (this.isWriteMethod(methodName)) { + throw this.unsupported("Wayang JDBC result sets are read-only."); + } throw this.unsupported("ResultSet method is not supported yet: " + methodName); } } @@ -273,57 +301,111 @@ private Object invokeObjectMethod( } private boolean next() throws SQLException { - this.ensureOpen(); - this.lastValue = null; + this.clearLastValue(); + + if (this.cursorState == CursorState.AFTER_LAST || this.cursorState == CursorState.EMPTY) { + return false; + } if (this.reachedMaxRows()) { - this.closeCursorIfOpen(); - this.afterLast = true; + this.finishResultSet(); return false; } if (this.rowIndex + 1 < this.rows.size()) { this.rowIndex++; this.rowNumber++; + this.cursorState = CursorState.ON_ROW; return true; } while (this.hasMoreRows && this.cursorId != null) { - final FetchResponse response = this.client.fetch(this.cursorId, this.fetchSize); - this.rows = this.copyRows(response.getRows()); - this.hasMoreRows = response.isHasMoreRows(); - if (!this.hasMoreRows) { - this.cursorId = null; - } - this.rowIndex = -1; + this.fetchNextBatch(); if (this.reachedMaxRows()) { - this.closeCursorIfOpen(); - this.afterLast = true; + this.finishResultSet(); return false; } if (this.rowIndex + 1 < this.rows.size()) { this.rowIndex++; this.rowNumber++; + this.cursorState = CursorState.ON_ROW; return true; } } - this.afterLast = true; + this.finishResultSet(); return false; } - private Object getObject(final Object[] args) throws SQLException { + private void fetchNextBatch() throws SQLException { + final String requestedCursorId = this.cursorId; + final FetchResponse response = this.client.fetch(requestedCursorId, this.fetchSize); + try { + if (response == null) { + throw this.protocolError("Wayang JDBC server returned a null fetch response."); + } + if (!this.client.getConnectionId().equals(response.getConnectionId())) { + throw this.protocolError("Fetch response connection id does not match the open connection."); + } + if (!requestedCursorId.equals(response.getCursorId())) { + throw this.protocolError("Fetch response cursor id does not match the requested cursor."); + } + + final List> fetchedRows = this.copyRows(response.getRows(), "fetch response"); + if (response.isHasMoreRows() && fetchedRows.isEmpty()) { + throw this.protocolError("Fetch response reported more rows but returned an empty batch."); + } + + this.rows = fetchedRows; + this.hasMoreRows = response.isHasMoreRows(); + this.rowIndex = -1; + if (!this.hasMoreRows) { + this.cursorId = null; + } + } catch (SQLException e) { + this.closeCursorAfterProtocolFailure(e); + throw e; + } + } + + private void finishResultSet() throws SQLException { + this.closeCursorIfOpen(); + this.rowIndex = -1; + this.clearLastValue(); + this.cursorState = this.rowNumber == 0 ? CursorState.EMPTY : CursorState.AFTER_LAST; + } + + private boolean isOnLastRow() { + if (this.cursorState != CursorState.ON_ROW) { + return false; + } + if (this.reachedMaxRows()) { + return true; + } + return !this.hasMoreRows && this.rowIndex == this.rows.size() - 1; + } + + private void clearLastValue() { + this.lastValue = null; + this.columnWasRead = false; + } + + private Object getObject(final Method method, final Object[] args) throws SQLException { + final int columnIndex = this.columnIndex(args[0]); + final Object value = this.value(columnIndex); if (args.length == 1) { - return this.value(args[0]); + return this.defaultJdbcObject(value, this.columns.get(columnIndex - 1)); } - final Object value = this.value(args[0]); - if (!(args[1] instanceof Class)) { - return value; + if (Map.class.isAssignableFrom(method.getParameterTypes()[1])) { + throw this.unsupported("Custom SQL type maps are not supported."); } + if (!(args[1] instanceof Class)) { + throw new SQLException("Target type must not be null."); + } final Class targetType = (Class) args[1]; if (value == null || targetType.isInstance(value)) { return value; @@ -335,31 +417,121 @@ private Object getObject(final Object[] args) throws SQLException { return this.asBoolean(value); } if (targetType == Byte.class || targetType == byte.class) { - return this.asNumber(value).byteValue(); + return this.asBoundedIntegral( + value, + Byte.MIN_VALUE, + Byte.MAX_VALUE, + "byte" + ).byteValue(); } if (targetType == Short.class || targetType == short.class) { - return this.asNumber(value).shortValue(); + return this.asBoundedIntegral( + value, + Short.MIN_VALUE, + Short.MAX_VALUE, + "short" + ).shortValue(); } if (targetType == Integer.class || targetType == int.class) { - return this.asNumber(value).intValue(); + return this.asBoundedIntegral( + value, + Integer.MIN_VALUE, + Integer.MAX_VALUE, + "int" + ).intValue(); } if (targetType == Long.class || targetType == long.class) { - return this.asNumber(value).longValue(); + return this.asBoundedIntegral( + value, + Long.MIN_VALUE, + Long.MAX_VALUE, + "long" + ).longValue(); } if (targetType == Float.class || targetType == float.class) { - return this.asNumber(value).floatValue(); + return this.asFloat(value); } if (targetType == Double.class || targetType == double.class) { - return this.asNumber(value).doubleValue(); + return this.asDouble(value); } if (targetType == BigDecimal.class) { return this.asBigDecimal(value); } + if (targetType == byte[].class) { + return this.asBytes(value); + } + if (targetType == Date.class) { + return this.asDate(value, null); + } + if (targetType == Time.class) { + return this.asTime(value, null); + } + if (targetType == Timestamp.class) { + return this.asTimestamp(value, null); + } + if (targetType == LocalDate.class) { + final Date date = this.asDate(value, null); + return date == null ? null : date.toLocalDate(); + } + if (targetType == LocalTime.class) { + final Time time = this.asTime(value, null); + return time == null ? null : time.toLocalTime(); + } + if (targetType == LocalDateTime.class) { + final Timestamp timestamp = this.asTimestamp(value, null); + return timestamp == null ? null : timestamp.toLocalDateTime(); + } + if (targetType == Instant.class) { + final Timestamp timestamp = this.asTimestamp(value, null); + return timestamp == null ? null : timestamp.toInstant(); + } + if (targetType == URL.class) { + return this.asUrl(value); + } throw new SQLException("Cannot convert value to " + targetType.getName()); } + private Object defaultJdbcObject( + final Object value, + final ColumnInfo column + ) throws SQLException { + if (value == null) { + return null; + } + switch (column.getJdbcType()) { + case Types.DATE: + return this.asDate(value, null); + case Types.TIME: + return this.asTime(value, null); + case Types.TIMESTAMP: + return this.asTimestamp(value, null); + default: + return value; + } + } + + private BigDecimal getBigDecimal(final Object[] args) throws SQLException { + final BigDecimal value = this.asBigDecimal(this.value(args[0])); + if (value == null || args.length == 1) { + return value; + } + final int scale = (Integer) args[1]; + if (scale < 0) { + throw new SQLException("Scale must not be negative."); + } + return value.setScale(scale, RoundingMode.HALF_UP); + } + private Object value(final Object column) throws SQLException { this.ensureOpen(); + final int columnIndex = this.columnIndex(column); + final List row = this.currentRow(); + this.lastValue = row.get(columnIndex - 1); + this.columnWasRead = true; + return this.lastValue; + } + + private int columnIndex(final Object column) throws SQLException { final int columnIndex; if (column instanceof Integer) { columnIndex = (Integer) column; @@ -369,16 +541,16 @@ private Object value(final Object column) throws SQLException { throw new SQLException("Unsupported column reference: " + column); } - final List row = this.currentRow(); if (columnIndex < 1 || columnIndex > this.columns.size()) { throw new SQLException("Column index out of bounds: " + columnIndex); } - this.lastValue = columnIndex <= row.size() ? row.get(columnIndex - 1) : null; - return this.lastValue; + return columnIndex; } private List currentRow() throws SQLException { - if (this.rowIndex < 0 || this.rowIndex >= this.rows.size()) { + if (this.cursorState != CursorState.ON_ROW + || this.rowIndex < 0 + || this.rowIndex >= this.rows.size()) { throw new SQLException("ResultSet cursor is not positioned on a row."); } return this.rows.get(this.rowIndex); @@ -410,7 +582,15 @@ private void close(final ResultSet proxy) throws SQLException { failure = e; } finally { this.closed = true; - this.statement.resultSetClosed(proxy); + try { + this.statement.resultSetClosed(proxy); + } catch (SQLException e) { + if (failure == null) { + failure = e; + } else { + failure.addSuppressed(e); + } + } } if (failure != null) { @@ -418,31 +598,256 @@ private void close(final ResultSet proxy) throws SQLException { } } - private List> copyRows(final List> sourceRows) { - final List> copy = new ArrayList<>(); + private List copyColumns(final List sourceColumns) throws SQLException { + if (sourceColumns == null || sourceColumns.isEmpty()) { + throw this.protocolError("Query result did not declare any columns."); + } + final List copy = new ArrayList<>(sourceColumns.size()); + for (int index = 0; index < sourceColumns.size(); index++) { + final ColumnInfo column = sourceColumns.get(index); + if (column == null) { + throw this.protocolError("Query result column " + (index + 1) + " is null."); + } + copy.add(column); + } + return Collections.unmodifiableList(copy); + } + + private List> copyRows( + final List> sourceRows, + final String responseName + ) throws SQLException { if (sourceRows == null) { - return copy; + throw this.protocolError("Wayang JDBC server returned null rows in " + responseName + "."); } - for (List row : sourceRows) { - copy.add(new ArrayList<>(row)); + final List> copy = new ArrayList<>(); + for (int index = 0; index < sourceRows.size(); index++) { + final List row = sourceRows.get(index); + if (row == null) { + throw this.protocolError(responseName + " row " + (index + 1) + " is null."); + } + if (row.size() != this.columns.size()) { + throw this.protocolError(responseName + " row " + (index + 1) + + " has " + row.size() + " values but " + + this.columns.size() + " columns were declared."); + } + final List convertedRow = new ArrayList<>(row.size()); + for (int columnIndex = 0; columnIndex < row.size(); columnIndex++) { + convertedRow.add(this.coerceJdbcValue( + row.get(columnIndex), + this.columns.get(columnIndex) + )); + } + copy.add(convertedRow); } return copy; } + private Object coerceJdbcValue( + final Object value, + final ColumnInfo column + ) throws SQLException { + if (value == null) { + return null; + } + + try { + switch (column.getJdbcType()) { + case Types.BIT: + case Types.BOOLEAN: + return this.asBoolean(value); + case Types.TINYINT: + return this.asBigDecimal(value).byteValueExact(); + case Types.SMALLINT: + return this.asBigDecimal(value).shortValueExact(); + case Types.INTEGER: + return this.asBigDecimal(value).intValueExact(); + case Types.BIGINT: + return this.asBigDecimal(value).longValueExact(); + case Types.REAL: + return this.asNumber(value).floatValue(); + case Types.FLOAT: + case Types.DOUBLE: + return this.asNumber(value).doubleValue(); + case Types.NUMERIC: + case Types.DECIMAL: + return this.asBigDecimal(value); + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + case Types.NCHAR: + case Types.NVARCHAR: + case Types.LONGNVARCHAR: + return this.asString(value); + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: + return this.decodeBinaryValue(value); + case Types.DATE: + return this.asLocalDateValue(value); + case Types.TIME: + return this.asLocalTimeValue(value); + case Types.TIMESTAMP: + return this.asLocalDateTimeValue(value); + case Types.TIME_WITH_TIMEZONE: + return this.asOffsetTime(value); + case Types.TIMESTAMP_WITH_TIMEZONE: + return this.asOffsetDateTime(value); + default: + return value; + } + } catch (ArithmeticException e) { + throw this.protocolError( + "Value for column '" + column.getColumnLabel() + + "' is outside the declared JDBC type range." + ); + } + } + + private LocalDate asLocalDateValue(final Object value) throws SQLException { + if (value instanceof LocalDate) { + return (LocalDate) value; + } + if (value instanceof Date) { + return ((Date) value).toLocalDate(); + } + if (value instanceof Number) { + try { + return LocalDate.ofEpochDay(((Number) value).longValue()); + } catch (RuntimeException e) { + throw new SQLException("Cannot convert value to LocalDate: " + value, e); + } + } + try { + final String text = String.valueOf(value).trim(); + final int timeSeparator = text.indexOf(' '); + final int isoSeparator = text.indexOf('T'); + final int separator = timeSeparator >= 0 ? timeSeparator : isoSeparator; + return LocalDate.parse(separator >= 0 ? text.substring(0, separator) : text); + } catch (RuntimeException e) { + throw new SQLException("Cannot convert value to LocalDate: " + value, e); + } + } + + private LocalTime asLocalTimeValue(final Object value) throws SQLException { + if (value instanceof LocalTime) { + return (LocalTime) value; + } + if (value instanceof Time) { + return ((Time) value).toLocalTime(); + } + if (value instanceof Number) { + final long millis = ((Number) value).longValue(); + if (millis < 0L || millis >= 86_400_000L) { + throw new SQLException("TIME value is outside one day: " + value); + } + return LocalTime.ofNanoOfDay(millis * 1_000_000L); + } + try { + String text = String.valueOf(value).trim(); + final int dateSeparator = text.indexOf('T'); + if (dateSeparator >= 0) { + text = text.substring(dateSeparator + 1); + } else if (text.indexOf(' ') >= 0) { + text = text.substring(text.indexOf(' ') + 1); + } + return LocalTime.parse(text); + } catch (RuntimeException e) { + throw new SQLException("Cannot convert value to LocalTime: " + value, e); + } + } + + private LocalDateTime asLocalDateTimeValue(final Object value) throws SQLException { + if (value instanceof LocalDateTime) { + return (LocalDateTime) value; + } + if (value instanceof Timestamp) { + return ((Timestamp) value).toLocalDateTime(); + } + if (value instanceof Number) { + return LocalDateTime.ofInstant( + Instant.ofEpochMilli(((Number) value).longValue()), + ZoneOffset.UTC + ); + } + try { + final String text = String.valueOf(value).trim(); + try { + return LocalDateTime.parse(text.replace(' ', 'T')); + } catch (RuntimeException ignored) { + return LocalDateTime.ofInstant(Instant.parse(text), ZoneOffset.UTC); + } + } catch (RuntimeException e) { + throw new SQLException("Cannot convert value to LocalDateTime: " + value, e); + } + } + + private byte[] decodeBinaryValue(final Object value) throws SQLException { + if (value instanceof byte[]) { + return ((byte[]) value).clone(); + } + if (value instanceof String) { + try { + return Base64.getDecoder().decode((String) value); + } catch (IllegalArgumentException e) { + throw this.protocolError("Binary result value is not valid Base64 text."); + } + } + throw this.protocolError("Binary result value has an unsupported wire representation."); + } + + private OffsetTime asOffsetTime(final Object value) throws SQLException { + if (value instanceof OffsetTime) { + return (OffsetTime) value; + } + try { + return OffsetTime.parse(String.valueOf(value).trim()); + } catch (RuntimeException e) { + throw new SQLException("Cannot convert value to OffsetTime: " + value, e); + } + } + + private OffsetDateTime asOffsetDateTime(final Object value) throws SQLException { + if (value instanceof OffsetDateTime) { + return (OffsetDateTime) value; + } + if (value instanceof Instant) { + return ((Instant) value).atOffset(java.time.ZoneOffset.UTC); + } + try { + final String text = String.valueOf(value).trim(); + try { + return OffsetDateTime.parse(text); + } catch (RuntimeException ignored) { + return Instant.parse(text).atOffset(java.time.ZoneOffset.UTC); + } + } catch (RuntimeException e) { + throw new SQLException("Cannot convert value to OffsetDateTime: " + value, e); + } + } + private boolean reachedMaxRows() { return this.maxRows > 0 && this.rowNumber >= this.maxRows; } private void closeCursorIfOpen() throws SQLException { if (this.cursorId != null) { - this.client.closeCursor(this.statement.getStatementId(), this.cursorId); + if (!this.client.isClosed()) { + this.client.closeCursor(this.statement.getStatementId(), this.cursorId); + } this.cursorId = null; this.hasMoreRows = false; } } private String asString(final Object value) { - return value == null ? null : String.valueOf(value); + if (value == null) { + return null; + } + if (value instanceof byte[]) { + return new String((byte[]) value, StandardCharsets.UTF_8); + } + return String.valueOf(value); } private Boolean asBoolean(final Object value) throws SQLException { @@ -462,7 +867,11 @@ private Boolean asBoolean(final Object value) throws SQLException { if ("false".equals(text) || "0".equals(text)) { return false; } - throw new SQLException("Cannot convert value to boolean: " + value); + try { + return new BigDecimal(text).compareTo(BigDecimal.ZERO) != 0; + } catch (NumberFormatException e) { + throw new SQLException("Cannot convert value to boolean: " + value, e); + } } private Number asNumber(final Object value) throws SQLException { @@ -495,68 +904,240 @@ private BigDecimal asBigDecimal(final Object value) throws SQLException { throw new SQLException("Cannot convert value to BigDecimal: " + value); } + private BigDecimal asBoundedIntegral( + final Object value, + final long minimum, + final long maximum, + final String targetName + ) throws SQLException { + final BigDecimal decimal = this.asBigDecimal(value); + if (decimal == null) { + return BigDecimal.ZERO; + } + if (decimal.compareTo(BigDecimal.valueOf(minimum)) < 0 + || decimal.compareTo(BigDecimal.valueOf(maximum)) > 0) { + throw new SQLException("Numeric value is outside the " + targetName + " range: " + value); + } + return decimal; + } + + private float asFloat(final Object value) throws SQLException { + if (value == null) { + return 0F; + } + final float converted = this.asNumber(value).floatValue(); + if (!Float.isFinite(converted)) { + throw new SQLException("Numeric value is outside the float range: " + value); + } + return converted; + } + + private double asDouble(final Object value) throws SQLException { + if (value == null) { + return 0D; + } + final double converted = this.asNumber(value).doubleValue(); + if (!Double.isFinite(converted)) { + throw new SQLException("Numeric value is outside the double range: " + value); + } + return converted; + } + private byte[] asBytes(final Object value) throws SQLException { if (value == null) { return null; } if (value instanceof byte[]) { - return (byte[]) value; + return ((byte[]) value).clone(); } return String.valueOf(value).getBytes(StandardCharsets.UTF_8); } + private java.io.InputStream asAsciiStream(final Object value) { + final String text = this.asString(value); + return text == null + ? null + : new java.io.ByteArrayInputStream(text.getBytes(StandardCharsets.US_ASCII)); + } + private java.io.InputStream asBinaryStream(final Object value) throws SQLException { final byte[] bytes = this.asBytes(value); return bytes == null ? null : new java.io.ByteArrayInputStream(bytes); } + private java.io.InputStream asUnicodeStream(final Object value) { + final String text = this.asString(value); + return text == null + ? null + : new java.io.ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8)); + } + private java.io.Reader asCharacterStream(final Object value) { final String text = this.asString(value); return text == null ? null : new java.io.StringReader(text); } - private Date asDate(final Object value) throws SQLException { + private Date asDate(final Object value, final Calendar calendar) throws SQLException { if (value == null) { return null; } if (value instanceof Date) { - return (Date) value; + return new Date(((Date) value).getTime()); + } + if (value instanceof LocalDate) { + return this.dateFromLocalDate((LocalDate) value, calendar); + } + if (value instanceof LocalDateTime) { + return this.dateFromLocalDate(((LocalDateTime) value).toLocalDate(), calendar); + } + if (value instanceof java.util.Date) { + return new Date(((java.util.Date) value).getTime()); + } + if (value instanceof Number) { + final long numericValue = ((Number) value).longValue(); + if (Math.abs(numericValue) < 10_000_000L) { + return this.dateFromLocalDate(LocalDate.ofEpochDay(numericValue), calendar); + } + return new Date(numericValue); } try { - return Date.valueOf(String.valueOf(value)); - } catch (IllegalArgumentException e) { + final String text = String.valueOf(value).trim(); + final int timeSeparator = text.indexOf(' '); + final int isoSeparator = text.indexOf('T'); + final int separator = timeSeparator >= 0 ? timeSeparator : isoSeparator; + return this.dateFromLocalDate( + LocalDate.parse(separator >= 0 ? text.substring(0, separator) : text), + calendar + ); + } catch (RuntimeException e) { throw new SQLException("Cannot convert value to Date: " + value, e); } } - private Time asTime(final Object value) throws SQLException { + private Time asTime(final Object value, final Calendar calendar) throws SQLException { if (value == null) { return null; } if (value instanceof Time) { - return (Time) value; + return new Time(((Time) value).getTime()); + } + if (value instanceof LocalTime) { + return this.timeFromLocalTime((LocalTime) value, calendar); + } + if (value instanceof OffsetTime) { + return this.timeFromLocalTime(((OffsetTime) value).toLocalTime(), calendar); + } + if (value instanceof LocalDateTime) { + return this.timeFromLocalTime(((LocalDateTime) value).toLocalTime(), calendar); + } + if (value instanceof java.util.Date) { + return new Time(((java.util.Date) value).getTime()); + } + if (value instanceof Number) { + return new Time(((Number) value).longValue()); } try { - return Time.valueOf(String.valueOf(value)); - } catch (IllegalArgumentException e) { + String text = String.valueOf(value).trim(); + final int dateSeparator = text.indexOf('T'); + if (dateSeparator >= 0) { + text = text.substring(dateSeparator + 1); + } else if (text.indexOf(' ') >= 0) { + text = text.substring(text.indexOf(' ') + 1); + } + return this.timeFromLocalTime(LocalTime.parse(text), calendar); + } catch (RuntimeException e) { throw new SQLException("Cannot convert value to Time: " + value, e); } } - private Timestamp asTimestamp(final Object value) throws SQLException { + private Timestamp asTimestamp(final Object value, final Calendar calendar) throws SQLException { if (value == null) { return null; } if (value instanceof Timestamp) { - return (Timestamp) value; + final Timestamp timestamp = new Timestamp(((Timestamp) value).getTime()); + timestamp.setNanos(((Timestamp) value).getNanos()); + return timestamp; + } + if (value instanceof LocalDateTime) { + return this.timestampFromLocalDateTime((LocalDateTime) value, calendar); + } + if (value instanceof LocalDate) { + return this.timestampFromLocalDateTime( + ((LocalDate) value).atStartOfDay(), + calendar + ); + } + if (value instanceof OffsetDateTime) { + return Timestamp.from(((OffsetDateTime) value).toInstant()); + } + if (value instanceof Instant) { + return Timestamp.from((Instant) value); + } + if (value instanceof java.util.Date) { + return new Timestamp(((java.util.Date) value).getTime()); + } + if (value instanceof Number) { + return new Timestamp(((Number) value).longValue()); } try { - return Timestamp.valueOf(String.valueOf(value)); - } catch (IllegalArgumentException e) { + final String text = String.valueOf(value).trim(); + try { + return Timestamp.from(Instant.parse(text)); + } catch (RuntimeException ignored) { + return this.timestampFromLocalDateTime( + LocalDateTime.parse(text.replace(' ', 'T')), + calendar + ); + } + } catch (RuntimeException e) { throw new SQLException("Cannot convert value to Timestamp: " + value, e); } } + private Date dateFromLocalDate(final LocalDate value, final Calendar calendar) { + if (calendar == null) { + return Date.valueOf(value); + } + final Calendar copy = (Calendar) calendar.clone(); + copy.clear(); + copy.set(value.getYear(), value.getMonthValue() - 1, value.getDayOfMonth()); + return new Date(copy.getTimeInMillis()); + } + + private Time timeFromLocalTime(final LocalTime value, final Calendar calendar) { + if (calendar == null) { + return Time.valueOf(value); + } + final Calendar copy = (Calendar) calendar.clone(); + copy.clear(); + copy.set(1970, Calendar.JANUARY, 1, value.getHour(), value.getMinute(), value.getSecond()); + copy.set(Calendar.MILLISECOND, value.getNano() / 1_000_000); + return new Time(copy.getTimeInMillis()); + } + + private Timestamp timestampFromLocalDateTime( + final LocalDateTime value, + final Calendar calendar + ) { + if (calendar == null) { + return Timestamp.valueOf(value); + } + final Calendar copy = (Calendar) calendar.clone(); + copy.clear(); + copy.set( + value.getYear(), + value.getMonthValue() - 1, + value.getDayOfMonth(), + value.getHour(), + value.getMinute(), + value.getSecond() + ); + final Timestamp timestamp = new Timestamp(copy.getTimeInMillis()); + timestamp.setNanos(value.getNano()); + return timestamp; + } + private URL asUrl(final Object value) throws SQLException { if (value == null) { return null; @@ -576,19 +1157,121 @@ private Object unsupportedValue(final String message) throws SQLFeatureNotSuppor } private Object unwrap(final Object proxy, final Class iface) throws SQLException { + if (iface == null) { + throw new SQLException("Wrapper interface must not be null."); + } if (iface.isInstance(proxy)) { return iface.cast(proxy); } throw new SQLException("ResultSet does not wrap " + iface.getName()); } + private boolean isWrapperFor(final Object proxy, final Class iface) throws SQLException { + if (iface == null) { + throw new SQLException("Wrapper interface must not be null."); + } + return iface.isInstance(proxy); + } + private void ensureOpen() throws SQLException { - if (this.closed) { + if (this.isEffectivelyClosed()) { throw new SQLException("Wayang JDBC result set is closed.", "24000"); } } + private boolean isEffectivelyClosed() { + return this.closed || this.statement.isClosed(); + } + + private Calendar calendarArg(final Object[] args) throws SQLException { + if (args.length == 1) { + return null; + } + if (!(args[1] instanceof Calendar)) { + throw new SQLException("Calendar must not be null."); + } + return (Calendar) args[1]; + } + + private void setFetchSize(final int fetchSize) throws SQLException { + if (fetchSize < 0) { + throw new SQLException("Fetch size must not be negative."); + } + if (this.maxRows > 0 && fetchSize > this.maxRows) { + throw new SQLException("Fetch size must not exceed the maximum row limit."); + } + this.fetchSize = fetchSize; + } + + private void validateFetchDirection(final int direction) throws SQLException { + if (direction != ResultSet.FETCH_FORWARD + && direction != ResultSet.FETCH_REVERSE + && direction != ResultSet.FETCH_UNKNOWN) { + throw new SQLException("Invalid fetch direction: " + direction); + } + } + + private void validateInitialResponse(final QueryResultResponse response) throws SQLException { + if (response == null) { + throw this.protocolError("Wayang JDBC server returned a null query response."); + } + if (!this.client.getConnectionId().equals(response.getConnectionId())) { + throw this.protocolError("Query response connection id does not match the open connection."); + } + if (!this.statement.getStatementId().equals(response.getStatementId())) { + throw this.protocolError("Query response statement id does not match the executing statement."); + } + final String responseCursorId = this.normalizeCursorId(response.getCursorId()); + if (response.isHasMoreRows() && responseCursorId == null) { + throw this.protocolError("Query response reported more rows without a cursor id."); + } + if (!response.isHasMoreRows() && responseCursorId != null) { + throw this.protocolError("Query response returned a cursor id without more rows."); + } + if (response.isHasMoreRows() + && response.getRows() != null + && response.getRows().isEmpty()) { + throw this.protocolError("Query response reported more rows but returned an empty first batch."); + } + if (this.fetchSize < 0 || this.maxRows < 0) { + throw new SQLException("Fetch size and maximum rows must not be negative."); + } + } + + private String normalizeCursorId(final String value) { + return value == null || value.isBlank() ? null : value; + } + + private void closeCursorAfterProtocolFailure(final SQLException failure) { + try { + this.closeCursorIfOpen(); + } catch (SQLException closeException) { + failure.addSuppressed(closeException); + } + } + + private boolean isWriteMethod(final String methodName) { + return methodName.startsWith("update") + || "insertRow".equals(methodName) + || "deleteRow".equals(methodName) + || "refreshRow".equals(methodName) + || "cancelRowUpdates".equals(methodName) + || "moveToInsertRow".equals(methodName) + || "moveToCurrentRow".equals(methodName); + } + + private SQLException protocolError(final String message) { + return new SQLException(message, "08S01"); + } + private SQLFeatureNotSupportedException unsupported(final String message) { return new SQLFeatureNotSupportedException(message, "0A000"); } + + private enum CursorState { + BEFORE_FIRST, + ON_ROW, + AFTER_LAST, + EMPTY + } } diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java index 7517ecbbc..1da712cb2 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java @@ -45,8 +45,19 @@ public boolean isAutoIncrement(final int column) throws SQLException { @Override public boolean isCaseSensitive(final int column) throws SQLException { - this.column(column); - return true; + switch (this.column(column).getJdbcType()) { + case Types.CHAR: + case Types.CLOB: + case Types.LONGNVARCHAR: + case Types.LONGVARCHAR: + case Types.NCHAR: + case Types.NCLOB: + case Types.NVARCHAR: + case Types.VARCHAR: + return true; + default: + return false; + } } @Override @@ -109,12 +120,12 @@ public String getSchemaName(final int column) throws SQLException { @Override public int getPrecision(final int column) throws SQLException { - return this.column(column).getPrecision(); + return Math.max(0, this.column(column).getPrecision()); } @Override public int getScale(final int column) throws SQLException { - return this.column(column).getScale(); + return Math.max(0, this.column(column).getScale()); } @Override @@ -166,6 +177,21 @@ public String getColumnClassName(final int column) throws SQLException { case Types.BIT: case Types.BOOLEAN: return Boolean.class.getName(); + case Types.BINARY: + case Types.LONGVARBINARY: + case Types.VARBINARY: + return byte[].class.getName(); + case Types.BLOB: + return java.sql.Blob.class.getName(); + case Types.CHAR: + case Types.CLOB: + case Types.LONGNVARCHAR: + case Types.LONGVARCHAR: + case Types.NCHAR: + case Types.NCLOB: + case Types.NVARCHAR: + case Types.VARCHAR: + return String.class.getName(); case Types.DATE: return java.sql.Date.class.getName(); case Types.DECIMAL: @@ -182,10 +208,30 @@ public String getColumnClassName(final int column) throws SQLException { return Short.class.getName(); case Types.TIME: return java.sql.Time.class.getName(); + case Types.TIME_WITH_TIMEZONE: + return java.time.OffsetTime.class.getName(); case Types.TIMESTAMP: return java.sql.Timestamp.class.getName(); + case Types.TIMESTAMP_WITH_TIMEZONE: + return java.time.OffsetDateTime.class.getName(); case Types.TINYINT: return Byte.class.getName(); + case Types.ARRAY: + return java.sql.Array.class.getName(); + case Types.DATALINK: + return java.net.URL.class.getName(); + case Types.REF: + return java.sql.Ref.class.getName(); + case Types.ROWID: + return java.sql.RowId.class.getName(); + case Types.SQLXML: + return java.sql.SQLXML.class.getName(); + case Types.STRUCT: + return java.sql.Struct.class.getName(); + case Types.JAVA_OBJECT: + case Types.NULL: + case Types.OTHER: + return Object.class.getName(); default: return String.class.getName(); } @@ -193,6 +239,9 @@ public String getColumnClassName(final int column) throws SQLException { @Override public T unwrap(final Class iface) throws SQLException { + if (iface == null) { + throw new SQLException("Interface must not be null.", "HY009"); + } if (iface.isInstance(this)) { return iface.cast(this); } @@ -200,7 +249,10 @@ public T unwrap(final Class iface) throws SQLException { } @Override - public boolean isWrapperFor(final Class iface) { + public boolean isWrapperFor(final Class iface) throws SQLException { + if (iface == null) { + throw new SQLException("Interface must not be null.", "HY009"); + } return iface.isInstance(this); } diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java index a33c37a4b..59f1a4e8b 100644 --- a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java +++ b/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java @@ -17,7 +17,6 @@ package org.apache.wayang.jdbc.driver; -import org.apache.wayang.jdbc.protocol.message.CancelQueryResponse; import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; import java.sql.Connection; @@ -40,18 +39,14 @@ class WayangStatement implements Statement { private int maxRows; - private int queryTimeout; - private boolean poolable; private boolean closeOnCompletion; - private boolean closed; + private volatile boolean closed; private ResultSet currentResultSet; - private String currentCursorId; - WayangStatement( final WayangConnection connection, final WayangJdbcClient client @@ -75,10 +70,21 @@ String getStatementId() { public ResultSet executeQuery(final String sql) throws SQLException { this.ensureOpen(); this.closeCurrentResultSet(); + this.ensureOpen(); final QueryResultResponse response = this.client.executeQuery(this.statementId, sql, this.fetchSize); - this.currentCursorId = response.getCursorId(); - this.currentResultSet = WayangResultSet.create(this, this.client, response, this.fetchSize, this.maxRows); + try { + this.currentResultSet = WayangResultSet.create( + this, + this.client, + response, + this.fetchSize, + this.maxRows + ); + } catch (SQLException e) { + this.closeResponseCursor(response, e); + throw e; + } return this.currentResultSet; } @@ -93,10 +99,17 @@ public void close() throws SQLException { if (this.closed) { return; } + this.closed = true; + SQLException failure = null; try { this.closeCurrentResultSet(); + } catch (SQLException e) { + failure = e; } finally { - this.closed = true; + this.connection.statementClosed(this); + } + if (failure != null) { + throw failure; } } @@ -135,12 +148,15 @@ public void setMaxRows(final int max) throws SQLException { @Override public void setEscapeProcessing(final boolean enable) throws SQLException { this.ensureOpen(); + if (enable) { + throw this.unsupported("JDBC escape processing is not supported."); + } } @Override public int getQueryTimeout() throws SQLException { this.ensureOpen(); - return this.queryTimeout; + return 0; } @Override @@ -149,18 +165,15 @@ public void setQueryTimeout(final int seconds) throws SQLException { if (seconds < 0) { throw new SQLException("Query timeout must not be negative."); } - this.queryTimeout = seconds; + if (seconds > 0) { + throw this.unsupported("Query timeouts are not supported."); + } } @Override public void cancel() throws SQLException { this.ensureOpen(); - if (this.currentCursorId != null) { - final CancelQueryResponse response = this.client.cancelQuery(this.statementId, this.currentCursorId); - if (response.isCancelled()) { - this.currentCursorId = null; - } - } + throw this.unsupported("Query cancellation is not supported."); } @Override @@ -213,6 +226,11 @@ public boolean getMoreResults(final int current) throws SQLException { @Override public void setFetchDirection(final int direction) throws SQLException { this.ensureOpen(); + if (direction != ResultSet.FETCH_FORWARD + && direction != ResultSet.FETCH_REVERSE + && direction != ResultSet.FETCH_UNKNOWN) { + throw new SQLException("Invalid fetch direction: " + direction); + } if (direction != ResultSet.FETCH_FORWARD) { throw this.unsupported("Wayang JDBC supports only forward fetch direction."); } @@ -230,6 +248,9 @@ public void setFetchSize(final int rows) throws SQLException { if (rows < 0) { throw new SQLException("Fetch size must not be negative."); } + if (this.maxRows > 0 && rows > this.maxRows) { + throw new SQLException("Fetch size must not exceed the maximum row limit."); + } this.fetchSize = rows; } @@ -294,46 +315,61 @@ public boolean isCloseOnCompletion() throws SQLException { @Override public ResultSet getGeneratedKeys() throws SQLException { + this.ensureOpen(); throw this.unsupported("Generated keys are not supported."); } @Override public int executeUpdate(final String sql) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public int executeUpdate(final String sql, final int autoGeneratedKeys) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public int executeUpdate(final String sql, final int[] columnIndexes) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public int executeUpdate(final String sql, final String[] columnNames) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public boolean execute(final String sql, final int autoGeneratedKeys) throws SQLException { - throw this.unsupported("Generated keys are not supported."); + this.ensureOpen(); + if (autoGeneratedKeys == Statement.NO_GENERATED_KEYS) { + return this.execute(sql); + } + if (autoGeneratedKeys == Statement.RETURN_GENERATED_KEYS) { + throw this.unsupported("Generated keys are not supported."); + } + throw new SQLException("Invalid auto-generated keys option: " + autoGeneratedKeys); } @Override public boolean execute(final String sql, final int[] columnIndexes) throws SQLException { + this.ensureOpen(); throw this.unsupported("Generated keys are not supported."); } @Override public boolean execute(final String sql, final String[] columnNames) throws SQLException { + this.ensureOpen(); throw this.unsupported("Generated keys are not supported."); } @Override public void addBatch(final String sql) throws SQLException { + this.ensureOpen(); throw this.unsupported("Batch execution is not supported."); } @@ -344,6 +380,7 @@ public void clearBatch() throws SQLException { @Override public int[] executeBatch() throws SQLException { + this.ensureOpen(); throw this.unsupported("Batch execution is not supported."); } @@ -370,31 +407,40 @@ public long getLargeMaxRows() throws SQLException { @Override public long[] executeLargeBatch() throws SQLException { + this.ensureOpen(); throw this.unsupported("Batch execution is not supported."); } @Override public long executeLargeUpdate(final String sql) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public long executeLargeUpdate(final String sql, final int autoGeneratedKeys) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public long executeLargeUpdate(final String sql, final int[] columnIndexes) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public long executeLargeUpdate(final String sql, final String[] columnNames) throws SQLException { + this.ensureOpen(); throw this.unsupported("Wayang JDBC is read-only and does not support updates."); } @Override public T unwrap(final Class iface) throws SQLException { + this.ensureOpen(); + if (iface == null) { + throw new SQLException("Wrapper interface must not be null."); + } if (iface.isInstance(this)) { return iface.cast(this); } @@ -402,14 +448,17 @@ public T unwrap(final Class iface) throws SQLException { } @Override - public boolean isWrapperFor(final Class iface) { + public boolean isWrapperFor(final Class iface) throws SQLException { + this.ensureOpen(); + if (iface == null) { + throw new SQLException("Wrapper interface must not be null."); + } return iface.isInstance(this); } void resultSetClosed(final ResultSet resultSet) throws SQLException { if (this.currentResultSet == resultSet) { this.currentResultSet = null; - this.currentCursorId = null; if (this.closeOnCompletion && !this.closed) { this.close(); } @@ -417,11 +466,28 @@ void resultSetClosed(final ResultSet resultSet) throws SQLException { } private void closeCurrentResultSet() throws SQLException { - if (this.currentResultSet != null && !this.currentResultSet.isClosed()) { - this.currentResultSet.close(); + final ResultSet resultSet = this.currentResultSet; + if (resultSet != null) { + resultSet.close(); } this.currentResultSet = null; - this.currentCursorId = null; + } + + private void closeResponseCursor( + final QueryResultResponse response, + final SQLException failure + ) { + if (response == null + || response.getCursorId() == null + || response.getCursorId().isBlank() + || this.client.isClosed()) { + return; + } + try { + this.client.closeCursor(this.statementId, response.getCursorId()); + } catch (SQLException closeException) { + failure.addSuppressed(closeException); + } } private void ensureOpen() throws SQLException { diff --git a/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java b/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java new file mode 100644 index 000000000..02eea8702 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java @@ -0,0 +1,281 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.MessageType; +import org.apache.wayang.jdbc.protocol.io.ProtocolMessageCodec; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.ErrorCode; +import org.apache.wayang.jdbc.protocol.message.ErrorResponse; +import org.apache.wayang.jdbc.protocol.message.ExecuteQueryRequest; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.PingResponse; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.Types; +import java.util.Collections; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.atomic.AtomicReference; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class WayangJdbcClientProtocolTest { + + @Test + void mismatchedResponseRequestIdMarksClientClosed() throws Exception { + try (ScriptedServer server = new ScriptedServer(exchange -> { + if (exchange.request.getType() == MessageType.OPEN_CONNECTION) { + exchange.respond(MessageType.OPEN_CONNECTION_OK, openConnectionResponse()); + } else if (exchange.request.getType() == MessageType.EXECUTE_QUERY) { + final ExecuteQueryRequest request = exchange.payloadAs(ExecuteQueryRequest.class); + exchange.respond( + "different-request-id", + MessageType.QUERY_RESULT, + queryResultResponse(request.getConnectionId(), request.getStatementId()) + ); + } + }); + WayangJdbcClient client = new WayangJdbcClient(jdbcUrl(server))) { + + final SQLException exception = assertThrows( + SQLException.class, + () -> client.executeQuery("statement-1", "SELECT 1", 1) + ); + + assertEquals("08S01", exception.getSQLState()); + assertTrue(client.isClosed()); + } + } + + @Test + void unsupportedServerErrorBecomesFeatureNotSupportedAndKeepsSocketUsable() throws Exception { + try (ScriptedServer server = new ScriptedServer(exchange -> { + if (exchange.request.getType() == MessageType.OPEN_CONNECTION) { + exchange.respond(MessageType.OPEN_CONNECTION_OK, openConnectionResponse()); + } else if (exchange.request.getType() == MessageType.EXECUTE_QUERY) { + exchange.respond( + MessageType.ERROR, + new ErrorResponse( + ErrorCode.UNSUPPORTED_OPERATION, + "0A000", + 1003, + "Wayang JDBC is read-only.", + null, + null + ) + ); + } else if (exchange.request.getType() == MessageType.PING) { + exchange.respond(MessageType.PING_OK, new PingResponse("connection-1")); + } else if (exchange.request.getType() == MessageType.CLOSE_CONNECTION) { + final CloseConnectionRequest request = exchange.payloadAs(CloseConnectionRequest.class); + exchange.respond( + MessageType.CLOSE_CONNECTION_OK, + new CloseConnectionResponse(request.getConnectionId()) + ); + } + }); + WayangJdbcClient client = new WayangJdbcClient(jdbcUrl(server))) { + + final SQLFeatureNotSupportedException exception = assertThrows( + SQLFeatureNotSupportedException.class, + () -> client.executeQuery("statement-1", "INSERT INTO t VALUES (1)", 1) + ); + + assertEquals("0A000", exception.getSQLState()); + assertFalse(client.isClosed()); + assertTrue(client.ping(1)); + } + } + + @Test + void serverEofMarksClientClosed() throws Exception { + try (ScriptedServer server = new ScriptedServer(exchange -> { + if (exchange.request.getType() == MessageType.OPEN_CONNECTION) { + exchange.respond(MessageType.OPEN_CONNECTION_OK, openConnectionResponse()); + } else if (exchange.request.getType() == MessageType.PING) { + exchange.closeSocket(); + } + }); + WayangJdbcClient client = new WayangJdbcClient(jdbcUrl(server))) { + + final SQLException exception = assertThrows(SQLException.class, () -> client.ping(1)); + + assertEquals("08006", exception.getSQLState()); + assertTrue(client.isClosed()); + } + } + + private static WayangJdbcUrl jdbcUrl(final ScriptedServer server) throws SQLException { + final Properties properties = new Properties(); + properties.setProperty("connectTimeout", "2000"); + return WayangJdbcUrl.parse("jdbc:wayang://127.0.0.1:" + server.getPort() + "/analytics", properties); + } + + private static OpenConnectionResponse openConnectionResponse() { + return new OpenConnectionResponse( + "connection-1", + "test-server", + Collections.emptyMap() + ); + } + + private static QueryResultResponse queryResultResponse( + final String connectionId, + final String statementId + ) { + return new QueryResultResponse( + connectionId, + statementId, + List.of(new ColumnInfo( + "VALUE", + "VALUE", + null, + null, + "INTEGER", + Types.INTEGER, + ResultSetMetaData.columnNoNulls, + 10, + 0 + )), + List.of(Collections.singletonList(1)), + false, + null + ); + } + + private interface RequestHandler { + + void handle(Exchange exchange) throws Exception; + } + + private static class ScriptedServer implements AutoCloseable { + + private final ProtocolMessageCodec codec = new ProtocolMessageCodec(); + + private final ServerSocket serverSocket; + + private final RequestHandler handler; + + private final AtomicReference failure = new AtomicReference<>(); + + private final Thread thread; + + ScriptedServer(final RequestHandler handler) throws IOException { + this.handler = handler; + this.serverSocket = new ServerSocket(0); + this.thread = new Thread(this::run, "wayang-jdbc-client-protocol-test"); + this.thread.start(); + } + + int getPort() { + return this.serverSocket.getLocalPort(); + } + + private void run() { + try (Socket socket = this.serverSocket.accept()) { + while (!socket.isClosed()) { + final MessageEnvelope request = this.codec.read(socket.getInputStream()); + if (request == null) { + return; + } + this.handler.handle(new Exchange(this.codec, socket, request)); + } + } catch (SocketException e) { + if (!this.serverSocket.isClosed()) { + this.failure.compareAndSet(null, e); + } + } catch (Throwable t) { + this.failure.compareAndSet(null, t); + } + } + + @Override + public void close() throws Exception { + this.serverSocket.close(); + this.thread.join(5000L); + if (this.thread.isAlive()) { + throw new AssertionError("Scripted JDBC test server did not stop."); + } + final Throwable serverFailure = this.failure.get(); + if (serverFailure != null) { + throw new AssertionError("Scripted JDBC test server failed.", serverFailure); + } + } + } + + private static class Exchange { + + private final ProtocolMessageCodec codec; + + private final Socket socket; + + private final MessageEnvelope request; + + Exchange( + final ProtocolMessageCodec codec, + final Socket socket, + final MessageEnvelope request + ) { + this.codec = codec; + this.socket = socket; + this.request = request; + } + + T payloadAs(final Class payloadClass) throws Exception { + return this.codec.payloadAs(this.request, payloadClass); + } + + void respond( + final MessageType responseType, + final Object payload + ) throws IOException { + this.respond(this.request.getRequestId(), responseType, payload); + } + + void respond( + final String requestId, + final MessageType responseType, + final Object payload + ) throws IOException { + this.codec.write( + this.socket.getOutputStream(), + this.codec.toEnvelope(requestId, responseType, payload) + ); + } + + void closeSocket() throws IOException { + this.socket.close(); + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java b/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java new file mode 100644 index 000000000..278fed564 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.driver; + +import org.apache.wayang.jdbc.protocol.ProtocolConstants; + +import org.junit.jupiter.api.Test; + +import java.sql.SQLException; +import java.util.Properties; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class WayangJdbcUrlTest { + + @Test + void parsesHostPortDatabaseAndProperties() throws Exception { + final Properties properties = new Properties(); + properties.setProperty("user", "property-user"); + properties.setProperty("connectTimeout", "1000"); + + final WayangJdbcUrl url = WayangJdbcUrl.parse( + "jdbc:wayang://localhost:9998/sales%20data?user=url-user&password=s3cret", + properties + ); + + assertEquals("localhost", url.getHost()); + assertEquals(9998, url.getPort()); + assertEquals("sales data", url.getDatabase()); + assertEquals("url-user", url.getProperties().getProperty("user")); + assertEquals("s3cret", url.getProperties().getProperty("password")); + assertEquals("1000", url.getProperties().getProperty("connectTimeout")); + } + + @Test + void usesDefaultPortAndOptionalDatabase() throws Exception { + final WayangJdbcUrl url = WayangJdbcUrl.parse("jdbc:wayang://127.0.0.1", null); + + assertEquals("127.0.0.1", url.getHost()); + assertEquals(ProtocolConstants.DEFAULT_PORT, url.getPort()); + assertNull(url.getDatabase()); + } + + @Test + void acceptsOnlyWayangJdbcUrls() { + assertTrue(WayangJdbcUrl.accepts("jdbc:wayang://localhost:9999/db")); + assertFalse(WayangJdbcUrl.accepts("jdbc:postgresql://localhost/db")); + assertFalse(WayangJdbcUrl.accepts(null)); + } + + @Test + void rejectsInvalidUrls() { + assertThrows(SQLException.class, () -> WayangJdbcUrl.parse("jdbc:wayang://", null)); + assertThrows(SQLException.class, () -> WayangJdbcUrl.parse("jdbc:wayang://localhost:0/db", null)); + assertThrows(SQLException.class, () -> WayangJdbcUrl.parse("jdbc:wayang://localhost/db/extra", null)); + assertThrows(SQLException.class, () -> WayangJdbcUrl.parse("jdbc:wayang://localhost/db?=value", null)); + assertThrows(SQLException.class, () -> WayangJdbcUrl.parse("jdbc:wayang://localhost/db%2Fextra", null)); + assertThrows(SQLException.class, () -> WayangJdbcUrl.parse("jdbc:wayang://user@localhost/db", null)); + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java index 23904c2f2..1e9354cfa 100644 --- a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/MessageType.java @@ -23,6 +23,8 @@ public enum MessageType { OPEN_CONNECTION, OPEN_CONNECTION_OK, + PING, + PING_OK, EXECUTE_QUERY, QUERY_RESULT, FETCH, diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java index 90f4b45fa..eaf009b23 100644 --- a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodec.java @@ -23,6 +23,7 @@ import org.apache.wayang.jdbc.protocol.ProtocolException; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -43,11 +44,11 @@ public class ProtocolMessageCodec { private final int maxFrameLength; public ProtocolMessageCodec() { - this(new ObjectMapper(), ProtocolConstants.DEFAULT_MAX_FRAME_LENGTH); + this(createDefaultObjectMapper(), ProtocolConstants.DEFAULT_MAX_FRAME_LENGTH); } public ProtocolMessageCodec(final int maxFrameLength) { - this(new ObjectMapper(), maxFrameLength); + this(createDefaultObjectMapper(), maxFrameLength); } public ProtocolMessageCodec(final ObjectMapper objectMapper, final int maxFrameLength) { @@ -61,6 +62,11 @@ public ProtocolMessageCodec(final ObjectMapper objectMapper, final int maxFrameL this.maxFrameLength = maxFrameLength; } + private static ObjectMapper createDefaultObjectMapper() { + return new ObjectMapper() + .enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + } + public MessageEnvelope toEnvelope( final String requestId, final MessageType type, diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingRequest.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingRequest.java new file mode 100644 index 000000000..12d436271 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingRequest.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Checks that a logical JDBC connection is still active on the server. + */ +public class PingRequest { + + private String connectionId; + + public PingRequest() { + } + + public PingRequest(final String connectionId) { + this.connectionId = connectionId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingResponse.java b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingResponse.java new file mode 100644 index 000000000..b3f70b631 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/main/java/org/apache/wayang/jdbc/protocol/message/PingResponse.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.message; + +/** + * Confirms that a logical JDBC connection is active on the server. + */ +public class PingResponse { + + private String connectionId; + + public PingResponse() { + } + + public PingResponse(final String connectionId) { + this.connectionId = connectionId; + } + + public String getConnectionId() { + return this.connectionId; + } + + public void setConnectionId(final String connectionId) { + this.connectionId = connectionId; + } +} diff --git a/wayang-jdbc/wayang-jdbc-protocol/src/test/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodecTest.java b/wayang-jdbc/wayang-jdbc-protocol/src/test/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodecTest.java new file mode 100644 index 000000000..ee98cd687 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-protocol/src/test/java/org/apache/wayang/jdbc/protocol/io/ProtocolMessageCodecTest.java @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.protocol.io; + +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.MessageType; +import org.apache.wayang.jdbc.protocol.ProtocolException; +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.PingRequest; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.math.BigDecimal; +import java.sql.ResultSetMetaData; +import java.sql.Types; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class ProtocolMessageCodecTest { + + @Test + void roundTripsPingRequest() throws Exception { + final ProtocolMessageCodec codec = new ProtocolMessageCodec(); + final MessageEnvelope request = codec.toEnvelope( + "request-1", + MessageType.PING, + new PingRequest("connection-1") + ); + + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + codec.write(output, request); + + final MessageEnvelope decoded = codec.read(new ByteArrayInputStream(output.toByteArray())); + final PingRequest payload = codec.payloadAs(decoded, PingRequest.class); + + assertEquals("request-1", decoded.getRequestId()); + assertEquals(MessageType.PING, decoded.getType()); + assertEquals("connection-1", payload.getConnectionId()); + } + + @Test + void preservesDecimalRows() throws Exception { + final ProtocolMessageCodec codec = new ProtocolMessageCodec(); + final QueryResultResponse response = new QueryResultResponse( + "connection-1", + "statement-1", + List.of(new ColumnInfo( + "AMOUNT", + "AMOUNT", + null, + null, + "DECIMAL", + Types.DECIMAL, + ResultSetMetaData.columnNullable, + 10, + 2 + )), + List.of(Collections.singletonList(new BigDecimal("12.34"))), + false, + null + ); + + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + codec.write(output, codec.toEnvelope("request-2", MessageType.QUERY_RESULT, response)); + + final MessageEnvelope decoded = codec.read(new ByteArrayInputStream(output.toByteArray())); + final QueryResultResponse payload = codec.payloadAs(decoded, QueryResultResponse.class); + final Object value = payload.getRows().get(0).get(0); + + assertInstanceOf(BigDecimal.class, value); + assertEquals(new BigDecimal("12.34"), value); + } + + @Test + void rejectsFramesAboveConfiguredLimit() { + final ProtocolMessageCodec codec = new ProtocolMessageCodec(8); + final MessageEnvelope request = codec.toEnvelope( + "request-3", + MessageType.PING, + new PingRequest("connection-1") + ); + + assertThrows(ProtocolException.class, () -> codec.write(new ByteArrayOutputStream(), request)); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/pom.xml b/wayang-jdbc/wayang-jdbc-server/pom.xml index e859032fb..894d05187 100644 --- a/wayang-jdbc/wayang-jdbc-server/pom.xml +++ b/wayang-jdbc/wayang-jdbc-server/pom.xml @@ -50,6 +50,12 @@ wayang-api-sql 1.1.2-SNAPSHOT + + org.apache.wayang + wayang-jdbc-driver + 1.1.2-SNAPSHOT + test + diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java index 7ffd3896a..16c39e049 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/CursorStore.java @@ -18,63 +18,170 @@ package org.apache.wayang.jdbc.server; import java.util.ArrayList; -import java.util.Iterator; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; /** * Stores in-memory row cursors for query results that need fetch paging. */ class CursorStore { - private final Map cursors = new ConcurrentHashMap<>(); + private static final int DEFAULT_MAX_CURSORS = 1024; - String openCursor( + private static final int DEFAULT_MAX_CURSORS_PER_CONNECTION = 64; + + private final Map cursors = new HashMap<>(); + + private final int maxCursors; + + private final int maxCursorsPerConnection; + + CursorStore() { + this(DEFAULT_MAX_CURSORS, DEFAULT_MAX_CURSORS_PER_CONNECTION); + } + + CursorStore(final int maxCursors, final int maxCursorsPerConnection) { + if (maxCursors <= 0) { + throw new IllegalArgumentException("Maximum cursor count must be positive."); + } + if (maxCursorsPerConnection <= 0 || maxCursorsPerConnection > maxCursors) { + throw new IllegalArgumentException( + "Maximum cursors per connection must be positive and no greater than the total maximum." + ); + } + this.maxCursors = maxCursors; + this.maxCursorsPerConnection = maxCursorsPerConnection; + } + + synchronized String openCursor( final String connectionId, final String statementId, final List> rows, final int position ) { + return this.openCursor( + connectionId, + statementId, + rows, + position, + cursorId -> cursorId + ); + } + + /** + * Opens a cursor only after {@code responseFactory} has successfully + * created the response that exposes its id. + */ + synchronized T openCursor( + final String connectionId, + final String statementId, + final List> rows, + final int position, + final Function responseFactory + ) { + if (connectionId == null || statementId == null || rows == null) { + throw new IllegalArgumentException("Cursor connection, statement, and rows must not be null."); + } + if (responseFactory == null) { + throw new IllegalArgumentException("Cursor response factory must not be null."); + } + if (position < 0 || position >= rows.size()) { + throw new IllegalArgumentException("Cursor position must reference an unread row."); + } + + this.closeStatement(connectionId, statementId); + if (this.cursors.size() >= this.maxCursors) { + throw new CapacityException("The JDBC server has reached its open cursor limit."); + } + + final long connectionCursorCount = this.cursors.values().stream() + .filter(cursor -> cursor.connectionId.equals(connectionId)) + .count(); + if (connectionCursorCount >= this.maxCursorsPerConnection) { + throw new CapacityException("This JDBC connection has reached its open cursor limit."); + } + final String cursorId = UUID.randomUUID().toString(); + final T response = responseFactory.apply(cursorId); this.cursors.put(cursorId, new Cursor(connectionId, statementId, rows, position)); - return cursorId; + return response; } - FetchBatch fetch(final String connectionId, final String cursorId, final int fetchSize) { + synchronized FetchBatch fetch(final String connectionId, final String cursorId, final int fetchSize) { + return this.fetch(connectionId, cursorId, fetchSize, batch -> batch); + } + + /** + * Advances a cursor only after {@code responseFactory} has successfully + * created a response for the selected batch. + */ + synchronized T fetch( + final String connectionId, + final String cursorId, + final int fetchSize, + final Function responseFactory + ) { + if (fetchSize <= 0) { + throw new IllegalArgumentException("Fetch size must be positive."); + } + if (responseFactory == null) { + throw new IllegalArgumentException("Fetch response factory must not be null."); + } final Cursor cursor = this.cursors.get(cursorId); if (cursor == null || !cursor.connectionId.equals(connectionId)) { return null; } - final FetchBatch batch = cursor.fetch(fetchSize); + final FetchBatch batch = cursor.preview(fetchSize); + final T response = responseFactory.apply(batch); + cursor.advance(batch.getRows().size()); if (!batch.hasMoreRows()) { this.cursors.remove(cursorId); } - return batch; + return response; } - boolean closeCursor(final String connectionId, final String cursorId) { + synchronized boolean closeCursor( + final String connectionId, + final String statementId, + final String cursorId + ) { final Cursor cursor = this.cursors.get(cursorId); - if (cursor == null || !cursor.connectionId.equals(connectionId)) { + if (cursor == null + || !cursor.connectionId.equals(connectionId) + || !cursor.statementId.equals(statementId)) { return false; } return this.cursors.remove(cursorId) != null; } - boolean cancelCursor(final String connectionId, final String cursorId) { - return this.closeCursor(connectionId, cursorId); + synchronized boolean cancelCursor( + final String connectionId, + final String statementId, + final String cursorId + ) { + return this.closeCursor(connectionId, statementId, cursorId); + } + + synchronized void closeStatement(final String connectionId, final String statementId) { + this.cursors.entrySet().removeIf(entry -> + entry.getValue().connectionId.equals(connectionId) + && entry.getValue().statementId.equals(statementId) + ); } - void closeConnection(final String connectionId) { - final Iterator> iterator = this.cursors.entrySet().iterator(); - while (iterator.hasNext()) { - final Map.Entry entry = iterator.next(); - if (entry.getValue().connectionId.equals(connectionId)) { - iterator.remove(); - } - } + synchronized void closeConnection(final String connectionId) { + this.cursors.entrySet().removeIf(entry -> + Objects.equals(entry.getValue().connectionId, connectionId) + ); + } + + synchronized void clear() { + this.cursors.clear(); } static class FetchBatch { @@ -119,11 +226,21 @@ private static class Cursor { this.position = position; } - synchronized FetchBatch fetch(final int fetchSize) { + FetchBatch preview(final int fetchSize) { final int end = Math.min(this.position + fetchSize, this.rows.size()); final List> batch = new ArrayList<>(this.rows.subList(this.position, end)); - this.position = end; - return new FetchBatch(batch, this.position < this.rows.size()); + return new FetchBatch(batch, end < this.rows.size()); + } + + void advance(final int rowCount) { + this.position += rowCount; + } + } + + static class CapacityException extends IllegalStateException { + + CapacityException(final String message) { + super(message); } } } diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java index 17f585803..50105dad1 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProvider.java @@ -17,6 +17,11 @@ package org.apache.wayang.jdbc.server; +import org.apache.wayang.api.sql.context.SqlCatalogMetadata; +import org.apache.wayang.api.sql.context.SqlColumn; +import org.apache.wayang.api.sql.context.SqlContext; +import org.apache.wayang.api.sql.context.SqlSchemaMetadata; +import org.apache.wayang.api.sql.context.SqlTableMetadata; import org.apache.wayang.jdbc.protocol.message.ColumnInfo; import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; @@ -24,32 +29,62 @@ import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; import org.apache.wayang.jdbc.protocol.message.MetadataType; +import java.sql.DatabaseMetaData; import java.sql.ResultSetMetaData; +import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.regex.Pattern; /** - * Default metadata provider for the read-only Wayang JDBC gateway. + * Metadata provider for the read-only Wayang JDBC gateway. + * + *

When constructed with a {@link SqlContext}, metadata is read from the + * same Calcite catalog used for query execution. The no-argument constructor + * retains the original session-only fallback for custom query executors that + * do not expose a catalog.

*/ -class DefaultSqlMetadataProvider implements SqlMetadataProvider { +public class DefaultSqlMetadataProvider implements SqlMetadataProvider { + + private static final char SEARCH_ESCAPE = '\\'; + + private static final Comparator NULL_SAFE_STRING_COMPARATOR = + Comparator.nullsFirst(Comparator.naturalOrder()); + + private final SqlContext sqlContext; + + public DefaultSqlMetadataProvider() { + this.sqlContext = null; + } + + public DefaultSqlMetadataProvider(final SqlContext sqlContext) { + if (sqlContext == null) { + throw new IllegalArgumentException("SQL context must not be null."); + } + this.sqlContext = sqlContext; + } @Override public MetadataResultResponse getSchemas( final JdbcServerSession session, final GetSchemasRequest request - ) { - final List> rows = new ArrayList<>(); - final String schema = session.getDatabase(); + ) throws SQLException { final String catalog = session.getDatabase(); - if (schema != null - && this.matchesCatalog(catalog, request.getCatalog()) - && this.matchesPattern(schema, request.getSchemaPattern())) { - rows.add(Arrays.asList(schema, catalog)); + final List> rows = new ArrayList<>(); + if (this.matchesCatalog(catalog, request.getCatalog())) { + for (final SqlSchemaMetadata schema : this.getSchemas(session)) { + if (this.matchesPattern(schema.getName(), request.getSchemaPattern())) { + rows.add(Arrays.asList(schema.getName(), catalog)); + } + } } + rows.sort(Comparator + .comparing((List row) -> (String) row.get(1), NULL_SAFE_STRING_COMPARATOR) + .thenComparing(row -> (String) row.get(0), NULL_SAFE_STRING_COMPARATOR)); return new MetadataResultResponse( session.getConnectionId(), @@ -63,12 +98,44 @@ public MetadataResultResponse getSchemas( public MetadataResultResponse getTables( final JdbcServerSession session, final GetTablesRequest request - ) { + ) throws SQLException { + final String catalog = session.getDatabase(); + final List> rows = new ArrayList<>(); + if (this.matchesCatalog(catalog, request.getCatalogPattern())) { + for (final SqlSchemaMetadata schema : this.getSchemas(session)) { + if (!this.matchesPattern(schema.getName(), request.getSchemaPattern())) { + continue; + } + for (final SqlTableMetadata table : schema.getTables()) { + if (this.matchesPattern(table.getName(), request.getTableNamePattern()) + && this.matchesTableType(table.getType(), request.getTableTypes())) { + rows.add(Arrays.asList( + catalog, + schema.getName(), + table.getName(), + table.getType(), + null, + null, + null, + null, + null, + null + )); + } + } + } + } + rows.sort(Comparator + .comparing((List row) -> (String) row.get(3), NULL_SAFE_STRING_COMPARATOR) + .thenComparing(row -> (String) row.get(0), NULL_SAFE_STRING_COMPARATOR) + .thenComparing(row -> (String) row.get(1), NULL_SAFE_STRING_COMPARATOR) + .thenComparing(row -> (String) row.get(2), NULL_SAFE_STRING_COMPARATOR)); + return new MetadataResultResponse( session.getConnectionId(), MetadataType.TABLES, this.tablesColumns(), - Collections.emptyList() + rows ); } @@ -76,15 +143,137 @@ public MetadataResultResponse getTables( public MetadataResultResponse getColumns( final JdbcServerSession session, final GetColumnsRequest request - ) { + ) throws SQLException { + final String catalog = session.getDatabase(); + final List> rows = new ArrayList<>(); + if (this.matchesCatalog(catalog, request.getCatalogPattern())) { + for (final SqlSchemaMetadata schema : this.getSchemas(session)) { + if (!this.matchesPattern(schema.getName(), request.getSchemaPattern())) { + continue; + } + for (final SqlTableMetadata table : schema.getTables()) { + if (!this.matchesPattern(table.getName(), request.getTableNamePattern())) { + continue; + } + final List columns = table.getColumns(); + for (int index = 0; index < columns.size(); index++) { + final SqlColumn column = columns.get(index); + if (this.matchesPattern(column.getName(), request.getColumnNamePattern())) { + rows.add(this.columnRow( + catalog, + schema.getName(), + table.getName(), + column, + index + 1 + )); + } + } + } + } + } + rows.sort(Comparator + .comparing((List row) -> (String) row.get(0), NULL_SAFE_STRING_COMPARATOR) + .thenComparing(row -> (String) row.get(1), NULL_SAFE_STRING_COMPARATOR) + .thenComparing(row -> (String) row.get(2), NULL_SAFE_STRING_COMPARATOR) + .thenComparingInt(row -> (Integer) row.get(16))); + return new MetadataResultResponse( session.getConnectionId(), MetadataType.COLUMNS, this.columnsColumns(), - Collections.emptyList() + rows + ); + } + + private List getSchemas(final JdbcServerSession session) throws SQLException { + if (this.sqlContext != null) { + final SqlCatalogMetadata catalog = this.sqlContext.getCatalogMetadata(); + return catalog.getSchemas(); + } + final String schema = session.getDatabase(); + if (schema == null) { + return Collections.emptyList(); + } + return Collections.singletonList(new SqlSchemaMetadata(schema, Collections.emptyList())); + } + + private List columnRow( + final String catalog, + final String schema, + final String table, + final SqlColumn column, + final int ordinal + ) { + final int nullable = column.isNullable() + ? DatabaseMetaData.columnNullable + : DatabaseMetaData.columnNoNulls; + return Arrays.asList( + catalog, + schema, + table, + column.getName(), + column.getJdbcType(), + column.getTypeName(), + this.nonNegative(column.getPrecision()), + null, + this.nonNegative(column.getScale()), + this.numericRadix(column.getJdbcType()), + nullable, + null, + null, + null, + null, + this.characterOctetLength(column), + ordinal, + column.isNullable() ? "YES" : "NO", + null, + null, + null, + null, + "NO", + "NO" ); } + private Integer nonNegative(final int value) { + return Math.max(0, value); + } + + private Integer numericRadix(final int jdbcType) { + switch (jdbcType) { + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.NUMERIC: + case Types.DECIMAL: + return 10; + case Types.FLOAT: + case Types.REAL: + case Types.DOUBLE: + return 2; + default: + return null; + } + } + + private Integer characterOctetLength(final SqlColumn column) { + switch (column.getJdbcType()) { + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + case Types.NCHAR: + case Types.NVARCHAR: + case Types.LONGNVARCHAR: + case Types.BINARY: + case Types.VARBINARY: + case Types.LONGVARBINARY: + return this.nonNegative(column.getPrecision()); + default: + return null; + } + } + private List schemasColumns() { return Arrays.asList( column("TABLE_SCHEM", Types.VARCHAR), @@ -136,10 +325,33 @@ private List columnsColumns() { ); } + private boolean matchesTableType(final String value, final List requestedTypes) { + if (requestedTypes == null) { + return true; + } + if (requestedTypes.isEmpty()) { + return false; + } + for (final String requestedType : requestedTypes) { + if (requestedType != null && value.equals(requestedType)) { + return true; + } + } + return false; + } + + /** + * Catalog arguments in the JDBC metadata API are identifiers, not search + * patterns. A {@code null} argument accepts any catalog and the empty + * string selects objects that have no catalog. + */ private boolean matchesCatalog(final String value, final String catalog) { if (catalog == null) { return true; } + if (catalog.isEmpty()) { + return value == null || value.isEmpty(); + } return catalog.equals(value); } @@ -148,16 +360,25 @@ private boolean matchesPattern(final String value, final String pattern) { return true; } if (value == null) { - return false; + return pattern.isEmpty(); } - return Pattern.compile(this.toRegex(pattern), Pattern.CASE_INSENSITIVE).matcher(value).matches(); + return Pattern.compile( + this.toRegex(pattern), + Pattern.DOTALL + ).matcher(value).matches(); } private String toRegex(final String pattern) { final StringBuilder regex = new StringBuilder(); for (int index = 0; index < pattern.length(); index++) { final char current = pattern.charAt(index); - if (current == '%') { + if (current == SEARCH_ESCAPE) { + if (index + 1 < pattern.length()) { + regex.append(Pattern.quote(String.valueOf(pattern.charAt(++index)))); + } else { + regex.append(Pattern.quote(String.valueOf(SEARCH_ESCAPE))); + } + } else if (current == '%') { regex.append(".*"); } else if (current == '_') { regex.append('.'); diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java index 14432b99c..34a2596b6 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcClientHandler.java @@ -21,7 +21,10 @@ import org.apache.wayang.jdbc.protocol.io.ProtocolMessageCodec; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.net.Socket; +import java.util.UUID; /** * Handles one TCP client connection. @@ -34,25 +37,54 @@ class JdbcClientHandler implements Runnable { private final ProtocolMessageCodec codec; + private final String clientId; + + private final Runnable closeCallback; + JdbcClientHandler(final Socket socket, final JdbcRequestDispatcher dispatcher) { + this(socket, dispatcher, () -> { + }); + } + + JdbcClientHandler( + final Socket socket, + final JdbcRequestDispatcher dispatcher, + final Runnable closeCallback + ) { + if (socket == null) { + throw new IllegalArgumentException("Client socket must not be null."); + } + if (dispatcher == null) { + throw new IllegalArgumentException("Request dispatcher must not be null."); + } + if (closeCallback == null) { + throw new IllegalArgumentException("Close callback must not be null."); + } this.socket = socket; this.dispatcher = dispatcher; this.codec = new ProtocolMessageCodec(); + this.clientId = UUID.randomUUID().toString(); + this.closeCallback = closeCallback; } @Override public void run() { - try (Socket clientSocket = this.socket) { + try (Socket clientSocket = this.socket; + InputStream inputStream = clientSocket.getInputStream(); + OutputStream outputStream = clientSocket.getOutputStream()) { while (!clientSocket.isClosed()) { - final MessageEnvelope request = this.codec.read(clientSocket.getInputStream()); + final MessageEnvelope request = this.codec.read(inputStream); if (request == null) { return; } - final MessageEnvelope response = this.dispatcher.dispatch(request); - this.codec.write(clientSocket.getOutputStream(), response); + final MessageEnvelope response = this.dispatcher.dispatch(request, this.clientId); + this.codec.write(outputStream, response); } } catch (IOException ignored) { // The driver will surface connection failures through JDBC exceptions. + } finally { + this.dispatcher.closeClient(this.clientId); + this.closeCallback.run(); } } } diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java index aaa0e523c..6204058a0 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcher.java @@ -17,7 +17,12 @@ package org.apache.wayang.jdbc.server; +import org.apache.calcite.sql.SqlExplain; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.SqlWith; import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.calcite.sql.parser.SqlParser; import org.apache.wayang.api.sql.context.SqlQueryResult; import org.apache.wayang.jdbc.protocol.MessageEnvelope; import org.apache.wayang.jdbc.protocol.MessageType; @@ -39,13 +44,21 @@ import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.MetadataType; import org.apache.wayang.jdbc.protocol.message.OpenConnectionRequest; import org.apache.wayang.jdbc.protocol.message.OpenConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.PingRequest; +import org.apache.wayang.jdbc.protocol.message.PingResponse; import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; import java.sql.SQLException; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; /** * Dispatches protocol messages to server-side JDBC gateway actions. @@ -54,8 +67,50 @@ public class JdbcRequestDispatcher { private static final int DEFAULT_FETCH_SIZE = 100; + private static final int MAX_FETCH_SIZE = 10_000; + private static final String SERVER_VERSION = "1.1.2-SNAPSHOT"; + private static final String LOCAL_CLIENT_ID = "local-dispatcher"; + + private static final Set QUERY_STATEMENT_KEYWORDS = Set.of( + "SELECT", + "TABLE", + "VALUES" + ); + + private static final Set UNSUPPORTED_STATEMENT_KEYWORDS = Set.of( + "ALTER", + "ANALYZE", + "BEGIN", + "CALL", + "COMMENT", + "COMMIT", + "COPY", + "CREATE", + "DELETE", + "DROP", + "END", + "GRANT", + "INSERT", + "LOAD", + "LOCK", + "MERGE", + "RENAME", + "REPLACE", + "REVOKE", + "ROLLBACK", + "SAVEPOINT", + "SET", + "START", + "TRUNCATE", + "UNLOCK", + "UPDATE", + "UPSERT", + "USE", + "VACUUM" + ); + private final ProtocolMessageCodec codec; private final SqlQueryExecutor queryExecutor; @@ -68,12 +123,21 @@ public class JdbcRequestDispatcher { private final int defaultFetchSize; + private final AtomicBoolean closed = new AtomicBoolean(false); + public JdbcRequestDispatcher(final SqlQueryExecutor queryExecutor) { this(queryExecutor, DEFAULT_FETCH_SIZE); } public JdbcRequestDispatcher(final SqlQueryExecutor queryExecutor, final int defaultFetchSize) { - this(queryExecutor, new DefaultSqlMetadataProvider(), defaultFetchSize); + this(queryExecutor, createDefaultMetadataProvider(queryExecutor), defaultFetchSize); + } + + JdbcRequestDispatcher( + final SqlQueryExecutor queryExecutor, + final SqlMetadataProvider metadataProvider + ) { + this(queryExecutor, metadataProvider, DEFAULT_FETCH_SIZE); } public JdbcRequestDispatcher( @@ -98,27 +162,46 @@ public JdbcRequestDispatcher( this.defaultFetchSize = defaultFetchSize; } + private static SqlMetadataProvider createDefaultMetadataProvider(final SqlQueryExecutor queryExecutor) { + if (queryExecutor instanceof WayangSqlQueryExecutor) { + return new DefaultSqlMetadataProvider( + ((WayangSqlQueryExecutor) queryExecutor).getSqlContext() + ); + } + return new DefaultSqlMetadataProvider(); + } + public MessageEnvelope dispatch(final MessageEnvelope request) { + return this.dispatch(request, LOCAL_CLIENT_ID); + } + + MessageEnvelope dispatch(final MessageEnvelope request, final String clientId) { try { + if (this.closed.get()) { + throw new DispatcherClosedException("The Wayang JDBC server is closed."); + } + this.requireText(clientId, "Client id"); switch (request.getType()) { case OPEN_CONNECTION: - return this.openConnection(request); + return this.openConnection(request, clientId); + case PING: + return this.ping(request, clientId); case EXECUTE_QUERY: - return this.executeQuery(request); + return this.executeQuery(request, clientId); case FETCH: - return this.fetch(request); + return this.fetch(request, clientId); case CLOSE_CURSOR: - return this.closeCursor(request); + return this.closeCursor(request, clientId); case CANCEL_QUERY: - return this.cancelQuery(request); + return this.cancelQuery(request, clientId); case CLOSE_CONNECTION: - return this.closeConnection(request); + return this.closeConnection(request, clientId); case GET_SCHEMAS: - return this.getSchemas(request); + return this.getSchemas(request, clientId); case GET_TABLES: - return this.getTables(request); + return this.getTables(request, clientId); case GET_COLUMNS: - return this.getColumns(request); + return this.getColumns(request, clientId); default: return this.error( request.getRequestId(), @@ -130,6 +213,28 @@ public MessageEnvelope dispatch(final MessageEnvelope request) { null ); } + } catch (UnsupportedSqlOperationException e) { + return this.error( + request.getRequestId(), + ErrorCode.UNSUPPORTED_OPERATION, + "0A000", + 1003, + e.getMessage(), + null, + e.getClass().getName() + ); + } catch (JdbcServerSessionManager.CapacityException + | CursorStore.CapacityException + | DispatcherClosedException e) { + return this.error( + request.getRequestId(), + ErrorCode.CONNECTION_ERROR, + "08004", + 1004, + e.getMessage(), + null, + e.getClass().getName() + ); } catch (ProtocolException | IllegalArgumentException e) { return this.error( request.getRequestId(), @@ -150,6 +255,16 @@ public MessageEnvelope dispatch(final MessageEnvelope request) { e.getMessage(), e.getClass().getName() ); + } catch (MetadataOperationException e) { + return this.error( + request.getRequestId(), + ErrorCode.METADATA_ERROR, + "HY000", + 1005, + e.getMessage(), + e.getCause() == null ? null : e.getCause().getMessage(), + e.getCause() == null ? e.getClass().getName() : e.getCause().getClass().getName() + ); } catch (Exception e) { return this.error( request.getRequestId(), @@ -163,9 +278,26 @@ public MessageEnvelope dispatch(final MessageEnvelope request) { } } - private MessageEnvelope openConnection(final MessageEnvelope request) throws ProtocolException { + void closeClient(final String clientId) { + for (final String connectionId : this.sessionManager.closeClient(clientId)) { + this.cursorStore.closeConnection(connectionId); + } + } + + void close() { + if (this.closed.compareAndSet(false, true)) { + this.cursorStore.clear(); + this.sessionManager.clear(); + } + } + + private MessageEnvelope openConnection( + final MessageEnvelope request, + final String clientId + ) throws ProtocolException { final OpenConnectionRequest openRequest = this.codec.payloadAs(request, OpenConnectionRequest.class); final String connectionId = this.sessionManager.openConnection( + clientId, openRequest.getUsername(), openRequest.getDatabase(), openRequest.getProperties() @@ -178,89 +310,186 @@ private MessageEnvelope openConnection(final MessageEnvelope request) throws Pro return this.codec.toEnvelope(request.getRequestId(), MessageType.OPEN_CONNECTION_OK, response); } - private MessageEnvelope executeQuery(final MessageEnvelope request) throws Exception { + private MessageEnvelope executeQuery( + final MessageEnvelope request, + final String clientId + ) throws Exception { final ExecuteQueryRequest executeRequest = this.codec.payloadAs(request, ExecuteQueryRequest.class); - this.requireOpenConnection(executeRequest.getConnectionId()); + this.requireOpenConnection(executeRequest.getConnectionId(), clientId); this.requireText(executeRequest.getStatementId(), "Statement id"); this.requireText(executeRequest.getSql(), "SQL query"); + this.requireReadOnlyQuery(executeRequest.getSql()); + this.cursorStore.closeStatement( + executeRequest.getConnectionId(), + executeRequest.getStatementId() + ); final SqlQueryResult result = this.queryExecutor.execute(executeRequest.getSql()); + if (this.closed.get()) { + throw new DispatcherClosedException("The Wayang JDBC server is closed."); + } + this.requireOpenConnection(executeRequest.getConnectionId(), clientId); + if (result == null) { + throw new IllegalStateException("The SQL query executor returned no result."); + } final List columns = SqlQueryResultAdapter.toColumnInfo(result); final List> rows = SqlQueryResultAdapter.toRows(result); + this.validateTabularResult(columns, rows, "Query result"); final int fetchSize = this.normalizeFetchSize(executeRequest.getFetchSize()); final int batchEnd = Math.min(fetchSize, rows.size()); final List> firstBatch = List.copyOf(rows.subList(0, batchEnd)); final boolean hasMoreRows = batchEnd < rows.size(); - final String cursorId = hasMoreRows - ? this.cursorStore.openCursor( - executeRequest.getConnectionId(), - executeRequest.getStatementId(), - rows, - batchEnd - ) - : null; + if (!hasMoreRows) { + return this.queryResultEnvelope( + request.getRequestId(), + executeRequest, + columns, + firstBatch, + false, + null + ); + } - final QueryResultResponse response = new QueryResultResponse( + return this.cursorStore.openCursor( executeRequest.getConnectionId(), executeRequest.getStatementId(), - columns, - firstBatch, - hasMoreRows, - cursorId + rows, + batchEnd, + cursorId -> this.queryResultEnvelope( + request.getRequestId(), + executeRequest, + columns, + firstBatch, + true, + cursorId + ) + ); + } + + private MessageEnvelope ping( + final MessageEnvelope request, + final String clientId + ) throws ProtocolException { + final PingRequest pingRequest = this.codec.payloadAs(request, PingRequest.class); + this.requireOpenConnection(pingRequest.getConnectionId(), clientId); + return this.codec.toEnvelope( + request.getRequestId(), + MessageType.PING_OK, + new PingResponse(pingRequest.getConnectionId()) ); - return this.codec.toEnvelope(request.getRequestId(), MessageType.QUERY_RESULT, response); } - private MessageEnvelope getSchemas(final MessageEnvelope request) throws SQLException, ProtocolException { + private MessageEnvelope getSchemas( + final MessageEnvelope request, + final String clientId + ) throws MetadataOperationException, ProtocolException { final GetSchemasRequest metadataRequest = this.codec.payloadAs(request, GetSchemasRequest.class); - final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId()); - final MetadataResultResponse response = this.metadataProvider.getSchemas(session, metadataRequest); - return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId(), clientId); + try { + final MetadataResultResponse response = this.metadataProvider.getSchemas(session, metadataRequest); + this.validateMetadataResponse(response, session.getConnectionId(), MetadataType.SCHEMAS); + return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + } catch (SQLException | IllegalStateException e) { + throw new MetadataOperationException("Could not retrieve JDBC schema metadata.", e); + } } - private MessageEnvelope getTables(final MessageEnvelope request) throws SQLException, ProtocolException { + private MessageEnvelope getTables( + final MessageEnvelope request, + final String clientId + ) throws MetadataOperationException, ProtocolException { final GetTablesRequest metadataRequest = this.codec.payloadAs(request, GetTablesRequest.class); - final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId()); - final MetadataResultResponse response = this.metadataProvider.getTables(session, metadataRequest); - return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId(), clientId); + try { + final MetadataResultResponse response = this.metadataProvider.getTables(session, metadataRequest); + this.validateMetadataResponse(response, session.getConnectionId(), MetadataType.TABLES); + return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + } catch (SQLException | IllegalStateException e) { + throw new MetadataOperationException("Could not retrieve JDBC table metadata.", e); + } } - private MessageEnvelope getColumns(final MessageEnvelope request) throws SQLException, ProtocolException { + private MessageEnvelope getColumns( + final MessageEnvelope request, + final String clientId + ) throws MetadataOperationException, ProtocolException { final GetColumnsRequest metadataRequest = this.codec.payloadAs(request, GetColumnsRequest.class); - final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId()); - final MetadataResultResponse response = this.metadataProvider.getColumns(session, metadataRequest); - return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + final JdbcServerSession session = this.requireOpenSession(metadataRequest.getConnectionId(), clientId); + try { + final MetadataResultResponse response = this.metadataProvider.getColumns(session, metadataRequest); + this.validateMetadataResponse(response, session.getConnectionId(), MetadataType.COLUMNS); + return this.codec.toEnvelope(request.getRequestId(), MessageType.METADATA_RESULT, response); + } catch (SQLException | IllegalStateException e) { + throw new MetadataOperationException("Could not retrieve JDBC column metadata.", e); + } } - private MessageEnvelope fetch(final MessageEnvelope request) throws ProtocolException { + private MessageEnvelope fetch( + final MessageEnvelope request, + final String clientId + ) throws ProtocolException { final FetchRequest fetchRequest = this.codec.payloadAs(request, FetchRequest.class); - this.requireOpenConnection(fetchRequest.getConnectionId()); + this.requireOpenConnection(fetchRequest.getConnectionId(), clientId); this.requireText(fetchRequest.getCursorId(), "Cursor id"); - final CursorStore.FetchBatch batch = this.cursorStore.fetch( + final MessageEnvelope response = this.cursorStore.fetch( fetchRequest.getConnectionId(), fetchRequest.getCursorId(), - this.normalizeFetchSize(fetchRequest.getFetchSize()) + this.normalizeFetchSize(fetchRequest.getFetchSize()), + batch -> this.codec.toEnvelope( + request.getRequestId(), + MessageType.FETCH_RESULT, + new FetchResponse( + fetchRequest.getConnectionId(), + fetchRequest.getCursorId(), + batch.getRows(), + batch.hasMoreRows() + ) + ) ); - if (batch == null) { + if (response == null) { throw new IllegalArgumentException("Unknown cursor id: " + fetchRequest.getCursorId()); } + return response; + } - final FetchResponse response = new FetchResponse( - fetchRequest.getConnectionId(), - fetchRequest.getCursorId(), - batch.getRows(), - batch.hasMoreRows() + private MessageEnvelope queryResultEnvelope( + final String requestId, + final ExecuteQueryRequest executeRequest, + final List columns, + final List> rows, + final boolean hasMoreRows, + final String cursorId + ) { + final QueryResultResponse response = new QueryResultResponse( + executeRequest.getConnectionId(), + executeRequest.getStatementId(), + columns, + rows, + hasMoreRows, + cursorId ); - return this.codec.toEnvelope(request.getRequestId(), MessageType.FETCH_RESULT, response); + return this.codec.toEnvelope(requestId, MessageType.QUERY_RESULT, response); } - private MessageEnvelope closeCursor(final MessageEnvelope request) throws ProtocolException { + private MessageEnvelope closeCursor( + final MessageEnvelope request, + final String clientId + ) throws ProtocolException { final CloseCursorRequest closeRequest = this.codec.payloadAs(request, CloseCursorRequest.class); - this.requireOpenConnection(closeRequest.getConnectionId()); + this.requireOpenConnection(closeRequest.getConnectionId(), clientId); this.requireText(closeRequest.getStatementId(), "Statement id"); this.requireText(closeRequest.getCursorId(), "Cursor id"); - this.cursorStore.closeCursor(closeRequest.getConnectionId(), closeRequest.getCursorId()); + final boolean closed = this.cursorStore.closeCursor( + closeRequest.getConnectionId(), + closeRequest.getStatementId(), + closeRequest.getCursorId() + ); + if (!closed) { + throw new IllegalArgumentException( + "Unknown cursor for statement: " + closeRequest.getCursorId() + ); + } final CloseCursorResponse response = new CloseCursorResponse( closeRequest.getConnectionId(), @@ -270,12 +499,22 @@ private MessageEnvelope closeCursor(final MessageEnvelope request) throws Protoc return this.codec.toEnvelope(request.getRequestId(), MessageType.CLOSE_CURSOR_OK, response); } - private MessageEnvelope cancelQuery(final MessageEnvelope request) throws ProtocolException { + private MessageEnvelope cancelQuery( + final MessageEnvelope request, + final String clientId + ) throws ProtocolException { final CancelQueryRequest cancelRequest = this.codec.payloadAs(request, CancelQueryRequest.class); - this.requireOpenConnection(cancelRequest.getConnectionId()); + this.requireOpenConnection(cancelRequest.getConnectionId(), clientId); this.requireText(cancelRequest.getStatementId(), "Statement id"); + if (cancelRequest.getCursorId() != null) { + this.requireText(cancelRequest.getCursorId(), "Cursor id"); + } final boolean cancelled = cancelRequest.getCursorId() != null - && this.cursorStore.cancelCursor(cancelRequest.getConnectionId(), cancelRequest.getCursorId()); + && this.cursorStore.cancelCursor( + cancelRequest.getConnectionId(), + cancelRequest.getStatementId(), + cancelRequest.getCursorId() + ); final CancelQueryResponse response = new CancelQueryResponse( cancelRequest.getConnectionId(), @@ -286,9 +525,12 @@ private MessageEnvelope cancelQuery(final MessageEnvelope request) throws Protoc return this.codec.toEnvelope(request.getRequestId(), MessageType.CANCEL_QUERY_OK, response); } - private MessageEnvelope closeConnection(final MessageEnvelope request) throws ProtocolException { + private MessageEnvelope closeConnection( + final MessageEnvelope request, + final String clientId + ) throws ProtocolException { final CloseConnectionRequest closeRequest = this.codec.payloadAs(request, CloseConnectionRequest.class); - this.requireOpenConnection(closeRequest.getConnectionId()); + this.requireOpenConnection(closeRequest.getConnectionId(), clientId); this.cursorStore.closeConnection(closeRequest.getConnectionId()); this.sessionManager.closeConnection(closeRequest.getConnectionId()); @@ -296,13 +538,13 @@ private MessageEnvelope closeConnection(final MessageEnvelope request) throws Pr return this.codec.toEnvelope(request.getRequestId(), MessageType.CLOSE_CONNECTION_OK, response); } - private void requireOpenConnection(final String connectionId) { - this.requireOpenSession(connectionId); + private void requireOpenConnection(final String connectionId, final String clientId) { + this.requireOpenSession(connectionId, clientId); } - private JdbcServerSession requireOpenSession(final String connectionId) { + private JdbcServerSession requireOpenSession(final String connectionId, final String clientId) { this.requireText(connectionId, "Connection id"); - final JdbcServerSession session = this.sessionManager.getSession(connectionId); + final JdbcServerSession session = this.sessionManager.getSession(connectionId, clientId); if (session == null) { throw new IllegalArgumentException("Unknown connection id: " + connectionId); } @@ -316,7 +558,176 @@ private void requireText(final String value, final String fieldName) { } private int normalizeFetchSize(final int fetchSize) { - return fetchSize > 0 ? fetchSize : this.defaultFetchSize; + return Math.min(fetchSize > 0 ? fetchSize : this.defaultFetchSize, MAX_FETCH_SIZE); + } + + private void requireReadOnlyQuery( + final String sql + ) throws SqlParseException, UnsupportedSqlOperationException { + final SqlNode sqlNode; + try { + sqlNode = SqlParser.create(sql).parseStmt(); + } catch (SqlParseException e) { + final String statementKeyword = this.findTopLevelStatementKeyword(sql); + if (statementKeyword != null && UNSUPPORTED_STATEMENT_KEYWORDS.contains(statementKeyword)) { + throw new UnsupportedSqlOperationException( + "Wayang JDBC is read-only; SQL statement kind " + + statementKeyword + + " is not supported." + ); + } + throw e; + } + + if (!this.isReadOnlyQuery(sqlNode)) { + throw new UnsupportedSqlOperationException( + "Wayang JDBC is read-only; SQL statement kind " + + sqlNode.getKind() + + " is not supported." + ); + } + } + + private boolean isReadOnlyQuery(final SqlNode sqlNode) { + if (sqlNode instanceof SqlWith) { + return this.isReadOnlyQuery(((SqlWith) sqlNode).body); + } + if (sqlNode instanceof SqlExplain) { + return this.isReadOnlyQuery(((SqlExplain) sqlNode).getExplicandum()); + } + return sqlNode.getKind().belongsTo(SqlKind.QUERY); + } + + private String findTopLevelStatementKeyword(final String sql) { + final List keywords = this.topLevelWords(sql); + if (keywords.isEmpty()) { + return null; + } + + final String firstKeyword = keywords.get(0); + if (!"WITH".equals(firstKeyword) && !"EXPLAIN".equals(firstKeyword)) { + return firstKeyword; + } + + for (int index = 1; index < keywords.size(); index++) { + final String keyword = keywords.get(index); + if (QUERY_STATEMENT_KEYWORDS.contains(keyword) + || UNSUPPORTED_STATEMENT_KEYWORDS.contains(keyword)) { + return keyword; + } + } + return firstKeyword; + } + + private List topLevelWords(final String sql) { + final List words = new ArrayList<>(); + int parenthesisDepth = 0; + int index = 0; + while (index < sql.length()) { + final char character = sql.charAt(index); + if (character == '-' && index + 1 < sql.length() && sql.charAt(index + 1) == '-') { + index = this.skipLineComment(sql, index + 2); + } else if (character == '/' && index + 1 < sql.length() && sql.charAt(index + 1) == '*') { + index = this.skipBlockComment(sql, index + 2); + } else if (character == '\'' || character == '"' || character == '`') { + index = this.skipQuotedText(sql, index + 1, character); + } else if (character == '[') { + index = this.skipQuotedText(sql, index + 1, ']'); + } else if (character == '(') { + parenthesisDepth++; + index++; + } else if (character == ')') { + parenthesisDepth = Math.max(0, parenthesisDepth - 1); + index++; + } else if (parenthesisDepth == 0 && Character.isLetter(character)) { + final int wordStart = index; + index++; + while (index < sql.length()) { + final char wordCharacter = sql.charAt(index); + if (!Character.isLetterOrDigit(wordCharacter) && wordCharacter != '_') { + break; + } + index++; + } + words.add(sql.substring(wordStart, index).toUpperCase(Locale.ROOT)); + } else { + index++; + } + } + return words; + } + + private int skipLineComment(final String sql, final int startIndex) { + int index = startIndex; + while (index < sql.length() && sql.charAt(index) != '\n' && sql.charAt(index) != '\r') { + index++; + } + return index; + } + + private int skipBlockComment(final String sql, final int startIndex) { + int index = startIndex; + while (index + 1 < sql.length()) { + if (sql.charAt(index) == '*' && sql.charAt(index + 1) == '/') { + return index + 2; + } + index++; + } + return sql.length(); + } + + private int skipQuotedText(final String sql, final int startIndex, final char quote) { + int index = startIndex; + while (index < sql.length()) { + if (sql.charAt(index) == quote) { + if (index + 1 < sql.length() && sql.charAt(index + 1) == quote) { + index += 2; + continue; + } + return index + 1; + } + index++; + } + return sql.length(); + } + + private void validateMetadataResponse( + final MetadataResultResponse response, + final String connectionId, + final MetadataType metadataType + ) { + if (response == null) { + throw new IllegalStateException("The metadata provider returned no result."); + } + if (!Objects.equals(connectionId, response.getConnectionId())) { + throw new IllegalStateException("The metadata provider returned a mismatched connection id."); + } + if (response.getMetadataType() != metadataType) { + throw new IllegalStateException("The metadata provider returned a mismatched metadata type."); + } + this.validateTabularResult(response.getColumns(), response.getRows(), "Metadata result"); + } + + private void validateTabularResult( + final List columns, + final List> rows, + final String resultName + ) { + if (columns == null || rows == null) { + throw new IllegalStateException(resultName + " columns and rows must not be null."); + } + for (final ColumnInfo column : columns) { + if (column == null) { + throw new IllegalStateException(resultName + " must not contain a null column."); + } + } + for (final List row : rows) { + if (row == null || row.size() != columns.size()) { + throw new IllegalStateException( + resultName + " row width does not match its column count." + ); + } + } } private MessageEnvelope error( @@ -338,4 +749,25 @@ private MessageEnvelope error( ); return this.codec.toEnvelope(requestId, MessageType.ERROR, response); } + + private static class UnsupportedSqlOperationException extends Exception { + + UnsupportedSqlOperationException(final String message) { + super(message); + } + } + + private static class DispatcherClosedException extends IllegalStateException { + + DispatcherClosedException(final String message) { + super(message); + } + } + + private static class MetadataOperationException extends Exception { + + MetadataOperationException(final String message, final Throwable cause) { + super(message, cause); + } + } } diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java index 87cf7f7aa..d4285dd46 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSession.java @@ -27,6 +27,8 @@ public final class JdbcServerSession { private final String connectionId; + private final String clientId; + private final String username; private final String database; @@ -35,11 +37,13 @@ public final class JdbcServerSession { JdbcServerSession( final String connectionId, + final String clientId, final String username, final String database, final Map properties ) { this.connectionId = connectionId; + this.clientId = clientId; this.username = username; this.database = database; this.properties = properties == null @@ -51,6 +55,10 @@ public String getConnectionId() { return this.connectionId; } + String getClientId() { + return this.clientId; + } + public String getUsername() { return this.username; } diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java index eae690816..ba1f5a3f1 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/JdbcServerSessionManager.java @@ -17,7 +17,10 @@ package org.apache.wayang.jdbc.server; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -26,10 +29,35 @@ */ class JdbcServerSessionManager { + private static final int DEFAULT_MAX_SESSIONS = 1024; + + private static final int DEFAULT_MAX_SESSIONS_PER_CLIENT = 16; + private final Map sessions = new ConcurrentHashMap<>(); + private final int maxSessions; + + private final int maxSessionsPerClient; + + JdbcServerSessionManager() { + this(DEFAULT_MAX_SESSIONS, DEFAULT_MAX_SESSIONS_PER_CLIENT); + } + + JdbcServerSessionManager(final int maxSessions, final int maxSessionsPerClient) { + if (maxSessions <= 0) { + throw new IllegalArgumentException("Maximum session count must be positive."); + } + if (maxSessionsPerClient <= 0 || maxSessionsPerClient > maxSessions) { + throw new IllegalArgumentException( + "Maximum sessions per client must be positive and no greater than the total maximum." + ); + } + this.maxSessions = maxSessions; + this.maxSessionsPerClient = maxSessionsPerClient; + } + String openConnection() { - return this.openConnection(null, null, null); + return this.openConnection(null, null, null, null); } String openConnection( @@ -37,10 +65,30 @@ String openConnection( final String database, final Map properties ) { + return this.openConnection(null, username, database, properties); + } + + synchronized String openConnection( + final String clientId, + final String username, + final String database, + final Map properties + ) { + if (this.sessions.size() >= this.maxSessions) { + throw new CapacityException("The JDBC server has reached its logical connection limit."); + } + + final long clientSessionCount = this.sessions.values().stream() + .filter(session -> Objects.equals(clientId, session.getClientId())) + .count(); + if (clientSessionCount >= this.maxSessionsPerClient) { + throw new CapacityException("This JDBC client has reached its logical connection limit."); + } + final String connectionId = UUID.randomUUID().toString(); this.sessions.put( connectionId, - new JdbcServerSession(connectionId, username, database, properties) + new JdbcServerSession(connectionId, clientId, username, database, properties) ); return connectionId; } @@ -53,9 +101,40 @@ JdbcServerSession getSession(final String connectionId) { return connectionId == null ? null : this.sessions.get(connectionId); } - void closeConnection(final String connectionId) { + JdbcServerSession getSession(final String connectionId, final String clientId) { + final JdbcServerSession session = this.getSession(connectionId); + if (session == null || !Objects.equals(clientId, session.getClientId())) { + return null; + } + return session; + } + + synchronized void closeConnection(final String connectionId) { if (connectionId != null) { this.sessions.remove(connectionId); } } + + synchronized List closeClient(final String clientId) { + final List connectionIds = new ArrayList<>(); + this.sessions.entrySet().removeIf(entry -> { + if (Objects.equals(clientId, entry.getValue().getClientId())) { + connectionIds.add(entry.getKey()); + return true; + } + return false; + }); + return connectionIds; + } + + synchronized void clear() { + this.sessions.clear(); + } + + static class CapacityException extends IllegalStateException { + + CapacityException(final String message) { + super(message); + } + } } diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java index cf1dc6060..cad4928db 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/SqlQueryResultAdapter.java @@ -22,9 +22,20 @@ import org.apache.wayang.basic.data.Record; import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import java.math.BigDecimal; +import java.math.BigInteger; import java.sql.ResultSetMetaData; +import java.sql.Time; +import java.sql.Timestamp; +import java.sql.Types; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.ZonedDateTime; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -43,13 +54,136 @@ static List toColumnInfo(final SqlQueryResult result) { } static List> toRows(final SqlQueryResult result) { + final List columns = result.getColumns(); final List> rows = new ArrayList<>(); for (final Record record : result.getRows()) { - rows.add(new ArrayList<>(Arrays.asList(record.getValues()))); + final Object[] values = record.getValues(); + if (values.length != columns.size()) { + throw new IllegalStateException( + "Query result row width does not match its column count." + ); + } + final List row = new ArrayList<>(values.length); + for (int index = 0; index < values.length; index++) { + row.add(normalizeWireValue(values[index], columns.get(index))); + } + rows.add(row); } return rows; } + /** + * Converts values that Jackson cannot represent portably without type + * information into stable JDBC wire representations. Numeric values stay + * numeric so that the driver can coerce them using {@link ColumnInfo}; + * temporal values use ISO text to avoid default-time-zone shifts. + */ + private static Object normalizeWireValue(final Object value, final SqlColumn column) { + if (value == null) { + return value; + } + + final Object normalizedValue; + switch (column.getJdbcType()) { + case Types.DATE: + if (value instanceof java.sql.Date) { + normalizedValue = ((java.sql.Date) value).toLocalDate().toString(); + break; + } + if (value instanceof LocalDate) { + normalizedValue = value.toString(); + break; + } + normalizedValue = value; + break; + case Types.TIME: + if (value instanceof Time) { + normalizedValue = ((Time) value).toLocalTime().toString(); + break; + } + if (value instanceof LocalTime) { + normalizedValue = value.toString(); + break; + } + normalizedValue = value; + break; + case Types.TIME_WITH_TIMEZONE: + if (value instanceof OffsetTime) { + normalizedValue = value.toString(); + break; + } + normalizedValue = value; + break; + case Types.TIMESTAMP: + if (value instanceof Timestamp) { + normalizedValue = ((Timestamp) value).toLocalDateTime().toString(); + break; + } + if (value instanceof LocalDateTime || value instanceof Instant) { + normalizedValue = value.toString(); + break; + } + normalizedValue = value; + break; + case Types.TIMESTAMP_WITH_TIMEZONE: + if (value instanceof OffsetDateTime || value instanceof Instant) { + normalizedValue = value.toString(); + break; + } + if (value instanceof ZonedDateTime) { + normalizedValue = ((ZonedDateTime) value).toOffsetDateTime().toString(); + break; + } + normalizedValue = value; + break; + default: + normalizedValue = value; + break; + } + return requireWireScalar(normalizedValue, column); + } + + private static Object requireWireScalar(final Object value, final SqlColumn column) { + if (value == null || value instanceof String || value instanceof Boolean) { + return value; + } + if (value instanceof Character) { + return value.toString(); + } + if (value instanceof byte[]) { + return ((byte[]) value).clone(); + } + if (value instanceof Double && !Double.isFinite((Double) value)) { + throw unsupportedWireValue(value, column); + } + if (value instanceof Float && !Float.isFinite((Float) value)) { + throw unsupportedWireValue(value, column); + } + if (value instanceof Byte + || value instanceof Short + || value instanceof Integer + || value instanceof Long + || value instanceof Float + || value instanceof Double + || value instanceof BigInteger + || value instanceof BigDecimal) { + return value; + } + throw unsupportedWireValue(value, column); + } + + private static IllegalStateException unsupportedWireValue( + final Object value, + final SqlColumn column + ) { + return new IllegalStateException( + "Query result column '" + + column.getLabel() + + "' contains a value that cannot be represented by the JDBC protocol: " + + value.getClass().getName() + ); + } + private static ColumnInfo toColumnInfo(final SqlColumn column) { return new ColumnInfo( column.getName(), diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java index 5575da45a..9c7e873b4 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangJdbcServer.java @@ -18,22 +18,36 @@ package org.apache.wayang.jdbc.server; import org.apache.wayang.core.api.Configuration; +import org.apache.wayang.jdbc.protocol.ProtocolConstants; import java.io.IOException; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.sql.SQLException; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; /** * TCP server for the external Wayang JDBC protocol. */ public class WayangJdbcServer implements AutoCloseable { + private static final int ACCEPT_BACKLOG = 50; + + private static final int MAX_CLIENT_CONNECTIONS = 64; + + private static final long SHUTDOWN_TIMEOUT_SECONDS = 5; + private final String host; private final int port; @@ -42,32 +56,98 @@ public class WayangJdbcServer implements AutoCloseable { private final ExecutorService clientExecutor; + private final Set clientSockets = ConcurrentHashMap.newKeySet(); + private final AtomicBoolean running = new AtomicBoolean(false); - private ServerSocket serverSocket; + private final AtomicBoolean closed = new AtomicBoolean(false); - private Thread acceptThread; + private final CountDownLatch termination = new CountDownLatch(1); + + private volatile ServerSocket serverSocket; + + private volatile Thread acceptThread; public WayangJdbcServer( final String host, final int port, final SqlQueryExecutor queryExecutor ) { + this(host, port, new JdbcRequestDispatcher(queryExecutor)); + } + + WayangJdbcServer( + final String host, + final int port, + final SqlQueryExecutor queryExecutor, + final SqlMetadataProvider metadataProvider + ) { + this(host, port, new JdbcRequestDispatcher(queryExecutor, metadataProvider)); + } + + private WayangJdbcServer( + final String host, + final int port, + final JdbcRequestDispatcher dispatcher + ) { + if (host == null || host.isBlank()) { + throw new IllegalArgumentException("Server host must not be blank."); + } + if (port < 0 || port > 65535) { + throw new IllegalArgumentException("Server port must be between 0 and 65535."); + } this.host = host; this.port = port; - this.dispatcher = new JdbcRequestDispatcher(queryExecutor); - this.clientExecutor = Executors.newCachedThreadPool(); + this.dispatcher = dispatcher; + final AtomicInteger threadId = new AtomicInteger(); + this.clientExecutor = new ThreadPoolExecutor( + 0, + MAX_CLIENT_CONNECTIONS, + 60L, + TimeUnit.SECONDS, + new SynchronousQueue<>(), + runnable -> { + final Thread thread = new Thread( + runnable, + "wayang-jdbc-client-" + threadId.incrementAndGet() + ); + thread.setDaemon(true); + return thread; + }, + new ThreadPoolExecutor.AbortPolicy() + ); } - public void start() throws IOException { - if (!this.running.compareAndSet(false, true)) { + public synchronized void start() throws IOException { + if (this.closed.get()) { + throw new IllegalStateException("Wayang JDBC server is closed."); + } + if (this.running.get()) { throw new IllegalStateException("Wayang JDBC server is already running."); } - this.serverSocket = new ServerSocket(this.port, 50, InetAddress.getByName(this.host)); - this.acceptThread = new Thread(this::acceptLoop, "wayang-jdbc-server-accept"); - this.acceptThread.setDaemon(true); - this.acceptThread.start(); + final ServerSocket newServerSocket = new ServerSocket(); + try { + newServerSocket.setReuseAddress(true); + newServerSocket.bind( + new InetSocketAddress(InetAddress.getByName(this.host), this.port), + ACCEPT_BACKLOG + ); + this.serverSocket = newServerSocket; + this.running.set(true); + this.acceptThread = new Thread(this::acceptLoop, "wayang-jdbc-server-accept"); + this.acceptThread.setDaemon(true); + this.acceptThread.start(); + } catch (IOException | RuntimeException e) { + this.running.set(false); + this.serverSocket = null; + try { + newServerSocket.close(); + } catch (IOException closeException) { + e.addSuppressed(closeException); + } + throw e; + } } public int getPort() { @@ -77,23 +157,64 @@ public int getPort() { return this.serverSocket.getLocalPort(); } + public void awaitTermination() throws InterruptedException { + this.termination.await(); + } + @Override - public void close() throws IOException { + public synchronized void close() throws IOException { + if (!this.closed.compareAndSet(false, true)) { + return; + } + this.running.set(false); - if (this.serverSocket != null) { - this.serverSocket.close(); + IOException failure = null; + final ServerSocket currentServerSocket = this.serverSocket; + if (currentServerSocket != null) { + try { + currentServerSocket.close(); + } catch (IOException e) { + failure = e; + } } + for (final Socket clientSocket : this.clientSockets) { + try { + clientSocket.close(); + } catch (IOException e) { + if (failure == null) { + failure = e; + } else { + failure.addSuppressed(e); + } + } + } + this.clientSockets.clear(); this.clientExecutor.shutdownNow(); + + final Thread currentAcceptThread = this.acceptThread; + if (currentAcceptThread != null && currentAcceptThread != Thread.currentThread()) { + try { + currentAcceptThread.join(TimeUnit.SECONDS.toMillis(SHUTDOWN_TIMEOUT_SECONDS)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } try { - this.clientExecutor.awaitTermination(5, TimeUnit.SECONDS); + this.clientExecutor.awaitTermination(SHUTDOWN_TIMEOUT_SECONDS, TimeUnit.SECONDS); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } + this.dispatcher.close(); + this.termination.countDown(); + + if (failure != null) { + throw failure; + } } public static void main(final String[] args) throws IOException, SQLException, InterruptedException { final String host = args.length > 0 ? args[0] : "127.0.0.1"; - final int port = args.length > 1 ? Integer.parseInt(args[1]) : 4567; + final int port = args.length > 1 ? Integer.parseInt(args[1]) : ProtocolConstants.DEFAULT_PORT; final Configuration configuration = args.length > 2 ? new Configuration(args[2]) : new Configuration(); final WayangJdbcServer server = new WayangJdbcServer( @@ -108,19 +229,53 @@ public static void main(final String[] args) throws IOException, SQLException, I } })); server.start(); - Thread.currentThread().join(); + server.awaitTermination(); } private void acceptLoop() { while (this.running.get()) { try { final Socket socket = this.serverSocket.accept(); - this.clientExecutor.submit(new JdbcClientHandler(socket, this.dispatcher)); - } catch (IOException e) { + try { + socket.setKeepAlive(true); + socket.setTcpNoDelay(true); + } catch (IOException e) { + this.closeClientSocket(socket); + continue; + } + this.clientSockets.add(socket); + if (!this.running.get()) { + this.closeClientSocket(socket); + return; + } + try { + this.clientExecutor.submit(new JdbcClientHandler( + socket, + this.dispatcher, + () -> this.clientSockets.remove(socket) + )); + } catch (RejectedExecutionException e) { + this.closeClientSocket(socket); + } + } catch (IOException | RuntimeException e) { if (this.running.get()) { - this.running.set(false); + try { + this.close(); + } catch (IOException closeException) { + e.addSuppressed(closeException); + } } + return; } } } + + private void closeClientSocket(final Socket socket) { + this.clientSockets.remove(socket); + try { + socket.close(); + } catch (IOException ignored) { + // The socket is already unusable; no additional recovery is possible. + } + } } diff --git a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java index da218e731..1b3036dfb 100644 --- a/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java +++ b/wayang-jdbc/wayang-jdbc-server/src/main/java/org/apache/wayang/jdbc/server/WayangSqlQueryExecutor.java @@ -42,6 +42,14 @@ public WayangSqlQueryExecutor(final SqlContext sqlContext) { this.sqlContext = sqlContext; } + /** + * Returns the SQL context used by this executor so that server components + * can use the same configured Calcite catalog for metadata discovery. + */ + public SqlContext getSqlContext() { + return this.sqlContext; + } + @Override public SqlQueryResult execute(final String sql) throws SqlParseException { return this.sqlContext.executeSqlWithMetadata(sql); diff --git a/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/CursorStoreTest.java b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/CursorStoreTest.java new file mode 100644 index 000000000..a59557c98 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/CursorStoreTest.java @@ -0,0 +1,119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class CursorStoreTest { + + @Test + void fetchAdvancesOnlyAfterResponseFactorySucceeds() { + final CursorStore store = new CursorStore(); + final String cursorId = store.openCursor("connection-1", "statement-1", rows(), 0); + + assertThrows( + IllegalStateException.class, + () -> store.fetch("connection-1", cursorId, 2, batch -> { + throw new IllegalStateException("Could not encode response."); + }) + ); + + final CursorStore.FetchBatch firstBatch = store.fetch("connection-1", cursorId, 2); + assertEquals(Arrays.asList(Collections.singletonList(1), Collections.singletonList(2)), firstBatch.getRows()); + assertTrue(firstBatch.hasMoreRows()); + + final CursorStore.FetchBatch secondBatch = store.fetch("connection-1", cursorId, 2); + assertEquals(Collections.singletonList(Collections.singletonList(3)), secondBatch.getRows()); + assertFalse(secondBatch.hasMoreRows()); + assertNull(store.fetch("connection-1", cursorId, 1)); + } + + @Test + void openCursorAddsOnlyAfterResponseFactorySucceeds() { + final CursorStore store = new CursorStore(); + final AtomicReference exposedCursorId = new AtomicReference<>(); + + assertThrows( + IllegalStateException.class, + () -> store.openCursor("connection-1", "statement-1", rows(), 1, cursorId -> { + exposedCursorId.set(cursorId); + throw new IllegalStateException("Could not build response."); + }) + ); + + assertNull(store.fetch("connection-1", exposedCursorId.get(), 1)); + } + + @Test + void openingCursorForStatementReplacesPreviousCursor() { + final CursorStore store = new CursorStore(); + final String firstCursorId = store.openCursor("connection-1", "statement-1", rows(), 0); + final String secondCursorId = store.openCursor("connection-1", "statement-1", rows(), 1); + + assertNull(store.fetch("connection-1", firstCursorId, 1)); + assertEquals( + Collections.singletonList(Collections.singletonList(2)), + store.fetch("connection-1", secondCursorId, 1).getRows() + ); + } + + @Test + void closeConnectionRemovesConnectionCursorsOnly() { + final CursorStore store = new CursorStore(); + final String firstCursorId = store.openCursor("connection-1", "statement-1", rows(), 0); + final String secondCursorId = store.openCursor("connection-2", "statement-1", rows(), 0); + + store.closeConnection("connection-1"); + + assertNull(store.fetch("connection-1", firstCursorId, 1)); + assertEquals( + Collections.singletonList(Collections.singletonList(1)), + store.fetch("connection-2", secondCursorId, 1).getRows() + ); + } + + @Test + void enforcesCursorCapacity() { + final CursorStore store = new CursorStore(1, 1); + store.openCursor("connection-1", "statement-1", rows(), 0); + + assertThrows( + CursorStore.CapacityException.class, + () -> store.openCursor("connection-2", "statement-1", rows(), 0) + ); + } + + private static List> rows() { + return Arrays.asList( + Collections.singletonList(1), + Collections.singletonList(2), + Collections.singletonList(3) + ); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProviderTest.java b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProviderTest.java new file mode 100644 index 000000000..c58b504f9 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/DefaultSqlMetadataProviderTest.java @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.wayang.api.sql.context.SqlCatalogMetadata; +import org.apache.wayang.api.sql.context.SqlColumn; +import org.apache.wayang.api.sql.context.SqlContext; +import org.apache.wayang.api.sql.context.SqlSchemaMetadata; +import org.apache.wayang.api.sql.context.SqlTableMetadata; +import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; +import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; +import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.MetadataType; + +import org.junit.jupiter.api.Test; + +import java.sql.DatabaseMetaData; +import java.sql.Types; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +class DefaultSqlMetadataProviderTest { + + @Test + void getSchemasAppliesExactCatalogAndCaseSensitivePattern() throws Exception { + final DefaultSqlMetadataProvider provider = this.provider(); + final JdbcServerSession session = session(); + + final MetadataResultResponse response = provider.getSchemas( + session, + new GetSchemasRequest("connection-1", "analytics", "Pub%") + ); + assertEquals(MetadataType.SCHEMAS, response.getMetadataType()); + assertEquals(Collections.singletonList(Arrays.asList("Public", "analytics")), response.getRows()); + + final MetadataResultResponse lowerCasePatternResponse = provider.getSchemas( + session, + new GetSchemasRequest("connection-1", "analytics", "pub%") + ); + assertEquals(Collections.emptyList(), lowerCasePatternResponse.getRows()); + + final MetadataResultResponse catalogPatternResponse = provider.getSchemas( + session, + new GetSchemasRequest("connection-1", "ana%", "Pub%") + ); + assertEquals(Collections.emptyList(), catalogPatternResponse.getRows()); + } + + @Test + void getTablesAppliesPatternTypeAndSortOrder() throws Exception { + final DefaultSqlMetadataProvider provider = this.provider(); + + final MetadataResultResponse response = provider.getTables( + session(), + new GetTablesRequest("connection-1", "analytics", "%", "%PEOPLE", List.of("TABLE")) + ); + + assertEquals(MetadataType.TABLES, response.getMetadataType()); + assertEquals(1, response.getRows().size()); + assertEquals("Public", response.getRows().get(0).get(1)); + assertEquals("PEOPLE", response.getRows().get(0).get(2)); + assertEquals("TABLE", response.getRows().get(0).get(3)); + + final MetadataResultResponse emptyTypesResponse = provider.getTables( + session(), + new GetTablesRequest("connection-1", "analytics", "%", "%PEOPLE", Collections.emptyList()) + ); + assertEquals(Collections.emptyList(), emptyTypesResponse.getRows()); + } + + @Test + void getColumnsAppliesEscapedPatternAndColumnAttributes() throws Exception { + final DefaultSqlMetadataProvider provider = this.provider(); + + final MetadataResultResponse response = provider.getColumns( + session(), + new GetColumnsRequest("connection-1", "analytics", "Public", "PEOPLE", "NA\\_ME") + ); + + assertEquals(MetadataType.COLUMNS, response.getMetadataType()); + assertEquals(1, response.getRows().size()); + + final List row = response.getRows().get(0); + assertEquals("analytics", row.get(0)); + assertEquals("Public", row.get(1)); + assertEquals("PEOPLE", row.get(2)); + assertEquals("NA_ME", row.get(3)); + assertEquals(Types.VARCHAR, row.get(4)); + assertEquals("VARCHAR", row.get(5)); + assertEquals(64, row.get(6)); + assertEquals(DatabaseMetaData.columnNullable, row.get(10)); + assertEquals(2, row.get(16)); + assertEquals("YES", row.get(17)); + assertEquals("NO", row.get(22)); + assertEquals("NO", row.get(23)); + } + + @Test + void getColumnsOrdersByCatalogSchemaTableAndOrdinal() throws Exception { + final DefaultSqlMetadataProvider provider = this.provider(); + + final MetadataResultResponse response = provider.getColumns( + session(), + new GetColumnsRequest("connection-1", "analytics", "%", "%", "%") + ); + + assertEquals(Arrays.asList("ID", "NA_ME", "VIEW_ID"), Arrays.asList( + response.getRows().get(0).get(3), + response.getRows().get(1).get(3), + response.getRows().get(2).get(3) + )); + } + + private DefaultSqlMetadataProvider provider() throws Exception { + final SqlContext sqlContext = mock(SqlContext.class); + when(sqlContext.getCatalogMetadata()).thenReturn(new SqlCatalogMetadata(Collections.singletonList( + new SqlSchemaMetadata("Public", Arrays.asList( + new SqlTableMetadata("PEOPLE", "TABLE", Arrays.asList( + new SqlColumn("ID", "ID", "INTEGER", Types.INTEGER, 10, 0, false), + new SqlColumn("NA_ME", "NA_ME", "VARCHAR", Types.VARCHAR, 64, 0, true) + )), + new SqlTableMetadata("V_PEOPLE", "VIEW", Collections.singletonList( + new SqlColumn("VIEW_ID", "VIEW_ID", "INTEGER", Types.INTEGER, 10, 0, false) + )) + )) + ))); + return new DefaultSqlMetadataProvider(sqlContext); + } + + private static JdbcServerSession session() { + return new JdbcServerSession( + "connection-1", + "client-1", + "user", + "analytics", + Collections.emptyMap() + ); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcherTest.java b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcherTest.java new file mode 100644 index 000000000..5c26efbb4 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcRequestDispatcherTest.java @@ -0,0 +1,241 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.wayang.api.sql.context.SqlColumn; +import org.apache.wayang.api.sql.context.SqlQueryResult; +import org.apache.wayang.basic.data.Record; +import org.apache.wayang.jdbc.protocol.MessageEnvelope; +import org.apache.wayang.jdbc.protocol.MessageType; +import org.apache.wayang.jdbc.protocol.io.ProtocolMessageCodec; +import org.apache.wayang.jdbc.protocol.message.CloseConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.ErrorCode; +import org.apache.wayang.jdbc.protocol.message.ErrorResponse; +import org.apache.wayang.jdbc.protocol.message.ExecuteQueryRequest; +import org.apache.wayang.jdbc.protocol.message.FetchRequest; +import org.apache.wayang.jdbc.protocol.message.FetchResponse; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionRequest; +import org.apache.wayang.jdbc.protocol.message.OpenConnectionResponse; +import org.apache.wayang.jdbc.protocol.message.QueryResultResponse; + +import org.junit.jupiter.api.Test; + +import java.sql.Types; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class JdbcRequestDispatcherTest { + + private final ProtocolMessageCodec codec = new ProtocolMessageCodec(); + + @Test + void rejectsWriteSqlBeforeExecution() throws Exception { + final RecordingQueryExecutor executor = new RecordingQueryExecutor(); + final JdbcRequestDispatcher dispatcher = new JdbcRequestDispatcher(executor, new DefaultSqlMetadataProvider()); + final String connectionId = this.openConnection(dispatcher, "client-a"); + + final MessageEnvelope response = dispatcher.dispatch( + this.request( + "execute-1", + MessageType.EXECUTE_QUERY, + new ExecuteQueryRequest(connectionId, "statement-1", "INSERT INTO t VALUES (1)", 1) + ), + "client-a" + ); + final ErrorResponse error = this.payloadAs(response, ErrorResponse.class); + + assertEquals(MessageType.ERROR, response.getType()); + assertEquals(ErrorCode.UNSUPPORTED_OPERATION, error.getErrorCode()); + assertEquals("0A000", error.getSqlState()); + assertEquals(Collections.emptyList(), executor.getExecutedSql()); + } + + @Test + void pagesAndClosesCursorAfterFinalFetch() throws Exception { + final JdbcRequestDispatcher dispatcher = new JdbcRequestDispatcher( + new RecordingQueryExecutor(), + new DefaultSqlMetadataProvider() + ); + final String connectionId = this.openConnection(dispatcher, "client-a"); + + final MessageEnvelope executeResponse = dispatcher.dispatch( + this.request( + "execute-1", + MessageType.EXECUTE_QUERY, + new ExecuteQueryRequest(connectionId, "statement-1", "SELECT * FROM t", 1) + ), + "client-a" + ); + final QueryResultResponse firstBatch = this.payloadAs(executeResponse, QueryResultResponse.class); + assertEquals(MessageType.QUERY_RESULT, executeResponse.getType()); + assertEquals(Collections.singletonList(Collections.singletonList(1)), firstBatch.getRows()); + assertTrue(firstBatch.isHasMoreRows()); + assertNotNull(firstBatch.getCursorId()); + + final MessageEnvelope fetchResponse = dispatcher.dispatch( + this.request( + "fetch-1", + MessageType.FETCH, + new FetchRequest(connectionId, firstBatch.getCursorId(), 5) + ), + "client-a" + ); + final FetchResponse finalBatch = this.payloadAs(fetchResponse, FetchResponse.class); + + assertEquals(MessageType.FETCH_RESULT, fetchResponse.getType()); + assertEquals( + Arrays.asList(Collections.singletonList(2), Collections.singletonList(3)), + finalBatch.getRows() + ); + assertFalse(finalBatch.isHasMoreRows()); + + final MessageEnvelope staleFetchResponse = dispatcher.dispatch( + this.request( + "fetch-2", + MessageType.FETCH, + new FetchRequest(connectionId, firstBatch.getCursorId(), 1) + ), + "client-a" + ); + final ErrorResponse staleFetchError = this.payloadAs(staleFetchResponse, ErrorResponse.class); + assertEquals(MessageType.ERROR, staleFetchResponse.getType()); + assertEquals(ErrorCode.INVALID_REQUEST, staleFetchError.getErrorCode()); + } + + @Test + void enforcesClientOwnership() throws Exception { + final JdbcRequestDispatcher dispatcher = new JdbcRequestDispatcher( + new RecordingQueryExecutor(), + new DefaultSqlMetadataProvider() + ); + final String connectionId = this.openConnection(dispatcher, "client-a"); + + final MessageEnvelope response = dispatcher.dispatch( + this.request( + "execute-1", + MessageType.EXECUTE_QUERY, + new ExecuteQueryRequest(connectionId, "statement-1", "SELECT * FROM t", 1) + ), + "client-b" + ); + final ErrorResponse error = this.payloadAs(response, ErrorResponse.class); + + assertEquals(MessageType.ERROR, response.getType()); + assertEquals(ErrorCode.INVALID_REQUEST, error.getErrorCode()); + } + + @Test + void closeConnectionReleasesCursors() throws Exception { + final JdbcRequestDispatcher dispatcher = new JdbcRequestDispatcher( + new RecordingQueryExecutor(), + new DefaultSqlMetadataProvider() + ); + final String connectionId = this.openConnection(dispatcher, "client-a"); + final QueryResultResponse firstBatch = this.payloadAs( + dispatcher.dispatch( + this.request( + "execute-1", + MessageType.EXECUTE_QUERY, + new ExecuteQueryRequest(connectionId, "statement-1", "SELECT * FROM t", 1) + ), + "client-a" + ), + QueryResultResponse.class + ); + + final MessageEnvelope closeResponse = dispatcher.dispatch( + this.request( + "close-1", + MessageType.CLOSE_CONNECTION, + new CloseConnectionRequest(connectionId) + ), + "client-a" + ); + assertEquals(MessageType.CLOSE_CONNECTION_OK, closeResponse.getType()); + + final MessageEnvelope fetchResponse = dispatcher.dispatch( + this.request( + "fetch-1", + MessageType.FETCH, + new FetchRequest(connectionId, firstBatch.getCursorId(), 1) + ), + "client-a" + ); + final ErrorResponse error = this.payloadAs(fetchResponse, ErrorResponse.class); + assertEquals(MessageType.ERROR, fetchResponse.getType()); + assertEquals(ErrorCode.INVALID_REQUEST, error.getErrorCode()); + } + + private String openConnection( + final JdbcRequestDispatcher dispatcher, + final String clientId + ) throws Exception { + final MessageEnvelope response = dispatcher.dispatch( + this.request( + "open-1", + MessageType.OPEN_CONNECTION, + new OpenConnectionRequest("user", "analytics", Collections.emptyMap()) + ), + clientId + ); + final OpenConnectionResponse payload = this.payloadAs(response, OpenConnectionResponse.class); + assertEquals(MessageType.OPEN_CONNECTION_OK, response.getType()); + return payload.getConnectionId(); + } + + private MessageEnvelope request( + final String requestId, + final MessageType messageType, + final Object payload + ) { + return this.codec.toEnvelope(requestId, messageType, payload); + } + + private T payloadAs( + final MessageEnvelope envelope, + final Class payloadClass + ) throws Exception { + return this.codec.payloadAs(envelope, payloadClass); + } + + private static class RecordingQueryExecutor implements SqlQueryExecutor { + + private final List executedSql = new ArrayList<>(); + + @Override + public SqlQueryResult execute(final String sql) throws SqlParseException { + this.executedSql.add(sql); + return new SqlQueryResult( + Collections.singletonList(new SqlColumn("VALUE", "VALUE", "INTEGER", Types.INTEGER, 10, 0, false)), + Arrays.asList(new Record(1), new Record(2), new Record(3)) + ); + } + + List getExecutedSql() { + return List.copyOf(this.executedSql); + } + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcServerSessionManagerTest.java b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcServerSessionManagerTest.java new file mode 100644 index 000000000..811c2ba24 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/JdbcServerSessionManagerTest.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.junit.jupiter.api.Test; + +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class JdbcServerSessionManagerTest { + + @Test + void enforcesClientOwnershipAndCapacity() { + final JdbcServerSessionManager manager = new JdbcServerSessionManager(2, 1); + + final String firstConnectionId = manager.openConnection( + "client-a", + "user-a", + "analytics", + Collections.singletonMap("property", "value") + ); + + final JdbcServerSession session = manager.getSession(firstConnectionId, "client-a"); + assertNotNull(session); + assertEquals("client-a", session.getClientId()); + assertEquals("user-a", session.getUsername()); + assertEquals("analytics", session.getDatabase()); + assertEquals("value", session.getProperties().get("property")); + assertNull(manager.getSession(firstConnectionId, "client-b")); + + assertThrows( + JdbcServerSessionManager.CapacityException.class, + () -> manager.openConnection("client-a", null, null, null) + ); + + final String secondConnectionId = manager.openConnection("client-b", null, null, null); + assertTrue(manager.isOpen(secondConnectionId)); + + assertThrows( + JdbcServerSessionManager.CapacityException.class, + () -> manager.openConnection("client-c", null, null, null) + ); + } + + @Test + void closeClientRemovesOnlyOwnedSessions() { + final JdbcServerSessionManager manager = new JdbcServerSessionManager(3, 2); + final String firstConnectionId = manager.openConnection("client-a", null, null, null); + final String secondConnectionId = manager.openConnection("client-a", null, null, null); + final String thirdConnectionId = manager.openConnection("client-b", null, null, null); + + final List closedConnectionIds = manager.closeClient("client-a"); + + assertEquals(2, closedConnectionIds.size()); + assertTrue(closedConnectionIds.contains(firstConnectionId)); + assertTrue(closedConnectionIds.contains(secondConnectionId)); + assertFalse(manager.isOpen(firstConnectionId)); + assertFalse(manager.isOpen(secondConnectionId)); + assertTrue(manager.isOpen(thirdConnectionId)); + } +} diff --git a/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/WayangJdbcServerJavaClientTest.java b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/WayangJdbcServerJavaClientTest.java new file mode 100644 index 000000000..f3aa76537 --- /dev/null +++ b/wayang-jdbc/wayang-jdbc-server/src/test/java/org/apache/wayang/jdbc/server/WayangJdbcServerJavaClientTest.java @@ -0,0 +1,492 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.wayang.jdbc.server; + +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.wayang.api.sql.context.SqlColumn; +import org.apache.wayang.api.sql.context.SqlQueryResult; +import org.apache.wayang.basic.data.Record; +import org.apache.wayang.jdbc.driver.WayangDriver; +import org.apache.wayang.jdbc.protocol.message.ColumnInfo; +import org.apache.wayang.jdbc.protocol.message.GetColumnsRequest; +import org.apache.wayang.jdbc.protocol.message.GetSchemasRequest; +import org.apache.wayang.jdbc.protocol.message.GetTablesRequest; +import org.apache.wayang.jdbc.protocol.message.MetadataResultResponse; +import org.apache.wayang.jdbc.protocol.message.MetadataType; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.Date; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.Statement; +import java.sql.Types; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class WayangJdbcServerJavaClientTest { + + @BeforeAll + static void registerDriver() throws Exception { + Class.forName(WayangDriver.class.getName()); + } + + @Test + void driverManagerClientExecutesSelectWithPagingAndTypedGetters() throws Exception { + final FakeQueryExecutor executor = new FakeQueryExecutor(); + try (WayangJdbcServer server = new WayangJdbcServer( + "127.0.0.1", + 0, + executor, + new FakeMetadataProvider() + )) { + server.start(); + + try (Connection connection = DriverManager.getConnection(this.url(server), "test-user", "test-password"); + Statement statement = connection.createStatement()) { + assertTrue(connection.isReadOnly()); + assertTrue(connection.getAutoCommit()); + assertEquals("analytics", connection.getCatalog()); + assertTrue(connection.isValid(1)); + + statement.setFetchSize(2); + + try (ResultSet resultSet = statement.executeQuery("SELECT * FROM people ORDER BY ID")) { + final ResultSetMetaData metaData = resultSet.getMetaData(); + assertEquals(6, metaData.getColumnCount()); + assertEquals("ID", metaData.getColumnLabel(1)); + assertEquals(Types.INTEGER, metaData.getColumnType(1)); + assertEquals(Types.DECIMAL, metaData.getColumnType(3)); + assertEquals(ResultSetMetaData.columnNullable, metaData.isNullable(3)); + + assertTrue(resultSet.next()); + assertEquals(1, resultSet.getInt("id")); + assertEquals(Integer.valueOf(1), resultSet.getObject("ID", Integer.class)); + assertEquals("alice", resultSet.getString("NAME")); + assertFalse(resultSet.wasNull()); + assertEquals(0, new BigDecimal("10.50").compareTo(resultSet.getBigDecimal("AMOUNT"))); + assertTrue(resultSet.getBoolean("ACTIVE")); + assertEquals(Date.valueOf(LocalDate.of(2026, 7, 27)), resultSet.getObject("CREATED_ON")); + assertArrayEquals(new byte[]{1, 2, 3}, resultSet.getBytes("PAYLOAD")); + + assertTrue(resultSet.next()); + assertEquals(2, resultSet.getInt(1)); + assertEquals("bob", resultSet.getString(2)); + + assertTrue(resultSet.next()); + assertEquals(3, resultSet.getInt(1)); + assertNullValueWasReported(resultSet); + + assertTrue(resultSet.next()); + assertEquals(4, resultSet.getInt(1)); + + assertTrue(resultSet.next()); + assertEquals(5, resultSet.getInt(1)); + assertFalse(resultSet.next()); + } + } + } + + assertEquals(List.of("SELECT * FROM people ORDER BY ID"), executor.getExecutedSql()); + } + + @Test + void javaClientRejectsWritesBeforeExecution() throws Exception { + final FakeQueryExecutor executor = new FakeQueryExecutor(); + try (WayangJdbcServer server = new WayangJdbcServer( + "127.0.0.1", + 0, + executor, + new FakeMetadataProvider() + )) { + server.start(); + + try (Connection connection = DriverManager.getConnection(this.url(server)); + Statement statement = connection.createStatement()) { + final SQLFeatureNotSupportedException exception = assertThrows( + SQLFeatureNotSupportedException.class, + () -> statement.executeQuery("INSERT INTO people VALUES (1, 'blocked')") + ); + + assertEquals("0A000", exception.getSQLState()); + assertEquals(Collections.emptyList(), executor.getExecutedSql()); + } + } + } + + @Test + void javaClientBrowsesDatabaseMetadata() throws Exception { + final FakeMetadataProvider metadataProvider = new FakeMetadataProvider(); + try (WayangJdbcServer server = new WayangJdbcServer( + "127.0.0.1", + 0, + new FakeQueryExecutor(), + metadataProvider + )) { + server.start(); + + try (Connection connection = DriverManager.getConnection(this.url(server)); + ResultSet schemas = connection.getMetaData().getSchemas("analytics", "pub%"); + ResultSet tables = connection.getMetaData().getTables( + "analytics", + "public", + "PEOPLE", + new String[]{"TABLE"} + ); + ResultSet columns = connection.getMetaData().getColumns( + "analytics", + "public", + "PEOPLE", + "%" + )) { + final DatabaseMetaData metaData = connection.getMetaData(); + assertTrue(metaData.isReadOnly()); + assertTrue(metaData.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY)); + assertTrue(metaData.supportsResultSetConcurrency( + ResultSet.TYPE_FORWARD_ONLY, + ResultSet.CONCUR_READ_ONLY + )); + assertFalse(metaData.supportsTransactions()); + + assertTrue(schemas.next()); + assertEquals("public", schemas.getString("TABLE_SCHEM")); + assertEquals("analytics", schemas.getString("TABLE_CATALOG")); + assertFalse(schemas.next()); + + assertTrue(tables.next()); + assertEquals("analytics", tables.getString("TABLE_CAT")); + assertEquals("public", tables.getString("TABLE_SCHEM")); + assertEquals("PEOPLE", tables.getString("TABLE_NAME")); + assertEquals("TABLE", tables.getString("TABLE_TYPE")); + assertFalse(tables.next()); + + assertTrue(columns.next()); + assertEquals("ID", columns.getString("COLUMN_NAME")); + assertEquals(Types.INTEGER, columns.getInt("DATA_TYPE")); + assertEquals(1, columns.getInt("ORDINAL_POSITION")); + + assertTrue(columns.next()); + assertEquals("NAME", columns.getString("COLUMN_NAME")); + assertEquals(Types.VARCHAR, columns.getInt("DATA_TYPE")); + assertEquals(2, columns.getInt("ORDINAL_POSITION")); + assertFalse(columns.next()); + } + } + + assertEquals("analytics", metadataProvider.getLastSchemasRequest().getCatalog()); + assertEquals("pub%", metadataProvider.getLastSchemasRequest().getSchemaPattern()); + assertEquals("PEOPLE", metadataProvider.getLastTablesRequest().getTableNamePattern()); + assertArrayEquals( + new String[]{"TABLE"}, + metadataProvider.getLastTablesRequest().getTableTypes().toArray(new String[0]) + ); + assertEquals("%", metadataProvider.getLastColumnsRequest().getColumnNamePattern()); + } + + @Test + void isValidUsesServerPing() throws Exception { + final Connection connection; + final WayangJdbcServer server = new WayangJdbcServer( + "127.0.0.1", + 0, + new FakeQueryExecutor(), + new FakeMetadataProvider() + ); + server.start(); + connection = DriverManager.getConnection(this.url(server)); + assertTrue(connection.isValid(1)); + + server.close(); + assertFalse(connection.isValid(1)); + connection.close(); + } + + private String url(final WayangJdbcServer server) { + return "jdbc:wayang://127.0.0.1:" + server.getPort() + "/analytics?connectTimeout=5000"; + } + + private static void assertNullValueWasReported(final ResultSet resultSet) throws SQLException { + assertEquals(0, resultSet.getInt("AMOUNT")); + assertTrue(resultSet.wasNull()); + assertEquals(null, resultSet.getString("PAYLOAD")); + assertTrue(resultSet.wasNull()); + } + + private static ColumnInfo column(final String name, final int jdbcType) { + return new ColumnInfo( + name, + name, + null, + null, + jdbcTypeName(jdbcType), + jdbcType, + ResultSetMetaData.columnNullable, + 64, + 0 + ); + } + + private static String jdbcTypeName(final int jdbcType) { + switch (jdbcType) { + case Types.INTEGER: + return "INTEGER"; + case Types.DECIMAL: + return "DECIMAL"; + case Types.BOOLEAN: + return "BOOLEAN"; + case Types.DATE: + return "DATE"; + case Types.VARBINARY: + return "VARBINARY"; + default: + return "VARCHAR"; + } + } + + private static class FakeQueryExecutor implements SqlQueryExecutor { + + private final List executedSql = new ArrayList<>(); + + @Override + public SqlQueryResult execute(final String sql) throws SqlParseException { + this.executedSql.add(sql); + return new SqlQueryResult( + Arrays.asList( + new SqlColumn("ID", "ID", "INTEGER", Types.INTEGER, 10, 0, false), + new SqlColumn("NAME", "NAME", "VARCHAR", Types.VARCHAR, 64, 0, true), + new SqlColumn("AMOUNT", "AMOUNT", "DECIMAL", Types.DECIMAL, 10, 2, true), + new SqlColumn("ACTIVE", "ACTIVE", "BOOLEAN", Types.BOOLEAN, 1, 0, false), + new SqlColumn("CREATED_ON", "CREATED_ON", "DATE", Types.DATE, 10, 0, true), + new SqlColumn("PAYLOAD", "PAYLOAD", "VARBINARY", Types.VARBINARY, 64, 0, true) + ), + Arrays.asList( + new Record( + 1, + "alice", + new BigDecimal("10.50"), + true, + LocalDate.of(2026, 7, 27), + new byte[]{1, 2, 3} + ), + new Record( + 2, + "bob", + new BigDecimal("20.00"), + false, + LocalDate.of(2026, 7, 28), + new byte[]{4, 5, 6} + ), + new Record(3, "charlie", null, true, null, null), + new Record( + 4, + "dana", + new BigDecimal("40.25"), + false, + LocalDate.of(2026, 7, 29), + new byte[]{7} + ), + new Record( + 5, + "erin", + new BigDecimal("50.75"), + true, + LocalDate.of(2026, 7, 30), + new byte[]{8, 9} + ) + ) + ); + } + + List getExecutedSql() { + return List.copyOf(this.executedSql); + } + } + + private static class FakeMetadataProvider implements SqlMetadataProvider { + + private GetSchemasRequest lastSchemasRequest; + + private GetTablesRequest lastTablesRequest; + + private GetColumnsRequest lastColumnsRequest; + + @Override + public MetadataResultResponse getSchemas( + final JdbcServerSession session, + final GetSchemasRequest request + ) { + this.lastSchemasRequest = request; + return new MetadataResultResponse( + session.getConnectionId(), + MetadataType.SCHEMAS, + Arrays.asList(column("TABLE_SCHEM", Types.VARCHAR), column("TABLE_CATALOG", Types.VARCHAR)), + Collections.singletonList(Arrays.asList("public", "analytics")) + ); + } + + @Override + public MetadataResultResponse getTables( + final JdbcServerSession session, + final GetTablesRequest request + ) { + this.lastTablesRequest = request; + return new MetadataResultResponse( + session.getConnectionId(), + MetadataType.TABLES, + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("TABLE_TYPE", Types.VARCHAR), + column("REMARKS", Types.VARCHAR), + column("TYPE_CAT", Types.VARCHAR), + column("TYPE_SCHEM", Types.VARCHAR), + column("TYPE_NAME", Types.VARCHAR), + column("SELF_REFERENCING_COL_NAME", Types.VARCHAR), + column("REF_GENERATION", Types.VARCHAR) + ), + Collections.singletonList(Arrays.asList( + "analytics", + "public", + "PEOPLE", + "TABLE", + null, + null, + null, + null, + null, + null + )) + ); + } + + @Override + public MetadataResultResponse getColumns( + final JdbcServerSession session, + final GetColumnsRequest request + ) { + this.lastColumnsRequest = request; + return new MetadataResultResponse( + session.getConnectionId(), + MetadataType.COLUMNS, + Arrays.asList( + column("TABLE_CAT", Types.VARCHAR), + column("TABLE_SCHEM", Types.VARCHAR), + column("TABLE_NAME", Types.VARCHAR), + column("COLUMN_NAME", Types.VARCHAR), + column("DATA_TYPE", Types.INTEGER), + column("TYPE_NAME", Types.VARCHAR), + column("COLUMN_SIZE", Types.INTEGER), + column("BUFFER_LENGTH", Types.INTEGER), + column("DECIMAL_DIGITS", Types.INTEGER), + column("NUM_PREC_RADIX", Types.INTEGER), + column("NULLABLE", Types.INTEGER), + column("REMARKS", Types.VARCHAR), + column("COLUMN_DEF", Types.VARCHAR), + column("SQL_DATA_TYPE", Types.INTEGER), + column("SQL_DATETIME_SUB", Types.INTEGER), + column("CHAR_OCTET_LENGTH", Types.INTEGER), + column("ORDINAL_POSITION", Types.INTEGER), + column("IS_NULLABLE", Types.VARCHAR), + column("SCOPE_CATALOG", Types.VARCHAR), + column("SCOPE_SCHEMA", Types.VARCHAR), + column("SCOPE_TABLE", Types.VARCHAR), + column("SOURCE_DATA_TYPE", Types.SMALLINT), + column("IS_AUTOINCREMENT", Types.VARCHAR), + column("IS_GENERATEDCOLUMN", Types.VARCHAR) + ), + Arrays.asList( + columnRow("ID", Types.INTEGER, "INTEGER", 10, 0, 1, "NO"), + columnRow("NAME", Types.VARCHAR, "VARCHAR", 64, 0, 2, "YES") + ) + ); + } + + GetSchemasRequest getLastSchemasRequest() { + assertNotNull(this.lastSchemasRequest); + return this.lastSchemasRequest; + } + + GetTablesRequest getLastTablesRequest() { + assertNotNull(this.lastTablesRequest); + return this.lastTablesRequest; + } + + GetColumnsRequest getLastColumnsRequest() { + assertNotNull(this.lastColumnsRequest); + return this.lastColumnsRequest; + } + + private static List columnRow( + final String columnName, + final int jdbcType, + final String typeName, + final int precision, + final int scale, + final int ordinal, + final String nullable + ) { + return Arrays.asList( + "analytics", + "public", + "PEOPLE", + columnName, + jdbcType, + typeName, + precision, + null, + scale, + jdbcType == Types.INTEGER ? 10 : null, + "YES".equals(nullable) + ? DatabaseMetaData.columnNullable + : DatabaseMetaData.columnNoNulls, + null, + null, + null, + null, + jdbcType == Types.VARCHAR ? precision : null, + ordinal, + nullable, + null, + null, + null, + null, + "NO", + "NO" + ); + } + } +} From c67ef5b976de23754400011a47a1c8d54296c16a Mon Sep 17 00:00:00 2001 From: Makarand Milind Hinge Date: Sun, 9 Aug 2026 13:09:58 +0530 Subject: [PATCH 3/6] Add interactive CSV demo for Wayang JDBC --- .../demo/CsvSelectionOperationsDemo.java | 453 + wayang-jdbc/demo/README.md | 31 +- wayang-jdbc/demo/WayangJdbcDemoClient.java | 58 - .../demo/data/ecommerce_sales_analytics.csv | 5001 +++++++++ .../demo/data/fifa_world_cup_all_matches.csv | 1070 ++ .../demo/data/heart_disease_risk_2026.csv | 9001 +++++++++++++++++ .../demo/data/student_performance_dataset.csv | 1001 ++ wayang-jdbc/demo/run-demo-client.sh | 15 +- 8 files changed, 16546 insertions(+), 84 deletions(-) create mode 100644 wayang-jdbc/demo/CsvSelectionOperationsDemo.java delete mode 100644 wayang-jdbc/demo/WayangJdbcDemoClient.java create mode 100644 wayang-jdbc/demo/data/ecommerce_sales_analytics.csv create mode 100644 wayang-jdbc/demo/data/fifa_world_cup_all_matches.csv create mode 100644 wayang-jdbc/demo/data/heart_disease_risk_2026.csv create mode 100644 wayang-jdbc/demo/data/student_performance_dataset.csv diff --git a/wayang-jdbc/demo/CsvSelectionOperationsDemo.java b/wayang-jdbc/demo/CsvSelectionOperationsDemo.java new file mode 100644 index 000000000..ad0281f5c --- /dev/null +++ b/wayang-jdbc/demo/CsvSelectionOperationsDemo.java @@ -0,0 +1,453 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.BufferedReader; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Optional; +import java.util.Scanner; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class CsvSelectionOperationsDemo { + + private static final Path DEFAULT_DATA_DIRECTORY = Paths.get("wayang-jdbc", "demo", "data"); + + private static final String DEFAULT_SCHEMA = "fs"; + + private static final int SAMPLE_ROW_LIMIT = 5; + + private static final int NUMERIC_SUMMARY_LIMIT = 10; + + private static final DecimalFormat DECIMAL_FORMAT = + new DecimalFormat("0.##", DecimalFormatSymbols.getInstance(Locale.ROOT)); + + public static void main(final String[] args) throws IOException { + final Path dataDirectory = args.length > 0 ? Paths.get(args[0]) : DEFAULT_DATA_DIRECTORY; + final String schema = args.length > 1 ? args[1] : DEFAULT_SCHEMA; + + final List csvFiles = listCsvFiles(dataDirectory); + if (csvFiles.isEmpty()) { + System.out.println("No CSV files found in " + dataDirectory.toAbsolutePath().normalize()); + return; + } + + printAvailableCsvFiles(csvFiles, schema); + + final Path selectedFile = selectCsvFile(csvFiles); + final CsvTable table = readCsv(selectedFile); + + System.out.println(); + System.out.println("Selected file: " + selectedFile.getFileName()); + System.out.println("SQL table name: " + schema + "." + tableName(selectedFile)); + System.out.println("Total rows: " + table.rows().size()); + + printColumns(table); + printSampleRows(table); + printNumericSummaries(table); + + if (hasColumn(table, "has_heart_disease")) { + printHeartDiseaseAnalysis(table); + } else { + printGenericCategoricalSummary(table); + } + } + + private static List listCsvFiles(final Path dataDirectory) throws IOException { + if (!Files.isDirectory(dataDirectory)) { + throw new IllegalArgumentException( + "Data directory does not exist: " + dataDirectory.toAbsolutePath().normalize() + ); + } + + try (Stream files = Files.list(dataDirectory)) { + return files + .filter(Files::isRegularFile) + .filter(CsvSelectionOperationsDemo::isCsvFile) + .sorted(Comparator.comparing(path -> path.getFileName().toString())) + .collect(Collectors.toList()); + } + } + + private static void printAvailableCsvFiles(final List csvFiles, final String schema) { + System.out.println("Available CSV files:"); + for (int index = 0; index < csvFiles.size(); index++) { + final Path csvFile = csvFiles.get(index); + System.out.printf( + Locale.ROOT, + "%d. %-40s SQL table: %s.%s%n", + index + 1, + csvFile.getFileName(), + schema, + tableName(csvFile) + ); + } + } + + private static Path selectCsvFile(final List csvFiles) { + System.out.println(); + System.out.print("Select CSV by number or name, for example heart_disease_risk: "); + + try (Scanner scanner = new Scanner(System.in)) { + while (scanner.hasNextLine()) { + final String input = scanner.nextLine().trim(); + final Optional selected = resolveSelection(input, csvFiles); + if (selected.isPresent()) { + return selected.get(); + } + + System.out.print("Invalid selection. Try number or CSV/table name: "); + } + } + + throw new IllegalArgumentException("No CSV file was selected."); + } + + private static Optional resolveSelection(final String input, final List csvFiles) { + if (input.isBlank()) { + return Optional.empty(); + } + + try { + final int selectedIndex = Integer.parseInt(input); + if (selectedIndex >= 1 && selectedIndex <= csvFiles.size()) { + return Optional.of(csvFiles.get(selectedIndex - 1)); + } + } catch (NumberFormatException ignored) { + // Continue with name-based matching. + } + + final String normalizedInput = normalize(input); + return csvFiles.stream() + .filter(path -> { + final String fileName = normalize(path.getFileName().toString()); + final String tableName = normalize(tableName(path)); + return fileName.equals(normalizedInput) + || tableName.equals(normalizedInput) + || fileName.contains(normalizedInput) + || tableName.contains(normalizedInput); + }) + .findFirst(); + } + + private static CsvTable readCsv(final Path csvFile) throws IOException { + try (BufferedReader reader = Files.newBufferedReader(csvFile, StandardCharsets.UTF_8)) { + final String headerLine = reader.readLine(); + if (headerLine == null) { + throw new IllegalArgumentException("CSV file is empty: " + csvFile); + } + + final List columns = parseCsvLine(headerLine); + final List> rows = new ArrayList<>(); + String line; + while ((line = reader.readLine()) != null) { + if (!line.isBlank()) { + rows.add(normalizeRow(parseCsvLine(line), columns.size())); + } + } + return new CsvTable(columns, rows); + } + } + + private static List normalizeRow(final List row, final int columnCount) { + final List normalized = new ArrayList<>(row); + while (normalized.size() < columnCount) { + normalized.add(""); + } + if (normalized.size() > columnCount) { + return normalized.subList(0, columnCount); + } + return normalized; + } + + private static List parseCsvLine(final String line) { + final List values = new ArrayList<>(); + final StringBuilder current = new StringBuilder(); + boolean inQuotes = false; + + for (int index = 0; index < line.length(); index++) { + final char currentChar = line.charAt(index); + if (currentChar == '"') { + if (inQuotes && index + 1 < line.length() && line.charAt(index + 1) == '"') { + current.append('"'); + index++; + } else { + inQuotes = !inQuotes; + } + } else if (currentChar == ',' && !inQuotes) { + values.add(current.toString()); + current.setLength(0); + } else { + current.append(currentChar); + } + } + values.add(current.toString()); + return values; + } + + private static void printColumns(final CsvTable table) { + System.out.println(); + System.out.println("Columns:"); + for (int index = 0; index < table.columns().size(); index++) { + System.out.println((index + 1) + ". " + table.columns().get(index)); + } + } + + private static void printSampleRows(final CsvTable table) { + System.out.println(); + System.out.println("First " + Math.min(SAMPLE_ROW_LIMIT, table.rows().size()) + " rows:"); + + for (int rowIndex = 0; rowIndex < Math.min(SAMPLE_ROW_LIMIT, table.rows().size()); rowIndex++) { + final List row = table.rows().get(rowIndex); + System.out.println("Row " + (rowIndex + 1) + ":"); + for (int columnIndex = 0; columnIndex < table.columns().size(); columnIndex++) { + System.out.println(" " + table.columns().get(columnIndex) + " = " + row.get(columnIndex)); + } + } + } + + private static void printNumericSummaries(final CsvTable table) { + System.out.println(); + System.out.println("Numeric column summaries:"); + + int printed = 0; + for (int columnIndex = 0; columnIndex < table.columns().size(); columnIndex++) { + final Stats stats = numericStats(table, columnIndex); + if (stats.count() == 0) { + continue; + } + + System.out.printf( + Locale.ROOT, + " %-30s count=%d min=%s max=%s avg=%s%n", + table.columns().get(columnIndex), + stats.count(), + format(stats.min()), + format(stats.max()), + format(stats.average()) + ); + + printed++; + if (printed >= NUMERIC_SUMMARY_LIMIT) { + break; + } + } + + if (printed == 0) { + System.out.println(" No numeric columns detected."); + } + } + + private static void printHeartDiseaseAnalysis(final CsvTable table) { + System.out.println(); + System.out.println("Heart disease analysis:"); + System.out.println("This is dataset analysis only, not medical advice."); + + printCountByColumn(table, "has_heart_disease", "Patients by heart disease flag"); + printAverageByHeartDiseaseFlag(table, "age"); + printAverageByHeartDiseaseFlag(table, "bmi"); + printAverageByHeartDiseaseFlag(table, "cholesterol_total"); + printAverageByHeartDiseaseFlag(table, "daily_steps"); + printNestedCount(table, "smoker_status", "has_heart_disease", "Heart disease flag by smoker status"); + printNestedCount(table, "sex", "has_heart_disease", "Heart disease flag by sex"); + } + + private static void printGenericCategoricalSummary(final CsvTable table) { + final Optional firstCategoricalColumn = table.columns().stream() + .filter(column -> numericStats(table, columnIndex(table, column)).count() == 0) + .findFirst(); + + firstCategoricalColumn.ifPresent(column -> + printCountByColumn(table, column, "Counts by " + column) + ); + } + + private static void printCountByColumn( + final CsvTable table, + final String columnName, + final String title + ) { + final int columnIndex = columnIndex(table, columnName); + final Map counts = new LinkedHashMap<>(); + for (final List row : table.rows()) { + final String value = row.get(columnIndex); + counts.merge(value.isBlank() ? "" : value, 1, Integer::sum); + } + + System.out.println(); + System.out.println(title + ":"); + counts.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(10) + .forEach(entry -> + System.out.println(" " + entry.getKey() + " = " + entry.getValue()) + ); + } + + private static void printAverageByHeartDiseaseFlag(final CsvTable table, final String numericColumnName) { + if (!hasColumn(table, numericColumnName)) { + return; + } + + final int groupIndex = columnIndex(table, "has_heart_disease"); + final int valueIndex = columnIndex(table, numericColumnName); + final Map statsByFlag = new LinkedHashMap<>(); + + for (final List row : table.rows()) { + final Optional value = parseDouble(row.get(valueIndex)); + if (value.isPresent()) { + statsByFlag + .computeIfAbsent(row.get(groupIndex), ignored -> new Stats()) + .accept(value.get()); + } + } + + System.out.println(); + System.out.println("Average " + numericColumnName + " by heart disease flag:"); + statsByFlag.forEach((flag, stats) -> + System.out.println(" " + flag + " = " + format(stats.average())) + ); + } + + private static void printNestedCount( + final CsvTable table, + final String groupColumnName, + final String valueColumnName, + final String title + ) { + if (!hasColumn(table, groupColumnName) || !hasColumn(table, valueColumnName)) { + return; + } + + final int groupIndex = columnIndex(table, groupColumnName); + final int valueIndex = columnIndex(table, valueColumnName); + final Map> counts = new LinkedHashMap<>(); + + for (final List row : table.rows()) { + final String group = row.get(groupIndex); + final String value = row.get(valueIndex); + counts.computeIfAbsent(group, ignored -> new LinkedHashMap<>()) + .merge(value, 1, Integer::sum); + } + + System.out.println(); + System.out.println(title + ":"); + counts.forEach((group, values) -> + System.out.println(" " + group + " -> " + values) + ); + } + + private static Stats numericStats(final CsvTable table, final int columnIndex) { + final Stats stats = new Stats(); + for (final List row : table.rows()) { + parseDouble(row.get(columnIndex)).ifPresent(stats::accept); + } + return stats; + } + + private static int columnIndex(final CsvTable table, final String columnName) { + for (int index = 0; index < table.columns().size(); index++) { + if (table.columns().get(index).equalsIgnoreCase(columnName)) { + return index; + } + } + throw new IllegalArgumentException("Column does not exist: " + columnName); + } + + private static boolean hasColumn(final CsvTable table, final String columnName) { + return table.columns().stream().anyMatch(column -> column.equalsIgnoreCase(columnName)); + } + + private static Optional parseDouble(final String value) { + if (value == null || value.isBlank()) { + return Optional.empty(); + } + try { + return Optional.of(Double.parseDouble(value)); + } catch (NumberFormatException ignored) { + return Optional.empty(); + } + } + + private static boolean isCsvFile(final Path path) { + return path.getFileName().toString().toLowerCase(Locale.ROOT).endsWith(".csv"); + } + + private static String tableName(final Path csvFile) { + final String fileName = csvFile.getFileName().toString(); + return fileName.substring(0, fileName.length() - ".csv".length()); + } + + private static String normalize(final String value) { + return value.toLowerCase(Locale.ROOT).replace(".csv", "").trim(); + } + + private static String format(final double value) { + return DECIMAL_FORMAT.format(value); + } + + private record CsvTable(List columns, List> rows) { + } + + private static final class Stats { + + private int count; + + private double sum; + + private double min = Double.POSITIVE_INFINITY; + + private double max = Double.NEGATIVE_INFINITY; + + void accept(final double value) { + this.count++; + this.sum += value; + this.min = Math.min(this.min, value); + this.max = Math.max(this.max, value); + } + + int count() { + return this.count; + } + + double min() { + return this.min; + } + + double max() { + return this.max; + } + + double average() { + if (this.count == 0) { + return 0.0; + } + return this.sum / this.count; + } + } +} diff --git a/wayang-jdbc/demo/README.md b/wayang-jdbc/demo/README.md index b1e2aab1e..ee1170705 100644 --- a/wayang-jdbc/demo/README.md +++ b/wayang-jdbc/demo/README.md @@ -19,18 +19,19 @@ # Wayang JDBC Demo -This demo is the easiest way to verify the external Wayang JDBC interface with -a plain Java client. +This demo is the easiest way to understand how the configured CSV files map to +SQL-style table names in the Wayang JDBC demo. Run from the repository root. -Terminal 1: +To start the Wayang JDBC server with the demo CSV directory exposed as schema +`fs`, run: ```bash bash wayang-jdbc/demo/start-demo-server.sh ``` -Terminal 2: +To inspect the available CSV files and run simple local analysis, run: ```bash bash wayang-jdbc/demo/run-demo-client.sh @@ -43,16 +44,18 @@ The server script: * points the Calcite file schema at `wayang-jdbc/demo/data` * starts `org.apache.wayang.jdbc.server.WayangJdbcServer` on `127.0.0.1:9999` -The client script: +The analysis script: -* builds the JDBC driver and dependencies -* compiles `WayangJdbcDemoClient.java` -* connects to `jdbc:wayang://127.0.0.1:9999/demo` -* runs: +* compiles `CsvSelectionOperationsDemo.java` +* lists CSV files from `wayang-jdbc/demo/data` +* shows each file's SQL-style table name, such as `fs.people` +* lets you select a CSV file by number or name +* prints columns, sample rows, numeric summaries, and dataset-specific analysis + for `heart_disease_risk_2026.csv` -```sql -SELECT ID, NAME, CITY FROM fs.people ORDER BY ID -``` +For example, selecting `heart_disease_risk` analyzes +`data/heart_disease_risk_2026.csv` as the logical table +`fs.heart_disease_risk_2026`. -The demo is intentionally read-only. It reads `data/people.csv`; it does not -create, insert, update, or delete tables. +The demo is intentionally read-only. It reads CSV files from `data/`; it does +not create, insert, update, or delete tables. diff --git a/wayang-jdbc/demo/WayangJdbcDemoClient.java b/wayang-jdbc/demo/WayangJdbcDemoClient.java deleted file mode 100644 index 7d00621d3..000000000 --- a/wayang-jdbc/demo/WayangJdbcDemoClient.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to you under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.Statement; -import java.util.Properties; - -public class WayangJdbcDemoClient { - - public static void main(final String[] args) throws Exception { - Class.forName("org.apache.wayang.jdbc.driver.WayangDriver"); - - final Properties properties = new Properties(); - properties.setProperty("user", "demo"); - properties.setProperty("connectTimeout", "5000"); - - final String url = "jdbc:wayang://127.0.0.1:9999/demo"; - final String sql = "SELECT ID, NAME, CITY FROM fs.people ORDER BY ID"; - - try (Connection connection = DriverManager.getConnection(url, properties); - Statement statement = connection.createStatement(); - ResultSet resultSet = statement.executeQuery(sql)) { - - System.out.println("Connected to " + url); - System.out.println("Query: " + sql); - System.out.println(); - - final ResultSetMetaData metaData = resultSet.getMetaData(); - final int columnCount = metaData.getColumnCount(); - while (resultSet.next()) { - for (int column = 1; column <= columnCount; column++) { - if (column > 1) { - System.out.print(" | "); - } - System.out.print(metaData.getColumnLabel(column) + "=" + resultSet.getObject(column)); - } - System.out.println(); - } - } - } -} diff --git a/wayang-jdbc/demo/data/ecommerce_sales_analytics.csv b/wayang-jdbc/demo/data/ecommerce_sales_analytics.csv new file mode 100644 index 000000000..eb3f97ccd --- /dev/null +++ b/wayang-jdbc/demo/data/ecommerce_sales_analytics.csv @@ -0,0 +1,5001 @@ +order_id,order_date,customer_id,product_category,region,quantity,unit_price,discount,payment_method,delivery_days,customer_rating,revenue +10001,1/1/2022,1102,Beauty,South,7,373.65,0.28,Wallet,10,4.7,1883.2 +10002,1/2/2022,1435,Clothing,South,7,47.74,0.09,Card,6,3.9,304.1 +10003,1/3/2022,1860,Beauty,East,3,311.28,0.31,COD,6,2.5,644.35 +10004,1/4/2022,1270,Electronics,West,5,524.47,0.02,Wallet,6,1.6,2569.9 +10005,1/5/2022,1106,Clothing,West,5,139.87,0.33,Wallet,4,4.9,468.56 +10006,1/6/2022,1071,Electronics,West,2,264.44,0.2,Card,3,3.3,423.1 +10007,1/7/2022,1700,Clothing,South,6,564.6,0.23,Card,1,1.8,2608.45 +10008,1/8/2022,1020,Beauty,North,6,265.71,0.13,Card,2,3.7,1387.01 +10009,1/9/2022,1614,Clothing,South,6,224.65,0.27,Card,2,1.4,983.97 +10010,1/10/2022,1121,Clothing,West,4,272.71,0.06,Card,10,4.5,1025.39 +10011,1/11/2022,1466,Clothing,West,6,318.88,0.02,COD,7,1.4,1875.01 +10012,1/12/2022,1214,Electronics,West,3,384.71,0.14,COD,11,1.9,992.55 +10013,1/13/2022,1330,Beauty,South,7,483.41,0.3,COD,6,1.4,2368.71 +10014,1/14/2022,1458,Clothing,West,7,279.48,0.26,COD,8,1.4,1447.71 +10015,1/15/2022,1087,Clothing,East,4,493.23,0.18,Card,9,3.1,1617.79 +10016,1/16/2022,1372,Clothing,West,2,327.23,0.2,Wallet,5,3.7,523.57 +10017,1/17/2022,1099,Clothing,North,3,213.01,0.05,Wallet,11,4.2,607.08 +10018,1/18/2022,1871,Electronics,East,7,399.9,0.29,COD,3,3.8,1987.5 +10019,1/19/2022,1663,Home,West,3,434.87,0.28,Wallet,4,2.5,939.32 +10020,1/20/2022,1130,Electronics,East,7,341.46,0.23,Card,11,3.2,1840.47 +10021,1/21/2022,1661,Home,West,1,48.12,0.16,COD,8,4.7,40.42 +10022,1/22/2022,1308,Home,North,2,114.38,0.34,Card,3,2.6,150.98 +10023,1/23/2022,1769,Home,West,2,181.9,0.31,Card,2,2,251.02 +10024,1/24/2022,1343,Clothing,East,1,180.34,0.23,Card,7,3.1,138.86 +10025,1/25/2022,1491,Clothing,North,4,408.95,0.13,COD,4,2.2,1423.15 +10026,1/26/2022,1413,Electronics,South,7,25.73,0.22,Card,8,2,140.49 +10027,1/27/2022,1805,Home,North,7,457.07,0.2,COD,1,4.1,2559.59 +10028,1/28/2022,1385,Electronics,North,7,170.23,0.14,Card,8,4.6,1024.78 +10029,1/29/2022,1191,Clothing,North,6,196.36,0.11,Wallet,5,3,1048.56 +10030,1/30/2022,1955,Electronics,East,6,323.83,0.14,COD,2,4.1,1670.96 +10031,1/31/2022,1276,Electronics,North,6,141.32,0.2,Card,1,1.7,678.34 +10032,2/1/2022,1160,Clothing,West,6,532.42,0.15,Card,6,3.2,2715.34 +10033,2/2/2022,1459,Electronics,North,6,64.94,0.09,Wallet,9,3.5,354.57 +10034,2/3/2022,1313,Home,North,1,274.96,0.27,Card,9,3,200.72 +10035,2/4/2022,1021,Electronics,West,2,511.91,0.19,COD,9,1.5,829.29 +10036,2/5/2022,1252,Electronics,West,4,375.27,0.02,COD,11,3.9,1471.06 +10037,2/6/2022,1747,Clothing,South,3,186.01,0.13,Card,4,4.4,485.49 +10038,2/7/2022,1856,Electronics,North,6,261.14,0.31,Card,6,3.5,1081.12 +10039,2/8/2022,1560,Electronics,East,1,428.42,0.26,COD,10,1.7,317.03 +10040,2/9/2022,1474,Home,North,7,584.36,0.11,Card,6,1.3,3640.56 +10041,2/10/2022,1058,Electronics,North,4,537.49,0.33,Card,5,2.2,1440.47 +10042,2/11/2022,1510,Home,West,4,215.32,0.03,Card,2,1.1,835.44 +10043,2/12/2022,1681,Electronics,South,4,598.95,0.34,Card,7,4.4,1581.23 +10044,2/13/2022,1475,Electronics,North,1,17.05,0.09,Card,1,3.8,15.52 +10045,2/14/2022,1699,Home,East,3,31.16,0,Wallet,6,3.3,93.48 +10046,2/15/2022,1975,Electronics,North,6,496.95,0.15,COD,5,4.6,2534.44 +10047,2/16/2022,1782,Electronics,East,4,131.69,0.13,COD,5,1.4,458.28 +10048,2/17/2022,1189,Clothing,West,1,50.55,0.19,Card,8,3.9,40.95 +10049,2/18/2022,1957,Electronics,South,7,153.73,0.28,Card,9,1.6,774.8 +10050,2/19/2022,1686,Home,North,2,264.27,0.29,Wallet,7,1.2,375.26 +10051,2/20/2022,1957,Electronics,South,7,442.38,0.14,COD,10,1.5,2663.13 +10052,2/21/2022,1562,Home,North,1,380.24,0.15,Card,8,4.8,323.2 +10053,2/22/2022,1875,Beauty,East,1,154.01,0.05,Card,2,2.8,146.31 +10054,2/23/2022,1566,Clothing,South,1,309.41,0.02,COD,2,1.2,303.22 +10055,2/24/2022,1243,Beauty,North,4,556.84,0.22,Wallet,8,3.3,1737.34 +10056,2/25/2022,1831,Clothing,West,1,491.78,0.02,Card,6,1.8,481.94 +10057,2/26/2022,1504,Beauty,East,2,204.07,0.26,COD,8,1,302.02 +10058,2/27/2022,1130,Electronics,South,4,589.62,0.19,COD,9,4,1910.37 +10059,2/28/2022,1484,Home,North,7,429.54,0.07,Wallet,9,1.6,2796.31 +10060,3/1/2022,1818,Clothing,South,2,51.53,0.19,Wallet,11,4.8,83.48 +10061,3/2/2022,1646,Clothing,North,5,35.57,0.06,Card,6,3.4,167.18 +10062,3/3/2022,1020,Clothing,East,7,113.52,0.15,COD,8,1.3,675.44 +10063,3/4/2022,1840,Home,West,1,440.8,0.28,COD,2,1.9,317.38 +10064,3/5/2022,1166,Electronics,East,6,122.49,0.16,COD,8,3.4,617.35 +10065,3/6/2022,1273,Electronics,South,6,314.22,0.05,Wallet,3,2.4,1791.05 +10066,3/7/2022,1387,Home,South,4,69.56,0.25,Wallet,1,3.1,208.68 +10067,3/8/2022,1600,Home,North,6,553.72,0.07,Card,7,4.2,3089.76 +10068,3/9/2022,1315,Beauty,East,7,216.22,0.26,Card,1,4.2,1120.02 +10069,3/10/2022,1013,Home,North,4,546.26,0.17,COD,11,3.8,1813.58 +10070,3/11/2022,1241,Beauty,East,7,567.75,0.16,Card,1,4.5,3338.37 +10071,3/12/2022,1776,Home,South,1,18.59,0.3,Card,1,1.8,13.01 +10072,3/13/2022,1345,Electronics,North,3,286.52,0.25,Card,4,1.7,644.67 +10073,3/14/2022,1564,Electronics,North,3,29.42,0.01,Wallet,4,4.2,87.38 +10074,3/15/2022,1897,Home,East,2,546.59,0.1,Card,10,2.3,983.86 +10075,3/16/2022,1339,Clothing,West,1,318.27,0.3,COD,11,3,222.79 +10076,3/17/2022,1091,Electronics,East,6,58.84,0.01,Card,6,4,349.51 +10077,3/18/2022,1366,Clothing,West,1,79.51,0.19,Card,10,2.6,64.4 +10078,3/19/2022,1955,Beauty,East,5,239.35,0.25,Card,3,1.5,897.56 +10079,3/20/2022,1454,Clothing,South,3,565.04,0.22,Card,10,3.7,1322.19 +10080,3/21/2022,1427,Clothing,North,6,420.35,0.27,Wallet,6,4.3,1841.13 +10081,3/22/2022,1508,Clothing,East,7,522.56,0.25,Wallet,7,1.1,2743.44 +10082,3/23/2022,1775,Electronics,South,7,229.38,0.24,COD,11,3.3,1220.3 +10083,3/24/2022,1942,Clothing,East,3,40.28,0.29,Card,1,2.9,85.8 +10084,3/25/2022,1034,Clothing,North,1,584.98,0.23,COD,6,2,450.43 +10085,3/26/2022,1205,Electronics,East,6,25.05,0.14,Card,10,1.6,129.26 +10086,3/27/2022,1080,Home,West,2,569.38,0.17,Card,1,1.8,945.17 +10087,3/28/2022,1931,Clothing,North,7,230.68,0.25,COD,7,3.9,1211.07 +10088,3/29/2022,1561,Home,West,1,20.9,0.31,COD,10,3.1,14.42 +10089,3/30/2022,1871,Beauty,South,2,418.16,0.1,Card,5,4.9,752.69 +10090,3/31/2022,1387,Electronics,South,6,588.62,0.12,Card,10,2,3107.91 +10091,4/1/2022,1001,Home,East,3,579.89,0.33,Wallet,4,4.8,1165.58 +10092,4/2/2022,1389,Clothing,West,5,109.15,0.2,Card,1,3.1,436.6 +10093,4/3/2022,1565,Beauty,West,4,121.03,0.06,Wallet,9,1.6,455.07 +10094,4/4/2022,1105,Electronics,North,3,345.84,0.23,Wallet,7,1.6,798.89 +10095,4/5/2022,1771,Home,West,2,387.82,0.35,COD,2,3.4,504.17 +10096,4/6/2022,1821,Clothing,West,1,447.56,0.29,Card,4,4.3,317.77 +10097,4/7/2022,1476,Electronics,North,7,120.91,0.26,COD,4,4,626.31 +10098,4/8/2022,1702,Electronics,North,6,576.02,0.07,Card,8,3.6,3214.19 +10099,4/9/2022,1401,Home,West,3,388.66,0.31,Card,2,1.7,804.53 +10100,4/10/2022,1729,Home,East,7,510.52,0.18,COD,11,1.4,2930.38 +10101,4/11/2022,1555,Electronics,North,7,330.94,0.31,Card,5,1,1598.44 +10102,4/12/2022,1161,Clothing,North,5,257.35,0.12,Card,10,1.4,1132.34 +10103,4/13/2022,1201,Clothing,West,6,586.65,0.02,COD,8,4.1,3449.5 +10104,4/14/2022,1957,Home,West,2,355.54,0.17,COD,6,4.6,590.2 +10105,4/15/2022,1995,Electronics,North,6,522.12,0.09,Card,4,2,2850.78 +10106,4/16/2022,1269,Beauty,West,6,572.68,0.25,Card,5,4.2,2577.06 +10107,4/17/2022,1862,Electronics,North,1,410.08,0.33,Card,2,1.8,274.75 +10108,4/18/2022,1815,Clothing,East,4,336.13,0.24,Card,5,2,1021.84 +10109,4/19/2022,1270,Electronics,East,7,17.05,0.31,COD,3,1.9,82.35 +10110,4/20/2022,1455,Electronics,North,2,38.41,0.16,COD,3,1.2,64.53 +10111,4/21/2022,1461,Clothing,North,1,132.5,0.27,COD,7,1.8,96.72 +10112,4/22/2022,1726,Electronics,South,7,123.81,0.3,Card,3,2.5,606.67 +10113,4/23/2022,1251,Home,South,4,164.03,0.25,Card,4,2.6,492.09 +10114,4/24/2022,1701,Electronics,West,1,193.39,0.18,Card,7,2.2,158.58 +10115,4/25/2022,1295,Clothing,West,4,225.64,0.22,Card,3,3.1,704 +10116,4/26/2022,1724,Electronics,North,4,261.01,0.25,Card,10,2.5,783.03 +10117,4/27/2022,1719,Electronics,North,4,72.84,0.09,Card,10,4.9,265.14 +10118,4/28/2022,1748,Electronics,South,1,39.78,0.28,Card,2,4.2,28.64 +10119,4/29/2022,1337,Clothing,South,6,409.26,0.33,COD,10,4.7,1645.23 +10120,4/30/2022,1878,Clothing,North,4,329.34,0.16,COD,7,3.2,1106.58 +10121,5/1/2022,1052,Clothing,East,6,274.82,0.25,COD,5,3.7,1236.69 +10122,5/2/2022,1791,Clothing,East,7,386.15,0.26,Card,1,1.7,2000.26 +10123,5/3/2022,1921,Clothing,West,7,499.19,0.23,Wallet,10,4,2690.63 +10124,5/4/2022,1216,Electronics,North,2,265.2,0.19,Wallet,8,1.9,429.62 +10125,5/5/2022,1763,Clothing,North,5,390.05,0.31,Card,3,1.6,1345.67 +10126,5/6/2022,1187,Beauty,West,6,572.84,0.16,COD,11,1.2,2887.11 +10127,5/7/2022,1379,Clothing,South,7,506.18,0.02,Wallet,7,2.9,3472.39 +10128,5/8/2022,1492,Home,South,5,264.21,0.3,COD,6,2.1,924.73 +10129,5/9/2022,1040,Electronics,East,4,392.16,0.24,Card,10,4.9,1192.17 +10130,5/10/2022,1156,Home,North,5,118.59,0.3,COD,6,2,415.06 +10131,5/11/2022,1014,Home,South,5,342.91,0.05,COD,8,4.5,1628.82 +10132,5/12/2022,1812,Clothing,East,4,589.08,0.01,Card,4,2.3,2332.76 +10133,5/13/2022,1064,Beauty,East,6,318.21,0.33,Wallet,4,4,1279.2 +10134,5/14/2022,1856,Electronics,East,4,557.67,0.05,COD,3,3.6,2119.15 +10135,5/15/2022,1838,Electronics,South,2,253.29,0.28,Card,1,3.2,364.74 +10136,5/16/2022,1520,Home,South,3,599.32,0.29,COD,10,2.7,1276.55 +10137,5/17/2022,1343,Home,North,1,353.84,0.25,COD,3,3.7,265.38 +10138,5/18/2022,1128,Electronics,North,4,39.73,0.05,Card,1,2.6,150.97 +10139,5/19/2022,1647,Electronics,East,4,358.25,0.23,Card,6,3.2,1103.41 +10140,5/20/2022,1471,Electronics,East,5,175.63,0.31,Wallet,8,3.4,605.92 +10141,5/21/2022,1062,Electronics,South,2,34,0.15,COD,3,2.1,57.8 +10142,5/22/2022,1138,Home,South,7,495.2,0.14,Card,4,2.4,2981.1 +10143,5/23/2022,1498,Clothing,North,7,176.3,0.16,Card,5,1.1,1036.64 +10144,5/24/2022,1592,Electronics,North,5,480.98,0.03,COD,7,4.4,2332.75 +10145,5/25/2022,1391,Clothing,West,6,183.61,0.31,COD,11,4,760.15 +10146,5/26/2022,1674,Electronics,North,4,128.68,0.3,Card,6,1.7,360.3 +10147,5/27/2022,1418,Electronics,South,4,584.75,0.35,COD,2,2.4,1520.35 +10148,5/28/2022,1288,Clothing,East,5,226.56,0.2,Card,7,2.7,906.24 +10149,5/29/2022,1378,Beauty,West,4,366.81,0.26,Card,8,2.3,1085.76 +10150,5/30/2022,1772,Home,North,6,371.84,0.07,COD,1,4.2,2074.87 +10151,5/31/2022,1489,Electronics,North,3,342.88,0.23,Card,6,3.9,792.05 +10152,6/1/2022,1230,Beauty,South,1,550.1,0.23,Wallet,11,4.1,423.58 +10153,6/2/2022,1040,Home,West,1,409.55,0.32,Card,9,4.6,278.49 +10154,6/3/2022,1027,Home,North,1,251.18,0.29,COD,7,3.4,178.34 +10155,6/4/2022,1134,Clothing,East,3,519.49,0.33,Card,5,3.5,1044.17 +10156,6/5/2022,1200,Clothing,South,4,120.92,0.3,Card,10,3.9,338.58 +10157,6/6/2022,1839,Electronics,West,5,333.38,0.3,COD,11,3.7,1166.83 +10158,6/7/2022,1779,Electronics,North,7,571.07,0.02,COD,10,4.5,3917.54 +10159,6/8/2022,1929,Electronics,North,2,380.86,0.3,COD,9,4.1,533.2 +10160,6/9/2022,1032,Electronics,West,4,492.93,0.21,COD,2,1.5,1557.66 +10161,6/10/2022,1047,Clothing,South,3,397.33,0.13,COD,7,4.7,1037.03 +10162,6/11/2022,1502,Home,West,6,506.03,0.02,COD,9,3.7,2975.46 +10163,6/12/2022,1406,Clothing,West,3,567.53,0.24,COD,2,1.5,1293.97 +10164,6/13/2022,1573,Electronics,South,7,174.66,0.11,COD,11,4.1,1088.13 +10165,6/14/2022,1727,Beauty,North,1,114.25,0.16,COD,10,2.4,95.97 +10166,6/15/2022,1804,Beauty,East,4,298.13,0.24,Wallet,6,4.2,906.32 +10167,6/16/2022,1098,Home,South,7,425.59,0.32,Card,9,4.8,2025.81 +10168,6/17/2022,1683,Beauty,East,1,147.91,0.29,COD,3,2,105.02 +10169,6/18/2022,1871,Clothing,North,2,17.4,0.16,Card,8,4.4,29.23 +10170,6/19/2022,1725,Beauty,West,6,215.62,0.14,Card,5,4.1,1112.6 +10171,6/20/2022,1986,Electronics,East,1,581.78,0.08,Card,7,3.7,535.24 +10172,6/21/2022,1546,Clothing,North,2,421.56,0.13,Wallet,3,2.5,733.51 +10173,6/22/2022,1960,Electronics,North,3,249.78,0.04,COD,8,1.4,719.37 +10174,6/23/2022,1738,Electronics,West,1,127.66,0.34,COD,2,2.9,84.26 +10175,6/24/2022,1612,Electronics,West,1,223.31,0.2,Card,8,1.4,178.65 +10176,6/25/2022,1942,Clothing,North,5,114.36,0.04,COD,2,3,548.93 +10177,6/26/2022,1461,Home,North,6,77.19,0.12,Wallet,7,4.3,407.56 +10178,6/27/2022,1642,Clothing,East,6,545.44,0.19,Card,2,5,2650.84 +10179,6/28/2022,1768,Electronics,North,7,598.63,0.19,Card,7,1.8,3394.23 +10180,6/29/2022,1004,Home,North,3,111.01,0.01,Card,1,1.8,329.7 +10181,6/30/2022,1217,Clothing,East,5,46.9,0.33,COD,6,4.2,157.11 +10182,7/1/2022,1502,Clothing,South,7,207.89,0.1,COD,10,2.9,1309.71 +10183,7/2/2022,1766,Home,East,2,285.07,0.01,COD,7,4.7,564.44 +10184,7/3/2022,1397,Electronics,East,7,134.82,0.03,COD,4,4.1,915.43 +10185,7/4/2022,1870,Electronics,West,2,191.33,0.2,Card,11,3.9,306.13 +10186,7/5/2022,1794,Beauty,East,3,132.51,0.05,COD,11,1.4,377.65 +10187,7/6/2022,1392,Electronics,North,6,467.94,0.01,Card,1,1.1,2779.56 +10188,7/7/2022,1206,Clothing,North,2,431.86,0.13,Card,6,2.3,751.44 +10189,7/8/2022,1014,Beauty,North,3,386.45,0.22,COD,4,1.9,904.29 +10190,7/9/2022,1857,Home,South,7,241.52,0.04,Wallet,3,3.8,1623.01 +10191,7/10/2022,1553,Electronics,North,2,546.79,0.11,COD,4,2.8,973.29 +10192,7/11/2022,1891,Electronics,South,4,582.18,0.15,COD,6,3.1,1979.41 +10193,7/12/2022,1460,Electronics,North,1,116.58,0.06,Card,5,4.3,109.59 +10194,7/13/2022,1690,Clothing,East,7,145.46,0.18,Card,2,2.9,834.94 +10195,7/14/2022,1574,Clothing,West,6,322.49,0.03,Card,2,3.2,1876.89 +10196,7/15/2022,1863,Electronics,North,7,68.38,0.02,Wallet,3,4.4,469.09 +10197,7/16/2022,1742,Beauty,South,4,270.32,0.18,Wallet,11,2.7,886.65 +10198,7/17/2022,1240,Clothing,South,3,355.35,0.09,Wallet,6,1.3,970.11 +10199,7/18/2022,1563,Electronics,West,3,320.41,0.03,Card,1,3.1,932.39 +10200,7/19/2022,1095,Clothing,North,7,208.58,0.15,COD,11,3.3,1241.05 +10201,7/20/2022,1899,Home,East,4,332.33,0.32,COD,7,3,903.94 +10202,7/21/2022,1733,Electronics,North,7,575.9,0.25,COD,8,2,3023.48 +10203,7/22/2022,1484,Electronics,North,1,135.52,0.29,COD,7,1.9,96.22 +10204,7/23/2022,1406,Home,West,1,398.08,0.31,COD,11,2.5,274.68 +10205,7/24/2022,1230,Clothing,North,5,40.39,0.34,Card,3,1.7,133.29 +10206,7/25/2022,1748,Clothing,East,2,53.85,0.27,Card,6,3.7,78.62 +10207,7/26/2022,1654,Clothing,South,5,337.82,0.21,Card,4,3.5,1334.39 +10208,7/27/2022,1170,Electronics,West,1,76.39,0.13,Card,5,3.5,66.46 +10209,7/28/2022,1540,Electronics,East,4,28.07,0.06,Card,3,1.9,105.54 +10210,7/29/2022,1035,Clothing,South,2,115.34,0.24,Card,5,2,175.32 +10211,7/30/2022,1524,Electronics,West,4,345.44,0.35,Card,6,4.1,898.14 +10212,7/31/2022,1159,Electronics,West,5,426.45,0.16,COD,8,3.8,1791.09 +10213,8/1/2022,1838,Home,South,3,133.45,0.25,Wallet,6,4.5,300.26 +10214,8/2/2022,1698,Beauty,South,4,405.93,0.17,Wallet,9,2.6,1347.69 +10215,8/3/2022,1242,Home,East,5,121.75,0.15,Card,10,3.2,517.44 +10216,8/4/2022,1085,Beauty,North,5,373.87,0.14,Card,10,4,1607.64 +10217,8/5/2022,1795,Electronics,North,5,256,0.18,Card,10,4.9,1049.6 +10218,8/6/2022,1577,Beauty,North,3,397.47,0.13,Wallet,10,5,1037.4 +10219,8/7/2022,1681,Electronics,North,3,597.11,0.26,COD,4,5,1325.58 +10220,8/8/2022,1556,Beauty,North,7,563.62,0.31,Card,2,4.6,2722.28 +10221,8/9/2022,1573,Beauty,East,3,17.5,0.31,Wallet,9,3.6,36.22 +10222,8/10/2022,1952,Home,West,2,532.98,0.08,Card,11,1,980.68 +10223,8/11/2022,1645,Beauty,East,3,53.9,0.31,Wallet,3,3.8,111.57 +10224,8/12/2022,1795,Clothing,East,3,572.53,0.12,Card,11,2,1511.48 +10225,8/13/2022,1027,Electronics,East,3,179.87,0.11,Card,7,1.2,480.25 +10226,8/14/2022,1619,Clothing,West,4,238.49,0.25,COD,4,3.8,715.47 +10227,8/15/2022,1555,Clothing,East,3,68.61,0.11,Wallet,1,4,183.19 +10228,8/16/2022,1339,Electronics,East,2,80.68,0.02,Wallet,8,3.6,158.13 +10229,8/17/2022,1797,Clothing,West,5,440.14,0.13,COD,4,2.5,1914.61 +10230,8/18/2022,1957,Beauty,East,4,567.43,0.25,Card,11,3,1702.29 +10231,8/19/2022,1330,Electronics,North,1,372.29,0.11,Card,6,4.7,331.34 +10232,8/20/2022,1639,Home,South,3,433.77,0.22,Wallet,7,3.9,1015.02 +10233,8/21/2022,1505,Beauty,East,7,460.75,0.23,COD,8,3,2483.44 +10234,8/22/2022,1347,Beauty,South,7,168.75,0.26,COD,10,3.4,874.12 +10235,8/23/2022,1472,Beauty,East,5,41.46,0.31,Card,2,4.7,143.04 +10236,8/24/2022,1230,Clothing,East,5,16.1,0.15,COD,9,2.6,68.42 +10237,8/25/2022,1189,Beauty,North,4,220.13,0.06,Card,10,1.4,827.69 +10238,8/26/2022,1224,Home,West,7,156.26,0.11,COD,3,2.3,973.5 +10239,8/27/2022,1384,Electronics,South,1,51.46,0.15,Wallet,1,2.7,43.74 +10240,8/28/2022,1376,Clothing,West,6,120.02,0.25,COD,2,2.1,540.09 +10241,8/29/2022,1282,Home,North,7,87.83,0,COD,8,3.1,614.81 +10242,8/30/2022,1957,Electronics,North,7,550.2,0.11,Card,10,2.2,3427.75 +10243,8/31/2022,1632,Clothing,South,2,97.06,0.27,Card,6,1.4,141.71 +10244,9/1/2022,1627,Home,West,6,329.52,0.23,Wallet,11,1.8,1522.38 +10245,9/2/2022,1972,Electronics,North,5,361.97,0.26,Card,1,4.7,1339.29 +10246,9/3/2022,1744,Clothing,East,6,332.94,0.28,Wallet,11,3.5,1438.3 +10247,9/4/2022,1258,Home,East,7,72.95,0.27,COD,9,2.3,372.77 +10248,9/5/2022,1358,Clothing,East,5,201.5,0.24,COD,7,2.5,765.7 +10249,9/6/2022,1709,Electronics,West,6,44.99,0.15,Wallet,10,3,229.45 +10250,9/7/2022,1455,Electronics,East,5,246.47,0.34,COD,11,3.7,813.35 +10251,9/8/2022,1410,Clothing,East,5,125.33,0.2,Wallet,3,3.3,501.32 +10252,9/9/2022,1648,Beauty,North,4,343.56,0.07,Card,7,4.7,1278.04 +10253,9/10/2022,1317,Electronics,North,1,420.29,0.1,COD,6,3.5,378.26 +10254,9/11/2022,1676,Clothing,East,5,326.29,0.24,COD,3,4.6,1239.9 +10255,9/12/2022,1224,Electronics,East,2,269.03,0.32,Card,8,1,365.88 +10256,9/13/2022,1818,Electronics,North,7,241.59,0.06,COD,1,4.6,1589.66 +10257,9/14/2022,1233,Home,South,7,507.39,0.03,COD,5,3.9,3445.18 +10258,9/15/2022,1683,Home,West,2,143.33,0.31,Wallet,8,1.7,197.8 +10259,9/16/2022,1663,Electronics,West,3,444.52,0.32,Card,3,2.1,906.82 +10260,9/17/2022,1974,Clothing,North,5,458.13,0.1,COD,11,3.2,2061.58 +10261,9/18/2022,1826,Electronics,West,5,260.23,0.13,Card,10,1.5,1132 +10262,9/19/2022,1373,Clothing,North,5,188.92,0.23,COD,11,4.1,727.34 +10263,9/20/2022,1671,Home,North,6,290.27,0.12,COD,6,4.2,1532.63 +10264,9/21/2022,1607,Electronics,North,5,69.53,0.31,COD,10,2.2,239.88 +10265,9/22/2022,1471,Electronics,North,5,41.87,0.04,Card,11,1.3,200.98 +10266,9/23/2022,1232,Clothing,South,2,80.29,0.01,Card,2,5,158.97 +10267,9/24/2022,1691,Beauty,East,1,124.48,0.07,Card,9,2,115.77 +10268,9/25/2022,1112,Beauty,East,1,309.94,0.1,Card,2,1.3,278.95 +10269,9/26/2022,1829,Electronics,South,3,511.74,0.04,COD,5,2.3,1473.81 +10270,9/27/2022,1496,Home,West,2,152.85,0.02,Wallet,3,4.9,299.59 +10271,9/28/2022,1441,Clothing,West,5,562.07,0.26,Card,10,4.2,2079.66 +10272,9/29/2022,1563,Clothing,East,1,573.62,0.06,Card,9,2.9,539.2 +10273,9/30/2022,1267,Home,West,4,575.96,0.32,COD,9,2.2,1566.61 +10274,10/1/2022,1509,Beauty,East,4,504.97,0.13,COD,7,2.7,1757.3 +10275,10/2/2022,1806,Beauty,East,4,227.84,0.23,Card,10,1.1,701.75 +10276,10/3/2022,1385,Clothing,South,5,57.52,0.08,Card,5,3.9,264.59 +10277,10/4/2022,1386,Clothing,West,5,347.76,0.08,Card,9,1.4,1599.7 +10278,10/5/2022,1112,Home,South,3,341.83,0.2,Card,7,3.1,820.39 +10279,10/6/2022,1612,Electronics,East,7,512.24,0.2,Card,2,3.3,2868.54 +10280,10/7/2022,1624,Clothing,East,3,597.65,0.27,Card,10,1,1308.85 +10281,10/8/2022,1951,Clothing,East,3,312.27,0.27,COD,1,4.9,683.87 +10282,10/9/2022,1080,Home,North,6,216.94,0.23,COD,10,2.2,1002.26 +10283,10/10/2022,1698,Electronics,North,4,123.75,0.16,Card,10,1.3,415.8 +10284,10/11/2022,1112,Electronics,North,5,17.81,0.31,COD,4,4.4,61.44 +10285,10/12/2022,1001,Beauty,South,4,312.83,0.22,COD,10,1.6,976.03 +10286,10/13/2022,1641,Electronics,East,3,339.98,0.35,Wallet,8,1.1,662.96 +10287,10/14/2022,1219,Clothing,West,5,497.59,0.29,Card,6,3,1766.44 +10288,10/15/2022,1565,Electronics,South,2,310.18,0.02,COD,2,1.5,607.95 +10289,10/16/2022,1854,Electronics,South,1,551.13,0.11,COD,5,4.9,490.51 +10290,10/17/2022,1996,Electronics,South,1,382.43,0.2,Card,9,1,305.94 +10291,10/18/2022,1735,Electronics,West,3,506.6,0.25,Wallet,6,1.2,1139.85 +10292,10/19/2022,1224,Beauty,East,7,101.76,0.19,COD,6,4.3,576.98 +10293,10/20/2022,1384,Electronics,North,4,515.37,0.28,COD,7,2,1484.27 +10294,10/21/2022,1402,Beauty,East,2,409.96,0.1,Card,11,4.6,737.93 +10295,10/22/2022,1637,Clothing,East,5,114.59,0.06,Card,5,2.2,538.57 +10296,10/23/2022,1129,Clothing,South,7,126.01,0.02,COD,3,1.3,864.43 +10297,10/24/2022,1052,Clothing,South,4,557,0.2,Card,3,1,1782.4 +10298,10/25/2022,1683,Clothing,South,3,33.85,0.24,COD,5,2.1,77.18 +10299,10/26/2022,1729,Home,North,4,285.58,0.11,Card,4,2.9,1016.66 +10300,10/27/2022,1671,Electronics,North,3,198.38,0.21,COD,5,1,470.16 +10301,10/28/2022,1709,Clothing,North,6,404.07,0.02,COD,9,3.3,2375.93 +10302,10/29/2022,1415,Beauty,East,1,506.18,0.03,Card,5,2.3,490.99 +10303,10/30/2022,1246,Beauty,South,7,225.82,0.25,COD,4,2.6,1185.56 +10304,10/31/2022,1835,Beauty,West,1,264.74,0.13,Card,4,2,230.32 +10305,11/1/2022,1438,Clothing,East,4,589.42,0.23,Card,1,3.1,1815.41 +10306,11/2/2022,1202,Home,North,2,473.59,0.29,Card,10,1.9,672.5 +10307,11/3/2022,1183,Clothing,West,5,539.86,0.3,Card,4,1.5,1889.51 +10308,11/4/2022,1122,Clothing,West,3,271.68,0.06,Card,4,4.6,766.14 +10309,11/5/2022,1400,Electronics,South,5,151.93,0.17,Wallet,9,2.6,630.51 +10310,11/6/2022,1766,Clothing,West,1,255.94,0.26,Card,11,1.3,189.4 +10311,11/7/2022,1293,Electronics,North,2,433.91,0.27,Card,4,1.9,633.51 +10312,11/8/2022,1279,Electronics,South,2,79.02,0.27,Card,7,2.2,115.37 +10313,11/9/2022,1836,Beauty,West,5,173.22,0.08,Card,1,4.1,796.81 +10314,11/10/2022,1883,Electronics,South,1,42.28,0.07,COD,7,1.1,39.32 +10315,11/11/2022,1609,Electronics,West,5,267.92,0.21,Card,2,2.9,1058.28 +10316,11/12/2022,1197,Electronics,East,4,499.06,0.26,COD,11,2.6,1477.22 +10317,11/13/2022,1981,Beauty,East,2,29.43,0.11,Card,8,4.9,52.39 +10318,11/14/2022,1906,Clothing,North,2,410.06,0.04,Wallet,1,1.7,787.32 +10319,11/15/2022,1510,Clothing,East,4,560.51,0.25,Card,10,3.5,1681.53 +10320,11/16/2022,1751,Home,East,1,153.6,0.1,COD,3,1.8,138.24 +10321,11/17/2022,1143,Home,East,2,420.78,0.06,COD,8,3.2,791.07 +10322,11/18/2022,1608,Electronics,West,7,585.43,0.05,Card,10,3.2,3893.11 +10323,11/19/2022,1200,Home,West,6,577.93,0.11,COD,8,1.3,3086.15 +10324,11/20/2022,1123,Home,South,6,152.43,0.21,COD,11,2.8,722.52 +10325,11/21/2022,1186,Home,West,6,73.69,0.13,Card,5,2.8,384.66 +10326,11/22/2022,1325,Electronics,East,3,101.75,0.01,COD,5,2.3,302.2 +10327,11/23/2022,1463,Beauty,West,7,425.69,0.03,Wallet,8,2.1,2890.44 +10328,11/24/2022,1348,Clothing,North,3,439.57,0.1,COD,10,1.9,1186.84 +10329,11/25/2022,1770,Electronics,South,1,409.43,0.23,Wallet,5,1,315.26 +10330,11/26/2022,1659,Clothing,South,4,211.61,0.03,Card,9,1,821.05 +10331,11/27/2022,1763,Electronics,West,5,114.32,0.2,COD,1,3.4,457.28 +10332,11/28/2022,1954,Electronics,East,7,354.75,0.04,Wallet,5,2.2,2383.92 +10333,11/29/2022,1931,Home,South,1,297.95,0.07,Card,3,1.7,277.09 +10334,11/30/2022,1402,Electronics,North,5,441.37,0.06,Wallet,3,3.7,2074.44 +10335,12/1/2022,1345,Clothing,North,1,273.2,0.02,Card,2,3.1,267.74 +10336,12/2/2022,1962,Clothing,South,3,213.1,0.23,Wallet,3,4.7,492.26 +10337,12/3/2022,1510,Electronics,East,6,186.68,0.16,Card,7,4.3,940.87 +10338,12/4/2022,1146,Beauty,East,4,138.71,0.29,Card,8,3.9,393.94 +10339,12/5/2022,1147,Electronics,West,3,170.46,0.03,Wallet,8,1.5,496.04 +10340,12/6/2022,1863,Electronics,West,4,70.48,0.05,Card,11,3.7,267.82 +10341,12/7/2022,1710,Electronics,South,7,217.91,0.11,Card,8,3.8,1357.58 +10342,12/8/2022,1819,Electronics,West,5,36.39,0.27,Card,1,4.1,132.82 +10343,12/9/2022,1488,Electronics,West,1,124.05,0.11,COD,11,2.1,110.4 +10344,12/10/2022,1928,Home,West,2,451.86,0.14,Wallet,7,3.6,777.2 +10345,12/11/2022,1935,Beauty,North,2,205.4,0.11,Card,2,3.5,365.61 +10346,12/12/2022,1639,Electronics,West,4,405.92,0.03,COD,11,2.5,1574.97 +10347,12/13/2022,1550,Home,South,6,434.38,0.33,Card,10,3.7,1746.21 +10348,12/14/2022,1337,Home,East,6,354.99,0.19,COD,4,1.3,1725.25 +10349,12/15/2022,1871,Home,West,4,575.84,0.28,Card,5,3.6,1658.42 +10350,12/16/2022,1640,Clothing,East,3,27.54,0.23,Card,1,3.4,63.62 +10351,12/17/2022,1778,Electronics,West,2,447.11,0.18,Card,4,1.8,733.26 +10352,12/18/2022,1987,Electronics,South,3,575.89,0.03,COD,4,4.3,1675.84 +10353,12/19/2022,1952,Home,North,5,519.43,0.22,Wallet,9,4.5,2025.78 +10354,12/20/2022,1472,Home,South,2,113.22,0.05,COD,9,1.8,215.12 +10355,12/21/2022,1945,Electronics,North,5,206.19,0.15,Card,11,1.3,876.31 +10356,12/22/2022,1150,Clothing,West,1,115.88,0.22,COD,10,3.4,90.39 +10357,12/23/2022,1414,Beauty,West,3,366.77,0.27,COD,1,2.9,803.23 +10358,12/24/2022,1989,Home,North,4,431.63,0.24,Card,8,2.7,1312.16 +10359,12/25/2022,1297,Beauty,South,2,200.49,0.24,Card,4,4,304.74 +10360,12/26/2022,1610,Home,South,3,330.61,0.05,Card,4,4.9,942.24 +10361,12/27/2022,1262,Clothing,North,4,419.19,0.12,COD,5,2.9,1475.55 +10362,12/28/2022,1763,Clothing,West,1,261.48,0.02,COD,2,1,256.25 +10363,12/29/2022,1143,Home,North,2,514.6,0.25,COD,1,3.4,771.9 +10364,12/30/2022,1345,Electronics,West,5,466.36,0.33,Card,5,3.6,1562.31 +10365,12/31/2022,1623,Clothing,North,1,52.83,0.09,Card,7,4.3,48.08 +10366,1/1/2023,1571,Home,West,6,378.36,0.03,Wallet,10,1.8,2202.06 +10367,1/2/2023,1880,Electronics,North,4,152.67,0.17,Card,9,3.1,506.86 +10368,1/3/2023,1001,Home,East,2,341.15,0.3,Wallet,2,2.8,477.61 +10369,1/4/2023,1896,Clothing,West,2,574.78,0.19,COD,8,3.7,931.14 +10370,1/5/2023,1303,Beauty,South,7,529.25,0.02,Card,7,1.3,3630.66 +10371,1/6/2023,1253,Electronics,North,7,251.64,0.34,COD,2,4.5,1162.58 +10372,1/7/2023,1651,Electronics,South,1,185.54,0.29,Wallet,5,3,131.73 +10373,1/8/2023,1452,Clothing,North,2,152.13,0.05,Card,7,4.5,289.05 +10374,1/9/2023,1036,Electronics,South,4,326.52,0.32,Wallet,3,2.4,888.13 +10375,1/10/2023,1159,Home,South,1,81.84,0.16,Card,2,3.6,68.75 +10376,1/11/2023,1008,Home,North,5,336.33,0.13,COD,6,4.8,1463.04 +10377,1/12/2023,1232,Electronics,North,1,15.78,0.16,Wallet,10,4.8,13.26 +10378,1/13/2023,1098,Clothing,South,1,204.45,0.29,Wallet,6,4.8,145.16 +10379,1/14/2023,1658,Clothing,South,5,143.66,0.23,COD,11,1.2,553.09 +10380,1/15/2023,1815,Clothing,South,6,583.16,0.02,COD,4,2.6,3428.98 +10381,1/16/2023,1207,Beauty,West,7,440.44,0.34,Card,1,1.2,2034.83 +10382,1/17/2023,1130,Home,West,4,219.55,0.05,Card,5,2.2,834.29 +10383,1/18/2023,1403,Home,East,6,69.31,0.26,Card,1,1.7,307.74 +10384,1/19/2023,1151,Home,West,6,317.33,0.22,Card,11,3.5,1485.1 +10385,1/20/2023,1053,Clothing,West,6,139.87,0.07,Card,11,4.1,780.47 +10386,1/21/2023,1119,Beauty,North,7,328.81,0.06,Card,8,3.1,2163.57 +10387,1/22/2023,1672,Home,East,3,503.69,0.3,Wallet,2,4.2,1057.75 +10388,1/23/2023,1919,Home,East,7,375.24,0.15,COD,9,1.1,2232.68 +10389,1/24/2023,1627,Beauty,West,6,385.77,0.23,Card,9,4.3,1782.26 +10390,1/25/2023,1586,Electronics,North,3,331.5,0.18,Wallet,3,1.7,815.49 +10391,1/26/2023,1624,Home,North,5,557.45,0.25,Card,6,2.8,2090.44 +10392,1/27/2023,1967,Electronics,East,7,560.16,0.17,COD,9,2.8,3254.53 +10393,1/28/2023,1419,Electronics,North,4,314.94,0.1,COD,7,4.5,1133.78 +10394,1/29/2023,1421,Electronics,South,6,193.87,0.13,Card,4,4.9,1012 +10395,1/30/2023,1103,Beauty,West,2,283.86,0.3,COD,3,2,397.4 +10396,1/31/2023,1851,Beauty,South,5,124.14,0.16,Card,2,1.3,521.39 +10397,2/1/2023,1253,Home,East,3,387.26,0.07,Card,10,3.6,1080.46 +10398,2/2/2023,1226,Home,East,7,307.55,0.33,Card,10,3,1442.41 +10399,2/3/2023,1111,Clothing,North,4,75.43,0.28,Wallet,1,3.3,217.24 +10400,2/4/2023,1509,Beauty,North,1,130.62,0.02,COD,11,1.2,128.01 +10401,2/5/2023,1472,Clothing,East,4,295.58,0.35,COD,10,4.1,768.51 +10402,2/6/2023,1098,Clothing,East,4,534.24,0.24,COD,11,1.9,1624.09 +10403,2/7/2023,1152,Electronics,South,6,346.34,0.06,Card,1,2.3,1953.36 +10404,2/8/2023,1860,Home,South,6,413.7,0.08,COD,4,1.9,2283.62 +10405,2/9/2023,1913,Home,North,7,213.33,0.24,Card,4,4.8,1134.92 +10406,2/10/2023,1895,Clothing,South,7,349.28,0.27,Card,9,1.7,1784.82 +10407,2/11/2023,1877,Electronics,North,3,276.72,0.08,COD,10,3.9,763.75 +10408,2/12/2023,1337,Home,North,7,400.59,0.09,Card,1,2,2551.76 +10409,2/13/2023,1705,Electronics,West,3,44.59,0.11,Card,11,2.7,119.06 +10410,2/14/2023,1821,Home,North,6,303.58,0.21,Wallet,4,5,1438.97 +10411,2/15/2023,1162,Beauty,South,6,188.16,0.06,COD,3,1.4,1061.22 +10412,2/16/2023,1719,Clothing,East,2,205.82,0.04,COD,9,4.5,395.17 +10413,2/17/2023,1956,Electronics,East,2,577.14,0.24,Card,5,4.8,877.25 +10414,2/18/2023,1680,Home,South,5,121.88,0.27,Card,9,3.8,444.86 +10415,2/19/2023,1995,Home,East,6,197.08,0.18,COD,10,1,969.63 +10416,2/20/2023,1160,Clothing,North,1,313.29,0.13,COD,6,4.3,272.56 +10417,2/21/2023,1579,Beauty,East,2,519.87,0.15,COD,11,4.5,883.78 +10418,2/22/2023,1800,Electronics,South,3,258.75,0.14,Wallet,9,4.9,667.58 +10419,2/23/2023,1397,Clothing,East,4,450.16,0.34,Wallet,1,4.4,1188.42 +10420,2/24/2023,1276,Home,North,7,515.98,0.27,Card,4,2.8,2636.66 +10421,2/25/2023,1815,Beauty,North,7,196.36,0.07,Wallet,4,3.8,1278.3 +10422,2/26/2023,1915,Electronics,South,5,244.76,0.13,COD,10,2.9,1064.71 +10423,2/27/2023,1503,Home,South,2,223.59,0.19,COD,10,2.4,362.22 +10424,2/28/2023,1895,Clothing,South,4,502.22,0.21,Card,6,3.5,1587.02 +10425,3/1/2023,1391,Clothing,West,4,40.94,0.16,COD,10,4.1,137.56 +10426,3/2/2023,1134,Electronics,West,2,195.43,0.28,Wallet,1,3.5,281.42 +10427,3/3/2023,1194,Beauty,North,1,412.45,0.27,COD,10,4.3,301.09 +10428,3/4/2023,1400,Electronics,West,1,345.78,0.18,COD,5,1.7,283.54 +10429,3/5/2023,1639,Electronics,West,5,270.23,0.3,Card,3,2.5,945.8 +10430,3/6/2023,1032,Electronics,East,1,330.87,0.26,Card,1,2.3,244.84 +10431,3/7/2023,1687,Beauty,West,5,130.59,0.27,Card,6,1.8,476.65 +10432,3/8/2023,1459,Home,East,3,266.97,0.33,Card,3,2.8,536.61 +10433,3/9/2023,1954,Home,South,2,308.5,0.09,COD,4,4.8,561.47 +10434,3/10/2023,1882,Electronics,East,4,542.2,0.09,Card,9,3.2,1973.61 +10435,3/11/2023,1469,Clothing,East,5,167.59,0.31,COD,2,2.1,578.19 +10436,3/12/2023,1374,Clothing,South,7,522.68,0.27,Card,1,2.4,2670.89 +10437,3/13/2023,1021,Home,South,1,391.88,0.32,Card,10,3.5,266.48 +10438,3/14/2023,1749,Beauty,North,7,26.9,0.02,Card,6,2.4,184.53 +10439,3/15/2023,1669,Electronics,North,5,438.91,0.22,Wallet,1,3.2,1711.75 +10440,3/16/2023,1037,Home,North,6,35.8,0.05,Card,1,2.1,204.06 +10441,3/17/2023,1229,Electronics,North,5,598.47,0.18,Card,7,2.4,2453.73 +10442,3/18/2023,1364,Clothing,East,1,525.49,0.05,Wallet,2,3.8,499.22 +10443,3/19/2023,1562,Electronics,East,6,188.95,0.04,Wallet,4,3.3,1088.35 +10444,3/20/2023,1437,Electronics,North,6,165.59,0,COD,4,1.4,993.54 +10445,3/21/2023,1775,Clothing,West,1,238.14,0.22,Card,2,4.9,185.75 +10446,3/22/2023,1282,Clothing,North,6,223.36,0.13,Card,6,1.2,1165.94 +10447,3/23/2023,1026,Electronics,West,2,232.82,0.04,Wallet,10,1.3,447.01 +10448,3/24/2023,1225,Home,South,4,201.19,0.11,Wallet,2,3.8,716.24 +10449,3/25/2023,1276,Clothing,East,7,378.36,0.06,COD,8,3.8,2489.61 +10450,3/26/2023,1797,Electronics,East,2,111.09,0.33,Card,4,1.1,148.86 +10451,3/27/2023,1608,Home,West,2,509.9,0.11,Card,1,3.6,907.62 +10452,3/28/2023,1283,Electronics,North,1,490.26,0.12,Card,7,1.1,431.43 +10453,3/29/2023,1878,Clothing,East,1,293.74,0.29,COD,6,4.8,208.56 +10454,3/30/2023,1959,Home,West,7,513.85,0.23,Card,6,3.8,2769.65 +10455,3/31/2023,1480,Electronics,South,4,159.58,0.25,Wallet,11,1.7,478.74 +10456,4/1/2023,1452,Electronics,South,5,25.28,0.22,Card,3,1.6,98.59 +10457,4/2/2023,1828,Clothing,East,2,377.24,0.33,COD,10,3.3,505.5 +10458,4/3/2023,1815,Beauty,North,6,282.88,0.07,Card,7,3.5,1578.47 +10459,4/4/2023,1658,Clothing,West,4,346.79,0.35,COD,6,4.3,901.65 +10460,4/5/2023,1515,Home,East,2,541.11,0.29,Card,10,4.6,768.38 +10461,4/6/2023,1546,Clothing,South,5,582.41,0.21,COD,10,2.6,2300.52 +10462,4/7/2023,1191,Electronics,North,6,386.16,0.23,COD,9,4.4,1784.06 +10463,4/8/2023,1048,Clothing,West,2,461.97,0.23,Card,3,3.2,711.43 +10464,4/9/2023,1511,Home,East,3,64.03,0.02,Wallet,3,2.9,188.25 +10465,4/10/2023,1016,Electronics,West,7,109.02,0.08,COD,4,3.8,702.09 +10466,4/11/2023,1171,Electronics,North,4,443.92,0.34,Wallet,3,1.4,1171.95 +10467,4/12/2023,1219,Electronics,North,7,267.35,0.19,Wallet,4,2.1,1515.87 +10468,4/13/2023,1157,Clothing,South,1,275.89,0.13,Wallet,6,4.3,240.02 +10469,4/14/2023,1476,Beauty,North,2,195.54,0.27,Card,1,3,285.49 +10470,4/15/2023,1045,Electronics,East,6,370.3,0.18,Card,2,4.6,1821.88 +10471,4/16/2023,1372,Clothing,West,6,123.32,0,Wallet,10,1.4,739.92 +10472,4/17/2023,1517,Electronics,North,4,381.75,0.26,COD,6,2.3,1129.98 +10473,4/18/2023,1098,Beauty,North,4,116.67,0.26,Card,6,2.4,345.34 +10474,4/19/2023,1891,Electronics,East,7,52.34,0.06,COD,1,2.7,344.4 +10475,4/20/2023,1744,Clothing,West,6,208.26,0.33,Card,6,4.9,837.21 +10476,4/21/2023,1036,Home,West,6,150.22,0.08,COD,11,2.2,829.21 +10477,4/22/2023,1279,Home,South,6,535.06,0.16,Wallet,9,3.1,2696.7 +10478,4/23/2023,1348,Clothing,South,2,47.15,0.04,COD,8,3.1,90.53 +10479,4/24/2023,1496,Electronics,West,6,118.32,0.21,Card,10,4.1,560.84 +10480,4/25/2023,1301,Clothing,East,1,336,0.13,Card,5,3.1,292.32 +10481,4/26/2023,1180,Electronics,East,6,296.42,0.12,Card,4,3.4,1565.1 +10482,4/27/2023,1606,Electronics,South,1,41.82,0.29,COD,6,4,29.69 +10483,4/28/2023,1098,Clothing,North,2,19.24,0,Card,11,1.4,38.48 +10484,4/29/2023,1699,Electronics,East,4,593.02,0.28,COD,5,4.9,1707.9 +10485,4/30/2023,1992,Electronics,North,1,400.42,0.2,COD,6,4.4,320.34 +10486,5/1/2023,1115,Home,East,2,228.76,0.35,COD,10,2.6,297.39 +10487,5/2/2023,1190,Beauty,West,6,290.2,0.21,Wallet,11,3.9,1375.55 +10488,5/3/2023,1252,Clothing,South,2,170.93,0.02,COD,3,4,335.02 +10489,5/4/2023,1980,Electronics,North,6,216.75,0.02,Card,7,4.4,1274.49 +10490,5/5/2023,1927,Electronics,North,7,394.69,0.31,COD,8,1.8,1906.35 +10491,5/6/2023,1982,Beauty,West,2,531.44,0.29,COD,5,3.8,754.64 +10492,5/7/2023,1160,Electronics,East,4,122.72,0.12,Card,5,1.1,431.97 +10493,5/8/2023,1255,Electronics,North,1,506.61,0.22,COD,4,1.5,395.16 +10494,5/9/2023,1322,Clothing,East,7,86.11,0.17,Card,10,4.1,500.3 +10495,5/10/2023,1127,Clothing,West,4,140.77,0.34,Card,5,4.3,371.63 +10496,5/11/2023,1017,Clothing,South,3,36.75,0.33,Wallet,10,3.4,73.87 +10497,5/12/2023,1792,Electronics,North,6,97.37,0.34,Wallet,11,3.3,385.59 +10498,5/13/2023,1734,Electronics,East,1,551.62,0.3,COD,8,4,386.13 +10499,5/14/2023,1565,Beauty,North,4,283.77,0.32,COD,5,4.6,771.85 +10500,5/15/2023,1569,Electronics,East,1,60.43,0.08,Wallet,9,2.7,55.6 +10501,5/16/2023,1322,Home,East,3,576.44,0.29,Wallet,1,1.5,1227.82 +10502,5/17/2023,1871,Home,East,5,529.21,0.25,COD,7,4.4,1984.54 +10503,5/18/2023,1685,Clothing,West,6,456.49,0.34,COD,5,2.4,1807.7 +10504,5/19/2023,1791,Electronics,South,6,561.08,0.2,Card,4,1.5,2693.18 +10505,5/20/2023,1625,Electronics,North,2,143.78,0.03,Card,3,3.5,278.93 +10506,5/21/2023,1287,Clothing,South,6,504.28,0.21,Card,10,3.3,2390.29 +10507,5/22/2023,1942,Beauty,East,6,418.64,0.24,COD,7,2.9,1909 +10508,5/23/2023,1853,Beauty,East,4,523.81,0.08,Wallet,2,4.4,1927.62 +10509,5/24/2023,1662,Electronics,South,7,481.19,0.14,Wallet,5,2.1,2896.76 +10510,5/25/2023,1961,Electronics,South,6,217.7,0.21,Card,2,1.1,1031.9 +10511,5/26/2023,1638,Beauty,North,6,468.02,0.13,COD,7,2.3,2443.06 +10512,5/27/2023,1154,Home,East,3,168.54,0.13,Card,6,1,439.89 +10513,5/28/2023,1489,Beauty,South,7,207.23,0.05,Card,10,3.2,1378.08 +10514,5/29/2023,1385,Electronics,West,3,78.12,0.33,Wallet,7,2.5,157.02 +10515,5/30/2023,1985,Clothing,East,1,562.02,0.26,COD,9,4.3,415.89 +10516,5/31/2023,1784,Home,East,1,185.24,0,COD,2,4.2,185.24 +10517,6/1/2023,1103,Home,North,6,319.56,0.27,Card,9,2.7,1399.67 +10518,6/2/2023,1928,Clothing,West,6,243.93,0.26,Card,7,1.9,1083.05 +10519,6/3/2023,1392,Electronics,North,2,576.56,0,COD,2,2.7,1153.12 +10520,6/4/2023,1810,Clothing,West,1,211,0.13,Card,10,3.6,183.57 +10521,6/5/2023,1245,Electronics,North,4,470.45,0.21,Card,2,1.8,1486.62 +10522,6/6/2023,1175,Clothing,West,6,515.42,0.16,Card,4,4.1,2597.72 +10523,6/7/2023,1038,Beauty,West,4,269.83,0.27,COD,2,2.3,787.9 +10524,6/8/2023,1476,Clothing,West,6,236.23,0.15,Wallet,1,4.7,1204.77 +10525,6/9/2023,1681,Home,South,4,452.43,0.05,Wallet,6,3,1719.23 +10526,6/10/2023,1758,Electronics,East,5,549.04,0.34,Wallet,10,4.4,1811.83 +10527,6/11/2023,1537,Home,West,4,456.64,0.08,Wallet,11,3.5,1680.44 +10528,6/12/2023,1866,Beauty,South,7,147.87,0.25,Wallet,5,3.2,776.32 +10529,6/13/2023,1817,Electronics,South,1,534.66,0.05,COD,3,3.7,507.93 +10530,6/14/2023,1920,Electronics,North,6,241.74,0.12,COD,11,4.2,1276.39 +10531,6/15/2023,1407,Clothing,East,1,352.09,0.15,Card,1,3.6,299.28 +10532,6/16/2023,1524,Electronics,East,7,501.39,0.07,Wallet,9,4.2,3264.05 +10533,6/17/2023,1827,Home,North,7,125.21,0.16,Card,8,1.8,736.23 +10534,6/18/2023,1505,Beauty,East,4,473.94,0.06,Card,6,2.1,1782.01 +10535,6/19/2023,1902,Clothing,North,3,363.76,0.2,Wallet,6,1.9,873.02 +10536,6/20/2023,1824,Electronics,South,3,537.6,0.23,Card,4,4.2,1241.86 +10537,6/21/2023,1035,Clothing,South,7,115.6,0.02,Wallet,2,1.3,793.02 +10538,6/22/2023,1684,Home,West,3,261.1,0.3,COD,4,4.2,548.31 +10539,6/23/2023,1019,Electronics,North,6,502.21,0.06,Card,2,2.6,2832.46 +10540,6/24/2023,1320,Clothing,South,2,26.25,0.08,COD,7,1.3,48.3 +10541,6/25/2023,1775,Clothing,South,5,80.64,0.23,Wallet,9,2.7,310.46 +10542,6/26/2023,1511,Clothing,North,4,594.48,0.16,Card,2,2.2,1997.45 +10543,6/27/2023,1399,Electronics,South,2,179.03,0.17,COD,9,3.4,297.19 +10544,6/28/2023,1653,Home,East,3,585.69,0.04,Wallet,9,2.9,1686.79 +10545,6/29/2023,1971,Electronics,South,4,121.78,0.28,Card,8,2.2,350.73 +10546,6/30/2023,1882,Electronics,North,2,226.24,0.22,Card,1,4.4,352.93 +10547,7/1/2023,1470,Beauty,East,1,455.43,0.05,Card,5,2.6,432.66 +10548,7/2/2023,1142,Home,East,3,399.8,0.13,Card,10,2.9,1043.48 +10549,7/3/2023,1091,Electronics,South,2,354.96,0.28,Card,11,4.4,511.14 +10550,7/4/2023,1353,Electronics,West,6,324.99,0.2,COD,4,1.4,1559.95 +10551,7/5/2023,1833,Electronics,East,1,508.41,0.04,Card,7,2.6,488.07 +10552,7/6/2023,1799,Electronics,North,3,152.44,0.13,Wallet,11,2.6,397.87 +10553,7/7/2023,1726,Electronics,West,5,273.85,0.08,Card,8,3,1259.71 +10554,7/8/2023,1958,Electronics,West,7,105.94,0.18,COD,10,1.4,608.1 +10555,7/9/2023,1853,Clothing,East,3,363.63,0.3,COD,11,1.4,763.62 +10556,7/10/2023,1050,Home,South,6,161.57,0.15,Wallet,8,2.7,824.01 +10557,7/11/2023,1664,Clothing,West,5,210.3,0.15,COD,2,1.1,893.78 +10558,7/12/2023,1697,Home,South,5,290.68,0.32,Card,3,2,988.31 +10559,7/13/2023,1574,Electronics,East,5,30.66,0.2,Wallet,10,1.8,122.64 +10560,7/14/2023,1189,Beauty,North,4,68.78,0.2,Card,10,3,220.1 +10561,7/15/2023,1124,Home,West,4,416.27,0.09,Card,7,1,1515.22 +10562,7/16/2023,1149,Home,North,7,265.95,0.21,Card,4,3.7,1470.7 +10563,7/17/2023,1313,Home,South,5,520.9,0.2,COD,6,4.4,2083.6 +10564,7/18/2023,1569,Beauty,South,7,421.38,0.14,Card,8,3.8,2536.71 +10565,7/19/2023,1341,Clothing,North,1,19.74,0.35,COD,8,4.3,12.83 +10566,7/20/2023,1304,Electronics,East,5,375.78,0.31,COD,7,3.6,1296.44 +10567,7/21/2023,1691,Clothing,East,2,69.83,0.26,Wallet,2,3,103.35 +10568,7/22/2023,1681,Home,West,5,471.85,0.19,Card,2,1.9,1910.99 +10569,7/23/2023,1837,Home,West,4,595.03,0.16,Card,3,2.1,1999.3 +10570,7/24/2023,1782,Clothing,East,4,325.75,0.06,Card,4,2.3,1224.82 +10571,7/25/2023,1053,Electronics,East,2,414.43,0.11,Card,1,1.2,737.69 +10572,7/26/2023,1443,Clothing,North,2,153.83,0.27,COD,5,4.7,224.59 +10573,7/27/2023,1612,Beauty,South,3,270.99,0.16,COD,7,4.6,682.89 +10574,7/28/2023,1992,Clothing,South,1,515.82,0.31,COD,10,1.4,355.92 +10575,7/29/2023,1263,Clothing,West,1,112.94,0.05,Wallet,11,3.2,107.29 +10576,7/30/2023,1052,Electronics,East,1,170.34,0.18,Wallet,5,2.9,139.68 +10577,7/31/2023,1571,Clothing,North,6,275.58,0.23,Card,7,3.7,1273.18 +10578,8/1/2023,1619,Beauty,West,4,431.67,0.18,Wallet,5,3.4,1415.88 +10579,8/2/2023,1004,Home,North,1,234.89,0.31,Card,11,1.5,162.07 +10580,8/3/2023,1102,Home,East,3,557.72,0.35,COD,10,3.6,1087.55 +10581,8/4/2023,1195,Clothing,East,3,70.26,0.04,COD,8,3.4,202.35 +10582,8/5/2023,1773,Clothing,East,1,231.92,0.05,Wallet,7,3.1,220.32 +10583,8/6/2023,1876,Electronics,South,2,429.74,0.05,COD,1,2.6,816.51 +10584,8/7/2023,1991,Home,East,3,147.2,0.24,COD,11,4.8,335.62 +10585,8/8/2023,1883,Clothing,West,7,399,0.13,Wallet,1,4.4,2429.91 +10586,8/9/2023,1349,Clothing,South,2,111.07,0.26,COD,5,3.3,164.38 +10587,8/10/2023,1046,Clothing,North,7,47.75,0.14,COD,2,1,287.46 +10588,8/11/2023,1866,Beauty,West,4,85.79,0.22,Card,9,2.7,267.66 +10589,8/12/2023,1822,Electronics,West,6,559.04,0.27,Card,2,3.8,2448.6 +10590,8/13/2023,1935,Home,North,3,337.77,0.19,Wallet,9,1.5,820.78 +10591,8/14/2023,1819,Electronics,South,2,480.86,0.19,COD,10,2.6,778.99 +10592,8/15/2023,1655,Clothing,West,7,209.6,0.03,COD,2,1.8,1423.18 +10593,8/16/2023,1268,Electronics,West,1,361.71,0.14,Card,4,2.4,311.07 +10594,8/17/2023,1369,Electronics,West,7,304.55,0.19,Card,3,1.1,1726.8 +10595,8/18/2023,1635,Clothing,South,7,568.26,0.16,Card,6,1.5,3341.37 +10596,8/19/2023,1105,Electronics,South,4,452.33,0.32,COD,4,2.8,1230.34 +10597,8/20/2023,1669,Clothing,South,5,442.37,0.32,Card,9,4.6,1504.06 +10598,8/21/2023,1658,Beauty,West,5,42.12,0.29,Card,9,3,149.53 +10599,8/22/2023,1656,Electronics,East,1,336.56,0.13,COD,10,2.8,292.81 +10600,8/23/2023,1119,Home,North,4,288.19,0.25,COD,9,4.2,864.57 +10601,8/24/2023,1830,Clothing,East,4,557.79,0.14,Card,3,2.1,1918.8 +10602,8/25/2023,1786,Home,South,4,165.55,0.08,COD,3,1.4,609.22 +10603,8/26/2023,1603,Electronics,West,4,172.85,0.12,Wallet,4,1.8,608.43 +10604,8/27/2023,1057,Electronics,West,5,255.64,0.02,COD,9,4.2,1252.64 +10605,8/28/2023,1950,Electronics,East,2,157.37,0.12,Wallet,6,3.7,276.97 +10606,8/29/2023,1345,Electronics,East,4,90.57,0.16,Wallet,9,1.4,304.32 +10607,8/30/2023,1740,Electronics,North,2,516.59,0.33,Card,8,3.7,692.23 +10608,8/31/2023,1473,Home,West,7,341.59,0.11,Card,7,4.7,2128.11 +10609,9/1/2023,1116,Beauty,East,7,518.9,0.32,COD,5,1.2,2469.96 +10610,9/2/2023,1829,Home,North,4,501.21,0.08,COD,9,3.5,1844.45 +10611,9/3/2023,1790,Home,South,3,179.99,0.07,Card,4,2.5,502.17 +10612,9/4/2023,1126,Electronics,East,6,335.43,0.18,Card,4,3,1650.32 +10613,9/5/2023,1392,Electronics,South,3,63.68,0.24,COD,8,3.1,145.19 +10614,9/6/2023,1907,Electronics,North,7,550.42,0.02,Card,4,4.1,3775.88 +10615,9/7/2023,1640,Electronics,South,6,251.49,0.08,Wallet,7,3.2,1388.22 +10616,9/8/2023,1057,Clothing,West,3,245.3,0.16,Card,4,3.4,618.16 +10617,9/9/2023,1633,Clothing,West,4,192.11,0.12,Wallet,11,2.3,676.23 +10618,9/10/2023,1512,Clothing,South,2,284.49,0.25,Card,1,1.5,426.74 +10619,9/11/2023,1750,Clothing,West,6,162.28,0.18,Card,10,3.7,798.42 +10620,9/12/2023,1801,Home,North,5,234.29,0.06,Card,9,1,1101.16 +10621,9/13/2023,1095,Home,West,1,482.97,0.31,Wallet,4,2.3,333.25 +10622,9/14/2023,1637,Electronics,South,6,503.04,0.1,Card,3,1.9,2716.42 +10623,9/15/2023,1117,Beauty,South,6,192.95,0.26,COD,3,2.6,856.7 +10624,9/16/2023,1559,Beauty,South,5,289.37,0.27,Wallet,9,2.2,1056.2 +10625,9/17/2023,1600,Electronics,East,4,526.18,0.34,COD,8,3.8,1389.12 +10626,9/18/2023,1487,Clothing,South,3,45.81,0.17,Card,10,2,114.07 +10627,9/19/2023,1236,Clothing,North,3,535.15,0.22,Wallet,7,3.2,1252.25 +10628,9/20/2023,1884,Beauty,West,7,143.22,0.12,Wallet,7,2.8,882.24 +10629,9/21/2023,1896,Beauty,West,2,411.95,0.24,Card,4,4.2,626.16 +10630,9/22/2023,1271,Electronics,East,4,355.79,0.16,COD,3,2.7,1195.45 +10631,9/23/2023,1188,Clothing,East,5,338.47,0.15,Wallet,4,4.5,1438.5 +10632,9/24/2023,1998,Clothing,North,4,517.73,0.3,Wallet,6,1,1449.64 +10633,9/25/2023,1703,Clothing,South,4,74.42,0.02,Card,4,3.4,291.73 +10634,9/26/2023,1446,Electronics,East,3,218.01,0.31,Wallet,4,1,451.28 +10635,9/27/2023,1580,Beauty,West,5,329.88,0.3,Card,2,3.9,1154.58 +10636,9/28/2023,1789,Home,East,1,489.6,0.18,Card,7,1.9,401.47 +10637,9/29/2023,1860,Home,East,6,141.62,0.17,Card,6,2.5,705.27 +10638,9/30/2023,1246,Beauty,South,3,484.71,0.13,Card,2,2.5,1265.09 +10639,10/1/2023,1962,Home,East,5,248.79,0.35,COD,5,4.4,808.57 +10640,10/2/2023,1075,Clothing,North,2,125.51,0.04,COD,6,1.4,240.98 +10641,10/3/2023,1153,Clothing,West,6,459.01,0.21,Card,5,3.7,2175.71 +10642,10/4/2023,1655,Electronics,South,6,68.18,0.24,Card,4,4.9,310.9 +10643,10/5/2023,1434,Home,West,3,316.14,0.33,Card,11,1.1,635.44 +10644,10/6/2023,1996,Electronics,North,7,52.37,0.27,Wallet,11,4.9,267.61 +10645,10/7/2023,1085,Home,North,2,223.5,0.23,Wallet,9,1.1,344.19 +10646,10/8/2023,1696,Electronics,East,3,366.63,0.04,Card,3,4.4,1055.89 +10647,10/9/2023,1284,Electronics,East,4,340.33,0.13,Wallet,11,4.8,1184.35 +10648,10/10/2023,1973,Electronics,East,7,251.72,0.05,Card,2,5,1673.94 +10649,10/11/2023,1219,Electronics,West,5,265.99,0.31,COD,9,2.8,917.67 +10650,10/12/2023,1068,Home,North,2,147.66,0.26,Wallet,8,4.5,218.54 +10651,10/13/2023,1046,Home,South,6,281.69,0.27,Card,9,1.5,1233.8 +10652,10/14/2023,1093,Clothing,East,3,572.65,0.23,COD,10,2.7,1322.82 +10653,10/15/2023,1749,Electronics,West,6,512.51,0.18,Card,11,2.2,2521.55 +10654,10/16/2023,1957,Electronics,East,2,99.96,0.05,Card,3,2.6,189.92 +10655,10/17/2023,1452,Electronics,North,6,32.42,0.12,COD,1,3.8,171.18 +10656,10/18/2023,1203,Electronics,South,3,561.11,0.05,Wallet,11,1.3,1599.16 +10657,10/19/2023,1911,Beauty,North,7,323.15,0.25,COD,1,5,1696.54 +10658,10/20/2023,1217,Electronics,West,3,329.64,0.06,Wallet,3,3.5,929.58 +10659,10/21/2023,1473,Clothing,East,1,471.72,0.25,Wallet,4,4.5,353.79 +10660,10/22/2023,1431,Electronics,North,6,199.09,0.24,Card,2,4.3,907.85 +10661,10/23/2023,1340,Electronics,West,1,296.92,0.16,Card,8,4.1,249.41 +10662,10/24/2023,1550,Clothing,East,7,581.67,0.05,COD,3,1.2,3868.11 +10663,10/25/2023,1611,Clothing,South,1,408.21,0.11,COD,4,3.1,363.31 +10664,10/26/2023,1288,Electronics,North,6,104.94,0.11,Card,6,2.3,560.38 +10665,10/27/2023,1253,Electronics,East,2,92.94,0.25,Wallet,10,1.5,139.41 +10666,10/28/2023,1733,Clothing,East,4,134.49,0.04,COD,6,2.4,516.44 +10667,10/29/2023,1356,Electronics,East,7,463.53,0.29,Card,2,3.6,2303.74 +10668,10/30/2023,1022,Electronics,East,3,187.8,0.27,COD,6,1.9,411.28 +10669,10/31/2023,1761,Beauty,North,5,27.51,0.07,Card,4,2.8,127.92 +10670,11/1/2023,1521,Clothing,East,7,567.34,0.25,COD,5,2.6,2978.54 +10671,11/2/2023,1757,Clothing,West,1,114.28,0.23,Wallet,7,1.2,88 +10672,11/3/2023,1836,Clothing,North,2,20.59,0.26,Wallet,7,3.5,30.47 +10673,11/4/2023,1099,Clothing,East,6,153.72,0.07,Card,6,3.5,857.76 +10674,11/5/2023,1801,Clothing,North,2,152.49,0.06,COD,10,4.9,286.68 +10675,11/6/2023,1179,Home,West,2,261.87,0.08,COD,6,2.2,481.84 +10676,11/7/2023,1222,Home,West,6,553.43,0.13,Card,6,2.7,2888.9 +10677,11/8/2023,1905,Electronics,North,5,529.32,0.28,Card,4,2.6,1905.55 +10678,11/9/2023,1761,Clothing,East,6,282.28,0.26,COD,3,4.7,1253.32 +10679,11/10/2023,1658,Clothing,East,5,255.38,0.32,COD,1,2.6,868.29 +10680,11/11/2023,1441,Beauty,West,6,339.68,0.02,Card,3,2.8,1997.32 +10681,11/12/2023,1607,Clothing,East,1,157.42,0,Card,3,2,157.42 +10682,11/13/2023,1768,Clothing,West,5,45.53,0.24,Card,9,1,173.01 +10683,11/14/2023,1324,Electronics,East,1,564.45,0.1,Card,3,1.4,508.01 +10684,11/15/2023,1515,Clothing,West,7,124.22,0.12,COD,8,3.8,765.2 +10685,11/16/2023,1015,Electronics,South,5,131.06,0.19,Card,8,3.7,530.79 +10686,11/17/2023,1791,Electronics,East,5,291.39,0.04,Card,3,2.3,1398.67 +10687,11/18/2023,1335,Electronics,East,6,302.59,0.22,Wallet,10,2.9,1416.12 +10688,11/19/2023,1758,Home,East,5,25.78,0.11,Card,10,2.2,114.72 +10689,11/20/2023,1257,Electronics,North,1,101.55,0.22,COD,6,3.9,79.21 +10690,11/21/2023,1496,Clothing,East,7,236.22,0.29,Wallet,8,4.4,1174.01 +10691,11/22/2023,1987,Beauty,North,6,414.98,0.06,COD,8,4.6,2340.49 +10692,11/23/2023,1895,Electronics,North,3,148.62,0.33,COD,10,1.7,298.73 +10693,11/24/2023,1159,Clothing,West,7,262.46,0.19,Card,10,3.8,1488.15 +10694,11/25/2023,1474,Clothing,North,7,341.05,0.32,Card,9,4.9,1623.4 +10695,11/26/2023,1851,Electronics,North,1,534.83,0.07,COD,9,3.6,497.39 +10696,11/27/2023,1663,Home,South,7,205.75,0.21,COD,8,2.4,1137.8 +10697,11/28/2023,1907,Electronics,East,3,93.13,0.14,Card,7,3.5,240.28 +10698,11/29/2023,1689,Clothing,North,2,301.22,0.27,COD,10,3.8,439.78 +10699,11/30/2023,1674,Clothing,East,6,451.83,0.21,Wallet,3,2.6,2141.67 +10700,12/1/2023,1379,Clothing,North,2,79.27,0.17,Card,7,1.4,131.59 +10701,12/2/2023,1544,Home,West,6,263.44,0.32,COD,4,3.4,1074.84 +10702,12/3/2023,1928,Electronics,South,7,25.4,0.13,COD,2,4.2,154.69 +10703,12/4/2023,1956,Electronics,North,6,34.63,0.08,Wallet,8,5,191.16 +10704,12/5/2023,1690,Home,East,1,297.53,0.21,Wallet,2,1.9,235.05 +10705,12/6/2023,1426,Clothing,West,3,189.45,0.22,COD,1,3.8,443.31 +10706,12/7/2023,1612,Home,East,6,509.39,0.15,Card,5,1.1,2597.89 +10707,12/8/2023,1267,Home,West,3,367.26,0.17,Card,10,4.9,914.48 +10708,12/9/2023,1834,Home,South,6,280.55,0.34,Card,9,1.1,1110.98 +10709,12/10/2023,1576,Clothing,West,3,253.64,0.26,COD,5,2.4,563.08 +10710,12/11/2023,1416,Electronics,East,2,305.89,0.04,COD,11,1.3,587.31 +10711,12/12/2023,1167,Home,East,1,38.66,0.07,Wallet,2,3.5,35.95 +10712,12/13/2023,1841,Clothing,North,6,537.28,0.34,COD,10,2.4,2127.63 +10713,12/14/2023,1042,Electronics,West,4,599.01,0.25,COD,4,3.9,1797.03 +10714,12/15/2023,1555,Beauty,East,3,121.17,0.32,COD,8,2.9,247.19 +10715,12/16/2023,1284,Beauty,North,3,85.42,0.11,Card,7,2.7,228.07 +10716,12/17/2023,1396,Clothing,South,4,98.99,0.26,COD,5,2.4,293.01 +10717,12/18/2023,1011,Electronics,East,1,401.7,0.25,COD,4,1.3,301.27 +10718,12/19/2023,1606,Clothing,North,3,401.94,0.1,Wallet,5,1.8,1085.24 +10719,12/20/2023,1301,Home,East,1,511.04,0.19,Card,7,3.6,413.94 +10720,12/21/2023,1897,Beauty,West,3,454.82,0.22,Wallet,5,3,1064.28 +10721,12/22/2023,1252,Electronics,North,7,278.07,0.17,COD,8,1.3,1615.59 +10722,12/23/2023,1498,Electronics,West,5,373.52,0.29,Card,7,3.2,1326 +10723,12/24/2023,1753,Beauty,South,7,417.65,0.29,Card,7,1.2,2075.72 +10724,12/25/2023,1034,Clothing,West,3,314.95,0.3,Card,9,3,661.39 +10725,12/26/2023,1726,Clothing,North,5,293.26,0.28,COD,8,4.9,1055.74 +10726,12/27/2023,1848,Beauty,East,6,392.38,0.17,Card,8,2.2,1954.05 +10727,12/28/2023,1089,Electronics,North,1,341.12,0.13,Card,6,3.9,296.77 +10728,12/29/2023,1775,Clothing,West,3,391.71,0.29,Wallet,7,4,834.34 +10729,12/30/2023,1604,Electronics,West,2,373.52,0.17,COD,8,2.6,620.04 +10730,12/31/2023,1921,Clothing,East,2,435.73,0.09,COD,5,3.4,793.03 +10731,1/1/2024,1969,Home,South,4,391.04,0.18,Card,10,2.9,1282.61 +10732,1/2/2024,1601,Clothing,North,2,319.05,0.05,COD,2,2.1,606.2 +10733,1/3/2024,1417,Beauty,East,5,413.85,0.24,Card,7,4,1572.63 +10734,1/4/2024,1114,Clothing,East,2,277.95,0.12,Wallet,10,3.8,489.19 +10735,1/5/2024,1616,Electronics,East,2,156.38,0.09,Card,3,4.6,284.61 +10736,1/6/2024,1902,Electronics,North,2,15.83,0.33,COD,10,3.5,21.21 +10737,1/7/2024,1195,Clothing,North,3,342.58,0.27,COD,11,2.6,750.25 +10738,1/8/2024,1825,Clothing,North,4,360.53,0.28,COD,8,3.9,1038.33 +10739,1/9/2024,1500,Electronics,South,1,583.65,0.22,Wallet,6,3.5,455.25 +10740,1/10/2024,1625,Clothing,East,4,226.46,0.29,Card,11,3.5,643.15 +10741,1/11/2024,1492,Clothing,West,5,245.57,0.27,Card,4,4.4,896.33 +10742,1/12/2024,1074,Home,West,3,133.05,0.21,COD,2,4.6,315.33 +10743,1/13/2024,1412,Home,East,6,56.26,0.34,COD,7,1.7,222.79 +10744,1/14/2024,1375,Home,West,3,467.09,0.07,Card,1,2.3,1303.18 +10745,1/15/2024,1419,Electronics,South,7,161.06,0.33,Card,7,3.6,755.37 +10746,1/16/2024,1728,Electronics,South,2,371.21,0.14,COD,10,3.2,638.48 +10747,1/17/2024,1276,Home,North,2,417.35,0.18,Wallet,10,3.6,684.45 +10748,1/18/2024,1760,Clothing,North,5,290.67,0.04,COD,7,2.7,1395.22 +10749,1/19/2024,1675,Electronics,North,6,527.67,0.19,Wallet,10,2.6,2564.48 +10750,1/20/2024,1393,Home,North,7,274.62,0.21,COD,3,1.5,1518.65 +10751,1/21/2024,1868,Home,North,3,181.67,0.35,Card,4,3.5,354.26 +10752,1/22/2024,1456,Clothing,West,6,539.17,0.34,Card,4,1.7,2135.11 +10753,1/23/2024,1919,Electronics,West,1,519.02,0.34,COD,4,3.7,342.55 +10754,1/24/2024,1191,Home,North,4,110.96,0.12,COD,9,4.9,390.58 +10755,1/25/2024,1738,Clothing,South,3,30.19,0.35,COD,6,2,58.87 +10756,1/26/2024,1688,Home,West,6,67.64,0.16,COD,10,1.6,340.91 +10757,1/27/2024,1098,Home,South,1,182.63,0.3,Wallet,9,1.1,127.84 +10758,1/28/2024,1547,Home,South,1,583.77,0.08,COD,4,2.5,537.07 +10759,1/29/2024,1977,Clothing,East,7,341.73,0.18,Card,7,1.9,1961.53 +10760,1/30/2024,1998,Electronics,East,7,233.36,0.34,Card,10,3,1078.12 +10761,1/31/2024,1095,Home,North,4,534.9,0.33,COD,9,3.1,1433.53 +10762,2/1/2024,1663,Clothing,South,1,280.08,0.24,Wallet,10,2.4,212.86 +10763,2/2/2024,1662,Home,West,5,199.41,0.28,Card,3,4,717.88 +10764,2/3/2024,1189,Electronics,East,1,565.61,0.06,Wallet,3,4.6,531.67 +10765,2/4/2024,1735,Electronics,East,6,511.97,0.25,Wallet,6,1.8,2303.87 +10766,2/5/2024,1036,Beauty,South,7,508.55,0.22,COD,8,4.3,2776.68 +10767,2/6/2024,1779,Home,East,5,314.69,0.03,Card,1,1.5,1526.25 +10768,2/7/2024,1368,Beauty,East,7,476.82,0.04,Card,4,1.9,3204.23 +10769,2/8/2024,1694,Home,West,7,119.92,0.04,Card,8,3.2,805.86 +10770,2/9/2024,1524,Clothing,South,7,350.34,0.25,Card,6,2.2,1839.28 +10771,2/10/2024,1278,Home,East,1,590.55,0.05,COD,2,1.2,561.02 +10772,2/11/2024,1216,Beauty,South,2,185.21,0.16,Card,8,2.2,311.15 +10773,2/12/2024,1866,Clothing,East,1,479.7,0.12,COD,1,4.6,422.14 +10774,2/13/2024,1872,Clothing,West,7,301.93,0.19,Card,1,1.7,1711.94 +10775,2/14/2024,1797,Electronics,South,5,38.29,0.25,Card,7,4.1,143.59 +10776,2/15/2024,1272,Clothing,East,1,461.37,0.24,COD,10,3.9,350.64 +10777,2/16/2024,1880,Home,West,7,113.61,0.18,Wallet,3,1.4,652.12 +10778,2/17/2024,1061,Electronics,East,7,384.41,0.16,COD,8,2.3,2260.33 +10779,2/18/2024,1595,Electronics,South,1,65.11,0.14,COD,9,1.8,55.99 +10780,2/19/2024,1879,Electronics,East,1,568.92,0.3,COD,8,1.1,398.24 +10781,2/20/2024,1728,Electronics,South,5,185.66,0.12,COD,1,1.7,816.9 +10782,2/21/2024,1341,Electronics,South,1,147.48,0.09,Wallet,1,1.8,134.21 +10783,2/22/2024,1396,Clothing,East,4,90.54,0.26,Card,6,1.7,268 +10784,2/23/2024,1698,Beauty,West,6,568.41,0.13,Wallet,1,1.4,2967.1 +10785,2/24/2024,1018,Clothing,North,4,431.46,0.3,Card,8,3.1,1208.09 +10786,2/25/2024,1176,Electronics,West,5,448.87,0.11,Wallet,6,2.3,1997.47 +10787,2/26/2024,1611,Electronics,West,2,307.15,0.25,Card,5,4.6,460.72 +10788,2/27/2024,1395,Home,East,4,292.72,0.02,Wallet,6,1.7,1147.46 +10789,2/28/2024,1444,Clothing,West,7,79.36,0.13,Wallet,4,3.4,483.3 +10790,2/29/2024,1232,Home,West,6,342.51,0.12,Card,1,4.6,1808.45 +10791,3/1/2024,1914,Home,North,3,159.45,0.29,Wallet,7,1.2,339.63 +10792,3/2/2024,1075,Home,West,6,586.63,0.34,Card,10,3.1,2323.05 +10793,3/3/2024,1264,Electronics,North,4,481,0.16,Card,9,2.8,1616.16 +10794,3/4/2024,1454,Home,East,3,256.6,0.29,Card,4,4.7,546.56 +10795,3/5/2024,1795,Electronics,North,5,103.53,0.24,Wallet,4,3.7,393.41 +10796,3/6/2024,1717,Beauty,South,6,474.42,0.34,COD,9,2.4,1878.7 +10797,3/7/2024,1734,Clothing,South,2,86.4,0.28,COD,4,3.8,124.42 +10798,3/8/2024,1383,Electronics,North,3,125.76,0.03,COD,10,3.3,365.96 +10799,3/9/2024,1563,Electronics,South,3,138.74,0.25,Wallet,4,2.4,312.17 +10800,3/10/2024,1850,Electronics,East,6,340.78,0.19,COD,8,4.1,1656.19 +10801,3/11/2024,1505,Home,South,4,475.43,0.01,Card,11,3.7,1882.7 +10802,3/12/2024,1366,Electronics,North,3,198.87,0.09,Card,4,1,542.92 +10803,3/13/2024,1143,Clothing,East,5,64.53,0.32,Card,9,4.5,219.4 +10804,3/14/2024,1884,Electronics,South,6,286.76,0.32,COD,11,2.6,1169.98 +10805,3/15/2024,1068,Home,East,5,452.64,0.28,Card,8,3.6,1629.5 +10806,3/16/2024,1098,Home,North,6,144.67,0.34,Card,5,2.6,572.89 +10807,3/17/2024,1395,Home,South,5,143.66,0.28,Wallet,9,4.5,517.18 +10808,3/18/2024,1024,Home,East,4,569.13,0,Card,8,3.6,2276.52 +10809,3/19/2024,1947,Electronics,East,6,573.18,0.1,COD,10,3.3,3095.17 +10810,3/20/2024,1890,Electronics,South,7,594.42,0.01,Card,4,4.9,4119.33 +10811,3/21/2024,1468,Home,East,2,487.48,0.03,Card,4,2.1,945.71 +10812,3/22/2024,1483,Clothing,East,4,125.09,0.08,Card,1,1.3,460.33 +10813,3/23/2024,1564,Clothing,North,5,139.01,0.18,Card,4,3.1,569.94 +10814,3/24/2024,1150,Electronics,North,6,214.03,0.3,Wallet,8,2.7,898.93 +10815,3/25/2024,1143,Electronics,North,4,201.11,0.3,Card,5,2.8,563.11 +10816,3/26/2024,1568,Electronics,North,5,574.57,0.22,Card,6,3.5,2240.82 +10817,3/27/2024,1038,Beauty,North,1,476.61,0.32,COD,4,3.5,324.09 +10818,3/28/2024,1108,Electronics,North,1,438.55,0.18,COD,5,2.6,359.61 +10819,3/29/2024,1692,Clothing,South,3,123.79,0.31,COD,10,4.5,256.25 +10820,3/30/2024,1041,Electronics,North,2,547.07,0.16,Wallet,8,3.6,919.08 +10821,3/31/2024,1185,Home,East,1,499.3,0.1,COD,9,4.6,449.37 +10822,4/1/2024,1934,Electronics,South,7,110.73,0.32,Card,3,4.7,527.07 +10823,4/2/2024,1397,Beauty,East,5,524.63,0.14,Wallet,10,1.7,2255.91 +10824,4/3/2024,1222,Beauty,North,4,174.26,0.18,COD,4,3.7,571.57 +10825,4/4/2024,1633,Electronics,North,6,62.31,0.12,Card,1,2.3,329 +10826,4/5/2024,1132,Beauty,East,4,399.24,0.23,Card,11,4.3,1229.66 +10827,4/6/2024,1162,Beauty,East,3,397.48,0.35,Card,5,3.9,775.09 +10828,4/7/2024,1214,Home,East,4,70.54,0.01,Card,4,1.8,279.34 +10829,4/8/2024,1732,Home,West,1,201.53,0.31,Card,6,4.8,139.06 +10830,4/9/2024,1234,Electronics,West,4,595.8,0,Card,6,3.7,2383.2 +10831,4/10/2024,1842,Clothing,West,1,411.88,0.13,Wallet,10,4.8,358.34 +10832,4/11/2024,1657,Electronics,West,1,442.09,0.06,Wallet,6,1.8,415.56 +10833,4/12/2024,1750,Electronics,South,2,139.56,0.27,COD,3,4.5,203.76 +10834,4/13/2024,1587,Beauty,North,3,61.09,0.02,Wallet,7,3.7,179.6 +10835,4/14/2024,1008,Electronics,East,7,176.99,0.19,Card,3,3.2,1003.53 +10836,4/15/2024,1073,Home,North,7,160.61,0.1,Wallet,6,4.3,1011.84 +10837,4/16/2024,1953,Home,East,5,152.21,0.05,COD,10,3.5,723 +10838,4/17/2024,1491,Beauty,North,7,127.76,0.27,Card,1,3.7,652.85 +10839,4/18/2024,1912,Beauty,South,1,351.23,0.08,Card,8,2,323.13 +10840,4/19/2024,1252,Electronics,West,6,206.94,0.08,Card,7,4.3,1142.31 +10841,4/20/2024,1229,Electronics,North,3,494.9,0.1,Card,9,3.6,1336.23 +10842,4/21/2024,1518,Clothing,East,5,122.61,0.21,Card,3,4.4,484.31 +10843,4/22/2024,1173,Electronics,North,7,286.81,0.23,Card,8,2.4,1545.91 +10844,4/23/2024,1652,Electronics,South,7,22.99,0.01,Card,2,2.3,159.32 +10845,4/24/2024,1167,Clothing,South,6,296.78,0.08,Card,9,1.1,1638.23 +10846,4/25/2024,1169,Home,North,4,47.67,0.15,Wallet,1,4.1,162.08 +10847,4/26/2024,1392,Clothing,West,3,586.97,0.12,Card,10,2.3,1549.6 +10848,4/27/2024,1945,Electronics,East,6,477.5,0.31,Card,7,2.3,1976.85 +10849,4/28/2024,1794,Home,South,7,301.72,0.28,COD,10,3.8,1520.67 +10850,4/29/2024,1633,Electronics,South,3,65.65,0.22,Wallet,1,2,153.62 +10851,4/30/2024,1193,Electronics,North,3,361.58,0.12,Card,6,4.6,954.57 +10852,5/1/2024,1516,Home,South,7,458.88,0.25,Wallet,1,3.2,2409.12 +10853,5/2/2024,1028,Clothing,South,4,126.57,0.3,Card,4,4.9,354.4 +10854,5/3/2024,1164,Home,East,4,347.4,0.21,Card,7,1.3,1097.78 +10855,5/4/2024,1421,Electronics,West,7,491.31,0.27,Card,2,2.3,2510.59 +10856,5/5/2024,1338,Home,East,3,464.42,0.26,COD,3,2.5,1031.01 +10857,5/6/2024,1647,Clothing,West,6,484.75,0.2,Card,4,3.9,2326.8 +10858,5/7/2024,1495,Clothing,East,2,529.4,0.11,COD,6,1.9,942.33 +10859,5/8/2024,1364,Clothing,North,1,563.54,0.26,Card,9,2.5,417.02 +10860,5/9/2024,1832,Beauty,South,4,252.23,0.07,COD,4,4.6,938.3 +10861,5/10/2024,1341,Clothing,West,7,347.73,0.27,Card,6,1.5,1776.9 +10862,5/11/2024,1499,Clothing,North,2,477.54,0.28,COD,7,4,687.66 +10863,5/12/2024,1656,Beauty,South,4,422.83,0.29,COD,4,3.8,1200.84 +10864,5/13/2024,1510,Home,South,3,597.38,0.17,COD,6,1.5,1487.48 +10865,5/14/2024,1326,Clothing,South,7,23,0.07,Card,3,3.8,149.73 +10866,5/15/2024,1216,Home,East,2,222.75,0.03,Wallet,5,3.3,432.14 +10867,5/16/2024,1300,Clothing,North,7,179.4,0.26,COD,11,2.2,929.29 +10868,5/17/2024,1131,Electronics,North,6,168.45,0.31,Card,10,2.2,697.38 +10869,5/18/2024,1803,Clothing,South,6,145.18,0.23,Wallet,4,4.3,670.73 +10870,5/19/2024,1069,Beauty,West,5,429.84,0.05,COD,7,1.9,2041.74 +10871,5/20/2024,1251,Beauty,North,1,64.58,0.33,COD,6,3.1,43.27 +10872,5/21/2024,1414,Electronics,East,1,448.84,0.35,Card,7,3.7,291.75 +10873,5/22/2024,1786,Clothing,West,4,420.65,0.15,COD,6,1.5,1430.21 +10874,5/23/2024,1444,Electronics,West,1,161.72,0.21,Card,2,4.7,127.76 +10875,5/24/2024,1875,Beauty,West,7,162.91,0.27,Card,7,2,832.47 +10876,5/25/2024,1181,Beauty,West,7,382.88,0.26,Card,8,2.3,1983.32 +10877,5/26/2024,1166,Clothing,North,5,460.87,0.34,COD,7,3.7,1520.87 +10878,5/27/2024,1090,Home,South,6,527.74,0.04,Card,4,1.3,3039.78 +10879,5/28/2024,1713,Home,West,2,513.5,0.2,Wallet,4,3.5,821.6 +10880,5/29/2024,1857,Clothing,East,2,579.46,0.24,Card,5,4.7,880.78 +10881,5/30/2024,1530,Electronics,East,6,355.11,0.31,Card,9,2,1470.16 +10882,5/31/2024,1038,Clothing,South,3,546.56,0.31,COD,5,2.4,1131.38 +10883,6/1/2024,1125,Home,North,6,487.98,0.34,COD,2,1.9,1932.4 +10884,6/2/2024,1450,Home,South,2,538.38,0.18,Card,5,4.3,882.94 +10885,6/3/2024,1172,Clothing,West,4,21.8,0.29,Card,3,1.7,61.91 +10886,6/4/2024,1652,Beauty,North,5,580.05,0.15,Card,10,2.4,2465.21 +10887,6/5/2024,1753,Electronics,North,6,292.02,0.15,COD,8,3.4,1489.3 +10888,6/6/2024,1219,Clothing,West,3,481.94,0.09,Card,10,2.6,1315.7 +10889,6/7/2024,1637,Home,East,4,89.41,0.29,COD,10,1.3,253.92 +10890,6/8/2024,1057,Home,West,6,246.63,0.35,COD,2,4.8,961.86 +10891,6/9/2024,1659,Clothing,South,4,173.8,0.09,Card,11,2.4,632.63 +10892,6/10/2024,1475,Electronics,West,6,185.62,0.02,Card,4,2.8,1091.45 +10893,6/11/2024,1455,Electronics,East,4,87.1,0.29,Card,5,1.7,247.36 +10894,6/12/2024,1828,Clothing,West,7,486.37,0.22,Card,4,4.5,2655.58 +10895,6/13/2024,1894,Clothing,South,1,20.41,0.34,COD,5,2.2,13.47 +10896,6/14/2024,1360,Electronics,South,4,197.82,0.09,COD,10,1.1,720.06 +10897,6/15/2024,1934,Home,East,7,117.03,0.02,COD,11,2.3,802.83 +10898,6/16/2024,1000,Clothing,South,1,359.59,0.17,Card,4,4.9,298.46 +10899,6/17/2024,1386,Home,South,2,163.74,0.03,Wallet,3,1.6,317.66 +10900,6/18/2024,1972,Home,West,1,166.51,0.09,Card,1,1.1,151.52 +10901,6/19/2024,1347,Electronics,North,4,300.68,0.04,Card,4,3.3,1154.61 +10902,6/20/2024,1189,Electronics,South,5,396.82,0.08,COD,9,2.5,1825.37 +10903,6/21/2024,1504,Home,South,5,85.96,0.04,Wallet,1,4.2,412.61 +10904,6/22/2024,1190,Clothing,East,2,117.67,0.33,Card,7,3.9,157.68 +10905,6/23/2024,1507,Home,East,4,159.6,0.1,COD,3,1.7,574.56 +10906,6/24/2024,1368,Home,West,1,584.64,0.16,Wallet,8,3.3,491.1 +10907,6/25/2024,1408,Home,West,5,247.33,0.31,COD,6,1.1,853.29 +10908,6/26/2024,1823,Beauty,South,6,365.41,0.24,Card,1,2.8,1666.27 +10909,6/27/2024,1928,Clothing,North,3,156.3,0.22,Wallet,10,3.9,365.74 +10910,6/28/2024,1933,Clothing,North,4,301.92,0.25,COD,5,2.7,905.76 +10911,6/29/2024,1116,Clothing,West,7,58.36,0.29,COD,8,1.5,290.05 +10912,6/30/2024,1133,Electronics,East,7,35.32,0.31,COD,11,1.2,170.6 +10913,7/1/2024,1057,Clothing,South,6,289.21,0.22,Wallet,3,4.4,1353.5 +10914,7/2/2024,1555,Electronics,South,6,248.22,0.31,Card,4,4.6,1027.63 +10915,7/3/2024,1684,Beauty,North,4,95.07,0.19,Card,7,2.4,308.03 +10916,7/4/2024,1671,Clothing,West,3,417.25,0.1,COD,11,1.7,1126.58 +10917,7/5/2024,1172,Clothing,North,5,595.85,0.31,Card,6,4.9,2055.68 +10918,7/6/2024,1828,Clothing,North,3,246.45,0.19,Card,7,3.2,598.87 +10919,7/7/2024,1814,Electronics,West,2,380.37,0.32,COD,9,2.9,517.3 +10920,7/8/2024,1148,Electronics,East,1,578.34,0.01,Card,9,4,572.56 +10921,7/9/2024,1079,Clothing,South,1,501.45,0.14,COD,2,1.7,431.25 +10922,7/10/2024,1885,Electronics,East,6,286.18,0.33,Wallet,3,3.3,1150.44 +10923,7/11/2024,1212,Clothing,West,5,446.43,0.09,Card,4,4.6,2031.26 +10924,7/12/2024,1202,Beauty,West,3,89.96,0.33,Wallet,6,1.1,180.82 +10925,7/13/2024,1763,Beauty,South,6,314.58,0.33,Card,5,3.7,1264.61 +10926,7/14/2024,1228,Home,East,4,178.25,0.31,Wallet,6,3.2,491.97 +10927,7/15/2024,1675,Electronics,South,6,109.28,0.2,Wallet,11,4.8,524.54 +10928,7/16/2024,1226,Beauty,North,4,264.37,0.23,Card,8,2,814.26 +10929,7/17/2024,1658,Beauty,North,4,91.64,0.3,Card,2,4.4,256.59 +10930,7/18/2024,1531,Electronics,North,2,423.91,0.27,Card,6,2.2,618.91 +10931,7/19/2024,1440,Home,East,2,281.9,0.22,Wallet,9,2.7,439.76 +10932,7/20/2024,1401,Electronics,North,4,325.72,0.34,Wallet,5,1.9,859.9 +10933,7/21/2024,1046,Home,South,5,100.63,0.24,Card,1,4.5,382.39 +10934,7/22/2024,1232,Beauty,East,2,96.77,0.34,COD,8,1.8,127.74 +10935,7/23/2024,1304,Electronics,South,2,356.3,0.02,Card,4,4.4,698.35 +10936,7/24/2024,1525,Beauty,West,1,591.23,0.05,COD,8,2.8,561.67 +10937,7/25/2024,1142,Clothing,East,6,71.31,0.16,Wallet,4,4.3,359.4 +10938,7/26/2024,1414,Beauty,South,1,182.15,0.13,Card,11,2.1,158.47 +10939,7/27/2024,1512,Clothing,South,5,523.63,0.27,Wallet,8,1.5,1911.25 +10940,7/28/2024,1372,Home,East,2,57.28,0.06,Wallet,9,3.2,107.69 +10941,7/29/2024,1565,Electronics,West,7,527.39,0.34,Wallet,5,3,2436.54 +10942,7/30/2024,1885,Electronics,East,2,321.71,0.11,Card,5,2.4,572.64 +10943,7/31/2024,1258,Electronics,North,3,253.84,0.15,Card,2,3.7,647.29 +10944,8/1/2024,1655,Beauty,North,5,196.16,0.1,Card,9,1.4,882.72 +10945,8/2/2024,1470,Home,West,7,188.81,0.2,COD,11,3.5,1057.34 +10946,8/3/2024,1952,Beauty,South,6,193.89,0.02,COD,4,1.8,1140.07 +10947,8/4/2024,1970,Beauty,South,6,532.61,0.05,Card,3,1.5,3035.88 +10948,8/5/2024,1011,Electronics,South,7,438.42,0.26,COD,2,4.6,2271.02 +10949,8/6/2024,1329,Clothing,East,6,406.79,0.07,Card,3,2.8,2269.89 +10950,8/7/2024,1735,Electronics,East,7,482.27,0.08,Card,4,4.1,3105.82 +10951,8/8/2024,1783,Electronics,West,5,165.41,0.28,Card,9,1.4,595.48 +10952,8/9/2024,1967,Electronics,North,7,376.56,0.03,Card,6,1.2,2556.84 +10953,8/10/2024,1357,Clothing,South,7,284.14,0.15,Card,10,3,1690.63 +10954,8/11/2024,1971,Electronics,North,3,472.73,0.01,Card,5,2.3,1404.01 +10955,8/12/2024,1407,Electronics,East,3,195.91,0.12,Wallet,9,1,517.2 +10956,8/13/2024,1667,Electronics,East,1,391.26,0.24,COD,8,1.7,297.36 +10957,8/14/2024,1372,Electronics,East,5,531.09,0.03,Card,6,1.9,2575.79 +10958,8/15/2024,1007,Beauty,North,5,250.26,0.31,COD,3,2.2,863.4 +10959,8/16/2024,1121,Home,West,3,53.97,0.32,COD,7,4.5,110.1 +10960,8/17/2024,1347,Beauty,West,4,316.89,0.04,Card,10,2.7,1216.86 +10961,8/18/2024,1675,Clothing,East,4,217.39,0.35,COD,6,3.7,565.21 +10962,8/19/2024,1089,Electronics,South,1,408.25,0.1,COD,11,1.1,367.42 +10963,8/20/2024,1647,Home,North,4,571.35,0.03,COD,8,4.3,2216.84 +10964,8/21/2024,1697,Electronics,East,4,299.08,0,COD,6,2,1196.32 +10965,8/22/2024,1315,Electronics,North,4,287.72,0.14,COD,11,2.2,989.76 +10966,8/23/2024,1177,Electronics,North,2,397.93,0.22,Card,10,1.2,620.77 +10967,8/24/2024,1539,Electronics,West,1,75.55,0.12,Wallet,4,2.6,66.48 +10968,8/25/2024,1731,Electronics,East,3,163.3,0.29,Card,10,4.4,347.83 +10969,8/26/2024,1868,Clothing,West,4,552.6,0.25,Wallet,7,2.5,1657.8 +10970,8/27/2024,1040,Home,East,6,406.92,0.12,Card,7,4.6,2148.54 +10971,8/28/2024,1739,Electronics,North,7,22.86,0.26,Card,11,4.5,118.41 +10972,8/29/2024,1703,Electronics,West,2,134.71,0.33,COD,8,1.2,180.51 +10973,8/30/2024,1922,Home,North,4,414.46,0.03,Card,2,2.2,1608.1 +10974,8/31/2024,1501,Electronics,East,7,462.17,0.11,Wallet,11,4.6,2879.32 +10975,9/1/2024,1958,Electronics,South,7,506.32,0.16,Card,6,1.1,2977.16 +10976,9/2/2024,1144,Beauty,West,2,185.92,0.17,COD,3,4.1,308.63 +10977,9/3/2024,1200,Electronics,West,1,559.65,0.19,Card,8,4.6,453.32 +10978,9/4/2024,1928,Electronics,North,6,338.47,0.11,Card,4,4.1,1807.43 +10979,9/5/2024,1723,Clothing,North,6,422.48,0.23,Card,4,4,1951.86 +10980,9/6/2024,1460,Electronics,South,6,364.09,0.23,COD,2,4.4,1682.1 +10981,9/7/2024,1731,Clothing,West,4,86.8,0.2,COD,6,3.7,277.76 +10982,9/8/2024,1751,Home,East,2,578.42,0.04,COD,6,2.7,1110.57 +10983,9/9/2024,1924,Electronics,East,6,86.88,0.17,Wallet,1,1.3,432.66 +10984,9/10/2024,1908,Clothing,West,7,164.11,0.12,COD,8,4.2,1010.92 +10985,9/11/2024,1557,Clothing,West,7,490.97,0.17,Wallet,3,4.6,2852.54 +10986,9/12/2024,1546,Electronics,West,5,376.88,0.32,Card,1,3,1281.39 +10987,9/13/2024,1252,Clothing,South,5,505.32,0.17,Card,10,3.1,2097.08 +10988,9/14/2024,1389,Electronics,East,2,316.71,0,Card,1,2.6,633.42 +10989,9/15/2024,1593,Clothing,East,4,235.54,0.15,Card,1,4.4,800.84 +10990,9/16/2024,1882,Electronics,North,4,554.28,0.29,COD,5,1.1,1574.16 +10991,9/17/2024,1255,Clothing,North,1,36.21,0.27,COD,5,3.5,26.43 +10992,9/18/2024,1708,Electronics,West,1,515.84,0.18,COD,1,4.6,422.99 +10993,9/19/2024,1814,Home,North,6,150.03,0.09,COD,5,1.4,819.16 +10994,9/20/2024,1920,Electronics,South,3,511.51,0.16,Wallet,7,4.8,1289.01 +10995,9/21/2024,1449,Clothing,East,7,96.43,0.2,Wallet,5,4.9,540.01 +10996,9/22/2024,1009,Clothing,East,1,354.43,0.35,Card,9,4.7,230.38 +10997,9/23/2024,1823,Home,North,4,534.54,0.23,Card,4,2.9,1646.38 +10998,9/24/2024,1797,Clothing,West,7,292.02,0.24,Card,9,2.5,1553.55 +10999,9/25/2024,1241,Home,North,3,451.74,0.17,Card,8,3.8,1124.83 +11000,9/26/2024,1250,Home,West,1,485.73,0.12,COD,1,2.3,427.44 +11001,9/27/2024,1876,Beauty,South,2,445.85,0.28,COD,4,1.3,642.02 +11002,9/28/2024,1004,Electronics,East,5,556.32,0.17,Card,7,4.6,2308.73 +11003,9/29/2024,1118,Clothing,South,1,276.4,0.35,COD,1,3.5,179.66 +11004,9/30/2024,1800,Home,East,1,116.28,0.16,COD,8,1.8,97.68 +11005,10/1/2024,1373,Beauty,South,2,42.97,0.02,Card,11,1.1,84.22 +11006,10/2/2024,1064,Beauty,North,4,159.18,0.24,Card,2,3.9,483.91 +11007,10/3/2024,1145,Clothing,South,6,98.77,0.02,Wallet,8,4.4,580.77 +11008,10/4/2024,1223,Electronics,South,2,341.4,0.09,COD,11,2.6,621.35 +11009,10/5/2024,1238,Clothing,North,6,123.19,0.12,Card,4,1.3,650.44 +11010,10/6/2024,1176,Home,East,1,37.78,0.26,Card,8,3.6,27.96 +11011,10/7/2024,1778,Clothing,East,4,36.05,0.17,Card,1,2.2,119.69 +11012,10/8/2024,1852,Clothing,North,3,501.47,0.01,Card,5,1.6,1489.37 +11013,10/9/2024,1281,Home,South,1,361,0.22,Wallet,9,3,281.58 +11014,10/10/2024,1062,Clothing,South,2,224.48,0.14,Card,7,2.9,386.11 +11015,10/11/2024,1216,Beauty,South,3,538.12,0.32,Card,3,3.1,1097.76 +11016,10/12/2024,1853,Clothing,West,5,56.07,0.17,Card,4,4.3,232.69 +11017,10/13/2024,1826,Electronics,East,3,588.49,0.25,COD,10,2.9,1324.1 +11018,10/14/2024,1794,Clothing,South,2,375.53,0.08,Card,7,4.6,690.98 +11019,10/15/2024,1688,Home,East,7,122.33,0.27,Card,6,4.4,625.11 +11020,10/16/2024,1460,Electronics,South,3,412.26,0.25,COD,4,3.6,927.58 +11021,10/17/2024,1928,Electronics,North,2,461.58,0.32,Card,3,1.2,627.75 +11022,10/18/2024,1609,Beauty,North,7,266.17,0.01,Card,11,4.5,1844.56 +11023,10/19/2024,1104,Electronics,East,1,519.06,0.16,Card,2,4.6,436.01 +11024,10/20/2024,1098,Clothing,East,7,103.18,0.24,COD,10,2.5,548.92 +11025,10/21/2024,1510,Clothing,North,4,178.12,0.03,Wallet,9,3.1,691.11 +11026,10/22/2024,1384,Clothing,West,5,69.69,0.14,Card,3,2.1,299.67 +11027,10/23/2024,1404,Clothing,North,7,138.36,0.33,Card,7,1.1,648.91 +11028,10/24/2024,1822,Electronics,South,4,154.66,0.15,Card,1,2.9,525.84 +11029,10/25/2024,1517,Clothing,West,4,551.82,0.34,COD,8,1.5,1456.8 +11030,10/26/2024,1475,Clothing,North,4,60.69,0.02,COD,1,1.7,237.9 +11031,10/27/2024,1976,Home,West,7,265.04,0.25,COD,2,2.9,1391.46 +11032,10/28/2024,1708,Electronics,West,2,326.45,0.2,COD,1,4.5,522.32 +11033,10/29/2024,1862,Clothing,West,2,540.74,0.18,Wallet,4,4.4,886.81 +11034,10/30/2024,1644,Electronics,East,5,598.65,0.34,Wallet,2,4.9,1975.54 +11035,10/31/2024,1869,Electronics,North,2,455.73,0.05,COD,1,2.9,865.89 +11036,11/1/2024,1770,Electronics,East,6,582.91,0.31,COD,1,3.2,2413.25 +11037,11/2/2024,1436,Electronics,East,2,475.45,0.24,Card,2,4.3,722.68 +11038,11/3/2024,1022,Home,South,2,578.47,0.09,COD,6,3.8,1052.82 +11039,11/4/2024,1996,Electronics,South,2,428.75,0.32,COD,2,1.7,583.1 +11040,11/5/2024,1564,Beauty,West,1,61.66,0.15,COD,11,2.6,52.41 +11041,11/6/2024,1676,Beauty,West,5,250.12,0.28,Card,2,4.7,900.43 +11042,11/7/2024,1713,Clothing,South,6,393.26,0.14,COD,8,1.6,2029.22 +11043,11/8/2024,1457,Electronics,South,2,220.17,0.3,COD,5,1.8,308.24 +11044,11/9/2024,1082,Clothing,North,5,174.93,0.22,COD,8,2.6,682.23 +11045,11/10/2024,1144,Home,West,3,352.78,0.05,Card,8,4.8,1005.42 +11046,11/11/2024,1084,Clothing,West,1,561.1,0.23,Card,2,1.5,432.05 +11047,11/12/2024,1077,Electronics,South,7,35.46,0.07,Card,7,3.7,230.84 +11048,11/13/2024,1456,Clothing,North,2,465,0.14,Wallet,9,1.5,799.8 +11049,11/14/2024,1877,Home,South,6,437.8,0.06,COD,8,3.1,2469.19 +11050,11/15/2024,1000,Home,South,1,578.91,0.01,Card,9,3.1,573.12 +11051,11/16/2024,1050,Electronics,East,6,559.47,0.07,Card,8,1.2,3121.84 +11052,11/17/2024,1684,Home,West,7,460.91,0.19,COD,4,4.8,2613.36 +11053,11/18/2024,1716,Electronics,North,7,319.44,0.17,Card,10,4.2,1855.95 +11054,11/19/2024,1771,Electronics,East,1,134.5,0.18,Wallet,7,2.2,110.29 +11055,11/20/2024,1445,Beauty,West,3,333.96,0.09,COD,9,1.5,911.71 +11056,11/21/2024,1448,Electronics,South,5,462.73,0.24,Card,9,2.4,1758.37 +11057,11/22/2024,1880,Electronics,North,1,538.97,0.25,COD,4,4.6,404.23 +11058,11/23/2024,1487,Electronics,West,4,476.98,0.13,Card,7,1.5,1659.89 +11059,11/24/2024,1799,Beauty,South,7,129.23,0.31,Wallet,6,2.4,624.18 +11060,11/25/2024,1033,Home,East,3,365.82,0.23,Card,3,3,845.04 +11061,11/26/2024,1347,Clothing,North,7,209.32,0.25,Wallet,10,1.1,1098.93 +11062,11/27/2024,1094,Home,West,4,20.39,0.1,COD,6,2.1,73.4 +11063,11/28/2024,1071,Electronics,East,3,132.13,0,Wallet,8,3.4,396.39 +11064,11/29/2024,1550,Clothing,South,7,81.23,0.3,Card,2,2.3,398.03 +11065,11/30/2024,1153,Clothing,South,4,507.99,0.29,Card,3,4.5,1442.69 +11066,12/1/2024,1249,Electronics,West,4,166.23,0.04,COD,8,4.7,638.32 +11067,12/2/2024,1673,Clothing,South,7,181.55,0.13,COD,4,2.8,1105.64 +11068,12/3/2024,1437,Beauty,North,7,576.56,0.23,Card,4,3.1,3107.66 +11069,12/4/2024,1117,Electronics,West,6,236.77,0.23,Card,2,3.5,1093.88 +11070,12/5/2024,1770,Electronics,East,1,20.61,0.3,Card,11,3.7,14.43 +11071,12/6/2024,1890,Electronics,West,1,181.05,0.05,COD,10,1.3,172 +11072,12/7/2024,1305,Electronics,West,3,84.79,0.15,Card,1,1.2,216.21 +11073,12/8/2024,1267,Beauty,East,5,75.14,0.03,Card,7,4.5,364.43 +11074,12/9/2024,1960,Clothing,South,7,60.33,0.14,Card,4,1.9,363.19 +11075,12/10/2024,1053,Clothing,East,6,362.06,0.01,Card,6,3.3,2150.64 +11076,12/11/2024,1235,Home,North,1,125.77,0.31,Card,8,3.5,86.78 +11077,12/12/2024,1388,Electronics,South,1,226.33,0.18,Wallet,11,1.7,185.59 +11078,12/13/2024,1989,Clothing,West,6,519.28,0.3,Card,7,4,2180.98 +11079,12/14/2024,1733,Clothing,South,2,263.24,0.02,Wallet,7,4.5,515.95 +11080,12/15/2024,1762,Clothing,South,6,550.68,0.08,Card,6,2.1,3039.75 +11081,12/16/2024,1824,Beauty,North,1,306.29,0.09,Card,11,4.5,278.72 +11082,12/17/2024,1400,Home,South,5,248.32,0.14,Card,4,1.3,1067.78 +11083,12/18/2024,1623,Clothing,South,2,453.98,0.28,COD,4,4.2,653.73 +11084,12/19/2024,1766,Home,South,4,57.81,0.14,COD,9,3.6,198.87 +11085,12/20/2024,1302,Electronics,West,6,67.34,0.07,COD,11,3.3,375.76 +11086,12/21/2024,1918,Electronics,South,4,396.4,0.02,Card,5,1.9,1553.89 +11087,12/22/2024,1206,Electronics,East,2,299.86,0.03,Wallet,9,2.4,581.73 +11088,12/23/2024,1228,Electronics,South,2,477.39,0.27,Wallet,11,4.6,696.99 +11089,12/24/2024,1852,Clothing,North,2,551.02,0.16,Card,9,2.9,925.71 +11090,12/25/2024,1909,Clothing,South,3,242.19,0.25,COD,4,3.4,544.93 +11091,12/26/2024,1577,Beauty,South,6,363.9,0.24,COD,2,4.7,1659.38 +11092,12/27/2024,1074,Clothing,West,7,307.91,0.05,Card,2,2.9,2047.6 +11093,12/28/2024,1434,Clothing,East,5,589.24,0.05,Card,9,2.6,2798.89 +11094,12/29/2024,1102,Electronics,South,5,501.18,0.26,COD,9,4.6,1854.37 +11095,12/30/2024,1421,Electronics,East,4,548.37,0.25,Wallet,3,4.6,1645.11 +11096,12/31/2024,1703,Clothing,North,4,163.79,0.13,Card,5,2.4,569.99 +11097,1/1/2025,1763,Clothing,West,7,466.93,0.03,COD,5,3.4,3170.45 +11098,1/2/2025,1737,Home,East,4,170.3,0,Wallet,2,4.9,681.2 +11099,1/3/2025,1805,Electronics,West,6,137.11,0.1,Card,2,1.2,740.39 +11100,1/4/2025,1305,Electronics,South,1,567.4,0,Card,10,1.2,567.4 +11101,1/5/2025,1097,Clothing,North,4,26.29,0.08,COD,1,3.1,96.75 +11102,1/6/2025,1849,Electronics,West,2,579.75,0.15,Card,2,2.2,985.58 +11103,1/7/2025,1797,Electronics,South,4,102.32,0.04,Card,11,3.3,392.91 +11104,1/8/2025,1334,Home,East,2,494.37,0.04,Card,7,3.9,949.19 +11105,1/9/2025,1858,Electronics,North,3,176.41,0.31,Card,1,1.3,365.17 +11106,1/10/2025,1434,Clothing,North,1,220.16,0.2,Wallet,1,4.5,176.13 +11107,1/11/2025,1446,Electronics,East,1,141.8,0.33,COD,9,2.1,95.01 +11108,1/12/2025,1993,Electronics,East,7,357.53,0.12,Card,2,2.5,2202.38 +11109,1/13/2025,1307,Clothing,North,6,218.64,0.24,COD,11,2.3,997 +11110,1/14/2025,1248,Home,West,6,399.57,0.07,Wallet,4,4.4,2229.6 +11111,1/15/2025,1165,Clothing,North,5,24.15,0.22,Card,11,1.7,94.18 +11112,1/16/2025,1480,Home,East,3,52.66,0.05,Card,3,1.1,150.08 +11113,1/17/2025,1983,Electronics,West,7,73.3,0,Wallet,11,4.9,513.1 +11114,1/18/2025,1334,Home,South,6,260.11,0.33,Wallet,4,4.9,1045.64 +11115,1/19/2025,1541,Electronics,North,2,491.66,0.19,Card,11,2,796.49 +11116,1/20/2025,1758,Home,East,3,534.58,0.32,Card,11,1,1090.54 +11117,1/21/2025,1105,Clothing,South,1,158.21,0.12,Card,7,3.6,139.22 +11118,1/22/2025,1562,Beauty,North,2,351.01,0.11,Card,10,3.6,624.8 +11119,1/23/2025,1080,Clothing,North,7,464.49,0.14,COD,2,4.8,2796.23 +11120,1/24/2025,1132,Electronics,West,7,183.97,0.25,Card,2,2.2,965.84 +11121,1/25/2025,1796,Electronics,East,3,254.27,0.2,Card,9,1.8,610.25 +11122,1/26/2025,1899,Home,South,1,321.52,0.32,COD,6,3.5,218.63 +11123,1/27/2025,1137,Clothing,North,6,93.9,0.01,Wallet,11,3.3,557.77 +11124,1/28/2025,1183,Home,West,2,30.2,0.25,Card,7,3.9,45.3 +11125,1/29/2025,1400,Electronics,South,2,104.39,0.12,Card,5,4.5,183.73 +11126,1/30/2025,1329,Electronics,South,1,381.71,0.06,Wallet,5,3.2,358.81 +11127,1/31/2025,1784,Electronics,North,2,58.07,0.18,COD,4,1.6,95.23 +11128,2/1/2025,1507,Beauty,South,6,125.97,0.18,Card,8,3.4,619.77 +11129,2/2/2025,1851,Home,North,6,212.64,0.05,Card,7,2.5,1212.05 +11130,2/3/2025,1983,Beauty,West,6,60.55,0.07,Card,10,2.8,337.87 +11131,2/4/2025,1068,Electronics,West,1,127.14,0.14,COD,2,4.8,109.34 +11132,2/5/2025,1545,Clothing,South,4,548.09,0.14,Card,2,3.2,1885.43 +11133,2/6/2025,1773,Home,North,4,26.29,0.11,Card,6,1.6,93.59 +11134,2/7/2025,1052,Electronics,East,7,397.26,0.05,Card,11,2.8,2641.78 +11135,2/8/2025,1449,Home,West,7,239.88,0,Card,1,1.9,1679.16 +11136,2/9/2025,1204,Beauty,North,2,408.5,0.34,COD,7,1.5,539.22 +11137,2/10/2025,1125,Beauty,North,6,359.38,0.33,Card,8,3.8,1444.71 +11138,2/11/2025,1746,Home,North,2,145.75,0.17,Card,10,3.5,241.94 +11139,2/12/2025,1042,Electronics,South,1,510.62,0.35,Wallet,8,3,331.9 +11140,2/13/2025,1751,Electronics,East,2,302.79,0.24,COD,3,2.7,460.24 +11141,2/14/2025,1970,Beauty,South,5,496.18,0.02,Card,7,2.3,2431.28 +11142,2/15/2025,1882,Electronics,West,4,252.52,0.04,COD,1,1.4,969.68 +11143,2/16/2025,1110,Home,South,2,591.04,0.32,Card,11,2.2,803.81 +11144,2/17/2025,1760,Home,North,2,465.74,0.22,COD,3,4.4,726.55 +11145,2/18/2025,1662,Clothing,South,3,580.08,0.3,COD,6,4.1,1218.17 +11146,2/19/2025,1182,Beauty,North,2,315.88,0.31,COD,9,4.9,435.91 +11147,2/20/2025,1847,Electronics,East,5,292.11,0.16,COD,5,3.6,1226.86 +11148,2/21/2025,1094,Electronics,South,4,456.94,0.02,Card,5,3.2,1791.2 +11149,2/22/2025,1970,Electronics,South,3,529.97,0.07,COD,9,2.2,1478.62 +11150,2/23/2025,1373,Clothing,South,1,579.03,0.02,Card,9,1.3,567.45 +11151,2/24/2025,1911,Electronics,North,7,204.86,0.07,Card,6,3.5,1333.64 +11152,2/25/2025,1519,Electronics,North,1,482.24,0.14,Wallet,5,3,414.73 +11153,2/26/2025,1899,Home,South,4,138.23,0.04,COD,10,4,530.8 +11154,2/27/2025,1359,Beauty,South,7,334.16,0.06,Wallet,2,2.6,2198.77 +11155,2/28/2025,1899,Electronics,East,1,120.21,0.16,Card,11,4.9,100.98 +11156,3/1/2025,1695,Clothing,East,5,218.23,0.12,COD,8,2.6,960.21 +11157,3/2/2025,1280,Beauty,West,2,559.84,0.16,Card,8,2.3,940.53 +11158,3/3/2025,1194,Electronics,East,4,100.46,0.15,COD,7,4.5,341.56 +11159,3/4/2025,1863,Electronics,East,7,384.95,0.23,Card,8,2.6,2074.88 +11160,3/5/2025,1194,Electronics,East,3,361.88,0.33,Card,3,4.5,727.38 +11161,3/6/2025,1666,Clothing,North,2,85.63,0.04,Card,3,1.1,164.41 +11162,3/7/2025,1092,Electronics,East,1,205.7,0.03,COD,2,3.8,199.53 +11163,3/8/2025,1671,Beauty,East,1,344.34,0.3,Card,1,1.3,241.04 +11164,3/9/2025,1945,Clothing,South,3,124.5,0.18,Wallet,3,1.6,306.27 +11165,3/10/2025,1060,Clothing,North,5,483.36,0.27,Card,3,3.8,1764.26 +11166,3/11/2025,1633,Electronics,West,3,583.71,0.08,Card,7,2.2,1611.04 +11167,3/12/2025,1050,Clothing,West,4,140.63,0.29,Card,10,1.8,399.39 +11168,3/13/2025,1402,Home,East,3,124.34,0.32,Wallet,9,4.2,253.65 +11169,3/14/2025,1788,Home,West,1,281.14,0.22,Card,1,4.8,219.29 +11170,3/15/2025,1004,Home,West,5,452.44,0.04,Card,8,1.9,2171.71 +11171,3/16/2025,1465,Clothing,West,5,179.74,0.31,COD,1,2.3,620.1 +11172,3/17/2025,1603,Beauty,East,6,26.63,0.28,Card,3,3.9,115.04 +11173,3/18/2025,1681,Home,West,3,331.61,0.26,COD,4,4.3,736.17 +11174,3/19/2025,1828,Home,East,4,574.61,0.01,Card,11,5,2275.46 +11175,3/20/2025,1533,Electronics,South,1,243.9,0.28,COD,8,2.1,175.61 +11176,3/21/2025,1404,Electronics,South,2,260.78,0.05,Card,1,3.2,495.48 +11177,3/22/2025,1837,Electronics,West,5,581.81,0.08,COD,2,1.5,2676.33 +11178,3/23/2025,1512,Home,South,3,421.35,0.2,COD,11,2.3,1011.24 +11179,3/24/2025,1644,Clothing,East,6,435.72,0.09,COD,5,1.2,2379.03 +11180,3/25/2025,1232,Clothing,South,4,344.18,0.23,COD,6,1.8,1060.07 +11181,3/26/2025,1523,Beauty,West,4,585.15,0.21,Wallet,5,3,1849.07 +11182,3/27/2025,1345,Beauty,East,7,417.99,0.04,Card,3,1.7,2808.89 +11183,3/28/2025,1045,Beauty,North,1,538.59,0.23,Card,10,4.6,414.71 +11184,3/29/2025,1545,Electronics,East,5,424.14,0.32,COD,7,3.8,1442.08 +11185,3/30/2025,1944,Home,South,1,445.04,0.06,COD,1,1.1,418.34 +11186,3/31/2025,1077,Electronics,North,6,184.89,0.21,Card,2,4.5,876.38 +11187,4/1/2025,1729,Electronics,East,2,192.54,0.12,COD,11,4.9,338.87 +11188,4/2/2025,1812,Electronics,North,2,473.05,0.16,Card,9,3,794.72 +11189,4/3/2025,1922,Electronics,North,2,188.57,0.1,COD,4,2.3,339.43 +11190,4/4/2025,1072,Clothing,North,4,344.22,0.12,Wallet,8,2.1,1211.65 +11191,4/5/2025,1793,Home,East,5,160.87,0.01,COD,9,1.3,796.31 +11192,4/6/2025,1248,Electronics,South,1,492.94,0.34,Card,7,3,325.34 +11193,4/7/2025,1046,Home,East,1,79.64,0.22,COD,1,1.2,62.12 +11194,4/8/2025,1120,Clothing,South,6,500.23,0.18,COD,5,3,2461.13 +11195,4/9/2025,1213,Electronics,East,2,367.6,0.13,Card,6,2,639.62 +11196,4/10/2025,1238,Clothing,East,5,124.34,0.19,COD,11,2.9,503.58 +11197,4/11/2025,1055,Electronics,East,5,332.09,0.13,Wallet,8,2.7,1444.59 +11198,4/12/2025,1349,Clothing,South,6,180.26,0.13,Card,10,2.2,940.96 +11199,4/13/2025,1106,Clothing,East,3,204.23,0.16,Card,8,2.8,514.66 +11200,4/14/2025,1830,Electronics,North,5,220.64,0.1,Card,9,2.9,992.88 +11201,4/15/2025,1047,Electronics,East,5,52.04,0.06,COD,9,4.3,244.59 +11202,4/16/2025,1572,Clothing,North,1,591.79,0.19,Wallet,4,3.7,479.35 +11203,4/17/2025,1336,Beauty,West,6,33.45,0.29,COD,6,2.7,142.5 +11204,4/18/2025,1025,Electronics,West,5,402.56,0.05,Card,3,4.6,1912.16 +11205,4/19/2025,1803,Home,South,5,232.17,0.01,COD,1,4,1149.24 +11206,4/20/2025,1256,Home,South,1,392.92,0.09,COD,6,1.3,357.56 +11207,4/21/2025,1007,Beauty,West,5,223.41,0.34,COD,1,1.6,737.25 +11208,4/22/2025,1624,Home,East,1,409.14,0.29,Card,9,1.3,290.49 +11209,4/23/2025,1866,Clothing,East,3,441.6,0.21,COD,11,2.3,1046.59 +11210,4/24/2025,1252,Home,East,4,418.97,0.33,Card,6,2.7,1122.84 +11211,4/25/2025,1691,Beauty,West,7,81.67,0.16,Card,1,3,480.22 +11212,4/26/2025,1718,Clothing,North,1,399.28,0.34,COD,11,4.4,263.52 +11213,4/27/2025,1302,Electronics,South,1,178.79,0.1,Wallet,3,1.1,160.91 +11214,4/28/2025,1638,Electronics,North,5,31.85,0.08,Card,1,2.7,146.51 +11215,4/29/2025,1055,Home,West,1,257.68,0.22,Wallet,2,2.6,200.99 +11216,4/30/2025,1725,Home,North,6,268.62,0.13,Card,6,4.8,1402.2 +11217,5/1/2025,1525,Electronics,East,2,288.3,0.22,COD,7,2,449.75 +11218,5/2/2025,1473,Clothing,East,2,427.32,0.11,Card,1,1.5,760.63 +11219,5/3/2025,1027,Clothing,North,3,195.67,0.22,Card,10,1.6,457.87 +11220,5/4/2025,1982,Electronics,West,1,199.44,0.1,COD,5,3.1,179.5 +11221,5/5/2025,1077,Beauty,North,6,50.42,0.02,COD,6,2.6,296.47 +11222,5/6/2025,1215,Electronics,East,5,416.79,0.32,COD,4,4,1417.09 +11223,5/7/2025,1385,Electronics,East,5,347.18,0.31,COD,6,2.3,1197.77 +11224,5/8/2025,1364,Clothing,West,7,219.41,0.34,COD,5,1.5,1013.67 +11225,5/9/2025,1665,Home,North,4,427.54,0.25,Wallet,11,2.5,1282.62 +11226,5/10/2025,1525,Electronics,East,3,329.35,0.24,COD,7,4.5,750.92 +11227,5/11/2025,1698,Home,East,6,289.51,0.2,Card,4,2.6,1389.65 +11228,5/12/2025,1311,Clothing,North,6,314.12,0.04,Card,1,4.3,1809.33 +11229,5/13/2025,1882,Electronics,North,7,387.26,0.07,Card,2,2.5,2521.06 +11230,5/14/2025,1006,Electronics,South,7,401.1,0.1,COD,6,2.1,2526.93 +11231,5/15/2025,1002,Clothing,West,5,184.04,0.31,Card,10,4.1,634.94 +11232,5/16/2025,1622,Electronics,West,4,97.33,0.06,Card,11,1.8,365.96 +11233,5/17/2025,1918,Beauty,North,5,106.63,0.32,Card,2,1.9,362.54 +11234,5/18/2025,1749,Home,West,4,389.04,0.18,COD,5,1.2,1276.05 +11235,5/19/2025,1362,Beauty,East,2,525.63,0.25,Card,4,1.8,788.44 +11236,5/20/2025,1750,Electronics,North,6,254.56,0.04,Card,7,2.5,1466.27 +11237,5/21/2025,1507,Beauty,North,7,114.17,0.09,COD,4,2.6,727.26 +11238,5/22/2025,1273,Clothing,North,2,457.61,0.34,COD,7,2.7,604.05 +11239,5/23/2025,1505,Electronics,South,5,502.01,0.09,Card,11,2.9,2284.15 +11240,5/24/2025,1805,Electronics,West,3,530.14,0.1,COD,8,3.3,1431.38 +11241,5/25/2025,1738,Electronics,South,1,370,0.07,Card,7,1.8,344.1 +11242,5/26/2025,1882,Home,East,3,518.53,0.05,Wallet,2,3.5,1477.81 +11243,5/27/2025,1014,Clothing,West,3,24.02,0.08,Card,11,2.3,66.3 +11244,5/28/2025,1191,Electronics,South,1,77.73,0.22,Wallet,1,3.9,60.63 +11245,5/29/2025,1984,Clothing,North,6,69.16,0.16,Wallet,5,3.2,348.57 +11246,5/30/2025,1630,Electronics,South,2,431.87,0.19,COD,7,3.2,699.63 +11247,5/31/2025,1484,Clothing,North,2,55.71,0.04,Card,1,3.7,106.96 +11248,6/1/2025,1027,Clothing,South,6,305.37,0.28,COD,11,2.3,1319.2 +11249,6/2/2025,1713,Home,South,1,291.53,0.27,Card,8,2.7,212.82 +11250,6/3/2025,1038,Home,South,4,196.76,0.01,Wallet,3,3.3,779.17 +11251,6/4/2025,1952,Clothing,North,3,524.19,0.13,COD,7,2.7,1368.14 +11252,6/5/2025,1272,Clothing,South,5,114.7,0.02,Wallet,3,2.8,562.03 +11253,6/6/2025,1230,Clothing,West,2,221.19,0.28,COD,4,2.1,318.51 +11254,6/7/2025,1085,Home,West,6,467.89,0.26,COD,8,2.1,2077.43 +11255,6/8/2025,1473,Electronics,West,5,32.8,0.32,COD,2,3.8,111.52 +11256,6/9/2025,1125,Electronics,North,7,408.68,0.08,Card,6,1,2631.9 +11257,6/10/2025,1811,Electronics,North,1,492.59,0.16,COD,10,1.4,413.78 +11258,6/11/2025,1536,Clothing,West,5,560.38,0.06,COD,9,4.8,2633.79 +11259,6/12/2025,1144,Clothing,West,5,527.63,0.13,Wallet,10,1.7,2295.19 +11260,6/13/2025,1524,Home,West,3,201.84,0.18,COD,9,2.7,496.53 +11261,6/14/2025,1211,Electronics,East,1,358.02,0.02,Wallet,5,4.4,350.86 +11262,6/15/2025,1024,Clothing,West,5,60.22,0.25,Wallet,3,1,225.82 +11263,6/16/2025,1579,Home,South,2,165.85,0.19,COD,6,4.7,268.68 +11264,6/17/2025,1393,Home,East,1,70.12,0.29,Card,9,1.2,49.79 +11265,6/18/2025,1066,Clothing,East,2,199.38,0.1,COD,6,1.7,358.88 +11266,6/19/2025,1232,Clothing,North,6,526.98,0.32,Card,4,1.1,2150.08 +11267,6/20/2025,1108,Electronics,South,6,218.09,0.35,Card,11,3.1,850.55 +11268,6/21/2025,1145,Beauty,North,7,343.71,0.32,Card,5,4.8,1636.06 +11269,6/22/2025,1110,Electronics,North,4,268.53,0.27,Wallet,7,4.4,784.11 +11270,6/23/2025,1227,Beauty,South,6,283.47,0.28,Card,10,3.6,1224.59 +11271,6/24/2025,1110,Home,North,5,582.2,0.2,COD,3,1.7,2328.8 +11272,6/25/2025,1469,Clothing,South,1,188.25,0.07,Wallet,9,4.5,175.07 +11273,6/26/2025,1033,Electronics,South,6,381.98,0.24,COD,1,4,1741.83 +11274,6/27/2025,1622,Clothing,North,2,260.74,0.25,COD,8,2.1,391.11 +11275,6/28/2025,1775,Clothing,West,5,50.77,0.34,COD,5,4.2,167.54 +11276,6/29/2025,1935,Electronics,North,6,301.26,0.19,Card,10,4.5,1464.12 +11277,6/30/2025,1368,Home,East,3,490.81,0.09,Card,9,3.8,1339.91 +11278,7/1/2025,1747,Beauty,North,2,72.77,0.24,Wallet,2,1.4,110.61 +11279,7/2/2025,1594,Clothing,South,7,55.71,0.34,Card,1,4.9,257.38 +11280,7/3/2025,1553,Home,East,7,104.87,0.06,COD,10,1.3,690.04 +11281,7/4/2025,1424,Electronics,South,7,462.17,0.11,COD,7,3.6,2879.32 +11282,7/5/2025,1612,Clothing,West,2,438.54,0.19,Card,10,1.4,710.43 +11283,7/6/2025,1517,Electronics,West,7,345.54,0.06,Wallet,11,4.6,2273.65 +11284,7/7/2025,1691,Clothing,East,4,288.91,0.01,COD,9,2.4,1144.08 +11285,7/8/2025,1281,Beauty,West,3,534.67,0.12,Card,5,3,1411.53 +11286,7/9/2025,1319,Home,West,4,463.52,0.3,Wallet,11,1.7,1297.86 +11287,7/10/2025,1737,Electronics,North,6,489.99,0.02,COD,4,3.2,2881.14 +11288,7/11/2025,1442,Clothing,North,3,490.76,0.15,COD,4,4.8,1251.44 +11289,7/12/2025,1951,Clothing,West,2,390.99,0.27,COD,8,4.6,570.85 +11290,7/13/2025,1314,Clothing,West,4,282.94,0.33,Card,1,1.3,758.28 +11291,7/14/2025,1876,Home,North,5,520.84,0.34,COD,1,2.5,1718.77 +11292,7/15/2025,1965,Home,West,3,556.71,0.15,Card,8,2.1,1419.61 +11293,7/16/2025,1740,Clothing,West,2,28.93,0.33,COD,2,2.9,38.77 +11294,7/17/2025,1376,Clothing,South,1,45.16,0.01,COD,10,4.3,44.71 +11295,7/18/2025,1288,Electronics,West,3,575.86,0.26,Wallet,6,4,1278.41 +11296,7/19/2025,1436,Electronics,East,3,177.14,0.22,COD,2,2.4,414.51 +11297,7/20/2025,1661,Clothing,South,6,525.92,0.09,Card,5,2.5,2871.52 +11298,7/21/2025,1276,Clothing,East,5,242.45,0.18,Wallet,3,3.6,994.04 +11299,7/22/2025,1709,Home,West,6,84.67,0.05,COD,7,1.8,482.62 +11300,7/23/2025,1581,Home,North,7,62.06,0.31,COD,9,1.4,299.75 +11301,7/24/2025,1502,Electronics,South,3,106.56,0.13,Card,2,2,278.12 +11302,7/25/2025,1623,Clothing,North,3,161.19,0.22,Wallet,7,1.5,377.18 +11303,7/26/2025,1515,Electronics,South,7,300.78,0.06,Wallet,8,2.4,1979.13 +11304,7/27/2025,1349,Electronics,North,5,425.38,0.07,COD,10,4.8,1978.02 +11305,7/28/2025,1842,Home,South,5,592.04,0.35,Wallet,8,1.5,1924.13 +11306,7/29/2025,1445,Electronics,South,4,273.28,0.26,Card,7,4.3,808.91 +11307,7/30/2025,1829,Clothing,East,2,318.14,0.34,Wallet,4,3.1,419.94 +11308,7/31/2025,1349,Electronics,North,2,320.26,0.1,COD,4,3.5,576.47 +11309,8/1/2025,1606,Beauty,East,4,330.57,0.06,Card,10,1.7,1242.94 +11310,8/2/2025,1663,Clothing,East,2,317.88,0.18,COD,9,1.6,521.32 +11311,8/3/2025,1822,Electronics,North,3,20.13,0.17,COD,10,1.7,50.12 +11312,8/4/2025,1136,Clothing,South,4,16.01,0.06,Card,9,3.7,60.2 +11313,8/5/2025,1758,Home,East,4,72.13,0.26,Card,5,4,213.5 +11314,8/6/2025,1898,Beauty,North,2,74.41,0.13,Card,7,4.7,129.47 +11315,8/7/2025,1242,Electronics,South,1,427.36,0.07,Card,7,2.6,397.44 +11316,8/8/2025,1542,Beauty,East,2,134.88,0.12,Card,9,2.8,237.39 +11317,8/9/2025,1039,Beauty,East,6,538.41,0.2,Card,7,2.9,2584.37 +11318,8/10/2025,1228,Beauty,East,1,558.23,0.25,Card,8,2.1,418.67 +11319,8/11/2025,1547,Clothing,South,4,585.9,0.17,Wallet,7,2.3,1945.19 +11320,8/12/2025,1919,Clothing,East,1,564.36,0.18,COD,11,4.4,462.78 +11321,8/13/2025,1222,Clothing,South,3,174.05,0.05,Card,4,2.4,496.04 +11322,8/14/2025,1005,Home,West,5,313.22,0.32,Wallet,2,4.5,1064.95 +11323,8/15/2025,1321,Clothing,East,1,117.64,0.33,COD,3,2.2,78.82 +11324,8/16/2025,1467,Home,West,6,486.63,0.24,COD,7,2.4,2219.03 +11325,8/17/2025,1731,Clothing,North,5,534.73,0.01,COD,11,3.2,2646.91 +11326,8/18/2025,1074,Home,East,3,513,0.19,Card,11,1.4,1246.59 +11327,8/19/2025,1003,Home,North,6,268.52,0.22,Card,9,4.7,1256.67 +11328,8/20/2025,1846,Electronics,North,7,458.82,0.35,Card,11,4.3,2087.63 +11329,8/21/2025,1645,Home,North,5,72.08,0.35,COD,2,3.7,234.26 +11330,8/22/2025,1117,Clothing,West,7,38.54,0.3,COD,7,5,188.85 +11331,8/23/2025,1880,Home,South,3,455.64,0.02,COD,4,1.1,1339.58 +11332,8/24/2025,1605,Clothing,West,5,263.83,0.33,Card,7,2.6,883.83 +11333,8/25/2025,1503,Clothing,West,5,597.4,0.21,COD,5,4.4,2359.73 +11334,8/26/2025,1997,Beauty,North,2,71.89,0.28,COD,7,2.7,103.52 +11335,8/27/2025,1946,Electronics,East,6,515.54,0.14,Wallet,6,1,2660.19 +11336,8/28/2025,1573,Home,South,6,295.79,0.11,Card,2,1.6,1579.52 +11337,8/29/2025,1440,Clothing,North,1,498.88,0.16,Wallet,7,2.7,419.06 +11338,8/30/2025,1193,Clothing,South,7,493.02,0.05,Wallet,5,3.7,3278.58 +11339,8/31/2025,1846,Electronics,West,7,550.86,0.12,COD,9,1.7,3393.3 +11340,9/1/2025,1714,Clothing,South,6,189.24,0.3,COD,11,2.8,794.81 +11341,9/2/2025,1391,Electronics,South,6,570.63,0.01,Card,1,1.1,3389.54 +11342,9/3/2025,1025,Electronics,East,5,103.73,0.05,Wallet,1,2.9,492.72 +11343,9/4/2025,1434,Electronics,North,7,62.95,0.04,Card,2,4.6,423.02 +11344,9/5/2025,1172,Electronics,South,4,267.5,0.14,COD,8,3.4,920.2 +11345,9/6/2025,1299,Beauty,South,2,499.57,0.35,Card,11,2.8,649.44 +11346,9/7/2025,1644,Beauty,West,1,291.95,0.06,Card,9,1.6,274.43 +11347,9/8/2025,1325,Clothing,West,2,500.13,0.05,COD,11,1.8,950.25 +11348,9/9/2025,1409,Home,South,1,441.87,0.32,Wallet,11,1.3,300.47 +11349,9/10/2025,1117,Electronics,North,3,137.52,0.31,COD,7,4,284.67 +11350,9/11/2025,1835,Home,South,5,570.1,0.01,Wallet,1,1.3,2822 +11351,9/12/2025,1786,Home,South,6,50.56,0.26,COD,7,2.5,224.49 +11352,9/13/2025,1723,Beauty,East,6,540.49,0.23,Card,8,4,2497.06 +11353,9/14/2025,1224,Clothing,North,4,193.1,0.27,Card,7,3.9,563.85 +11354,9/15/2025,1531,Home,East,7,307.59,0.17,COD,5,3.3,1787.1 +11355,9/16/2025,1112,Electronics,North,7,262.08,0.35,Card,7,3.3,1192.46 +11356,9/17/2025,1139,Beauty,North,2,115.52,0.02,COD,10,1.4,226.42 +11357,9/18/2025,1558,Electronics,North,2,224.52,0.08,Card,11,1.7,413.12 +11358,9/19/2025,1000,Clothing,East,2,127.87,0.14,Card,2,3.1,219.94 +11359,9/20/2025,1089,Home,East,7,134.27,0.16,COD,9,2.4,789.51 +11360,9/21/2025,1653,Home,East,6,124.43,0.32,COD,2,1.1,507.67 +11361,9/22/2025,1319,Electronics,West,7,301.08,0.2,Card,2,4.2,1686.05 +11362,9/23/2025,1549,Beauty,East,2,481.79,0.02,Card,5,3.6,944.31 +11363,9/24/2025,1804,Electronics,West,5,347.85,0.14,Card,8,2.3,1495.76 +11364,9/25/2025,1893,Clothing,West,1,537.53,0.15,Card,6,1.4,456.9 +11365,9/26/2025,1138,Electronics,West,6,387.38,0.34,COD,9,3.4,1534.02 +11366,9/27/2025,1510,Electronics,South,5,418.26,0.21,COD,6,2.4,1652.13 +11367,9/28/2025,1867,Clothing,South,3,405.55,0.22,Card,5,2,948.99 +11368,9/29/2025,1844,Clothing,South,5,277.93,0.25,Card,1,3.9,1042.24 +11369,9/30/2025,1258,Electronics,West,5,418.26,0.27,Card,8,2.3,1526.65 +11370,10/1/2025,1672,Electronics,West,3,55.78,0.22,Card,3,1.5,130.53 +11371,10/2/2025,1901,Clothing,North,5,518.01,0.08,COD,2,2.9,2382.85 +11372,10/3/2025,1689,Home,West,1,470.02,0.31,Card,7,4.3,324.31 +11373,10/4/2025,1009,Beauty,South,6,158.46,0.26,Card,11,4.4,703.56 +11374,10/5/2025,1260,Electronics,West,4,464.3,0.26,COD,2,4.4,1374.33 +11375,10/6/2025,1918,Clothing,West,7,22.4,0.35,Card,1,2.7,101.92 +11376,10/7/2025,1649,Electronics,North,3,142.09,0.28,COD,11,4.2,306.91 +11377,10/8/2025,1171,Electronics,West,6,53.11,0.29,COD,2,4.4,226.25 +11378,10/9/2025,1897,Home,East,2,471.43,0.33,Card,6,2.8,631.72 +11379,10/10/2025,1012,Clothing,North,1,457.19,0.05,COD,2,2.3,434.33 +11380,10/11/2025,1167,Electronics,West,4,490.98,0.17,COD,1,3.8,1630.05 +11381,10/12/2025,1641,Electronics,West,1,17.62,0.2,COD,1,4.6,14.1 +11382,10/13/2025,1595,Electronics,North,1,308.22,0.12,COD,4,4.9,271.23 +11383,10/14/2025,1320,Home,West,2,427.33,0.29,Wallet,8,2.2,606.81 +11384,10/15/2025,1318,Beauty,South,4,105.91,0.27,Wallet,6,4.8,309.26 +11385,10/16/2025,1612,Electronics,East,7,395.13,0.25,COD,4,3,2074.43 +11386,10/17/2025,1328,Electronics,East,1,64.2,0.35,Wallet,6,2.2,41.73 +11387,10/18/2025,1784,Beauty,South,2,121.08,0.09,Card,6,5,220.37 +11388,10/19/2025,1776,Beauty,West,3,293.34,0.26,COD,9,4.5,651.21 +11389,10/20/2025,1970,Clothing,West,2,397.34,0.19,Card,4,3.8,643.69 +11390,10/21/2025,1910,Electronics,East,5,100.33,0.11,Card,6,4.6,446.47 +11391,10/22/2025,1919,Electronics,West,6,123.36,0.06,COD,10,3.7,695.75 +11392,10/23/2025,1549,Clothing,East,2,134.6,0.31,COD,1,2.8,185.75 +11393,10/24/2025,1418,Clothing,East,2,154.64,0.21,Card,7,4.8,244.33 +11394,10/25/2025,1605,Electronics,South,2,147.53,0.29,COD,7,4.9,209.49 +11395,10/26/2025,1094,Clothing,East,7,246.16,0.19,COD,11,2.3,1395.73 +11396,10/27/2025,1816,Electronics,West,1,397.47,0.08,Card,1,2.4,365.67 +11397,10/28/2025,1580,Home,West,7,271.25,0.12,Card,8,2.5,1670.9 +11398,10/29/2025,1317,Electronics,North,4,468.94,0.13,Card,5,4.3,1631.91 +11399,10/30/2025,1955,Electronics,West,2,435.77,0.34,Card,9,4.2,575.22 +11400,10/31/2025,1235,Clothing,North,2,89.02,0,COD,8,4.9,178.04 +11401,11/1/2025,1945,Clothing,East,5,43.57,0.34,Card,3,2.9,143.78 +11402,11/2/2025,1333,Beauty,West,5,528.6,0.34,Card,1,3.9,1744.38 +11403,11/3/2025,1884,Clothing,South,3,61.7,0.35,COD,3,4.4,120.32 +11404,11/4/2025,1375,Electronics,South,3,101.78,0.17,COD,2,1.9,253.43 +11405,11/5/2025,1458,Home,South,5,27.95,0.34,Card,2,3.5,92.23 +11406,11/6/2025,1136,Electronics,East,4,382.58,0.14,Card,11,3.2,1316.08 +11407,11/7/2025,1929,Beauty,East,3,355.69,0.01,Card,4,4,1056.4 +11408,11/8/2025,1587,Clothing,North,6,592.34,0.08,COD,2,3.8,3269.72 +11409,11/9/2025,1994,Clothing,South,6,533.86,0.33,Wallet,8,4.3,2146.12 +11410,11/10/2025,1546,Electronics,North,4,255.34,0,COD,5,2.2,1021.36 +11411,11/11/2025,1512,Clothing,North,5,232.38,0.19,Card,1,1.9,941.14 +11412,11/12/2025,1295,Home,West,3,188.66,0.03,COD,6,4.2,549 +11413,11/13/2025,1319,Home,West,2,104.16,0.1,Card,7,2.4,187.49 +11414,11/14/2025,1917,Electronics,South,5,95.78,0.03,Card,1,2.2,464.53 +11415,11/15/2025,1571,Electronics,East,3,92.39,0.3,Card,3,2.3,194.02 +11416,11/16/2025,1831,Home,West,4,81.76,0.21,COD,9,1.3,258.36 +11417,11/17/2025,1348,Beauty,East,6,155.7,0.32,COD,7,4.1,635.26 +11418,11/18/2025,1839,Electronics,North,4,194.4,0.24,COD,4,3.9,590.98 +11419,11/19/2025,1778,Clothing,North,3,577.52,0.34,COD,6,3.2,1143.49 +11420,11/20/2025,1872,Electronics,North,4,353.41,0.18,Card,6,3.9,1159.18 +11421,11/21/2025,1228,Beauty,North,3,592.74,0.22,Card,3,2.5,1387.01 +11422,11/22/2025,1269,Electronics,South,3,232.89,0.2,COD,2,2.2,558.94 +11423,11/23/2025,1827,Electronics,North,4,282.71,0.17,COD,5,4.4,938.6 +11424,11/24/2025,1797,Home,West,1,204.88,0.3,COD,8,2.7,143.42 +11425,11/25/2025,1290,Electronics,North,2,121.99,0.23,Card,3,1.8,187.86 +11426,11/26/2025,1724,Clothing,East,5,98.75,0.28,COD,5,4,355.5 +11427,11/27/2025,1164,Clothing,West,6,567.87,0.28,Card,3,2.3,2453.2 +11428,11/28/2025,1004,Electronics,East,2,592.28,0.07,COD,7,1.8,1101.64 +11429,11/29/2025,1850,Clothing,East,5,41.27,0.23,COD,6,1.1,158.89 +11430,11/30/2025,1378,Clothing,South,5,102.95,0.07,Wallet,6,4.9,478.72 +11431,12/1/2025,1077,Electronics,South,6,262.76,0.2,Card,1,2.9,1261.25 +11432,12/2/2025,1409,Clothing,East,2,124.01,0.24,COD,2,1.6,188.5 +11433,12/3/2025,1573,Home,East,6,227.87,0.35,COD,6,4,888.69 +11434,12/4/2025,1131,Home,North,3,90.52,0.01,Card,8,4.6,268.84 +11435,12/5/2025,1600,Electronics,West,6,282.06,0.03,Card,5,3.1,1641.59 +11436,12/6/2025,1748,Electronics,North,4,173.94,0.03,COD,2,1.1,674.89 +11437,12/7/2025,1041,Electronics,South,1,220.86,0.14,Card,5,2.5,189.94 +11438,12/8/2025,1088,Clothing,South,1,70.17,0.29,Card,9,2,49.82 +11439,12/9/2025,1401,Clothing,North,1,265.45,0.3,Wallet,6,3.5,185.81 +11440,12/10/2025,1295,Home,West,2,590.21,0.26,COD,5,3.1,873.51 +11441,12/11/2025,1839,Electronics,East,2,207.37,0.31,Card,10,2.4,286.17 +11442,12/12/2025,1294,Electronics,North,3,527.71,0.11,COD,6,3.6,1408.99 +11443,12/13/2025,1615,Clothing,South,7,508.27,0.03,COD,11,3.3,3451.15 +11444,12/14/2025,1525,Home,West,1,571.95,0.02,Wallet,9,4.6,560.51 +11445,12/15/2025,1799,Electronics,South,3,477.21,0.3,COD,7,3.4,1002.14 +11446,12/16/2025,1690,Clothing,West,7,400.86,0.26,Wallet,10,3,2076.45 +11447,12/17/2025,1636,Electronics,West,1,516.1,0.24,Card,3,4.3,392.24 +11448,12/18/2025,1421,Beauty,West,2,59.25,0.12,COD,10,1.8,104.28 +11449,12/19/2025,1864,Beauty,North,7,285.76,0.13,Card,10,2,1740.28 +11450,12/20/2025,1022,Electronics,North,4,593.71,0.34,Card,5,4.1,1567.39 +11451,12/21/2025,1574,Electronics,North,4,465.22,0.02,COD,4,2.8,1823.66 +11452,12/22/2025,1142,Clothing,West,4,577.81,0.27,Card,11,2.6,1687.21 +11453,12/23/2025,1992,Electronics,West,6,471.09,0.11,COD,5,4.5,2515.62 +11454,12/24/2025,1664,Home,South,4,526.81,0.01,Wallet,8,3.4,2086.17 +11455,12/25/2025,1144,Home,East,5,428.32,0.26,Card,11,4.2,1584.78 +11456,12/26/2025,1224,Home,North,1,459.89,0.12,Card,6,4.2,404.7 +11457,12/27/2025,1502,Home,West,4,321.06,0.25,COD,4,1.5,963.18 +11458,12/28/2025,1961,Clothing,South,7,555.68,0.25,Wallet,5,3.6,2917.32 +11459,12/29/2025,1973,Electronics,South,5,497.65,0.19,COD,11,4.8,2015.48 +11460,12/30/2025,1820,Home,South,5,508.67,0.27,COD,7,2.9,1856.65 +11461,12/31/2025,1615,Clothing,North,5,408.71,0.2,Card,8,3.9,1634.84 +11462,1/1/2026,1103,Home,North,3,193.18,0.1,Card,5,3.3,521.59 +11463,1/2/2026,1946,Electronics,East,7,35.84,0.26,COD,2,1.8,185.65 +11464,1/3/2026,1038,Electronics,South,3,562.36,0.21,Card,6,1.8,1332.79 +11465,1/4/2026,1946,Beauty,North,5,357.88,0,Wallet,9,2.7,1789.4 +11466,1/5/2026,1197,Electronics,South,6,189.41,0.32,COD,3,2.9,772.79 +11467,1/6/2026,1645,Beauty,West,4,102.24,0.19,COD,7,3,331.26 +11468,1/7/2026,1578,Beauty,South,1,500.27,0.3,COD,8,4.8,350.19 +11469,1/8/2026,1390,Home,East,7,504.36,0.31,COD,6,1.4,2436.06 +11470,1/9/2026,1178,Home,North,6,491.49,0.16,COD,3,2.5,2477.11 +11471,1/10/2026,1967,Clothing,West,2,392.37,0.18,Wallet,1,3.1,643.49 +11472,1/11/2026,1553,Beauty,North,3,229.12,0.15,Wallet,3,4.9,584.26 +11473,1/12/2026,1447,Electronics,West,4,192.88,0.16,Wallet,11,3,648.08 +11474,1/13/2026,1499,Clothing,South,4,20,0.31,Wallet,6,4.1,55.2 +11475,1/14/2026,1014,Clothing,South,2,502.66,0.28,COD,11,4,723.83 +11476,1/15/2026,1622,Clothing,East,2,66.15,0.04,COD,4,3.3,127.01 +11477,1/16/2026,1668,Clothing,East,7,383.99,0.21,Card,1,1.5,2123.46 +11478,1/17/2026,1288,Electronics,West,4,309.88,0.35,Card,6,1.9,805.69 +11479,1/18/2026,1477,Clothing,East,2,323.11,0.21,Card,1,2,510.51 +11480,1/19/2026,1230,Beauty,East,4,557.13,0.28,Card,8,1.2,1604.53 +11481,1/20/2026,1922,Electronics,East,6,33.49,0.27,Card,3,2.5,146.69 +11482,1/21/2026,1419,Beauty,East,7,467.43,0.12,Card,3,3.4,2879.37 +11483,1/22/2026,1156,Home,South,2,45.45,0.13,Wallet,1,1.6,79.08 +11484,1/23/2026,1549,Home,East,6,37.32,0.25,Wallet,3,1.7,167.94 +11485,1/24/2026,1440,Clothing,South,6,266.44,0.17,Card,7,3.8,1326.87 +11486,1/25/2026,1096,Home,South,2,51.9,0.2,Card,10,1.7,83.04 +11487,1/26/2026,1996,Electronics,North,7,476.65,0.25,Wallet,8,1.5,2502.41 +11488,1/27/2026,1410,Home,South,4,324.79,0.27,Wallet,11,4.9,948.39 +11489,1/28/2026,1950,Electronics,South,5,31.99,0.1,Wallet,8,1.1,143.95 +11490,1/29/2026,1288,Beauty,East,4,38.69,0.05,Wallet,3,2.3,147.02 +11491,1/30/2026,1253,Beauty,South,1,373.41,0.1,Wallet,5,1.1,336.07 +11492,1/31/2026,1195,Electronics,West,2,486.58,0.18,Card,1,4.4,797.99 +11493,2/1/2026,1597,Electronics,East,3,271.11,0.12,Card,9,3.3,715.73 +11494,2/2/2026,1833,Home,East,7,339.43,0.2,COD,8,1.2,1900.81 +11495,2/3/2026,1521,Electronics,East,2,482.9,0.02,Card,10,3.5,946.48 +11496,2/4/2026,1516,Beauty,North,1,372.15,0.18,Wallet,2,1.5,305.16 +11497,2/5/2026,1634,Electronics,East,6,146.48,0.13,COD,10,3,764.63 +11498,2/6/2026,1841,Electronics,South,3,373.64,0.19,COD,1,3.7,907.95 +11499,2/7/2026,1864,Beauty,West,3,382.54,0.15,Card,4,1.6,975.48 +11500,2/8/2026,1117,Home,East,4,444.45,0.1,COD,9,3,1600.02 +11501,2/9/2026,1805,Home,East,5,378.21,0.32,COD,8,2.8,1285.91 +11502,2/10/2026,1908,Electronics,West,4,582.01,0.06,Wallet,3,4.7,2188.36 +11503,2/11/2026,1158,Home,East,7,130.41,0.24,Card,10,5,693.78 +11504,2/12/2026,1814,Clothing,North,3,571.39,0.32,Wallet,6,3.6,1165.64 +11505,2/13/2026,1227,Clothing,South,3,329.93,0.19,Wallet,9,4.4,801.73 +11506,2/14/2026,1876,Home,West,5,408.09,0.31,COD,10,3.6,1407.91 +11507,2/15/2026,1215,Clothing,West,7,73.19,0.04,COD,8,4.5,491.84 +11508,2/16/2026,1947,Clothing,North,2,237.64,0.17,COD,10,2.7,394.48 +11509,2/17/2026,1695,Electronics,South,5,465.09,0.16,Card,5,3.4,1953.38 +11510,2/18/2026,1014,Home,North,6,428.54,0,Card,9,4.4,2571.24 +11511,2/19/2026,1156,Electronics,South,4,38.48,0.16,Wallet,9,4.7,129.29 +11512,2/20/2026,1647,Home,North,2,334.76,0.13,COD,3,1.1,582.48 +11513,2/21/2026,1260,Electronics,East,4,66.64,0.23,Card,8,1.4,205.25 +11514,2/22/2026,1156,Clothing,North,5,597.58,0.33,COD,4,4.7,2001.89 +11515,2/23/2026,1046,Home,West,2,539.92,0.03,Card,10,3.3,1047.44 +11516,2/24/2026,1323,Electronics,West,5,27.33,0.11,Card,7,5,121.62 +11517,2/25/2026,1843,Electronics,West,6,517.31,0.16,COD,10,4.2,2607.24 +11518,2/26/2026,1684,Electronics,North,1,552.87,0.16,Card,8,4.3,464.41 +11519,2/27/2026,1129,Clothing,West,3,221.83,0.27,Card,7,2.5,485.81 +11520,2/28/2026,1410,Home,West,7,435.91,0.16,COD,5,2,2563.15 +11521,3/1/2026,1094,Electronics,East,2,273.63,0.01,COD,11,3.4,541.79 +11522,3/2/2026,1626,Home,East,3,398.31,0.25,Card,1,4.5,896.2 +11523,3/3/2026,1754,Electronics,South,1,214.09,0.31,Card,8,3.9,147.72 +11524,3/4/2026,1931,Clothing,South,2,203.7,0.18,Card,5,2.9,334.07 +11525,3/5/2026,1291,Beauty,South,3,263.29,0.2,Card,3,4,631.9 +11526,3/6/2026,1793,Electronics,North,3,100.16,0.06,Card,2,3.8,282.45 +11527,3/7/2026,1810,Clothing,South,2,501.22,0.08,Card,3,4.7,922.24 +11528,3/8/2026,1282,Electronics,North,3,218.99,0.08,Card,9,2.1,604.41 +11529,3/9/2026,1068,Electronics,North,3,249.09,0.15,Wallet,2,1.5,635.18 +11530,3/10/2026,1659,Electronics,South,2,538.02,0.32,Card,10,2.9,731.71 +11531,3/11/2026,1010,Electronics,South,7,305.52,0.18,Card,1,2.4,1753.68 +11532,3/12/2026,1253,Clothing,North,3,333.39,0.07,Card,2,4.9,930.16 +11533,3/13/2026,1841,Clothing,East,3,574.55,0.09,Card,2,1,1568.52 +11534,3/14/2026,1871,Clothing,West,7,533.73,0.13,COD,11,4.7,3250.42 +11535,3/15/2026,1549,Electronics,West,4,114.14,0.22,Card,5,4.8,356.12 +11536,3/16/2026,1133,Electronics,West,6,291.83,0.15,Card,1,1.2,1488.33 +11537,3/17/2026,1711,Home,East,4,583.21,0.14,Card,10,4.6,2006.24 +11538,3/18/2026,1022,Beauty,North,1,232.83,0.2,COD,8,2.9,186.26 +11539,3/19/2026,1814,Electronics,South,4,232.37,0.08,Card,2,4.1,855.12 +11540,3/20/2026,1345,Beauty,North,4,129.09,0.03,COD,6,1.3,500.87 +11541,3/21/2026,1301,Clothing,North,1,81.88,0.01,Card,5,4.8,81.06 +11542,3/22/2026,1362,Clothing,South,3,448.08,0.09,Card,2,3.4,1223.26 +11543,3/23/2026,1395,Clothing,East,3,465.47,0.03,COD,10,4.6,1354.52 +11544,3/24/2026,1217,Electronics,West,4,581.87,0.12,COD,1,3.7,2048.18 +11545,3/25/2026,1140,Electronics,West,1,467.45,0.27,COD,6,3.1,341.24 +11546,3/26/2026,1615,Clothing,North,3,157.36,0.25,Card,6,1.7,354.06 +11547,3/27/2026,1957,Electronics,East,5,38.47,0.21,COD,3,1.7,151.96 +11548,3/28/2026,1209,Beauty,West,2,591.48,0.3,Card,8,2.9,828.07 +11549,3/29/2026,1984,Clothing,East,2,214.16,0.1,COD,9,4.5,385.49 +11550,3/30/2026,1992,Electronics,South,6,197.5,0.31,COD,3,1.5,817.65 +11551,3/31/2026,1622,Home,North,2,544.98,0.14,Card,9,5,937.37 +11552,4/1/2026,1615,Electronics,North,4,357.28,0.14,COD,8,4.5,1229.04 +11553,4/2/2026,1827,Clothing,East,2,140.7,0.14,COD,5,2.6,242 +11554,4/3/2026,1682,Home,West,2,535.12,0.03,Card,6,2,1038.13 +11555,4/4/2026,1459,Beauty,East,5,596.12,0.34,Wallet,1,4.7,1967.2 +11556,4/5/2026,1355,Home,South,3,65.71,0.05,Wallet,5,1.5,187.27 +11557,4/6/2026,1323,Home,West,5,519.42,0.12,Card,10,2.4,2285.45 +11558,4/7/2026,1132,Home,West,4,243.45,0.11,Wallet,10,1.3,866.68 +11559,4/8/2026,1887,Beauty,East,2,321.58,0.03,Card,7,4.8,623.87 +11560,4/9/2026,1804,Electronics,South,7,550.17,0.05,COD,1,3.5,3658.63 +11561,4/10/2026,1839,Electronics,West,3,584.43,0.02,Wallet,10,2.3,1718.22 +11562,4/11/2026,1126,Electronics,North,6,168.37,0.1,COD,9,2.1,909.2 +11563,4/12/2026,1105,Electronics,South,6,139.52,0.3,Card,7,2.8,585.98 +11564,4/13/2026,1603,Home,West,2,62.1,0.12,Wallet,4,1.4,109.3 +11565,4/14/2026,1798,Clothing,East,2,343.65,0.04,Card,11,4.6,659.81 +11566,4/15/2026,1377,Clothing,West,6,22.96,0.23,Card,4,3,106.08 +11567,4/16/2026,1904,Electronics,North,6,255.96,0.35,Card,11,3.9,998.24 +11568,4/17/2026,1050,Home,South,7,57.93,0.08,Wallet,10,1.9,373.07 +11569,4/18/2026,1028,Electronics,West,4,252.06,0.1,Wallet,7,3,907.42 +11570,4/19/2026,1461,Home,North,2,38.36,0.34,Card,6,1.8,50.64 +11571,4/20/2026,1295,Clothing,West,6,503.6,0.06,Wallet,3,4.3,2840.3 +11572,4/21/2026,1296,Electronics,West,7,137.7,0.18,Card,9,4.1,790.4 +11573,4/22/2026,1725,Electronics,South,1,207.06,0.08,Wallet,6,1.6,190.5 +11574,4/23/2026,1778,Electronics,East,6,523.98,0.33,COD,11,1.3,2106.4 +11575,4/24/2026,1406,Home,East,3,451.57,0.34,Card,2,4.3,894.11 +11576,4/25/2026,1768,Beauty,North,3,143.14,0.29,Card,10,1.4,304.89 +11577,4/26/2026,1813,Clothing,North,1,57.06,0.11,Card,2,3.2,50.78 +11578,4/27/2026,1612,Electronics,North,4,433.67,0.14,Card,1,3.1,1491.82 +11579,4/28/2026,1404,Clothing,South,2,243.56,0.08,COD,11,1.8,448.15 +11580,4/29/2026,1345,Home,East,2,463.16,0.31,Card,5,3.4,639.16 +11581,4/30/2026,1621,Home,North,6,275.5,0.32,Wallet,10,3,1124.04 +11582,5/1/2026,1419,Electronics,North,3,217.41,0.15,COD,6,3,554.4 +11583,5/2/2026,1181,Electronics,West,4,278.96,0.23,COD,3,2.4,859.2 +11584,5/3/2026,1982,Home,West,4,452.91,0.06,Card,4,4.4,1702.94 +11585,5/4/2026,1824,Clothing,North,4,542.8,0.15,Wallet,5,1.3,1845.52 +11586,5/5/2026,1000,Electronics,West,6,44.11,0.22,COD,4,2.8,206.43 +11587,5/6/2026,1830,Electronics,West,2,321.61,0.13,Wallet,9,2,559.6 +11588,5/7/2026,1949,Clothing,West,4,34.21,0.13,Wallet,3,4.4,119.05 +11589,5/8/2026,1566,Beauty,South,6,289.02,0,Card,5,1.9,1734.12 +11590,5/9/2026,1370,Beauty,North,6,532.89,0.28,Card,7,4.1,2302.08 +11591,5/10/2026,1935,Clothing,North,1,226.53,0.31,Wallet,7,3.4,156.31 +11592,5/11/2026,1910,Clothing,West,5,560.48,0.34,Wallet,6,4.5,1849.58 +11593,5/12/2026,1660,Electronics,South,4,383.91,0.25,COD,9,3.4,1151.73 +11594,5/13/2026,1430,Clothing,West,5,561.48,0.19,Card,7,3.2,2273.99 +11595,5/14/2026,1968,Clothing,South,2,457.94,0.09,COD,11,4.2,833.45 +11596,5/15/2026,1308,Clothing,North,6,75.51,0.35,Card,4,3.2,294.49 +11597,5/16/2026,1136,Clothing,West,7,150.22,0.21,Card,11,4.4,830.72 +11598,5/17/2026,1201,Electronics,North,4,245.59,0.24,COD,10,1.2,746.59 +11599,5/18/2026,1435,Electronics,South,7,114.51,0.24,Card,9,3,609.19 +11600,5/19/2026,1312,Electronics,East,3,304.52,0.3,COD,6,4.3,639.49 +11601,5/20/2026,1116,Electronics,South,2,290.75,0,Wallet,1,4.4,581.5 +11602,5/21/2026,1665,Electronics,East,1,574.41,0.08,Wallet,9,4.3,528.46 +11603,5/22/2026,1936,Beauty,North,1,268.73,0.23,Wallet,11,3.4,206.92 +11604,5/23/2026,1802,Clothing,North,5,474.59,0.31,Wallet,7,5,1637.34 +11605,5/24/2026,1574,Clothing,West,6,566.02,0.24,Card,6,1.7,2581.05 +11606,5/25/2026,1243,Beauty,East,5,528.04,0.14,Wallet,6,1.7,2270.57 +11607,5/26/2026,1536,Beauty,South,3,137.07,0.13,Wallet,4,1.1,357.75 +11608,5/27/2026,1601,Clothing,North,3,305.18,0.26,Wallet,4,5,677.5 +11609,5/28/2026,1074,Home,East,1,218.43,0.26,COD,11,2.4,161.64 +11610,5/29/2026,1805,Electronics,South,7,248.92,0.21,Card,3,4,1376.53 +11611,5/30/2026,1385,Electronics,East,4,226.07,0.1,Card,8,1.2,813.85 +11612,5/31/2026,1902,Clothing,South,1,498.42,0.32,Card,8,2.2,338.93 +11613,6/1/2026,1209,Home,South,1,279.5,0.19,Wallet,2,3.5,226.4 +11614,6/2/2026,1474,Home,South,7,321.36,0.28,COD,5,3.1,1619.65 +11615,6/3/2026,1417,Electronics,South,7,589.73,0.08,Wallet,9,1.8,3797.86 +11616,6/4/2026,1346,Electronics,East,3,50.09,0.12,COD,9,2.8,132.24 +11617,6/5/2026,1528,Clothing,East,7,300.46,0.31,COD,7,1.4,1451.22 +11618,6/6/2026,1639,Electronics,West,5,467.83,0.02,Card,4,3.2,2292.37 +11619,6/7/2026,1938,Clothing,East,3,103.43,0.18,Card,4,1.4,254.44 +11620,6/8/2026,1954,Home,East,7,372.75,0.17,Card,10,3.5,2165.68 +11621,6/9/2026,1875,Home,West,6,155.09,0.26,COD,11,1.6,688.6 +11622,6/10/2026,1762,Home,East,3,522.43,0.1,Card,7,3.2,1410.56 +11623,6/11/2026,1178,Beauty,South,3,206.35,0.08,COD,3,1.5,569.53 +11624,6/12/2026,1181,Clothing,North,1,207.5,0.32,Card,3,2.6,141.1 +11625,6/13/2026,1663,Home,North,4,364.94,0.2,Wallet,5,2.4,1167.81 +11626,6/14/2026,1024,Clothing,West,1,122.38,0.04,Card,11,4,117.48 +11627,6/15/2026,1966,Electronics,East,2,181.66,0.07,COD,6,3.6,337.89 +11628,6/16/2026,1179,Electronics,East,3,258.73,0.35,Card,8,4.7,504.52 +11629,6/17/2026,1709,Electronics,West,7,221.88,0.07,COD,1,4.7,1444.44 +11630,6/18/2026,1500,Clothing,North,7,322.05,0.21,Card,7,3.9,1780.94 +11631,6/19/2026,1855,Clothing,South,7,365.79,0.15,COD,8,4.1,2176.45 +11632,6/20/2026,1160,Home,East,3,346.5,0.31,Wallet,5,3.5,717.26 +11633,6/21/2026,1176,Electronics,West,7,397.69,0.26,Card,10,3.8,2060.03 +11634,6/22/2026,1284,Electronics,South,2,195.03,0.21,Card,2,3.5,308.15 +11635,6/23/2026,1062,Beauty,West,3,88.96,0,COD,4,2.2,266.88 +11636,6/24/2026,1661,Electronics,West,7,460.07,0.31,COD,6,2.4,2222.14 +11637,6/25/2026,1665,Clothing,West,3,512.71,0.16,Card,9,3.3,1292.03 +11638,6/26/2026,1155,Clothing,North,6,165.35,0.33,COD,2,3.9,664.71 +11639,6/27/2026,1881,Clothing,North,3,253.15,0.17,Card,4,2.6,630.34 +11640,6/28/2026,1468,Electronics,West,2,306.66,0.24,Card,10,1.6,466.12 +11641,6/29/2026,1048,Electronics,East,1,327,0.02,Card,5,2.8,320.46 +11642,6/30/2026,1966,Electronics,South,3,400.8,0.26,Wallet,8,4.9,889.78 +11643,7/1/2026,1848,Clothing,East,4,39.34,0.12,COD,8,1.9,138.48 +11644,7/2/2026,1083,Clothing,North,2,437.06,0.12,COD,2,3.6,769.23 +11645,7/3/2026,1360,Electronics,South,5,51.25,0.04,Wallet,6,4.9,246 +11646,7/4/2026,1688,Clothing,West,6,288.95,0.05,Card,6,2.5,1647.01 +11647,7/5/2026,1147,Home,East,2,499.19,0.07,COD,5,4.6,928.49 +11648,7/6/2026,1629,Electronics,East,1,278.96,0.11,Wallet,8,4.5,248.27 +11649,7/7/2026,1341,Clothing,West,7,102.22,0.31,Card,10,2.4,493.72 +11650,7/8/2026,1475,Home,East,7,591.24,0.13,Card,2,1.4,3600.65 +11651,7/9/2026,1062,Electronics,North,2,535.23,0.25,Wallet,2,1.7,802.84 +11652,7/10/2026,1700,Electronics,West,5,466.22,0.03,Wallet,7,2.5,2261.17 +11653,7/11/2026,1359,Clothing,East,7,255.73,0.21,Card,9,4.8,1414.19 +11654,7/12/2026,1560,Beauty,West,6,122.55,0.17,Card,3,2.1,610.3 +11655,7/13/2026,1326,Home,South,4,565.73,0.34,Card,7,4.7,1493.53 +11656,7/14/2026,1768,Clothing,West,5,326.43,0.3,Card,3,1.7,1142.5 +11657,7/15/2026,1735,Home,East,2,513.63,0.16,Card,6,4.9,862.9 +11658,7/16/2026,1140,Clothing,North,5,215.13,0.27,COD,3,2.2,785.22 +11659,7/17/2026,1989,Clothing,West,7,211.14,0.07,Wallet,1,3.5,1374.52 +11660,7/18/2026,1214,Clothing,West,7,591.54,0.2,Card,6,1.3,3312.62 +11661,7/19/2026,1434,Electronics,East,2,320.27,0.03,Wallet,11,2.2,621.32 +11662,7/20/2026,1890,Home,North,7,97.31,0.12,Card,3,1.8,599.43 +11663,7/21/2026,1951,Clothing,North,7,143.51,0.08,Card,1,1,924.2 +11664,7/22/2026,1722,Clothing,South,4,296.94,0.25,COD,5,1.6,890.82 +11665,7/23/2026,1317,Beauty,South,4,39.85,0.17,Card,8,3.4,132.3 +11666,7/24/2026,1031,Electronics,East,1,285.58,0.26,Card,8,2.6,211.33 +11667,7/25/2026,1669,Electronics,North,4,260.08,0.18,Wallet,8,3.9,853.06 +11668,7/26/2026,1284,Electronics,North,3,470.91,0.03,Card,3,3.7,1370.35 +11669,7/27/2026,1304,Home,South,5,222.64,0.26,COD,8,4.2,823.77 +11670,7/28/2026,1428,Home,South,5,589.79,0.29,Card,4,4.5,2093.75 +11671,7/29/2026,1476,Electronics,East,2,120.75,0.32,Card,8,4.3,164.22 +11672,7/30/2026,1285,Home,North,4,360.73,0.2,COD,3,2.8,1154.34 +11673,7/31/2026,1143,Clothing,West,1,67.47,0.26,Wallet,3,2.2,49.93 +11674,8/1/2026,1423,Home,South,7,444.31,0.26,Card,1,3,2301.53 +11675,8/2/2026,1018,Clothing,East,1,596.93,0.05,COD,8,3.1,567.08 +11676,8/3/2026,1017,Clothing,North,1,494.2,0.06,Wallet,8,2.3,464.55 +11677,8/4/2026,1768,Beauty,North,6,340.09,0.02,COD,9,3.2,1999.73 +11678,8/5/2026,1589,Electronics,South,7,298.57,0.11,Card,6,1.4,1860.09 +11679,8/6/2026,1370,Electronics,East,3,503.49,0.17,COD,2,1.9,1253.69 +11680,8/7/2026,1174,Clothing,West,4,562.54,0.35,COD,1,4,1462.6 +11681,8/8/2026,1193,Beauty,South,7,593.69,0.15,COD,8,1.7,3532.46 +11682,8/9/2026,1501,Clothing,East,1,246.98,0.25,COD,10,1.6,185.24 +11683,8/10/2026,1987,Electronics,North,7,594.69,0.24,Card,4,2.1,3163.75 +11684,8/11/2026,1112,Electronics,West,3,106.22,0.07,COD,11,2.5,296.35 +11685,8/12/2026,1113,Clothing,East,5,163.33,0.02,COD,11,2.3,800.32 +11686,8/13/2026,1221,Electronics,West,2,67.07,0.19,COD,7,2.5,108.65 +11687,8/14/2026,1677,Home,East,4,173.97,0.25,Wallet,10,1.6,521.91 +11688,8/15/2026,1946,Beauty,East,4,464.24,0.35,Wallet,4,1.7,1207.02 +11689,8/16/2026,1830,Clothing,East,6,513.96,0.13,COD,1,1.9,2682.87 +11690,8/17/2026,1643,Clothing,East,5,470.65,0.31,COD,8,2.6,1623.74 +11691,8/18/2026,1896,Clothing,West,4,384.17,0.13,COD,10,2.3,1336.91 +11692,8/19/2026,1263,Electronics,South,6,315.67,0.24,COD,9,4.2,1439.46 +11693,8/20/2026,1924,Beauty,West,6,429.59,0.21,Wallet,10,3.1,2036.26 +11694,8/21/2026,1054,Clothing,East,6,243.64,0.02,COD,9,3.3,1432.6 +11695,8/22/2026,1870,Clothing,West,4,507.17,0.03,Card,9,3.2,1967.82 +11696,8/23/2026,1642,Home,West,4,411.16,0.01,COD,11,2.6,1628.19 +11697,8/24/2026,1799,Clothing,West,4,423.22,0.13,COD,11,4.9,1472.81 +11698,8/25/2026,1777,Clothing,East,3,328.52,0.26,COD,4,1.1,729.31 +11699,8/26/2026,1457,Electronics,West,6,532.86,0.06,COD,9,1.9,3005.33 +11700,8/27/2026,1978,Home,North,3,162.43,0.21,Card,11,2.1,384.96 +11701,8/28/2026,1877,Beauty,East,2,237.97,0.1,Card,4,4.5,428.35 +11702,8/29/2026,1161,Clothing,West,4,469.92,0.28,Card,2,4.7,1353.37 +11703,8/30/2026,1379,Beauty,North,7,303.26,0.28,Card,10,4.4,1528.43 +11704,8/31/2026,1992,Electronics,West,5,535.19,0.27,Card,3,2.7,1953.44 +11705,9/1/2026,1086,Clothing,South,1,217.64,0.18,Wallet,2,4.7,178.46 +11706,9/2/2026,1054,Clothing,West,2,231.06,0.1,Card,1,1.4,415.91 +11707,9/3/2026,1475,Clothing,West,7,534.91,0.28,Wallet,11,3.6,2695.95 +11708,9/4/2026,1799,Clothing,South,1,286.66,0.07,Card,6,4.7,266.59 +11709,9/5/2026,1177,Electronics,East,1,316.93,0.1,Card,4,4,285.24 +11710,9/6/2026,1390,Electronics,South,4,209.67,0.06,COD,7,2.1,788.36 +11711,9/7/2026,1348,Clothing,East,5,176.85,0.24,Card,7,3.9,672.03 +11712,9/8/2026,1007,Electronics,South,1,398.73,0.24,Wallet,10,2.2,303.03 +11713,9/9/2026,1832,Home,West,6,85.11,0.23,Card,1,1.4,393.21 +11714,9/10/2026,1312,Electronics,West,7,529.37,0.15,Card,9,3.9,3149.75 +11715,9/11/2026,1758,Electronics,East,1,470.83,0.04,Wallet,8,1.7,452 +11716,9/12/2026,1834,Clothing,East,2,126.59,0.32,Card,10,1.4,172.16 +11717,9/13/2026,1983,Clothing,North,5,421,0.18,Card,1,3.2,1726.1 +11718,9/14/2026,1982,Beauty,North,5,367.54,0.14,Card,8,3.5,1580.42 +11719,9/15/2026,1442,Clothing,West,1,122.95,0.21,COD,5,1.2,97.13 +11720,9/16/2026,1766,Electronics,West,5,174.82,0.07,Card,1,1,812.91 +11721,9/17/2026,1327,Home,North,2,254.26,0.05,COD,4,4.5,483.09 +11722,9/18/2026,1053,Clothing,North,7,424.06,0.14,Wallet,7,1.5,2552.84 +11723,9/19/2026,1760,Electronics,East,2,388.65,0.08,Wallet,5,3.3,715.12 +11724,9/20/2026,1238,Clothing,South,2,326.36,0.09,Card,11,4.8,593.98 +11725,9/21/2026,1228,Beauty,East,6,464.52,0.31,Card,3,3,1923.11 +11726,9/22/2026,1578,Clothing,North,4,458.39,0.19,Card,11,1.6,1485.18 +11727,9/23/2026,1050,Electronics,West,1,376.45,0.17,COD,4,2.6,312.45 +11728,9/24/2026,1608,Electronics,North,7,475.39,0.24,Card,2,3.5,2529.07 +11729,9/25/2026,1603,Electronics,West,5,210.54,0.33,Wallet,8,4.1,705.31 +11730,9/26/2026,1263,Clothing,West,2,530.53,0.04,COD,2,3.4,1018.62 +11731,9/27/2026,1417,Clothing,West,1,374.72,0.29,Card,11,1.1,266.05 +11732,9/28/2026,1802,Electronics,West,7,496.08,0.2,COD,6,1.6,2778.05 +11733,9/29/2026,1095,Beauty,South,7,334.57,0.05,Card,7,2.5,2224.89 +11734,9/30/2026,1087,Home,North,1,142.79,0.1,Card,7,3.8,128.51 +11735,10/1/2026,1077,Clothing,East,4,332.31,0.17,Card,1,3.3,1103.27 +11736,10/2/2026,1287,Home,West,6,232.1,0.24,Card,8,1.2,1058.38 +11737,10/3/2026,1119,Electronics,West,5,423.04,0.08,COD,9,4.2,1945.98 +11738,10/4/2026,1813,Clothing,East,6,293.34,0.19,COD,7,3.4,1425.63 +11739,10/5/2026,1490,Clothing,East,7,504.13,0.24,Card,8,4.5,2681.97 +11740,10/6/2026,1911,Home,West,5,411.67,0.16,Wallet,4,2.7,1729.01 +11741,10/7/2026,1451,Home,East,7,415.46,0.3,Card,8,3,2035.75 +11742,10/8/2026,1499,Electronics,East,2,142.04,0.3,Card,3,2.6,198.86 +11743,10/9/2026,1164,Beauty,South,2,590.79,0.16,Card,1,3.9,992.53 +11744,10/10/2026,1181,Electronics,East,1,507.38,0.34,COD,8,4,334.87 +11745,10/11/2026,1468,Beauty,North,5,476.57,0.03,Wallet,11,3.9,2311.36 +11746,10/12/2026,1909,Beauty,North,5,208.18,0,COD,6,2.2,1040.9 +11747,10/13/2026,1734,Electronics,North,7,328.34,0.13,Wallet,9,3.5,1999.59 +11748,10/14/2026,1822,Home,West,6,95.21,0.21,Card,3,2.4,451.3 +11749,10/15/2026,1943,Electronics,North,2,330.01,0.22,Card,8,4.3,514.82 +11750,10/16/2026,1977,Clothing,South,3,100.35,0.17,COD,9,1.2,249.87 +11751,10/17/2026,1006,Clothing,North,1,338.53,0.04,COD,9,1.2,324.99 +11752,10/18/2026,1329,Clothing,West,5,394.5,0.06,Card,7,1.4,1854.15 +11753,10/19/2026,1774,Beauty,South,4,243.26,0.3,Wallet,11,1.8,681.13 +11754,10/20/2026,1672,Home,North,4,306.65,0.3,Card,10,1.2,858.62 +11755,10/21/2026,1150,Clothing,South,3,527.26,0.24,Card,3,1.3,1202.15 +11756,10/22/2026,1084,Home,South,2,78.51,0.23,COD,3,2.2,120.91 +11757,10/23/2026,1146,Beauty,West,2,478.16,0.21,COD,2,1.4,755.49 +11758,10/24/2026,1623,Electronics,West,2,114.89,0.07,Card,1,4.2,213.7 +11759,10/25/2026,1380,Beauty,South,6,36.47,0.15,Card,2,1.2,186 +11760,10/26/2026,1914,Electronics,North,7,123.56,0.24,COD,5,4.6,657.34 +11761,10/27/2026,1547,Home,West,4,462.55,0.19,COD,1,4.5,1498.66 +11762,10/28/2026,1284,Electronics,South,2,252,0.01,COD,10,1.8,498.96 +11763,10/29/2026,1699,Electronics,East,4,525.42,0.33,COD,4,1.3,1408.13 +11764,10/30/2026,1081,Clothing,East,3,321.95,0.3,Card,11,1.4,676.09 +11765,10/31/2026,1513,Clothing,West,1,28.02,0.09,Wallet,10,3.2,25.5 +11766,11/1/2026,1896,Clothing,North,7,434.28,0.22,Wallet,10,3.4,2371.17 +11767,11/2/2026,1814,Electronics,East,6,79.49,0.32,Card,1,2.3,324.32 +11768,11/3/2026,1708,Clothing,East,5,476.79,0.03,Card,10,2.2,2312.43 +11769,11/4/2026,1915,Beauty,East,3,113.34,0.18,Card,8,3.1,278.82 +11770,11/5/2026,1522,Clothing,North,7,217.09,0.16,COD,5,2.2,1276.49 +11771,11/6/2026,1745,Electronics,North,4,460.34,0.14,Wallet,10,4.7,1583.57 +11772,11/7/2026,1385,Clothing,West,3,573.23,0.29,COD,4,2.5,1220.98 +11773,11/8/2026,1706,Electronics,West,5,232.29,0.13,Wallet,3,1.9,1010.46 +11774,11/9/2026,1470,Home,East,7,500.2,0.02,Card,9,1.6,3431.37 +11775,11/10/2026,1118,Home,North,6,126.61,0.02,COD,6,3.5,744.47 +11776,11/11/2026,1395,Clothing,South,1,487.2,0.01,Card,1,2.3,482.33 +11777,11/12/2026,1531,Clothing,East,5,399.63,0.14,Card,8,1.8,1718.41 +11778,11/13/2026,1260,Home,West,7,127.75,0.25,COD,10,2.1,670.69 +11779,11/14/2026,1804,Clothing,North,6,191.96,0.07,Card,2,2.2,1071.14 +11780,11/15/2026,1933,Home,West,4,92.09,0.23,COD,9,3.5,283.64 +11781,11/16/2026,1255,Clothing,West,5,239.04,0.24,COD,11,1.7,908.35 +11782,11/17/2026,1733,Home,North,3,134.13,0.09,Wallet,7,3.9,366.17 +11783,11/18/2026,1904,Clothing,East,2,391.74,0.21,Card,3,2.2,618.95 +11784,11/19/2026,1225,Clothing,North,3,596.79,0.24,COD,4,3,1360.68 +11785,11/20/2026,1052,Beauty,East,4,22.03,0.16,Wallet,3,3.6,74.02 +11786,11/21/2026,1939,Clothing,West,7,331.44,0.12,Wallet,6,3.2,2041.67 +11787,11/22/2026,1866,Clothing,North,1,350.59,0.22,COD,9,3.6,273.46 +11788,11/23/2026,1499,Electronics,South,5,549.81,0.34,COD,10,2.3,1814.37 +11789,11/24/2026,1505,Clothing,East,7,311.01,0.15,Card,9,4.9,1850.51 +11790,11/25/2026,1853,Clothing,South,1,333.07,0.14,COD,1,2.8,286.44 +11791,11/26/2026,1363,Electronics,East,4,290.92,0.16,COD,10,2.3,977.49 +11792,11/27/2026,1279,Electronics,North,5,172.31,0.03,COD,6,2.2,835.7 +11793,11/28/2026,1592,Clothing,South,6,47.78,0.19,COD,1,1.2,232.21 +11794,11/29/2026,1713,Home,North,6,254.06,0.12,Card,11,3.7,1341.44 +11795,11/30/2026,1157,Clothing,East,7,45.77,0.04,Card,4,2.1,307.57 +11796,12/1/2026,1631,Electronics,East,3,337.04,0.16,COD,7,4.8,849.34 +11797,12/2/2026,1058,Home,East,7,194.77,0,Card,4,1.8,1363.39 +11798,12/3/2026,1726,Electronics,East,3,327.16,0.14,Card,9,3.1,844.07 +11799,12/4/2026,1127,Clothing,West,4,93.56,0.04,Card,10,3.9,359.27 +11800,12/5/2026,1735,Electronics,East,6,560.59,0.01,Card,5,4.5,3329.9 +11801,12/6/2026,1720,Electronics,South,5,538.29,0.29,Wallet,9,1.6,1910.93 +11802,12/7/2026,1881,Electronics,East,6,126.15,0.32,COD,1,4.9,514.69 +11803,12/8/2026,1114,Clothing,North,3,215.91,0.07,Card,4,4.6,602.39 +11804,12/9/2026,1208,Electronics,West,7,373.89,0.19,COD,7,4.9,2119.96 +11805,12/10/2026,1525,Clothing,South,4,70.98,0.1,Card,2,4.4,255.53 +11806,12/11/2026,1520,Clothing,West,6,222.42,0.17,COD,9,4.5,1107.65 +11807,12/12/2026,1551,Clothing,West,4,161.9,0.15,Card,3,3.4,550.46 +11808,12/13/2026,1961,Clothing,West,6,550.58,0.09,Wallet,4,4.4,3006.17 +11809,12/14/2026,1236,Home,North,7,513.72,0.25,Card,4,3.1,2697.03 +11810,12/15/2026,1280,Electronics,West,1,354.2,0.04,COD,8,3.2,340.03 +11811,12/16/2026,1358,Clothing,West,7,319.4,0.02,Wallet,2,3.3,2191.08 +11812,12/17/2026,1200,Electronics,East,6,559.47,0.27,Wallet,5,5,2450.48 +11813,12/18/2026,1757,Electronics,North,3,560.47,0.23,Card,2,1.4,1294.69 +11814,12/19/2026,1277,Clothing,South,7,582.06,0.17,COD,6,4.2,3381.77 +11815,12/20/2026,1234,Clothing,South,5,88.35,0.16,Card,9,2.1,371.07 +11816,12/21/2026,1493,Beauty,South,3,108.93,0.17,COD,9,2.4,271.24 +11817,12/22/2026,1003,Clothing,North,3,410.89,0.15,Card,1,1.3,1047.77 +11818,12/23/2026,1665,Beauty,South,3,331.74,0.14,Wallet,4,2.4,855.89 +11819,12/24/2026,1441,Electronics,North,4,25.8,0.17,Card,4,5,85.66 +11820,12/25/2026,1028,Electronics,East,2,51.26,0.18,COD,1,2.6,84.07 +11821,12/26/2026,1108,Electronics,East,2,534.53,0.24,COD,10,3.7,812.49 +11822,12/27/2026,1609,Electronics,North,1,523.29,0.25,Wallet,2,1.5,392.47 +11823,12/28/2026,1726,Clothing,South,3,224,0.13,COD,6,4.7,584.64 +11824,12/29/2026,1804,Clothing,North,2,536.26,0.14,Card,10,4.3,922.37 +11825,12/30/2026,1074,Electronics,North,1,362.3,0.13,Card,3,2.5,315.2 +11826,12/31/2026,1837,Beauty,West,4,486.45,0.19,Card,9,2.4,1576.1 +11827,1/1/2027,1145,Home,North,3,265.05,0.16,COD,3,2.7,667.93 +11828,1/2/2027,1127,Electronics,West,5,81.34,0.31,COD,3,2.6,280.62 +11829,1/3/2027,1852,Electronics,East,4,268.73,0.24,COD,9,2,816.94 +11830,1/4/2027,1041,Electronics,West,1,282.52,0.31,Card,3,5,194.94 +11831,1/5/2027,1355,Electronics,North,4,337.3,0.25,COD,6,4.2,1011.9 +11832,1/6/2027,1040,Electronics,East,5,76.77,0.34,COD,6,2.1,253.34 +11833,1/7/2027,1933,Clothing,West,4,594.97,0.22,Wallet,1,4.9,1856.31 +11834,1/8/2027,1033,Electronics,North,1,157.82,0.34,COD,7,1.1,104.16 +11835,1/9/2027,1016,Clothing,East,5,131.15,0.06,Card,9,2.8,616.4 +11836,1/10/2027,1676,Beauty,West,5,323.18,0.02,Card,9,3.3,1583.58 +11837,1/11/2027,1152,Home,North,4,329.27,0.2,Card,9,1.2,1053.66 +11838,1/12/2027,1997,Beauty,North,5,272.3,0.34,COD,2,1.6,898.59 +11839,1/13/2027,1377,Electronics,South,7,466.56,0.15,COD,1,2,2776.03 +11840,1/14/2027,1587,Clothing,South,4,317.24,0.07,Card,6,3.9,1180.13 +11841,1/15/2027,1598,Clothing,West,3,371.67,0.18,Card,6,4.8,914.31 +11842,1/16/2027,1628,Electronics,West,5,438.39,0.23,Card,4,3.5,1687.8 +11843,1/17/2027,1873,Electronics,West,4,29.64,0.11,Wallet,8,3.3,105.52 +11844,1/18/2027,1341,Home,North,3,348.83,0.25,Card,5,3.1,784.87 +11845,1/19/2027,1980,Clothing,West,5,532.25,0.34,Card,7,2.4,1756.42 +11846,1/20/2027,1026,Clothing,North,3,25.17,0.31,Card,9,4.3,52.1 +11847,1/21/2027,1824,Clothing,West,6,252.03,0.1,Card,1,3.2,1360.96 +11848,1/22/2027,1286,Clothing,North,5,556.84,0.11,COD,9,1.9,2477.94 +11849,1/23/2027,1645,Electronics,North,6,221.6,0.13,Wallet,4,1.5,1156.75 +11850,1/24/2027,1730,Electronics,South,1,283.36,0.14,Card,7,4.9,243.69 +11851,1/25/2027,1167,Electronics,East,1,589.2,0.04,COD,11,1.1,565.63 +11852,1/26/2027,1609,Electronics,North,4,131.6,0.27,Card,4,4.7,384.27 +11853,1/27/2027,1267,Beauty,West,2,53.17,0.13,Wallet,4,1.9,92.52 +11854,1/28/2027,1748,Clothing,South,6,517.76,0.31,Card,4,3.6,2143.53 +11855,1/29/2027,1820,Home,West,6,523.05,0.32,Card,6,2.2,2134.04 +11856,1/30/2027,1454,Electronics,West,1,291.17,0.01,COD,5,4.4,288.26 +11857,1/31/2027,1905,Clothing,North,6,315.81,0.35,Card,2,3.2,1231.66 +11858,2/1/2027,1684,Electronics,North,2,503.95,0.25,Card,9,1.6,755.92 +11859,2/2/2027,1400,Electronics,East,3,447.06,0.18,COD,11,2.1,1099.77 +11860,2/3/2027,1921,Electronics,North,3,170.11,0.14,COD,6,2.3,438.88 +11861,2/4/2027,1980,Home,North,2,24.88,0.18,COD,10,4.5,40.8 +11862,2/5/2027,1475,Home,East,6,295.62,0.11,COD,6,4.1,1578.61 +11863,2/6/2027,1701,Clothing,West,6,517.46,0.22,COD,9,4.3,2421.71 +11864,2/7/2027,1633,Clothing,East,6,539.06,0.03,COD,1,1.2,3137.33 +11865,2/8/2027,1557,Beauty,East,7,574.39,0.22,COD,7,3.3,3136.17 +11866,2/9/2027,1575,Electronics,East,4,529.54,0.1,COD,3,5,1906.34 +11867,2/10/2027,1129,Electronics,South,5,354.33,0.01,Card,4,4.1,1753.93 +11868,2/11/2027,1821,Electronics,West,2,275.09,0.19,Card,1,1.5,445.65 +11869,2/12/2027,1362,Home,South,2,468.29,0.2,Card,3,3.7,749.26 +11870,2/13/2027,1704,Beauty,South,7,447.8,0.15,Card,7,4,2664.41 +11871,2/14/2027,1818,Electronics,North,2,329.81,0.03,COD,6,3.1,639.83 +11872,2/15/2027,1692,Beauty,East,2,66.09,0.31,Card,1,1.3,91.2 +11873,2/16/2027,1291,Home,East,7,556.76,0.21,Card,9,1.1,3078.88 +11874,2/17/2027,1370,Electronics,South,2,281.53,0.04,Card,4,4.8,540.54 +11875,2/18/2027,1793,Clothing,North,6,227.55,0.18,Card,7,2,1119.55 +11876,2/19/2027,1028,Clothing,North,7,383.3,0.17,COD,4,2.5,2226.97 +11877,2/20/2027,1148,Beauty,North,4,409.2,0.02,COD,7,4.2,1604.06 +11878,2/21/2027,1778,Electronics,West,1,138.25,0.21,COD,5,3.8,109.22 +11879,2/22/2027,1295,Home,South,6,504.61,0.28,Card,1,4.9,2179.92 +11880,2/23/2027,1010,Electronics,West,6,184.61,0.26,Wallet,4,1.4,819.67 +11881,2/24/2027,1511,Home,North,5,124.21,0.07,Wallet,3,3.8,577.58 +11882,2/25/2027,1675,Clothing,North,7,252.74,0.3,COD,6,1.3,1238.43 +11883,2/26/2027,1112,Clothing,North,1,442.38,0.12,Wallet,6,1,389.29 +11884,2/27/2027,1186,Home,East,2,579.79,0.33,COD,1,1.5,776.92 +11885,2/28/2027,1806,Home,South,1,488.43,0.03,Wallet,11,3.5,473.78 +11886,3/1/2027,1743,Beauty,East,4,565.1,0.17,Wallet,2,3.7,1876.13 +11887,3/2/2027,1226,Electronics,West,3,97.25,0.21,Wallet,2,2.8,230.48 +11888,3/3/2027,1309,Home,East,6,56.64,0.09,COD,10,1.2,309.25 +11889,3/4/2027,1097,Electronics,South,7,341.26,0.27,COD,4,3.5,1743.84 +11890,3/5/2027,1054,Clothing,East,7,184.82,0.22,COD,9,1.3,1009.12 +11891,3/6/2027,1622,Clothing,North,1,499.41,0.01,Card,11,1.6,494.42 +11892,3/7/2027,1663,Clothing,West,5,408.11,0.21,Card,2,3.1,1612.03 +11893,3/8/2027,1757,Clothing,West,4,582.88,0.17,Wallet,11,2.4,1935.16 +11894,3/9/2027,1405,Beauty,North,3,164.05,0.07,Card,8,2.9,457.7 +11895,3/10/2027,1068,Electronics,North,4,299.18,0.35,COD,11,3.5,777.87 +11896,3/11/2027,1311,Home,North,7,308.23,0.31,Card,1,1.6,1488.75 +11897,3/12/2027,1288,Clothing,South,2,154.92,0.1,Card,8,4.6,278.86 +11898,3/13/2027,1761,Electronics,East,3,360.2,0.19,Wallet,3,3.2,875.29 +11899,3/14/2027,1547,Electronics,West,7,274.32,0.11,Wallet,5,1.1,1709.01 +11900,3/15/2027,1750,Beauty,East,5,276.33,0.27,COD,1,3.5,1008.6 +11901,3/16/2027,1147,Beauty,North,3,227.2,0.33,Card,1,2.9,456.67 +11902,3/17/2027,1466,Beauty,North,7,24.9,0.13,COD,6,3.8,151.64 +11903,3/18/2027,1738,Beauty,East,5,320.43,0.28,Card,3,4.1,1153.55 +11904,3/19/2027,1243,Electronics,West,2,211.12,0.17,Card,8,4.8,350.46 +11905,3/20/2027,1490,Clothing,South,5,15.77,0.14,Card,4,5,67.81 +11906,3/21/2027,1848,Home,East,4,195.15,0.33,COD,6,3.2,523 +11907,3/22/2027,1957,Clothing,North,1,178,0.18,Card,10,3.2,145.96 +11908,3/23/2027,1506,Clothing,North,4,245.17,0.16,COD,9,1.1,823.77 +11909,3/24/2027,1364,Clothing,South,7,92.13,0.24,Card,8,4.5,490.13 +11910,3/25/2027,1481,Clothing,East,7,312,0.09,Card,4,1.1,1987.44 +11911,3/26/2027,1200,Clothing,South,6,420.08,0.11,Card,10,3.5,2243.23 +11912,3/27/2027,1153,Electronics,South,4,383.66,0.33,Wallet,8,1.4,1028.21 +11913,3/28/2027,1449,Clothing,West,3,485.2,0.24,COD,7,2.1,1106.26 +11914,3/29/2027,1500,Clothing,West,2,279.42,0.29,Card,5,1.6,396.78 +11915,3/30/2027,1072,Clothing,North,6,318.67,0.09,COD,7,1.5,1739.94 +11916,3/31/2027,1712,Electronics,East,6,489.09,0.19,Wallet,7,1.3,2376.98 +11917,4/1/2027,1295,Home,West,6,265.21,0.34,COD,10,2.3,1050.23 +11918,4/2/2027,1016,Electronics,North,7,425.44,0.11,COD,2,2.7,2650.49 +11919,4/3/2027,1640,Clothing,East,1,269.24,0.06,Card,7,2.9,253.09 +11920,4/4/2027,1216,Home,North,5,259.38,0.18,COD,3,2.8,1063.46 +11921,4/5/2027,1060,Clothing,West,3,459.72,0.14,COD,8,3.1,1186.08 +11922,4/6/2027,1938,Electronics,North,7,117.28,0.06,COD,8,4.4,771.7 +11923,4/7/2027,1615,Home,East,2,213.07,0.31,Wallet,9,3.5,294.04 +11924,4/8/2027,1041,Clothing,East,7,146.14,0.35,Card,11,1.1,664.94 +11925,4/9/2027,1024,Home,North,1,225.08,0.2,Card,4,1.7,180.06 +11926,4/10/2027,1038,Home,East,7,149.77,0.27,Wallet,10,2.4,765.32 +11927,4/11/2027,1802,Clothing,North,7,353.95,0.3,COD,3,4.8,1734.36 +11928,4/12/2027,1130,Clothing,East,4,481.93,0.25,Card,9,1.3,1445.79 +11929,4/13/2027,1497,Electronics,North,2,475.17,0.02,Card,9,3.8,931.33 +11930,4/14/2027,1228,Electronics,North,6,228.23,0.06,Wallet,2,1.1,1287.22 +11931,4/15/2027,1107,Clothing,North,2,593.42,0.02,Card,6,2.5,1163.1 +11932,4/16/2027,1171,Clothing,South,2,362.4,0,Card,3,4.1,724.8 +11933,4/17/2027,1434,Clothing,East,4,248.65,0.11,Card,5,2.4,885.19 +11934,4/18/2027,1477,Electronics,West,5,503.79,0.14,Wallet,2,2.7,2166.3 +11935,4/19/2027,1101,Electronics,North,7,441.98,0.08,Wallet,4,4.6,2846.35 +11936,4/20/2027,1865,Clothing,South,3,453.33,0.02,COD,11,1.3,1332.79 +11937,4/21/2027,1523,Electronics,West,6,129.74,0.19,COD,3,3.1,630.54 +11938,4/22/2027,1274,Home,North,5,288.97,0.1,Card,2,2.5,1300.37 +11939,4/23/2027,1612,Electronics,West,1,519.17,0.28,Card,6,4.9,373.8 +11940,4/24/2027,1043,Clothing,South,7,309.86,0,Wallet,11,4.2,2169.02 +11941,4/25/2027,1954,Beauty,West,6,414.82,0.29,Card,3,1.5,1767.13 +11942,4/26/2027,1816,Electronics,North,3,358.94,0.33,COD,4,4.7,721.47 +11943,4/27/2027,1956,Clothing,West,7,507.78,0.25,COD,6,1.8,2665.84 +11944,4/28/2027,1016,Electronics,West,1,181.47,0.26,Card,5,1.3,134.29 +11945,4/29/2027,1329,Clothing,North,4,351.65,0.33,COD,4,3.2,942.42 +11946,4/30/2027,1568,Clothing,South,5,87.09,0.07,COD,4,3.9,404.97 +11947,5/1/2027,1822,Clothing,South,7,418.77,0.35,COD,2,3.9,1905.4 +11948,5/2/2027,1496,Clothing,West,6,443.2,0.27,Card,10,3.1,1941.22 +11949,5/3/2027,1814,Beauty,East,2,40.06,0.25,Card,4,3,60.09 +11950,5/4/2027,1011,Electronics,West,3,410.34,0.13,COD,8,4.9,1070.99 +11951,5/5/2027,1317,Electronics,East,7,257.59,0.19,Wallet,5,4.3,1460.54 +11952,5/6/2027,1591,Beauty,West,6,87.6,0.23,Card,11,3.8,404.71 +11953,5/7/2027,1215,Clothing,South,2,260.65,0.22,Wallet,10,1.8,406.61 +11954,5/8/2027,1338,Beauty,West,6,128.63,0.25,COD,10,4.3,578.84 +11955,5/9/2027,1775,Clothing,West,7,258.1,0.03,Wallet,8,4,1752.5 +11956,5/10/2027,1990,Home,East,1,239.84,0.12,Card,6,5,211.06 +11957,5/11/2027,1660,Clothing,South,2,446.96,0.15,Card,10,1.5,759.83 +11958,5/12/2027,1080,Home,East,2,467.92,0.09,Card,5,3.9,851.61 +11959,5/13/2027,1726,Beauty,West,6,370.11,0.06,Card,4,4.9,2087.42 +11960,5/14/2027,1484,Clothing,North,4,28.27,0.05,Wallet,10,2.9,107.43 +11961,5/15/2027,1373,Electronics,West,7,559.65,0.13,Card,9,3.9,3408.27 +11962,5/16/2027,1975,Electronics,West,4,416.45,0.17,COD,10,4.9,1382.61 +11963,5/17/2027,1709,Electronics,East,5,35,0.02,Card,5,3.2,171.5 +11964,5/18/2027,1199,Electronics,North,1,494.02,0.33,COD,10,3.8,330.99 +11965,5/19/2027,1536,Electronics,North,4,132.16,0.27,Card,11,1.1,385.91 +11966,5/20/2027,1465,Clothing,East,6,353.84,0.26,Card,6,3.1,1571.05 +11967,5/21/2027,1088,Clothing,South,7,287.98,0.06,Card,7,2,1894.91 +11968,5/22/2027,1267,Clothing,North,4,260.61,0.21,COD,11,1.5,823.53 +11969,5/23/2027,1654,Clothing,North,5,535.48,0.19,Card,11,3.8,2168.69 +11970,5/24/2027,1570,Electronics,East,3,270.86,0.34,Card,1,1.2,536.3 +11971,5/25/2027,1921,Electronics,South,5,59.08,0.26,Card,9,4.6,218.6 +11972,5/26/2027,1488,Electronics,South,2,568.78,0.2,Wallet,8,3.1,910.05 +11973,5/27/2027,1876,Clothing,West,7,553.51,0.3,COD,11,3.6,2712.2 +11974,5/28/2027,1537,Electronics,West,2,415.39,0.05,COD,5,2,789.24 +11975,5/29/2027,1046,Electronics,East,4,288.72,0.01,COD,3,1.7,1143.33 +11976,5/30/2027,1287,Clothing,South,4,69.32,0.24,Card,5,2,210.73 +11977,5/31/2027,1777,Home,East,5,477.59,0.03,COD,5,1.9,2316.31 +11978,6/1/2027,1015,Electronics,West,5,59.15,0.04,Card,9,4.5,283.92 +11979,6/2/2027,1710,Clothing,East,6,55.13,0.26,Card,7,4.1,244.78 +11980,6/3/2027,1400,Home,East,1,329.37,0.09,COD,2,4.4,299.73 +11981,6/4/2027,1918,Home,North,6,108.68,0.22,COD,5,3.9,508.62 +11982,6/5/2027,1793,Beauty,North,2,19.52,0.32,Card,9,3.6,26.55 +11983,6/6/2027,1980,Electronics,North,6,262.52,0.11,Card,11,3.1,1401.86 +11984,6/7/2027,1085,Electronics,West,5,95.27,0.08,COD,2,2.1,438.24 +11985,6/8/2027,1249,Beauty,East,7,108.9,0.04,COD,8,3.8,731.81 +11986,6/9/2027,1390,Clothing,North,6,59.99,0.05,Card,3,1.5,341.94 +11987,6/10/2027,1781,Clothing,North,3,134.98,0.02,Card,4,3,396.84 +11988,6/11/2027,1334,Home,North,1,433.56,0.03,Wallet,2,1.8,420.55 +11989,6/12/2027,1628,Home,West,5,488.22,0.15,COD,9,3,2074.94 +11990,6/13/2027,1518,Beauty,West,7,279.73,0.11,Wallet,6,2.2,1742.72 +11991,6/14/2027,1136,Beauty,East,4,311.33,0.25,Card,9,1.2,933.99 +11992,6/15/2027,1882,Home,East,6,34.1,0.3,COD,11,3,143.22 +11993,6/16/2027,1687,Electronics,East,5,55.55,0.27,Card,8,1.7,202.76 +11994,6/17/2027,1839,Beauty,North,4,165.68,0.19,COD,9,1.6,536.8 +11995,6/18/2027,1497,Electronics,South,4,333.18,0.04,Card,5,2.5,1279.41 +11996,6/19/2027,1826,Electronics,West,2,447.64,0.25,Card,6,2.4,671.46 +11997,6/20/2027,1726,Beauty,North,2,368.93,0.13,Card,7,4.5,641.94 +11998,6/21/2027,1476,Electronics,North,7,244.39,0.03,COD,5,3.3,1659.41 +11999,6/22/2027,1593,Electronics,East,5,84.22,0.29,COD,1,4.4,298.98 +12000,6/23/2027,1222,Electronics,East,7,471.75,0.12,COD,9,1.6,2905.98 +12001,6/24/2027,1989,Beauty,North,5,227.81,0.08,Wallet,2,2.4,1047.93 +12002,6/25/2027,1371,Clothing,West,3,445.59,0.31,COD,7,3.2,922.37 +12003,6/26/2027,1934,Home,West,1,315.09,0.32,COD,8,1.6,214.26 +12004,6/27/2027,1994,Electronics,North,1,447.12,0.12,Wallet,8,1.5,393.47 +12005,6/28/2027,1401,Home,South,5,545.76,0.12,COD,1,3.6,2401.34 +12006,6/29/2027,1442,Home,South,2,553.8,0.2,Card,10,3.6,886.08 +12007,6/30/2027,1489,Electronics,West,6,328.04,0.26,Wallet,7,1.9,1456.5 +12008,7/1/2027,1614,Clothing,East,7,314.23,0.02,Card,9,1.9,2155.62 +12009,7/2/2027,1272,Electronics,South,3,170.42,0.21,COD,11,4,403.9 +12010,7/3/2027,1525,Beauty,South,1,562.44,0.33,Card,11,1.5,376.83 +12011,7/4/2027,1158,Clothing,East,5,282.88,0.09,COD,3,4.7,1287.1 +12012,7/5/2027,1151,Beauty,South,2,89.64,0.32,COD,8,4.8,121.91 +12013,7/6/2027,1994,Electronics,North,2,268.13,0.33,Card,8,4.5,359.29 +12014,7/7/2027,1619,Home,South,2,89.33,0.09,COD,9,1.8,162.58 +12015,7/8/2027,1187,Home,East,7,308.98,0.26,COD,8,1.1,1600.52 +12016,7/9/2027,1812,Home,North,6,343.35,0.08,Card,5,4.7,1895.29 +12017,7/10/2027,1097,Beauty,South,4,212.59,0.26,Card,5,2.4,629.27 +12018,7/11/2027,1130,Clothing,West,7,56.92,0.28,Card,3,2.2,286.88 +12019,7/12/2027,1804,Electronics,North,6,566.95,0.09,Wallet,6,2,3095.55 +12020,7/13/2027,1170,Home,North,2,467.41,0.25,COD,10,2,701.12 +12021,7/14/2027,1935,Home,West,5,505.75,0.28,Wallet,3,3.9,1820.7 +12022,7/15/2027,1985,Clothing,West,3,229.62,0.13,Card,2,4.6,599.31 +12023,7/16/2027,1182,Electronics,South,6,460.09,0.06,Card,7,4.1,2594.91 +12024,7/17/2027,1982,Clothing,South,5,298.94,0.03,Card,10,3.7,1449.86 +12025,7/18/2027,1363,Electronics,East,7,132.63,0.2,Card,3,2.2,742.73 +12026,7/19/2027,1038,Clothing,East,7,87.79,0.34,COD,4,3.2,405.59 +12027,7/20/2027,1526,Clothing,North,2,216.85,0.29,Wallet,11,1.9,307.93 +12028,7/21/2027,1887,Home,West,3,95.47,0.15,Card,10,1.4,243.45 +12029,7/22/2027,1496,Electronics,West,1,598.99,0.19,Wallet,8,1.5,485.18 +12030,7/23/2027,1515,Clothing,East,1,43.78,0.1,Card,1,3.4,39.4 +12031,7/24/2027,1348,Electronics,North,7,273.07,0.06,Wallet,9,1.2,1796.8 +12032,7/25/2027,1981,Electronics,North,5,279.47,0.17,Card,6,4.9,1159.8 +12033,7/26/2027,1920,Home,East,3,190.87,0.16,Wallet,2,5,480.99 +12034,7/27/2027,1396,Beauty,East,5,349.24,0.18,Card,3,1.6,1431.88 +12035,7/28/2027,1721,Clothing,East,3,102.74,0.33,Wallet,5,2.7,206.51 +12036,7/29/2027,1160,Home,South,3,473.59,0.21,Card,11,4.1,1122.41 +12037,7/30/2027,1015,Beauty,North,7,209.48,0.21,Card,6,4.8,1158.42 +12038,7/31/2027,1492,Home,North,5,360.94,0.04,COD,9,4.6,1732.51 +12039,8/1/2027,1425,Electronics,North,7,433.65,0.35,Card,2,2,1973.11 +12040,8/2/2027,1107,Beauty,East,3,535.09,0.27,COD,5,1.3,1171.85 +12041,8/3/2027,1893,Clothing,East,6,503.94,0.31,Wallet,7,2.2,2086.31 +12042,8/4/2027,1449,Electronics,East,2,370.86,0.15,COD,11,2.7,630.46 +12043,8/5/2027,1310,Electronics,East,3,242.21,0.18,COD,11,2.4,595.84 +12044,8/6/2027,1738,Clothing,West,6,309.37,0.18,Card,7,4.1,1522.1 +12045,8/7/2027,1169,Electronics,East,3,464.71,0.07,COD,4,2,1296.54 +12046,8/8/2027,1545,Electronics,South,6,528.36,0.24,COD,3,4.4,2409.32 +12047,8/9/2027,1413,Electronics,West,5,75.71,0.32,Wallet,8,1.9,257.41 +12048,8/10/2027,1250,Home,West,1,240.14,0.06,Card,2,2.4,225.73 +12049,8/11/2027,1758,Beauty,East,4,469.03,0.03,COD,5,2.8,1819.84 +12050,8/12/2027,1780,Electronics,North,3,267.52,0.26,Card,10,2.2,593.89 +12051,8/13/2027,1140,Beauty,East,4,209.35,0.1,Card,5,4.1,753.66 +12052,8/14/2027,1273,Beauty,North,3,255.62,0.22,Card,1,2.6,598.15 +12053,8/15/2027,1415,Home,East,5,367.66,0.24,Card,7,4.5,1397.11 +12054,8/16/2027,1607,Electronics,East,5,599.89,0.11,Card,4,4.9,2669.51 +12055,8/17/2027,1738,Home,North,6,303.4,0.29,Card,10,4.4,1292.48 +12056,8/18/2027,1890,Beauty,North,3,136.97,0.19,Wallet,2,3.1,332.84 +12057,8/19/2027,1038,Home,North,5,110.27,0.3,Card,8,3,385.94 +12058,8/20/2027,1813,Electronics,North,5,39.77,0.27,Wallet,4,1.9,145.16 +12059,8/21/2027,1028,Clothing,South,3,341.91,0.3,Card,1,3.4,718.01 +12060,8/22/2027,1957,Clothing,North,6,333.57,0.01,Card,8,4.8,1981.41 +12061,8/23/2027,1476,Clothing,East,6,135.06,0.09,COD,11,1.3,737.43 +12062,8/24/2027,1317,Electronics,East,6,421.77,0.03,COD,7,4,2454.7 +12063,8/25/2027,1244,Electronics,South,6,448.55,0.15,COD,3,4.5,2287.6 +12064,8/26/2027,1747,Home,North,1,166.57,0.31,COD,3,4.9,114.93 +12065,8/27/2027,1696,Beauty,East,3,216.3,0.16,Card,7,2.3,545.08 +12066,8/28/2027,1271,Electronics,South,7,594.43,0.3,COD,2,2.4,2912.71 +12067,8/29/2027,1439,Beauty,East,1,233.94,0.11,COD,5,1.9,208.21 +12068,8/30/2027,1747,Electronics,South,5,460.07,0.12,Card,7,4.2,2024.31 +12069,8/31/2027,1238,Home,South,1,279.84,0.31,Wallet,6,1.6,193.09 +12070,9/1/2027,1376,Home,West,7,479.11,0.15,COD,10,2.1,2850.7 +12071,9/2/2027,1265,Home,West,7,464.88,0.28,Card,7,2.2,2343 +12072,9/3/2027,1925,Beauty,North,7,405.64,0.08,Wallet,2,2.5,2612.32 +12073,9/4/2027,1920,Electronics,West,6,515.05,0.33,Wallet,7,2.7,2070.5 +12074,9/5/2027,1358,Beauty,South,5,564.44,0.2,COD,2,3.2,2257.76 +12075,9/6/2027,1339,Electronics,East,1,354.29,0.27,Card,7,4.8,258.63 +12076,9/7/2027,1388,Home,East,1,153.92,0.03,Wallet,8,2,149.3 +12077,9/8/2027,1576,Home,North,3,248.2,0.17,Card,10,4.1,618.02 +12078,9/9/2027,1989,Home,West,1,458.61,0.32,Card,8,3.7,311.85 +12079,9/10/2027,1688,Electronics,North,5,395.77,0.31,Card,5,1.5,1365.41 +12080,9/11/2027,1002,Beauty,South,6,119.01,0.02,COD,7,4.2,699.78 +12081,9/12/2027,1428,Electronics,West,3,44.98,0.11,Wallet,11,1.4,120.1 +12082,9/13/2027,1141,Electronics,North,1,414.53,0.16,COD,8,4,348.21 +12083,9/14/2027,1375,Home,East,3,161.88,0.06,Wallet,4,3.9,456.5 +12084,9/15/2027,1669,Clothing,East,4,307.31,0.26,Card,2,3.8,909.64 +12085,9/16/2027,1323,Home,North,3,451.85,0.06,Card,7,2.1,1274.22 +12086,9/17/2027,1145,Clothing,North,7,344.16,0.12,COD,1,3.3,2120.03 +12087,9/18/2027,1957,Electronics,North,6,63.73,0.23,Wallet,2,4,294.43 +12088,9/19/2027,1292,Home,South,7,123.56,0.17,COD,10,3.6,717.88 +12089,9/20/2027,1664,Clothing,South,4,143.31,0.26,Card,7,4.2,424.2 +12090,9/21/2027,1431,Electronics,East,7,165.85,0.34,Card,10,3.8,766.23 +12091,9/22/2027,1704,Home,South,4,345.76,0.04,Card,1,2.1,1327.72 +12092,9/23/2027,1948,Clothing,South,3,309.82,0.25,Card,7,1.6,697.1 +12093,9/24/2027,1974,Clothing,West,5,133.85,0.08,Card,5,3.5,615.71 +12094,9/25/2027,1584,Clothing,South,6,54.52,0.15,Wallet,11,4,278.05 +12095,9/26/2027,1398,Home,West,5,115.29,0.01,COD,3,1.6,570.69 +12096,9/27/2027,1816,Home,South,6,590.86,0.05,COD,11,1.7,3367.9 +12097,9/28/2027,1888,Home,East,6,289.1,0.11,Card,2,1,1543.79 +12098,9/29/2027,1343,Electronics,North,7,522.4,0.12,Card,7,3.1,3217.98 +12099,9/30/2027,1963,Home,East,7,511.52,0.31,COD,9,3.2,2470.64 +12100,10/1/2027,1139,Home,South,5,314.24,0.26,Wallet,9,3,1162.69 +12101,10/2/2027,1186,Home,North,2,428.41,0.34,COD,10,2.3,565.5 +12102,10/3/2027,1804,Clothing,North,4,127.76,0.21,Wallet,10,2.7,403.72 +12103,10/4/2027,1060,Beauty,North,7,417.71,0.08,Wallet,8,4.1,2690.05 +12104,10/5/2027,1996,Home,West,7,174.34,0.11,Card,2,1.7,1086.14 +12105,10/6/2027,1938,Electronics,East,7,501.76,0.11,Card,1,1.8,3125.96 +12106,10/7/2027,1379,Clothing,West,3,63.98,0.11,COD,8,3.7,170.83 +12107,10/8/2027,1709,Beauty,North,5,467.29,0.24,Card,2,4.5,1775.7 +12108,10/9/2027,1806,Electronics,East,5,73.46,0.19,Card,4,2.4,297.51 +12109,10/10/2027,1439,Beauty,East,7,530.5,0.13,Card,4,4.7,3230.74 +12110,10/11/2027,1318,Home,South,3,192.96,0.05,Card,2,1.2,549.94 +12111,10/12/2027,1301,Clothing,West,7,397.82,0.01,Wallet,4,1.5,2756.89 +12112,10/13/2027,1343,Electronics,West,4,300.19,0.08,Card,7,2.8,1104.7 +12113,10/14/2027,1010,Electronics,South,3,229.29,0.04,Card,6,3.9,660.36 +12114,10/15/2027,1061,Beauty,West,7,392.58,0.27,COD,10,2.5,2006.08 +12115,10/16/2027,1844,Electronics,North,6,569.3,0.04,COD,6,3.2,3279.17 +12116,10/17/2027,1225,Home,North,2,39.14,0.25,COD,4,1.1,58.71 +12117,10/18/2027,1152,Clothing,West,6,552.53,0.13,Wallet,2,2.8,2884.21 +12118,10/19/2027,1710,Electronics,South,2,371.31,0.03,COD,5,2,720.34 +12119,10/20/2027,1563,Electronics,East,3,487.28,0.28,COD,11,3.1,1052.52 +12120,10/21/2027,1771,Clothing,West,6,239.57,0.2,Card,3,3.1,1149.94 +12121,10/22/2027,1570,Beauty,East,4,291.03,0.08,COD,3,4,1070.99 +12122,10/23/2027,1583,Clothing,South,6,523.28,0.31,COD,4,3.2,2166.38 +12123,10/24/2027,1659,Clothing,East,5,257.69,0.02,Wallet,11,3.5,1262.68 +12124,10/25/2027,1860,Electronics,South,2,327.78,0.07,Wallet,11,3.1,609.67 +12125,10/26/2027,1574,Clothing,South,2,26.81,0.26,COD,5,5,39.68 +12126,10/27/2027,1309,Clothing,North,7,107.78,0.25,COD,11,4.2,565.84 +12127,10/28/2027,1884,Beauty,North,4,390.39,0.1,Card,2,4,1405.4 +12128,10/29/2027,1242,Clothing,South,2,434.43,0.02,Card,6,3.5,851.48 +12129,10/30/2027,1492,Clothing,West,2,355.82,0.3,Card,6,3.1,498.15 +12130,10/31/2027,1365,Electronics,North,7,98.84,0.11,Card,8,2.4,615.77 +12131,11/1/2027,1329,Beauty,South,4,275.56,0.07,Card,2,4.1,1025.08 +12132,11/2/2027,1106,Electronics,East,6,222.73,0.18,Card,8,1.8,1095.83 +12133,11/3/2027,1225,Electronics,East,3,304.96,0.32,COD,8,1.1,622.12 +12134,11/4/2027,1824,Home,West,6,524.14,0.02,COD,4,3.8,3081.94 +12135,11/5/2027,1217,Clothing,East,5,468.88,0.27,COD,7,1.6,1711.41 +12136,11/6/2027,1936,Clothing,East,5,64.13,0.2,COD,7,4.6,256.52 +12137,11/7/2027,1752,Clothing,South,2,535.83,0.15,Card,1,4.1,910.91 +12138,11/8/2027,1505,Home,East,5,290.98,0.26,Wallet,1,3.4,1076.63 +12139,11/9/2027,1258,Electronics,East,3,450.16,0.34,Card,8,2.3,891.32 +12140,11/10/2027,1887,Home,East,2,96.92,0.08,Wallet,11,3.6,178.33 +12141,11/11/2027,1773,Clothing,East,7,407.37,0.05,Card,1,2.9,2709.01 +12142,11/12/2027,1516,Clothing,South,5,153.25,0.32,COD,3,2.2,521.05 +12143,11/13/2027,1772,Clothing,East,7,271.45,0.23,Card,6,4.8,1463.12 +12144,11/14/2027,1053,Electronics,West,1,24.86,0.15,Card,8,1.6,21.13 +12145,11/15/2027,1046,Home,North,1,103.69,0.2,Card,5,4,82.95 +12146,11/16/2027,1726,Clothing,West,1,68.87,0.26,COD,5,4.2,50.96 +12147,11/17/2027,1688,Electronics,North,7,155.25,0.27,Card,4,4.8,793.33 +12148,11/18/2027,1520,Clothing,West,1,73.51,0.32,COD,4,3.2,49.99 +12149,11/19/2027,1098,Beauty,North,6,419.77,0.15,Card,7,3.1,2140.83 +12150,11/20/2027,1019,Clothing,North,1,31.99,0.1,Card,6,4.7,28.79 +12151,11/21/2027,1889,Beauty,North,2,376.38,0.22,Wallet,8,4.2,587.15 +12152,11/22/2027,1752,Electronics,North,4,97.31,0.15,Wallet,11,4.1,330.85 +12153,11/23/2027,1572,Electronics,South,6,567.92,0.21,COD,6,4.2,2691.94 +12154,11/24/2027,1890,Electronics,West,4,560.86,0.15,Card,11,3,1906.92 +12155,11/25/2027,1489,Clothing,North,2,146.92,0.05,Card,10,1.2,279.15 +12156,11/26/2027,1418,Electronics,West,2,374.44,0.16,Wallet,7,1.8,629.06 +12157,11/27/2027,1689,Electronics,East,3,31.38,0.24,Card,10,3.6,71.55 +12158,11/28/2027,1849,Beauty,North,6,560.1,0.28,Wallet,10,2.6,2419.63 +12159,11/29/2027,1061,Home,West,4,320.95,0.17,Card,5,3.4,1065.55 +12160,11/30/2027,1144,Home,South,1,40.29,0.06,Wallet,6,3.2,37.87 +12161,12/1/2027,1215,Electronics,West,2,215.36,0.15,Card,1,2.8,366.11 +12162,12/2/2027,1002,Electronics,North,1,59.96,0.28,Card,3,1.9,43.17 +12163,12/3/2027,1159,Electronics,East,4,244.87,0.14,COD,8,3.9,842.35 +12164,12/4/2027,1738,Home,West,7,406.91,0.24,Wallet,3,4.6,2164.76 +12165,12/5/2027,1997,Beauty,East,6,289.89,0.18,Wallet,1,4.1,1426.26 +12166,12/6/2027,1780,Clothing,South,5,239.48,0.08,COD,3,1.5,1101.61 +12167,12/7/2027,1119,Electronics,West,7,84.71,0.28,COD,4,3.2,426.94 +12168,12/8/2027,1892,Clothing,West,7,158.29,0.03,COD,8,4.3,1074.79 +12169,12/9/2027,1088,Electronics,South,5,73.58,0.18,COD,9,3.4,301.68 +12170,12/10/2027,1328,Clothing,South,2,487.39,0.07,Wallet,4,2.8,906.55 +12171,12/11/2027,1579,Clothing,South,3,94.12,0.02,COD,7,2.1,276.71 +12172,12/12/2027,1909,Home,North,1,363.29,0.18,COD,1,2.3,297.9 +12173,12/13/2027,1356,Electronics,North,2,215.5,0.17,COD,9,2,357.73 +12174,12/14/2027,1609,Electronics,West,3,147.2,0.25,COD,11,1.8,331.2 +12175,12/15/2027,1266,Beauty,West,1,389.09,0.26,Wallet,4,3.4,287.93 +12176,12/16/2027,1616,Electronics,West,4,282.35,0.25,Card,9,3,847.05 +12177,12/17/2027,1951,Electronics,East,7,249.09,0.14,Card,3,3.9,1499.52 +12178,12/18/2027,1322,Electronics,South,7,361.82,0.22,COD,11,2.2,1975.54 +12179,12/19/2027,1634,Electronics,West,5,302.39,0.2,Card,5,2.8,1209.56 +12180,12/20/2027,1987,Clothing,South,3,192.54,0.15,COD,1,3.7,490.98 +12181,12/21/2027,1540,Home,North,1,342.05,0.21,Wallet,11,4.9,270.22 +12182,12/22/2027,1648,Electronics,South,2,406.66,0.33,COD,3,2.4,544.92 +12183,12/23/2027,1194,Clothing,East,1,30.62,0.07,Wallet,5,2.2,28.48 +12184,12/24/2027,1920,Home,East,2,287.53,0.32,Card,6,2.8,391.04 +12185,12/25/2027,1737,Clothing,South,7,48.74,0.02,Wallet,8,3.9,334.36 +12186,12/26/2027,1331,Beauty,East,5,124.05,0.11,COD,1,4.8,552.02 +12187,12/27/2027,1169,Beauty,East,5,342.9,0.1,Card,3,3.1,1543.05 +12188,12/28/2027,1520,Electronics,North,1,521.72,0.22,COD,1,4.2,406.94 +12189,12/29/2027,1462,Home,West,1,531.44,0.05,Wallet,5,2.9,504.87 +12190,12/30/2027,1039,Clothing,East,2,55.92,0.31,Card,8,1.2,77.17 +12191,12/31/2027,1536,Beauty,West,2,260.18,0.29,COD,4,4.6,369.46 +12192,1/1/2028,1260,Clothing,South,3,356.06,0.23,Wallet,11,2.2,822.5 +12193,1/2/2028,1394,Beauty,South,7,101.04,0.16,Card,9,1.6,594.12 +12194,1/3/2028,1954,Home,East,3,462.78,0.33,COD,6,5,930.19 +12195,1/4/2028,1225,Electronics,South,3,450.38,0.29,COD,6,2.4,959.31 +12196,1/5/2028,1983,Clothing,North,1,543.45,0.17,Card,11,1.5,451.06 +12197,1/6/2028,1123,Beauty,East,6,19.96,0.25,COD,5,2.2,89.82 +12198,1/7/2028,1974,Beauty,East,6,141.76,0.2,Card,10,3.1,680.45 +12199,1/8/2028,1037,Electronics,East,6,498.9,0.21,COD,5,1.4,2364.79 +12200,1/9/2028,1327,Home,South,6,407.29,0.12,Card,11,2.4,2150.49 +12201,1/10/2028,1250,Electronics,South,3,538.22,0.16,Card,7,3.7,1356.31 +12202,1/11/2028,1900,Electronics,East,1,48.45,0.03,COD,8,4.7,47 +12203,1/12/2028,1175,Clothing,West,6,364.22,0.13,Card,7,2.6,1901.23 +12204,1/13/2028,1601,Electronics,South,5,347.89,0.24,Card,1,3.3,1321.98 +12205,1/14/2028,1913,Home,South,4,35.87,0.33,Wallet,1,3.5,96.13 +12206,1/15/2028,1453,Electronics,East,5,315.41,0.34,Wallet,10,1.3,1040.85 +12207,1/16/2028,1036,Home,West,1,371.57,0.19,Wallet,6,2.4,300.97 +12208,1/17/2028,1315,Electronics,East,1,126.91,0.21,COD,3,3.7,100.26 +12209,1/18/2028,1687,Electronics,South,4,174.9,0.07,Wallet,9,3.9,650.63 +12210,1/19/2028,1972,Electronics,East,2,389.6,0.24,Wallet,11,2.4,592.19 +12211,1/20/2028,1795,Electronics,East,2,288.96,0.02,Card,7,1,566.36 +12212,1/21/2028,1964,Electronics,East,2,516.94,0.1,Card,2,1,930.49 +12213,1/22/2028,1972,Electronics,West,3,215.29,0.23,Card,3,3.2,497.32 +12214,1/23/2028,1592,Clothing,East,2,171,0.11,COD,8,3.2,304.38 +12215,1/24/2028,1113,Electronics,South,7,591.15,0.02,Wallet,1,3.2,4055.29 +12216,1/25/2028,1039,Clothing,East,3,548.01,0.29,COD,5,3.9,1167.26 +12217,1/26/2028,1300,Clothing,West,3,31.96,0.11,COD,10,4.7,85.33 +12218,1/27/2028,1223,Beauty,North,2,465.88,0.02,Card,1,5,913.12 +12219,1/28/2028,1317,Beauty,West,2,79.55,0.03,Card,9,3.8,154.33 +12220,1/29/2028,1348,Clothing,East,4,31.08,0.09,COD,7,3.1,113.13 +12221,1/30/2028,1114,Electronics,North,6,175.11,0.06,Wallet,5,1.6,987.62 +12222,1/31/2028,1697,Electronics,East,4,172.57,0.27,Card,6,2.5,503.9 +12223,2/1/2028,1322,Beauty,West,3,494.3,0.11,Wallet,11,3.3,1319.78 +12224,2/2/2028,1567,Electronics,North,4,430.74,0.28,Card,3,5,1240.53 +12225,2/3/2028,1039,Electronics,North,3,589.24,0.06,COD,3,1.5,1661.66 +12226,2/4/2028,1865,Electronics,East,1,431.24,0.17,COD,7,4.2,357.93 +12227,2/5/2028,1039,Electronics,East,3,259.68,0.24,Wallet,7,5,592.07 +12228,2/6/2028,1858,Electronics,West,3,423.87,0.23,Card,7,4.2,979.14 +12229,2/7/2028,1972,Home,East,4,599.68,0.21,Card,2,4.1,1894.99 +12230,2/8/2028,1748,Electronics,North,6,430.43,0.32,Card,2,2,1756.15 +12231,2/9/2028,1288,Clothing,South,1,460.58,0.08,Wallet,11,1,423.73 +12232,2/10/2028,1261,Electronics,South,5,563.94,0.17,Card,5,1.9,2340.35 +12233,2/11/2028,1215,Electronics,West,5,81.49,0.31,Card,4,4.2,281.14 +12234,2/12/2028,1146,Beauty,East,6,427.3,0.03,COD,7,1.4,2486.89 +12235,2/13/2028,1335,Electronics,West,5,512.72,0.02,COD,3,2.2,2512.33 +12236,2/14/2028,1167,Home,South,1,573.31,0.08,Wallet,5,3.3,527.45 +12237,2/15/2028,1091,Clothing,South,2,138.42,0.22,Wallet,2,3.3,215.94 +12238,2/16/2028,1352,Electronics,East,1,309.8,0.09,COD,1,3.2,281.92 +12239,2/17/2028,1570,Beauty,North,4,413.12,0.07,Wallet,9,4.9,1536.81 +12240,2/18/2028,1570,Electronics,East,7,159.77,0.16,COD,4,1,939.45 +12241,2/19/2028,1815,Beauty,South,3,366.28,0.21,Card,8,3,868.08 +12242,2/20/2028,1680,Electronics,North,3,165.68,0.09,Wallet,7,3,452.31 +12243,2/21/2028,1780,Beauty,West,4,210.07,0.11,COD,1,2.2,747.85 +12244,2/22/2028,1362,Electronics,South,4,273.29,0.21,Card,10,3.1,863.6 +12245,2/23/2028,1556,Clothing,West,7,324.58,0.33,COD,11,3.7,1522.28 +12246,2/24/2028,1344,Home,North,7,277.88,0.24,Card,7,3.7,1478.32 +12247,2/25/2028,1692,Beauty,West,3,303.52,0.27,Card,2,1.4,664.71 +12248,2/26/2028,1169,Beauty,South,7,189.67,0.13,COD,3,4.2,1155.09 +12249,2/27/2028,1355,Home,East,7,107.99,0.1,Wallet,1,4.7,680.34 +12250,2/28/2028,1190,Beauty,West,7,42.7,0.16,COD,7,1.5,251.08 +12251,2/29/2028,1666,Electronics,South,6,129.65,0.28,Card,3,2.7,560.09 +12252,3/1/2028,1421,Electronics,South,2,355.44,0.16,Wallet,6,3,597.14 +12253,3/2/2028,1699,Electronics,North,7,474.88,0.3,Card,7,1.5,2326.91 +12254,3/3/2028,1006,Clothing,South,2,114.01,0.35,Card,3,3,148.21 +12255,3/4/2028,1132,Clothing,East,2,78.5,0.03,Card,2,1.8,152.29 +12256,3/5/2028,1746,Clothing,East,4,453.33,0.02,Card,9,4.7,1777.05 +12257,3/6/2028,1556,Electronics,West,7,193.52,0.05,Card,9,2.8,1286.91 +12258,3/7/2028,1825,Home,West,3,571.63,0.13,COD,7,5,1491.95 +12259,3/8/2028,1760,Electronics,West,6,432.88,0.05,Wallet,5,1.2,2467.42 +12260,3/9/2028,1030,Electronics,West,3,206.15,0.3,Wallet,4,1.5,432.92 +12261,3/10/2028,1534,Clothing,East,7,184.38,0.01,Wallet,4,2.8,1277.75 +12262,3/11/2028,1425,Home,North,3,321.36,0.11,COD,1,4.5,858.03 +12263,3/12/2028,1393,Home,West,7,61.3,0.06,COD,4,3.2,403.35 +12264,3/13/2028,1671,Clothing,North,6,83.84,0.33,Wallet,7,3.9,337.04 +12265,3/14/2028,1362,Electronics,South,1,117.88,0.23,COD,5,2.7,90.77 +12266,3/15/2028,1436,Clothing,South,6,468.21,0.32,COD,9,1.2,1910.3 +12267,3/16/2028,1669,Electronics,West,1,315.61,0.34,COD,4,3.6,208.3 +12268,3/17/2028,1550,Clothing,South,5,21.18,0.17,Card,11,3.5,87.9 +12269,3/18/2028,1926,Clothing,North,1,409.01,0.08,COD,3,1.3,376.29 +12270,3/19/2028,1081,Electronics,North,2,262.86,0.07,COD,6,1.7,488.92 +12271,3/20/2028,1355,Electronics,South,2,313.85,0.08,COD,4,2.9,577.48 +12272,3/21/2028,1257,Beauty,West,6,140.26,0.25,Card,11,2.8,631.17 +12273,3/22/2028,1717,Beauty,North,2,337.79,0.01,COD,2,4,668.82 +12274,3/23/2028,1588,Clothing,North,2,587.8,0.02,Wallet,5,2.5,1152.09 +12275,3/24/2028,1988,Electronics,East,5,57.97,0.21,Wallet,4,3.7,228.98 +12276,3/25/2028,1523,Electronics,West,2,181.09,0.22,Card,5,3.8,282.5 +12277,3/26/2028,1294,Clothing,East,4,157.15,0.23,Card,9,3.6,484.02 +12278,3/27/2028,1961,Beauty,South,4,160.4,0.13,COD,4,3.4,558.19 +12279,3/28/2028,1223,Electronics,South,4,236.54,0.28,Card,6,4.2,681.24 +12280,3/29/2028,1524,Home,East,1,493.59,0.19,Card,4,3.6,399.81 +12281,3/30/2028,1045,Electronics,West,6,549.02,0.04,Card,1,4.3,3162.36 +12282,3/31/2028,1666,Beauty,North,6,133.3,0.28,Wallet,2,3.5,575.86 +12283,4/1/2028,1112,Clothing,South,3,332.63,0.33,COD,6,1.6,668.59 +12284,4/2/2028,1232,Home,West,5,387.59,0.02,COD,8,2.2,1899.19 +12285,4/3/2028,1016,Electronics,West,4,320.27,0.14,COD,9,2.3,1101.73 +12286,4/4/2028,1359,Clothing,South,4,268.93,0.17,COD,4,1.4,892.85 +12287,4/5/2028,1222,Electronics,South,2,127.31,0.05,Card,6,3.8,241.89 +12288,4/6/2028,1865,Electronics,West,4,300.61,0.3,COD,3,3.4,841.71 +12289,4/7/2028,1699,Beauty,North,2,249.71,0.1,Card,9,3.4,449.48 +12290,4/8/2028,1447,Beauty,East,2,480.4,0.27,COD,8,2.9,701.38 +12291,4/9/2028,1855,Beauty,South,3,461.71,0.23,Card,1,3.2,1066.55 +12292,4/10/2028,1364,Clothing,East,1,93.39,0.21,COD,2,1,73.78 +12293,4/11/2028,1674,Home,West,2,66.78,0.07,COD,10,1.4,124.21 +12294,4/12/2028,1325,Electronics,East,2,546.27,0.08,Card,9,3.7,1005.14 +12295,4/13/2028,1466,Electronics,North,6,328.27,0.02,Card,10,2,1930.23 +12296,4/14/2028,1413,Electronics,West,3,516.81,0.08,Card,3,1.4,1426.4 +12297,4/15/2028,1454,Clothing,North,2,49.02,0.12,COD,3,2.3,86.28 +12298,4/16/2028,1585,Clothing,West,5,323.01,0.29,Card,10,2,1146.69 +12299,4/17/2028,1232,Electronics,North,1,330.56,0.13,Card,9,1.1,287.59 +12300,4/18/2028,1223,Clothing,West,5,518.51,0.26,COD,3,2.6,1918.49 +12301,4/19/2028,1993,Home,North,4,72.1,0.15,COD,10,1.1,245.14 +12302,4/20/2028,1830,Clothing,West,1,155.66,0.27,Card,11,1,113.63 +12303,4/21/2028,1411,Electronics,North,4,252.82,0.34,COD,5,4.2,667.44 +12304,4/22/2028,1571,Electronics,West,6,521.52,0.08,Wallet,6,2.3,2878.79 +12305,4/23/2028,1334,Electronics,North,7,564.25,0.3,Wallet,3,3.3,2764.82 +12306,4/24/2028,1221,Electronics,South,7,595.74,0.22,Card,10,2.2,3252.74 +12307,4/25/2028,1036,Clothing,East,7,576.13,0.29,Wallet,8,4.7,2863.37 +12308,4/26/2028,1988,Clothing,West,2,18.48,0.23,COD,2,3.9,28.46 +12309,4/27/2028,1277,Home,North,3,42.91,0.15,Wallet,6,2.5,109.42 +12310,4/28/2028,1195,Clothing,South,5,101.35,0.08,COD,2,1.8,466.21 +12311,4/29/2028,1915,Home,West,4,219.08,0.02,COD,9,1.6,858.79 +12312,4/30/2028,1863,Electronics,West,2,500.5,0.19,COD,6,4,810.81 +12313,5/1/2028,1483,Clothing,West,7,537.2,0.35,COD,9,2.8,2444.26 +12314,5/2/2028,1241,Home,East,5,124.3,0.26,COD,4,1.9,459.91 +12315,5/3/2028,1323,Electronics,North,5,377.5,0.11,Card,3,4.7,1679.88 +12316,5/4/2028,1730,Electronics,North,6,551.66,0.29,Card,2,2.6,2350.07 +12317,5/5/2028,1191,Beauty,West,6,286.28,0.27,Card,8,3.2,1253.91 +12318,5/6/2028,1016,Electronics,West,7,75.57,0.1,Wallet,4,4.4,476.09 +12319,5/7/2028,1523,Home,West,4,282.82,0.01,COD,2,4.3,1119.97 +12320,5/8/2028,1917,Electronics,South,7,234.84,0.04,COD,11,3.6,1578.12 +12321,5/9/2028,1400,Home,West,7,352.93,0.31,COD,9,4.6,1704.65 +12322,5/10/2028,1905,Electronics,East,2,271.62,0.29,Card,8,4.8,385.7 +12323,5/11/2028,1885,Electronics,North,3,25.15,0.1,Card,5,4.7,67.9 +12324,5/12/2028,1704,Clothing,East,7,596.49,0.1,COD,8,2.4,3757.89 +12325,5/13/2028,1021,Electronics,West,4,332.97,0.28,Wallet,5,2.6,958.95 +12326,5/14/2028,1473,Clothing,South,5,292.07,0.33,Card,7,2,978.43 +12327,5/15/2028,1119,Electronics,West,5,573.45,0.27,Card,5,4.3,2093.09 +12328,5/16/2028,1209,Electronics,West,1,106.18,0.21,Card,5,1.5,83.88 +12329,5/17/2028,1305,Electronics,West,7,125.7,0.08,Card,4,2.4,809.51 +12330,5/18/2028,1269,Electronics,West,2,487.69,0.18,Card,5,1,799.81 +12331,5/19/2028,1703,Beauty,West,1,167.59,0.08,COD,7,3.4,154.18 +12332,5/20/2028,1686,Electronics,North,6,482.55,0.28,Card,3,3.6,2084.62 +12333,5/21/2028,1284,Clothing,East,3,173.85,0.14,Card,4,2,448.53 +12334,5/22/2028,1715,Electronics,South,4,34.41,0.29,COD,8,3.9,97.72 +12335,5/23/2028,1675,Electronics,West,7,317.45,0.13,Wallet,6,2.5,1933.27 +12336,5/24/2028,1762,Beauty,South,5,130.06,0.29,Card,8,2.2,461.71 +12337,5/25/2028,1226,Electronics,North,2,458.34,0.12,COD,11,4.8,806.68 +12338,5/26/2028,1947,Beauty,East,5,390.1,0.15,Card,2,3.4,1657.92 +12339,5/27/2028,1380,Electronics,West,7,555.31,0.22,Wallet,9,2,3031.99 +12340,5/28/2028,1459,Home,North,6,473.05,0.02,COD,7,4.9,2781.53 +12341,5/29/2028,1006,Clothing,North,1,120.75,0.33,Wallet,5,2.6,80.9 +12342,5/30/2028,1028,Beauty,East,7,483.09,0.2,Card,11,3.6,2705.3 +12343,5/31/2028,1906,Clothing,West,1,390.42,0.18,COD,7,3.9,320.14 +12344,6/1/2028,1032,Clothing,East,4,406.34,0.29,COD,2,2.7,1154.01 +12345,6/2/2028,1645,Electronics,East,2,501.87,0.3,Card,11,3.1,702.62 +12346,6/3/2028,1878,Electronics,South,6,350.69,0.18,Card,4,2,1725.39 +12347,6/4/2028,1078,Beauty,South,2,287.61,0.32,COD,7,2.9,391.15 +12348,6/5/2028,1927,Electronics,East,4,387.44,0.02,COD,2,2.2,1518.76 +12349,6/6/2028,1946,Clothing,South,6,189.31,0.04,Card,8,3.2,1090.43 +12350,6/7/2028,1458,Home,North,6,121.82,0.21,COD,10,3.7,577.43 +12351,6/8/2028,1569,Electronics,East,1,375.7,0.12,Card,10,3.5,330.62 +12352,6/9/2028,1982,Beauty,West,1,151.8,0.16,Card,11,4.1,127.51 +12353,6/10/2028,1537,Home,West,1,61.75,0.11,COD,5,1.2,54.96 +12354,6/11/2028,1481,Clothing,North,5,15.32,0.14,Card,5,1.3,65.88 +12355,6/12/2028,1429,Beauty,West,3,370.87,0.29,Card,8,1.8,789.95 +12356,6/13/2028,1737,Electronics,West,7,226.86,0.21,Card,1,4.9,1254.54 +12357,6/14/2028,1284,Electronics,East,1,455.1,0.35,COD,6,4.2,295.82 +12358,6/15/2028,1515,Clothing,North,3,234.48,0.28,COD,2,4.7,506.48 +12359,6/16/2028,1976,Electronics,East,3,299.31,0.1,Wallet,1,2.1,808.14 +12360,6/17/2028,1098,Home,North,2,253.14,0.09,Card,7,3.3,460.71 +12361,6/18/2028,1396,Beauty,East,4,395.59,0.12,COD,4,3.2,1392.48 +12362,6/19/2028,1488,Clothing,East,5,223.34,0.3,Card,1,3.3,781.69 +12363,6/20/2028,1038,Electronics,South,3,578.8,0.01,COD,10,3.9,1719.04 +12364,6/21/2028,1270,Beauty,West,7,562.65,0.08,COD,11,2.6,3623.47 +12365,6/22/2028,1886,Clothing,North,5,511.1,0.32,Card,11,3.7,1737.74 +12366,6/23/2028,1796,Clothing,West,2,553.38,0.22,COD,6,4.2,863.27 +12367,6/24/2028,1156,Clothing,South,1,277.75,0.08,Card,10,2.2,255.53 +12368,6/25/2028,1074,Beauty,North,6,328.81,0.08,Card,6,4.8,1815.03 +12369,6/26/2028,1883,Clothing,South,3,449.12,0.3,Card,3,3.1,943.15 +12370,6/27/2028,1799,Home,West,4,422.25,0.31,COD,6,3.9,1165.41 +12371,6/28/2028,1129,Home,East,6,536.05,0.09,COD,10,3.9,2926.83 +12372,6/29/2028,1686,Electronics,South,2,434.05,0.15,Card,9,3.3,737.88 +12373,6/30/2028,1973,Clothing,South,5,598.76,0.29,Card,6,2.3,2125.6 +12374,7/1/2028,1083,Home,East,7,218.88,0.27,Card,1,3.7,1118.48 +12375,7/2/2028,1021,Clothing,West,1,502.3,0.28,Card,10,1.3,361.66 +12376,7/3/2028,1458,Home,South,5,423.12,0.18,COD,6,4.9,1734.79 +12377,7/4/2028,1538,Beauty,West,4,419.46,0.32,COD,8,1.7,1140.93 +12378,7/5/2028,1706,Clothing,East,3,205.61,0.11,Card,7,2.1,548.98 +12379,7/6/2028,1848,Home,North,4,474.58,0.05,Card,8,4.8,1803.4 +12380,7/7/2028,1381,Home,South,5,541.72,0.25,Wallet,11,1.7,2031.45 +12381,7/8/2028,1747,Home,West,5,142.85,0.19,Card,8,1.7,578.54 +12382,7/9/2028,1439,Clothing,East,6,380.92,0.3,Card,9,4.2,1599.86 +12383,7/10/2028,1603,Electronics,East,4,244.4,0.03,COD,3,2,948.27 +12384,7/11/2028,1988,Clothing,South,4,593.89,0.3,COD,7,1.4,1662.89 +12385,7/12/2028,1020,Home,North,4,295.12,0.1,COD,6,1.9,1062.43 +12386,7/13/2028,1302,Clothing,South,1,148.57,0.23,Wallet,2,4.6,114.4 +12387,7/14/2028,1975,Home,West,7,238.39,0.01,Card,5,2.1,1652.04 +12388,7/15/2028,1868,Clothing,East,5,397.5,0.21,COD,3,3.8,1570.12 +12389,7/16/2028,1954,Clothing,North,2,59.51,0.25,Card,11,2.6,89.26 +12390,7/17/2028,1083,Electronics,West,1,368.11,0.13,COD,5,2,320.26 +12391,7/18/2028,1773,Home,South,1,559.77,0.08,Wallet,11,1.6,514.99 +12392,7/19/2028,1658,Clothing,East,1,512.46,0.19,COD,9,4.9,415.09 +12393,7/20/2028,1952,Electronics,South,6,54.59,0.29,COD,8,3.1,232.55 +12394,7/21/2028,1452,Electronics,North,7,596.13,0.11,Wallet,9,1.5,3713.89 +12395,7/22/2028,1386,Home,North,7,423.76,0.09,Card,9,1.8,2699.35 +12396,7/23/2028,1506,Clothing,North,2,109.93,0.1,COD,11,2.6,197.87 +12397,7/24/2028,1256,Electronics,North,4,22.26,0.33,Wallet,8,3.2,59.66 +12398,7/25/2028,1569,Beauty,North,6,115.2,0.13,COD,8,1.7,601.34 +12399,7/26/2028,1891,Home,South,5,505.33,0,Card,11,2.1,2526.65 +12400,7/27/2028,1933,Beauty,North,3,27.66,0.27,Card,11,4.1,60.58 +12401,7/28/2028,1526,Clothing,North,6,151.39,0.24,Card,6,2.7,690.34 +12402,7/29/2028,1161,Clothing,East,3,458.02,0.04,Card,6,1,1319.1 +12403,7/30/2028,1956,Beauty,North,5,357.87,0.34,COD,6,1.2,1180.97 +12404,7/31/2028,1162,Clothing,East,2,472.9,0.21,Card,10,2.8,747.18 +12405,8/1/2028,1831,Home,East,7,451.5,0.18,Card,6,1.2,2591.61 +12406,8/2/2028,1792,Electronics,East,3,44.6,0.13,Card,11,1.7,116.41 +12407,8/3/2028,1791,Clothing,South,1,537.12,0.31,COD,9,3.9,370.61 +12408,8/4/2028,1523,Electronics,South,6,147.81,0.09,COD,10,2.9,807.04 +12409,8/5/2028,1785,Electronics,West,3,338.73,0.1,COD,1,2.9,914.57 +12410,8/6/2028,1270,Electronics,West,5,391.91,0.04,Card,10,3.4,1881.17 +12411,8/7/2028,1491,Electronics,East,7,113.65,0.27,Card,6,4.2,580.75 +12412,8/8/2028,1207,Beauty,South,1,586.1,0.21,Card,8,1.6,463.02 +12413,8/9/2028,1538,Electronics,North,3,300.57,0.21,Card,1,1.7,712.35 +12414,8/10/2028,1583,Home,West,7,48.72,0.08,Card,11,1.5,313.76 +12415,8/11/2028,1059,Home,South,5,563.3,0.23,COD,11,4.7,2168.7 +12416,8/12/2028,1429,Clothing,North,2,357.97,0.27,Card,6,3.3,522.64 +12417,8/13/2028,1984,Electronics,North,5,424.03,0.13,Wallet,9,1.4,1844.53 +12418,8/14/2028,1656,Home,South,2,322.23,0.28,COD,6,1.9,464.01 +12419,8/15/2028,1604,Clothing,West,7,503.32,0.12,Card,2,3.9,3100.45 +12420,8/16/2028,1308,Home,South,7,34.38,0.27,COD,1,1.1,175.68 +12421,8/17/2028,1519,Home,West,1,172,0.01,COD,4,3.9,170.28 +12422,8/18/2028,1590,Beauty,East,5,289.74,0.19,COD,6,4.6,1173.45 +12423,8/19/2028,1026,Clothing,South,4,59.81,0.34,Wallet,10,1.2,157.9 +12424,8/20/2028,1685,Electronics,South,6,427.96,0.34,Card,10,1.7,1694.72 +12425,8/21/2028,1561,Clothing,West,4,245.29,0.1,Wallet,9,1,883.04 +12426,8/22/2028,1198,Electronics,West,4,174.51,0.15,Card,5,1.4,593.33 +12427,8/23/2028,1386,Beauty,South,4,16.98,0.02,Wallet,7,3.5,66.56 +12428,8/24/2028,1348,Electronics,North,6,436.1,0.31,Card,6,1.2,1805.45 +12429,8/25/2028,1959,Electronics,North,4,502.78,0.2,Card,6,2.7,1608.9 +12430,8/26/2028,1939,Home,North,2,246.1,0.13,COD,9,3,428.21 +12431,8/27/2028,1692,Clothing,East,5,345.07,0.04,Card,5,4.6,1656.34 +12432,8/28/2028,1535,Clothing,East,7,148.2,0.33,Card,2,2.9,695.06 +12433,8/29/2028,1827,Clothing,West,1,378.99,0.19,Card,8,1.6,306.98 +12434,8/30/2028,1377,Beauty,East,4,22.1,0.1,COD,11,2.2,79.56 +12435,8/31/2028,1898,Electronics,North,7,300.86,0.12,Wallet,3,3.7,1853.3 +12436,9/1/2028,1915,Beauty,South,4,391.86,0.09,COD,9,1.4,1426.37 +12437,9/2/2028,1557,Electronics,East,1,552.14,0.21,Wallet,5,1.9,436.19 +12438,9/3/2028,1526,Home,East,1,238.08,0.33,COD,1,5,159.51 +12439,9/4/2028,1152,Home,North,4,462.64,0.3,Card,4,1,1295.39 +12440,9/5/2028,1733,Electronics,East,2,364.65,0.16,Card,9,1.6,612.61 +12441,9/6/2028,1205,Clothing,West,7,557.3,0.29,COD,1,4.4,2769.78 +12442,9/7/2028,1454,Electronics,South,1,248.05,0.15,Card,8,1.4,210.84 +12443,9/8/2028,1272,Home,North,5,201.67,0.09,Card,8,1.1,917.6 +12444,9/9/2028,1893,Clothing,West,7,533.98,0.34,COD,9,1.5,2466.99 +12445,9/10/2028,1235,Clothing,North,5,43.81,0.11,COD,9,3.8,194.95 +12446,9/11/2028,1851,Electronics,West,7,94.79,0.11,Card,6,5,590.54 +12447,9/12/2028,1739,Electronics,South,2,63.21,0.35,Wallet,5,3.4,82.17 +12448,9/13/2028,1520,Electronics,South,6,508.22,0.05,COD,7,1.5,2896.85 +12449,9/14/2028,1677,Electronics,West,3,21.21,0.27,COD,9,1.7,46.45 +12450,9/15/2028,1943,Clothing,West,2,519.07,0.33,Wallet,5,3.2,695.55 +12451,9/16/2028,1955,Beauty,West,4,278.99,0.18,Card,3,3.9,915.09 +12452,9/17/2028,1830,Home,West,3,17.35,0,COD,9,3.7,52.05 +12453,9/18/2028,1725,Clothing,West,4,249.96,0.13,Wallet,10,3.3,869.86 +12454,9/19/2028,1500,Beauty,West,5,124.28,0.04,COD,1,4.9,596.54 +12455,9/20/2028,1116,Home,South,1,380.27,0.15,COD,1,1.8,323.23 +12456,9/21/2028,1385,Beauty,West,7,412.42,0.28,Card,10,1.7,2078.6 +12457,9/22/2028,1343,Clothing,East,4,300.2,0.15,COD,11,4.4,1020.68 +12458,9/23/2028,1583,Electronics,South,5,38.7,0.15,Card,4,2.2,164.48 +12459,9/24/2028,1394,Electronics,North,2,398.84,0.19,Wallet,2,2.3,646.12 +12460,9/25/2028,1063,Home,South,4,507.59,0.2,Wallet,7,3.2,1624.29 +12461,9/26/2028,1716,Electronics,North,5,436.39,0.3,Wallet,2,2.5,1527.36 +12462,9/27/2028,1720,Electronics,North,1,500.53,0.11,COD,7,2.2,445.47 +12463,9/28/2028,1071,Clothing,East,7,132.3,0.29,Card,8,4.7,657.53 +12464,9/29/2028,1788,Clothing,West,4,535,0.2,Card,11,1.5,1712 +12465,9/30/2028,1273,Clothing,West,6,203.48,0.11,Wallet,8,2.6,1086.58 +12466,10/1/2028,1989,Electronics,South,5,22.84,0.1,Card,3,1,102.78 +12467,10/2/2028,1319,Clothing,West,4,508.38,0.13,Card,9,4.2,1769.16 +12468,10/3/2028,1337,Clothing,East,1,565.97,0.22,COD,10,1.7,441.46 +12469,10/4/2028,1365,Beauty,South,7,398.5,0.08,Card,10,4.1,2566.34 +12470,10/5/2028,1494,Home,South,4,150.39,0.32,COD,10,1.6,409.06 +12471,10/6/2028,1606,Beauty,South,4,162.27,0.2,COD,6,2.7,519.26 +12472,10/7/2028,1165,Home,West,7,287.96,0.32,COD,4,3.9,1370.69 +12473,10/8/2028,1543,Clothing,West,6,540.23,0.02,Wallet,8,2.1,3176.55 +12474,10/9/2028,1010,Electronics,West,5,102.51,0.12,Card,4,2.3,451.04 +12475,10/10/2028,1300,Home,South,3,498.19,0.01,Card,4,3.7,1479.62 +12476,10/11/2028,1728,Clothing,South,7,185.41,0.1,Card,11,1.8,1168.08 +12477,10/12/2028,1800,Clothing,North,4,488.02,0.3,Wallet,8,4.8,1366.46 +12478,10/13/2028,1101,Clothing,North,3,553.36,0.01,Card,4,1.8,1643.48 +12479,10/14/2028,1424,Clothing,West,2,265.08,0.15,Card,1,4,450.64 +12480,10/15/2028,1391,Electronics,South,4,228.55,0.04,COD,6,4.2,877.63 +12481,10/16/2028,1778,Clothing,West,3,484.3,0.15,Card,8,2.5,1234.97 +12482,10/17/2028,1213,Electronics,West,2,324.75,0.29,Wallet,3,1.6,461.14 +12483,10/18/2028,1690,Home,North,6,415.4,0.22,Wallet,2,1.7,1944.07 +12484,10/19/2028,1087,Electronics,East,5,379.36,0.26,COD,6,4.9,1403.63 +12485,10/20/2028,1552,Electronics,West,4,104.44,0.12,COD,1,3.9,367.63 +12486,10/21/2028,1400,Clothing,East,5,509.2,0.33,Card,11,2.8,1705.82 +12487,10/22/2028,1587,Home,East,2,129.53,0.25,COD,5,2,194.3 +12488,10/23/2028,1888,Clothing,South,5,560.39,0.15,COD,6,1.1,2381.66 +12489,10/24/2028,1045,Electronics,South,5,161.58,0.15,Card,8,3.7,686.72 +12490,10/25/2028,1671,Clothing,West,7,444.32,0.32,Card,7,4.8,2114.96 +12491,10/26/2028,1462,Electronics,North,1,181.52,0.2,Wallet,6,1.4,145.22 +12492,10/27/2028,1591,Beauty,North,2,200.9,0.25,Card,2,4,301.35 +12493,10/28/2028,1309,Beauty,West,5,196.35,0.15,COD,8,1.6,834.49 +12494,10/29/2028,1085,Clothing,West,3,452.52,0.08,Card,8,4.2,1248.96 +12495,10/30/2028,1091,Electronics,North,2,340.74,0.25,Card,11,2.5,511.11 +12496,10/31/2028,1659,Home,East,1,531.53,0.21,Wallet,5,3.8,419.91 +12497,11/1/2028,1672,Electronics,West,4,194.81,0.18,Card,3,4.7,638.98 +12498,11/2/2028,1713,Clothing,East,6,419.82,0.22,COD,11,3.5,1964.76 +12499,11/3/2028,1935,Electronics,West,5,455.47,0.07,Card,8,4.7,2117.94 +12500,11/4/2028,1927,Beauty,West,3,103.62,0.28,Card,5,1.9,223.82 +12501,11/5/2028,1241,Electronics,East,1,249.34,0.33,Wallet,3,4.9,167.06 +12502,11/6/2028,1864,Clothing,East,2,297.45,0.31,COD,9,4.5,410.48 +12503,11/7/2028,1001,Home,North,6,223.08,0.11,Wallet,9,1.4,1191.25 +12504,11/8/2028,1224,Clothing,West,6,203.44,0.14,Wallet,7,2.7,1049.75 +12505,11/9/2028,1800,Electronics,South,5,416.56,0.28,Wallet,8,4.7,1499.62 +12506,11/10/2028,1744,Beauty,South,1,141.28,0.21,Wallet,5,1.3,111.61 +12507,11/11/2028,1972,Clothing,West,1,429.99,0.19,Card,5,2.8,348.29 +12508,11/12/2028,1925,Clothing,West,3,562,0.32,Wallet,5,3.9,1146.48 +12509,11/13/2028,1928,Electronics,West,4,345.64,0.19,Card,2,1.1,1119.87 +12510,11/14/2028,1588,Clothing,East,4,372.69,0.18,Card,3,4,1222.42 +12511,11/15/2028,1115,Clothing,South,7,55.33,0.01,Card,8,2.4,383.44 +12512,11/16/2028,1665,Electronics,South,4,520.72,0.02,Card,6,2,2041.22 +12513,11/17/2028,1917,Electronics,South,7,181.99,0,COD,9,3.3,1273.93 +12514,11/18/2028,1102,Home,West,6,374.8,0.32,Card,7,3.2,1529.18 +12515,11/19/2028,1193,Electronics,East,6,587.78,0.14,Card,6,4.5,3032.94 +12516,11/20/2028,1165,Electronics,West,2,363.37,0.16,COD,11,3.7,610.46 +12517,11/21/2028,1870,Clothing,North,6,438.96,0.3,Card,4,2.7,1843.63 +12518,11/22/2028,1089,Home,North,6,275.51,0.21,COD,7,3.6,1305.92 +12519,11/23/2028,1685,Electronics,South,1,50.31,0.21,Card,4,4,39.74 +12520,11/24/2028,1121,Clothing,West,2,481.6,0.1,Card,7,4.7,866.88 +12521,11/25/2028,1142,Electronics,North,1,35.47,0.29,Card,5,3.8,25.18 +12522,11/26/2028,1993,Electronics,North,3,424.88,0.06,Card,2,3.2,1198.16 +12523,11/27/2028,1105,Electronics,West,7,28.41,0.02,COD,7,2.5,194.89 +12524,11/28/2028,1886,Home,East,7,519.45,0.07,COD,8,4.6,3381.62 +12525,11/29/2028,1427,Electronics,West,3,107.22,0.09,Card,10,4.2,292.71 +12526,11/30/2028,1304,Electronics,West,7,315.85,0.1,Card,11,1.3,1989.86 +12527,12/1/2028,1871,Clothing,East,2,364.33,0.23,Card,2,3.8,561.07 +12528,12/2/2028,1970,Home,South,2,282.66,0.08,Wallet,6,3.2,520.09 +12529,12/3/2028,1316,Electronics,South,6,214.35,0.24,Card,4,1.4,977.44 +12530,12/4/2028,1962,Clothing,South,7,288.67,0.03,Wallet,5,3.3,1960.07 +12531,12/5/2028,1634,Electronics,East,3,197.18,0.05,COD,1,1.8,561.96 +12532,12/6/2028,1901,Clothing,North,5,271.3,0.18,Card,6,3.8,1112.33 +12533,12/7/2028,1008,Clothing,East,4,224.96,0.32,Wallet,11,2.1,611.89 +12534,12/8/2028,1773,Clothing,West,6,346.23,0.3,COD,8,1.6,1454.17 +12535,12/9/2028,1072,Electronics,East,4,154.19,0.34,COD,2,1.3,407.06 +12536,12/10/2028,1358,Electronics,North,3,593.36,0.23,Card,1,3,1370.66 +12537,12/11/2028,1222,Electronics,North,7,308.01,0.24,COD,9,1.8,1638.61 +12538,12/12/2028,1415,Clothing,West,7,128.58,0.22,Card,2,4.4,702.05 +12539,12/13/2028,1552,Electronics,South,4,294.08,0.22,Card,8,1,917.53 +12540,12/14/2028,1369,Home,North,5,521.85,0.05,Wallet,5,4.4,2478.79 +12541,12/15/2028,1715,Beauty,North,7,27.76,0.19,Wallet,2,3.1,157.4 +12542,12/16/2028,1263,Beauty,North,5,412.54,0.14,Card,5,4.7,1773.92 +12543,12/17/2028,1839,Beauty,West,1,335.56,0.15,COD,9,1.8,285.23 +12544,12/18/2028,1689,Clothing,North,2,114.19,0.18,COD,6,1.4,187.27 +12545,12/19/2028,1859,Home,South,4,493.22,0.04,Card,3,3.5,1893.96 +12546,12/20/2028,1317,Electronics,West,7,230.8,0.13,Card,8,3.8,1405.57 +12547,12/21/2028,1083,Clothing,South,5,186.87,0.02,Card,1,2.5,915.66 +12548,12/22/2028,1317,Clothing,North,7,499.45,0.34,COD,9,1.1,2307.46 +12549,12/23/2028,1110,Clothing,North,2,388.54,0.04,Wallet,9,2.6,746 +12550,12/24/2028,1250,Home,South,2,540.48,0.09,Card,4,1.9,983.67 +12551,12/25/2028,1382,Electronics,West,1,383.48,0.31,COD,8,2.4,264.6 +12552,12/26/2028,1006,Electronics,West,2,448.38,0.17,COD,11,3,744.31 +12553,12/27/2028,1458,Beauty,South,2,504.32,0.05,COD,11,3.8,958.21 +12554,12/28/2028,1083,Electronics,North,6,47.02,0.13,Card,3,4.9,245.44 +12555,12/29/2028,1207,Clothing,East,3,468.99,0.04,COD,6,1.6,1350.69 +12556,12/30/2028,1899,Beauty,South,7,374.02,0.07,Wallet,10,3.7,2434.87 +12557,12/31/2028,1389,Clothing,South,1,55.66,0.02,Card,10,1.9,54.55 +12558,1/1/2029,1313,Clothing,South,1,312.52,0.15,Card,8,1.9,265.64 +12559,1/2/2029,1021,Electronics,North,4,63.24,0.28,Wallet,11,3.5,182.13 +12560,1/3/2029,1409,Electronics,West,2,445.53,0.21,Card,9,4.1,703.94 +12561,1/4/2029,1894,Beauty,North,4,334.7,0.21,Wallet,8,4.9,1057.65 +12562,1/5/2029,1514,Clothing,South,6,572.84,0.07,Card,9,4.1,3196.45 +12563,1/6/2029,1126,Clothing,North,5,122.13,0.12,Card,4,1.6,537.37 +12564,1/7/2029,1808,Electronics,North,2,369.53,0.3,Card,10,1.9,517.34 +12565,1/8/2029,1699,Electronics,South,5,138.78,0.03,Card,1,4,673.08 +12566,1/9/2029,1873,Beauty,North,3,374.23,0.3,Card,7,3.1,785.88 +12567,1/10/2029,1013,Clothing,East,6,437.75,0.17,COD,11,2.2,2180 +12568,1/11/2029,1970,Clothing,North,2,437.55,0.29,Card,10,2.9,621.32 +12569,1/12/2029,1977,Electronics,North,4,491.82,0.11,Wallet,4,4.7,1750.88 +12570,1/13/2029,1011,Home,West,4,514.33,0.12,COD,1,4,1810.44 +12571,1/14/2029,1086,Beauty,West,2,60.2,0.26,COD,3,2.8,89.1 +12572,1/15/2029,1523,Clothing,South,7,215.81,0.27,Card,7,4.9,1102.79 +12573,1/16/2029,1908,Electronics,South,4,416.97,0.08,COD,11,4.2,1534.45 +12574,1/17/2029,1536,Clothing,West,7,306.67,0.34,COD,3,1,1416.82 +12575,1/18/2029,1300,Home,East,2,126.55,0.03,Card,1,1.4,245.51 +12576,1/19/2029,1242,Clothing,North,1,338.34,0.02,Wallet,7,3.2,331.57 +12577,1/20/2029,1121,Beauty,East,4,253.35,0.21,Card,8,2.4,800.59 +12578,1/21/2029,1146,Clothing,East,7,243.17,0.25,Card,5,4.3,1276.64 +12579,1/22/2029,1566,Beauty,West,2,488.71,0.34,COD,6,4.6,645.1 +12580,1/23/2029,1749,Clothing,South,2,253.45,0.14,COD,3,2,435.93 +12581,1/24/2029,1355,Electronics,North,7,30.48,0.01,Card,5,4.1,211.23 +12582,1/25/2029,1684,Electronics,South,4,48.97,0.21,Wallet,3,3.1,154.75 +12583,1/26/2029,1903,Electronics,East,1,515.9,0.1,COD,2,2.6,464.31 +12584,1/27/2029,1732,Beauty,East,4,576.95,0.15,COD,7,4.1,1961.63 +12585,1/28/2029,1630,Home,South,2,417.72,0.17,Card,10,3.3,693.42 +12586,1/29/2029,1308,Home,South,1,228.16,0.02,Wallet,11,3.5,223.6 +12587,1/30/2029,1694,Electronics,West,5,564.08,0.17,Card,7,1.2,2340.93 +12588,1/31/2029,1287,Electronics,South,3,402.74,0.15,COD,8,3.3,1026.99 +12589,2/1/2029,1306,Home,South,4,508.94,0.25,Card,1,2.2,1526.82 +12590,2/2/2029,1811,Clothing,West,6,463.02,0.23,COD,2,3,2139.15 +12591,2/3/2029,1593,Electronics,South,2,236.8,0.06,Card,2,1.9,445.18 +12592,2/4/2029,1965,Clothing,East,1,295.04,0.07,Card,3,3.5,274.39 +12593,2/5/2029,1913,Electronics,South,7,123.89,0.09,Wallet,7,1.6,789.18 +12594,2/6/2029,1722,Electronics,North,7,185.83,0.06,Card,7,1.5,1222.76 +12595,2/7/2029,1661,Clothing,East,7,470.2,0.23,Card,7,1.8,2534.38 +12596,2/8/2029,1548,Electronics,West,1,537.98,0.35,COD,1,4.3,349.69 +12597,2/9/2029,1351,Beauty,East,5,438.81,0.23,COD,2,1.1,1689.42 +12598,2/10/2029,1311,Electronics,West,4,287.13,0.21,Card,8,3.9,907.33 +12599,2/11/2029,1872,Electronics,North,6,65.61,0.14,Card,9,1.2,338.55 +12600,2/12/2029,1058,Electronics,North,7,48.31,0.11,Wallet,10,3.4,300.97 +12601,2/13/2029,1642,Home,East,1,233.98,0.32,COD,7,4.1,159.11 +12602,2/14/2029,1923,Clothing,South,7,286.34,0.34,Card,1,1.9,1322.89 +12603,2/15/2029,1713,Clothing,East,5,371.34,0.17,Wallet,4,1.8,1541.06 +12604,2/16/2029,1754,Electronics,East,2,18.8,0.1,COD,10,2.2,33.84 +12605,2/17/2029,1034,Electronics,North,7,593.99,0.27,Card,8,3.8,3035.29 +12606,2/18/2029,1444,Clothing,West,5,227.9,0.05,Card,5,2,1082.52 +12607,2/19/2029,1092,Home,East,4,511.14,0.27,Card,1,3,1492.53 +12608,2/20/2029,1949,Beauty,South,7,327.96,0.29,Wallet,7,1.5,1629.96 +12609,2/21/2029,1958,Electronics,North,5,91.31,0.04,Card,6,2.8,438.29 +12610,2/22/2029,1206,Clothing,East,1,481.58,0.34,Card,9,3.5,317.84 +12611,2/23/2029,1352,Beauty,East,1,430.25,0.34,Wallet,4,1.3,283.96 +12612,2/24/2029,1902,Clothing,South,3,323.55,0.33,Card,4,4.3,650.34 +12613,2/25/2029,1331,Home,East,5,316.01,0.17,COD,8,4.7,1311.44 +12614,2/26/2029,1816,Electronics,East,2,66.18,0.09,Card,4,1.8,120.45 +12615,2/27/2029,1861,Beauty,East,7,398.67,0.2,COD,3,4,2232.55 +12616,2/28/2029,1724,Home,East,6,548.08,0.15,Card,7,2.3,2795.21 +12617,3/1/2029,1158,Beauty,South,6,69.55,0.07,Card,5,3.7,388.09 +12618,3/2/2029,1953,Home,East,4,169.15,0.15,COD,9,2.2,575.11 +12619,3/3/2029,1956,Clothing,East,3,542.85,0.23,COD,5,4.4,1253.98 +12620,3/4/2029,1023,Beauty,East,5,181.34,0.02,COD,9,2.4,888.57 +12621,3/5/2029,1403,Electronics,North,2,397.56,0.12,COD,6,4.4,699.71 +12622,3/6/2029,1804,Electronics,South,3,327.87,0.01,COD,6,4.1,973.77 +12623,3/7/2029,1515,Home,North,1,363.85,0.26,COD,11,1.8,269.25 +12624,3/8/2029,1731,Home,North,4,258.24,0.22,COD,6,1.6,805.71 +12625,3/9/2029,1363,Beauty,South,7,190.5,0.02,COD,7,4.1,1306.83 +12626,3/10/2029,1381,Electronics,North,7,43.39,0.34,COD,11,2.6,200.46 +12627,3/11/2029,1531,Home,North,7,450.4,0.01,COD,4,4.8,3121.27 +12628,3/12/2029,1955,Home,North,5,451.46,0.21,Card,4,4.8,1783.27 +12629,3/13/2029,1151,Electronics,South,6,407.37,0.27,Card,9,3.8,1784.28 +12630,3/14/2029,1561,Clothing,East,2,391.53,0.28,Card,7,3,563.8 +12631,3/15/2029,1688,Electronics,West,7,157.57,0.01,Wallet,11,1.8,1091.96 +12632,3/16/2029,1946,Electronics,West,7,28.07,0.32,COD,10,4.5,133.61 +12633,3/17/2029,1607,Beauty,South,1,488.1,0.32,COD,6,1.3,331.91 +12634,3/18/2029,1616,Clothing,West,3,302.32,0.2,Card,1,2.5,725.57 +12635,3/19/2029,1419,Home,South,7,194.5,0.17,Card,7,2.3,1130.04 +12636,3/20/2029,1249,Beauty,South,4,74.63,0.02,Wallet,6,4.8,292.55 +12637,3/21/2029,1116,Clothing,West,3,51.69,0.2,Wallet,4,1.5,124.06 +12638,3/22/2029,1865,Home,North,6,219.09,0.14,Card,8,4.6,1130.5 +12639,3/23/2029,1511,Clothing,East,3,485.77,0.27,COD,7,2.8,1063.84 +12640,3/24/2029,1739,Beauty,West,2,552.45,0.14,Card,8,1.2,950.21 +12641,3/25/2029,1577,Electronics,West,1,539.6,0.24,Card,9,3.9,410.1 +12642,3/26/2029,1334,Beauty,West,5,553.2,0.04,COD,1,1.4,2655.36 +12643,3/27/2029,1417,Electronics,West,2,546.02,0.05,COD,3,1.9,1037.44 +12644,3/28/2029,1931,Electronics,South,6,323.43,0.05,COD,2,4.2,1843.55 +12645,3/29/2029,1773,Home,South,4,143.36,0.02,Card,3,1.6,561.97 +12646,3/30/2029,1294,Clothing,East,6,481.86,0.19,Card,11,2.3,2341.84 +12647,3/31/2029,1937,Clothing,East,6,140.02,0.28,Card,11,2.4,604.89 +12648,4/1/2029,1754,Clothing,West,3,171.32,0.21,Card,2,3.4,406.03 +12649,4/2/2029,1370,Home,West,4,151.45,0.2,COD,11,4.2,484.64 +12650,4/3/2029,1185,Electronics,West,2,316.26,0.24,Card,6,1.9,480.72 +12651,4/4/2029,1245,Electronics,East,6,203.27,0.12,Card,9,1.8,1073.27 +12652,4/5/2029,1636,Electronics,West,2,105.18,0.13,Card,2,1.9,183.01 +12653,4/6/2029,1267,Clothing,North,7,280.11,0.11,COD,4,2.5,1745.09 +12654,4/7/2029,1642,Electronics,East,7,526.24,0.25,COD,5,3.1,2762.76 +12655,4/8/2029,1236,Clothing,North,7,348.77,0.06,COD,5,1.1,2294.91 +12656,4/9/2029,1529,Clothing,West,5,528.83,0,Card,1,4.1,2644.15 +12657,4/10/2029,1551,Electronics,South,3,129.59,0.21,Card,6,4.7,307.13 +12658,4/11/2029,1020,Clothing,North,2,112.68,0.33,Card,5,4.4,150.99 +12659,4/12/2029,1910,Beauty,East,7,351.71,0.21,Card,6,1.1,1944.96 +12660,4/13/2029,1736,Electronics,North,7,286.05,0.27,Card,4,3.1,1461.72 +12661,4/14/2029,1866,Clothing,East,4,401.2,0.24,Card,11,4.3,1219.65 +12662,4/15/2029,1793,Home,West,6,479.86,0.17,COD,6,2.4,2389.7 +12663,4/16/2029,1519,Clothing,North,7,454.51,0.25,Wallet,9,4.6,2386.18 +12664,4/17/2029,1099,Home,South,5,566.22,0.29,Card,1,4.5,2010.08 +12665,4/18/2029,1751,Clothing,North,4,247.98,0.08,Wallet,6,1.6,912.57 +12666,4/19/2029,1477,Clothing,South,3,135.74,0.12,Card,1,3,358.35 +12667,4/20/2029,1598,Electronics,East,5,337.28,0.08,COD,7,1.1,1551.49 +12668,4/21/2029,1297,Home,West,5,79.78,0.16,COD,4,2.1,335.08 +12669,4/22/2029,1939,Home,West,5,183.98,0.31,Wallet,6,4.2,634.73 +12670,4/23/2029,1525,Electronics,South,6,136.61,0.12,Card,7,4.9,721.3 +12671,4/24/2029,1333,Clothing,East,7,246.99,0.13,Card,11,4.7,1504.17 +12672,4/25/2029,1001,Beauty,West,1,80.06,0.3,Card,5,1.2,56.04 +12673,4/26/2029,1374,Clothing,East,5,33.63,0.18,Card,9,4.7,137.88 +12674,4/27/2029,1292,Clothing,South,4,399.22,0.19,Wallet,8,4.3,1293.47 +12675,4/28/2029,1836,Beauty,South,4,372,0.3,COD,3,4.5,1041.6 +12676,4/29/2029,1933,Home,North,3,429.39,0.17,COD,1,4.7,1069.18 +12677,4/30/2029,1552,Clothing,West,2,401.33,0.24,COD,11,3,610.02 +12678,5/1/2029,1317,Home,West,2,81.86,0.03,Wallet,10,1.8,158.81 +12679,5/2/2029,1501,Beauty,North,1,185.28,0.06,Card,8,1.1,174.16 +12680,5/3/2029,1827,Clothing,South,6,90.77,0.14,Card,4,1.1,468.37 +12681,5/4/2029,1380,Clothing,South,7,508.14,0.17,Wallet,7,3.6,2952.29 +12682,5/5/2029,1622,Clothing,South,6,451.94,0.34,Card,4,2.3,1789.68 +12683,5/6/2029,1013,Beauty,South,7,132.89,0.34,Card,7,3,613.95 +12684,5/7/2029,1503,Home,East,5,214.67,0.3,Card,1,1.5,751.34 +12685,5/8/2029,1230,Electronics,West,7,580.47,0.11,COD,1,4.9,3616.33 +12686,5/9/2029,1984,Beauty,West,1,362.58,0.34,COD,2,1.5,239.3 +12687,5/10/2029,1083,Clothing,South,3,483.68,0.24,Card,5,2.8,1102.79 +12688,5/11/2029,1129,Electronics,South,3,169.79,0.14,COD,11,2.8,438.06 +12689,5/12/2029,1742,Clothing,South,2,137.88,0.25,COD,10,1,206.82 +12690,5/13/2029,1837,Clothing,West,3,473.59,0.01,Wallet,6,3.7,1406.56 +12691,5/14/2029,1144,Beauty,West,5,416.24,0.05,COD,2,3.2,1977.14 +12692,5/15/2029,1890,Electronics,South,4,413.37,0.29,COD,1,3,1173.97 +12693,5/16/2029,1856,Home,East,3,338.29,0.23,COD,9,4.3,781.45 +12694,5/17/2029,1027,Clothing,North,1,344.69,0.13,Card,7,2,299.88 +12695,5/18/2029,1065,Electronics,North,5,445.38,0.18,Card,8,4.4,1826.06 +12696,5/19/2029,1162,Beauty,North,3,172.95,0.32,COD,6,4.5,352.82 +12697,5/20/2029,1228,Clothing,West,6,221.37,0.22,Card,9,4.3,1036.01 +12698,5/21/2029,1260,Electronics,West,7,524.91,0.14,Card,8,2.4,3159.96 +12699,5/22/2029,1448,Clothing,North,3,195.69,0.04,COD,4,1.7,563.59 +12700,5/23/2029,1423,Beauty,North,6,334.59,0.1,Card,5,2.9,1806.79 +12701,5/24/2029,1459,Electronics,East,5,426.04,0.34,Card,2,2,1405.93 +12702,5/25/2029,1951,Electronics,West,3,599.96,0.15,COD,1,1.2,1529.9 +12703,5/26/2029,1675,Electronics,West,6,269.65,0.17,COD,6,2.1,1342.86 +12704,5/27/2029,1300,Electronics,North,4,265.43,0.17,Wallet,3,2.9,881.23 +12705,5/28/2029,1918,Home,East,2,507.91,0.31,COD,11,1.5,700.92 +12706,5/29/2029,1302,Clothing,East,5,486.22,0.21,COD,4,4.8,1920.57 +12707,5/30/2029,1286,Electronics,North,6,442.68,0.24,Card,1,3.6,2018.62 +12708,5/31/2029,1394,Electronics,North,1,285.99,0.14,Card,6,1.5,245.95 +12709,6/1/2029,1009,Electronics,West,3,204.5,0.01,Card,8,4.2,607.36 +12710,6/2/2029,1706,Beauty,North,6,371.11,0.33,COD,10,4.7,1491.86 +12711,6/3/2029,1629,Electronics,South,7,527.59,0.33,COD,4,2.1,2474.4 +12712,6/4/2029,1269,Beauty,East,6,532.01,0.33,COD,10,1.6,2138.68 +12713,6/5/2029,1591,Clothing,North,6,78.47,0.33,COD,8,2.3,315.45 +12714,6/6/2029,1969,Electronics,South,7,265.58,0.29,Card,11,4.3,1319.93 +12715,6/7/2029,1604,Beauty,East,2,286.86,0.24,COD,10,1.7,436.03 +12716,6/8/2029,1777,Clothing,South,7,586.9,0.3,Card,3,4.1,2875.81 +12717,6/9/2029,1843,Home,South,7,411.63,0.21,Card,11,3.9,2276.31 +12718,6/10/2029,1861,Beauty,North,1,253.24,0.05,COD,7,3.6,240.58 +12719,6/11/2029,1360,Electronics,East,7,30.24,0.14,Wallet,3,2.7,182.04 +12720,6/12/2029,1256,Electronics,South,1,345.75,0.34,Wallet,6,2.5,228.19 +12721,6/13/2029,1132,Home,West,4,71.2,0.12,Wallet,4,1.3,250.62 +12722,6/14/2029,1275,Electronics,East,7,503.15,0.3,Card,6,2.4,2465.43 +12723,6/15/2029,1775,Electronics,West,2,455.22,0.03,Card,7,3.4,883.13 +12724,6/16/2029,1682,Electronics,North,7,284.4,0.12,Card,8,4.6,1751.9 +12725,6/17/2029,1971,Electronics,West,6,266.09,0.12,Card,6,4.3,1404.96 +12726,6/18/2029,1512,Home,East,5,539.94,0.02,Card,4,1.1,2645.71 +12727,6/19/2029,1312,Electronics,South,2,183.75,0.04,COD,9,1.6,352.8 +12728,6/20/2029,1575,Clothing,South,7,160.68,0.07,COD,7,4.4,1046.03 +12729,6/21/2029,1885,Clothing,East,2,564.43,0.29,Wallet,9,4.8,801.49 +12730,6/22/2029,1979,Clothing,South,1,488.41,0.02,Wallet,3,1.2,478.64 +12731,6/23/2029,1283,Electronics,West,4,495.07,0.1,Card,5,3.8,1782.25 +12732,6/24/2029,1120,Home,South,4,129.19,0,Wallet,1,2.5,516.76 +12733,6/25/2029,1106,Electronics,South,2,98.83,0.24,COD,11,2.5,150.22 +12734,6/26/2029,1932,Home,West,2,30.23,0.22,COD,8,3.6,47.16 +12735,6/27/2029,1686,Beauty,West,7,153.67,0.23,COD,1,4.2,828.28 +12736,6/28/2029,1996,Clothing,West,3,467.9,0.13,Card,1,2.1,1221.22 +12737,6/29/2029,1203,Clothing,North,6,155.42,0.07,Wallet,7,3.8,867.24 +12738,6/30/2029,1164,Clothing,West,1,441.53,0.25,COD,11,3.5,331.15 +12739,7/1/2029,1304,Clothing,West,6,162.37,0.28,Wallet,8,3.1,701.44 +12740,7/2/2029,1496,Beauty,North,5,246.25,0.05,Wallet,3,3.4,1169.69 +12741,7/3/2029,1631,Beauty,South,5,590.15,0.17,COD,2,1.1,2449.12 +12742,7/4/2029,1555,Electronics,West,4,158.21,0.09,Card,7,1,575.88 +12743,7/5/2029,1823,Clothing,East,1,235.18,0.06,Card,10,3.2,221.07 +12744,7/6/2029,1155,Beauty,West,6,191.14,0.26,Card,5,3.1,848.66 +12745,7/7/2029,1366,Beauty,West,4,79.13,0.19,Card,1,1.3,256.38 +12746,7/8/2029,1718,Clothing,North,5,301.59,0.08,Wallet,2,3,1387.31 +12747,7/9/2029,1901,Clothing,East,2,236.53,0.11,Card,3,4,421.02 +12748,7/10/2029,1619,Electronics,South,1,421.51,0.34,Wallet,6,3.2,278.2 +12749,7/11/2029,1250,Beauty,South,1,493.29,0.3,COD,1,3.1,345.3 +12750,7/12/2029,1956,Electronics,East,6,333.39,0.31,Card,8,3.9,1380.23 +12751,7/13/2029,1915,Clothing,West,7,33.83,0.16,COD,2,1.7,198.92 +12752,7/14/2029,1881,Electronics,North,3,377.07,0.22,COD,5,2.8,882.34 +12753,7/15/2029,1333,Electronics,East,6,47.4,0.13,COD,8,1.6,247.43 +12754,7/16/2029,1641,Clothing,East,2,375.57,0.03,COD,5,3.1,728.61 +12755,7/17/2029,1968,Beauty,South,7,415.74,0.14,Card,8,3.4,2502.75 +12756,7/18/2029,1510,Electronics,North,7,130.69,0.21,COD,6,1.5,722.72 +12757,7/19/2029,1292,Clothing,East,7,494.32,0.1,COD,7,1.3,3114.22 +12758,7/20/2029,1019,Electronics,North,2,547.98,0.3,COD,8,1.7,767.17 +12759,7/21/2029,1281,Electronics,West,4,490.66,0.05,Wallet,3,3.3,1864.51 +12760,7/22/2029,1796,Clothing,South,1,193.49,0.13,Card,5,1.8,168.34 +12761,7/23/2029,1000,Clothing,West,4,358.19,0.04,Card,10,2.1,1375.45 +12762,7/24/2029,1118,Electronics,North,2,550.17,0.14,COD,7,3.8,946.29 +12763,7/25/2029,1034,Electronics,West,3,202.59,0.01,Wallet,9,2,601.69 +12764,7/26/2029,1197,Electronics,South,1,494.72,0.1,Card,6,2.6,445.25 +12765,7/27/2029,1484,Electronics,North,2,20.54,0.14,Card,10,4.7,35.33 +12766,7/28/2029,1756,Beauty,East,3,17.13,0.17,Card,1,4.3,42.65 +12767,7/29/2029,1058,Beauty,West,6,459.43,0.19,Card,11,2,2232.83 +12768,7/30/2029,1836,Electronics,South,5,460.45,0.1,Card,8,3.4,2072.02 +12769,7/31/2029,1160,Clothing,East,7,476.55,0.18,Card,6,3.7,2735.4 +12770,8/1/2029,1690,Beauty,South,2,559.07,0.18,COD,1,4.6,916.87 +12771,8/2/2029,1205,Electronics,North,5,83.98,0.11,Card,4,3.2,373.71 +12772,8/3/2029,1011,Home,North,4,150.71,0.29,Card,6,3.2,428.02 +12773,8/4/2029,1489,Beauty,West,5,543.68,0.19,Card,10,4.6,2201.9 +12774,8/5/2029,1275,Electronics,South,2,118.68,0.12,Wallet,1,1.2,208.88 +12775,8/6/2029,1692,Electronics,South,5,414.1,0.33,COD,10,3.5,1387.24 +12776,8/7/2029,1241,Beauty,South,7,325.32,0.3,Wallet,5,2.7,1594.07 +12777,8/8/2029,1215,Clothing,North,1,63.67,0.34,COD,3,4.6,42.02 +12778,8/9/2029,1250,Electronics,West,2,181.88,0.24,Card,7,4.8,276.46 +12779,8/10/2029,1810,Electronics,South,3,319.42,0.13,Card,8,1.7,833.69 +12780,8/11/2029,1125,Clothing,South,5,513.62,0.1,COD,3,2.1,2311.29 +12781,8/12/2029,1993,Home,East,1,428.91,0.23,COD,10,2.1,330.26 +12782,8/13/2029,1216,Home,South,7,378.8,0.34,COD,3,1.4,1750.06 +12783,8/14/2029,1305,Beauty,West,4,305.18,0.22,COD,11,2.9,952.16 +12784,8/15/2029,1796,Electronics,East,4,189.73,0.31,COD,3,3.1,523.65 +12785,8/16/2029,1184,Clothing,East,7,84.76,0.12,Card,11,3.3,522.12 +12786,8/17/2029,1038,Clothing,East,5,254.31,0.14,Wallet,6,3.7,1093.53 +12787,8/18/2029,1222,Clothing,North,4,31.68,0.32,COD,6,1.3,86.17 +12788,8/19/2029,1183,Electronics,East,3,138.47,0.26,Card,3,3.5,307.4 +12789,8/20/2029,1494,Beauty,South,2,268,0.34,COD,6,4.7,353.76 +12790,8/21/2029,1426,Beauty,North,1,259.88,0.27,COD,9,2.8,189.71 +12791,8/22/2029,1177,Clothing,North,6,40.91,0.16,Card,11,1.4,206.19 +12792,8/23/2029,1918,Clothing,North,5,359.6,0.19,Card,8,1.3,1456.38 +12793,8/24/2029,1427,Electronics,North,4,336.57,0.32,Card,11,2.1,915.47 +12794,8/25/2029,1293,Clothing,North,2,60.69,0.19,Card,7,4,98.32 +12795,8/26/2029,1851,Home,North,6,566.75,0.09,Card,7,2,3094.46 +12796,8/27/2029,1150,Clothing,North,3,73.14,0.15,Card,8,4.3,186.51 +12797,8/28/2029,1383,Beauty,East,4,515.08,0.18,Card,7,4.3,1689.46 +12798,8/29/2029,1637,Clothing,West,4,15.18,0.03,Card,3,2.8,58.9 +12799,8/30/2029,1812,Clothing,South,1,531.13,0.26,Wallet,8,2.2,393.04 +12800,8/31/2029,1307,Home,South,3,26.54,0.04,Card,8,3.4,76.44 +12801,9/1/2029,1335,Electronics,East,3,458.32,0.14,Card,1,4.2,1182.47 +12802,9/2/2029,1945,Clothing,East,5,226.59,0.28,Card,10,1.3,815.72 +12803,9/3/2029,1745,Electronics,North,6,446.86,0.16,COD,5,4.8,2252.17 +12804,9/4/2029,1891,Clothing,West,1,250.02,0.29,Card,5,3.6,177.51 +12805,9/5/2029,1374,Home,North,5,56.48,0.12,Card,1,2.6,248.51 +12806,9/6/2029,1007,Clothing,East,1,463.99,0.34,Card,6,3,306.23 +12807,9/7/2029,1340,Home,North,3,56.68,0.07,Wallet,6,2.5,158.14 +12808,9/8/2029,1128,Clothing,South,1,554.44,0.01,COD,4,2.7,548.9 +12809,9/9/2029,1775,Electronics,South,1,44.82,0.31,Card,6,3.4,30.93 +12810,9/10/2029,1668,Home,North,1,295.41,0.26,Card,6,1.2,218.6 +12811,9/11/2029,1351,Electronics,West,2,437.98,0.08,Card,1,1.7,805.88 +12812,9/12/2029,1357,Electronics,North,2,245.05,0.34,Card,5,1.9,323.47 +12813,9/13/2029,1516,Clothing,North,6,142.08,0.18,COD,2,2.6,699.03 +12814,9/14/2029,1494,Electronics,West,6,459.07,0.33,COD,7,2.5,1845.46 +12815,9/15/2029,1085,Electronics,West,7,473.81,0.18,COD,9,3.9,2719.67 +12816,9/16/2029,1174,Clothing,West,3,554.78,0.17,Card,9,2,1381.4 +12817,9/17/2029,1801,Clothing,South,1,235.06,0.16,COD,11,1.2,197.45 +12818,9/18/2029,1192,Clothing,North,3,311.16,0.12,Card,9,1.2,821.46 +12819,9/19/2029,1310,Beauty,East,2,227.43,0.19,Card,11,1,368.44 +12820,9/20/2029,1118,Clothing,West,1,165.39,0.16,COD,7,1.2,138.93 +12821,9/21/2029,1217,Beauty,West,5,454.35,0.01,Card,7,4.4,2249.03 +12822,9/22/2029,1426,Electronics,North,2,213.7,0.09,COD,1,3.8,388.93 +12823,9/23/2029,1969,Clothing,East,2,265.47,0.07,Wallet,11,5,493.77 +12824,9/24/2029,1413,Beauty,North,2,251.15,0.3,Card,11,1.1,351.61 +12825,9/25/2029,1113,Clothing,North,7,431.91,0.21,Wallet,6,4.4,2388.46 +12826,9/26/2029,1977,Home,West,1,551.91,0.27,Card,5,3.8,402.89 +12827,9/27/2029,1144,Clothing,West,6,405.05,0.33,Card,8,3.6,1628.3 +12828,9/28/2029,1537,Electronics,South,4,290.88,0.23,COD,8,2.4,895.91 +12829,9/29/2029,1647,Clothing,East,5,470.83,0.34,COD,11,2.5,1553.74 +12830,9/30/2029,1302,Clothing,East,5,389.97,0.11,Card,4,4.4,1735.37 +12831,10/1/2029,1743,Beauty,West,3,50.46,0.07,COD,1,3.9,140.78 +12832,10/2/2029,1880,Electronics,West,1,70.96,0.14,Wallet,6,3.7,61.03 +12833,10/3/2029,1587,Beauty,West,6,37.18,0.16,Card,10,1.1,187.39 +12834,10/4/2029,1986,Beauty,East,2,282.24,0.31,Wallet,1,1.7,389.49 +12835,10/5/2029,1839,Electronics,South,4,498.12,0.2,COD,5,4.9,1593.98 +12836,10/6/2029,1344,Electronics,East,1,198.15,0.1,Wallet,5,2.8,178.34 +12837,10/7/2029,1813,Beauty,West,1,239.73,0.26,Card,3,4.1,177.4 +12838,10/8/2029,1963,Beauty,West,7,547.04,0.18,COD,5,2.6,3140.01 +12839,10/9/2029,1800,Clothing,South,6,504.59,0.06,Card,6,4.1,2845.89 +12840,10/10/2029,1000,Electronics,North,4,404.05,0.2,Wallet,5,1.5,1292.96 +12841,10/11/2029,1146,Clothing,North,2,171.08,0.32,COD,1,1.2,232.67 +12842,10/12/2029,1286,Home,East,1,83.47,0.29,Card,7,2.9,59.26 +12843,10/13/2029,1975,Electronics,North,5,24.39,0.21,Card,3,3.4,96.34 +12844,10/14/2029,1653,Home,North,5,77.6,0.13,Wallet,7,2.3,337.56 +12845,10/15/2029,1052,Electronics,East,4,186.17,0.03,COD,5,3.9,722.34 +12846,10/16/2029,1303,Electronics,West,2,337.8,0.16,Card,3,3,567.5 +12847,10/17/2029,1068,Clothing,North,4,52.44,0.26,Card,11,4.7,155.22 +12848,10/18/2029,1360,Clothing,West,1,94.69,0.13,Wallet,6,1.3,82.38 +12849,10/19/2029,1601,Electronics,East,7,120.93,0.08,Card,1,1.3,778.79 +12850,10/20/2029,1957,Clothing,West,7,384.71,0.33,Card,6,4.6,1804.29 +12851,10/21/2029,1219,Electronics,West,5,375.24,0.29,Wallet,4,3.7,1332.1 +12852,10/22/2029,1961,Electronics,East,7,337.2,0.22,Card,4,3.7,1841.11 +12853,10/23/2029,1703,Electronics,West,3,161.54,0.05,Card,5,1.1,460.39 +12854,10/24/2029,1965,Beauty,North,4,232.11,0.05,Card,9,4.8,882.02 +12855,10/25/2029,1574,Clothing,North,7,71.56,0.04,Wallet,1,4.1,480.88 +12856,10/26/2029,1584,Clothing,North,3,147.48,0.22,Card,3,4.1,345.1 +12857,10/27/2029,1160,Clothing,North,3,540.16,0.04,COD,11,4.6,1555.66 +12858,10/28/2029,1680,Beauty,West,6,588.12,0.29,Wallet,4,3.3,2505.39 +12859,10/29/2029,1088,Electronics,North,5,393.88,0.35,Card,2,2.6,1280.11 +12860,10/30/2029,1687,Home,West,4,551.34,0.13,Wallet,9,2.9,1918.66 +12861,10/31/2029,1780,Home,South,3,391,0.16,Card,11,4.1,985.32 +12862,11/1/2029,1584,Clothing,West,1,34.42,0.25,COD,7,4.1,25.82 +12863,11/2/2029,1756,Electronics,North,7,598.11,0.33,Card,1,3.4,2805.14 +12864,11/3/2029,1588,Home,South,6,72.89,0.31,COD,9,1.9,301.76 +12865,11/4/2029,1158,Electronics,East,2,414.35,0.02,Card,6,4.3,812.13 +12866,11/5/2029,1488,Clothing,West,7,162.91,0.06,Card,2,3.6,1071.95 +12867,11/6/2029,1970,Home,North,7,244.31,0.26,Wallet,1,1.9,1265.53 +12868,11/7/2029,1323,Electronics,North,7,392.87,0.24,Card,6,2.9,2090.07 +12869,11/8/2029,1609,Home,North,6,270.35,0.05,Wallet,7,5,1541 +12870,11/9/2029,1380,Electronics,East,2,161.57,0.18,Card,10,2.3,264.97 +12871,11/10/2029,1101,Home,South,5,210.65,0.27,Card,6,1.5,768.87 +12872,11/11/2029,1493,Clothing,South,4,214.81,0.08,Wallet,7,1.1,790.5 +12873,11/12/2029,1643,Electronics,North,4,576.2,0.3,Card,6,1.7,1613.36 +12874,11/13/2029,1613,Electronics,West,2,482.19,0.02,Wallet,8,1.7,945.09 +12875,11/14/2029,1018,Beauty,North,7,283.25,0.27,COD,2,4.4,1447.41 +12876,11/15/2029,1453,Electronics,North,1,131.9,0.22,Card,9,1.6,102.88 +12877,11/16/2029,1481,Electronics,West,2,489.44,0.11,COD,9,4.5,871.2 +12878,11/17/2029,1593,Electronics,North,2,106.95,0.25,Card,11,1.3,160.43 +12879,11/18/2029,1396,Clothing,East,4,138.12,0.27,Card,9,4.6,403.31 +12880,11/19/2029,1278,Clothing,North,3,229.12,0.33,COD,7,2,460.53 +12881,11/20/2029,1850,Electronics,East,1,530,0.13,Card,9,3.4,461.1 +12882,11/21/2029,1364,Electronics,North,4,92.1,0.24,Card,1,1.6,279.98 +12883,11/22/2029,1330,Electronics,South,6,86.51,0.21,Wallet,3,2.6,410.06 +12884,11/23/2029,1640,Electronics,West,2,303.98,0.18,Wallet,2,1.3,498.53 +12885,11/24/2029,1343,Clothing,South,3,176.7,0.31,COD,11,3.3,365.77 +12886,11/25/2029,1821,Home,North,1,347.71,0,COD,1,2.4,347.71 +12887,11/26/2029,1454,Electronics,North,5,279.21,0.1,COD,5,4.4,1256.44 +12888,11/27/2029,1600,Clothing,East,1,269.45,0.19,COD,1,1.7,218.25 +12889,11/28/2029,1724,Clothing,North,1,80.5,0.06,Card,3,2.1,75.67 +12890,11/29/2029,1654,Beauty,North,7,97.51,0.32,Wallet,6,1.7,464.15 +12891,11/30/2029,1064,Beauty,North,2,495.33,0.23,Card,6,3.3,762.81 +12892,12/1/2029,1075,Home,South,2,533.24,0.17,COD,3,1.4,885.18 +12893,12/2/2029,1710,Electronics,East,5,152.29,0.29,Wallet,4,1.8,540.63 +12894,12/3/2029,1142,Electronics,South,5,81.37,0.16,COD,7,3.7,341.75 +12895,12/4/2029,1916,Electronics,East,5,46.25,0.2,Wallet,6,1.3,185 +12896,12/5/2029,1914,Electronics,South,4,370.85,0,Card,11,4,1483.4 +12897,12/6/2029,1827,Clothing,North,4,433.48,0.13,Card,2,1.4,1508.51 +12898,12/7/2029,1604,Home,South,2,233.09,0.05,Wallet,9,3.3,442.87 +12899,12/8/2029,1472,Beauty,South,2,412.61,0.24,Card,6,5,627.17 +12900,12/9/2029,1416,Home,East,5,432.08,0.17,COD,2,1.7,1793.13 +12901,12/10/2029,1304,Clothing,East,4,562.18,0.11,Card,7,2,2001.36 +12902,12/11/2029,1735,Home,South,3,52.95,0.16,COD,11,4.6,133.43 +12903,12/12/2029,1496,Electronics,East,4,127.49,0.07,COD,11,3.5,474.26 +12904,12/13/2029,1290,Electronics,East,2,55.09,0.32,Card,10,3,74.92 +12905,12/14/2029,1939,Home,East,4,522.78,0.02,COD,10,3.3,2049.3 +12906,12/15/2029,1101,Electronics,West,2,478.66,0.3,COD,4,2.2,670.12 +12907,12/16/2029,1985,Clothing,East,5,351.17,0.18,Card,1,4.4,1439.8 +12908,12/17/2029,1266,Electronics,West,7,63.94,0.22,COD,10,4,349.11 +12909,12/18/2029,1866,Home,West,5,174.89,0.11,COD,9,3.6,778.26 +12910,12/19/2029,1967,Home,East,5,189.17,0.34,Card,11,4.7,624.26 +12911,12/20/2029,1621,Electronics,South,3,343.03,0.1,COD,10,3.3,926.18 +12912,12/21/2029,1973,Home,East,7,165.96,0.21,Card,8,3,917.76 +12913,12/22/2029,1841,Electronics,North,3,57.68,0.35,Card,5,4.9,112.48 +12914,12/23/2029,1961,Clothing,South,2,442.5,0.31,COD,3,1.8,610.65 +12915,12/24/2029,1941,Home,West,1,189.96,0.19,COD,4,1.6,153.87 +12916,12/25/2029,1776,Home,West,6,279.64,0.35,Wallet,3,1.6,1090.6 +12917,12/26/2029,1002,Beauty,South,3,89.68,0.25,Card,10,5,201.78 +12918,12/27/2029,1084,Electronics,South,2,484.49,0.07,Card,8,3.6,901.15 +12919,12/28/2029,1793,Home,East,7,345.84,0.14,Card,5,2.2,2081.96 +12920,12/29/2029,1327,Clothing,West,4,542.43,0.12,COD,11,2,1909.35 +12921,12/30/2029,1815,Beauty,North,7,304.85,0.12,Card,8,1.2,1877.88 +12922,12/31/2029,1449,Electronics,East,5,565.73,0.27,COD,1,1.5,2064.91 +12923,1/1/2030,1453,Home,South,5,536.74,0.2,Card,9,4.6,2146.96 +12924,1/2/2030,1923,Clothing,West,5,352.23,0.01,Wallet,11,4,1743.54 +12925,1/3/2030,1628,Electronics,South,2,561.33,0.31,COD,10,4.8,774.64 +12926,1/4/2030,1220,Clothing,South,5,204.01,0.1,Wallet,3,2.7,918.04 +12927,1/5/2030,1153,Electronics,South,3,228.9,0.35,Card,1,3.4,446.36 +12928,1/6/2030,1664,Clothing,East,4,41.6,0.33,COD,3,2.9,111.49 +12929,1/7/2030,1011,Beauty,North,5,359.68,0.33,COD,2,4.5,1204.93 +12930,1/8/2030,1132,Clothing,North,2,437.33,0.28,COD,7,5,629.76 +12931,1/9/2030,1993,Clothing,West,4,467.51,0.08,Card,10,4.7,1720.44 +12932,1/10/2030,1303,Clothing,South,5,102.64,0.19,Wallet,4,3.4,415.69 +12933,1/11/2030,1292,Electronics,North,1,274.83,0.08,Card,7,1.2,252.84 +12934,1/12/2030,1974,Electronics,South,5,118.46,0.09,Card,3,3.5,538.99 +12935,1/13/2030,1299,Clothing,West,6,402.34,0.21,COD,6,1.4,1907.09 +12936,1/14/2030,1739,Electronics,South,7,107.4,0.01,COD,7,1.6,744.28 +12937,1/15/2030,1782,Electronics,North,3,543.94,0.34,COD,7,1.8,1077 +12938,1/16/2030,1042,Clothing,South,4,149.92,0.32,Card,5,2.5,407.78 +12939,1/17/2030,1943,Electronics,North,3,185.47,0.13,Card,6,3.4,484.08 +12940,1/18/2030,1342,Electronics,West,1,512.78,0.18,COD,3,2.3,420.48 +12941,1/19/2030,1325,Clothing,South,1,283.2,0.16,Card,4,2.8,237.89 +12942,1/20/2030,1813,Electronics,North,6,29.04,0.31,Wallet,11,1.2,120.23 +12943,1/21/2030,1497,Beauty,West,3,304.33,0.24,Wallet,6,3.5,693.87 +12944,1/22/2030,1363,Beauty,South,4,64.46,0.1,COD,3,3.6,232.06 +12945,1/23/2030,1890,Home,West,1,591.43,0.16,Card,7,1.4,496.8 +12946,1/24/2030,1426,Electronics,North,1,359.05,0.15,Wallet,3,4.1,305.19 +12947,1/25/2030,1020,Home,South,5,165.07,0.34,Card,9,3.6,544.73 +12948,1/26/2030,1406,Home,South,6,344.77,0.06,Card,4,3,1944.5 +12949,1/27/2030,1618,Home,South,7,59.97,0.03,Card,2,3.2,407.2 +12950,1/28/2030,1335,Electronics,West,2,482.94,0.31,Card,6,3,666.46 +12951,1/29/2030,1814,Clothing,West,7,556.32,0.31,Wallet,9,1.2,2687.03 +12952,1/30/2030,1116,Home,North,7,526.55,0.31,COD,10,3.9,2543.24 +12953,1/31/2030,1123,Clothing,East,1,214.93,0.18,Wallet,10,3,176.24 +12954,2/1/2030,1398,Clothing,South,4,205.57,0.23,Card,2,1.7,633.16 +12955,2/2/2030,1792,Clothing,South,4,35.53,0.2,COD,4,3.7,113.7 +12956,2/3/2030,1803,Clothing,North,5,396.07,0.02,Wallet,5,3.8,1940.74 +12957,2/4/2030,1714,Electronics,South,4,327.92,0.21,Wallet,9,1.9,1036.23 +12958,2/5/2030,1050,Clothing,West,5,283.72,0,COD,7,4.2,1418.6 +12959,2/6/2030,1782,Electronics,West,1,545.96,0.11,Card,5,2.8,485.9 +12960,2/7/2030,1323,Clothing,South,1,113.21,0.33,COD,6,1.7,75.85 +12961,2/8/2030,1788,Electronics,South,7,20.65,0.11,Card,9,3.6,128.65 +12962,2/9/2030,1140,Clothing,West,1,57.89,0.33,COD,4,3.4,38.79 +12963,2/10/2030,1469,Electronics,South,1,145.67,0.09,COD,2,1.7,132.56 +12964,2/11/2030,1786,Home,West,2,34.47,0.11,COD,5,4.5,61.36 +12965,2/12/2030,1801,Home,East,6,309.16,0.22,COD,7,4.4,1446.87 +12966,2/13/2030,1333,Electronics,East,7,198.74,0.27,COD,4,4.3,1015.56 +12967,2/14/2030,1892,Electronics,South,7,120.58,0.18,Card,1,2.6,692.13 +12968,2/15/2030,1963,Electronics,South,6,453.8,0.31,COD,8,4.3,1878.73 +12969,2/16/2030,1372,Beauty,South,2,134.6,0.01,COD,5,4.4,266.51 +12970,2/17/2030,1563,Clothing,West,1,417.25,0.32,Card,10,5,283.73 +12971,2/18/2030,1493,Clothing,East,4,219.32,0.07,Card,2,4.8,815.87 +12972,2/19/2030,1538,Electronics,East,5,314.42,0.31,Card,3,2.5,1084.75 +12973,2/20/2030,1668,Clothing,North,7,561.31,0.14,Card,10,1.8,3379.09 +12974,2/21/2030,1750,Beauty,North,6,36.85,0.29,Wallet,10,2.2,156.98 +12975,2/22/2030,1155,Home,South,3,307.65,0.24,Card,5,3,701.44 +12976,2/23/2030,1290,Clothing,West,5,514.84,0.06,COD,11,4.2,2419.75 +12977,2/24/2030,1647,Electronics,South,3,358.96,0.32,COD,4,3.9,732.28 +12978,2/25/2030,1143,Electronics,East,3,176.97,0.09,Card,9,4.2,483.13 +12979,2/26/2030,1105,Electronics,South,7,247.64,0.09,Wallet,9,2.5,1577.47 +12980,2/27/2030,1419,Electronics,South,1,412.96,0.28,Card,8,2,297.33 +12981,2/28/2030,1669,Electronics,East,3,536.12,0.04,Wallet,2,1.1,1544.03 +12982,3/1/2030,1657,Electronics,East,1,39.02,0.08,Card,5,3.5,35.9 +12983,3/2/2030,1001,Clothing,East,2,56.85,0.18,Card,8,4.2,93.23 +12984,3/3/2030,1944,Beauty,East,4,205.16,0.29,Card,8,4.6,582.65 +12985,3/4/2030,1588,Clothing,North,3,151.18,0.05,Card,7,2.9,430.86 +12986,3/5/2030,1643,Home,West,7,169.98,0.19,Wallet,4,4.7,963.79 +12987,3/6/2030,1089,Home,West,4,144.44,0.25,Card,3,1.8,433.32 +12988,3/7/2030,1344,Electronics,East,1,129.56,0.3,COD,8,3.1,90.69 +12989,3/8/2030,1349,Home,West,3,91.42,0.33,Card,8,1.9,183.75 +12990,3/9/2030,1458,Electronics,West,5,561.36,0.27,Wallet,10,1.8,2048.96 +12991,3/10/2030,1262,Clothing,West,7,99.35,0.23,COD,5,4.8,535.5 +12992,3/11/2030,1350,Electronics,West,2,134.58,0.15,COD,3,4.3,228.79 +12993,3/12/2030,1107,Beauty,East,6,159.07,0.04,Card,5,1,916.24 +12994,3/13/2030,1585,Electronics,South,2,560.81,0.25,COD,4,2.1,841.21 +12995,3/14/2030,1038,Electronics,South,3,457.09,0.35,Card,8,1.8,891.33 +12996,3/15/2030,1908,Beauty,South,7,476.97,0.26,Card,2,1.6,2470.7 +12997,3/16/2030,1158,Electronics,North,2,76.28,0.01,COD,11,3.8,151.03 +12998,3/17/2030,1582,Home,West,6,504.24,0.17,Wallet,8,3.3,2511.12 +12999,3/18/2030,1958,Home,East,5,253.79,0.22,Wallet,10,2.8,989.78 +13000,3/19/2030,1311,Home,East,4,168.75,0.24,COD,6,1.8,513 +13001,3/20/2030,1240,Beauty,North,5,351.81,0.25,COD,4,2.1,1319.29 +13002,3/21/2030,1937,Beauty,East,2,495.98,0.2,Wallet,11,2.4,793.57 +13003,3/22/2030,1444,Electronics,South,6,470.51,0.08,COD,3,4.1,2597.22 +13004,3/23/2030,1297,Home,North,4,535.65,0.33,Card,10,5,1435.54 +13005,3/24/2030,1951,Clothing,East,7,557.96,0.24,Wallet,5,1.7,2968.35 +13006,3/25/2030,1035,Clothing,North,6,154.3,0.08,Card,6,2.4,851.74 +13007,3/26/2030,1083,Electronics,North,5,262.96,0.11,Card,1,2.1,1170.17 +13008,3/27/2030,1451,Home,East,1,23.56,0.32,COD,1,1.2,16.02 +13009,3/28/2030,1885,Beauty,South,1,529.4,0.31,Card,11,1.9,365.29 +13010,3/29/2030,1774,Beauty,East,4,105.42,0.14,Card,10,4.6,362.64 +13011,3/30/2030,1821,Clothing,West,4,518.96,0.01,Card,3,4.4,2055.08 +13012,3/31/2030,1384,Electronics,West,4,207.69,0.02,COD,2,1.7,814.14 +13013,4/1/2030,1171,Clothing,East,1,230.36,0.1,Wallet,1,2.5,207.32 +13014,4/2/2030,1375,Home,South,5,37.89,0.22,Card,11,2.2,147.77 +13015,4/3/2030,1684,Home,West,4,206.22,0.2,Card,8,1.6,659.9 +13016,4/4/2030,1361,Clothing,West,1,534.69,0.22,Card,1,3.5,417.06 +13017,4/5/2030,1558,Electronics,East,4,29.95,0.25,COD,10,3.2,89.85 +13018,4/6/2030,1890,Clothing,East,4,252.7,0.01,COD,8,2.7,1000.69 +13019,4/7/2030,1140,Clothing,East,6,33.37,0.04,COD,5,4.4,192.21 +13020,4/8/2030,1886,Beauty,North,4,231.99,0.13,Card,4,3.5,807.33 +13021,4/9/2030,1917,Clothing,North,1,115.99,0.05,COD,8,2,110.19 +13022,4/10/2030,1117,Electronics,North,5,162.55,0.03,COD,8,2.5,788.37 +13023,4/11/2030,1276,Clothing,East,1,528.4,0.22,Card,11,1.6,412.15 +13024,4/12/2030,1725,Electronics,South,1,270.09,0.29,Card,8,3.4,191.76 +13025,4/13/2030,1219,Beauty,West,4,175.17,0.26,Card,3,3.3,518.5 +13026,4/14/2030,1904,Clothing,North,6,359.76,0.29,Wallet,8,4.5,1532.58 +13027,4/15/2030,1025,Clothing,South,3,98.13,0.23,Wallet,1,4.4,226.68 +13028,4/16/2030,1520,Clothing,East,7,166.74,0.26,COD,4,4.3,863.71 +13029,4/17/2030,1782,Home,North,3,334.56,0.1,Wallet,5,3.2,903.31 +13030,4/18/2030,1009,Home,East,3,153.95,0.35,COD,6,3.6,300.2 +13031,4/19/2030,1983,Home,South,1,412.29,0.06,Wallet,5,4.1,387.55 +13032,4/20/2030,1377,Electronics,North,4,302.52,0.08,Card,5,1.4,1113.27 +13033,4/21/2030,1632,Electronics,North,7,466.61,0.1,COD,5,2.2,2939.64 +13034,4/22/2030,1636,Electronics,North,3,569.72,0.34,COD,9,1.7,1128.05 +13035,4/23/2030,1681,Home,North,2,82.75,0.35,COD,10,3,107.58 +13036,4/24/2030,1583,Electronics,South,2,210.78,0.28,Card,10,4.4,303.52 +13037,4/25/2030,1151,Clothing,North,2,201.94,0.22,Card,3,1.9,315.03 +13038,4/26/2030,1719,Beauty,West,5,103.44,0.18,Card,2,3.9,424.1 +13039,4/27/2030,1048,Beauty,West,4,489.03,0.34,Card,10,2.6,1291.04 +13040,4/28/2030,1153,Clothing,East,1,459.53,0.24,Card,2,4.6,349.24 +13041,4/29/2030,1858,Clothing,North,1,298.39,0.33,COD,8,3.5,199.92 +13042,4/30/2030,1292,Electronics,West,4,329.6,0.11,Wallet,5,4.9,1173.38 +13043,5/1/2030,1579,Home,West,6,49.83,0.12,COD,5,2,263.1 +13044,5/2/2030,1049,Home,West,7,339.97,0.3,Wallet,6,4.7,1665.85 +13045,5/3/2030,1663,Electronics,South,6,477.93,0.05,Wallet,9,2.4,2724.2 +13046,5/4/2030,1530,Clothing,North,5,350.69,0.33,Card,7,3.5,1174.81 +13047,5/5/2030,1611,Home,South,4,170.2,0.18,Card,5,1.7,558.26 +13048,5/6/2030,1059,Beauty,South,6,405.52,0.32,Card,5,4,1654.52 +13049,5/7/2030,1166,Electronics,West,7,226.47,0.12,Wallet,10,4.9,1395.06 +13050,5/8/2030,1201,Clothing,West,5,333.75,0.25,Card,9,4.1,1251.56 +13051,5/9/2030,1856,Electronics,East,3,300.23,0.17,COD,9,3.5,747.57 +13052,5/10/2030,1145,Electronics,North,3,237.99,0.22,Card,2,2.8,556.9 +13053,5/11/2030,1914,Beauty,North,5,435.54,0.18,Wallet,7,2.4,1785.71 +13054,5/12/2030,1675,Home,West,4,532.07,0.34,Card,10,2.7,1404.66 +13055,5/13/2030,1969,Home,West,3,18.05,0.24,Wallet,1,2.3,41.15 +13056,5/14/2030,1992,Electronics,North,4,561.17,0.09,Card,4,4.3,2042.66 +13057,5/15/2030,1438,Home,East,6,314.24,0.32,Card,2,4.6,1282.1 +13058,5/16/2030,1241,Clothing,West,3,424.93,0.1,COD,10,4.8,1147.31 +13059,5/17/2030,1580,Electronics,East,7,515.54,0.13,Wallet,9,2.7,3139.64 +13060,5/18/2030,1686,Clothing,South,7,288.26,0.04,COD,6,3.2,1937.11 +13061,5/19/2030,1560,Electronics,West,6,503.46,0.31,Wallet,4,3.3,2084.32 +13062,5/20/2030,1482,Home,South,7,118.91,0.1,COD,3,3.6,749.13 +13063,5/21/2030,1107,Clothing,West,4,108.11,0.09,COD,4,1,393.52 +13064,5/22/2030,1225,Electronics,South,4,399.62,0.32,Card,2,4.4,1086.97 +13065,5/23/2030,1672,Electronics,West,7,524.03,0.28,Card,5,2.1,2641.11 +13066,5/24/2030,1630,Electronics,East,2,537.07,0.05,Card,9,2.9,1020.43 +13067,5/25/2030,1660,Electronics,East,5,391.59,0.27,Wallet,6,4.4,1429.3 +13068,5/26/2030,1976,Clothing,East,1,322.41,0.32,Wallet,2,5,219.24 +13069,5/27/2030,1661,Home,South,5,208.86,0.03,COD,6,4.2,1012.97 +13070,5/28/2030,1431,Electronics,East,7,588.3,0.29,Card,9,1.1,2923.85 +13071,5/29/2030,1804,Electronics,South,4,202.02,0.19,Card,4,2.5,654.54 +13072,5/30/2030,1654,Clothing,West,4,450.35,0.23,Wallet,1,2,1387.08 +13073,5/31/2030,1418,Home,South,5,326.21,0.17,Card,2,4.9,1353.77 +13074,6/1/2030,1987,Electronics,West,4,370.98,0.24,Wallet,5,2.1,1127.78 +13075,6/2/2030,1454,Electronics,North,6,245.19,0.01,Card,10,4.8,1456.43 +13076,6/3/2030,1159,Clothing,North,3,579.42,0.27,Card,7,4.8,1268.93 +13077,6/4/2030,1522,Electronics,North,4,349.43,0.01,Wallet,8,4.4,1383.74 +13078,6/5/2030,1649,Electronics,South,7,563.61,0.16,Card,3,1.4,3314.03 +13079,6/6/2030,1968,Home,North,7,19.44,0.05,Card,9,1,129.28 +13080,6/7/2030,1589,Clothing,North,5,350.01,0.29,Wallet,2,4.2,1242.54 +13081,6/8/2030,1076,Clothing,North,5,434.55,0.11,COD,4,4.4,1933.75 +13082,6/9/2030,1508,Home,West,5,450.87,0.16,COD,4,4.8,1893.65 +13083,6/10/2030,1440,Home,East,7,544.41,0.15,COD,6,1.9,3239.24 +13084,6/11/2030,1253,Electronics,South,2,17.57,0.27,Card,10,3.9,25.65 +13085,6/12/2030,1920,Clothing,North,7,15.19,0.17,Card,6,3.1,88.25 +13086,6/13/2030,1769,Electronics,West,6,291.27,0.28,COD,3,2.3,1258.29 +13087,6/14/2030,1319,Electronics,East,7,32.14,0.03,Card,9,3.4,218.23 +13088,6/15/2030,1802,Home,East,6,585.1,0.07,Card,11,3.2,3264.86 +13089,6/16/2030,1262,Beauty,East,7,144.91,0.19,COD,5,2.2,821.64 +13090,6/17/2030,1596,Beauty,West,7,291.51,0.33,Card,2,2.1,1367.18 +13091,6/18/2030,1657,Clothing,North,2,50.77,0.03,COD,6,2.9,98.49 +13092,6/19/2030,1834,Electronics,East,6,320.4,0.02,Card,3,2.9,1883.95 +13093,6/20/2030,1553,Electronics,West,2,237.27,0.05,Card,8,2.2,450.81 +13094,6/21/2030,1373,Home,West,6,41.13,0.22,Card,3,2.1,192.49 +13095,6/22/2030,1636,Clothing,South,2,211.05,0.14,Wallet,5,4.8,363.01 +13096,6/23/2030,1166,Clothing,West,2,243.99,0.29,Card,4,4.4,346.47 +13097,6/24/2030,1936,Home,East,6,594.1,0.03,COD,4,4.3,3457.66 +13098,6/25/2030,1752,Home,East,2,136.61,0.07,COD,2,1.9,254.09 +13099,6/26/2030,1458,Home,West,7,333.7,0.11,Card,8,1.8,2078.95 +13100,6/27/2030,1998,Electronics,East,6,592.58,0.22,COD,3,4.2,2773.27 +13101,6/28/2030,1279,Home,West,2,478.33,0.24,Wallet,4,1.7,727.06 +13102,6/29/2030,1699,Beauty,East,7,596.12,0.04,COD,6,3,4005.93 +13103,6/30/2030,1301,Electronics,South,7,581.45,0.33,Card,9,1.9,2727 +13104,7/1/2030,1530,Clothing,North,5,301.38,0.12,COD,4,2.5,1326.07 +13105,7/2/2030,1579,Electronics,South,1,422.38,0.25,COD,3,4.4,316.78 +13106,7/3/2030,1217,Beauty,South,6,79.61,0.18,Card,5,4.6,391.68 +13107,7/4/2030,1101,Electronics,North,2,273.07,0.08,Card,9,5,502.45 +13108,7/5/2030,1553,Clothing,East,5,488.28,0.3,Card,1,4.8,1708.98 +13109,7/6/2030,1287,Electronics,North,1,310.62,0.29,Card,5,3.7,220.54 +13110,7/7/2030,1166,Home,West,2,426.08,0.14,Card,11,2.7,732.86 +13111,7/8/2030,1620,Electronics,North,1,451.26,0.21,COD,4,1.2,356.5 +13112,7/9/2030,1035,Electronics,South,6,163.28,0.09,Card,5,3.4,891.51 +13113,7/10/2030,1743,Clothing,North,7,527.28,0.24,Wallet,7,1.8,2805.13 +13114,7/11/2030,1740,Beauty,East,7,284,0.11,COD,7,4.4,1769.32 +13115,7/12/2030,1352,Electronics,South,1,137.96,0.3,Wallet,7,3.2,96.57 +13116,7/13/2030,1675,Electronics,West,7,521.27,0.08,COD,1,3.9,3356.98 +13117,7/14/2030,1898,Home,East,3,259.42,0.01,Card,9,3.7,770.48 +13118,7/15/2030,1072,Clothing,South,4,453.93,0.09,COD,7,2.4,1652.31 +13119,7/16/2030,1647,Beauty,West,7,335.6,0.07,Wallet,4,4,2184.76 +13120,7/17/2030,1352,Electronics,East,3,238.39,0.18,Card,4,4.4,586.44 +13121,7/18/2030,1890,Clothing,West,6,488.78,0.07,Card,2,4,2727.39 +13122,7/19/2030,1069,Electronics,North,6,356.91,0.27,Card,6,4.1,1563.27 +13123,7/20/2030,1424,Electronics,North,1,243.48,0.08,Card,10,2.4,224 +13124,7/21/2030,1998,Home,West,7,79.11,0.25,Card,3,4.8,415.33 +13125,7/22/2030,1707,Clothing,North,7,538.84,0.2,Card,1,2.7,3017.5 +13126,7/23/2030,1780,Home,West,7,35.75,0.35,Card,5,4.6,162.66 +13127,7/24/2030,1560,Electronics,East,5,519.96,0.35,COD,6,4.4,1689.87 +13128,7/25/2030,1827,Clothing,South,2,225.58,0.3,Card,11,1.5,315.81 +13129,7/26/2030,1641,Clothing,West,4,389.01,0.27,COD,5,4.9,1135.91 +13130,7/27/2030,1955,Beauty,South,7,554.49,0.14,COD,5,5,3338.03 +13131,7/28/2030,1516,Electronics,South,2,103.75,0.26,COD,10,3.4,153.55 +13132,7/29/2030,1427,Electronics,West,5,346.67,0.33,Card,11,4.1,1161.34 +13133,7/30/2030,1538,Clothing,North,6,462.19,0.01,COD,8,4.7,2745.41 +13134,7/31/2030,1159,Clothing,East,4,458.19,0.19,Card,10,1.1,1484.54 +13135,8/1/2030,1148,Electronics,South,3,322.49,0.08,Card,1,4.7,890.07 +13136,8/2/2030,1775,Beauty,East,6,380.47,0.2,COD,8,3.5,1826.26 +13137,8/3/2030,1229,Electronics,South,6,458.15,0.16,Card,11,4.3,2309.08 +13138,8/4/2030,1711,Beauty,West,1,507,0.2,Card,7,3.2,405.6 +13139,8/5/2030,1561,Electronics,North,5,460.66,0.19,Card,1,3.1,1865.67 +13140,8/6/2030,1066,Home,East,1,222.09,0.34,Card,9,4.6,146.58 +13141,8/7/2030,1811,Beauty,South,1,598.08,0.19,Card,4,3,484.44 +13142,8/8/2030,1380,Electronics,West,2,269.18,0.3,Wallet,7,2.9,376.85 +13143,8/9/2030,1057,Beauty,West,6,29.31,0.11,Card,3,3.4,156.52 +13144,8/10/2030,1258,Clothing,South,5,227.13,0.15,COD,8,3.1,965.3 +13145,8/11/2030,1341,Beauty,South,1,89.75,0.16,COD,4,2.8,75.39 +13146,8/12/2030,1837,Home,South,3,86.04,0.1,COD,2,1.7,232.31 +13147,8/13/2030,1129,Electronics,North,4,179.7,0.13,Wallet,2,2.6,625.36 +13148,8/14/2030,1726,Electronics,South,7,46.22,0.21,Wallet,8,2.1,255.6 +13149,8/15/2030,1171,Electronics,South,5,417.78,0.2,COD,8,2.6,1671.12 +13150,8/16/2030,1769,Electronics,North,2,58.28,0.22,Wallet,1,3.4,90.92 +13151,8/17/2030,1613,Electronics,West,5,133.92,0.12,Card,6,3.4,589.25 +13152,8/18/2030,1208,Electronics,South,6,69.35,0.11,COD,9,2,370.33 +13153,8/19/2030,1802,Clothing,East,2,51.95,0.21,Wallet,9,1.3,82.08 +13154,8/20/2030,1353,Home,West,4,171.63,0.05,COD,2,4,652.19 +13155,8/21/2030,1470,Electronics,East,3,349.56,0.09,Wallet,8,3.1,954.3 +13156,8/22/2030,1797,Electronics,South,1,579.34,0.01,Card,8,2.8,573.55 +13157,8/23/2030,1115,Clothing,North,5,527.2,0.03,Card,4,1.5,2556.92 +13158,8/24/2030,1263,Electronics,North,2,527.42,0.09,Wallet,4,2.7,959.9 +13159,8/25/2030,1661,Electronics,North,4,118,0.01,Card,5,4.3,467.28 +13160,8/26/2030,1811,Electronics,South,1,169.97,0.09,COD,11,3.3,154.67 +13161,8/27/2030,1441,Beauty,South,7,59.69,0.23,Card,10,1.4,321.73 +13162,8/28/2030,1547,Home,East,4,470.4,0.02,COD,7,2.3,1843.97 +13163,8/29/2030,1452,Clothing,North,3,55.84,0.15,Wallet,1,4.9,142.39 +13164,8/30/2030,1844,Home,South,1,340.67,0.32,Card,11,3.2,231.66 +13165,8/31/2030,1476,Clothing,West,1,160.01,0.28,Card,9,2.1,115.21 +13166,9/1/2030,1286,Home,South,7,157.42,0.11,Card,3,4.7,980.73 +13167,9/2/2030,1302,Home,South,1,594.57,0.32,Wallet,11,2.3,404.31 +13168,9/3/2030,1310,Clothing,West,2,457.72,0.12,COD,4,3.9,805.59 +13169,9/4/2030,1207,Electronics,North,1,504.61,0.03,Card,7,1.6,489.47 +13170,9/5/2030,1617,Electronics,West,4,349.61,0.35,Card,5,1.6,908.99 +13171,9/6/2030,1445,Clothing,North,2,524.54,0.3,Wallet,5,3.2,734.36 +13172,9/7/2030,1669,Beauty,West,1,392.61,0.16,Wallet,1,2,329.79 +13173,9/8/2030,1632,Clothing,East,4,568.51,0.23,Card,2,1.2,1751.01 +13174,9/9/2030,1054,Home,North,4,179.58,0.23,Card,5,4.7,553.11 +13175,9/10/2030,1911,Beauty,South,5,363.26,0.07,COD,2,1.2,1689.16 +13176,9/11/2030,1011,Electronics,East,4,418.73,0.07,COD,1,3.9,1557.68 +13177,9/12/2030,1656,Home,North,7,244.87,0.16,Wallet,10,2.3,1439.84 +13178,9/13/2030,1399,Home,North,6,529.63,0.32,COD,3,4.7,2160.89 +13179,9/14/2030,1907,Beauty,North,3,588.18,0,COD,11,4.9,1764.54 +13180,9/15/2030,1647,Beauty,West,1,303.86,0.27,COD,1,2.3,221.82 +13181,9/16/2030,1979,Home,North,7,243.52,0.02,Wallet,10,3.4,1670.55 +13182,9/17/2030,1514,Electronics,South,1,291.08,0.17,Card,8,4.1,241.6 +13183,9/18/2030,1655,Home,North,1,513.85,0.22,Card,8,1.5,400.8 +13184,9/19/2030,1541,Electronics,South,4,392.6,0.24,Card,8,3.8,1193.5 +13185,9/20/2030,1236,Home,South,4,41.19,0.02,Wallet,7,4.6,161.46 +13186,9/21/2030,1278,Beauty,South,1,332.17,0.15,COD,7,1.7,282.34 +13187,9/22/2030,1347,Clothing,East,6,25.12,0.2,Card,2,4.4,120.58 +13188,9/23/2030,1626,Clothing,South,2,470.44,0.02,COD,9,1.5,922.06 +13189,9/24/2030,1103,Clothing,West,2,207.06,0.05,Card,7,3.3,393.41 +13190,9/25/2030,1629,Clothing,North,3,291.12,0.23,Card,5,2.4,672.49 +13191,9/26/2030,1516,Electronics,West,5,482.23,0.18,Card,4,2.9,1977.14 +13192,9/27/2030,1979,Home,East,7,42.17,0.06,COD,8,2.2,277.48 +13193,9/28/2030,1871,Beauty,North,3,107.75,0.19,COD,5,2,261.83 +13194,9/29/2030,1247,Beauty,South,1,247.81,0.32,Wallet,6,4,168.51 +13195,9/30/2030,1363,Electronics,North,7,149.51,0.01,Wallet,4,1.9,1036.1 +13196,10/1/2030,1320,Beauty,East,1,212.67,0.22,Card,2,2.6,165.88 +13197,10/2/2030,1632,Home,East,1,598.93,0.03,COD,7,2.1,580.96 +13198,10/3/2030,1285,Electronics,West,5,497.87,0,Card,2,2,2489.35 +13199,10/4/2030,1148,Electronics,North,4,532.08,0.05,Card,11,3.5,2021.9 +13200,10/5/2030,1083,Electronics,North,5,563.18,0.15,Card,7,1.2,2393.51 +13201,10/6/2030,1965,Beauty,North,3,214.45,0.28,Card,7,4.2,463.21 +13202,10/7/2030,1405,Clothing,West,4,188.79,0.1,Card,1,3.2,679.64 +13203,10/8/2030,1977,Home,East,4,151.93,0.22,Card,10,4.3,474.02 +13204,10/9/2030,1455,Electronics,South,3,500.62,0.14,COD,10,1.9,1291.6 +13205,10/10/2030,1742,Home,North,4,412.54,0.08,Card,3,3.8,1518.15 +13206,10/11/2030,1799,Electronics,West,7,153.16,0.18,COD,3,2.7,879.14 +13207,10/12/2030,1160,Clothing,West,2,235.54,0.28,Card,11,1.3,339.18 +13208,10/13/2030,1783,Clothing,South,3,311.43,0.29,Card,6,4,663.35 +13209,10/14/2030,1459,Electronics,East,3,323.96,0.3,Card,11,4,680.32 +13210,10/15/2030,1549,Home,North,2,534.91,0.12,Card,3,2.1,941.44 +13211,10/16/2030,1499,Electronics,North,5,237.63,0.28,Card,9,4.7,855.47 +13212,10/17/2030,1737,Home,West,5,546.49,0.07,COD,5,4.1,2541.18 +13213,10/18/2030,1508,Clothing,East,5,273.2,0.26,COD,6,2.2,1010.84 +13214,10/19/2030,1653,Clothing,North,4,451.63,0.33,Card,6,2,1210.37 +13215,10/20/2030,1803,Electronics,South,2,559.2,0,Card,8,2.8,1118.4 +13216,10/21/2030,1480,Electronics,East,7,545.93,0.15,Wallet,10,2.2,3248.28 +13217,10/22/2030,1662,Beauty,East,3,48.32,0.23,Card,11,1.9,111.62 +13218,10/23/2030,1113,Electronics,West,3,135.34,0.25,Card,3,2.6,304.52 +13219,10/24/2030,1748,Home,West,3,293.99,0.06,COD,9,1.1,829.05 +13220,10/25/2030,1577,Beauty,North,4,267.46,0.34,COD,7,2.6,706.09 +13221,10/26/2030,1360,Electronics,West,4,389.92,0.22,COD,11,1.9,1216.55 +13222,10/27/2030,1340,Electronics,East,6,567.65,0.06,COD,6,2.1,3201.55 +13223,10/28/2030,1769,Home,North,7,80.76,0.01,Card,11,1.3,559.67 +13224,10/29/2030,1986,Beauty,North,5,279.34,0.27,Card,1,3.4,1019.59 +13225,10/30/2030,1760,Beauty,East,6,127.56,0.03,Card,4,2.9,742.4 +13226,10/31/2030,1968,Clothing,North,6,538.05,0.05,COD,5,4,3066.88 +13227,11/1/2030,1448,Home,South,4,579.28,0.2,Wallet,2,4.9,1853.7 +13228,11/2/2030,1842,Electronics,South,5,295.04,0.21,Card,1,1.5,1165.41 +13229,11/3/2030,1834,Beauty,North,5,75.85,0.24,Card,2,2.1,288.23 +13230,11/4/2030,1179,Beauty,West,3,474.4,0.14,Card,8,3.7,1223.95 +13231,11/5/2030,1701,Electronics,South,4,422.83,0.27,Card,10,1.9,1234.66 +13232,11/6/2030,1406,Electronics,North,5,222.48,0.34,Card,6,1.1,734.18 +13233,11/7/2030,1665,Electronics,South,6,534.13,0.09,COD,10,1.4,2916.35 +13234,11/8/2030,1195,Electronics,West,2,585.86,0.25,Wallet,2,2.7,878.79 +13235,11/9/2030,1465,Home,East,2,341.34,0.32,Card,9,2.7,464.22 +13236,11/10/2030,1310,Clothing,North,4,345.95,0.24,Card,8,4.9,1051.69 +13237,11/11/2030,1261,Electronics,North,3,189.05,0.24,Card,4,2.9,431.03 +13238,11/12/2030,1418,Electronics,North,3,356.94,0.08,Card,11,3.7,985.15 +13239,11/13/2030,1405,Beauty,North,5,272.19,0.19,Card,10,3,1102.37 +13240,11/14/2030,1938,Clothing,North,7,191.78,0.2,COD,7,2.1,1073.97 +13241,11/15/2030,1142,Clothing,North,4,54.3,0.25,Card,3,1.4,162.9 +13242,11/16/2030,1341,Electronics,West,7,162.83,0.35,Wallet,6,4.4,740.88 +13243,11/17/2030,1315,Beauty,East,2,130.74,0.01,COD,3,1.6,258.87 +13244,11/18/2030,1100,Home,West,6,332.09,0.02,COD,10,1.4,1952.69 +13245,11/19/2030,1243,Electronics,West,5,366.98,0.03,Card,3,1.9,1779.85 +13246,11/20/2030,1489,Electronics,East,6,371.01,0.26,COD,11,1,1647.28 +13247,11/21/2030,1011,Electronics,West,7,242.09,0.05,COD,9,1.3,1609.9 +13248,11/22/2030,1238,Electronics,South,5,261.42,0.22,Card,6,3.5,1019.54 +13249,11/23/2030,1560,Clothing,West,1,503.03,0.11,Card,8,2,447.7 +13250,11/24/2030,1041,Beauty,North,6,293.6,0.16,Wallet,4,2.4,1479.74 +13251,11/25/2030,1677,Clothing,South,4,592.85,0.08,Card,4,4.3,2181.69 +13252,11/26/2030,1593,Home,South,6,272.18,0.3,Card,8,4.1,1143.16 +13253,11/27/2030,1428,Clothing,East,6,395,0.21,Card,7,3,1872.3 +13254,11/28/2030,1802,Home,West,5,44.46,0.33,Card,5,3.5,148.94 +13255,11/29/2030,1157,Home,West,2,397.2,0.2,Card,2,1.3,635.52 +13256,11/30/2030,1215,Electronics,South,7,513.08,0.04,Card,6,4,3447.9 +13257,12/1/2030,1669,Clothing,West,1,566.34,0.06,COD,1,3.1,532.36 +13258,12/2/2030,1461,Clothing,West,6,598.43,0.35,Card,7,3.3,2333.88 +13259,12/3/2030,1133,Electronics,East,7,180.07,0.25,COD,9,3.7,945.37 +13260,12/4/2030,1066,Clothing,South,7,351.59,0.02,COD,5,3,2411.91 +13261,12/5/2030,1847,Clothing,North,2,278.67,0.25,Card,5,3.1,418 +13262,12/6/2030,1006,Beauty,South,3,344.83,0.14,COD,7,3,889.66 +13263,12/7/2030,1947,Clothing,East,1,107.11,0.11,COD,5,3,95.33 +13264,12/8/2030,1525,Home,East,1,515.85,0.05,COD,10,4,490.06 +13265,12/9/2030,1072,Clothing,East,7,547.1,0.29,COD,4,2.7,2719.09 +13266,12/10/2030,1398,Home,West,5,278.05,0.02,COD,1,1,1362.44 +13267,12/11/2030,1404,Clothing,South,6,179.05,0.1,Card,6,3.4,966.87 +13268,12/12/2030,1674,Beauty,West,3,97.39,0.11,COD,9,4.8,260.03 +13269,12/13/2030,1577,Clothing,West,5,415,0.06,Card,4,2,1950.5 +13270,12/14/2030,1858,Clothing,South,4,197.66,0.18,COD,10,4.3,648.32 +13271,12/15/2030,1129,Clothing,East,2,547.08,0,Card,11,2.8,1094.16 +13272,12/16/2030,1930,Clothing,North,2,407.54,0.11,Wallet,4,3.6,725.42 +13273,12/17/2030,1465,Electronics,North,5,392.73,0.33,COD,5,4.6,1315.65 +13274,12/18/2030,1205,Electronics,South,7,342.25,0.11,COD,6,4.1,2132.22 +13275,12/19/2030,1787,Electronics,South,2,41.78,0.13,COD,3,4.5,72.7 +13276,12/20/2030,1977,Beauty,East,6,560.17,0.17,Wallet,9,1,2789.65 +13277,12/21/2030,1767,Electronics,South,2,382.34,0.2,COD,1,1.7,611.74 +13278,12/22/2030,1265,Electronics,South,6,596.53,0.28,Card,11,2.7,2577.01 +13279,12/23/2030,1536,Home,East,4,329.35,0.07,Wallet,6,4.4,1225.18 +13280,12/24/2030,1961,Electronics,East,3,430.41,0.31,COD,6,4.4,890.95 +13281,12/25/2030,1792,Clothing,West,1,47.88,0.27,COD,8,1.7,34.95 +13282,12/26/2030,1252,Electronics,South,5,384.57,0.25,Wallet,5,1.6,1442.14 +13283,12/27/2030,1821,Beauty,North,5,462.32,0.03,Card,9,4.3,2242.25 +13284,12/28/2030,1288,Beauty,South,6,470.43,0.01,Card,9,3.2,2794.35 +13285,12/29/2030,1163,Beauty,North,4,465.52,0.21,COD,2,3.5,1471.04 +13286,12/30/2030,1094,Clothing,North,4,147.38,0.3,COD,5,4.2,412.66 +13287,12/31/2030,1781,Home,North,7,585.61,0.2,Card,7,1.8,3279.42 +13288,1/1/2031,1832,Electronics,West,1,597.18,0.07,COD,2,1.5,555.38 +13289,1/2/2031,1109,Electronics,East,3,59.22,0.03,COD,7,4.4,172.33 +13290,1/3/2031,1335,Electronics,East,5,562.82,0.24,COD,9,1.4,2138.72 +13291,1/4/2031,1821,Clothing,West,6,184.33,0.25,Wallet,8,1.4,829.48 +13292,1/5/2031,1237,Clothing,East,4,418.23,0.06,Card,10,2.1,1572.54 +13293,1/6/2031,1380,Clothing,West,5,212.79,0.01,COD,9,2.3,1053.31 +13294,1/7/2031,1435,Electronics,South,6,581.14,0.14,COD,4,2,2998.68 +13295,1/8/2031,1898,Clothing,West,2,74.38,0.2,Card,8,4,119.01 +13296,1/9/2031,1482,Home,East,5,306.18,0.25,Card,9,4.9,1148.18 +13297,1/10/2031,1936,Clothing,East,3,265.41,0.28,Card,10,1.8,573.29 +13298,1/11/2031,1901,Home,South,6,205.72,0.21,COD,2,4.1,975.11 +13299,1/12/2031,1024,Electronics,West,3,392.64,0.04,Card,10,1.2,1130.8 +13300,1/13/2031,1652,Home,South,5,91.67,0.24,Card,3,1.5,348.35 +13301,1/14/2031,1116,Clothing,North,2,434.25,0.34,Card,1,3.1,573.21 +13302,1/15/2031,1481,Electronics,West,3,588.65,0.32,COD,1,5,1200.85 +13303,1/16/2031,1391,Electronics,South,4,485.67,0.31,COD,10,4.8,1340.45 +13304,1/17/2031,1916,Clothing,South,6,518.11,0.11,COD,6,1.4,2766.71 +13305,1/18/2031,1993,Home,East,5,225.39,0.26,Card,1,2,833.94 +13306,1/19/2031,1963,Clothing,West,2,205.06,0.3,COD,5,4.8,287.08 +13307,1/20/2031,1536,Electronics,North,4,317.47,0.24,COD,6,1.6,965.11 +13308,1/21/2031,1078,Beauty,North,5,41.75,0.09,Card,9,4,189.96 +13309,1/22/2031,1579,Home,West,7,568.03,0.33,Card,6,1,2664.06 +13310,1/23/2031,1172,Clothing,West,2,99.11,0.16,Wallet,4,3.5,166.5 +13311,1/24/2031,1955,Clothing,South,4,543.26,0.05,COD,1,3,2064.39 +13312,1/25/2031,1011,Electronics,East,3,63.9,0.04,COD,6,2.9,184.03 +13313,1/26/2031,1799,Clothing,East,5,496.24,0.23,Card,7,4.3,1910.52 +13314,1/27/2031,1127,Clothing,East,5,103.9,0.15,Wallet,5,1.3,441.58 +13315,1/28/2031,1607,Beauty,West,3,37.31,0.03,COD,6,2.5,108.57 +13316,1/29/2031,1091,Clothing,East,7,435.9,0.26,Wallet,10,2.8,2257.96 +13317,1/30/2031,1652,Clothing,South,1,178.96,0.28,Wallet,8,1.5,128.85 +13318,1/31/2031,1542,Clothing,West,4,432.98,0.25,Wallet,1,1.3,1298.94 +13319,2/1/2031,1845,Beauty,West,3,339.72,0.07,Wallet,8,1.7,947.82 +13320,2/2/2031,1531,Home,East,5,78.65,0.24,Card,11,2,298.87 +13321,2/3/2031,1657,Clothing,North,4,560.3,0,Wallet,2,4.9,2241.2 +13322,2/4/2031,1988,Home,North,7,279.6,0.11,Card,2,2.9,1741.91 +13323,2/5/2031,1827,Clothing,South,4,444.65,0.14,Wallet,8,3,1529.6 +13324,2/6/2031,1446,Clothing,East,1,308.1,0.29,Card,2,3.8,218.75 +13325,2/7/2031,1389,Electronics,East,5,368.55,0.14,COD,8,3.7,1584.76 +13326,2/8/2031,1671,Clothing,West,2,192.12,0,Card,5,3,384.24 +13327,2/9/2031,1860,Electronics,West,1,132.21,0.12,COD,9,2.4,116.34 +13328,2/10/2031,1042,Beauty,East,1,332.4,0.17,Card,9,2.3,275.89 +13329,2/11/2031,1253,Electronics,West,2,272.53,0.33,Card,8,1.2,365.19 +13330,2/12/2031,1129,Beauty,East,2,243.22,0.33,Wallet,9,4.6,325.91 +13331,2/13/2031,1059,Clothing,South,7,408.45,0.06,COD,7,4.1,2687.6 +13332,2/14/2031,1662,Clothing,West,7,418.95,0.06,Card,8,3.5,2756.69 +13333,2/15/2031,1466,Clothing,East,1,41.86,0.06,Card,6,2.6,39.35 +13334,2/16/2031,1286,Electronics,West,4,213.17,0.28,Card,9,3.3,613.93 +13335,2/17/2031,1516,Clothing,South,3,255.88,0,COD,2,2.9,767.64 +13336,2/18/2031,1466,Electronics,West,3,71.68,0.04,Wallet,3,2.1,206.44 +13337,2/19/2031,1929,Clothing,East,1,153,0.19,COD,2,2.2,123.93 +13338,2/20/2031,1777,Clothing,West,4,45.21,0.09,Card,6,4.5,164.56 +13339,2/21/2031,1344,Home,West,2,597.8,0.03,Card,3,3.5,1159.73 +13340,2/22/2031,1641,Electronics,East,6,445.89,0.13,Wallet,11,1,2327.55 +13341,2/23/2031,1381,Electronics,North,1,66.16,0.1,Card,1,2.3,59.54 +13342,2/24/2031,1778,Clothing,West,5,26.85,0.18,COD,4,2.4,110.08 +13343,2/25/2031,1689,Beauty,West,4,435.78,0.34,Card,5,3.8,1150.46 +13344,2/26/2031,1252,Home,South,5,271.93,0.04,COD,11,3.8,1305.26 +13345,2/27/2031,1926,Clothing,North,5,475.28,0.13,Wallet,4,2.9,2067.47 +13346,2/28/2031,1055,Clothing,South,1,555.23,0.33,Card,6,4.8,372 +13347,3/1/2031,1462,Electronics,East,4,365.59,0.31,COD,3,4.5,1009.03 +13348,3/2/2031,1456,Beauty,East,5,124.46,0.14,COD,10,4.5,535.18 +13349,3/3/2031,1982,Home,South,7,472.58,0.24,Card,6,2.4,2514.13 +13350,3/4/2031,1082,Electronics,West,7,574.15,0.03,Card,10,2.7,3898.48 +13351,3/5/2031,1904,Clothing,North,4,354.44,0.25,COD,1,2.7,1063.32 +13352,3/6/2031,1098,Electronics,South,3,413.97,0.34,Card,6,2.8,819.66 +13353,3/7/2031,1148,Beauty,South,6,212.42,0.19,Wallet,8,4.6,1032.36 +13354,3/8/2031,1328,Electronics,East,5,238.19,0.17,Card,10,2,988.49 +13355,3/9/2031,1155,Clothing,West,5,444.77,0.07,Card,8,4.2,2068.18 +13356,3/10/2031,1189,Electronics,North,4,557.75,0.22,Card,1,3.1,1740.18 +13357,3/11/2031,1493,Home,South,7,382.96,0.21,Card,7,2,2117.77 +13358,3/12/2031,1882,Home,North,6,477.06,0.23,COD,10,3.1,2204.02 +13359,3/13/2031,1262,Home,North,3,115.41,0.01,Card,10,1.8,342.77 +13360,3/14/2031,1079,Clothing,South,5,139,0.19,COD,4,1.4,562.95 +13361,3/15/2031,1399,Beauty,North,1,326.24,0.21,Wallet,6,4.4,257.73 +13362,3/16/2031,1763,Electronics,East,7,118.28,0.07,COD,6,3.8,770 +13363,3/17/2031,1608,Electronics,West,4,386.47,0.07,Card,5,1.8,1437.67 +13364,3/18/2031,1259,Electronics,West,4,185.62,0.1,Wallet,10,4.8,668.23 +13365,3/19/2031,1771,Beauty,West,7,478.05,0.25,Card,9,1.1,2509.76 +13366,3/20/2031,1614,Clothing,East,5,487.74,0.21,COD,11,2.3,1926.57 +13367,3/21/2031,1551,Home,East,3,286.32,0.3,Card,10,1.1,601.27 +13368,3/22/2031,1784,Home,East,5,120.77,0.1,Card,8,1.6,543.46 +13369,3/23/2031,1100,Electronics,West,7,393.36,0.32,Wallet,6,1.7,1872.39 +13370,3/24/2031,1358,Electronics,North,2,595.78,0.26,Card,4,4.2,881.75 +13371,3/25/2031,1379,Electronics,East,5,379.22,0.14,COD,4,5,1630.65 +13372,3/26/2031,1819,Clothing,South,6,35.93,0.03,Card,9,4.5,209.11 +13373,3/27/2031,1220,Electronics,East,7,25.12,0.09,COD,4,3.5,160.01 +13374,3/28/2031,1819,Electronics,South,6,202.41,0.33,COD,7,3.9,813.69 +13375,3/29/2031,1419,Beauty,West,7,129.53,0.11,Card,6,3.1,806.97 +13376,3/30/2031,1123,Beauty,South,2,490.63,0.12,COD,2,2.7,863.51 +13377,3/31/2031,1421,Electronics,East,6,509.21,0.07,COD,5,3.8,2841.39 +13378,4/1/2031,1230,Electronics,East,6,166.29,0.28,COD,3,4.9,718.37 +13379,4/2/2031,1689,Electronics,North,1,205.5,0.1,COD,9,1.1,184.95 +13380,4/3/2031,1062,Home,West,4,153.2,0.12,COD,10,2.3,539.26 +13381,4/4/2031,1484,Home,South,6,546.4,0.15,Card,1,2.3,2786.64 +13382,4/5/2031,1627,Electronics,West,4,309.05,0.15,COD,10,2.7,1050.77 +13383,4/6/2031,1702,Electronics,East,7,398.84,0.14,COD,4,3.5,2401.02 +13384,4/7/2031,1573,Home,North,3,258.06,0.18,Card,4,3.1,634.83 +13385,4/8/2031,1767,Clothing,East,5,384.14,0.29,Wallet,9,1.1,1363.7 +13386,4/9/2031,1482,Electronics,East,1,240.73,0.29,Card,1,2.6,170.92 +13387,4/10/2031,1518,Clothing,East,7,213.71,0.28,Card,2,3.5,1077.1 +13388,4/11/2031,1154,Electronics,South,2,386.17,0.04,Card,1,3,741.45 +13389,4/12/2031,1091,Clothing,East,3,360.77,0.28,Card,1,4.5,779.26 +13390,4/13/2031,1981,Home,West,1,186.71,0.04,Card,1,2.6,179.24 +13391,4/14/2031,1525,Home,West,1,102.37,0.04,Wallet,3,1.1,98.28 +13392,4/15/2031,1454,Clothing,North,7,230.62,0.33,Card,11,2.1,1081.61 +13393,4/16/2031,1740,Beauty,West,2,257.89,0.29,COD,4,1.5,366.2 +13394,4/17/2031,1597,Clothing,East,2,382.78,0.19,Card,10,2,620.1 +13395,4/18/2031,1644,Home,East,4,550,0.31,COD,2,2.4,1518 +13396,4/19/2031,1509,Clothing,West,5,36.17,0.35,Wallet,1,3.7,117.55 +13397,4/20/2031,1182,Beauty,North,7,157.54,0.21,Card,5,2.3,871.2 +13398,4/21/2031,1385,Beauty,North,3,128.32,0.21,Wallet,6,4.5,304.12 +13399,4/22/2031,1573,Electronics,West,5,308.84,0.26,Wallet,2,2.2,1142.71 +13400,4/23/2031,1730,Beauty,South,3,266.37,0.08,COD,3,1.5,735.18 +13401,4/24/2031,1404,Home,South,1,441.49,0.06,Card,10,1.7,415 +13402,4/25/2031,1245,Home,South,6,156.81,0.27,COD,3,4.7,686.83 +13403,4/26/2031,1741,Electronics,South,6,362.78,0.12,Wallet,2,2.8,1915.48 +13404,4/27/2031,1590,Home,West,7,532.06,0.05,Card,4,2.6,3538.2 +13405,4/28/2031,1660,Beauty,North,2,547.75,0.11,COD,5,1.3,975 +13406,4/29/2031,1649,Electronics,East,2,575.89,0.13,Card,8,3.9,1002.05 +13407,4/30/2031,1470,Beauty,East,1,467.36,0.34,Card,6,3.8,308.46 +13408,5/1/2031,1825,Electronics,West,1,545,0.24,Wallet,9,2.5,414.2 +13409,5/2/2031,1887,Electronics,East,3,152.2,0.19,Card,3,3.8,369.85 +13410,5/3/2031,1422,Clothing,South,1,130.58,0.34,Card,10,2.5,86.18 +13411,5/4/2031,1900,Clothing,North,7,18.8,0.32,COD,9,1.3,89.49 +13412,5/5/2031,1064,Clothing,West,3,428.5,0.18,Card,11,4,1054.11 +13413,5/6/2031,1012,Electronics,North,5,563.42,0.32,Card,11,4.9,1915.63 +13414,5/7/2031,1212,Beauty,West,2,124.36,0.14,COD,4,3.6,213.9 +13415,5/8/2031,1985,Electronics,West,2,387.61,0.08,Card,8,2.1,713.2 +13416,5/9/2031,1241,Electronics,West,6,451.68,0.08,Card,10,2.1,2493.27 +13417,5/10/2031,1492,Electronics,West,6,557.65,0.23,Card,7,4.7,2576.34 +13418,5/11/2031,1212,Clothing,North,7,393.41,0.18,COD,7,2.2,2258.17 +13419,5/12/2031,1692,Beauty,East,2,582.62,0.23,Wallet,9,4.1,897.23 +13420,5/13/2031,1337,Home,West,7,216.63,0.24,Wallet,10,3.6,1152.47 +13421,5/14/2031,1996,Home,South,5,219.71,0.01,Card,2,3.4,1087.56 +13422,5/15/2031,1172,Electronics,West,5,332.66,0.02,COD,5,1.7,1630.03 +13423,5/16/2031,1671,Clothing,North,4,239.35,0.19,Wallet,3,1.1,775.49 +13424,5/17/2031,1163,Clothing,West,3,15.83,0.07,Card,7,3,44.17 +13425,5/18/2031,1464,Clothing,South,6,443.09,0.22,Wallet,3,5,2073.66 +13426,5/19/2031,1994,Electronics,North,3,454.75,0.19,Wallet,5,1.8,1105.04 +13427,5/20/2031,1496,Home,West,6,451.98,0.21,Card,5,3.1,2142.39 +13428,5/21/2031,1699,Clothing,South,4,216.84,0.11,Card,2,3.7,771.95 +13429,5/22/2031,1394,Home,North,2,320.54,0.22,Card,11,2.9,500.04 +13430,5/23/2031,1702,Clothing,West,7,225.58,0.29,Card,1,3,1121.13 +13431,5/24/2031,1916,Electronics,South,3,24.38,0.35,Wallet,6,3.6,47.54 +13432,5/25/2031,1307,Clothing,North,6,344.03,0.29,Wallet,1,4.3,1465.57 +13433,5/26/2031,1767,Electronics,West,3,87.4,0.2,Card,9,2.3,209.76 +13434,5/27/2031,1182,Beauty,North,2,61.82,0.07,COD,10,4.6,114.99 +13435,5/28/2031,1628,Clothing,South,7,456.97,0.24,COD,5,2.9,2431.08 +13436,5/29/2031,1793,Electronics,West,1,20.56,0.33,Card,1,3.6,13.78 +13437,5/30/2031,1509,Beauty,West,6,576.02,0.07,COD,8,1.4,3214.19 +13438,5/31/2031,1707,Clothing,West,1,316.42,0.09,Wallet,1,3,287.94 +13439,6/1/2031,1545,Electronics,South,4,590.06,0.05,Card,4,1.1,2242.23 +13440,6/2/2031,1563,Clothing,East,7,48.93,0.26,Card,7,2.6,253.46 +13441,6/3/2031,1623,Electronics,West,5,356.36,0.14,Card,4,1.2,1532.35 +13442,6/4/2031,1763,Home,South,3,219.36,0.02,Card,5,4.6,644.92 +13443,6/5/2031,1593,Home,North,6,508.44,0.31,Card,7,3.7,2104.94 +13444,6/6/2031,1743,Beauty,North,3,226.32,0.2,Card,4,4.2,543.17 +13445,6/7/2031,1226,Clothing,South,4,167.39,0.12,COD,5,2.9,589.21 +13446,6/8/2031,1744,Clothing,East,4,516.67,0.12,COD,7,4.4,1818.68 +13447,6/9/2031,1732,Home,South,3,234.17,0.1,Card,1,4.5,632.26 +13448,6/10/2031,1435,Electronics,North,6,24.85,0.16,Card,3,2.4,125.24 +13449,6/11/2031,1924,Clothing,North,7,243.32,0.12,Wallet,1,2.5,1498.85 +13450,6/12/2031,1421,Clothing,West,2,397.9,0.19,Wallet,3,3,644.6 +13451,6/13/2031,1553,Electronics,East,7,163.8,0.27,Card,11,1.2,837.02 +13452,6/14/2031,1020,Clothing,South,2,267.71,0.24,Card,2,5,406.92 +13453,6/15/2031,1553,Beauty,North,5,48.18,0.1,Wallet,5,2.4,216.81 +13454,6/16/2031,1396,Beauty,North,7,359.03,0.19,Card,10,2.9,2035.7 +13455,6/17/2031,1624,Electronics,North,3,457.43,0.29,Card,5,4,974.33 +13456,6/18/2031,1104,Electronics,South,3,256.79,0.02,Card,10,2.2,754.96 +13457,6/19/2031,1191,Electronics,South,6,260.84,0.03,Card,9,1.8,1518.09 +13458,6/20/2031,1016,Beauty,East,3,66.65,0.19,Card,8,1.5,161.96 +13459,6/21/2031,1119,Electronics,West,6,133.14,0.22,Card,3,3.1,623.1 +13460,6/22/2031,1392,Home,West,3,105.49,0.07,COD,1,1,294.32 +13461,6/23/2031,1424,Electronics,West,4,296.79,0.26,Wallet,5,3.8,878.5 +13462,6/24/2031,1128,Clothing,North,1,324.61,0.23,Wallet,11,2.8,249.95 +13463,6/25/2031,1129,Clothing,West,3,570.13,0.32,Card,3,3.1,1163.07 +13464,6/26/2031,1571,Home,North,1,57.84,0.06,Card,5,2.1,54.37 +13465,6/27/2031,1559,Electronics,East,2,365.92,0.26,COD,9,1.7,541.56 +13466,6/28/2031,1028,Clothing,North,5,323,0.03,COD,11,3.8,1566.55 +13467,6/29/2031,1096,Electronics,East,7,317,0.2,Card,1,1.8,1775.2 +13468,6/30/2031,1009,Home,East,7,525.8,0.19,Card,1,4.1,2981.29 +13469,7/1/2031,1241,Beauty,West,2,135.24,0.14,Card,9,1.8,232.61 +13470,7/2/2031,1825,Electronics,West,3,38.85,0.3,Card,3,3.5,81.59 +13471,7/3/2031,1955,Beauty,North,7,408.28,0,Card,10,3.6,2857.96 +13472,7/4/2031,1231,Clothing,South,6,216.92,0.18,Wallet,5,3,1067.25 +13473,7/5/2031,1788,Electronics,West,2,25.29,0.08,Card,9,5,46.53 +13474,7/6/2031,1283,Clothing,West,4,162.05,0.26,Wallet,11,2.5,479.67 +13475,7/7/2031,1714,Electronics,South,1,195.96,0.02,Wallet,5,4.5,192.04 +13476,7/8/2031,1758,Home,South,6,375.85,0.29,Card,3,1.7,1601.12 +13477,7/9/2031,1801,Home,West,7,115.96,0.29,COD,9,2.3,576.32 +13478,7/10/2031,1775,Electronics,South,6,256.64,0.29,COD,7,1.6,1093.29 +13479,7/11/2031,1954,Clothing,North,3,297.25,0.05,Card,7,3.4,847.16 +13480,7/12/2031,1725,Home,East,4,283.65,0.22,Card,8,3.6,884.99 +13481,7/13/2031,1199,Beauty,East,1,584.76,0.01,COD,11,2.8,578.91 +13482,7/14/2031,1944,Clothing,West,4,41.62,0.3,COD,5,3.9,116.54 +13483,7/15/2031,1078,Beauty,West,2,571.32,0.25,COD,2,4.5,856.98 +13484,7/16/2031,1912,Clothing,North,3,355.43,0.19,COD,11,4.1,863.69 +13485,7/17/2031,1955,Clothing,South,6,480.5,0.26,Card,9,2,2133.42 +13486,7/18/2031,1854,Home,West,6,266.78,0.03,COD,3,2.3,1552.66 +13487,7/19/2031,1855,Clothing,East,2,280.5,0.19,Card,11,2.5,454.41 +13488,7/20/2031,1172,Clothing,North,6,529.41,0.1,COD,2,1.8,2858.81 +13489,7/21/2031,1466,Clothing,North,5,539.12,0.34,Wallet,10,2.4,1779.1 +13490,7/22/2031,1580,Home,South,3,154.63,0.3,COD,10,2,324.72 +13491,7/23/2031,1415,Home,West,2,131.56,0.26,COD,5,5,194.71 +13492,7/24/2031,1939,Clothing,West,3,305.3,0.33,COD,8,4.1,613.65 +13493,7/25/2031,1448,Electronics,North,1,541.66,0.12,COD,3,4.4,476.66 +13494,7/26/2031,1086,Clothing,East,3,203.58,0.32,COD,6,4.7,415.3 +13495,7/27/2031,1100,Clothing,West,3,396.43,0.11,Card,9,3.7,1058.47 +13496,7/28/2031,1007,Electronics,East,1,429.27,0.26,Wallet,2,1.7,317.66 +13497,7/29/2031,1844,Home,North,2,470.52,0.26,Card,8,4,696.37 +13498,7/30/2031,1199,Clothing,West,3,344.9,0.01,Card,10,1.1,1024.35 +13499,7/31/2031,1504,Electronics,East,4,250.44,0.13,Card,7,1.5,871.53 +13500,8/1/2031,1086,Electronics,North,3,580.7,0.01,Card,3,1.1,1724.68 +13501,8/2/2031,1042,Electronics,East,2,372.63,0.35,COD,1,1.5,484.42 +13502,8/3/2031,1384,Beauty,West,6,441.21,0.04,Card,6,4,2541.37 +13503,8/4/2031,1620,Electronics,South,7,216.81,0.19,Wallet,2,4.5,1229.31 +13504,8/5/2031,1434,Electronics,East,1,406.92,0.28,Card,3,2.1,292.98 +13505,8/6/2031,1407,Clothing,South,6,165.81,0.07,Card,5,1.5,925.22 +13506,8/7/2031,1482,Electronics,West,2,158.38,0.17,Card,11,2.1,262.91 +13507,8/8/2031,1663,Electronics,South,5,433.11,0.21,COD,8,3.6,1710.78 +13508,8/9/2031,1016,Electronics,North,7,320.02,0.06,Wallet,2,2.4,2105.73 +13509,8/10/2031,1644,Clothing,South,6,414.72,0.27,COD,6,4.8,1816.47 +13510,8/11/2031,1147,Clothing,East,3,172.62,0.1,Card,1,1.5,466.07 +13511,8/12/2031,1276,Clothing,East,7,365.25,0.07,Wallet,7,5,2377.78 +13512,8/13/2031,1231,Clothing,South,3,274.7,0.2,Card,4,1,659.28 +13513,8/14/2031,1825,Beauty,North,1,364.22,0.14,COD,1,2.8,313.23 +13514,8/15/2031,1926,Clothing,West,3,185.16,0.32,Card,9,2,377.73 +13515,8/16/2031,1365,Electronics,South,7,433.54,0.31,Card,9,3.3,2094 +13516,8/17/2031,1227,Electronics,East,4,486.47,0.17,Card,11,1.4,1615.08 +13517,8/18/2031,1650,Clothing,East,4,167.05,0.13,Card,3,4.5,581.33 +13518,8/19/2031,1435,Home,South,6,190.86,0.11,Wallet,6,1.5,1019.19 +13519,8/20/2031,1398,Electronics,South,2,401.78,0.09,COD,7,3.3,731.24 +13520,8/21/2031,1210,Home,South,1,421.92,0.19,Wallet,4,1.1,341.76 +13521,8/22/2031,1390,Electronics,West,5,426.9,0.28,COD,6,2.2,1536.84 +13522,8/23/2031,1498,Clothing,East,6,414.38,0.11,COD,9,1.6,2212.79 +13523,8/24/2031,1539,Home,East,2,244.79,0.07,COD,10,4.9,455.31 +13524,8/25/2031,1562,Electronics,East,1,245.99,0.17,Wallet,6,1,204.17 +13525,8/26/2031,1490,Clothing,West,7,164.07,0.02,Card,7,2.4,1125.52 +13526,8/27/2031,1441,Electronics,North,1,106.75,0.25,Card,6,2.2,80.06 +13527,8/28/2031,1260,Home,East,7,420.16,0.18,COD,7,3.6,2411.72 +13528,8/29/2031,1772,Electronics,East,6,69.52,0.17,Wallet,1,1.2,346.21 +13529,8/30/2031,1349,Beauty,North,2,563.61,0.11,Wallet,6,4.2,1003.23 +13530,8/31/2031,1351,Electronics,West,2,498.61,0.32,COD,9,2.9,678.11 +13531,9/1/2031,1519,Beauty,North,3,516.64,0.03,Card,11,2.8,1503.42 +13532,9/2/2031,1319,Clothing,North,5,545.4,0.3,Card,3,1.9,1908.9 +13533,9/3/2031,1137,Home,North,4,254.03,0.13,Wallet,6,3,884.02 +13534,9/4/2031,1549,Electronics,North,3,510.32,0.31,Card,4,2.5,1056.36 +13535,9/5/2031,1622,Beauty,West,1,107.47,0.26,Card,7,2,79.53 +13536,9/6/2031,1991,Electronics,West,5,27.66,0.04,Wallet,7,1.7,132.77 +13537,9/7/2031,1367,Electronics,North,5,474.16,0.29,Card,9,3.9,1683.27 +13538,9/8/2031,1219,Clothing,South,2,58.76,0.24,COD,4,1.6,89.32 +13539,9/9/2031,1336,Electronics,South,5,593.29,0.01,COD,8,1.7,2936.79 +13540,9/10/2031,1222,Electronics,South,6,409.76,0.05,Card,8,3.3,2335.63 +13541,9/11/2031,1647,Beauty,South,5,455.77,0.22,Card,8,1.9,1777.5 +13542,9/12/2031,1767,Beauty,East,1,158.8,0.23,Card,8,2.8,122.28 +13543,9/13/2031,1359,Clothing,West,6,409.21,0.26,COD,6,3.2,1816.89 +13544,9/14/2031,1920,Beauty,West,6,40.28,0.25,COD,8,2.1,181.26 +13545,9/15/2031,1328,Clothing,North,3,505.13,0.23,Card,6,2.4,1166.85 +13546,9/16/2031,1961,Electronics,East,5,114.23,0.27,Wallet,10,1.8,416.94 +13547,9/17/2031,1462,Home,North,2,422.95,0.2,Card,2,2.8,676.72 +13548,9/18/2031,1945,Home,North,7,146.32,0.09,Card,3,5,932.06 +13549,9/19/2031,1962,Beauty,West,3,55.05,0.32,Card,6,2.5,112.3 +13550,9/20/2031,1560,Electronics,East,2,296.67,0.01,Card,7,3.6,587.41 +13551,9/21/2031,1803,Home,South,5,114.03,0.13,Wallet,4,3.5,496.03 +13552,9/22/2031,1381,Electronics,West,3,441.72,0.26,Card,1,4.1,980.62 +13553,9/23/2031,1835,Electronics,East,5,153.98,0.15,Card,4,3.8,654.42 +13554,9/24/2031,1589,Electronics,East,1,215.35,0.01,Wallet,6,1,213.2 +13555,9/25/2031,1616,Beauty,West,3,346.95,0.02,COD,8,2.2,1020.03 +13556,9/26/2031,1168,Home,West,2,181.71,0.23,Card,4,4.5,279.83 +13557,9/27/2031,1216,Home,North,1,236.12,0.34,Wallet,10,3.2,155.84 +13558,9/28/2031,1377,Clothing,North,4,492.14,0.19,COD,1,1.4,1594.53 +13559,9/29/2031,1118,Electronics,North,2,119.84,0.18,Card,5,2.1,196.54 +13560,9/30/2031,1189,Electronics,South,7,63.09,0.11,COD,7,2.1,393.05 +13561,10/1/2031,1766,Electronics,West,5,207.09,0.09,Wallet,6,4.5,942.26 +13562,10/2/2031,1369,Clothing,East,2,263.26,0.01,COD,3,3.2,521.25 +13563,10/3/2031,1777,Home,West,4,332.46,0.1,COD,7,3.4,1196.86 +13564,10/4/2031,1148,Clothing,East,2,232.87,0.16,Wallet,4,2.5,391.22 +13565,10/5/2031,1675,Electronics,South,1,477.1,0.07,COD,5,1.2,443.7 +13566,10/6/2031,1651,Electronics,West,6,38,0.03,Card,11,1.3,221.16 +13567,10/7/2031,1858,Electronics,East,2,267.58,0.25,Card,7,2.7,401.37 +13568,10/8/2031,1487,Clothing,East,3,238.62,0.31,COD,2,1.7,493.94 +13569,10/9/2031,1769,Beauty,North,7,393.83,0.33,Card,4,1.4,1847.06 +13570,10/10/2031,1373,Clothing,South,4,580.27,0.22,Wallet,4,2,1810.44 +13571,10/11/2031,1780,Home,West,2,313.57,0.02,Card,6,4,614.6 +13572,10/12/2031,1692,Clothing,North,4,592.32,0.26,COD,11,1.3,1753.27 +13573,10/13/2031,1159,Clothing,South,6,191.82,0.04,COD,7,2.8,1104.88 +13574,10/14/2031,1350,Electronics,North,1,33.06,0.23,COD,4,4.3,25.46 +13575,10/15/2031,1911,Beauty,West,3,111.91,0.27,Card,10,2.1,245.08 +13576,10/16/2031,1287,Home,East,5,246.15,0.25,Card,1,2.2,923.06 +13577,10/17/2031,1287,Electronics,West,2,200.06,0.33,COD,1,4.5,268.08 +13578,10/18/2031,1891,Clothing,South,1,71.78,0.26,Wallet,5,3.6,53.12 +13579,10/19/2031,1225,Clothing,West,4,268.11,0.24,COD,1,4.2,815.05 +13580,10/20/2031,1522,Clothing,South,6,212.8,0.09,Card,3,2.2,1161.89 +13581,10/21/2031,1521,Beauty,North,7,86.73,0.32,Card,9,5,412.83 +13582,10/22/2031,1782,Clothing,South,4,188.23,0.06,Wallet,3,1.6,707.74 +13583,10/23/2031,1272,Clothing,East,7,533.57,0.32,Wallet,3,4.8,2539.79 +13584,10/24/2031,1935,Electronics,East,6,191.7,0.11,Card,9,4.6,1023.68 +13585,10/25/2031,1401,Electronics,East,7,432.66,0.05,COD,5,3.2,2877.19 +13586,10/26/2031,1182,Electronics,North,6,373.05,0.29,Card,8,3.3,1589.19 +13587,10/27/2031,1968,Electronics,South,1,264.9,0,COD,10,4.1,264.9 +13588,10/28/2031,1664,Home,North,2,154.83,0.29,Wallet,9,2.2,219.86 +13589,10/29/2031,1487,Home,West,5,230.87,0.09,Card,6,3.1,1050.46 +13590,10/30/2031,1826,Electronics,West,2,361.38,0.31,COD,7,4.6,498.7 +13591,10/31/2031,1845,Home,West,3,220.19,0.24,Card,7,1.3,502.03 +13592,11/1/2031,1123,Electronics,West,2,140.71,0.23,Card,7,4.6,216.69 +13593,11/2/2031,1984,Electronics,East,6,83.13,0.13,COD,4,3.9,433.94 +13594,11/3/2031,1625,Electronics,South,6,529.66,0.02,Card,2,4.1,3114.4 +13595,11/4/2031,1789,Clothing,East,3,272.58,0.29,COD,2,1.3,580.6 +13596,11/5/2031,1413,Electronics,South,4,380.75,0.06,Card,7,1.8,1431.62 +13597,11/6/2031,1979,Clothing,South,6,301.89,0.13,COD,10,4.7,1575.87 +13598,11/7/2031,1724,Clothing,North,3,525.45,0.21,Card,7,1.5,1245.32 +13599,11/8/2031,1171,Beauty,West,6,334.96,0.17,COD,10,3.5,1668.1 +13600,11/9/2031,1287,Electronics,South,5,296.26,0.07,COD,7,4.1,1377.61 +13601,11/10/2031,1434,Electronics,West,6,555.89,0.05,Wallet,8,1.9,3168.57 +13602,11/11/2031,1685,Electronics,West,1,436.02,0.04,Wallet,3,3.8,418.58 +13603,11/12/2031,1112,Clothing,West,3,80.26,0.3,Card,11,1.3,168.55 +13604,11/13/2031,1887,Electronics,East,7,118.96,0.01,Card,5,3,824.39 +13605,11/14/2031,1916,Home,West,2,475.47,0.34,COD,6,2.3,627.62 +13606,11/15/2031,1994,Clothing,South,3,503.97,0.07,COD,8,3.6,1406.08 +13607,11/16/2031,1121,Clothing,East,4,333.94,0.04,Card,8,4.6,1282.33 +13608,11/17/2031,1543,Clothing,West,6,339.36,0.2,Card,10,1.5,1628.93 +13609,11/18/2031,1221,Electronics,North,3,384.68,0.03,COD,3,2.8,1119.42 +13610,11/19/2031,1630,Electronics,West,5,271.88,0.21,Wallet,4,2.7,1073.93 +13611,11/20/2031,1038,Electronics,West,3,412.92,0.3,Wallet,6,2.3,867.13 +13612,11/21/2031,1496,Clothing,East,5,78.46,0.02,Card,4,2.9,384.45 +13613,11/22/2031,1779,Electronics,South,6,577.35,0.28,Card,10,4.5,2494.15 +13614,11/23/2031,1232,Electronics,West,2,453.84,0.14,Card,4,4.9,780.6 +13615,11/24/2031,1942,Beauty,East,6,384.24,0.06,COD,5,1,2167.11 +13616,11/25/2031,1529,Electronics,East,4,200.05,0.06,COD,10,4,752.19 +13617,11/26/2031,1148,Home,South,1,109.16,0.32,COD,7,3.5,74.23 +13618,11/27/2031,1396,Home,East,2,254.47,0.04,COD,2,5,488.58 +13619,11/28/2031,1660,Electronics,South,2,402.02,0.3,Card,2,1.4,562.83 +13620,11/29/2031,1637,Electronics,North,1,385.72,0.19,Card,10,4.2,312.43 +13621,11/30/2031,1903,Electronics,West,3,238.85,0.01,Wallet,9,4.7,709.38 +13622,12/1/2031,1301,Home,East,6,373.77,0.16,Card,4,4.6,1883.8 +13623,12/2/2031,1359,Clothing,North,3,491.04,0.29,Card,5,3.2,1045.92 +13624,12/3/2031,1237,Home,East,3,30.38,0.25,COD,3,2.3,68.36 +13625,12/4/2031,1646,Beauty,East,6,278.61,0.17,COD,2,3.6,1387.48 +13626,12/5/2031,1662,Home,North,4,458.75,0.3,Wallet,10,2.2,1284.5 +13627,12/6/2031,1235,Electronics,East,2,334.49,0.04,Card,8,2.6,642.22 +13628,12/7/2031,1735,Electronics,East,5,396.11,0.32,COD,4,2.8,1346.77 +13629,12/8/2031,1202,Home,North,1,317.26,0.3,COD,1,2.2,222.08 +13630,12/9/2031,1255,Electronics,East,2,595.25,0.25,Wallet,6,2.4,892.88 +13631,12/10/2031,1597,Electronics,South,3,46.95,0.29,COD,6,1,100 +13632,12/11/2031,1661,Home,East,1,302.26,0.19,Wallet,2,2.2,244.83 +13633,12/12/2031,1234,Clothing,West,5,68.48,0.24,Card,2,2.9,260.22 +13634,12/13/2031,1344,Beauty,East,2,108.47,0.2,COD,8,1.7,173.55 +13635,12/14/2031,1533,Home,West,2,239.08,0.12,Card,11,4.2,420.78 +13636,12/15/2031,1859,Electronics,West,4,105.99,0.2,Card,7,3.2,339.17 +13637,12/16/2031,1796,Beauty,East,2,578.76,0.09,Card,2,4.2,1053.34 +13638,12/17/2031,1780,Electronics,North,2,568.87,0.15,COD,10,1.5,967.08 +13639,12/18/2031,1465,Electronics,South,5,211.62,0.1,Card,1,4.3,952.29 +13640,12/19/2031,1769,Clothing,South,5,389.25,0.04,Wallet,11,4.8,1868.4 +13641,12/20/2031,1540,Electronics,East,1,327.25,0.11,COD,8,2.4,291.25 +13642,12/21/2031,1212,Clothing,North,3,492.12,0.3,Card,10,2.1,1033.45 +13643,12/22/2031,1462,Electronics,North,5,382.06,0.13,COD,2,3.6,1661.96 +13644,12/23/2031,1435,Clothing,South,1,15.15,0.26,Card,5,3.5,11.21 +13645,12/24/2031,1282,Clothing,North,2,461.46,0.06,Card,6,1.4,867.54 +13646,12/25/2031,1561,Home,East,1,451.91,0.15,COD,10,4.7,384.12 +13647,12/26/2031,1606,Home,East,1,313.19,0.04,Wallet,1,2.9,300.66 +13648,12/27/2031,1462,Electronics,North,1,543.21,0.05,COD,2,4.1,516.05 +13649,12/28/2031,1406,Clothing,East,6,546.44,0.22,Wallet,10,2.4,2557.34 +13650,12/29/2031,1087,Clothing,West,1,321.49,0.21,COD,4,2,253.98 +13651,12/30/2031,1043,Electronics,South,5,370.67,0.07,Card,2,1.4,1723.62 +13652,12/31/2031,1460,Home,East,7,597.97,0.17,COD,11,2.1,3474.21 +13653,1/1/2032,1277,Home,North,7,189.81,0.3,COD,6,5,930.07 +13654,1/2/2032,1682,Electronics,South,7,204.9,0.06,Card,4,3.6,1348.24 +13655,1/3/2032,1420,Clothing,East,7,121.92,0.01,Wallet,11,4.2,844.91 +13656,1/4/2032,1700,Electronics,South,6,539.08,0.23,COD,3,4.8,2490.55 +13657,1/5/2032,1352,Clothing,North,3,450.53,0.02,Card,6,1.3,1324.56 +13658,1/6/2032,1695,Electronics,West,1,76.8,0.34,Wallet,9,1.7,50.69 +13659,1/7/2032,1514,Beauty,West,4,589.33,0.21,Card,8,4.7,1862.28 +13660,1/8/2032,1702,Home,East,7,442.61,0.16,Wallet,2,3.3,2602.55 +13661,1/9/2032,1629,Clothing,West,2,512.56,0.15,Card,3,3.5,871.35 +13662,1/10/2032,1018,Clothing,East,7,43.17,0.2,COD,2,2.7,241.75 +13663,1/11/2032,1022,Beauty,South,7,310.4,0.03,COD,10,4.3,2107.62 +13664,1/12/2032,1412,Clothing,East,2,423.68,0.33,COD,7,3.1,567.73 +13665,1/13/2032,1029,Electronics,East,6,332.62,0.22,Card,9,4.3,1556.66 +13666,1/14/2032,1806,Clothing,East,2,404.99,0.06,Card,1,5,761.38 +13667,1/15/2032,1107,Home,West,2,493.46,0.2,Card,11,3.6,789.54 +13668,1/16/2032,1366,Clothing,East,6,233.99,0.05,Wallet,3,3.1,1333.74 +13669,1/17/2032,1280,Home,North,2,511.47,0.01,Card,6,2.5,1012.71 +13670,1/18/2032,1127,Beauty,East,1,110.31,0.22,COD,4,1.8,86.04 +13671,1/19/2032,1228,Beauty,South,7,173.47,0.23,Wallet,10,3.6,935 +13672,1/20/2032,1110,Beauty,North,3,40.36,0.2,Wallet,10,1.3,96.86 +13673,1/21/2032,1135,Electronics,South,6,228.19,0.06,Card,1,4.8,1286.99 +13674,1/22/2032,1361,Clothing,South,4,237.25,0.21,Wallet,9,3.6,749.71 +13675,1/23/2032,1185,Home,South,6,486.08,0.02,Card,7,4.8,2858.15 +13676,1/24/2032,1655,Home,North,5,397.08,0.21,COD,11,2.1,1568.47 +13677,1/25/2032,1583,Clothing,North,4,270.48,0.19,COD,7,4.8,876.36 +13678,1/26/2032,1128,Electronics,West,5,396.49,0.23,Card,1,3.4,1526.49 +13679,1/27/2032,1875,Home,North,6,45.88,0.31,Card,9,4.2,189.94 +13680,1/28/2032,1260,Home,East,5,120.46,0.3,COD,8,1.7,421.61 +13681,1/29/2032,1514,Electronics,South,4,381.76,0.34,Card,11,3,1007.85 +13682,1/30/2032,1448,Clothing,West,1,390.2,0.34,Wallet,10,3.3,257.53 +13683,1/31/2032,1899,Electronics,North,6,467.87,0.27,Card,5,2.6,2049.27 +13684,2/1/2032,1103,Electronics,South,6,250.75,0.33,Wallet,4,2,1008.01 +13685,2/2/2032,1482,Electronics,North,2,437.69,0.3,COD,1,4.6,612.77 +13686,2/3/2032,1223,Clothing,West,6,415.13,0.25,Wallet,9,1.3,1868.08 +13687,2/4/2032,1831,Clothing,North,7,578.59,0.03,COD,8,1.6,3928.63 +13688,2/5/2032,1873,Clothing,North,7,140.85,0.02,Wallet,2,2.3,966.23 +13689,2/6/2032,1865,Home,South,6,337.73,0.29,Card,4,4.7,1438.73 +13690,2/7/2032,1490,Home,East,1,367.03,0.17,COD,4,3.3,304.63 +13691,2/8/2032,1472,Electronics,North,2,599.21,0.29,Card,7,2.5,850.88 +13692,2/9/2032,1009,Electronics,West,3,132.69,0.11,Card,3,2.6,354.28 +13693,2/10/2032,1404,Beauty,North,5,321.08,0.14,COD,8,4.4,1380.64 +13694,2/11/2032,1895,Electronics,North,4,217.52,0.25,COD,11,1.1,652.56 +13695,2/12/2032,1301,Beauty,East,3,322.65,0.32,Card,7,1,658.21 +13696,2/13/2032,1230,Home,South,2,150.8,0.03,COD,10,1.2,292.55 +13697,2/14/2032,1730,Clothing,West,7,42.85,0.3,COD,4,2.9,209.96 +13698,2/15/2032,1922,Beauty,South,7,349.95,0.28,Card,9,3.3,1763.75 +13699,2/16/2032,1065,Electronics,South,7,211.47,0.11,COD,6,3.5,1317.46 +13700,2/17/2032,1936,Electronics,South,1,121.44,0.12,COD,3,3.9,106.87 +13701,2/18/2032,1111,Clothing,North,7,204.5,0.02,Card,7,1.8,1402.87 +13702,2/19/2032,1012,Clothing,East,4,43.83,0.01,COD,6,2,173.57 +13703,2/20/2032,1392,Beauty,North,5,571.01,0.17,COD,8,2,2369.69 +13704,2/21/2032,1499,Electronics,West,6,354.97,0.03,Wallet,5,1.6,2065.93 +13705,2/22/2032,1931,Clothing,East,6,491.64,0.07,Card,6,2,2743.35 +13706,2/23/2032,1597,Clothing,South,3,262.52,0.3,Wallet,1,3.5,551.29 +13707,2/24/2032,1233,Home,East,5,543.44,0.2,Card,8,2.5,2173.76 +13708,2/25/2032,1601,Electronics,West,2,297.74,0.22,Card,1,4.1,464.47 +13709,2/26/2032,1313,Clothing,North,5,350.76,0.07,Card,3,3.1,1631.03 +13710,2/27/2032,1565,Home,North,1,302.7,0.29,Wallet,2,1.8,214.92 +13711,2/28/2032,1011,Electronics,South,3,443.97,0.3,COD,6,2.9,932.34 +13712,2/29/2032,1208,Home,North,3,346.49,0.18,Card,8,3.4,852.37 +13713,3/1/2032,1973,Clothing,North,1,173.89,0.32,Card,8,4.5,118.25 +13714,3/2/2032,1013,Home,West,5,100.14,0.3,Card,7,4.3,350.49 +13715,3/3/2032,1632,Home,East,7,369.58,0.26,Card,7,2.7,1914.42 +13716,3/4/2032,1417,Electronics,North,1,301.17,0.26,COD,8,3.6,222.87 +13717,3/5/2032,1436,Clothing,West,7,71.15,0.04,COD,5,2.2,478.13 +13718,3/6/2032,1376,Beauty,West,4,246.44,0.09,Wallet,3,3.5,897.04 +13719,3/7/2032,1019,Clothing,South,1,316.14,0.02,Wallet,2,4.7,309.82 +13720,3/8/2032,1586,Beauty,West,7,498.73,0,COD,3,3.5,3491.11 +13721,3/9/2032,1911,Clothing,South,5,59.52,0.06,Card,11,2.2,279.74 +13722,3/10/2032,1754,Electronics,North,7,218.87,0.31,Card,11,3.6,1057.14 +13723,3/11/2032,1734,Clothing,South,1,496.25,0.08,COD,3,4.6,456.55 +13724,3/12/2032,1069,Beauty,West,2,394.33,0.34,COD,7,1.5,520.52 +13725,3/13/2032,1823,Electronics,East,6,184.63,0.21,COD,1,2.9,875.15 +13726,3/14/2032,1210,Beauty,East,1,509.52,0.08,Wallet,7,2.3,468.76 +13727,3/15/2032,1100,Beauty,North,6,303.58,0.17,Wallet,6,2,1511.83 +13728,3/16/2032,1697,Clothing,North,1,306.54,0.08,Card,11,2.6,282.02 +13729,3/17/2032,1131,Electronics,East,5,586.3,0.34,Card,10,2.6,1934.79 +13730,3/18/2032,1622,Home,South,4,569.06,0.3,Wallet,2,1.8,1593.37 +13731,3/19/2032,1380,Electronics,North,4,224.74,0.01,Wallet,10,2.6,889.97 +13732,3/20/2032,1131,Home,West,6,97.24,0.33,Card,1,3.5,390.9 +13733,3/21/2032,1019,Clothing,North,5,205.52,0.25,COD,9,1.1,770.7 +13734,3/22/2032,1905,Clothing,South,7,32.83,0.03,COD,2,5,222.92 +13735,3/23/2032,1535,Home,North,5,27.15,0.23,COD,4,2.2,104.53 +13736,3/24/2032,1226,Clothing,West,5,246.38,0.23,Card,9,3.5,948.56 +13737,3/25/2032,1153,Clothing,West,2,565.5,0.08,Wallet,9,2.1,1040.52 +13738,3/26/2032,1804,Clothing,West,3,524.74,0.27,COD,11,2.6,1149.18 +13739,3/27/2032,1741,Clothing,South,1,314.19,0.03,Card,1,3.2,304.76 +13740,3/28/2032,1468,Clothing,South,5,345.66,0.17,COD,2,3.4,1434.49 +13741,3/29/2032,1821,Home,West,5,18.47,0,COD,2,4.1,92.35 +13742,3/30/2032,1999,Clothing,West,5,141.07,0.34,Wallet,2,4.2,465.53 +13743,3/31/2032,1870,Clothing,South,4,29.49,0.26,Card,8,3.1,87.29 +13744,4/1/2032,1404,Home,South,5,456.41,0.06,Wallet,8,1.3,2145.13 +13745,4/2/2032,1201,Electronics,South,1,100.2,0.12,Card,10,3.2,88.18 +13746,4/3/2032,1037,Electronics,East,7,523.39,0.06,COD,8,2.9,3443.91 +13747,4/4/2032,1941,Beauty,South,7,391.34,0.27,COD,4,1.9,1999.75 +13748,4/5/2032,1771,Home,West,5,149.21,0.02,Card,8,1,731.13 +13749,4/6/2032,1187,Clothing,East,1,107.27,0.29,COD,7,2.3,76.16 +13750,4/7/2032,1056,Clothing,South,2,382.16,0.33,Wallet,8,2,512.09 +13751,4/8/2032,1940,Electronics,West,7,541.99,0.24,COD,1,2.9,2883.39 +13752,4/9/2032,1019,Clothing,North,3,435.24,0.07,COD,3,4,1214.32 +13753,4/10/2032,1272,Clothing,East,4,218.9,0.13,Card,10,2.8,761.77 +13754,4/11/2032,1118,Clothing,West,1,358.62,0.17,Card,6,4.8,297.65 +13755,4/12/2032,1582,Clothing,North,7,196.8,0.21,Card,1,1.9,1088.3 +13756,4/13/2032,1515,Electronics,West,7,599.5,0.23,Wallet,4,1.9,3231.3 +13757,4/14/2032,1220,Electronics,South,6,453.07,0.19,COD,9,3.4,2201.92 +13758,4/15/2032,1525,Beauty,South,2,374.41,0.12,Wallet,7,4.6,658.96 +13759,4/16/2032,1514,Clothing,North,3,262.61,0.31,Card,1,3.7,543.6 +13760,4/17/2032,1727,Clothing,South,3,376.62,0.03,COD,6,3.7,1095.96 +13761,4/18/2032,1740,Electronics,West,3,214.85,0.16,Card,6,4.2,541.42 +13762,4/19/2032,1335,Electronics,North,1,31.89,0.27,COD,2,3.7,23.28 +13763,4/20/2032,1697,Home,West,2,246.13,0.02,Card,6,4,482.41 +13764,4/21/2032,1054,Clothing,West,5,559.33,0.25,Card,10,4.5,2097.49 +13765,4/22/2032,1499,Clothing,West,6,381.39,0.29,COD,2,1,1624.72 +13766,4/23/2032,1899,Electronics,South,2,64.11,0.23,Card,8,4.5,98.73 +13767,4/24/2032,1887,Home,South,2,532.72,0,COD,7,1.9,1065.44 +13768,4/25/2032,1765,Electronics,West,7,172.29,0.06,COD,6,4.6,1133.67 +13769,4/26/2032,1535,Electronics,East,2,157.61,0.12,COD,10,2.1,277.39 +13770,4/27/2032,1161,Clothing,West,1,188.8,0.08,Wallet,6,2.8,173.7 +13771,4/28/2032,1669,Electronics,West,6,352.66,0.34,Card,9,4.7,1396.53 +13772,4/29/2032,1593,Electronics,North,1,333.64,0.23,COD,9,1.4,256.9 +13773,4/30/2032,1914,Clothing,West,6,302.48,0.1,Wallet,10,4,1633.39 +13774,5/1/2032,1158,Home,South,6,434.76,0.33,COD,10,2.6,1747.74 +13775,5/2/2032,1187,Home,North,7,200.17,0.26,Card,2,1.1,1036.88 +13776,5/3/2032,1059,Clothing,East,1,472.51,0.1,Wallet,3,4.8,425.26 +13777,5/4/2032,1914,Electronics,North,6,117.56,0.13,Card,10,1.5,613.66 +13778,5/5/2032,1816,Electronics,East,2,472.83,0.07,Card,7,4.1,879.46 +13779,5/6/2032,1318,Beauty,North,1,403.33,0.34,Card,11,2.5,266.2 +13780,5/7/2032,1877,Clothing,North,6,414.68,0.18,Card,10,4.2,2040.23 +13781,5/8/2032,1210,Home,East,3,296.71,0.31,Card,9,4,614.19 +13782,5/9/2032,1405,Electronics,South,1,405.2,0.12,Card,6,3.5,356.58 +13783,5/10/2032,1663,Clothing,South,7,61.68,0.3,Card,11,4.8,302.23 +13784,5/11/2032,1108,Electronics,South,4,513.16,0.02,Card,1,1.4,2011.59 +13785,5/12/2032,1075,Clothing,North,1,47.5,0.34,Card,11,4.2,31.35 +13786,5/13/2032,1541,Beauty,West,1,102.01,0.32,COD,7,3.7,69.37 +13787,5/14/2032,1313,Beauty,North,1,352.42,0.13,Card,11,2.3,306.61 +13788,5/15/2032,1997,Clothing,West,6,447.56,0.27,Card,1,3.2,1960.31 +13789,5/16/2032,1116,Clothing,West,1,59.61,0.26,Card,5,3.6,44.11 +13790,5/17/2032,1926,Beauty,South,4,553.65,0.32,Card,9,3.9,1505.93 +13791,5/18/2032,1867,Home,West,5,584.56,0.11,Card,10,1.7,2601.29 +13792,5/19/2032,1703,Electronics,North,1,369.48,0.16,Card,11,1.4,310.36 +13793,5/20/2032,1018,Clothing,North,3,296.53,0.3,COD,10,1.4,622.71 +13794,5/21/2032,1431,Electronics,South,4,448.72,0.27,COD,9,2.2,1310.26 +13795,5/22/2032,1684,Clothing,East,5,207.09,0.14,Wallet,1,1.6,890.49 +13796,5/23/2032,1739,Clothing,North,6,303.56,0.3,COD,6,3.1,1274.95 +13797,5/24/2032,1349,Clothing,West,1,550.95,0.02,COD,3,2.7,539.93 +13798,5/25/2032,1182,Clothing,North,5,574.06,0.27,Card,9,4.6,2095.32 +13799,5/26/2032,1112,Electronics,North,3,557.34,0.07,COD,3,3.9,1554.98 +13800,5/27/2032,1182,Clothing,North,4,168.53,0.1,Card,2,1.8,606.71 +13801,5/28/2032,1480,Home,East,4,150.99,0.17,COD,8,1.2,501.29 +13802,5/29/2032,1145,Home,West,6,189.13,0.16,Card,3,3.8,953.22 +13803,5/30/2032,1830,Electronics,South,6,273.17,0.18,COD,5,4.4,1344 +13804,5/31/2032,1627,Beauty,North,6,198.79,0.19,Wallet,6,3.8,966.12 +13805,6/1/2032,1112,Beauty,West,5,233.91,0.12,Wallet,10,3.6,1029.2 +13806,6/2/2032,1762,Electronics,West,1,378.07,0.06,Card,10,2,355.39 +13807,6/3/2032,1475,Electronics,South,2,461.08,0.27,Card,1,3,673.18 +13808,6/4/2032,1762,Home,North,4,445.3,0.14,Wallet,7,3.9,1531.83 +13809,6/5/2032,1302,Home,East,2,491.44,0.18,COD,11,1.8,805.96 +13810,6/6/2032,1970,Beauty,West,7,33.83,0.23,COD,7,2.9,182.34 +13811,6/7/2032,1824,Beauty,South,4,42.92,0.32,COD,5,1.5,116.74 +13812,6/8/2032,1117,Clothing,East,6,476.79,0.25,COD,9,3.1,2145.56 +13813,6/9/2032,1812,Clothing,West,1,326.85,0.02,Wallet,11,3.3,320.31 +13814,6/10/2032,1160,Electronics,North,1,353.21,0.29,COD,2,3.1,250.78 +13815,6/11/2032,1400,Electronics,West,4,45.76,0.35,COD,5,2.9,118.98 +13816,6/12/2032,1197,Clothing,East,5,164.36,0.17,COD,2,3.3,682.09 +13817,6/13/2032,1259,Clothing,East,7,388.44,0.34,Wallet,2,5,1794.59 +13818,6/14/2032,1659,Clothing,North,6,517.62,0.19,COD,11,3.5,2515.63 +13819,6/15/2032,1751,Home,North,1,551.44,0.16,COD,9,4,463.21 +13820,6/16/2032,1046,Electronics,South,7,307.75,0.12,Wallet,7,1.8,1895.74 +13821,6/17/2032,1986,Clothing,North,7,334.1,0.23,COD,4,3.1,1800.8 +13822,6/18/2032,1398,Electronics,South,1,502.33,0.08,Card,11,1,462.14 +13823,6/19/2032,1709,Clothing,East,3,329.51,0.04,COD,8,1.1,948.99 +13824,6/20/2032,1558,Home,East,7,317.36,0.01,COD,11,2.3,2199.3 +13825,6/21/2032,1077,Home,West,1,544.47,0.1,Card,11,2.9,490.02 +13826,6/22/2032,1123,Beauty,West,3,477.11,0.14,COD,4,3.3,1230.94 +13827,6/23/2032,1074,Electronics,South,1,546.81,0.19,COD,1,4.6,442.92 +13828,6/24/2032,1870,Clothing,North,1,142.67,0.1,COD,10,4.1,128.4 +13829,6/25/2032,1136,Electronics,North,7,321.76,0.34,COD,3,2.2,1486.53 +13830,6/26/2032,1601,Clothing,West,5,507.85,0.1,COD,10,4,2285.33 +13831,6/27/2032,1399,Beauty,East,5,80.02,0.15,Wallet,1,3.2,340.08 +13832,6/28/2032,1836,Home,South,6,479.88,0.04,Card,2,4.1,2764.11 +13833,6/29/2032,1504,Beauty,East,1,122.04,0.09,Card,2,2.6,111.06 +13834,6/30/2032,1499,Electronics,East,6,487.75,0.02,Card,7,1.4,2867.97 +13835,7/1/2032,1572,Beauty,North,6,373.02,0.2,COD,4,3.5,1790.5 +13836,7/2/2032,1137,Electronics,South,6,128.04,0.26,Card,10,3.2,568.5 +13837,7/3/2032,1049,Beauty,East,6,291.91,0.07,Card,9,4.8,1628.86 +13838,7/4/2032,1770,Electronics,West,4,413.91,0.13,COD,2,1.6,1440.41 +13839,7/5/2032,1972,Electronics,West,7,385.8,0.01,Card,9,3.6,2673.59 +13840,7/6/2032,1618,Clothing,North,7,264.94,0.29,COD,6,2.9,1316.75 +13841,7/7/2032,1624,Beauty,West,4,541.13,0.27,COD,10,2.5,1580.1 +13842,7/8/2032,1861,Electronics,West,1,318.77,0.02,COD,8,4.2,312.39 +13843,7/9/2032,1253,Clothing,East,4,310.93,0.13,Card,7,4.2,1082.04 +13844,7/10/2032,1629,Beauty,West,1,51.42,0.33,COD,11,3.9,34.45 +13845,7/11/2032,1709,Clothing,West,5,554.44,0.14,Card,8,1.3,2384.09 +13846,7/12/2032,1848,Electronics,East,7,118.61,0.18,Wallet,9,2.4,680.82 +13847,7/13/2032,1876,Clothing,North,2,324.08,0.12,Wallet,8,1.2,570.38 +13848,7/14/2032,1562,Clothing,North,3,485.09,0.21,Card,6,2.4,1149.66 +13849,7/15/2032,1756,Beauty,South,7,141.04,0.34,Card,8,3.6,651.6 +13850,7/16/2032,1914,Home,West,4,323.51,0.35,Card,8,3.1,841.13 +13851,7/17/2032,1425,Clothing,East,4,155.8,0.27,Card,2,3.8,454.94 +13852,7/18/2032,1546,Beauty,South,5,459.42,0.14,COD,2,3.2,1975.51 +13853,7/19/2032,1301,Clothing,North,4,345.14,0.17,COD,11,3.2,1145.86 +13854,7/20/2032,1921,Electronics,North,1,515.75,0.12,Card,1,3,453.86 +13855,7/21/2032,1580,Electronics,East,1,538.32,0.34,COD,10,2.5,355.29 +13856,7/22/2032,1348,Clothing,South,2,394.51,0.25,Wallet,2,2.8,591.76 +13857,7/23/2032,1831,Electronics,South,2,439.35,0.16,COD,7,1.4,738.11 +13858,7/24/2032,1932,Beauty,East,7,336.29,0,Card,11,4.3,2354.03 +13859,7/25/2032,1979,Home,East,2,239.89,0.18,COD,3,4.6,393.42 +13860,7/26/2032,1048,Electronics,South,1,394.15,0.34,COD,4,4.1,260.14 +13861,7/27/2032,1916,Clothing,North,6,546.35,0.18,Wallet,4,3.3,2688.04 +13862,7/28/2032,1073,Home,West,6,258.76,0.06,Card,4,3.3,1459.41 +13863,7/29/2032,1703,Beauty,North,2,198.93,0.01,Card,2,2.9,393.88 +13864,7/30/2032,1260,Beauty,East,2,242.24,0.12,COD,11,1.9,426.34 +13865,7/31/2032,1355,Clothing,South,1,269.71,0.32,COD,6,2.5,183.4 +13866,8/1/2032,1581,Home,South,5,58.03,0.35,COD,1,5,188.6 +13867,8/2/2032,1601,Clothing,West,7,306.59,0.33,Card,5,1.6,1437.91 +13868,8/3/2032,1259,Clothing,South,4,304.17,0.26,COD,2,3.2,900.34 +13869,8/4/2032,1637,Electronics,West,7,359.24,0.2,Card,9,4.5,2011.74 +13870,8/5/2032,1742,Electronics,North,3,227.25,0.21,Card,2,2.8,538.58 +13871,8/6/2032,1294,Clothing,North,6,373.67,0.19,COD,6,3.4,1816.04 +13872,8/7/2032,1930,Electronics,South,6,528.76,0.25,Card,4,4.3,2379.42 +13873,8/8/2032,1640,Electronics,South,1,573.95,0.15,Card,6,3.2,487.86 +13874,8/9/2032,1791,Home,East,7,356.41,0.23,COD,2,3.9,1921.05 +13875,8/10/2032,1312,Electronics,East,1,39.92,0.04,COD,2,2.4,38.32 +13876,8/11/2032,1611,Clothing,South,3,582,0.09,Card,7,3.9,1588.86 +13877,8/12/2032,1837,Clothing,South,7,427.93,0.29,COD,3,1.2,2126.81 +13878,8/13/2032,1808,Beauty,North,3,211.54,0.32,Card,3,1.6,431.54 +13879,8/14/2032,1181,Clothing,South,2,101.09,0.19,Card,7,3.5,163.77 +13880,8/15/2032,1685,Electronics,East,7,98.9,0.01,COD,8,2.8,685.38 +13881,8/16/2032,1827,Clothing,North,3,113.13,0.32,Card,7,4.3,230.79 +13882,8/17/2032,1363,Home,West,4,41.66,0.25,Wallet,3,2.4,124.98 +13883,8/18/2032,1187,Beauty,East,4,542.76,0.14,Card,3,4.1,1867.09 +13884,8/19/2032,1568,Clothing,East,6,331.35,0.21,COD,7,1.6,1570.6 +13885,8/20/2032,1542,Electronics,North,4,424.48,0.15,Wallet,3,4.7,1443.23 +13886,8/21/2032,1595,Beauty,West,7,499.44,0.16,Wallet,2,2.7,2936.71 +13887,8/22/2032,1663,Electronics,East,4,478.05,0.31,Card,7,1.9,1319.42 +13888,8/23/2032,1984,Clothing,South,4,531.32,0.06,Wallet,3,4.2,1997.76 +13889,8/24/2032,1547,Clothing,East,2,580.84,0.04,Wallet,5,4.8,1115.21 +13890,8/25/2032,1724,Electronics,North,6,271.86,0,Card,7,4.7,1631.16 +13891,8/26/2032,1925,Electronics,North,1,570.95,0.11,COD,2,2,508.15 +13892,8/27/2032,1407,Electronics,North,6,438.12,0.05,Card,8,3.7,2497.28 +13893,8/28/2032,1875,Home,East,6,56.34,0.08,COD,2,3.2,311 +13894,8/29/2032,1617,Beauty,West,6,413.84,0,COD,4,3.9,2483.04 +13895,8/30/2032,1413,Electronics,South,3,416.73,0.08,Card,4,2.9,1150.17 +13896,8/31/2032,1341,Home,North,1,544.93,0.12,COD,8,2.9,479.54 +13897,9/1/2032,1219,Electronics,West,3,233.17,0.01,Card,11,4.5,692.51 +13898,9/2/2032,1902,Clothing,South,2,357.17,0.21,Wallet,1,4.5,564.33 +13899,9/3/2032,1162,Electronics,North,2,22.13,0.2,Card,9,4.2,35.41 +13900,9/4/2032,1950,Beauty,South,5,209.26,0.03,COD,6,3.8,1014.91 +13901,9/5/2032,1219,Home,South,5,51.41,0.21,Card,4,3.7,203.07 +13902,9/6/2032,1269,Home,West,2,320.3,0.35,Card,6,1.2,416.39 +13903,9/7/2032,1631,Home,South,2,493.21,0.33,COD,6,4,660.9 +13904,9/8/2032,1905,Clothing,North,3,135.77,0,Card,9,3.6,407.31 +13905,9/9/2032,1847,Beauty,West,2,323.55,0.28,COD,11,2.2,465.91 +13906,9/10/2032,1399,Home,East,7,134.35,0.12,Wallet,4,4.3,827.6 +13907,9/11/2032,1181,Beauty,East,1,85.6,0.02,Card,8,4.3,83.89 +13908,9/12/2032,1990,Clothing,West,3,313.93,0.1,Wallet,1,4.7,847.61 +13909,9/13/2032,1617,Electronics,East,2,61.3,0.11,Card,6,2.7,109.11 +13910,9/14/2032,1728,Clothing,South,3,358.6,0.18,Card,5,3.2,882.16 +13911,9/15/2032,1204,Electronics,North,3,33.33,0.23,Card,3,4.6,76.99 +13912,9/16/2032,1581,Clothing,South,4,77.43,0.26,Wallet,4,2.3,229.19 +13913,9/17/2032,1555,Clothing,West,5,336.75,0.09,Card,8,4.2,1532.21 +13914,9/18/2032,1840,Clothing,North,3,360.97,0.11,Wallet,11,5,963.79 +13915,9/19/2032,1812,Electronics,West,6,31.96,0.11,Wallet,11,3.6,170.67 +13916,9/20/2032,1227,Electronics,West,7,350.43,0.13,Card,10,4.9,2134.12 +13917,9/21/2032,1695,Clothing,West,7,505.52,0.35,COD,11,3.1,2300.12 +13918,9/22/2032,1618,Beauty,South,3,437.55,0.27,COD,2,1.6,958.23 +13919,9/23/2032,1595,Clothing,North,6,91.74,0.34,Card,8,1.7,363.29 +13920,9/24/2032,1849,Clothing,North,7,361.6,0.24,Card,7,3.9,1923.71 +13921,9/25/2032,1249,Home,North,4,408.27,0.14,Card,1,1,1404.45 +13922,9/26/2032,1874,Clothing,South,2,36.78,0.14,COD,2,3.6,63.26 +13923,9/27/2032,1440,Electronics,East,3,515.38,0.17,COD,7,1.6,1283.3 +13924,9/28/2032,1532,Clothing,South,4,545.17,0.15,Card,11,4.9,1853.58 +13925,9/29/2032,1195,Electronics,South,1,512.51,0.29,Card,11,1.7,363.88 +13926,9/30/2032,1689,Beauty,West,4,497.41,0.16,Wallet,3,3.2,1671.3 +13927,10/1/2032,1928,Electronics,North,5,450.8,0.1,Card,2,3.7,2028.6 +13928,10/2/2032,1986,Clothing,North,5,385.56,0.27,COD,1,4.3,1407.29 +13929,10/3/2032,1518,Electronics,East,2,412,0.3,Card,7,2.8,576.8 +13930,10/4/2032,1069,Electronics,East,6,486.74,0.15,Wallet,3,4.7,2482.37 +13931,10/5/2032,1638,Home,West,2,402.56,0.23,Wallet,6,2.9,619.94 +13932,10/6/2032,1398,Electronics,North,7,206.72,0.02,Card,10,2,1418.1 +13933,10/7/2032,1977,Electronics,East,6,234.94,0.19,Card,8,3.4,1141.81 +13934,10/8/2032,1671,Clothing,East,6,539.78,0.02,COD,6,3.6,3173.91 +13935,10/9/2032,1759,Electronics,North,6,25.02,0.01,Card,7,3,148.62 +13936,10/10/2032,1202,Electronics,South,6,423.81,0.21,Card,11,3.9,2008.86 +13937,10/11/2032,1147,Home,East,5,573.54,0.11,COD,6,2.7,2552.25 +13938,10/12/2032,1471,Home,North,7,428.14,0.26,Card,7,1,2217.77 +13939,10/13/2032,1654,Beauty,East,5,596.44,0.31,Card,5,2.1,2057.72 +13940,10/14/2032,1943,Beauty,West,3,417.21,0.05,COD,9,4.8,1189.05 +13941,10/15/2032,1198,Home,East,7,35.1,0.25,COD,3,4.1,184.28 +13942,10/16/2032,1916,Electronics,North,5,498.8,0.18,Card,6,1.8,2045.08 +13943,10/17/2032,1425,Home,East,2,181.51,0.04,COD,9,1.3,348.5 +13944,10/18/2032,1665,Home,West,5,275.94,0.23,COD,1,2.4,1062.37 +13945,10/19/2032,1491,Home,West,7,197.57,0.21,COD,5,4.3,1092.56 +13946,10/20/2032,1887,Clothing,East,7,172.1,0.18,Card,4,1.4,987.85 +13947,10/21/2032,1895,Electronics,East,2,267.37,0.32,Card,9,3.2,363.62 +13948,10/22/2032,1141,Home,West,1,236.57,0.18,Wallet,11,2.1,193.99 +13949,10/23/2032,1312,Home,West,7,385.5,0.35,Wallet,11,3.9,1754.02 +13950,10/24/2032,1164,Beauty,South,5,490.69,0.18,COD,1,1,2011.83 +13951,10/25/2032,1313,Electronics,South,2,188.8,0.04,Card,4,2.1,362.5 +13952,10/26/2032,1020,Electronics,West,6,140.03,0.16,COD,1,3.7,705.75 +13953,10/27/2032,1081,Electronics,East,7,405.13,0.06,Wallet,3,3.2,2665.76 +13954,10/28/2032,1580,Home,North,4,407.14,0.21,Card,4,4.1,1286.56 +13955,10/29/2032,1130,Electronics,East,6,542.16,0.24,Card,1,1.6,2472.25 +13956,10/30/2032,1598,Electronics,East,3,24.33,0.16,COD,5,3.1,61.31 +13957,10/31/2032,1729,Beauty,South,7,514.03,0.03,Wallet,6,1.8,3490.26 +13958,11/1/2032,1932,Electronics,South,2,319.79,0.16,Card,1,3.6,537.25 +13959,11/2/2032,1983,Home,South,6,378.46,0.03,COD,10,1.5,2202.64 +13960,11/3/2032,1304,Clothing,West,5,68.45,0.24,COD,11,1.6,260.11 +13961,11/4/2032,1914,Home,West,5,268.08,0.28,COD,10,2.3,965.09 +13962,11/5/2032,1370,Clothing,East,7,147.97,0.34,COD,4,2.6,683.62 +13963,11/6/2032,1856,Beauty,East,1,163.72,0.05,COD,4,3,155.53 +13964,11/7/2032,1852,Beauty,North,4,309.9,0.19,Card,1,3.3,1004.08 +13965,11/8/2032,1383,Electronics,East,7,490.29,0.2,Card,2,2.9,2745.62 +13966,11/9/2032,1907,Electronics,East,2,450.11,0.32,COD,11,1.2,612.15 +13967,11/10/2032,1444,Electronics,South,6,360.73,0.22,Card,10,2.4,1688.22 +13968,11/11/2032,1424,Home,South,4,330.56,0.05,COD,5,1.2,1256.13 +13969,11/12/2032,1160,Beauty,South,1,264.97,0.15,COD,2,1.5,225.22 +13970,11/13/2032,1177,Clothing,South,7,584.04,0.23,Card,3,1.4,3147.98 +13971,11/14/2032,1628,Clothing,South,3,342.71,0.25,COD,9,1.6,771.1 +13972,11/15/2032,1707,Electronics,North,4,163.57,0.3,COD,5,4.3,458 +13973,11/16/2032,1894,Home,North,1,149.6,0.06,Card,1,3.5,140.62 +13974,11/17/2032,1489,Beauty,North,7,372.64,0.33,COD,5,3,1747.68 +13975,11/18/2032,1326,Electronics,South,7,320.85,0.02,Wallet,3,3.9,2201.03 +13976,11/19/2032,1597,Clothing,West,2,19.5,0.34,Card,1,4.8,25.74 +13977,11/20/2032,1288,Electronics,South,7,500.59,0.3,COD,3,2.7,2452.89 +13978,11/21/2032,1592,Clothing,South,3,426.91,0.23,Card,11,2.5,986.16 +13979,11/22/2032,1663,Clothing,North,7,402.17,0.26,Card,6,4.9,2083.24 +13980,11/23/2032,1572,Electronics,South,5,55.24,0.03,Card,10,4.1,267.91 +13981,11/24/2032,1572,Clothing,North,1,226.8,0.01,COD,5,4.1,224.53 +13982,11/25/2032,1353,Electronics,South,5,562.2,0.04,Card,1,3.4,2698.56 +13983,11/26/2032,1027,Clothing,East,7,519.61,0.03,Card,11,3,3528.15 +13984,11/27/2032,1953,Clothing,West,3,182.04,0.19,COD,2,3.2,442.36 +13985,11/28/2032,1042,Electronics,West,1,106.88,0.08,Card,5,3.6,98.33 +13986,11/29/2032,1680,Home,North,1,277.72,0.3,Card,9,2.5,194.4 +13987,11/30/2032,1422,Home,East,7,223.16,0.16,Card,11,4.1,1312.18 +13988,12/1/2032,1597,Clothing,West,3,414.1,0.24,Card,5,4.6,944.15 +13989,12/2/2032,1176,Electronics,North,2,580.36,0.23,COD,5,3.3,893.75 +13990,12/3/2032,1528,Home,South,1,227.36,0.11,Card,1,2.5,202.35 +13991,12/4/2032,1609,Beauty,South,3,51.4,0.09,Card,5,3.8,140.32 +13992,12/5/2032,1965,Electronics,East,4,540.1,0.12,Wallet,8,1.7,1901.15 +13993,12/6/2032,1493,Electronics,West,5,37.2,0.28,Wallet,9,4.9,133.92 +13994,12/7/2032,1197,Electronics,South,1,572.37,0.21,Wallet,10,3.6,452.17 +13995,12/8/2032,1609,Clothing,North,4,403.78,0.09,Wallet,3,1.3,1469.76 +13996,12/9/2032,1576,Electronics,South,1,565.89,0.29,COD,4,3.1,401.78 +13997,12/10/2032,1841,Clothing,South,2,131.8,0.02,COD,7,4,258.33 +13998,12/11/2032,1852,Home,West,7,38.81,0.24,COD,7,2.1,206.47 +13999,12/12/2032,1516,Clothing,West,3,300.6,0.15,COD,1,1.2,766.53 +14000,12/13/2032,1513,Clothing,North,1,278.61,0.26,COD,11,3,206.17 +14001,12/14/2032,1021,Clothing,East,3,208.92,0.32,Card,6,4.3,426.2 +14002,12/15/2032,1111,Clothing,East,6,575.23,0.26,Wallet,9,2,2554.02 +14003,12/16/2032,1056,Electronics,South,1,496.21,0.15,COD,5,3.9,421.78 +14004,12/17/2032,1065,Electronics,North,2,402.03,0.05,Wallet,8,2.6,763.86 +14005,12/18/2032,1841,Beauty,East,2,110.27,0.28,Card,11,1.2,158.79 +14006,12/19/2032,1097,Electronics,East,7,444.58,0.16,Card,10,2.2,2614.13 +14007,12/20/2032,1143,Home,South,7,440.3,0.03,Card,11,2.3,2989.64 +14008,12/21/2032,1879,Beauty,North,4,263.66,0.25,COD,9,4.6,790.98 +14009,12/22/2032,1434,Electronics,East,2,556,0.1,Card,10,4.9,1000.8 +14010,12/23/2032,1636,Clothing,West,3,112.68,0.02,Card,10,1.8,331.28 +14011,12/24/2032,1678,Clothing,West,6,171.39,0.32,Card,3,2.7,699.27 +14012,12/25/2032,1085,Beauty,South,2,51.99,0.17,Card,1,4.9,86.3 +14013,12/26/2032,1587,Beauty,South,1,480.34,0.1,COD,2,2.6,432.31 +14014,12/27/2032,1343,Home,South,2,378.73,0.25,Wallet,5,2.4,568.1 +14015,12/28/2032,1935,Electronics,South,6,199.24,0.31,Card,10,1.4,824.85 +14016,12/29/2032,1293,Home,East,3,110.83,0,COD,7,4,332.49 +14017,12/30/2032,1955,Clothing,North,1,38.49,0.24,Card,11,2.8,29.25 +14018,12/31/2032,1570,Clothing,South,4,112.55,0.27,Card,6,3.6,328.65 +14019,1/1/2033,1649,Electronics,South,4,280.17,0.07,COD,4,3,1042.23 +14020,1/2/2033,1610,Electronics,East,4,159.6,0.17,COD,9,1.7,529.87 +14021,1/3/2033,1703,Home,South,7,166.5,0.03,Wallet,11,1.7,1130.54 +14022,1/4/2033,1242,Clothing,South,1,527.21,0.26,COD,4,4.8,390.14 +14023,1/5/2033,1830,Electronics,North,4,316.36,0.3,Wallet,3,4.6,885.81 +14024,1/6/2033,1560,Clothing,West,7,441.61,0.04,Card,11,3.4,2967.62 +14025,1/7/2033,1959,Beauty,South,2,35.89,0.29,Card,5,1,50.96 +14026,1/8/2033,1031,Home,East,1,228.62,0.27,Card,4,2.7,166.89 +14027,1/9/2033,1390,Electronics,North,1,295.31,0.12,COD,2,3.1,259.87 +14028,1/10/2033,1276,Electronics,East,1,124.05,0.24,Card,3,2.8,94.28 +14029,1/11/2033,1531,Electronics,North,5,85.31,0,Card,7,4.7,426.55 +14030,1/12/2033,1153,Beauty,North,7,524.13,0.33,COD,2,1.2,2458.17 +14031,1/13/2033,1382,Clothing,South,3,564.57,0.19,Card,1,3.6,1371.91 +14032,1/14/2033,1067,Clothing,South,5,61.1,0.22,Card,2,2.3,238.29 +14033,1/15/2033,1877,Clothing,South,5,219.18,0.23,Card,8,3.2,843.84 +14034,1/16/2033,1883,Clothing,West,5,575.6,0.2,Card,8,3.6,2302.4 +14035,1/17/2033,1213,Home,West,3,63.65,0.3,COD,10,2.8,133.66 +14036,1/18/2033,1654,Clothing,East,5,391.53,0.21,COD,2,1.6,1546.54 +14037,1/19/2033,1375,Electronics,South,4,583.75,0.32,Card,6,3.1,1587.8 +14038,1/20/2033,1743,Electronics,West,1,587.26,0.2,Card,11,4.7,469.81 +14039,1/21/2033,1212,Clothing,South,1,290.67,0.06,Wallet,11,3.1,273.23 +14040,1/22/2033,1078,Beauty,West,7,110.21,0.32,COD,11,1.5,524.6 +14041,1/23/2033,1725,Electronics,West,2,133.22,0.24,COD,7,4.3,202.49 +14042,1/24/2033,1627,Beauty,North,6,535.42,0.24,COD,1,1.9,2441.52 +14043,1/25/2033,1603,Home,South,4,548.33,0.34,Card,7,2.5,1447.59 +14044,1/26/2033,1781,Electronics,South,3,370.61,0.03,Wallet,11,2.7,1078.48 +14045,1/27/2033,1922,Electronics,West,6,463.21,0.15,COD,8,2.4,2362.37 +14046,1/28/2033,1380,Electronics,South,1,447.86,0.08,Card,9,2.6,412.03 +14047,1/29/2033,1679,Home,West,5,402.17,0.22,Card,8,4.2,1568.46 +14048,1/30/2033,1057,Electronics,South,7,498.96,0.28,Card,3,1.9,2514.76 +14049,1/31/2033,1795,Clothing,North,7,415.96,0.34,Card,8,2.9,1921.74 +14050,2/1/2033,1025,Clothing,South,2,327.39,0.16,Wallet,3,1.1,550.02 +14051,2/2/2033,1880,Home,North,2,153.62,0.28,Wallet,6,3,221.21 +14052,2/3/2033,1446,Electronics,East,1,450.17,0.32,Card,4,1.4,306.12 +14053,2/4/2033,1065,Clothing,South,4,291.96,0.24,Card,7,2.1,887.56 +14054,2/5/2033,1920,Clothing,South,7,187.45,0.08,COD,8,2.3,1207.18 +14055,2/6/2033,1759,Clothing,South,6,484.14,0.21,Card,10,1.3,2294.82 +14056,2/7/2033,1253,Home,North,2,422.58,0.34,COD,6,2.4,557.81 +14057,2/8/2033,1898,Electronics,South,1,563.34,0.35,COD,10,3,366.17 +14058,2/9/2033,1967,Home,South,4,111.78,0.22,COD,4,2.7,348.75 +14059,2/10/2033,1043,Home,West,1,394.78,0.31,COD,8,2.1,272.4 +14060,2/11/2033,1096,Clothing,East,1,157.88,0.07,COD,7,2.2,146.83 +14061,2/12/2033,1553,Home,North,4,543.6,0.09,Wallet,10,3.5,1978.7 +14062,2/13/2033,1226,Clothing,West,4,73.21,0.33,Card,8,3.9,196.2 +14063,2/14/2033,1773,Electronics,North,4,398.85,0.05,Wallet,10,3.3,1515.63 +14064,2/15/2033,1678,Home,West,1,477.79,0.07,Card,7,4.9,444.34 +14065,2/16/2033,1435,Clothing,East,2,222.63,0.15,Card,3,4.8,378.47 +14066,2/17/2033,1790,Clothing,West,3,573.17,0.21,Card,3,1.4,1358.41 +14067,2/18/2033,1600,Electronics,North,3,512.68,0.21,COD,9,2,1215.05 +14068,2/19/2033,1378,Beauty,South,1,187.35,0.1,Card,7,4.5,168.62 +14069,2/20/2033,1177,Clothing,South,1,19.41,0.32,Wallet,1,1.1,13.2 +14070,2/21/2033,1426,Electronics,East,2,188.54,0.32,COD,3,3.4,256.41 +14071,2/22/2033,1914,Clothing,North,4,179.57,0.14,Card,11,4.8,617.72 +14072,2/23/2033,1708,Home,North,1,535.63,0.15,COD,1,3.7,455.29 +14073,2/24/2033,1306,Home,North,7,580.77,0.25,Wallet,6,1.4,3049.04 +14074,2/25/2033,1778,Clothing,East,5,56.21,0.23,COD,2,4,216.41 +14075,2/26/2033,1503,Beauty,South,4,290.71,0.13,Card,7,2.5,1011.67 +14076,2/27/2033,1267,Electronics,West,7,335.77,0.14,Wallet,8,4.7,2021.34 +14077,2/28/2033,1585,Clothing,East,1,69.35,0.12,COD,6,2.1,61.03 +14078,3/1/2033,1007,Beauty,West,5,235.84,0.08,Card,5,2.9,1084.86 +14079,3/2/2033,1919,Beauty,South,7,200.49,0.16,Card,10,4,1178.88 +14080,3/3/2033,1507,Home,East,6,328.59,0.24,COD,4,2,1498.37 +14081,3/4/2033,1475,Beauty,South,2,401.8,0.26,Wallet,9,1.7,594.66 +14082,3/5/2033,1296,Electronics,West,5,426.54,0.27,Card,8,1,1556.87 +14083,3/6/2033,1163,Beauty,North,1,95,0.13,Card,5,3,82.65 +14084,3/7/2033,1484,Electronics,North,3,490.57,0.27,Wallet,1,4.7,1074.35 +14085,3/8/2033,1596,Electronics,West,7,411.95,0,Card,8,2.1,2883.65 +14086,3/9/2033,1071,Electronics,North,1,535.11,0.17,Wallet,8,1.2,444.14 +14087,3/10/2033,1566,Clothing,West,3,277.86,0.28,Card,7,3.5,600.18 +14088,3/11/2033,1904,Electronics,East,2,537.93,0.22,COD,7,1.2,839.17 +14089,3/12/2033,1558,Electronics,East,2,521.48,0.17,Card,8,3,865.66 +14090,3/13/2033,1910,Electronics,East,4,271.47,0.23,Wallet,1,2.5,836.13 +14091,3/14/2033,1943,Electronics,North,7,237.97,0.32,COD,3,2.9,1132.74 +14092,3/15/2033,1237,Clothing,South,4,560.7,0.2,Wallet,4,1.7,1794.24 +14093,3/16/2033,1103,Clothing,North,3,433.37,0.28,COD,11,1.4,936.08 +14094,3/17/2033,1209,Electronics,North,3,558.02,0.34,Card,6,4,1104.88 +14095,3/18/2033,1553,Home,South,2,481.23,0.25,Card,10,2,721.84 +14096,3/19/2033,1827,Beauty,South,5,371.44,0.2,COD,10,4.2,1485.76 +14097,3/20/2033,1467,Home,South,3,82.77,0.01,COD,9,4,245.83 +14098,3/21/2033,1453,Electronics,South,3,185.52,0.13,Wallet,4,1.8,484.21 +14099,3/22/2033,1267,Home,North,7,581.77,0.2,Card,6,4.6,3257.91 +14100,3/23/2033,1385,Electronics,West,5,201.86,0.28,COD,9,1.6,726.7 +14101,3/24/2033,1774,Electronics,East,4,69.55,0.15,Wallet,9,4.2,236.47 +14102,3/25/2033,1847,Electronics,West,4,428.92,0.34,Card,6,2.7,1132.35 +14103,3/26/2033,1386,Home,North,3,444.39,0.1,Wallet,5,1.7,1199.85 +14104,3/27/2033,1876,Electronics,South,7,181.99,0.26,Card,3,4.8,942.71 +14105,3/28/2033,1258,Electronics,East,4,189.14,0.15,COD,5,4.9,643.08 +14106,3/29/2033,1282,Electronics,East,4,289.3,0.17,Card,3,3,960.48 +14107,3/30/2033,1625,Beauty,West,6,27.75,0.28,Card,5,2.9,119.88 +14108,3/31/2033,1874,Clothing,North,7,476.75,0.1,Card,10,4.6,3003.52 +14109,4/1/2033,1039,Electronics,North,4,200.5,0.03,Wallet,10,3.4,777.94 +14110,4/2/2033,1485,Clothing,North,2,514.45,0.18,Wallet,1,2.1,843.7 +14111,4/3/2033,1928,Clothing,East,1,484.54,0.19,Card,6,2.7,392.48 +14112,4/4/2033,1219,Home,West,3,401.92,0.28,Wallet,7,4.3,868.15 +14113,4/5/2033,1128,Electronics,East,3,205.05,0.34,COD,2,4.4,406 +14114,4/6/2033,1519,Beauty,East,2,317.05,0.02,Wallet,3,4.8,621.42 +14115,4/7/2033,1612,Electronics,South,1,275.23,0.21,Card,10,2.2,217.43 +14116,4/8/2033,1927,Home,West,1,213.25,0.24,Card,9,3.7,162.07 +14117,4/9/2033,1891,Electronics,South,2,511.16,0.35,COD,8,1.3,664.51 +14118,4/10/2033,1687,Clothing,North,5,297.85,0.33,Card,4,3.9,997.8 +14119,4/11/2033,1618,Clothing,East,5,502.14,0.25,COD,11,3.3,1883.02 +14120,4/12/2033,1612,Clothing,West,1,76.55,0.18,Card,8,2,62.77 +14121,4/13/2033,1259,Electronics,North,5,97.5,0.06,Card,11,3.6,458.25 +14122,4/14/2033,1989,Home,West,5,586.73,0.13,Card,8,1.5,2552.28 +14123,4/15/2033,1965,Electronics,East,5,358.84,0.2,Wallet,6,2.3,1435.36 +14124,4/16/2033,1365,Home,West,1,313.22,0.25,Card,1,2.6,234.92 +14125,4/17/2033,1757,Home,North,5,321.05,0.22,Card,2,4.1,1252.1 +14126,4/18/2033,1786,Clothing,South,3,140.93,0.25,COD,4,2.2,317.09 +14127,4/19/2033,1543,Home,East,6,435.44,0.15,COD,4,1.2,2220.74 +14128,4/20/2033,1648,Home,South,1,64.6,0.25,COD,2,1.7,48.45 +14129,4/21/2033,1523,Clothing,East,2,350.39,0.05,COD,9,3.4,665.74 +14130,4/22/2033,1906,Home,North,5,348.9,0.06,Card,2,1.1,1639.83 +14131,4/23/2033,1813,Electronics,East,4,549.8,0.06,Card,6,4.2,2067.25 +14132,4/24/2033,1886,Clothing,South,1,322.82,0.31,COD,5,4.6,222.75 +14133,4/25/2033,1015,Home,East,7,95.18,0.03,Wallet,4,3,646.27 +14134,4/26/2033,1128,Clothing,North,2,350.06,0.28,COD,6,3.8,504.09 +14135,4/27/2033,1574,Electronics,East,6,68.43,0.08,Card,4,2.9,377.73 +14136,4/28/2033,1108,Clothing,South,3,134.22,0.16,Card,9,2.2,338.23 +14137,4/29/2033,1886,Home,North,7,33.2,0.32,Card,11,1.7,158.03 +14138,4/30/2033,1532,Beauty,South,2,315.28,0.21,COD,10,3.1,498.14 +14139,5/1/2033,1669,Clothing,East,5,64.45,0.07,Card,7,4.7,299.69 +14140,5/2/2033,1268,Home,West,4,289.6,0.1,Card,3,4.6,1042.56 +14141,5/3/2033,1161,Beauty,South,5,560.77,0.32,Card,10,4.7,1906.62 +14142,5/4/2033,1259,Electronics,East,2,436.06,0.15,COD,4,4.9,741.3 +14143,5/5/2033,1923,Electronics,West,1,60.29,0.21,Card,1,1.7,47.63 +14144,5/6/2033,1101,Home,West,7,146.16,0.16,COD,6,1.6,859.42 +14145,5/7/2033,1505,Home,North,4,409.09,0.13,COD,2,2.7,1423.63 +14146,5/8/2033,1734,Beauty,West,7,538.4,0.08,Card,4,3.8,3467.3 +14147,5/9/2033,1570,Clothing,South,7,34.26,0.24,COD,5,2.8,182.26 +14148,5/10/2033,1246,Electronics,South,4,490.28,0.25,Card,8,4.6,1470.84 +14149,5/11/2033,1639,Clothing,West,2,343.66,0.1,Card,3,3.9,618.59 +14150,5/12/2033,1794,Electronics,East,6,334.46,0.28,COD,6,3.5,1444.87 +14151,5/13/2033,1836,Electronics,South,6,575.32,0.3,COD,1,1.3,2416.34 +14152,5/14/2033,1536,Home,South,5,452.37,0.32,COD,9,1.7,1538.06 +14153,5/15/2033,1130,Electronics,North,2,512.32,0.06,COD,1,2.7,963.16 +14154,5/16/2033,1352,Home,East,4,222.09,0.11,Wallet,2,4.9,790.64 +14155,5/17/2033,1195,Clothing,West,2,339.3,0.3,Card,1,2.3,475.02 +14156,5/18/2033,1792,Clothing,East,4,375.01,0.07,COD,8,3.5,1395.04 +14157,5/19/2033,1915,Electronics,North,7,203.13,0,COD,4,5,1421.91 +14158,5/20/2033,1929,Electronics,North,5,348.6,0.3,Card,2,2.1,1220.1 +14159,5/21/2033,1665,Electronics,East,1,153.44,0.11,Card,7,1.7,136.56 +14160,5/22/2033,1381,Beauty,North,7,98.87,0.15,COD,8,3.2,588.28 +14161,5/23/2033,1644,Home,North,1,233.77,0.16,Card,9,3.2,196.37 +14162,5/24/2033,1226,Clothing,North,2,447.48,0.3,Card,5,4.7,626.47 +14163,5/25/2033,1700,Electronics,East,4,550.97,0.12,COD,3,1.1,1939.41 +14164,5/26/2033,1475,Beauty,North,1,282.76,0.31,Wallet,1,2.6,195.1 +14165,5/27/2033,1476,Electronics,West,7,391.05,0.22,Wallet,8,2.2,2135.13 +14166,5/28/2033,1264,Electronics,West,4,75.28,0.18,Card,6,3.3,246.92 +14167,5/29/2033,1371,Clothing,South,5,544.11,0.11,COD,5,1,2421.29 +14168,5/30/2033,1485,Beauty,West,7,347.63,0.09,Card,7,3.8,2214.4 +14169,5/31/2033,1433,Electronics,South,2,471.5,0.22,Card,5,2.9,735.54 +14170,6/1/2033,1645,Electronics,East,4,479.75,0.16,COD,11,3.8,1611.96 +14171,6/2/2033,1210,Beauty,North,2,165.04,0.32,Card,4,2.8,224.45 +14172,6/3/2033,1571,Electronics,West,4,324.57,0.17,Card,5,2.9,1077.57 +14173,6/4/2033,1939,Electronics,South,7,576.88,0.18,Wallet,11,4.6,3311.29 +14174,6/5/2033,1376,Clothing,East,6,67.44,0.15,Wallet,7,1.8,343.94 +14175,6/6/2033,1394,Beauty,South,6,414.58,0.28,COD,11,1.9,1790.99 +14176,6/7/2033,1449,Clothing,North,4,577.92,0.15,Wallet,6,3.2,1964.93 +14177,6/8/2033,1942,Beauty,West,5,190.84,0.09,COD,10,3.6,868.32 +14178,6/9/2033,1363,Home,East,2,518.95,0.3,Card,10,2.4,726.53 +14179,6/10/2033,1875,Electronics,South,3,561.19,0.21,COD,11,3.1,1330.02 +14180,6/11/2033,1456,Beauty,East,4,452.05,0.21,Card,9,1.9,1428.48 +14181,6/12/2033,1724,Clothing,South,4,150.33,0.21,Card,10,1.5,475.04 +14182,6/13/2033,1727,Electronics,South,6,210.39,0.25,Wallet,2,2,946.75 +14183,6/14/2033,1225,Clothing,North,1,35.95,0.11,COD,7,4.7,32 +14184,6/15/2033,1981,Electronics,North,7,501.4,0.01,Card,1,4.2,3474.7 +14185,6/16/2033,1130,Electronics,South,6,512.02,0.28,Card,8,1.6,2211.93 +14186,6/17/2033,1587,Electronics,West,2,385.14,0.05,Card,4,1.2,731.77 +14187,6/18/2033,1475,Clothing,East,6,221.23,0.25,Wallet,8,1.4,995.53 +14188,6/19/2033,1797,Home,East,3,59.93,0.03,COD,8,2.2,174.4 +14189,6/20/2033,1985,Clothing,North,5,455.54,0.13,COD,4,4.2,1981.6 +14190,6/21/2033,1276,Beauty,West,7,440.02,0.02,COD,4,2.3,3018.54 +14191,6/22/2033,1155,Electronics,South,3,548.87,0.18,COD,5,1.7,1350.22 +14192,6/23/2033,1759,Electronics,North,5,442.36,0.23,COD,7,2.6,1703.09 +14193,6/24/2033,1217,Electronics,South,3,499.79,0.06,COD,6,1.5,1409.41 +14194,6/25/2033,1189,Electronics,South,7,451.38,0.13,Wallet,1,2.9,2748.9 +14195,6/26/2033,1416,Electronics,North,6,383.95,0.33,Wallet,6,3.7,1543.48 +14196,6/27/2033,1980,Home,West,3,264.78,0.15,Wallet,3,2.5,675.19 +14197,6/28/2033,1674,Beauty,East,6,542.74,0.28,COD,9,1.7,2344.64 +14198,6/29/2033,1691,Beauty,North,7,395.82,0.32,Wallet,3,2.8,1884.1 +14199,6/30/2033,1545,Electronics,West,6,248.04,0.34,Card,9,4,982.24 +14200,7/1/2033,1040,Beauty,South,2,63.83,0.31,Wallet,5,1.3,88.09 +14201,7/2/2033,1306,Electronics,North,6,185.06,0.11,Wallet,10,1.3,988.22 +14202,7/3/2033,1942,Electronics,East,1,333.08,0.34,Wallet,8,2.3,219.83 +14203,7/4/2033,1337,Beauty,East,3,176.25,0.28,Wallet,9,2.7,380.7 +14204,7/5/2033,1313,Clothing,South,7,144.42,0.29,Card,9,1.9,717.77 +14205,7/6/2033,1074,Electronics,North,4,323.53,0.01,Card,7,1.1,1281.18 +14206,7/7/2033,1952,Clothing,East,4,114.34,0.33,Card,10,1.9,306.43 +14207,7/8/2033,1278,Electronics,North,4,483.24,0.27,COD,1,2.7,1411.06 +14208,7/9/2033,1175,Home,East,7,298.36,0.27,Card,8,1.3,1524.62 +14209,7/10/2033,1895,Clothing,South,1,350.71,0.03,COD,7,3.9,340.19 +14210,7/11/2033,1661,Beauty,South,6,101.22,0.08,COD,4,3.2,558.73 +14211,7/12/2033,1272,Electronics,North,3,204.88,0.34,COD,6,2.7,405.66 +14212,7/13/2033,1836,Clothing,West,5,254.9,0.18,Wallet,10,3.1,1045.09 +14213,7/14/2033,1619,Clothing,West,5,487.8,0.14,COD,2,3.6,2097.54 +14214,7/15/2033,1650,Clothing,South,7,465.54,0.29,COD,4,5,2313.73 +14215,7/16/2033,1861,Electronics,East,2,145.44,0.03,COD,8,4.1,282.15 +14216,7/17/2033,1782,Home,West,1,375.46,0.15,Wallet,4,3.2,319.14 +14217,7/18/2033,1858,Beauty,South,3,157.42,0.13,Card,10,4.1,410.87 +14218,7/19/2033,1930,Beauty,East,6,593.12,0.12,Card,4,2.9,3131.67 +14219,7/20/2033,1288,Home,East,4,571.99,0.11,Wallet,4,2.2,2036.28 +14220,7/21/2033,1723,Beauty,West,1,344.51,0.07,COD,10,2,320.39 +14221,7/22/2033,1892,Clothing,South,1,423.86,0.06,COD,9,2.6,398.43 +14222,7/23/2033,1271,Home,East,3,483.84,0.22,COD,11,1,1132.19 +14223,7/24/2033,1929,Electronics,East,7,436.78,0.32,Card,2,1.7,2079.07 +14224,7/25/2033,1065,Clothing,North,6,424.4,0.18,COD,7,1.5,2088.05 +14225,7/26/2033,1482,Electronics,North,7,575.75,0.1,Card,3,4.8,3627.22 +14226,7/27/2033,1935,Clothing,West,7,363.93,0.06,COD,4,1.3,2394.66 +14227,7/28/2033,1247,Electronics,North,2,387.24,0.29,COD,1,3,549.88 +14228,7/29/2033,1155,Beauty,South,7,511.82,0.34,COD,3,4.7,2364.61 +14229,7/30/2033,1046,Electronics,West,6,406.89,0.12,COD,2,3.4,2148.38 +14230,7/31/2033,1934,Electronics,West,2,443.77,0.1,Wallet,10,3,798.79 +14231,8/1/2033,1453,Clothing,North,2,151.99,0.21,COD,7,4,240.14 +14232,8/2/2033,1200,Electronics,East,4,232.19,0.27,Wallet,6,2.4,677.99 +14233,8/3/2033,1659,Electronics,South,4,101.17,0.16,COD,1,1.8,339.93 +14234,8/4/2033,1123,Electronics,South,3,310.87,0.22,COD,11,4.4,727.44 +14235,8/5/2033,1000,Clothing,South,6,281.6,0.25,Card,8,1.2,1267.2 +14236,8/6/2033,1967,Clothing,West,7,598.34,0.34,Card,9,4.2,2764.33 +14237,8/7/2033,1758,Home,South,2,372.56,0.06,COD,1,1.4,700.41 +14238,8/8/2033,1854,Home,East,3,475.07,0.35,Card,5,3.5,926.39 +14239,8/9/2033,1639,Clothing,East,2,210.4,0.14,COD,7,2.9,361.89 +14240,8/10/2033,1190,Electronics,North,1,501.45,0.25,COD,2,5,376.09 +14241,8/11/2033,1578,Electronics,South,5,374.82,0.2,Wallet,6,2.6,1499.28 +14242,8/12/2033,1515,Home,West,5,422.74,0.17,Wallet,8,4.8,1754.37 +14243,8/13/2033,1441,Electronics,North,2,187.24,0.24,Card,8,2.6,284.6 +14244,8/14/2033,1920,Electronics,East,3,335.95,0.14,Card,10,3.7,866.75 +14245,8/15/2033,1814,Home,South,4,385.91,0.04,COD,10,3.6,1481.89 +14246,8/16/2033,1805,Clothing,East,6,359.62,0.17,Card,8,1.3,1790.91 +14247,8/17/2033,1142,Electronics,North,2,550.39,0.18,Card,6,4,902.64 +14248,8/18/2033,1190,Electronics,East,2,540.49,0.07,Wallet,6,1.8,1005.31 +14249,8/19/2033,1532,Beauty,South,6,583.03,0.33,Wallet,11,2.6,2343.78 +14250,8/20/2033,1226,Beauty,South,7,405.45,0.08,COD,3,4.1,2611.1 +14251,8/21/2033,1312,Home,North,4,583.57,0.14,COD,2,4.8,2007.48 +14252,8/22/2033,1628,Clothing,South,2,502,0.05,Card,5,3.2,953.8 +14253,8/23/2033,1948,Clothing,East,1,173.44,0.19,COD,9,3.1,140.49 +14254,8/24/2033,1301,Beauty,East,4,265.05,0.11,COD,4,3,943.58 +14255,8/25/2033,1653,Beauty,West,1,154.46,0.17,COD,5,4.3,128.2 +14256,8/26/2033,1995,Electronics,West,5,17.46,0.08,Card,6,5,80.32 +14257,8/27/2033,1459,Home,West,6,125.01,0.02,Wallet,11,3.5,735.06 +14258,8/28/2033,1400,Electronics,East,4,17.38,0.27,COD,6,2.5,50.75 +14259,8/29/2033,1550,Electronics,East,7,436.11,0.22,COD,4,1.9,2381.16 +14260,8/30/2033,1392,Home,North,4,263.94,0.12,Wallet,4,1.8,929.07 +14261,8/31/2033,1866,Clothing,West,3,197.86,0.02,Card,8,4.4,581.71 +14262,9/1/2033,1763,Beauty,East,3,460.61,0.3,Card,5,5,967.28 +14263,9/2/2033,1844,Electronics,North,6,502,0.06,Wallet,11,3.8,2831.28 +14264,9/3/2033,1206,Clothing,East,7,585.55,0.33,Wallet,5,4.8,2746.23 +14265,9/4/2033,1209,Beauty,North,4,390.58,0.17,COD,9,2.4,1296.73 +14266,9/5/2033,1114,Beauty,West,5,284.99,0.12,Card,4,3.5,1253.96 +14267,9/6/2033,1736,Electronics,West,7,193.58,0.26,COD,7,3,1002.74 +14268,9/7/2033,1645,Clothing,West,2,145.06,0.31,Card,5,2.9,200.18 +14269,9/8/2033,1250,Clothing,East,6,139.56,0.13,COD,9,3.5,728.5 +14270,9/9/2033,1218,Electronics,East,7,254.38,0.14,Card,8,2.2,1531.37 +14271,9/10/2033,1406,Beauty,North,6,595.2,0.15,Wallet,8,3.6,3035.52 +14272,9/11/2033,1442,Beauty,South,7,15.5,0.32,COD,10,3.7,73.78 +14273,9/12/2033,1602,Electronics,South,3,130.37,0.24,Wallet,10,4.3,297.24 +14274,9/13/2033,1353,Electronics,West,5,125.21,0.09,Card,3,3.9,569.71 +14275,9/14/2033,1887,Electronics,South,6,434.51,0.06,Card,9,2.3,2450.64 +14276,9/15/2033,1557,Beauty,West,5,221.2,0.08,Wallet,8,2.8,1017.52 +14277,9/16/2033,1549,Electronics,North,6,282.5,0.09,Card,3,1.5,1542.45 +14278,9/17/2033,1141,Clothing,South,3,101.95,0.08,COD,10,2,281.38 +14279,9/18/2033,1611,Clothing,South,2,251.92,0.23,Card,1,3.1,387.96 +14280,9/19/2033,1500,Clothing,West,3,75.37,0.04,COD,5,1.4,217.07 +14281,9/20/2033,1839,Electronics,North,6,326.83,0.14,Card,4,3.3,1686.44 +14282,9/21/2033,1701,Electronics,South,5,72.29,0.22,Card,8,2.6,281.93 +14283,9/22/2033,1546,Beauty,South,1,477.45,0.1,COD,6,1.1,429.7 +14284,9/23/2033,1658,Beauty,South,3,346.46,0.02,Card,10,2.7,1018.59 +14285,9/24/2033,1541,Home,North,5,438.52,0.03,Card,5,2.1,2126.82 +14286,9/25/2033,1845,Electronics,North,7,259.83,0.04,COD,9,1.3,1746.06 +14287,9/26/2033,1506,Electronics,South,7,238.17,0.29,COD,6,2.2,1183.7 +14288,9/27/2033,1595,Clothing,West,3,72.45,0.23,Card,11,2.2,167.36 +14289,9/28/2033,1880,Electronics,West,6,321.46,0.02,COD,11,2.4,1890.18 +14290,9/29/2033,1280,Beauty,South,7,315.98,0.14,Wallet,11,2.5,1902.2 +14291,9/30/2033,1423,Clothing,North,5,288.84,0.1,Card,11,2.7,1299.78 +14292,10/1/2033,1855,Electronics,South,2,448.2,0.2,COD,3,1.4,717.12 +14293,10/2/2033,1269,Beauty,North,5,502.02,0.18,COD,6,1,2058.28 +14294,10/3/2033,1153,Beauty,South,7,454.21,0.17,Card,11,3.9,2638.96 +14295,10/4/2033,1613,Electronics,North,7,99.16,0.11,Card,4,2.3,617.77 +14296,10/5/2033,1726,Clothing,East,4,378.9,0.05,COD,5,3.5,1439.82 +14297,10/6/2033,1661,Electronics,West,1,61.99,0.26,COD,6,2.2,45.87 +14298,10/7/2033,1943,Clothing,East,6,421.35,0.31,Card,9,4.9,1744.39 +14299,10/8/2033,1082,Electronics,West,5,238.38,0.33,Wallet,3,2.3,798.57 +14300,10/9/2033,1621,Clothing,North,7,92.51,0.02,COD,1,3.4,634.62 +14301,10/10/2033,1946,Beauty,East,6,519.3,0.26,Card,2,1.9,2305.69 +14302,10/11/2033,1898,Clothing,West,3,374.19,0.25,COD,8,3.1,841.93 +14303,10/12/2033,1425,Electronics,South,3,222.51,0.33,Wallet,4,3.3,447.25 +14304,10/13/2033,1274,Clothing,North,5,32.98,0.09,Card,7,1.7,150.06 +14305,10/14/2033,1712,Electronics,North,4,329.33,0.26,COD,2,1.5,974.82 +14306,10/15/2033,1283,Beauty,South,7,555.09,0.02,COD,11,4.9,3807.92 +14307,10/16/2033,1979,Clothing,South,5,363.88,0.22,Card,10,4.6,1419.13 +14308,10/17/2033,1172,Electronics,West,2,583.42,0.12,Card,8,3.6,1026.82 +14309,10/18/2033,1326,Electronics,North,4,94.82,0.27,Card,10,4.4,276.87 +14310,10/19/2033,1717,Home,West,7,347.46,0.3,Card,9,1.4,1702.55 +14311,10/20/2033,1062,Electronics,South,7,481.9,0.13,Card,7,3.9,2934.77 +14312,10/21/2033,1072,Home,North,6,322.44,0.18,Wallet,10,2.1,1586.4 +14313,10/22/2033,1762,Electronics,South,5,68.27,0.04,Wallet,11,3.2,327.7 +14314,10/23/2033,1635,Electronics,West,7,355.99,0.15,Card,1,4.1,2118.14 +14315,10/24/2033,1374,Clothing,West,6,372.87,0.13,Card,2,1.1,1946.38 +14316,10/25/2033,1632,Beauty,West,7,441.29,0.06,Card,9,3.8,2903.69 +14317,10/26/2033,1507,Beauty,North,1,460.31,0.31,Card,10,2.7,317.61 +14318,10/27/2033,1786,Electronics,South,4,465.9,0.05,Card,7,2.8,1770.42 +14319,10/28/2033,1942,Clothing,South,5,403.11,0.22,Card,11,4.6,1572.13 +14320,10/29/2033,1397,Electronics,West,1,141.25,0.31,Wallet,3,4.4,97.46 +14321,10/30/2033,1119,Clothing,West,5,251.48,0.32,Card,5,1.2,855.03 +14322,10/31/2033,1933,Clothing,West,2,469.04,0.28,COD,1,3.5,675.42 +14323,11/1/2033,1436,Beauty,West,3,572.75,0.06,Card,10,2.7,1615.16 +14324,11/2/2033,1828,Beauty,East,6,61.18,0.29,Card,3,1.5,260.63 +14325,11/3/2033,1675,Clothing,East,5,328.29,0.1,Wallet,11,4.4,1477.3 +14326,11/4/2033,1935,Clothing,East,4,197.83,0.32,Card,4,1.3,538.1 +14327,11/5/2033,1464,Beauty,West,5,146.86,0.25,Wallet,4,1.1,550.72 +14328,11/6/2033,1285,Home,West,5,310.9,0.27,Card,7,1.8,1134.79 +14329,11/7/2033,1264,Electronics,South,5,369.56,0.03,COD,5,2.2,1792.37 +14330,11/8/2033,1319,Electronics,North,7,20.72,0.2,Wallet,9,1.2,116.03 +14331,11/9/2033,1672,Clothing,South,5,471.42,0.29,Card,7,3.6,1673.54 +14332,11/10/2033,1375,Electronics,East,7,494.63,0.3,Card,2,2.7,2423.69 +14333,11/11/2033,1819,Electronics,South,4,579.82,0.01,COD,11,2.6,2296.09 +14334,11/12/2033,1088,Electronics,West,4,120.68,0.33,Card,11,1.6,323.42 +14335,11/13/2033,1653,Clothing,East,5,362.81,0.02,COD,8,2.8,1777.77 +14336,11/14/2033,1202,Electronics,East,7,264.58,0.22,Card,11,2.6,1444.61 +14337,11/15/2033,1820,Electronics,North,3,210.87,0.24,Card,2,2.5,480.78 +14338,11/16/2033,1738,Electronics,North,5,345.9,0.04,Card,7,1.9,1660.32 +14339,11/17/2033,1954,Home,East,6,472.69,0.02,Wallet,5,1.4,2779.42 +14340,11/18/2033,1333,Beauty,East,6,28.49,0.27,Card,10,2,124.79 +14341,11/19/2033,1221,Clothing,South,4,582.1,0.13,Card,6,3.7,2025.71 +14342,11/20/2033,1040,Clothing,East,6,488.78,0.04,COD,11,1.3,2815.37 +14343,11/21/2033,1707,Beauty,West,6,454.42,0.27,Card,4,2.5,1990.36 +14344,11/22/2033,1067,Electronics,South,2,459.83,0.3,Card,5,3.1,643.76 +14345,11/23/2033,1987,Electronics,West,5,242.6,0.21,Card,5,4.9,958.27 +14346,11/24/2033,1775,Electronics,West,5,454.7,0.06,COD,7,4.4,2137.09 +14347,11/25/2033,1513,Electronics,West,5,241.26,0.01,COD,11,4.7,1194.24 +14348,11/26/2033,1872,Clothing,East,5,540.74,0.25,Card,4,4.3,2027.78 +14349,11/27/2033,1636,Beauty,North,1,118.68,0.19,Card,5,3.4,96.13 +14350,11/28/2033,1621,Clothing,North,5,186.02,0.23,COD,4,4.4,716.18 +14351,11/29/2033,1597,Clothing,West,7,337.53,0.28,COD,4,3.3,1701.15 +14352,11/30/2033,1936,Beauty,East,4,201.74,0.15,Card,8,2.4,685.92 +14353,12/1/2033,1631,Electronics,South,7,263.18,0.04,Card,11,2.5,1768.57 +14354,12/2/2033,1126,Electronics,West,4,303.07,0.33,Card,5,3.3,812.23 +14355,12/3/2033,1254,Clothing,South,1,515.97,0.19,COD,9,4.2,417.94 +14356,12/4/2033,1694,Clothing,South,5,321.07,0.22,Wallet,5,1.5,1252.17 +14357,12/5/2033,1015,Electronics,East,3,227.04,0.33,Card,8,1.2,456.35 +14358,12/6/2033,1476,Clothing,East,7,159.93,0.33,Card,3,4.2,750.07 +14359,12/7/2033,1061,Clothing,North,5,254.08,0.2,Card,7,3.6,1016.32 +14360,12/8/2033,1880,Home,North,4,316.71,0.1,Card,1,4.3,1140.16 +14361,12/9/2033,1431,Clothing,East,7,451.48,0.35,Card,5,4.9,2054.23 +14362,12/10/2033,1669,Electronics,West,2,85.81,0.24,Wallet,2,2,130.43 +14363,12/11/2033,1267,Electronics,North,6,144.64,0.14,Card,8,1.8,746.34 +14364,12/12/2033,1034,Clothing,South,2,237.1,0.2,COD,6,2.4,379.36 +14365,12/13/2033,1778,Electronics,West,3,225.83,0.15,Card,5,4.5,575.87 +14366,12/14/2033,1575,Beauty,South,5,244.17,0.31,Wallet,3,1.1,842.39 +14367,12/15/2033,1493,Clothing,East,1,479.21,0.17,COD,1,1,397.74 +14368,12/16/2033,1561,Electronics,South,5,204.63,0.29,Card,10,1.9,726.44 +14369,12/17/2033,1468,Home,West,3,308.61,0.29,Wallet,10,2.5,657.34 +14370,12/18/2033,1766,Clothing,East,3,379.99,0.29,Card,10,2.2,809.38 +14371,12/19/2033,1660,Electronics,West,6,150.82,0.25,COD,11,4.3,678.69 +14372,12/20/2033,1324,Home,South,3,435.44,0.3,Wallet,10,3.8,914.42 +14373,12/21/2033,1303,Beauty,West,2,335.06,0.14,Card,8,4.4,576.3 +14374,12/22/2033,1275,Home,East,6,276.37,0.04,COD,11,2.5,1591.89 +14375,12/23/2033,1868,Electronics,South,5,488.72,0.29,Wallet,5,3.4,1734.96 +14376,12/24/2033,1962,Clothing,South,7,157.44,0.17,Wallet,9,3.1,914.73 +14377,12/25/2033,1683,Home,North,5,531.66,0.04,COD,11,2.9,2551.97 +14378,12/26/2033,1928,Electronics,North,1,343.21,0.04,Card,7,2.2,329.48 +14379,12/27/2033,1200,Electronics,West,3,371.37,0.06,COD,1,3.8,1047.26 +14380,12/28/2033,1444,Beauty,North,3,526.91,0.26,COD,11,3.1,1169.74 +14381,12/29/2033,1904,Electronics,North,4,493.29,0.25,COD,1,1.3,1479.87 +14382,12/30/2033,1323,Home,North,6,366.91,0.07,Wallet,7,1,2047.36 +14383,12/31/2033,1034,Clothing,North,4,455.61,0.3,Card,11,1.1,1275.71 +14384,1/1/2034,1976,Clothing,East,6,268.49,0.1,Card,7,1.3,1449.85 +14385,1/2/2034,1481,Electronics,East,2,335.22,0.28,COD,9,2.5,482.72 +14386,1/3/2034,1727,Home,North,6,51.31,0.17,Wallet,2,2.2,255.52 +14387,1/4/2034,1479,Clothing,West,5,67.57,0.26,COD,7,1.6,250.01 +14388,1/5/2034,1064,Clothing,East,1,500.21,0.13,Wallet,2,3.1,435.18 +14389,1/6/2034,1007,Home,North,7,49.91,0.12,Wallet,10,4.9,307.45 +14390,1/7/2034,1300,Home,East,6,114.1,0.29,Wallet,10,1.6,486.07 +14391,1/8/2034,1342,Beauty,South,6,480.56,0.01,Wallet,2,2,2854.53 +14392,1/9/2034,1430,Clothing,East,6,15.67,0.34,Wallet,5,2.8,62.05 +14393,1/10/2034,1423,Clothing,East,1,180.21,0.23,Wallet,9,3.6,138.76 +14394,1/11/2034,1331,Beauty,West,3,356.66,0.15,COD,9,3.4,909.48 +14395,1/12/2034,1437,Clothing,East,1,363.34,0.22,Card,10,3.1,283.41 +14396,1/13/2034,1587,Electronics,West,3,469.63,0.04,Card,1,3.9,1352.53 +14397,1/14/2034,1173,Electronics,South,7,310.97,0.18,Card,11,4.4,1784.97 +14398,1/15/2034,1558,Home,North,5,313,0.34,Card,7,5,1032.9 +14399,1/16/2034,1526,Clothing,West,1,439.31,0.08,Card,10,2.9,404.17 +14400,1/17/2034,1872,Home,East,3,306.7,0.25,Wallet,10,5,690.08 +14401,1/18/2034,1658,Clothing,East,5,370.97,0.15,COD,3,3.9,1576.62 +14402,1/19/2034,1025,Electronics,West,5,540.2,0.23,Card,10,3.6,2079.77 +14403,1/20/2034,1819,Clothing,South,3,249.85,0.07,COD,10,3.6,697.08 +14404,1/21/2034,1604,Electronics,North,3,240.3,0.16,COD,1,4.6,605.56 +14405,1/22/2034,1405,Clothing,East,2,17.08,0.34,Card,2,4.8,22.55 +14406,1/23/2034,1231,Clothing,South,5,373.85,0.07,Wallet,6,1.7,1738.4 +14407,1/24/2034,1532,Clothing,North,3,32.42,0.22,Card,10,3,75.86 +14408,1/25/2034,1818,Home,North,5,309.93,0.2,COD,2,4.8,1239.72 +14409,1/26/2034,1549,Home,East,1,485.48,0.2,Card,2,2.5,388.38 +14410,1/27/2034,1787,Home,West,7,336.7,0.22,COD,4,1.9,1838.38 +14411,1/28/2034,1504,Electronics,East,4,172.74,0.18,Wallet,3,1.4,566.59 +14412,1/29/2034,1668,Electronics,East,4,474.91,0.01,Card,8,3.4,1880.64 +14413,1/30/2034,1178,Clothing,East,6,172.78,0.32,Wallet,8,3.8,704.94 +14414,1/31/2034,1131,Beauty,South,3,443.82,0.29,Card,6,1.8,945.34 +14415,2/1/2034,1822,Home,West,3,372,0.06,COD,4,3.7,1049.04 +14416,2/2/2034,1454,Home,South,5,114.45,0.14,Wallet,7,4.6,492.14 +14417,2/3/2034,1347,Electronics,East,6,544.5,0.27,Wallet,9,2,2384.91 +14418,2/4/2034,1539,Clothing,West,3,132.38,0.34,Card,2,1.5,262.11 +14419,2/5/2034,1771,Clothing,North,5,593.91,0.33,Card,6,4.3,1989.6 +14420,2/6/2034,1405,Electronics,West,3,19.28,0.31,COD,7,4.7,39.91 +14421,2/7/2034,1075,Electronics,East,5,169.14,0.06,Card,1,1.9,794.96 +14422,2/8/2034,1940,Beauty,West,3,131.92,0.32,COD,6,3.9,269.12 +14423,2/9/2034,1578,Electronics,North,2,23.19,0.31,COD,8,3.4,32 +14424,2/10/2034,1853,Electronics,North,7,443.44,0.13,COD,7,2,2700.55 +14425,2/11/2034,1491,Electronics,West,5,420.65,0.14,Card,2,4.3,1808.8 +14426,2/12/2034,1193,Beauty,North,7,478.53,0.16,COD,2,2.9,2813.76 +14427,2/13/2034,1983,Clothing,South,2,165.17,0.23,Wallet,4,3.8,254.36 +14428,2/14/2034,1161,Home,West,2,274.94,0.09,COD,5,2.2,500.39 +14429,2/15/2034,1346,Beauty,North,2,400.58,0.01,COD,5,4.3,793.15 +14430,2/16/2034,1950,Electronics,North,2,272.26,0.05,Card,11,2.1,517.29 +14431,2/17/2034,1360,Clothing,West,1,422.94,0.15,Card,2,2.5,359.5 +14432,2/18/2034,1768,Electronics,South,7,385.87,0.1,Card,7,2.6,2430.98 +14433,2/19/2034,1583,Electronics,West,6,82.07,0.27,COD,8,1.8,359.47 +14434,2/20/2034,1086,Home,North,7,471.91,0.04,Card,2,4.5,3171.24 +14435,2/21/2034,1933,Home,West,4,436.6,0.32,COD,4,1.5,1187.55 +14436,2/22/2034,1261,Clothing,North,1,398.66,0.31,COD,11,3.3,275.08 +14437,2/23/2034,1213,Clothing,East,3,105.73,0.32,COD,11,4.3,215.69 +14438,2/24/2034,1664,Clothing,West,3,171.78,0.26,Card,3,3.3,381.35 +14439,2/25/2034,1721,Electronics,West,6,245.01,0.04,COD,4,2.3,1411.26 +14440,2/26/2034,1912,Electronics,North,4,178.76,0.15,COD,5,4.1,607.78 +14441,2/27/2034,1572,Electronics,North,4,148.27,0.05,Card,6,3,563.43 +14442,2/28/2034,1779,Electronics,North,4,486.13,0.35,Card,2,1.7,1263.94 +14443,3/1/2034,1261,Home,North,2,388.37,0.12,COD,10,2.3,683.53 +14444,3/2/2034,1729,Electronics,West,1,345.8,0.2,Card,6,3.4,276.64 +14445,3/3/2034,1282,Electronics,North,3,147.18,0.27,Card,9,3.6,322.32 +14446,3/4/2034,1647,Clothing,West,1,552.07,0.32,Card,11,3.2,375.41 +14447,3/5/2034,1466,Beauty,South,1,126.84,0.26,Card,8,2.1,93.86 +14448,3/6/2034,1379,Electronics,West,1,480.05,0.24,Wallet,1,3.4,364.84 +14449,3/7/2034,1361,Electronics,North,4,580.5,0.16,COD,9,2.3,1950.48 +14450,3/8/2034,1448,Clothing,North,6,440.35,0.21,COD,11,1.9,2087.26 +14451,3/9/2034,1440,Home,South,6,595.82,0.03,Wallet,10,4.8,3467.67 +14452,3/10/2034,1092,Clothing,West,4,395.86,0.31,COD,11,2.3,1092.57 +14453,3/11/2034,1620,Home,South,3,142.21,0.19,COD,2,2.3,345.57 +14454,3/12/2034,1752,Beauty,West,3,134.23,0.01,Card,11,4.6,398.66 +14455,3/13/2034,1866,Home,North,3,204.87,0.32,COD,1,1.6,417.93 +14456,3/14/2034,1423,Clothing,West,6,19.17,0.17,Card,6,3.3,95.47 +14457,3/15/2034,1141,Clothing,North,6,413.79,0.3,Card,1,4.1,1737.92 +14458,3/16/2034,1290,Electronics,North,1,172.17,0.3,Card,6,2.1,120.52 +14459,3/17/2034,1431,Beauty,East,4,491.88,0.29,Card,2,4.4,1396.94 +14460,3/18/2034,1748,Clothing,East,2,225.12,0.02,Card,11,4.1,441.24 +14461,3/19/2034,1851,Electronics,West,1,295.77,0.09,Card,7,2.9,269.15 +14462,3/20/2034,1823,Home,North,5,579.93,0.31,Wallet,7,1.5,2000.76 +14463,3/21/2034,1688,Electronics,South,6,156.67,0.31,Card,4,4.9,648.61 +14464,3/22/2034,1652,Clothing,North,1,436.93,0.16,Wallet,2,3.5,367.02 +14465,3/23/2034,1700,Clothing,South,4,456.74,0.15,COD,11,3.1,1552.92 +14466,3/24/2034,1997,Clothing,West,5,144.28,0.06,COD,7,4.5,678.12 +14467,3/25/2034,1048,Home,West,7,308.08,0.34,Card,1,2.7,1423.33 +14468,3/26/2034,1301,Electronics,South,1,219.87,0.07,Wallet,11,3.3,204.48 +14469,3/27/2034,1880,Clothing,South,4,466.57,0.07,Card,11,4.4,1735.64 +14470,3/28/2034,1189,Clothing,North,4,379.15,0.23,COD,2,2.6,1167.78 +14471,3/29/2034,1135,Home,West,6,293.45,0.08,COD,2,4.1,1619.84 +14472,3/30/2034,1554,Home,North,2,470.93,0.33,Card,1,2,631.05 +14473,3/31/2034,1403,Clothing,South,1,152.57,0,Card,9,3.8,152.57 +14474,4/1/2034,1891,Clothing,East,4,455.87,0,Card,6,3,1823.48 +14475,4/2/2034,1864,Electronics,East,3,521.24,0.18,Wallet,3,1.7,1282.25 +14476,4/3/2034,1601,Beauty,East,4,528.99,0.17,Wallet,6,1.5,1756.25 +14477,4/4/2034,1806,Clothing,South,2,473.45,0.06,Wallet,7,2.8,890.09 +14478,4/5/2034,1340,Home,North,4,253.69,0.17,Card,3,3.8,842.25 +14479,4/6/2034,1756,Electronics,West,6,589.36,0.14,Card,4,3.4,3041.1 +14480,4/7/2034,1944,Electronics,South,7,237.06,0.31,Card,10,4.4,1145 +14481,4/8/2034,1703,Clothing,East,1,388.6,0,Wallet,1,2.6,388.6 +14482,4/9/2034,1317,Beauty,North,6,109.23,0.34,Card,6,4.4,432.55 +14483,4/10/2034,1617,Clothing,West,1,588.56,0.22,Card,6,1.1,459.08 +14484,4/11/2034,1362,Beauty,West,5,426.83,0.05,Wallet,9,2.5,2027.44 +14485,4/12/2034,1821,Clothing,South,1,455.73,0.02,COD,2,1.3,446.62 +14486,4/13/2034,1381,Clothing,South,5,53.48,0.19,COD,5,4.7,216.59 +14487,4/14/2034,1232,Electronics,West,6,461.6,0.08,Card,5,2.9,2548.03 +14488,4/15/2034,1776,Home,West,3,468.21,0.11,COD,7,2.3,1250.12 +14489,4/16/2034,1343,Electronics,East,2,407.99,0.09,Wallet,5,3,742.54 +14490,4/17/2034,1548,Beauty,West,3,185.77,0.23,COD,10,3.1,429.13 +14491,4/18/2034,1816,Beauty,South,5,301.47,0.19,Card,4,4.4,1220.95 +14492,4/19/2034,1552,Beauty,North,4,79.6,0.03,Card,10,3.2,308.85 +14493,4/20/2034,1528,Clothing,East,4,290.88,0.18,Card,2,2.7,954.09 +14494,4/21/2034,1855,Home,East,3,157.64,0.28,COD,8,4.8,340.5 +14495,4/22/2034,1788,Home,West,4,219.22,0.03,Card,5,4.9,850.57 +14496,4/23/2034,1818,Electronics,North,5,110.12,0.31,COD,4,1.2,379.91 +14497,4/24/2034,1570,Clothing,East,6,149.58,0.2,COD,9,3.8,717.98 +14498,4/25/2034,1934,Electronics,South,2,59.79,0.33,COD,2,2.5,80.12 +14499,4/26/2034,1182,Clothing,West,7,553.14,0.05,Card,3,3.7,3678.38 +14500,4/27/2034,1040,Electronics,South,1,325.29,0.35,COD,8,3.5,211.44 +14501,4/28/2034,1550,Electronics,West,5,247.09,0.23,COD,11,2.3,951.3 +14502,4/29/2034,1396,Clothing,East,7,327.99,0.2,Card,4,4.9,1836.74 +14503,4/30/2034,1703,Clothing,West,5,382.55,0.18,Wallet,9,2.4,1568.46 +14504,5/1/2034,1778,Clothing,North,1,554.3,0.01,Card,10,3.5,548.76 +14505,5/2/2034,1493,Electronics,South,1,119.54,0.33,COD,10,4.3,80.09 +14506,5/3/2034,1658,Clothing,North,2,187.9,0.23,Card,10,1.6,289.37 +14507,5/4/2034,1906,Electronics,South,2,585.84,0.03,COD,10,2.2,1136.53 +14508,5/5/2034,1332,Clothing,South,2,232.15,0.01,COD,9,1.8,459.66 +14509,5/6/2034,1126,Clothing,West,4,28.2,0.02,Card,10,4.1,110.54 +14510,5/7/2034,1557,Clothing,East,5,101.37,0.21,COD,9,4.2,400.41 +14511,5/8/2034,1556,Home,East,6,30.41,0.21,COD,1,2,144.14 +14512,5/9/2034,1000,Electronics,North,1,594.11,0.17,COD,6,1,493.11 +14513,5/10/2034,1167,Home,West,5,178.14,0.11,Card,10,2.7,792.72 +14514,5/11/2034,1619,Clothing,East,7,555.27,0.19,Card,6,3.7,3148.38 +14515,5/12/2034,1018,Clothing,South,5,597.59,0.18,COD,8,3.5,2450.12 +14516,5/13/2034,1331,Clothing,South,2,365.91,0.01,Card,7,2.8,724.5 +14517,5/14/2034,1583,Electronics,West,2,34.42,0.1,COD,7,2.2,61.96 +14518,5/15/2034,1455,Home,North,5,62.73,0.02,Card,2,2.9,307.38 +14519,5/16/2034,1956,Clothing,West,2,296.73,0.32,Card,11,1.1,403.55 +14520,5/17/2034,1108,Electronics,North,4,252.61,0.25,Wallet,4,1.3,757.83 +14521,5/18/2034,1267,Electronics,West,1,369.61,0.35,COD,1,1.7,240.25 +14522,5/19/2034,1444,Electronics,South,7,271.73,0.11,COD,11,3.5,1692.88 +14523,5/20/2034,1239,Beauty,West,5,561.43,0.31,Wallet,11,1.9,1936.93 +14524,5/21/2034,1928,Home,East,1,327.82,0.21,COD,7,2.7,258.98 +14525,5/22/2034,1300,Electronics,East,4,420.83,0.16,COD,4,3.5,1413.99 +14526,5/23/2034,1601,Clothing,West,7,539.44,0.08,Wallet,9,4.3,3473.99 +14527,5/24/2034,1102,Clothing,North,2,100.92,0.26,COD,6,3.2,149.36 +14528,5/25/2034,1987,Home,North,3,149.39,0.32,COD,6,1.7,304.76 +14529,5/26/2034,1249,Electronics,South,4,77.78,0.08,Card,9,4.8,286.23 +14530,5/27/2034,1452,Electronics,South,3,96.69,0.06,Wallet,8,1.4,272.67 +14531,5/28/2034,1519,Beauty,North,1,314.86,0.24,Card,6,2.5,239.29 +14532,5/29/2034,1152,Electronics,West,5,202.89,0.34,Card,6,4.7,669.54 +14533,5/30/2034,1858,Electronics,South,7,262.56,0.26,Card,6,3.4,1360.06 +14534,5/31/2034,1173,Beauty,North,2,589.76,0.1,Card,4,3.7,1061.57 +14535,6/1/2034,1342,Clothing,North,7,106.67,0.15,Card,5,2.2,634.69 +14536,6/2/2034,1669,Electronics,West,4,331.38,0.13,Wallet,3,1.3,1153.2 +14537,6/3/2034,1430,Electronics,East,2,72.84,0.3,COD,9,2.5,101.98 +14538,6/4/2034,1726,Electronics,North,3,201.32,0.27,Card,11,2.6,440.89 +14539,6/5/2034,1688,Electronics,South,3,323.6,0.21,COD,2,2.1,766.93 +14540,6/6/2034,1686,Beauty,West,6,568.78,0.1,COD,11,1.9,3071.41 +14541,6/7/2034,1851,Clothing,West,7,243.87,0.33,COD,7,2.4,1143.75 +14542,6/8/2034,1849,Home,West,5,52.97,0.23,Card,1,3.6,203.93 +14543,6/9/2034,1657,Beauty,East,3,242.07,0.34,Wallet,10,4.8,479.3 +14544,6/10/2034,1961,Clothing,East,5,100.26,0.2,Card,7,3.8,401.04 +14545,6/11/2034,1323,Electronics,South,6,149.54,0.29,Card,2,4.1,637.04 +14546,6/12/2034,1989,Clothing,South,4,376.58,0.28,Card,5,2.2,1084.55 +14547,6/13/2034,1672,Beauty,West,6,54.44,0.12,COD,1,1.4,287.44 +14548,6/14/2034,1638,Home,South,5,286.86,0.34,COD,5,2.2,946.64 +14549,6/15/2034,1419,Electronics,North,3,371.54,0.01,Card,11,2.6,1103.47 +14550,6/16/2034,1593,Home,East,1,261.79,0.27,Card,4,3.8,191.11 +14551,6/17/2034,1484,Clothing,West,5,26.19,0.34,COD,1,4.8,86.43 +14552,6/18/2034,1658,Beauty,West,2,591.53,0.12,COD,1,4.2,1041.09 +14553,6/19/2034,1750,Electronics,North,1,229.76,0.23,Card,7,2.1,176.92 +14554,6/20/2034,1411,Clothing,North,7,470.47,0.2,Wallet,3,4.3,2634.63 +14555,6/21/2034,1935,Beauty,North,5,205.5,0.27,Wallet,10,2.6,750.08 +14556,6/22/2034,1083,Clothing,North,2,292.88,0.3,Card,9,1.7,410.03 +14557,6/23/2034,1112,Clothing,West,7,242.25,0.21,COD,9,2.8,1339.64 +14558,6/24/2034,1736,Electronics,East,6,215.39,0.29,Card,10,3.3,917.56 +14559,6/25/2034,1331,Electronics,East,1,27.78,0.11,COD,11,4.1,24.72 +14560,6/26/2034,1377,Electronics,North,5,225.61,0.08,Card,9,2.4,1037.81 +14561,6/27/2034,1754,Beauty,South,4,535.35,0.15,Card,1,1.6,1820.19 +14562,6/28/2034,1654,Electronics,West,6,418.88,0.24,COD,4,1.4,1910.09 +14563,6/29/2034,1040,Clothing,East,2,100.07,0.07,Wallet,1,1.4,186.13 +14564,6/30/2034,1934,Home,North,4,360.83,0.24,Card,1,4.8,1096.92 +14565,7/1/2034,1769,Electronics,South,3,536.96,0.14,Card,9,4.8,1385.36 +14566,7/2/2034,1958,Clothing,South,6,424.52,0.28,Card,5,4.9,1833.93 +14567,7/3/2034,1796,Home,North,6,101.98,0.01,COD,1,2.2,605.76 +14568,7/4/2034,1104,Beauty,West,5,522.68,0.23,COD,11,1.8,2012.32 +14569,7/5/2034,1201,Clothing,East,5,191.4,0.23,COD,3,4.9,736.89 +14570,7/6/2034,1449,Home,South,2,280.63,0.33,COD,7,5,376.04 +14571,7/7/2034,1818,Electronics,East,6,322.79,0.25,COD,2,1.3,1452.56 +14572,7/8/2034,1842,Beauty,East,5,512.55,0.28,COD,4,4,1845.18 +14573,7/9/2034,1972,Electronics,South,3,559.99,0.32,COD,2,2.2,1142.38 +14574,7/10/2034,1265,Home,North,7,558.85,0.24,COD,9,4.6,2973.08 +14575,7/11/2034,1909,Electronics,South,7,19.65,0.1,Wallet,9,1.4,123.79 +14576,7/12/2034,1209,Beauty,South,7,554.3,0.3,Card,7,4.6,2716.07 +14577,7/13/2034,1562,Home,West,5,46.82,0.26,Card,7,1,173.23 +14578,7/14/2034,1117,Home,East,6,170.48,0.15,Card,2,3.1,869.45 +14579,7/15/2034,1712,Electronics,North,7,316.27,0.25,Wallet,10,2.3,1660.42 +14580,7/16/2034,1376,Clothing,East,1,295.76,0.3,Card,8,2.7,207.03 +14581,7/17/2034,1550,Clothing,South,4,368.76,0.34,Card,1,2.7,973.53 +14582,7/18/2034,1539,Home,North,6,295.48,0.33,Wallet,8,3.6,1187.83 +14583,7/19/2034,1770,Electronics,North,3,561.61,0.11,Wallet,5,1.1,1499.5 +14584,7/20/2034,1083,Beauty,North,6,155.72,0.15,Wallet,4,3.8,794.17 +14585,7/21/2034,1453,Beauty,North,3,175.3,0.04,Card,10,1.1,504.86 +14586,7/22/2034,1666,Electronics,West,6,553.63,0.09,Wallet,2,1.7,3022.82 +14587,7/23/2034,1628,Home,North,7,59.89,0.31,Card,3,3.4,289.27 +14588,7/24/2034,1513,Clothing,South,4,371.59,0.13,Card,10,1.3,1293.13 +14589,7/25/2034,1604,Clothing,West,4,413.82,0.22,Card,2,5,1291.12 +14590,7/26/2034,1677,Electronics,South,3,310.74,0.23,COD,11,4.1,717.81 +14591,7/27/2034,1386,Clothing,South,6,421.13,0.27,Card,4,3.8,1844.55 +14592,7/28/2034,1911,Home,East,4,116.06,0.06,COD,3,2.1,436.39 +14593,7/29/2034,1349,Clothing,North,2,513.79,0.11,Wallet,5,1.2,914.55 +14594,7/30/2034,1295,Clothing,North,6,96.92,0.16,Card,7,4.9,488.48 +14595,7/31/2034,1257,Home,South,4,249.48,0.13,Card,9,1.6,868.19 +14596,8/1/2034,1080,Home,North,1,59.03,0.34,Card,5,4.3,38.96 +14597,8/2/2034,1936,Electronics,West,1,333.95,0.29,Wallet,8,1.8,237.1 +14598,8/3/2034,1267,Beauty,East,2,406.8,0.17,Card,2,2.5,675.29 +14599,8/4/2034,1418,Clothing,North,4,565.61,0.31,Card,6,3.8,1561.08 +14600,8/5/2034,1234,Electronics,North,1,447.51,0.12,Card,8,4.8,393.81 +14601,8/6/2034,1832,Electronics,West,7,331.55,0.28,Wallet,9,1.1,1671.01 +14602,8/7/2034,1310,Clothing,East,6,560.58,0.08,Card,11,2,3094.4 +14603,8/8/2034,1812,Beauty,West,5,294.89,0.27,Card,4,4.1,1076.35 +14604,8/9/2034,1974,Clothing,South,4,343.31,0.16,Card,4,1.7,1153.52 +14605,8/10/2034,1985,Home,South,2,363.72,0.04,Wallet,7,1.4,698.34 +14606,8/11/2034,1356,Electronics,North,4,254.84,0.1,Card,4,1.2,917.42 +14607,8/12/2034,1212,Clothing,East,3,505.51,0.14,COD,5,3,1304.22 +14608,8/13/2034,1573,Beauty,South,3,123.33,0.26,Card,2,4.1,273.79 +14609,8/14/2034,1048,Home,West,1,339.58,0.03,Wallet,2,4.8,329.39 +14610,8/15/2034,1126,Electronics,South,3,437.51,0.23,COD,11,2.1,1010.65 +14611,8/16/2034,1222,Clothing,South,2,543.83,0.25,COD,10,1.5,815.75 +14612,8/17/2034,1920,Electronics,West,1,532.09,0.23,Card,5,2.6,409.71 +14613,8/18/2034,1278,Clothing,North,2,312.61,0.27,Card,10,1.2,456.41 +14614,8/19/2034,1407,Home,East,6,391.25,0.06,Card,10,2.3,2206.65 +14615,8/20/2034,1504,Home,North,2,245.63,0.21,COD,2,3.6,388.1 +14616,8/21/2034,1293,Electronics,West,3,288.88,0.33,Wallet,6,1.7,580.65 +14617,8/22/2034,1795,Beauty,South,6,545.17,0.21,Card,6,3.5,2584.11 +14618,8/23/2034,1276,Clothing,East,3,559.46,0.21,Wallet,8,4.9,1325.92 +14619,8/24/2034,1437,Clothing,North,2,538.82,0.26,Card,1,4.5,797.45 +14620,8/25/2034,1106,Clothing,West,3,95.95,0.12,Wallet,7,2.4,253.31 +14621,8/26/2034,1657,Clothing,South,3,512.3,0.25,Card,7,2.7,1152.68 +14622,8/27/2034,1419,Clothing,South,3,569.79,0.32,Card,9,2.7,1162.37 +14623,8/28/2034,1610,Clothing,North,4,226.33,0,COD,4,4.4,905.32 +14624,8/29/2034,1428,Clothing,West,6,318.41,0.3,COD,7,5,1337.32 +14625,8/30/2034,1374,Electronics,South,6,470.77,0.08,COD,6,4.3,2598.65 +14626,8/31/2034,1072,Home,South,7,343.82,0.16,COD,4,3.2,2021.66 +14627,9/1/2034,1948,Clothing,East,6,596.19,0.3,COD,10,1.4,2504 +14628,9/2/2034,1997,Electronics,South,7,281.59,0.29,Card,8,4.8,1399.5 +14629,9/3/2034,1633,Home,North,2,432.66,0.31,Card,3,4.4,597.07 +14630,9/4/2034,1029,Beauty,West,7,478.67,0.33,Card,8,4.4,2244.96 +14631,9/5/2034,1187,Beauty,West,7,304.05,0.16,COD,5,2.6,1787.81 +14632,9/6/2034,1363,Clothing,East,5,516.34,0.23,COD,4,2.8,1987.91 +14633,9/7/2034,1865,Electronics,West,2,334.5,0.14,COD,3,1.5,575.34 +14634,9/8/2034,1799,Clothing,North,6,255.82,0.12,COD,10,4.8,1350.73 +14635,9/9/2034,1450,Electronics,South,1,78.08,0.15,Card,7,4.8,66.37 +14636,9/10/2034,1194,Beauty,East,3,245.15,0.26,COD,7,2,544.23 +14637,9/11/2034,1155,Electronics,West,3,444.35,0.18,Card,6,3.8,1093.1 +14638,9/12/2034,1171,Electronics,East,5,553.95,0.28,COD,3,1.8,1994.22 +14639,9/13/2034,1846,Clothing,East,1,162.23,0.26,Card,9,2.6,120.05 +14640,9/14/2034,1040,Clothing,West,4,222.81,0.01,COD,11,2.2,882.33 +14641,9/15/2034,1062,Home,East,7,105.07,0.22,COD,2,2.6,573.68 +14642,9/16/2034,1022,Clothing,West,2,419.07,0.15,Card,3,2.2,712.42 +14643,9/17/2034,1359,Electronics,North,4,576.71,0.16,COD,1,2.4,1937.75 +14644,9/18/2034,1074,Electronics,West,1,389.96,0.29,Card,7,4.2,276.87 +14645,9/19/2034,1559,Clothing,South,5,375.99,0.19,Card,2,2.2,1522.76 +14646,9/20/2034,1671,Electronics,West,1,338.79,0.31,COD,10,4.3,233.77 +14647,9/21/2034,1824,Clothing,South,5,66.75,0.25,Wallet,8,3.3,250.31 +14648,9/22/2034,1117,Clothing,East,4,441.76,0.19,Card,9,4.1,1431.3 +14649,9/23/2034,1611,Home,West,4,367.2,0.26,Card,11,4.7,1086.91 +14650,9/24/2034,1379,Beauty,South,1,401.96,0.01,COD,2,1.6,397.94 +14651,9/25/2034,1928,Beauty,West,1,540.8,0.01,COD,6,2.4,535.39 +14652,9/26/2034,1919,Beauty,West,7,473.62,0.03,Card,11,1.2,3215.88 +14653,9/27/2034,1678,Electronics,West,3,471.84,0.15,Wallet,1,2.6,1203.19 +14654,9/28/2034,1289,Electronics,North,5,557.4,0.08,COD,8,1.9,2564.04 +14655,9/29/2034,1439,Electronics,South,3,594.11,0.34,Card,5,3.3,1176.34 +14656,9/30/2034,1667,Beauty,North,2,355.05,0.19,Card,9,4.1,575.18 +14657,10/1/2034,1932,Beauty,North,2,78.7,0.23,COD,3,2.9,121.2 +14658,10/2/2034,1006,Beauty,South,1,283.59,0.1,COD,2,2.3,255.23 +14659,10/3/2034,1195,Electronics,West,4,475.75,0.11,Card,7,1.6,1693.67 +14660,10/4/2034,1420,Beauty,North,2,31.22,0.12,Wallet,11,1.1,54.95 +14661,10/5/2034,1567,Clothing,North,2,48.28,0.24,Card,7,3.7,73.39 +14662,10/6/2034,1832,Electronics,North,3,54.29,0.17,COD,10,1.1,135.18 +14663,10/7/2034,1192,Clothing,West,3,442.66,0.18,Card,5,4.7,1088.94 +14664,10/8/2034,1558,Electronics,North,7,308.18,0.21,Wallet,7,3.4,1704.24 +14665,10/9/2034,1147,Clothing,East,7,230.81,0.27,COD,6,2.4,1179.44 +14666,10/10/2034,1786,Electronics,South,2,76.79,0.03,Card,9,1.2,148.97 +14667,10/11/2034,1668,Clothing,East,1,443.36,0.27,Wallet,3,2.7,323.65 +14668,10/12/2034,1201,Clothing,West,3,202.8,0.2,Card,4,4.5,486.72 +14669,10/13/2034,1443,Beauty,North,2,170.21,0.23,COD,9,4.9,262.12 +14670,10/14/2034,1913,Home,South,4,396.61,0.11,Wallet,10,1.3,1411.93 +14671,10/15/2034,1987,Clothing,North,3,342.02,0.14,COD,8,4.1,882.41 +14672,10/16/2034,1418,Home,West,2,227.01,0.08,Wallet,10,2,417.7 +14673,10/17/2034,1426,Beauty,South,7,390.27,0.34,Wallet,6,2.5,1803.05 +14674,10/18/2034,1478,Electronics,East,5,173.66,0.17,Wallet,3,3.2,720.69 +14675,10/19/2034,1474,Clothing,South,3,479.98,0.35,Card,9,5,935.96 +14676,10/20/2034,1125,Electronics,North,5,149.15,0.17,Card,9,1.8,618.97 +14677,10/21/2034,1394,Electronics,South,3,107.92,0.08,COD,11,1.5,297.86 +14678,10/22/2034,1816,Home,West,3,472.73,0.18,COD,6,3.4,1162.92 +14679,10/23/2034,1880,Beauty,West,7,429.12,0.01,COD,2,4.4,2973.8 +14680,10/24/2034,1805,Electronics,South,6,121.84,0.32,Card,7,3.6,497.11 +14681,10/25/2034,1575,Home,West,6,83,0.29,Wallet,9,2.4,353.58 +14682,10/26/2034,1324,Beauty,West,5,505.46,0.25,Wallet,9,4.9,1895.48 +14683,10/27/2034,1391,Beauty,West,1,469.31,0.21,Card,3,5,370.75 +14684,10/28/2034,1929,Electronics,East,2,206.45,0.2,Card,2,4.1,330.32 +14685,10/29/2034,1687,Beauty,North,1,400.05,0.35,Card,5,4.2,260.03 +14686,10/30/2034,1627,Electronics,West,1,87.63,0.1,Card,11,4,78.87 +14687,10/31/2034,1439,Clothing,South,6,311.62,0.27,COD,10,2,1364.9 +14688,11/1/2034,1203,Electronics,West,2,25.96,0.2,Wallet,7,1.6,41.54 +14689,11/2/2034,1485,Electronics,East,6,244.09,0.34,Card,3,3.2,966.6 +14690,11/3/2034,1832,Home,South,6,58.78,0.29,COD,4,4.8,250.4 +14691,11/4/2034,1030,Clothing,North,7,292.96,0.35,COD,10,4.5,1332.97 +14692,11/5/2034,1387,Electronics,South,6,261.68,0.21,Card,2,1.4,1240.36 +14693,11/6/2034,1624,Electronics,South,4,274.97,0.07,COD,11,1.2,1022.89 +14694,11/7/2034,1876,Home,South,1,41.52,0.18,COD,10,4.5,34.05 +14695,11/8/2034,1433,Electronics,South,7,226.55,0.25,Wallet,2,3.5,1189.39 +14696,11/9/2034,1836,Home,West,7,457.54,0.27,COD,7,2.2,2338.03 +14697,11/10/2034,1925,Electronics,North,1,230.81,0,COD,2,3.2,230.81 +14698,11/11/2034,1375,Electronics,West,7,433.38,0.18,Card,1,1.9,2487.6 +14699,11/12/2034,1343,Clothing,East,1,231.15,0.08,Card,4,4.8,212.66 +14700,11/13/2034,1442,Clothing,East,4,262.6,0.31,Card,6,4.3,724.78 +14701,11/14/2034,1578,Clothing,South,3,344.88,0.05,Card,10,4.8,982.91 +14702,11/15/2034,1074,Electronics,West,7,571.15,0.23,Card,10,1.7,3078.5 +14703,11/16/2034,1556,Beauty,West,5,78.68,0.09,Card,4,4.4,357.99 +14704,11/17/2034,1771,Clothing,North,5,34.25,0.12,COD,1,3.2,150.7 +14705,11/18/2034,1665,Electronics,North,4,370.65,0.33,COD,1,2.3,993.34 +14706,11/19/2034,1154,Clothing,North,1,570.22,0.08,Card,9,2.9,524.6 +14707,11/20/2034,1429,Beauty,West,5,593.99,0.03,Card,1,4.8,2880.85 +14708,11/21/2034,1362,Electronics,North,4,298.24,0.02,COD,7,3.8,1169.1 +14709,11/22/2034,1447,Electronics,North,6,288.83,0.18,Card,11,2.4,1421.04 +14710,11/23/2034,1986,Home,North,2,392.3,0.22,Card,7,5,611.99 +14711,11/24/2034,1233,Clothing,South,5,340.05,0.11,COD,1,2.4,1513.22 +14712,11/25/2034,1562,Clothing,East,2,385.94,0.24,Card,1,4.3,586.63 +14713,11/26/2034,1817,Electronics,East,1,526.29,0.02,Card,6,4.1,515.76 +14714,11/27/2034,1261,Electronics,West,5,451.59,0.3,Card,8,3.9,1580.56 +14715,11/28/2034,1826,Clothing,West,4,305.67,0.29,Card,7,3.7,868.1 +14716,11/29/2034,1124,Electronics,South,3,285.19,0.34,Wallet,6,1.4,564.68 +14717,11/30/2034,1910,Clothing,East,5,389.17,0.33,Card,10,5,1303.72 +14718,12/1/2034,1244,Clothing,North,5,281.59,0.12,COD,3,1.6,1239 +14719,12/2/2034,1541,Electronics,North,5,282.8,0.14,COD,11,3.4,1216.04 +14720,12/3/2034,1937,Beauty,West,5,24.54,0.26,Card,7,2,90.8 +14721,12/4/2034,1484,Home,East,4,116.83,0.05,Card,6,1.7,443.95 +14722,12/5/2034,1121,Home,West,4,300.78,0.11,Wallet,8,3.2,1070.78 +14723,12/6/2034,1124,Electronics,West,3,496.25,0.04,Wallet,4,4.3,1429.2 +14724,12/7/2034,1548,Electronics,North,4,178.06,0.16,Card,9,2.5,598.28 +14725,12/8/2034,1169,Clothing,North,4,320.75,0.19,Card,1,1.3,1039.23 +14726,12/9/2034,1123,Electronics,East,1,216.8,0.07,COD,7,3.5,201.62 +14727,12/10/2034,1868,Beauty,West,7,76.31,0.01,Card,9,4.1,528.83 +14728,12/11/2034,1034,Electronics,South,1,575.6,0.25,Card,10,2.2,431.7 +14729,12/12/2034,1086,Clothing,East,7,514.98,0.01,Card,1,3.8,3568.81 +14730,12/13/2034,1645,Clothing,West,2,60.92,0.34,Card,10,1.3,80.41 +14731,12/14/2034,1707,Clothing,East,3,436.08,0.08,Card,3,2.4,1203.58 +14732,12/15/2034,1785,Electronics,East,7,218.33,0.23,COD,7,2.9,1176.8 +14733,12/16/2034,1200,Clothing,East,1,596.99,0.15,COD,9,4.1,507.44 +14734,12/17/2034,1368,Electronics,South,3,191.9,0.02,COD,1,2.4,564.19 +14735,12/18/2034,1796,Beauty,South,3,154.66,0.17,Card,6,2.8,385.1 +14736,12/19/2034,1076,Electronics,North,5,347.22,0.18,Card,11,3.5,1423.6 +14737,12/20/2034,1058,Beauty,North,6,503.55,0.3,COD,2,3.5,2114.91 +14738,12/21/2034,1430,Home,West,6,127.62,0.26,Card,5,3.1,566.63 +14739,12/22/2034,1637,Electronics,East,6,430,0.03,Card,7,2.3,2502.6 +14740,12/23/2034,1499,Home,West,3,50.92,0.07,Card,7,3.7,142.07 +14741,12/24/2034,1912,Electronics,North,5,552.58,0.11,Card,10,4.3,2458.98 +14742,12/25/2034,1108,Beauty,South,2,62.43,0.04,Wallet,7,1.6,119.87 +14743,12/26/2034,1735,Clothing,North,2,549.83,0.16,COD,4,2.4,923.71 +14744,12/27/2034,1277,Electronics,West,6,302.12,0.34,Card,6,3.7,1196.4 +14745,12/28/2034,1067,Clothing,North,2,277.13,0.18,COD,11,4,454.49 +14746,12/29/2034,1068,Electronics,West,5,584.38,0.26,Card,10,4.1,2162.21 +14747,12/30/2034,1164,Beauty,West,6,594.37,0.24,Card,6,3.6,2710.33 +14748,12/31/2034,1488,Electronics,West,7,395.35,0.3,Card,7,2.9,1937.22 +14749,1/1/2035,1304,Home,West,7,89.36,0.08,COD,9,3.6,575.48 +14750,1/2/2035,1908,Clothing,North,5,311.11,0.26,Card,6,1.5,1151.11 +14751,1/3/2035,1673,Beauty,West,2,324.56,0.31,Card,10,1.8,447.89 +14752,1/4/2035,1364,Electronics,West,6,315.95,0.06,Card,1,4.7,1781.96 +14753,1/5/2035,1853,Clothing,East,7,348.15,0.12,Card,8,4.7,2144.6 +14754,1/6/2035,1820,Clothing,West,5,25.95,0.34,COD,2,3.9,85.64 +14755,1/7/2035,1378,Home,North,4,431.07,0.27,Wallet,3,2.3,1258.72 +14756,1/8/2035,1342,Electronics,West,7,431.75,0.1,COD,5,3.6,2720.02 +14757,1/9/2035,1946,Electronics,South,4,82.55,0.2,COD,6,3.8,264.16 +14758,1/10/2035,1898,Electronics,South,5,348.59,0.14,Wallet,7,3.1,1498.94 +14759,1/11/2035,1553,Home,West,5,347.49,0.17,Card,4,4,1442.08 +14760,1/12/2035,1353,Electronics,South,1,414.23,0.12,Card,3,1.1,364.52 +14761,1/13/2035,1415,Clothing,South,7,64.96,0.1,Card,9,2,409.25 +14762,1/14/2035,1108,Electronics,North,1,381.5,0.24,Card,4,4.2,289.94 +14763,1/15/2035,1562,Beauty,East,3,179.24,0.27,Card,9,4.8,392.54 +14764,1/16/2035,1761,Beauty,South,7,311.6,0.31,Card,9,4.5,1505.03 +14765,1/17/2035,1496,Clothing,South,6,467.39,0.05,Card,11,3.9,2664.12 +14766,1/18/2035,1340,Clothing,East,3,427.8,0.29,COD,3,1.7,911.21 +14767,1/19/2035,1941,Electronics,East,3,84.56,0.09,Wallet,3,2.5,230.85 +14768,1/20/2035,1382,Electronics,South,2,360.84,0.15,Card,11,1.2,613.43 +14769,1/21/2035,1532,Electronics,West,4,581.93,0.32,Card,8,3.6,1582.85 +14770,1/22/2035,1299,Home,South,2,106.71,0.16,COD,1,2.8,179.27 +14771,1/23/2035,1138,Clothing,West,6,513.95,0.07,Card,6,3.3,2867.84 +14772,1/24/2035,1358,Beauty,West,5,425.99,0.06,Card,6,4.9,2002.15 +14773,1/25/2035,1835,Clothing,West,1,467.79,0.17,Card,9,2.6,388.27 +14774,1/26/2035,1498,Home,East,6,179.95,0.27,COD,2,2.2,788.18 +14775,1/27/2035,1384,Clothing,South,5,183.42,0.35,Wallet,8,1.6,596.12 +14776,1/28/2035,1603,Clothing,South,6,545.02,0.28,COD,7,1.6,2354.49 +14777,1/29/2035,1958,Electronics,North,5,225.5,0.31,Card,2,3.1,777.97 +14778,1/30/2035,1279,Clothing,East,7,51.86,0.26,Card,1,4,268.63 +14779,1/31/2035,1636,Clothing,North,1,366.35,0.31,Card,4,3.3,252.78 +14780,2/1/2035,1482,Home,North,5,88.02,0.03,Wallet,2,4.5,426.9 +14781,2/2/2035,1908,Beauty,West,3,481.01,0.33,COD,3,2.3,966.83 +14782,2/3/2035,1110,Electronics,East,6,390.42,0.14,Card,2,3.4,2014.57 +14783,2/4/2035,1865,Electronics,North,1,526.72,0.32,COD,9,3.6,358.17 +14784,2/5/2035,1138,Clothing,South,5,474.13,0.03,Card,4,2.1,2299.53 +14785,2/6/2035,1995,Clothing,North,3,80.59,0.25,Wallet,1,2.6,181.33 +14786,2/7/2035,1434,Electronics,East,3,237.93,0.26,Wallet,8,3.4,528.2 +14787,2/8/2035,1508,Home,South,7,468.12,0.35,Card,4,1.1,2129.95 +14788,2/9/2035,1272,Beauty,South,4,259.14,0.27,COD,10,4.5,756.69 +14789,2/10/2035,1098,Beauty,South,3,583.83,0.13,COD,11,1.4,1523.8 +14790,2/11/2035,1763,Electronics,West,2,445.41,0.2,Card,11,1.2,712.66 +14791,2/12/2035,1849,Beauty,South,1,24.07,0.13,COD,8,1.9,20.94 +14792,2/13/2035,1103,Home,West,1,529.79,0.07,COD,8,3,492.7 +14793,2/14/2035,1213,Clothing,West,1,73.97,0.09,Card,9,2.3,67.31 +14794,2/15/2035,1760,Clothing,North,5,97.21,0.08,COD,10,2.8,447.17 +14795,2/16/2035,1663,Home,North,6,444.68,0.19,COD,7,1.3,2161.14 +14796,2/17/2035,1761,Clothing,South,5,521.01,0.32,Card,4,1.9,1771.43 +14797,2/18/2035,1786,Clothing,East,2,328.76,0.32,Card,2,1.4,447.11 +14798,2/19/2035,1164,Clothing,South,6,184.09,0.02,COD,6,1.9,1082.45 +14799,2/20/2035,1998,Clothing,North,7,220.52,0.03,Card,4,3.8,1497.33 +14800,2/21/2035,1852,Electronics,South,3,215.59,0.09,Wallet,6,3.3,588.56 +14801,2/22/2035,1519,Beauty,North,5,206.11,0.09,Card,8,2.3,937.8 +14802,2/23/2035,1283,Home,South,6,157.1,0.03,Card,3,2,914.32 +14803,2/24/2035,1516,Clothing,East,3,371.19,0.14,Card,1,5,957.67 +14804,2/25/2035,1656,Electronics,South,6,541.74,0.21,COD,5,4.1,2567.85 +14805,2/26/2035,1612,Clothing,East,3,194.64,0.2,COD,3,4.3,467.14 +14806,2/27/2035,1163,Electronics,East,6,124.22,0.19,Card,6,1.1,603.71 +14807,2/28/2035,1885,Electronics,South,5,505.57,0.12,Card,3,1.2,2224.51 +14808,3/1/2035,1658,Clothing,East,5,448.94,0.25,Wallet,1,3.9,1683.52 +14809,3/2/2035,1063,Clothing,East,2,559.54,0.29,Card,9,1.8,794.55 +14810,3/3/2035,1090,Clothing,North,7,111.83,0.12,Card,5,2.7,688.87 +14811,3/4/2035,1116,Electronics,North,7,99.39,0.03,Card,2,1.7,674.86 +14812,3/5/2035,1865,Clothing,East,4,331.74,0.1,Card,2,1.7,1194.26 +14813,3/6/2035,1266,Electronics,West,1,374.44,0.05,Card,11,1.4,355.72 +14814,3/7/2035,1821,Beauty,South,5,295.9,0.16,Card,9,3.4,1242.78 +14815,3/8/2035,1684,Clothing,East,5,365.4,0.05,Card,1,4,1735.65 +14816,3/9/2035,1558,Home,South,3,120.52,0.16,Wallet,10,1.2,303.71 +14817,3/10/2035,1139,Electronics,North,4,295.57,0.08,Card,3,2.1,1087.7 +14818,3/11/2035,1245,Electronics,South,7,399.98,0.26,COD,10,3.6,2071.9 +14819,3/12/2035,1660,Beauty,East,5,268.13,0.01,COD,11,2.6,1327.24 +14820,3/13/2035,1757,Electronics,East,6,412.48,0.19,Card,7,3.8,2004.65 +14821,3/14/2035,1394,Clothing,East,7,278.95,0.06,COD,1,4,1835.49 +14822,3/15/2035,1486,Clothing,East,4,210.16,0,Card,2,1.1,840.64 +14823,3/16/2035,1475,Electronics,West,1,192.61,0.3,Card,6,2.5,134.83 +14824,3/17/2035,1516,Home,West,6,255.38,0.24,Wallet,9,3.9,1164.53 +14825,3/18/2035,1976,Clothing,West,3,28.51,0.03,COD,9,2.5,82.96 +14826,3/19/2035,1183,Electronics,East,2,406.09,0.23,Wallet,8,1,625.38 +14827,3/20/2035,1019,Electronics,West,6,509.39,0.21,Wallet,3,2.3,2414.51 +14828,3/21/2035,1936,Electronics,South,7,222.46,0.17,Card,2,4.5,1292.49 +14829,3/22/2035,1557,Beauty,East,1,41.93,0.15,Card,1,4.8,35.64 +14830,3/23/2035,1523,Home,North,6,592.26,0.31,Card,11,3.2,2451.96 +14831,3/24/2035,1581,Electronics,East,4,169.26,0.09,Wallet,11,2.2,616.11 +14832,3/25/2035,1528,Electronics,South,4,89.07,0.14,Wallet,9,2.9,306.4 +14833,3/26/2035,1882,Home,West,1,231.31,0.12,COD,5,1.9,203.55 +14834,3/27/2035,1146,Clothing,East,7,447.06,0.27,Card,3,1.7,2284.48 +14835,3/28/2035,1665,Clothing,West,4,186.94,0.32,Card,10,3,508.48 +14836,3/29/2035,1303,Clothing,East,6,351.2,0.3,Wallet,10,3.9,1475.04 +14837,3/30/2035,1619,Electronics,South,2,258.1,0.28,Wallet,11,1.9,371.66 +14838,3/31/2035,1747,Home,East,6,83.89,0.35,Card,5,4.6,327.17 +14839,4/1/2035,1819,Beauty,West,2,208.22,0.24,Card,11,1.7,316.49 +14840,4/2/2035,1863,Electronics,West,4,439.05,0.26,Card,3,3.2,1299.59 +14841,4/3/2035,1581,Clothing,South,6,373.02,0.34,Card,9,4.1,1477.16 +14842,4/4/2035,1694,Clothing,East,4,85.07,0,Wallet,1,1.9,340.28 +14843,4/5/2035,1761,Clothing,North,7,110.54,0.22,COD,1,2.2,603.55 +14844,4/6/2035,1227,Electronics,East,2,389.83,0.26,COD,3,1.2,576.95 +14845,4/7/2035,1101,Home,South,7,490.85,0.32,Card,6,4.8,2336.45 +14846,4/8/2035,1586,Clothing,North,4,219.44,0.31,Card,11,2.9,605.65 +14847,4/9/2035,1416,Clothing,South,5,363.26,0.29,Card,2,1.3,1289.57 +14848,4/10/2035,1957,Electronics,East,3,114.83,0.33,COD,1,4.3,230.81 +14849,4/11/2035,1215,Electronics,North,6,197.16,0.19,COD,8,3.3,958.2 +14850,4/12/2035,1406,Electronics,South,5,26.86,0,Card,11,1.2,134.3 +14851,4/13/2035,1398,Home,West,7,464.44,0,Card,10,2.8,3251.08 +14852,4/14/2035,1922,Electronics,North,4,249.59,0.19,Card,9,2.7,808.67 +14853,4/15/2035,1714,Home,North,4,492.43,0.15,Card,10,1.6,1674.26 +14854,4/16/2035,1703,Clothing,South,3,429.4,0.16,COD,1,2.7,1082.09 +14855,4/17/2035,1760,Clothing,West,4,499.82,0.14,COD,3,2.1,1719.38 +14856,4/18/2035,1498,Clothing,North,3,182.11,0.32,Card,5,3.8,371.5 +14857,4/19/2035,1753,Clothing,South,6,123.29,0.13,Wallet,7,1,643.57 +14858,4/20/2035,1464,Electronics,North,2,583.56,0.3,COD,10,1.4,816.98 +14859,4/21/2035,1690,Electronics,North,3,434.64,0.32,Card,4,4.7,886.67 +14860,4/22/2035,1948,Home,North,3,502.91,0.17,Card,6,2.7,1252.25 +14861,4/23/2035,1973,Home,West,5,22.68,0.16,Wallet,1,1.7,95.26 +14862,4/24/2035,1730,Electronics,East,4,222.36,0.27,COD,4,4.2,649.29 +14863,4/25/2035,1081,Clothing,East,6,449.55,0.25,Card,8,4.4,2022.98 +14864,4/26/2035,1603,Electronics,West,2,60.62,0.11,COD,5,1.8,107.9 +14865,4/27/2035,1946,Electronics,West,1,346.89,0.04,Card,8,3.9,333.01 +14866,4/28/2035,1686,Electronics,South,7,266.01,0.09,Wallet,1,3.5,1694.48 +14867,4/29/2035,1750,Beauty,North,3,25.31,0.05,Wallet,10,4,72.13 +14868,4/30/2035,1771,Electronics,West,1,153.05,0.1,COD,9,4.2,137.74 +14869,5/1/2035,1902,Electronics,South,4,181.6,0.09,COD,4,3.6,661.02 +14870,5/2/2035,1364,Electronics,East,7,80.44,0.22,Card,9,4.8,439.2 +14871,5/3/2035,1162,Electronics,East,3,384.45,0.33,COD,8,4.5,772.74 +14872,5/4/2035,1047,Clothing,East,1,156.8,0.24,COD,8,1.9,119.17 +14873,5/5/2035,1510,Electronics,East,5,177.41,0.32,COD,2,4.7,603.19 +14874,5/6/2035,1328,Electronics,South,1,540.47,0.27,COD,3,2.4,394.54 +14875,5/7/2035,1839,Clothing,North,7,288.27,0.25,Wallet,10,3.9,1513.42 +14876,5/8/2035,1115,Electronics,South,5,244.39,0.14,Card,9,4.4,1050.88 +14877,5/9/2035,1940,Home,North,7,438.46,0.11,Card,3,2.7,2731.61 +14878,5/10/2035,1848,Clothing,East,2,547.12,0.3,COD,8,1.2,765.97 +14879,5/11/2035,1336,Electronics,West,4,29.65,0.32,Wallet,5,4.8,80.65 +14880,5/12/2035,1880,Home,West,6,277.22,0.16,Wallet,7,1.3,1397.19 +14881,5/13/2035,1736,Electronics,West,1,372.31,0,COD,4,2.4,372.31 +14882,5/14/2035,1863,Clothing,North,3,201.36,0.28,Wallet,8,3.4,434.94 +14883,5/15/2035,1839,Clothing,East,7,466.86,0.1,COD,4,1.5,2941.22 +14884,5/16/2035,1146,Electronics,South,7,583.31,0,Card,5,4.4,4083.17 +14885,5/17/2035,1574,Clothing,West,4,566.91,0.28,COD,1,1.8,1632.7 +14886,5/18/2035,1805,Beauty,North,1,170.6,0.18,Card,10,4.9,139.89 +14887,5/19/2035,1322,Beauty,West,3,147.41,0.24,Card,8,4.7,336.09 +14888,5/20/2035,1442,Clothing,South,3,575.13,0.32,Card,7,3.4,1173.27 +14889,5/21/2035,1836,Clothing,East,7,283.3,0.19,Card,11,3.6,1606.31 +14890,5/22/2035,1012,Electronics,South,6,136.85,0.18,Card,5,3.1,673.3 +14891,5/23/2035,1942,Electronics,East,7,428.59,0.1,Card,6,2.6,2700.12 +14892,5/24/2035,1493,Clothing,East,6,181.39,0.11,Card,1,2.4,968.62 +14893,5/25/2035,1700,Clothing,East,7,171.34,0.28,Card,8,4.6,863.55 +14894,5/26/2035,1286,Beauty,West,7,529.36,0.16,COD,9,3.3,3112.64 +14895,5/27/2035,1719,Clothing,South,3,110.05,0.06,COD,11,4.3,310.34 +14896,5/28/2035,1113,Clothing,West,6,52.67,0.03,Wallet,5,3.1,306.54 +14897,5/29/2035,1479,Clothing,South,3,172.47,0.17,Wallet,10,2.2,429.45 +14898,5/30/2035,1021,Home,North,1,370.06,0.16,Card,7,1.4,310.85 +14899,5/31/2035,1348,Home,North,7,87.01,0.23,COD,10,2.3,468.98 +14900,6/1/2035,1725,Clothing,South,2,290.88,0.16,Card,4,4.5,488.68 +14901,6/2/2035,1682,Electronics,South,6,381.99,0.05,Card,6,3.8,2177.34 +14902,6/3/2035,1834,Home,South,5,511.51,0.18,COD,2,4.1,2097.19 +14903,6/4/2035,1565,Electronics,South,5,149.47,0.32,COD,4,4.1,508.2 +14904,6/5/2035,1905,Beauty,East,5,493.15,0.06,Wallet,5,1.5,2317.8 +14905,6/6/2035,1809,Clothing,West,2,152.42,0.24,COD,9,1.6,231.68 +14906,6/7/2035,1319,Clothing,East,3,410.91,0.21,Card,9,2.3,973.86 +14907,6/8/2035,1125,Clothing,West,3,266.94,0.26,Wallet,8,2.2,592.61 +14908,6/9/2035,1276,Home,West,4,82.09,0.05,COD,4,1.3,311.94 +14909,6/10/2035,1975,Electronics,West,5,432.84,0.33,Wallet,6,1.6,1450.01 +14910,6/11/2035,1203,Beauty,East,5,142.39,0.22,COD,7,4.4,555.32 +14911,6/12/2035,1193,Clothing,South,3,118.32,0.3,Card,1,3.4,248.47 +14912,6/13/2035,1680,Electronics,East,5,224.62,0.09,Card,1,2.4,1022.02 +14913,6/14/2035,1663,Electronics,East,3,397.17,0.26,Card,4,3.1,881.72 +14914,6/15/2035,1546,Clothing,West,7,151.89,0.27,Card,3,2,776.16 +14915,6/16/2035,1695,Clothing,North,7,122.44,0.14,Card,10,3.3,737.09 +14916,6/17/2035,1285,Clothing,North,3,20.82,0.13,COD,4,1.3,54.34 +14917,6/18/2035,1056,Home,East,6,290.91,0.23,Wallet,9,4.6,1344 +14918,6/19/2035,1733,Clothing,West,3,265.76,0.03,Wallet,2,2,773.36 +14919,6/20/2035,1302,Beauty,East,1,151.81,0.26,COD,4,4.3,112.34 +14920,6/21/2035,1162,Clothing,East,1,46.39,0.02,Card,7,3.6,45.46 +14921,6/22/2035,1018,Home,South,1,266.11,0.07,Card,2,3.1,247.48 +14922,6/23/2035,1369,Electronics,West,1,476.1,0.23,COD,8,4.7,366.6 +14923,6/24/2035,1263,Clothing,North,2,433.44,0.03,Card,10,1.6,840.87 +14924,6/25/2035,1793,Electronics,North,4,518.57,0.34,Wallet,4,1.5,1369.02 +14925,6/26/2035,1112,Clothing,North,4,20.61,0.3,Wallet,9,2.3,57.71 +14926,6/27/2035,1487,Beauty,East,3,580.36,0.22,Card,1,4.3,1358.04 +14927,6/28/2035,1326,Electronics,West,7,214.73,0.29,COD,7,1.1,1067.21 +14928,6/29/2035,1541,Electronics,South,5,594.38,0.31,Card,1,2,2050.61 +14929,6/30/2035,1646,Beauty,North,1,162.78,0.09,COD,11,2.7,148.13 +14930,7/1/2035,1578,Electronics,West,4,290.85,0.3,Card,10,3.9,814.38 +14931,7/2/2035,1064,Home,North,4,222.05,0.07,Card,11,2.2,826.03 +14932,7/3/2035,1291,Clothing,South,1,223.12,0.14,COD,9,2.8,191.88 +14933,7/4/2035,1024,Home,West,7,507.74,0.2,COD,10,2.3,2843.34 +14934,7/5/2035,1548,Electronics,East,2,451.66,0.25,COD,10,1.4,677.49 +14935,7/6/2035,1000,Electronics,East,2,595.41,0.01,COD,1,4,1178.91 +14936,7/7/2035,1910,Clothing,North,4,373.91,0.1,COD,3,2.8,1346.08 +14937,7/8/2035,1548,Beauty,North,2,286.01,0.21,COD,7,4.3,451.9 +14938,7/9/2035,1140,Clothing,West,6,67.69,0.13,Wallet,1,3.8,353.34 +14939,7/10/2035,1743,Electronics,South,1,597.99,0.27,Wallet,5,1.2,436.53 +14940,7/11/2035,1647,Clothing,North,7,337.65,0.23,COD,6,3,1819.93 +14941,7/12/2035,1900,Beauty,West,4,424.78,0.08,COD,3,5,1563.19 +14942,7/13/2035,1187,Home,South,1,252.94,0.05,COD,6,2.2,240.29 +14943,7/14/2035,1127,Beauty,North,2,335.41,0.22,Card,4,3,523.24 +14944,7/15/2035,1200,Electronics,North,1,566.41,0.16,Card,6,3.6,475.78 +14945,7/16/2035,1126,Electronics,West,2,112.36,0.06,Wallet,6,1.8,211.24 +14946,7/17/2035,1256,Clothing,North,7,186.04,0.11,Wallet,4,3.8,1159.03 +14947,7/18/2035,1675,Home,East,2,103.95,0.11,COD,1,3.6,185.03 +14948,7/19/2035,1546,Electronics,South,1,478.45,0.04,Card,3,2.5,459.31 +14949,7/20/2035,1193,Electronics,South,7,51.3,0.19,Card,11,2.1,290.87 +14950,7/21/2035,1702,Home,East,2,62.75,0.27,Card,10,4.7,91.62 +14951,7/22/2035,1103,Electronics,West,6,189.62,0.2,Card,7,1.5,910.18 +14952,7/23/2035,1534,Clothing,East,3,315.8,0.29,COD,2,2.7,672.65 +14953,7/24/2035,1264,Clothing,East,1,252.67,0.04,Wallet,4,4.1,242.56 +14954,7/25/2035,1801,Clothing,South,3,41.22,0.15,Card,6,1.6,105.11 +14955,7/26/2035,1941,Home,West,1,575.13,0.21,COD,5,4.7,454.35 +14956,7/27/2035,1973,Clothing,North,2,572.43,0.24,Card,6,3.1,870.09 +14957,7/28/2035,1383,Clothing,East,2,178.42,0.24,Wallet,5,3,271.2 +14958,7/29/2035,1259,Clothing,East,7,442.94,0.26,Wallet,9,2.7,2294.43 +14959,7/30/2035,1413,Clothing,West,4,353.47,0.23,Card,11,4.5,1088.69 +14960,7/31/2035,1990,Clothing,East,6,153.92,0.03,Wallet,2,4.8,895.81 +14961,8/1/2035,1357,Electronics,West,4,168.37,0.24,COD,4,2.5,511.84 +14962,8/2/2035,1074,Electronics,North,3,302.32,0.25,Card,1,3.2,680.22 +14963,8/3/2035,1354,Electronics,West,2,260.25,0.35,COD,7,2.3,338.32 +14964,8/4/2035,1583,Electronics,North,4,185.37,0.24,Card,1,2.5,563.52 +14965,8/5/2035,1770,Clothing,West,2,487.39,0.24,COD,6,1.1,740.83 +14966,8/6/2035,1909,Home,East,1,296.66,0.18,Wallet,10,4.1,243.26 +14967,8/7/2035,1187,Home,North,4,398.09,0.3,COD,10,4.9,1114.65 +14968,8/8/2035,1972,Home,East,3,125.72,0.35,Card,9,4.1,245.15 +14969,8/9/2035,1684,Clothing,North,7,327.1,0.27,Card,2,3.1,1671.48 +14970,8/10/2035,1991,Clothing,West,4,201.02,0.21,Card,1,4.3,635.22 +14971,8/11/2035,1289,Clothing,West,2,322.95,0.03,Card,11,4.4,626.52 +14972,8/12/2035,1044,Electronics,West,5,471.78,0.25,Card,11,3.2,1769.17 +14973,8/13/2035,1572,Electronics,South,5,464.81,0.25,COD,11,4.7,1743.04 +14974,8/14/2035,1082,Clothing,South,7,222.22,0.27,COD,10,1.1,1135.54 +14975,8/15/2035,1122,Beauty,North,7,421.15,0.04,COD,3,1,2830.13 +14976,8/16/2035,1357,Electronics,South,6,565.65,0.23,Card,6,1.3,2613.3 +14977,8/17/2035,1527,Electronics,West,7,381.02,0.1,Card,7,1.2,2400.43 +14978,8/18/2035,1065,Home,South,2,101.82,0.27,Card,11,2.7,148.66 +14979,8/19/2035,1935,Electronics,South,1,412.63,0.08,Card,8,4.8,379.62 +14980,8/20/2035,1656,Home,East,4,76.37,0.24,Card,4,3.7,232.16 +14981,8/21/2035,1374,Home,North,7,525.18,0.1,Card,8,3.6,3308.63 +14982,8/22/2035,1161,Beauty,North,5,317.25,0,COD,7,2.5,1586.25 +14983,8/23/2035,1745,Clothing,North,1,240.31,0.22,Wallet,11,3.1,187.44 +14984,8/24/2035,1379,Home,South,2,48.35,0.04,COD,8,2.2,92.83 +14985,8/25/2035,1655,Clothing,West,1,237.76,0.23,COD,5,3.1,183.08 +14986,8/26/2035,1357,Clothing,East,2,543.38,0.32,Card,10,4,739 +14987,8/27/2035,1187,Clothing,North,6,27.28,0.34,Wallet,7,3.2,108.03 +14988,8/28/2035,1321,Electronics,South,4,292.67,0.08,Card,4,2.7,1077.03 +14989,8/29/2035,1449,Clothing,West,1,559.73,0.28,Card,1,4.4,403.01 +14990,8/30/2035,1473,Clothing,East,4,245.98,0.12,Card,3,2.1,865.85 +14991,8/31/2035,1012,Home,East,1,265.48,0.32,Card,10,2.9,180.53 +14992,9/1/2035,1183,Home,North,2,353.46,0.28,COD,9,4.9,508.98 +14993,9/2/2035,1110,Home,North,2,285.82,0.03,Wallet,11,4.9,554.49 +14994,9/3/2035,1926,Electronics,West,1,113.63,0.14,COD,4,1,97.72 +14995,9/4/2035,1507,Home,South,6,25.85,0.12,Card,5,3.1,136.49 +14996,9/5/2035,1289,Clothing,West,2,371.74,0.27,COD,3,2.3,542.74 +14997,9/6/2035,1294,Beauty,North,3,553.67,0.14,COD,11,2.2,1428.47 +14998,9/7/2035,1450,Beauty,West,3,77.22,0.24,Wallet,6,3.4,176.06 +14999,9/8/2035,1903,Electronics,South,4,138.41,0.21,COD,4,2.8,437.38 +15000,9/9/2035,1214,Home,East,7,231.58,0.34,COD,5,3.9,1069.9 diff --git a/wayang-jdbc/demo/data/fifa_world_cup_all_matches.csv b/wayang-jdbc/demo/data/fifa_world_cup_all_matches.csv new file mode 100644 index 000000000..4595036c3 --- /dev/null +++ b/wayang-jdbc/demo/data/fifa_world_cup_all_matches.csv @@ -0,0 +1,1070 @@ +match_id,world_cup_year,host_country,date,stage,round_raw,group,team1,team2,halftime_score_team1,halftime_score_team2,fulltime_score_team1,fulltime_score_team2,extra_time_score_team1,extra_time_score_team2,penalty_score_team1,penalty_score_team2,winner,result_method,stadium,city,total_goals_team1,total_goals_team2 +1,1930,Uruguay,1930-07-13,Group Stage,Matchday 1,Group 1,France,Mexico,3,0,4,1,,,,,France,Normal Time,Estadio Pocitos,Montevideo,4,1 +2,1930,Uruguay,1930-07-15,Group Stage,Matchday 3,Group 1,Argentina,France,0,0,1,0,,,,,Argentina,Normal Time,Estadio Parque Central,Montevideo,1,0 +3,1930,Uruguay,1930-07-16,Group Stage,Matchday 4,Group 1,Chile,Mexico,1,0,3,0,,,,,Chile,Normal Time,Estadio Parque Central,Montevideo,2,0 +4,1930,Uruguay,1930-07-19,Group Stage,Matchday 7,Group 1,Chile,France,0,0,1,0,,,,,Chile,Normal Time,Estadio Centenario,Montevideo,1,0 +5,1930,Uruguay,1930-07-19,Group Stage,Matchday 7,Group 1,Argentina,Mexico,3,1,6,3,,,,,Argentina,Normal Time,Estadio Centenario,Montevideo,6,3 +6,1930,Uruguay,1930-07-22,Group Stage,Matchday 10,Group 1,Argentina,Chile,2,1,3,1,,,,,Argentina,Normal Time,Estadio Centenario,Montevideo,3,1 +7,1930,Uruguay,1930-07-14,Group Stage,Matchday 2,Group 2,Yugoslavia,Brazil,2,0,2,1,,,,,Yugoslavia,Normal Time,Estadio Parque Central,Montevideo,2,1 +8,1930,Uruguay,1930-07-17,Group Stage,Matchday 5,Group 2,Yugoslavia,Bolivia,0,0,4,0,,,,,Yugoslavia,Normal Time,Estadio Parque Central,Montevideo,4,0 +9,1930,Uruguay,1930-07-20,Group Stage,Matchday 8,Group 2,Brazil,Bolivia,1,0,4,0,,,,,Brazil,Normal Time,Estadio Centenario,Montevideo,4,0 +10,1930,Uruguay,1930-07-14,Group Stage,Matchday 2,Group 3,Romania,Peru,1,0,3,1,,,,,Romania,Normal Time,Estadio Pocitos,Montevideo,3,1 +11,1930,Uruguay,1930-07-18,Group Stage,Matchday 6,Group 3,Uruguay,Peru,0,0,1,0,,,,,Uruguay,Normal Time,Estadio Centenario,Montevideo,1,0 +12,1930,Uruguay,1930-07-21,Group Stage,Matchday 9,Group 3,Uruguay,Romania,4,0,4,0,,,,,Uruguay,Normal Time,Estadio Centenario,Montevideo,4,0 +13,1930,Uruguay,1930-07-13,Group Stage,Matchday 1,Group 4,United States,Belgium,2,0,3,0,,,,,United States,Normal Time,Estadio Parque Central,Montevideo,3,0 +14,1930,Uruguay,1930-07-17,Group Stage,Matchday 5,Group 4,United States,Paraguay,2,0,3,0,,,,,United States,Normal Time,Estadio Parque Central,Montevideo,3,0 +15,1930,Uruguay,1930-07-20,Group Stage,Matchday 8,Group 4,Paraguay,Belgium,1,0,1,0,,,,,Paraguay,Normal Time,Estadio Centenario,Montevideo,1,0 +16,1930,Uruguay,1930-07-26,Semi-final,Semi-finals,,Argentina,United States,1,0,6,1,,,,,Argentina,Normal Time,Estadio Centenario,Montevideo,6,1 +17,1930,Uruguay,1930-07-27,Semi-final,Semi-finals,,Uruguay,Yugoslavia,3,1,6,1,,,,,Uruguay,Normal Time,Estadio Centenario,Montevideo,6,1 +18,1930,Uruguay,1930-07-30,Final,Final,,Uruguay,Argentina,1,2,4,2,,,,,Uruguay,Normal Time,Estadio Centenario,Montevideo,4,2 +19,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Sweden,Argentina,1,1,3,2,,,,,Sweden,Normal Time,Stadio Littoriale,Bologna,3,2 +20,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Austria,France,1,1,1,1,3,2,,,Austria,Extra Time,Stadio Benito Mussolini,Turin,3,2 +21,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Germany,Belgium,1,2,5,2,,,,,Germany,Normal Time,Stadio Giovanni Berta,Florence,5,2 +22,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Spain,Brazil,3,0,3,1,,,,,Spain,Normal Time,Stadio Luigi Ferraris,Genoa,3,1 +23,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Hungary,Egypt,2,2,4,2,,,,,Hungary,Normal Time,Stadio Giorgio Ascarelli,Naples,4,2 +24,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Switzerland,Netherlands,2,1,3,2,,,,,Switzerland,Normal Time,Stadio San Siro,Milan,3,2 +25,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Italy,United States,3,0,7,1,,,,,Italy,Normal Time,Stadio Nazionale PNF,Rome,7,1 +26,1934,Italy,1934-05-27,Preliminary round,Preliminary round,,Czechoslovakia,Romania,0,1,2,1,,,,,Czechoslovakia,Normal Time,Stadio Littorio,Trieste,2,1 +27,1934,Italy,1934-05-31,Quarter-final,Quarter-finals,,Czechoslovakia,Switzerland,1,1,3,2,,,,,Czechoslovakia,Normal Time,Stadio Benito Mussolini,Turin,3,2 +28,1934,Italy,1934-05-31,Quarter-final,Quarter-finals,,Germany,Sweden,0,0,2,1,,,,,Germany,Normal Time,Stadio San Siro,Milan,2,1 +29,1934,Italy,1934-05-31,Quarter-final,Quarter-finals,,Italy,Spain,1,1,1,1,1,1,,,Draw,Draw (after Extra Time),Stadio Giovanni Berta,Florence,1,1 +30,1934,Italy,1934-05-31,Quarter-final,Quarter-finals,,Austria,Hungary,1,0,2,1,,,,,Austria,Normal Time,Stadio Littoriale,Bologna,2,1 +31,1934,Italy,1934-06-01,Quarter-final,"Quarter-finals, Replays",,Italy,Spain,1,0,1,0,,,,,Italy,Normal Time,Stadio Giovanni Berta,Florence,1,0 +32,1934,Italy,1934-06-03,Semi-final,Semi-finals,,Italy,Austria,1,0,1,0,,,,,Italy,Normal Time,Stadio San Siro,Milan,1,0 +33,1934,Italy,1934-06-03,Semi-final,Semi-finals,,Czechoslovakia,Germany,1,0,3,1,,,,,Czechoslovakia,Normal Time,Stadio Nazionale PNF,Rome,3,1 +34,1934,Italy,1934-06-07,Third-place match,Third-place match,,Germany,Austria,3,1,3,2,,,,,Germany,Normal Time,Stadio Giorgio Ascarelli,Naples,3,2 +35,1934,Italy,1934-06-10,Final,Final,,Italy,Czechoslovakia,0,0,1,1,2,1,,,Italy,Extra Time,Stadio Nazionale PNF,Rome,2,1 +36,1938,France,1938-06-04,First round,First round,,Switzerland,Germany,1,1,1,1,1,1,,,Draw,Draw (after Extra Time),Parc des Princes,Paris,1,1 +37,1938,France,1938-06-05,First round,First round,,Hungary,Dutch East Indies,4,0,6,0,,,,,Hungary,Normal Time,Vélodrome Municipal,Reims,6,0 +38,1938,France,1938-06-05,First round,First round,,France,Belgium,2,1,3,1,,,,,France,Normal Time,Stade Olympique de Colombes,Paris,3,1 +39,1938,France,1938-06-05,First round,First round,,Cuba,Romania,1,1,2,2,3,3,,,Draw,Draw (after Extra Time),Stade Chapou,Toulouse,3,3 +40,1938,France,1938-06-05,First round,First round,,Italy,Norway,1,0,1,1,2,1,,,Italy,Extra Time,Stade Vélodrome,Marseille,2,1 +41,1938,France,1938-06-05,First round,First round,,Brazil,Poland,3,1,4,4,6,5,,,Brazil,Extra Time,Stade de la Meinau,Strasbourg,6,5 +42,1938,France,1938-06-05,First round,First round,,Czechoslovakia,Netherlands,0,0,0,0,3,0,,,Czechoslovakia,Extra Time,Stade municipal,Le Havre,3,0 +43,1938,France,1938-06-05,First round,First round,,Sweden,Austria,,,,,,,,,Sweden,Walkover,Stade Gerland,Lyon,0,0 +44,1938,France,1938-06-09,"First round, Replays","First round, Replays",,Cuba,Romania,0,1,2,1,,,,,Cuba,Normal Time,Stade Chapou,Toulouse,2,1 +45,1938,France,1938-06-09,"First round, Replays","First round, Replays",,Germany,Switzerland,2,1,2,4,,,,,Switzerland,Normal Time,Parc des Princes,Paris,1,4 +46,1938,France,1938-06-12,Quarter-final,Quarter-finals,,Brazil,Czechoslovakia,1,0,1,1,1,1,,,Draw,Draw (after Extra Time),Parc Lescure,Bordeaux,1,1 +47,1938,France,1938-06-12,Quarter-final,Quarter-finals,,Switzerland,Hungary,0,1,0,2,,,,,Hungary,Normal Time,Stade Victor Boucquey,Lille,0,2 +48,1938,France,1938-06-12,Quarter-final,Quarter-finals,,Sweden,Cuba,4,0,8,0,,,,,Sweden,Normal Time,Stade du Fort Carré,Antibes,8,0 +49,1938,France,1938-06-12,Quarter-final,Quarter-finals,,France,Italy,1,1,1,3,,,,,Italy,Normal Time,Stade Olympique de Colombes,Paris,1,3 +50,1938,France,1938-06-14,Quarter-final,"Quarter-finals, Replays",,Brazil,Czechoslovakia,0,1,2,1,,,,,Brazil,Normal Time,Parc Lescure,Bordeaux,2,1 +51,1938,France,1938-06-16,Semi-final,Semi-finals,,Hungary,Sweden,3,1,5,1,,,,,Hungary,Normal Time,Parc des Princes,Paris,4,1 +52,1938,France,1938-06-16,Semi-final,Semi-finals,,Italy,Brazil,0,0,2,1,,,,,Italy,Normal Time,Stade Vélodrome,Marseille,2,1 +53,1938,France,1938-06-19,Third Place Play-off,Match for third place,,Sweden,Brazil,2,1,2,4,,,,,Brazil,Normal Time,Parc Lescure,Bordeaux,2,4 +54,1938,France,1938-06-19,Final,Final,,Hungary,Italy,1,3,2,4,,,,,Italy,Normal Time,Stade Olympique de Colombes,Paris,2,4 +55,1950,Brazil,1950-06-24,First round,First round,Group 1,Brazil,Mexico,1,0,4,0,,,,,Brazil,Normal Time,Estádio do Maracanã,Rio de Janeiro,4,0 +56,1950,Brazil,1950-06-25,First round,First round,Group 1,Yugoslavia,Switzerland,0,0,3,0,,,,,Yugoslavia,Normal Time,Estádio Independência,Belo Horizonte,3,0 +57,1950,Brazil,1950-06-28,First round,First round,Group 1,Brazil,Switzerland,2,1,2,2,,,,,Draw,Draw,Estádio do Pacaembu,São Paulo,2,2 +58,1950,Brazil,1950-06-28,First round,First round,Group 1,Yugoslavia,Mexico,2,0,4,1,,,,,Yugoslavia,Normal Time,Estádio dos Eucaliptos,Porto Alegre,4,1 +59,1950,Brazil,1950-07-01,First round,First round,Group 1,Brazil,Yugoslavia,1,0,2,0,,,,,Brazil,Normal Time,Estádio do Maracanã,Rio de Janeiro,2,0 +60,1950,Brazil,1950-07-02,First round,First round,Group 1,Switzerland,Mexico,2,0,2,1,,,,,Switzerland,Normal Time,Estádio dos Eucaliptos,Porto Alegre,2,1 +61,1950,Brazil,1950-06-25,First round,First round,Group 2,England,Chile,,,2,0,,,,,England,Normal Time,Estádio do Maracanã,Rio de Janeiro,2,0 +62,1950,Brazil,1950-06-25,First round,First round,Group 2,Spain,United States,,,3,1,,,,,Spain,Normal Time,Estádio Durival de Britto,Curitiba,3,1 +63,1950,Brazil,1950-06-29,First round,First round,Group 2,Spain,Chile,,,2,0,,,,,Spain,Normal Time,Estádio do Maracanã,Rio de Janeiro,2,0 +64,1950,Brazil,1950-06-29,First round,First round,Group 2,United States,England,,,1,0,,,,,United States,Normal Time,Estádio Independência,Belo Horizonte,1,0 +65,1950,Brazil,1950-07-02,First round,First round,Group 2,Spain,England,,,1,0,,,,,Spain,Normal Time,Estádio do Maracanã,Rio de Janeiro,1,0 +66,1950,Brazil,1950-07-02,First round,First round,Group 2,Chile,United States,,,5,2,,,,,Chile,Normal Time,Estádio Ilha do Retiro,Recife,5,2 +67,1950,Brazil,1950-06-25,First round,First round,Group 3,Sweden,Italy,,,3,2,,,,,Sweden,Normal Time,Estádio do Pacaembu,São Paulo,3,2 +68,1950,Brazil,1950-06-29,First round,First round,Group 3,Sweden,Paraguay,,,2,2,,,,,Draw,Draw,Estádio Durival Britto,Curitiba,2,2 +69,1950,Brazil,1950-07-02,First round,First round,Group 3,Italy,Paraguay,,,2,0,,,,,Italy,Normal Time,Estádio do Pacaembu,São Paulo,2,0 +70,1950,Brazil,1950-07-02,First round,First round,Group 4,Uruguay,Bolivia,,,8,0,,,,,Uruguay,Normal Time,Estádio Independência,Belo Horizonte,8,0 +71,1950,Brazil,1950-07-09,Final Round,Final Round,,Uruguay,Spain,,,2,2,,,,,Draw,Draw,Estádio do Pacaembu,São Paulo,2,2 +72,1950,Brazil,1950-07-09,Final Round,Final Round,,Brazil,Sweden,,,7,1,,,,,Brazil,Normal Time,Estádio do Maracanã,Rio de Janeiro,7,1 +73,1950,Brazil,1950-07-13,Final Round,Final Round,,Brazil,Spain,,,6,1,,,,,Brazil,Normal Time,Estádio do Maracanã,Rio de Janeiro,5,1 +74,1950,Brazil,1950-07-13,Final Round,Final Round,,Uruguay,Sweden,,,3,2,,,,,Uruguay,Normal Time,Estádio do Pacaembu,São Paulo,3,2 +75,1950,Brazil,1950-07-16,Final Round,Final Round,,Sweden,Spain,,,3,1,,,,,Sweden,Normal Time,Estádio do Pacaembu,São Paulo,3,1 +76,1950,Brazil,1950-07-16,Final Round,Final Round,,Uruguay,Brazil,,,2,1,,,,,Uruguay,Normal Time,Estádio do Maracanã,Rio de Janeiro,2,1 +77,1954,Switzerland,1954-06-16,Group Stage,Matchday 1,Group 1,Brazil,Mexico,,,5,0,,,,,Brazil,Normal Time,Charmilles Stadium,Geneva,0,0 +78,1954,Switzerland,1954-06-16,Group Stage,Matchday 1,Group 1,Yugoslavia,France,,,1,0,,,,,Yugoslavia,Normal Time,Stade Olympique de la Pontaise,Lausanne,0,0 +79,1954,Switzerland,1954-06-19,Group Stage,Matchday 2,Group 1,Brazil,Yugoslavia,,,1,1,1,1,,,Draw,Draw (after Extra Time),Stade Olympique de la Pontaise,Lausanne,0,0 +80,1954,Switzerland,1954-06-19,Group Stage,Matchday 2,Group 1,France,Mexico,,,3,2,,,,,France,Normal Time,Charmilles Stadium,Geneva,0,0 +81,1954,Switzerland,1954-06-17,Group Stage,Matchday 1,Group 2,West Germany,Turkey,,,4,1,,,,,West Germany,Normal Time,Wankdorf Stadium,Bern,0,0 +82,1954,Switzerland,1954-06-17,Group Stage,Matchday 1,Group 2,Hungary,South Korea,,,9,0,,,,,Hungary,Normal Time,Hardturm Stadium,Zürich,0,0 +83,1954,Switzerland,1954-06-20,Group Stage,Matchday 2,Group 2,Hungary,West Germany,,,8,3,,,,,Hungary,Normal Time,St. Jakob Stadium,Basel,0,0 +84,1954,Switzerland,1954-06-20,Group Stage,Matchday 2,Group 2,Turkey,South Korea,,,7,0,,,,,Turkey,Normal Time,Charmilles Stadium,Geneva,0,0 +85,1954,Switzerland,1954-06-23,Group Stage,Group 2 Play-off,,West Germany,Turkey,,,7,2,,,,,West Germany,Normal Time,Hardturm Stadium,Zürich,0,0 +86,1954,Switzerland,1954-06-16,Group Stage,Matchday 1,Group 3,Uruguay,Czechoslovakia,,,2,0,,,,,Uruguay,Normal Time,Wankdorf Stadium,Bern,0,0 +87,1954,Switzerland,1954-06-16,Group Stage,Matchday 1,Group 3,Austria,Scotland,,,1,0,,,,,Austria,Normal Time,Hardturm Stadium,Zürich,0,0 +88,1954,Switzerland,1954-06-19,Group Stage,Matchday 2,Group 3,Austria,Czechoslovakia,,,5,0,,,,,Austria,Normal Time,Hardturm Stadium,Zürich,0,0 +89,1954,Switzerland,1954-06-19,Group Stage,Matchday 2,Group 3,Uruguay,Scotland,,,7,0,,,,,Uruguay,Normal Time,St. Jakob Stadium,Basel,0,0 +90,1954,Switzerland,1954-06-17,Group Stage,Matchday 1,Group 4,England,Belgium,,,3,3,4,4,,,Draw,Draw (after Extra Time),St. Jakob Stadium,Basel,0,0 +91,1954,Switzerland,1954-06-17,Group Stage,Matchday 1,Group 4,Switzerland,Italy,,,2,1,,,,,Switzerland,Normal Time,Stade Olympique de la Pontaise,Lausanne,0,0 +92,1954,Switzerland,1954-06-20,Group Stage,Matchday 2,Group 4,England,Switzerland,,,2,0,,,,,England,Normal Time,Wankdorf Stadium,Bern,0,0 +93,1954,Switzerland,1954-06-20,Group Stage,Matchday 2,Group 4,Italy,Belgium,,,4,1,,,,,Italy,Normal Time,Cornaredo Stadium,Lugano,0,0 +94,1954,Switzerland,1954-06-23,Group Stage,Group 4 Play-off,,Switzerland,Italy,,,4,1,,,,,Switzerland,Normal Time,St. Jakob Stadium,Basel,0,0 +95,1954,Switzerland,1954-06-26,Quarter-final,Quarter-finals,,Austria,Switzerland,,,7,5,,,,,Austria,Normal Time,Stade Olympique de la Pontaise,Lausanne,0,0 +96,1954,Switzerland,1954-06-26,Quarter-final,Quarter-finals,,Uruguay,England,,,4,2,,,,,Uruguay,Normal Time,St. Jakob Stadium,Basel,0,0 +97,1954,Switzerland,1954-06-27,Quarter-final,Quarter-finals,,Yugoslavia,West Germany,,,0,2,,,,,West Germany,Normal Time,Charmilles Stadium,Geneva,0,0 +98,1954,Switzerland,1954-06-27,Quarter-final,Quarter-finals,,Brazil,Hungary,,,2,4,,,,,Hungary,Normal Time,Wankdorf Stadium,Bern,0,0 +99,1954,Switzerland,1954-06-30,Semi-final,Semi-finals,,West Germany,Austria,,,6,1,,,,,West Germany,Normal Time,St. Jakob Stadium,Basel,0,0 +100,1954,Switzerland,1954-06-30,Semi-final,Semi-finals,,Hungary,Uruguay,,,2,2,4,2,,,Hungary,Extra Time,Stade Olympique de la Pontaise,Lausanne,0,0 +101,1954,Switzerland,1954-07-03,Third-place match,Third-place match,,Uruguay,Austria,,,1,3,,,,,Austria,Normal Time,Hardturm Stadium,Zürich,0,0 +102,1954,Switzerland,1954-07-04,Final,Final,,Hungary,West Germany,,,2,3,,,,,West Germany,Normal Time,Wankdorf Stadium,Bern,0,0 +103,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 1,West Germany,Argentina,,,3,1,,,,,West Germany,Normal Time,Malmö Stadion,Malmö,0,0 +104,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 1,Northern Ireland,Czechoslovakia,,,1,0,,,,,Northern Ireland,Normal Time,Örjans Vall,Halmstad,0,0 +105,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 1,Argentina,Northern Ireland,,,3,1,,,,,Argentina,Normal Time,Örjans Vall,Halmstad,0,0 +106,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 1,West Germany,Czechoslovakia,,,2,2,,,,,Draw,Draw,Olympiastadion,Helsingborg,0,0 +107,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 1,West Germany,Northern Ireland,,,2,2,,,,,Draw,Draw,Malmö Stadion,Malmö,0,0 +108,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 1,Czechoslovakia,Argentina,,,6,1,,,,,Czechoslovakia,Normal Time,Olympiastadion,Helsingborg,0,0 +109,1958,Sweden,1958-06-17,Group Stage,Group 1 Play-off,,Northern Ireland,Czechoslovakia,,,1,1,2,1,,,Northern Ireland,Extra Time,Malmö Stadion,Malmö,0,0 +110,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 2,France,Paraguay,,,7,3,,,,,France,Normal Time,Idrottsparken,Norrköping,0,0 +111,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 2,Yugoslavia,Scotland,,,1,1,,,,,Draw,Draw,Arosvallen,Västerås,0,0 +112,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 2,Yugoslavia,France,,,3,2,,,,,Yugoslavia,Normal Time,Arosvallen,Västerås,0,0 +113,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 2,Paraguay,Scotland,,,3,2,,,,,Paraguay,Normal Time,Idrottsparken,Norrköping,0,0 +114,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 2,France,Scotland,,,2,1,,,,,France,Normal Time,Eyravallen,Örebro,0,0 +115,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 2,Paraguay,Yugoslavia,,,3,3,,,,,Draw,Draw,Tunavallen,Eskilstuna,0,0 +116,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 3,Sweden,Mexico,,,3,0,,,,,Sweden,Normal Time,Råsunda Stadium,Solna,0,0 +117,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 3,Hungary,Wales,,,1,1,,,,,Draw,Draw,Jernvallen,Sandviken,0,0 +118,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 3,Mexico,Wales,,,1,1,,,,,Draw,Draw,Råsunda Stadium,Solna,0,0 +119,1958,Sweden,1958-06-12,Group Stage,Matchday 2,Group 3,Sweden,Hungary,,,2,1,,,,,Sweden,Normal Time,Råsunda Stadium,Solna,0,0 +120,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 3,Sweden,Wales,,,0,0,,,,,Draw,Draw,Råsunda Stadium,Solna,0,0 +121,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 3,Hungary,Mexico,,,4,0,,,,,Hungary,Normal Time,Jernvallen,Sandviken,0,0 +122,1958,Sweden,1958-06-17,Group Stage,Group 3 Play-off,,Wales,Hungary,,,2,1,,,,,Wales,Normal Time,Råsunda Stadium,Solna,0,0 +123,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 4,Brazil,Austria,,,3,0,,,,,Brazil,Normal Time,Rimnersvallen,Uddevalla,0,0 +124,1958,Sweden,1958-06-08,Group Stage,Matchday 1,Group 4,Soviet Union,England,,,2,2,,,,,Draw,Draw,Ullevi,Gothenburg,0,0 +125,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 4,Brazil,England,,,0,0,,,,,Draw,Draw,Ullevi,Gothenburg,0,0 +126,1958,Sweden,1958-06-11,Group Stage,Matchday 2,Group 4,Soviet Union,Austria,,,2,0,,,,,Soviet Union,Normal Time,Ryavallen,Borås,0,0 +127,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 4,England,Austria,,,2,2,,,,,Draw,Draw,Ryavallen,Borås,0,0 +128,1958,Sweden,1958-06-15,Group Stage,Matchday 3,Group 4,Brazil,Soviet Union,,,2,0,,,,,Brazil,Normal Time,Ullevi,Gothenburg,0,0 +129,1958,Sweden,1958-06-17,Group Stage,Group 4 Play-off,,Soviet Union,England,,,1,0,,,,,Soviet Union,Normal Time,Ullevi,Gothenburg,0,0 +130,1958,Sweden,1958-06-19,Quarter-final,Quarter-finals,,France,Northern Ireland,,,4,0,,,,,France,Normal Time,Idrottsparken,Norrköping,0,0 +131,1958,Sweden,1958-06-19,Quarter-final,Quarter-finals,,Sweden,Soviet Union,,,2,0,,,,,Sweden,Normal Time,Råsunda Stadium,Solna,0,0 +132,1958,Sweden,1958-06-19,Quarter-final,Quarter-finals,,Brazil,Wales,,,1,0,,,,,Brazil,Normal Time,Ullevi,Gothenburg,0,0 +133,1958,Sweden,1958-06-19,Quarter-final,Quarter-finals,,West Germany,Yugoslavia,,,1,0,,,,,West Germany,Normal Time,Malmö Stadion,Malmö,0,0 +134,1958,Sweden,1958-06-24,Semi-final,Semi-finals,,France,Brazil,,,2,5,,,,,Brazil,Normal Time,Råsunda Stadium,Solna,0,0 +135,1958,Sweden,1958-06-24,Semi-final,Semi-finals,,West Germany,Sweden,,,1,3,,,,,Sweden,Normal Time,Ullevi,Gothenburg,0,0 +136,1958,Sweden,1958-06-28,Third Place Play-off,Match for third place,,West Germany,France,,,3,6,,,,,France,Normal Time,Ullevi,Gothenburg,0,0 +137,1958,Sweden,1958-06-29,Final,Final,,Sweden,Brazil,,,2,5,,,,,Brazil,Normal Time,Råsunda Stadium,Solna,0,0 +138,1962,Chile,1962-05-30,Group Stage,Matchday 1,Group 1,Uruguay,Colombia,,,2,1,,,,,Uruguay,Normal Time,Estadio Carlos Dittborn,Arica,0,0 +139,1962,Chile,1962-05-31,Group Stage,Matchday 1,Group 1,Soviet Union,Yugoslavia,,,2,0,,,,,Soviet Union,Normal Time,Estadio Carlos Dittborn,Arica,0,0 +140,1962,Chile,1962-06-02,Group Stage,Matchday 2,Group 1,Yugoslavia,Uruguay,,,3,1,,,,,Yugoslavia,Normal Time,Estadio Carlos Dittborn,Arica,0,0 +141,1962,Chile,1962-06-03,Group Stage,Matchday 2,Group 1,Soviet Union,Colombia,,,4,4,,,,,Draw,Draw,Estadio Carlos Dittborn,Arica,0,0 +142,1962,Chile,1962-06-06,Group Stage,Matchday 3,Group 1,Soviet Union,Uruguay,,,2,1,,,,,Soviet Union,Normal Time,Estadio Carlos Dittborn,Arica,0,0 +143,1962,Chile,1962-06-07,Group Stage,Matchday 3,Group 1,Yugoslavia,Colombia,,,5,0,,,,,Yugoslavia,Normal Time,Estadio Carlos Dittborn,Arica,0,0 +144,1962,Chile,1962-05-30,Group Stage,Matchday 1,Group 2,Chile,Switzerland,,,3,1,,,,,Chile,Normal Time,Estadio Nacional,Santiago,0,0 +145,1962,Chile,1962-05-31,Group Stage,Matchday 1,Group 2,West Germany,Italy,,,0,0,,,,,Draw,Draw,Estadio Nacional,Santiago,0,0 +146,1962,Chile,1962-06-02,Group Stage,Matchday 2,Group 2,Chile,Italy,,,2,0,,,,,Chile,Normal Time,Estadio Nacional,Santiago,0,0 +147,1962,Chile,1962-06-03,Group Stage,Matchday 2,Group 2,West Germany,Switzerland,,,2,1,,,,,West Germany,Normal Time,Estadio Nacional,Santiago,0,0 +148,1962,Chile,1962-06-06,Group Stage,Matchday 3,Group 2,West Germany,Chile,,,2,0,,,,,West Germany,Normal Time,Estadio Nacional,Santiago,0,0 +149,1962,Chile,1962-06-07,Group Stage,Matchday 3,Group 2,Italy,Switzerland,,,3,0,,,,,Italy,Normal Time,Estadio Nacional,Santiago,0,0 +150,1962,Chile,1962-05-30,Group Stage,Matchday 1,Group 3,Brazil,Mexico,,,2,0,,,,,Brazil,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +151,1962,Chile,1962-05-31,Group Stage,Matchday 1,Group 3,Czechoslovakia,Spain,,,1,0,,,,,Czechoslovakia,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +152,1962,Chile,1962-06-02,Group Stage,Matchday 2,Group 3,Brazil,Czechoslovakia,,,0,0,,,,,Draw,Draw,Estadio Sausalito,Viña del Mar,0,0 +153,1962,Chile,1962-06-03,Group Stage,Matchday 2,Group 3,Spain,Mexico,,,1,0,,,,,Spain,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +154,1962,Chile,1962-06-06,Group Stage,Matchday 3,Group 3,Brazil,Spain,,,2,1,,,,,Brazil,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +155,1962,Chile,1962-06-07,Group Stage,Matchday 3,Group 3,Mexico,Czechoslovakia,,,3,1,,,,,Mexico,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +156,1962,Chile,1962-05-30,Group Stage,Matchday 1,Group 4,Argentina,Bulgaria,,,1,0,,,,,Argentina,Normal Time,Estadio El Teniente,Rancagua,0,0 +157,1962,Chile,1962-05-31,Group Stage,Matchday 1,Group 4,Hungary,England,,,2,1,,,,,Hungary,Normal Time,Estadio El Teniente,Rancagua,0,0 +158,1962,Chile,1962-06-02,Group Stage,Matchday 2,Group 4,England,Argentina,,,3,1,,,,,England,Normal Time,Estadio El Teniente,Rancagua,0,0 +159,1962,Chile,1962-06-03,Group Stage,Matchday 2,Group 4,Hungary,Bulgaria,,,6,1,,,,,Hungary,Normal Time,Estadio El Teniente,Rancagua,0,0 +160,1962,Chile,1962-06-06,Group Stage,Matchday 3,Group 4,Hungary,Argentina,,,0,0,,,,,Draw,Draw,Estadio El Teniente,Rancagua,0,0 +161,1962,Chile,1962-06-07,Group Stage,Matchday 3,Group 4,England,Bulgaria,,,0,0,,,,,Draw,Draw,Estadio El Teniente,Rancagua,0,0 +162,1962,Chile,1962-06-10,Quarter-final,Quarter-finals,,Chile,Soviet Union,,,2,1,,,,,Chile,Normal Time,Estadio Carlos Dittborn,Arica,0,0 +163,1962,Chile,1962-06-10,Quarter-final,Quarter-finals,,Yugoslavia,West Germany,,,1,0,,,,,Yugoslavia,Normal Time,Estadio Nacional,Santiago,0,0 +164,1962,Chile,1962-06-10,Quarter-final,Quarter-finals,,Brazil,England,,,3,1,,,,,Brazil,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +165,1962,Chile,1962-06-10,Quarter-final,Quarter-finals,,Czechoslovakia,Hungary,,,1,0,,,,,Czechoslovakia,Normal Time,Estadio El Teniente,Rancagua,0,0 +166,1962,Chile,1962-06-13,Semi-final,Semi-finals,,Brazil,Chile,,,4,2,,,,,Brazil,Normal Time,Estadio Nacional,Santiago,0,0 +167,1962,Chile,1962-06-13,Semi-final,Semi-finals,,Czechoslovakia,Yugoslavia,,,3,1,,,,,Czechoslovakia,Normal Time,Estadio Sausalito,Viña del Mar,0,0 +168,1962,Chile,1962-06-16,Third-place match,Third-place match,,Chile,Yugoslavia,,,1,0,,,,,Chile,Normal Time,Estadio Nacional,Santiago,0,0 +169,1962,Chile,1962-06-17,Final,Final,,Brazil,Czechoslovakia,,,3,1,,,,,Brazil,Normal Time,Estadio Nacional,Santiago,0,0 +170,1966,England,1966-07-11,Group Stage,Matchday 1,Group 1,England,Uruguay,,,0,0,,,,,Draw,Draw,Wembley Stadium,London,0,0 +171,1966,England,1966-07-13,Group Stage,Matchday 1,Group 1,France,Mexico,,,1,1,,,,,Draw,Draw,Wembley Stadium,London,0,0 +172,1966,England,1966-07-15,Group Stage,Matchday 2,Group 1,Uruguay,France,,,2,1,,,,,Uruguay,Normal Time,White City Stadium,London,0,0 +173,1966,England,1966-07-16,Group Stage,Matchday 2,Group 1,England,Mexico,,,2,0,,,,,England,Normal Time,Wembley Stadium,London,0,0 +174,1966,England,1966-07-19,Group Stage,Matchday 3,Group 1,Mexico,Uruguay,,,0,0,,,,,Draw,Draw,Wembley Stadium,London,0,0 +175,1966,England,1966-07-20,Group Stage,Matchday 3,Group 1,England,France,,,2,0,,,,,England,Normal Time,Wembley Stadium,London,0,0 +176,1966,England,1966-07-12,Group Stage,Matchday 1,Group 2,West Germany,Switzerland,,,5,0,,,,,West Germany,Normal Time,Hillsborough Stadium,Sheffield,0,0 +177,1966,England,1966-07-13,Group Stage,Matchday 1,Group 2,Argentina,Spain,,,2,1,,,,,Argentina,Normal Time,Villa Park,Birmingham,0,0 +178,1966,England,1966-07-15,Group Stage,Matchday 2,Group 2,Spain,Switzerland,,,2,1,,,,,Spain,Normal Time,Hillsborough Stadium,Sheffield,0,0 +179,1966,England,1966-07-16,Group Stage,Matchday 2,Group 2,Argentina,West Germany,,,0,0,,,,,Draw,Draw,Villa Park,Birmingham,0,0 +180,1966,England,1966-07-19,Group Stage,Matchday 3,Group 2,Argentina,Switzerland,,,2,0,,,,,Argentina,Normal Time,Hillsborough Stadium,Sheffield,0,0 +181,1966,England,1966-07-20,Group Stage,Matchday 3,Group 2,West Germany,Spain,,,2,1,,,,,West Germany,Normal Time,Villa Park,Birmingham,0,0 +182,1966,England,1966-07-12,Group Stage,Matchday 1,Group 3,Brazil,Bulgaria,,,2,0,,,,,Brazil,Normal Time,Goodison Park,Liverpool,0,0 +183,1966,England,1966-07-13,Group Stage,Matchday 1,Group 3,Portugal,Hungary,,,3,1,,,,,Portugal,Normal Time,Old Trafford,Manchester,0,0 +184,1966,England,1966-07-15,Group Stage,Matchday 2,Group 3,Hungary,Brazil,,,3,1,,,,,Hungary,Normal Time,Goodison Park,Liverpool,0,0 +185,1966,England,1966-07-16,Group Stage,Matchday 2,Group 3,Portugal,Bulgaria,,,3,0,,,,,Portugal,Normal Time,Old Trafford,Manchester,0,0 +186,1966,England,1966-07-19,Group Stage,Matchday 3,Group 3,Portugal,Brazil,,,3,1,,,,,Portugal,Normal Time,Goodison Park,Liverpool,0,0 +187,1966,England,1966-07-20,Group Stage,Matchday 3,Group 3,Hungary,Bulgaria,,,3,1,,,,,Hungary,Normal Time,Old Trafford,Manchester,0,0 +188,1966,England,1966-07-12,Group Stage,Matchday 1,Group 4,Soviet Union,North Korea,,,3,0,,,,,Soviet Union,Normal Time,Ayresome Park,Middlesbrough,0,0 +189,1966,England,1966-07-13,Group Stage,Matchday 1,Group 4,Italy,Chile,,,2,0,,,,,Italy,Normal Time,Roker Park,Sunderland,0,0 +190,1966,England,1966-07-15,Group Stage,Matchday 2,Group 4,Chile,North Korea,,,1,1,,,,,Draw,Draw,Ayresome Park,Middlesbrough,0,0 +191,1966,England,1966-07-16,Group Stage,Matchday 2,Group 4,Soviet Union,Italy,,,1,0,,,,,Soviet Union,Normal Time,Roker Park,Sunderland,0,0 +192,1966,England,1966-07-19,Group Stage,Matchday 3,Group 4,North Korea,Italy,,,1,0,,,,,North Korea,Normal Time,Ayresome Park,Middlesbrough,0,0 +193,1966,England,1966-07-20,Group Stage,Matchday 3,Group 4,Soviet Union,Chile,,,2,1,,,,,Soviet Union,Normal Time,Roker Park,Sunderland,0,0 +194,1966,England,1966-07-23,Quarter-final,Quarter-finals,,England,Argentina,,,1,0,,,,,England,Normal Time,Wembley Stadium,London,0,0 +195,1966,England,1966-07-23,Quarter-final,Quarter-finals,,West Germany,Uruguay,,,4,0,,,,,West Germany,Normal Time,Hillsborough Stadium,Sheffield,0,0 +196,1966,England,1966-07-23,Quarter-final,Quarter-finals,,Soviet Union,Hungary,,,2,1,,,,,Soviet Union,Normal Time,Roker Park,Sunderland,0,0 +197,1966,England,1966-07-23,Quarter-final,Quarter-finals,,Portugal,North Korea,,,5,3,,,,,Portugal,Normal Time,Goodison Park,Liverpool,0,0 +198,1966,England,1966-07-25,Semi-final,Semi-finals,,West Germany,Soviet Union,,,2,1,,,,,West Germany,Normal Time,Goodison Park,Liverpool,0,0 +199,1966,England,1966-07-26,Semi-final,Semi-finals,,England,Portugal,,,2,1,,,,,England,Normal Time,Wembley Stadium,London,0,0 +200,1966,England,1966-07-28,Third-place match,Third-place match,,Portugal,Soviet Union,,,2,1,,,,,Portugal,Normal Time,Wembley Stadium,London,0,0 +201,1966,England,1966-07-30,Final,Final,,England,West Germany,,,2,2,4,2,,,England,Extra Time,Wembley Stadium,London,0,0 +202,1970,Mexico,1970-05-31,Group Stage,Matchday 1,Group 1,Mexico,Soviet Union,,,0,0,,,,,Draw,Draw,Estadio Azteca,Mexico City,0,0 +203,1970,Mexico,1970-06-03,Group Stage,Matchday 1,Group 1,Belgium,El Salvador,,,3,0,,,,,Belgium,Normal Time,Estadio Azteca,Mexico City,0,0 +204,1970,Mexico,1970-06-06,Group Stage,Matchday 2,Group 1,Soviet Union,Belgium,,,4,1,,,,,Soviet Union,Normal Time,Estadio Azteca,Mexico City,0,0 +205,1970,Mexico,1970-06-07,Group Stage,Matchday 2,Group 1,Mexico,El Salvador,,,4,0,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,0,0 +206,1970,Mexico,1970-06-10,Group Stage,Matchday 3,Group 1,Soviet Union,El Salvador,,,2,0,,,,,Soviet Union,Normal Time,Estadio Azteca,Mexico City,0,0 +207,1970,Mexico,1970-06-11,Group Stage,Matchday 3,Group 1,Mexico,Belgium,,,1,0,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,0,0 +208,1970,Mexico,1970-06-02,Group Stage,Matchday 1,Group 2,Uruguay,Israel,,,2,0,,,,,Uruguay,Normal Time,Estadio Cuauhtémoc,Puebla,0,0 +209,1970,Mexico,1970-06-03,Group Stage,Matchday 1,Group 2,Italy,Sweden,,,1,0,,,,,Italy,Normal Time,Estadio Luis Dosal,Toluca,0,0 +210,1970,Mexico,1970-06-06,Group Stage,Matchday 2,Group 2,Uruguay,Italy,,,0,0,,,,,Draw,Draw,Estadio Cuauhtémoc,Puebla,0,0 +211,1970,Mexico,1970-06-07,Group Stage,Matchday 2,Group 2,Sweden,Israel,,,1,1,,,,,Draw,Draw,Estadio Luis Dosal,Toluca,0,0 +212,1970,Mexico,1970-06-10,Group Stage,Matchday 3,Group 2,Uruguay,Sweden,,,0,1,,,,,Sweden,Normal Time,Estadio Cuauhtémoc,Puebla,0,0 +213,1970,Mexico,1970-06-11,Group Stage,Matchday 3,Group 2,Israel,Italy,,,0,0,,,,,Draw,Draw,Estadio Luis Dosal,Toluca,0,0 +214,1970,Mexico,1970-06-02,Group Stage,Matchday 1,Group 3,Romania,England,,,0,1,,,,,England,Normal Time,Estadio Jalisco,Guadalajara,0,0 +215,1970,Mexico,1970-06-03,Group Stage,Matchday 1,Group 3,Czechoslovakia,Brazil,,,1,4,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +216,1970,Mexico,1970-06-06,Group Stage,Matchday 2,Group 3,Romania,Czechoslovakia,,,2,1,,,,,Romania,Normal Time,Estadio Jalisco,Guadalajara,0,0 +217,1970,Mexico,1970-06-07,Group Stage,Matchday 2,Group 3,England,Brazil,,,0,1,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +218,1970,Mexico,1970-06-10,Group Stage,Matchday 3,Group 3,Romania,Brazil,,,2,3,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +219,1970,Mexico,1970-06-11,Group Stage,Matchday 3,Group 3,England,Czechoslovakia,,,1,0,,,,,England,Normal Time,Estadio Jalisco,Guadalajara,0,0 +220,1970,Mexico,1970-06-02,Group Stage,Matchday 1,Group 4,Peru,Bulgaria,,,3,2,,,,,Peru,Normal Time,Estadio Nou Camp,León,0,0 +221,1970,Mexico,1970-06-03,Group Stage,Matchday 1,Group 4,Morocco,West Germany,,,1,2,,,,,West Germany,Normal Time,Estadio Nou Camp,León,0,0 +222,1970,Mexico,1970-06-06,Group Stage,Matchday 2,Group 4,Peru,Morocco,,,3,0,,,,,Peru,Normal Time,Estadio Nou Camp,León,0,0 +223,1970,Mexico,1970-06-07,Group Stage,Matchday 2,Group 4,Bulgaria,West Germany,,,2,5,,,,,West Germany,Normal Time,Estadio Nou Camp,León,0,0 +224,1970,Mexico,1970-06-10,Group Stage,Matchday 3,Group 4,Peru,West Germany,,,1,3,,,,,West Germany,Normal Time,Estadio Nou Camp,León,0,0 +225,1970,Mexico,1970-06-11,Group Stage,Matchday 3,Group 4,Bulgaria,Morocco,,,1,1,,,,,Draw,Draw,Estadio Nou Camp,León,0,0 +226,1970,Mexico,1970-06-14,Quarter-final,Quarter-finals,,Soviet Union,Uruguay,,,0,0,0,1,,,Uruguay,Extra Time,Estadio Azteca,Mexico City,0,0 +227,1970,Mexico,1970-06-14,Quarter-final,Quarter-finals,,Italy,Mexico,,,4,1,,,,,Italy,Normal Time,Estadio Luis Dosal,Toluca,0,0 +228,1970,Mexico,1970-06-14,Quarter-final,Quarter-finals,,Brazil,Peru,,,4,2,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +229,1970,Mexico,1970-06-14,Quarter-final,Quarter-finals,,West Germany,England,,,2,2,3,2,,,West Germany,Extra Time,Estadio Nou Camp,León,0,0 +230,1970,Mexico,1970-06-17,Semi-final,Semi-finals,,Uruguay,Brazil,,,1,3,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +231,1970,Mexico,1970-06-17,Semi-final,Semi-finals,,Italy,West Germany,,,1,1,4,3,,,Italy,Extra Time,Estadio Azteca,Mexico City,0,0 +232,1970,Mexico,1970-06-20,Third Place Play-off,Match for third place,,Uruguay,West Germany,,,0,1,,,,,West Germany,Normal Time,Estadio Azteca,Mexico City,0,0 +233,1970,Mexico,1970-06-21,Final,Final,,Brazil,Italy,,,4,1,,,,,Brazil,Normal Time,Estadio Azteca,Mexico City,0,0 +234,1974,West Germany,1974-06-14,Group Stage,Matchday 1,Group 1,West Germany,Chile,,,1,0,,,,,West Germany,Normal Time,Olympiastadion,West Berlin,0,0 +235,1974,West Germany,1974-06-14,Group Stage,Matchday 1,Group 1,East Germany,Australia,,,2,0,,,,,East Germany,Normal Time,Volksparkstadion,Hamburg,0,0 +236,1974,West Germany,1974-06-18,Group Stage,Matchday 2,Group 1,Chile,East Germany,,,1,1,,,,,Draw,Draw,Olympiastadion,West Berlin,0,0 +237,1974,West Germany,1974-06-18,Group Stage,Matchday 2,Group 1,Australia,West Germany,,,0,3,,,,,West Germany,Normal Time,Volksparkstadion,Hamburg,0,0 +238,1974,West Germany,1974-06-22,Group Stage,Matchday 3,Group 1,Australia,Chile,,,0,0,,,,,Draw,Draw,Olympiastadion,West Berlin,0,0 +239,1974,West Germany,1974-06-22,Group Stage,Matchday 3,Group 1,East Germany,West Germany,,,1,0,,,,,East Germany,Normal Time,Volksparkstadion,Hamburg,0,0 +240,1974,West Germany,1974-06-13,Group Stage,Matchday 1,Group 2,Brazil,Yugoslavia,,,0,0,,,,,Draw,Draw,Waldstadion,Frankfurt,0,0 +241,1974,West Germany,1974-06-14,Group Stage,Matchday 1,Group 2,Zaire,Scotland,,,0,2,,,,,Scotland,Normal Time,Westfalenstadion,Dortmund,0,0 +242,1974,West Germany,1974-06-18,Group Stage,Matchday 2,Group 2,Yugoslavia,Zaire,,,9,0,,,,,Yugoslavia,Normal Time,Parkstadion,Gelsenkirchen,0,0 +243,1974,West Germany,1974-06-18,Group Stage,Matchday 2,Group 2,Scotland,Brazil,,,0,0,,,,,Draw,Draw,Waldstadion,Frankfurt,0,0 +244,1974,West Germany,1974-06-22,Group Stage,Matchday 3,Group 2,Scotland,Yugoslavia,,,1,1,,,,,Draw,Draw,Waldstadion,Frankfurt,0,0 +245,1974,West Germany,1974-06-22,Group Stage,Matchday 3,Group 2,Zaire,Brazil,,,0,3,,,,,Brazil,Normal Time,Parkstadion,Gelsenkirchen,0,0 +246,1974,West Germany,1974-06-15,Group Stage,Matchday 1,Group 3,Uruguay,Netherlands,,,0,2,,,,,Netherlands,Normal Time,Niedersachsenstadion,Hanover,0,0 +247,1974,West Germany,1974-06-15,Group Stage,Matchday 1,Group 3,Sweden,Bulgaria,,,0,0,,,,,Draw,Draw,Rheinstadion,Düsseldorf,0,0 +248,1974,West Germany,1974-06-19,Group Stage,Matchday 2,Group 3,Netherlands,Sweden,,,0,0,,,,,Draw,Draw,Westfalenstadion,Dortmund,0,0 +249,1974,West Germany,1974-06-19,Group Stage,Matchday 2,Group 3,Uruguay,Bulgaria,,,1,1,,,,,Draw,Draw,Niedersachsenstadion,Hanover,0,0 +250,1974,West Germany,1974-06-23,Group Stage,Matchday 3,Group 3,Netherlands,Bulgaria,,,4,1,,,,,Netherlands,Normal Time,Westfalenstadion,Dortmund,0,0 +251,1974,West Germany,1974-06-23,Group Stage,Matchday 3,Group 3,Sweden,Uruguay,,,3,0,,,,,Sweden,Normal Time,Rheinstadion,Düsseldorf,0,0 +252,1974,West Germany,1974-06-15,Group Stage,Matchday 1,Group 4,Italy,Haiti,,,3,1,,,,,Italy,Normal Time,Olympiastadion,München,0,0 +253,1974,West Germany,1974-06-15,Group Stage,Matchday 1,Group 4,Poland,Argentina,,,3,2,,,,,Poland,Normal Time,Neckarstadion,Stuttgart,0,0 +254,1974,West Germany,1974-06-19,Group Stage,Matchday 2,Group 4,Haiti,Poland,,,0,7,,,,,Poland,Normal Time,Olympiastadion,München,0,0 +255,1974,West Germany,1974-06-19,Group Stage,Matchday 2,Group 4,Argentina,Italy,,,1,1,,,,,Draw,Draw,Neckarstadion,Stuttgart,0,0 +256,1974,West Germany,1974-06-23,Group Stage,Matchday 3,Group 4,Argentina,Haiti,,,4,1,,,,,Argentina,Normal Time,Olympiastadion,München,0,0 +257,1974,West Germany,1974-06-23,Group Stage,Matchday 3,Group 4,Poland,Italy,,,2,1,,,,,Poland,Normal Time,Neckarstadion,Stuttgart,0,0 +258,1974,West Germany,1974-06-26,Group Stage,Matchday 4,Group A,Brazil,East Germany,,,1,0,,,,,Brazil,Normal Time,Niedersachsenstadion,Hanover,0,0 +259,1974,West Germany,1974-06-26,Group Stage,Matchday 4,Group A,Netherlands,Argentina,,,4,0,,,,,Netherlands,Normal Time,Parkstadion,Gelsenkirchen,0,0 +260,1974,West Germany,1974-06-30,Group Stage,Matchday 5,Group A,East Germany,Netherlands,,,0,2,,,,,Netherlands,Normal Time,Parkstadion,Gelsenkirchen,0,0 +261,1974,West Germany,1974-06-30,Group Stage,Matchday 5,Group A,Argentina,Brazil,,,1,2,,,,,Brazil,Normal Time,Niedersachsenstadion,Hanover,0,0 +262,1974,West Germany,1974-07-03,Group Stage,Matchday 6,Group A,Argentina,East Germany,,,1,1,,,,,Draw,Draw,Parkstadion,Gelsenkirchen,0,0 +263,1974,West Germany,1974-07-03,Group Stage,Matchday 6,Group A,Netherlands,Brazil,,,2,0,,,,,Netherlands,Normal Time,Westfalenstadion,Dortmund,0,0 +264,1974,West Germany,1974-06-26,Group Stage,Matchday 4,Group B,Yugoslavia,West Germany,,,0,2,,,,,West Germany,Normal Time,Rheinstadion,Düsseldorf,0,0 +265,1974,West Germany,1974-06-26,Group Stage,Matchday 4,Group B,Sweden,Poland,,,0,1,,,,,Poland,Normal Time,Neckarstadion,Stuttgart,0,0 +266,1974,West Germany,1974-06-30,Group Stage,Matchday 5,Group B,West Germany,Sweden,,,4,2,,,,,West Germany,Normal Time,Rheinstadion,Düsseldorf,0,0 +267,1974,West Germany,1974-06-30,Group Stage,Matchday 5,Group B,Poland,Yugoslavia,,,2,1,,,,,Poland,Normal Time,Waldstadion,Frankfurt,0,0 +268,1974,West Germany,1974-07-03,Group Stage,Matchday 6,Group B,Poland,West Germany,,,0,1,,,,,West Germany,Normal Time,Waldstadion,Frankfurt,0,0 +269,1974,West Germany,1974-07-03,Group Stage,Matchday 6,Group B,Sweden,Yugoslavia,,,2,1,,,,,Sweden,Normal Time,Rheinstadion,Düsseldorf,0,0 +270,1974,West Germany,1974-07-06,Third Place Play-off,Match for third place,,Brazil,Poland,,,0,1,,,,,Poland,Normal Time,Olympiastadion,München,0,0 +271,1974,West Germany,1974-07-07,Final,Final,,Netherlands,West Germany,,,1,2,,,,,West Germany,Normal Time,Olympiastadion,München,0,0 +272,1978,Argentina,1978-06-02,Group Stage,Matchday 1,Group 1,Argentina,Hungary,,,2,1,,,,,Argentina,Normal Time,Estadio Monumental,Buenos Aires,0,0 +273,1978,Argentina,1978-06-02,Group Stage,Matchday 1,Group 1,Italy,France,,,2,1,,,,,Italy,Normal Time,Estadio José María Minella,Mar del Plata,0,0 +274,1978,Argentina,1978-06-06,Group Stage,Matchday 2,Group 1,Argentina,France,,,2,1,,,,,Argentina,Normal Time,Estadio Monumental,Buenos Aires,0,0 +275,1978,Argentina,1978-06-06,Group Stage,Matchday 2,Group 1,Italy,Hungary,,,3,1,,,,,Italy,Normal Time,Estadio José María Minella,Mar del Plata,0,0 +276,1978,Argentina,1978-06-10,Group Stage,Matchday 3,Group 1,Argentina,Italy,,,0,1,,,,,Italy,Normal Time,Estadio Monumental,Buenos Aires,0,0 +277,1978,Argentina,1978-06-10,Group Stage,Matchday 3,Group 1,France,Hungary,,,3,1,,,,,France,Normal Time,Estadio José María Minella,Mar del Plata,0,0 +278,1978,Argentina,1978-06-01,Group Stage,Matchday 1,Group 2,West Germany,Poland,,,0,0,,,,,Draw,Draw,Estadio Monumental,Buenos Aires,0,0 +279,1978,Argentina,1978-06-02,Group Stage,Matchday 1,Group 2,Tunisia,Mexico,,,3,1,,,,,Tunisia,Normal Time,Estadio Gigante de Arroyito,Rosario,0,0 +280,1978,Argentina,1978-06-06,Group Stage,Matchday 2,Group 2,Poland,Tunisia,,,1,0,,,,,Poland,Normal Time,Estadio Gigante de Arroyito,Rosario,0,0 +281,1978,Argentina,1978-06-06,Group Stage,Matchday 2,Group 2,West Germany,Mexico,,,6,0,,,,,West Germany,Normal Time,Estadio Chateau Carreras,Córdoba,0,0 +282,1978,Argentina,1978-06-10,Group Stage,Matchday 3,Group 2,Poland,Mexico,,,3,1,,,,,Poland,Normal Time,Estadio Gigante de Arroyito,Rosario,0,0 +283,1978,Argentina,1978-06-10,Group Stage,Matchday 3,Group 2,West Germany,Tunisia,,,0,0,,,,,Draw,Draw,Estadio Olímpico Chateau Carreras,Córdoba,0,0 +284,1978,Argentina,1978-06-03,Group Stage,Matchday 1,Group 3,Austria,Spain,,,2,1,,,,,Austria,Normal Time,Estadio José Amalfitani,Buenos Aires,0,0 +285,1978,Argentina,1978-06-03,Group Stage,Matchday 1,Group 3,Brazil,Sweden,,,1,1,,,,,Draw,Draw,Estadio José Maria Minella,Mar del Plata,0,0 +286,1978,Argentina,1978-06-07,Group Stage,Matchday 2,Group 3,Austria,Sweden,,,1,0,,,,,Austria,Normal Time,Estadio José Amalfitani,Buenos Aires,0,0 +287,1978,Argentina,1978-06-07,Group Stage,Matchday 2,Group 3,Brazil,Spain,,,0,0,,,,,Draw,Draw,Estadio José Maria Minella,Mar del Plata,0,0 +288,1978,Argentina,1978-06-11,Group Stage,Matchday 3,Group 3,Spain,Sweden,,,1,0,,,,,Spain,Normal Time,Estadio José Amalfitani,Buenos Aires,0,0 +289,1978,Argentina,1978-06-11,Group Stage,Matchday 3,Group 3,Brazil,Austria,,,1,0,,,,,Brazil,Normal Time,Estadio José Maria Minella,Mar del Plata,0,0 +290,1978,Argentina,1978-06-03,Group Stage,Matchday 1,Group 4,Peru,Scotland,,,3,1,,,,,Peru,Normal Time,Estadio Chateau Carreras,Córdoba,0,0 +291,1978,Argentina,1978-06-03,Group Stage,Matchday 1,Group 4,Netherlands,Iran,,,3,0,,,,,Netherlands,Normal Time,Estadio Ciudad de Mendoza,Mendoza,0,0 +292,1978,Argentina,1978-06-07,Group Stage,Matchday 2,Group 4,Scotland,Iran,,,1,1,,,,,Draw,Draw,Estadio Chateau Carreras,Córdoba,0,0 +293,1978,Argentina,1978-06-07,Group Stage,Matchday 2,Group 4,Netherlands,Peru,,,0,0,,,,,Draw,Draw,Estadio Ciudad de Mendoza,Mendoza,0,0 +294,1978,Argentina,1978-06-11,Group Stage,Matchday 3,Group 4,Peru,Iran,,,4,1,,,,,Peru,Normal Time,Estadio Chateau Carreras,Córdoba,0,0 +295,1978,Argentina,1978-06-11,Group Stage,Matchday 3,Group 4,Scotland,Netherlands,,,3,2,,,,,Scotland,Normal Time,Estadio Ciudad de Mendoza,Mendoza,0,0 +296,1978,Argentina,1978-06-14,Group Stage,Matchday 4,Group A,Italy,West Germany,,,0,0,,,,,Draw,Draw,Estadio Monumental,Buenos Aires,0,0 +297,1978,Argentina,1978-06-14,Group Stage,Matchday 4,Group A,Austria,Netherlands,,,1,5,,,,,Netherlands,Normal Time,Estadio Chateau Carreras,Córdoba,0,0 +298,1978,Argentina,1978-06-18,Group Stage,Matchday 5,Group A,Italy,Austria,,,1,0,,,,,Italy,Normal Time,Estadio Monumental,Buenos Aires,0,0 +299,1978,Argentina,1978-06-18,Group Stage,Matchday 5,Group A,Netherlands,West Germany,,,2,2,,,,,Draw,Draw,Estadio Chateau Carreras,Córdoba,0,0 +300,1978,Argentina,1978-06-21,Group Stage,Matchday 6,Group A,Italy,Netherlands,,,1,2,,,,,Netherlands,Normal Time,Estadio Monumental,Buenos Aires,0,0 +301,1978,Argentina,1978-06-21,Group Stage,Matchday 6,Group A,Austria,West Germany,,,3,2,,,,,Austria,Normal Time,Estadio Chateau Carreras,Córdoba,0,0 +302,1978,Argentina,1978-06-14,Group Stage,Matchday 4,Group B,Argentina,Poland,,,2,0,,,,,Argentina,Normal Time,Estadio Gigante de Arroyito,Rosario,0,0 +303,1978,Argentina,1978-06-14,Group Stage,Matchday 4,Group B,Peru,Brazil,,,0,3,,,,,Brazil,Normal Time,Estadio Ciudad de Mendoza,Mendoza,0,0 +304,1978,Argentina,1978-06-18,Group Stage,Matchday 5,Group B,Argentina,Brazil,,,0,0,,,,,Draw,Draw,Estadio Gigante de Arroyito,Rosario,0,0 +305,1978,Argentina,1978-06-18,Group Stage,Matchday 5,Group B,Peru,Poland,,,0,1,,,,,Poland,Normal Time,Estadio Ciudad de Mendoza,Mendoza,0,0 +306,1978,Argentina,1978-06-21,Group Stage,Matchday 6,Group B,Argentina,Peru,,,6,0,,,,,Argentina,Normal Time,Estadio Gigante de Arroyito,Rosario,0,0 +307,1978,Argentina,1978-06-21,Group Stage,Matchday 6,Group B,Poland,Brazil,,,1,3,,,,,Brazil,Normal Time,Estadio Ciudad de Mendoza,Mendoza,0,0 +308,1978,Argentina,1978-06-24,Third Place Play-off,Third place match,,Brazil,Italy,,,2,1,,,,,Brazil,Normal Time,Estadio Monumental,Buenos Aires,0,0 +309,1978,Argentina,1978-06-25,Final,Final,,Netherlands,Argentina,,,1,1,1,3,,,Argentina,Extra Time,Estadio Monumental,Buenos Aires,0,0 +310,1982,Spain,1982-06-14,Group Stage,Matchday 1,Group 1,Italy,Poland,,,0,0,,,,,Draw,Draw,Balaídos,Vigo,0,0 +311,1982,Spain,1982-06-15,Group Stage,Matchday 1,Group 1,Peru,Cameroon,,,0,0,,,,,Draw,Draw,Estadio de Riazor,A Coruña,0,0 +312,1982,Spain,1982-06-18,Group Stage,Matchday 2,Group 1,Italy,Peru,,,1,1,,,,,Draw,Draw,Balaídos,Vigo,0,0 +313,1982,Spain,1982-06-19,Group Stage,Matchday 2,Group 1,Poland,Cameroon,,,0,0,,,,,Draw,Draw,Estadio de Riazor,A Coruña,0,0 +314,1982,Spain,1982-06-22,Group Stage,Matchday 3,Group 1,Poland,Peru,,,5,1,,,,,Poland,Normal Time,Estadio de Riazor,A Coruña,0,0 +315,1982,Spain,1982-06-23,Group Stage,Matchday 3,Group 1,Italy,Cameroon,,,1,1,,,,,Draw,Draw,Balaídos,Vigo,0,0 +316,1982,Spain,1982-06-16,Group Stage,Matchday 1,Group 2,West Germany,Algeria,,,1,2,,,,,Algeria,Normal Time,El Molinón,Gijón,0,0 +317,1982,Spain,1982-06-17,Group Stage,Matchday 1,Group 2,Chile,Austria,,,0,1,,,,,Austria,Normal Time,Estadio Carlos Tartiere,Oviedo,0,0 +318,1982,Spain,1982-06-20,Group Stage,Matchday 2,Group 2,West Germany,Chile,,,4,1,,,,,West Germany,Normal Time,El Molinón,Gijón,0,0 +319,1982,Spain,1982-06-21,Group Stage,Matchday 2,Group 2,Algeria,Austria,,,0,2,,,,,Austria,Normal Time,Estadio Carlos Tartiere,Oviedo,0,0 +320,1982,Spain,1982-06-24,Group Stage,Matchday 3,Group 2,Algeria,Chile,,,3,2,,,,,Algeria,Normal Time,Estadio Carlos Tartiere,Oviedo,0,0 +321,1982,Spain,1982-06-25,Group Stage,Matchday 3,Group 2,West Germany,Austria,,,1,0,,,,,West Germany,Normal Time,El Molinón,Gijón,0,0 +322,1982,Spain,1982-06-13,Group Stage,Matchday 1,Group 3,Argentina,Belgium,,,0,1,,,,,Belgium,Normal Time,Camp Nou,Barcelona,0,0 +323,1982,Spain,1982-06-15,Group Stage,Matchday 1,Group 3,Hungary,El Salvador,,,10,1,,,,,Hungary,Normal Time,Nuevo Estadio,Elche,0,0 +324,1982,Spain,1982-06-18,Group Stage,Matchday 2,Group 3,Argentina,Hungary,,,4,1,,,,,Argentina,Normal Time,Estadio José Rico Pérez,Alicante,0,0 +325,1982,Spain,1982-06-19,Group Stage,Matchday 2,Group 3,Belgium,El Salvador,,,1,0,,,,,Belgium,Normal Time,Nuevo Estadio,Elche,0,0 +326,1982,Spain,1982-06-22,Group Stage,Matchday 3,Group 3,Belgium,Hungary,,,1,1,,,,,Draw,Draw,Nuevo Estadio,Elche,0,0 +327,1982,Spain,1982-06-23,Group Stage,Matchday 3,Group 3,Argentina,El Salvador,,,2,0,,,,,Argentina,Normal Time,Estadio José Rico Pérez,Alicante,0,0 +328,1982,Spain,1982-06-16,Group Stage,Matchday 1,Group 4,England,France,,,3,1,,,,,England,Normal Time,Estadio San Mamés,Bilbao,0,0 +329,1982,Spain,1982-06-17,Group Stage,Matchday 1,Group 4,Czechoslovakia,Kuwait,,,1,1,,,,,Draw,Draw,Estadio José Zorrilla,Valladolid,0,0 +330,1982,Spain,1982-06-20,Group Stage,Matchday 2,Group 4,England,Czechoslovakia,,,2,0,,,,,England,Normal Time,Estadio San Mamés,Bilbao,0,0 +331,1982,Spain,1982-06-21,Group Stage,Matchday 2,Group 4,France,Kuwait,,,4,1,,,,,France,Normal Time,Estadio José Zorrilla,Valladolid,0,0 +332,1982,Spain,1982-06-24,Group Stage,Matchday 3,Group 4,France,Czechoslovakia,,,1,1,,,,,Draw,Draw,Estadio José Zorrilla,Valladolid,0,0 +333,1982,Spain,1982-06-25,Group Stage,Matchday 3,Group 4,England,Kuwait,,,1,0,,,,,England,Normal Time,Estadio San Mamés,Bilbao,0,0 +334,1982,Spain,1982-06-16,Group Stage,Matchday 1,Group 5,Spain,Honduras,,,1,1,,,,,Draw,Draw,Estadio Luis Casanova,Valencia,0,0 +335,1982,Spain,1982-06-17,Group Stage,Matchday 1,Group 5,Yugoslavia,Northern Ireland,,,0,0,,,,,Draw,Draw,La Romareda,Zaragoza,0,0 +336,1982,Spain,1982-06-20,Group Stage,Matchday 2,Group 5,Spain,Yugoslavia,,,2,1,,,,,Spain,Normal Time,Estadio Luis Casanova,Valencia,0,0 +337,1982,Spain,1982-06-21,Group Stage,Matchday 2,Group 5,Honduras,Northern Ireland,,,1,1,,,,,Draw,Draw,La Romareda,Zaragoza,0,0 +338,1982,Spain,1982-06-24,Group Stage,Matchday 3,Group 5,Honduras,Yugoslavia,,,0,1,,,,,Yugoslavia,Normal Time,La Romareda,Zaragoza,0,0 +339,1982,Spain,1982-06-25,Group Stage,Matchday 3,Group 5,Spain,Northern Ireland,,,0,1,,,,,Northern Ireland,Normal Time,Estadio Luis Casanova,Valencia,0,0 +340,1982,Spain,1982-06-14,Group Stage,Matchday 1,Group 6,Brazil,Soviet Union,,,2,1,,,,,Brazil,Normal Time,Estadio Ramón Sánchez Pizjuán,Seville,0,0 +341,1982,Spain,1982-06-15,Group Stage,Matchday 1,Group 6,Scotland,New Zealand,,,5,2,,,,,Scotland,Normal Time,Estadio La Rosaleda,Málaga,0,0 +342,1982,Spain,1982-06-18,Group Stage,Matchday 2,Group 6,Brazil,Scotland,,,4,1,,,,,Brazil,Normal Time,Estadio Benito Villamarín,Seville,0,0 +343,1982,Spain,1982-06-19,Group Stage,Matchday 2,Group 6,Soviet Union,New Zealand,,,3,0,,,,,Soviet Union,Normal Time,Estadio La Rosaleda,Málaga,0,0 +344,1982,Spain,1982-06-22,Group Stage,Matchday 3,Group 6,Soviet Union,Scotland,,,2,2,,,,,Draw,Draw,Estadio La Rosaleda,Málaga,0,0 +345,1982,Spain,1982-06-23,Group Stage,Matchday 3,Group 6,Brazil,New Zealand,,,4,0,,,,,Brazil,Normal Time,Estadio Benito Villamarín,Seville,0,0 +346,1982,Spain,1982-06-28,Group Stage,Matchday 4,Group A,Poland,Belgium,,,3,0,,,,,Poland,Normal Time,Camp Nou,Barcelona,0,0 +347,1982,Spain,1982-07-01,Group Stage,Matchday 5,Group A,Belgium,Soviet Union,,,0,1,,,,,Soviet Union,Normal Time,Camp Nou,Barcelona,0,0 +348,1982,Spain,1982-07-04,Group Stage,Matchday 6,Group A,Soviet Union,Poland,,,0,0,,,,,Draw,Draw,Camp Nou,Barcelona,0,0 +349,1982,Spain,1982-06-29,Group Stage,Matchday 4,Group B,West Germany,England,,,0,0,,,,,Draw,Draw,Estadio Santiago Bernabéu,Madrid,0,0 +350,1982,Spain,1982-07-02,Group Stage,Matchday 5,Group B,West Germany,Spain,,,2,1,,,,,West Germany,Normal Time,Estadio Santiago Bernabéu,Madrid,0,0 +351,1982,Spain,1982-07-05,Group Stage,Matchday 6,Group B,Spain,England,,,0,0,,,,,Draw,Draw,Estadio Santiago Bernabéu,Madrid,0,0 +352,1982,Spain,1982-06-29,Group Stage,Matchday 4,Group C,Italy,Argentina,,,2,1,,,,,Italy,Normal Time,Estadio Sarriá,Barcelona,0,0 +353,1982,Spain,1982-07-02,Group Stage,Matchday 5,Group C,Argentina,Brazil,,,1,3,,,,,Brazil,Normal Time,Estadio Sarriá,Barcelona,0,0 +354,1982,Spain,1982-07-05,Group Stage,Matchday 6,Group C,Italy,Brazil,,,3,2,,,,,Italy,Normal Time,Estadio Sarriá,Barcelona,0,0 +355,1982,Spain,1982-06-28,Group Stage,Matchday 4,Group D,Austria,France,,,0,1,,,,,France,Normal Time,Estadio Vicente Calderón,Madrid,0,0 +356,1982,Spain,1982-07-01,Group Stage,Matchday 5,Group D,Austria,Northern Ireland,,,2,2,,,,,Draw,Draw,Estadio Vicente Calderón,Madrid,0,0 +357,1982,Spain,1982-07-04,Group Stage,Matchday 6,Group D,Northern Ireland,France,,,1,4,,,,,France,Normal Time,Estadio Vicente Calderón,Madrid,0,0 +358,1982,Spain,1982-07-08,Semi-final,Semi-finals,,Poland,Italy,,,0,2,,,,,Italy,Normal Time,Camp Nou,Barcelona,0,0 +359,1982,Spain,1982-07-08,Semi-final,Semi-finals,,West Germany,France,,,1,1,3,3,5,4,West Germany,Penalties,Estadio Ramón Sánchez Pizjuán,Seville,0,0 +360,1982,Spain,1982-07-10,Third Place Play-off,Third place match,,Poland,France,,,3,2,,,,,Poland,Normal Time,Estadio José Rico Pérez,Alicante,0,0 +361,1982,Spain,1982-07-11,Final,Final,,Italy,West Germany,,,3,1,,,,,Italy,Normal Time,Estadio Santiago Bernabéu,,0,0 +362,1986,Mexico,1986-05-31,Group Stage,Matchday 1,Group A,Bulgaria,Italy,,,1,1,,,,,Draw,Draw,Estadio Azteca,Mexico City,0,0 +363,1986,Mexico,1986-06-02,Group Stage,Matchday 1,Group A,Argentina,South Korea,,,3,1,,,,,Argentina,Normal Time,Estadio Olímpico Universitario,Mexico City,0,0 +364,1986,Mexico,1986-06-05,Group Stage,Matchday 2,Group A,Italy,Argentina,,,1,1,,,,,Draw,Draw,Estadio Cuauhtémoc,Puebla,0,0 +365,1986,Mexico,1986-06-05,Group Stage,Matchday 2,Group A,South Korea,Bulgaria,,,1,1,,,,,Draw,Draw,Estadio Olímpico Universitario,Mexico City,0,0 +366,1986,Mexico,1986-06-10,Group Stage,Matchday 3,Group A,South Korea,Italy,,,2,3,,,,,Italy,Normal Time,Estadio Cuauhtémoc,Puebla,0,0 +367,1986,Mexico,1986-06-10,Group Stage,Matchday 3,Group A,Argentina,Bulgaria,,,2,0,,,,,Argentina,Normal Time,Estadio Olímpico Universitario,Mexico City,0,0 +368,1986,Mexico,1986-06-03,Group Stage,Matchday 1,Group B,Belgium,Mexico,,,1,2,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,0,0 +369,1986,Mexico,1986-06-04,Group Stage,Matchday 1,Group B,Paraguay,Iraq,,,1,0,,,,,Paraguay,Normal Time,Estadio Nemesio Díez,Toluca,0,0 +370,1986,Mexico,1986-06-07,Group Stage,Matchday 2,Group B,Mexico,Paraguay,,,1,1,,,,,Draw,Draw,Estadio Azteca,Mexico City,0,0 +371,1986,Mexico,1986-06-08,Group Stage,Matchday 2,Group B,Iraq,Belgium,,,1,2,,,,,Belgium,Normal Time,Estadio Nemesio Díez,Toluca,0,0 +372,1986,Mexico,1986-06-11,Group Stage,Matchday 3,Group B,Iraq,Mexico,,,0,1,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,0,0 +373,1986,Mexico,1986-06-11,Group Stage,Matchday 3,Group B,Paraguay,Belgium,,,2,2,,,,,Draw,Draw,Estadio Nemesio Díez,Toluca,0,0 +374,1986,Mexico,1986-06-01,Group Stage,Matchday 1,Group C,Canada,France,,,0,1,,,,,France,Normal Time,Estadio Nou Camp,León,0,0 +375,1986,Mexico,1986-06-02,Group Stage,Matchday 1,Group C,Soviet Union,Hungary,,,6,0,,,,,Soviet Union,Normal Time,Estadio Sergio León Chavez,Irapuato,0,0 +376,1986,Mexico,1986-06-05,Group Stage,Matchday 2,Group C,France,Soviet Union,,,1,1,,,,,Draw,Draw,Estadio Nou Camp,León,0,0 +377,1986,Mexico,1986-06-06,Group Stage,Matchday 2,Group C,Hungary,Canada,,,2,0,,,,,Hungary,Normal Time,Estadio Sergio León Chavez,Irapuato,0,0 +378,1986,Mexico,1986-06-09,Group Stage,Matchday 3,Group C,Hungary,France,,,0,3,,,,,France,Normal Time,Estadio Nou Camp,León,0,0 +379,1986,Mexico,1986-06-09,Group Stage,Matchday 3,Group C,Soviet Union,Canada,,,2,0,,,,,Soviet Union,Normal Time,Estadio Sergio León Chavez,Irapuato,0,0 +380,1986,Mexico,1986-06-01,Group Stage,Matchday 1,Group D,Spain,Brazil,,,0,1,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +381,1986,Mexico,1986-06-03,Group Stage,Matchday 1,Group D,Algeria,Northern Ireland,,,1,1,,,,,Draw,Draw,Estadio Tres de Marzo,Guadalajara,0,0 +382,1986,Mexico,1986-06-06,Group Stage,Matchday 2,Group D,Brazil,Algeria,,,1,0,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +383,1986,Mexico,1986-06-07,Group Stage,Matchday 2,Group D,Northern Ireland,Spain,,,1,2,,,,,Spain,Normal Time,Estadio Tres de Marzo,Guadalajara,0,0 +384,1986,Mexico,1986-06-12,Group Stage,Matchday 3,Group D,Northern Ireland,Brazil,,,0,3,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +385,1986,Mexico,1986-06-12,Group Stage,Matchday 3,Group D,Algeria,Spain,,,0,3,,,,,Spain,Normal Time,Estadio Tecnológico,Monterrey,0,0 +386,1986,Mexico,1986-06-04,Group Stage,Matchday 1,Group E,Uruguay,West Germany,,,1,1,,,,,Draw,Draw,Estadio La Corregidora,Querétaro,0,0 +387,1986,Mexico,1986-06-04,Group Stage,Matchday 1,Group E,Scotland,Denmark,,,0,1,,,,,Denmark,Normal Time,Estadio Neza 86,Nezahualcóyotl,0,0 +388,1986,Mexico,1986-06-08,Group Stage,Matchday 2,Group E,West Germany,Scotland,,,2,1,,,,,West Germany,Normal Time,Estadio La Corregidora,Querétaro,0,0 +389,1986,Mexico,1986-06-08,Group Stage,Matchday 2,Group E,Denmark,Uruguay,,,6,1,,,,,Denmark,Normal Time,Estadio Neza 86,Nezahualcóyotl,0,0 +390,1986,Mexico,1986-06-13,Group Stage,Matchday 3,Group E,Denmark,West Germany,,,2,0,,,,,Denmark,Normal Time,Estadio La Corregidora,Querétaro,0,0 +391,1986,Mexico,1986-06-13,Group Stage,Matchday 3,Group E,Scotland,Uruguay,,,0,0,,,,,Draw,Draw,Estadio Neza 86,Nezahualcóyotl,0,0 +392,1986,Mexico,1986-06-02,Group Stage,Matchday 1,Group F,Morocco,Poland,,,0,0,,,,,Draw,Draw,Estadio Universitario,Monterrey,0,0 +393,1986,Mexico,1986-06-03,Group Stage,Matchday 1,Group F,Portugal,England,,,1,0,,,,,Portugal,Normal Time,Estadio Tecnológico,Monterrey,0,0 +394,1986,Mexico,1986-06-06,Group Stage,Matchday 2,Group F,England,Morocco,,,0,0,,,,,Draw,Draw,Estadio Tecnológico,Monterrey,0,0 +395,1986,Mexico,1986-06-07,Group Stage,Matchday 2,Group F,Poland,Portugal,,,1,0,,,,,Poland,Normal Time,Estadio Universitario,Monterrey,0,0 +396,1986,Mexico,1986-06-11,Group Stage,Matchday 3,Group F,Portugal,Morocco,,,1,3,,,,,Morocco,Normal Time,Estadio Tres de Marzo,Guadalajara,0,0 +397,1986,Mexico,1986-06-11,Group Stage,Matchday 3,Group F,England,Poland,,,3,0,,,,,England,Normal Time,Estadio Tecnológico,Monterrey,0,0 +398,1986,Mexico,1986-06-15,Round of 16,Round of 16,,Mexico,Bulgaria,,,2,0,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,0,0 +399,1986,Mexico,1986-06-15,Round of 16,Round of 16,,Soviet Union,Belgium,,,2,2,3,4,,,Belgium,Extra Time,Estadio Nou Camp,León,0,0 +400,1986,Mexico,1986-06-16,Round of 16,Round of 16,,Argentina,Uruguay,,,1,0,,,,,Argentina,Normal Time,Estadio Cuauhtémoc,Puebla,0,0 +401,1986,Mexico,1986-06-16,Round of 16,Round of 16,,Brazil,Poland,,,4,0,,,,,Brazil,Normal Time,Estadio Jalisco,Guadalajara,0,0 +402,1986,Mexico,1986-06-17,Round of 16,Round of 16,,Italy,France,,,0,2,,,,,France,Normal Time,Estadio Olímpico Universitario,Mexico City,0,0 +403,1986,Mexico,1986-06-17,Round of 16,Round of 16,,Morocco,West Germany,,,0,1,,,,,West Germany,Normal Time,Estadio Universitario,Monterrey,0,0 +404,1986,Mexico,1986-06-18,Round of 16,Round of 16,,England,Paraguay,,,3,0,,,,,England,Normal Time,Estadio Azteca,Mexico City,0,0 +405,1986,Mexico,1986-06-18,Round of 16,Round of 16,,Denmark,Spain,,,1,5,,,,,Spain,Normal Time,Estadio La Corregidora,Querétaro,0,0 +406,1986,Mexico,1986-06-21,Quarter-final,Quarter-finals,,Brazil,France,,,1,1,1,1,3,4,France,Penalties,Estadio Jalisco,Guadalajara,0,0 +407,1986,Mexico,1986-06-21,Quarter-final,Quarter-finals,,West Germany,Mexico,,,0,0,0,0,4,1,West Germany,Penalties,Estadio Universitario,Monterrey,0,0 +408,1986,Mexico,1986-06-22,Quarter-final,Quarter-finals,,Spain,Belgium,,,1,1,1,1,4,5,Belgium,Penalties,Estadio Cuauhtémoc,Puebla,0,0 +409,1986,Mexico,1986-06-22,Quarter-final,Quarter-finals,,Argentina,England,,,2,1,,,,,Argentina,Normal Time,Estadio Azteca,Mexico City,0,0 +410,1986,Mexico,1986-06-25,Semi-final,Semi-finals,,Argentina,Belgium,,,2,0,,,,,Argentina,Normal Time,Estadio Azteca,Mexico City,0,0 +411,1986,Mexico,1986-06-25,Semi-final,Semi-finals,,France,West Germany,,,0,2,,,,,West Germany,Normal Time,Estadio Jalisco,Guadalajara,0,0 +412,1986,Mexico,1986-06-28,Third Place Play-off,Third place match,,France,Belgium,,,2,2,4,2,,,France,Extra Time,Estadio Cuauhtémoc,Puebla,0,0 +413,1986,Mexico,1986-06-29,Final,Final,,Argentina,West Germany,,,3,2,,,,,Argentina,Normal Time,Estadio Azteca,Mexico City,0,0 +414,1990,Italy,1990-06-09,Group Stage,Matchday 1,Group A,Italy,Austria,,,1,0,,,,,Italy,Normal Time,Stadio Olimpico,Rome,0,0 +415,1990,Italy,1990-06-10,Group Stage,Matchday 1,Group A,United States,Czechoslovakia,,,1,5,,,,,Czechoslovakia,Normal Time,Stadio Comunale,Florence,0,0 +416,1990,Italy,1990-06-14,Group Stage,Matchday 2,Group A,Italy,United States,,,1,0,,,,,Italy,Normal Time,Stadio Olimpico,Rome,0,0 +417,1990,Italy,1990-06-15,Group Stage,Matchday 2,Group A,Austria,Czechoslovakia,,,0,1,,,,,Czechoslovakia,Normal Time,Stadio Comunale,Florence,0,0 +418,1990,Italy,1990-06-19,Group Stage,Matchday 3,Group A,Italy,Czechoslovakia,,,2,0,,,,,Italy,Normal Time,Stadio Olimpico,Rome,0,0 +419,1990,Italy,1990-06-19,Group Stage,Matchday 3,Group A,Austria,United States,,,2,1,,,,,Austria,Normal Time,Stadio Comunale,Florence,0,0 +420,1990,Italy,1990-06-08,Group Stage,Matchday 1,Group B,Argentina,Cameroon,,,0,1,,,,,Cameroon,Normal Time,San Siro,Milan,0,0 +421,1990,Italy,1990-06-09,Group Stage,Matchday 1,Group B,Soviet Union,Romania,,,0,2,,,,,Romania,Normal Time,Stadio San Nicola,Bari,0,0 +422,1990,Italy,1990-06-13,Group Stage,Matchday 1,Group B,Argentina,Soviet Union,,,2,0,,,,,Argentina,Normal Time,Stadio San Paolo,Naples,0,0 +423,1990,Italy,1990-06-14,Group Stage,Matchday 2,Group B,Cameroon,Romania,,,2,1,,,,,Cameroon,Normal Time,Stadio San Nicola,Bari,0,0 +424,1990,Italy,1990-06-18,Group Stage,Matchday 3,Group B,Argentina,Romania,,,1,1,,,,,Draw,Draw,Stadio San Paolo,Naples,0,0 +425,1990,Italy,1990-06-18,Group Stage,Matchday 3,Group B,Cameroon,Soviet Union,,,0,4,,,,,Soviet Union,Normal Time,Stadio San Nicola,Bari,0,0 +426,1990,Italy,1990-06-10,Group Stage,Matchday 1,Group C,Brazil,Sweden,,,2,1,,,,,Brazil,Normal Time,Stadio Delle Alpi,Turin,0,0 +427,1990,Italy,1990-06-11,Group Stage,Matchday 1,Group C,Costa Rica,Scotland,,,1,0,,,,,Costa Rica,Normal Time,Stadio Luigi Ferraris,Genoa,0,0 +428,1990,Italy,1990-06-16,Group Stage,Matchday 2,Group C,Brazil,Costa Rica,,,1,0,,,,,Brazil,Normal Time,Stadio Delle Alpi,Turin,0,0 +429,1990,Italy,1990-06-16,Group Stage,Matchday 2,Group C,Sweden,Scotland,,,1,2,,,,,Scotland,Normal Time,Stadio Luigi Ferraris,Genoa,0,0 +430,1990,Italy,1990-06-20,Group Stage,Matchday 3,Group C,Brazil,Scotland,,,1,0,,,,,Brazil,Normal Time,Stadio Delle Alpi,Turin,0,0 +431,1990,Italy,1990-06-20,Group Stage,Matchday 3,Group C,Sweden,Costa Rica,,,1,2,,,,,Costa Rica,Normal Time,Stadio Luigi Ferraris,Genoa,0,0 +432,1990,Italy,1990-06-09,Group Stage,Matchday 1,Group D,United Arab Emirates,Colombia,,,0,2,,,,,Colombia,Normal Time,Stadio Renato Dall'Ara,Bologna,0,0 +433,1990,Italy,1990-06-10,Group Stage,Matchday 1,Group D,West Germany,Yugoslavia,,,4,1,,,,,West Germany,Normal Time,San Siro,Milan,0,0 +434,1990,Italy,1990-06-14,Group Stage,Matchday 2,Group D,Yugoslavia,Colombia,,,1,0,,,,,Yugoslavia,Normal Time,Stadio Renato Dall'Ara,Bologna,0,0 +435,1990,Italy,1990-06-15,Group Stage,Matchday 2,Group D,West Germany,United Arab Emirates,,,5,1,,,,,West Germany,Normal Time,San Siro,Milan,0,0 +436,1990,Italy,1990-06-19,Group Stage,Matchday 3,Group D,West Germany,Colombia,,,1,1,,,,,Draw,Draw,San Siro,Milan,0,0 +437,1990,Italy,1990-06-19,Group Stage,Matchday 3,Group D,Yugoslavia,United Arab Emirates,,,4,1,,,,,Yugoslavia,Normal Time,Stadio Renato Dall'Ara,Bologna,0,0 +438,1990,Italy,1990-06-12,Group Stage,Matchday 1,Group E,Belgium,South Korea,,,2,0,,,,,Belgium,Normal Time,Stadio Marc'Antonio Bentegodi,Verona,0,0 +439,1990,Italy,1990-06-13,Group Stage,Matchday 1,Group E,Uruguay,Spain,,,0,0,,,,,Draw,Draw,Stadio Friuli,Udine,0,0 +440,1990,Italy,1990-06-17,Group Stage,Matchday 2,Group E,Belgium,Uruguay,,,3,1,,,,,Belgium,Normal Time,Stadio Marc'Antonio Bentegodi,Verona,0,0 +441,1990,Italy,1990-06-17,Group Stage,Matchday 2,Group E,South Korea,Spain,,,1,3,,,,,Spain,Normal Time,Stadio Friuli,Udine,0,0 +442,1990,Italy,1990-06-21,Group Stage,Matchday 3,Group E,Belgium,Spain,,,1,2,,,,,Spain,Normal Time,Stadio Marc'Antonio Bentegodi,Verona,0,0 +443,1990,Italy,1990-06-21,Group Stage,Matchday 3,Group E,South Korea,Uruguay,,,0,1,,,,,Uruguay,Normal Time,Stadio Friuli,Udine,0,0 +444,1990,Italy,1990-06-11,Group Stage,Matchday 1,Group F,England,Ireland,,,1,1,,,,,Draw,Draw,Stadio Sant'Elia,Cagliari,0,0 +445,1990,Italy,1990-06-12,Group Stage,Matchday 1,Group F,Netherlands,Egypt,,,1,1,,,,,Draw,Draw,Stadio La Favorita,Palermo,0,0 +446,1990,Italy,1990-06-16,Group Stage,Matchday 2,Group F,England,Netherlands,,,0,0,,,,,Draw,Draw,Stadio Sant'Elia,Cagliari,0,0 +447,1990,Italy,1990-06-17,Group Stage,Matchday 2,Group F,Ireland,Egypt,,,0,0,,,,,Draw,Draw,Stadio La Favorita,Palermo,0,0 +448,1990,Italy,1990-06-21,Group Stage,Matchday 3,Group F,England,Egypt,,,1,0,,,,,England,Normal Time,Stadio Sant'Elia,Cagliari,0,0 +449,1990,Italy,1990-06-21,Group Stage,Matchday 3,Group F,Ireland,Netherlands,,,1,1,,,,,Draw,Draw,Stadio La Favorita,Palermo,0,0 +450,1990,Italy,1990-06-23,Round of 16,Round of 16,,Cameroon,Colombia,,,0,0,2,1,,,Cameroon,Extra Time,Stadio San Paolo,Naples,0,0 +451,1990,Italy,1990-06-23,Round of 16,Round of 16,,Czechoslovakia,Costa Rica,,,4,1,,,,,Czechoslovakia,Normal Time,Stadio San Nicola,Bari,0,0 +452,1990,Italy,1990-06-24,Round of 16,Round of 16,,Brazil,Argentina,,,0,1,,,,,Argentina,Normal Time,Stadio Delle Alpi,Turin,0,0 +453,1990,Italy,1990-06-24,Round of 16,Round of 16,,West Germany,Netherlands,,,2,1,,,,,West Germany,Normal Time,San Siro,Milan,0,0 +454,1990,Italy,1990-06-25,Round of 16,Round of 16,,Ireland,Romania,,,0,0,0,0,5,4,Ireland,Penalties,Stadio Luigi Ferraris,Genoa,0,0 +455,1990,Italy,1990-06-25,Round of 16,Round of 16,,Italy,Uruguay,,,2,0,,,,,Italy,Normal Time,Stadio Olimpico,Rome,0,0 +456,1990,Italy,1990-06-26,Round of 16,Round of 16,,Spain,Yugoslavia,,,1,1,1,2,,,Yugoslavia,Extra Time,Stadio Marc'Antonio Bentegodi,Verona,0,0 +457,1990,Italy,1990-06-26,Round of 16,Round of 16,,England,Belgium,,,0,0,1,0,,,England,Extra Time,Stadio Renato Dall'Ara,Bologna,0,0 +458,1990,Italy,1990-06-30,Quarter-final,Quarter-finals,,Yugoslavia,Argentina,,,0,0,0,0,2,3,Argentina,Penalties,Stadio Artemio Franchi,Florence,0,0 +459,1990,Italy,1990-06-30,Quarter-final,Quarter-finals,,Italy,Ireland,,,1,0,,,,,Italy,Normal Time,Stadio Olimpico,Rome,0,0 +460,1990,Italy,1990-07-01,Quarter-final,Quarter-finals,,West Germany,Czechoslovakia,,,1,0,,,,,West Germany,Normal Time,San Siro,Milan,0,0 +461,1990,Italy,1990-07-01,Quarter-final,Quarter-finals,,England,Cameroon,,,2,2,3,2,,,England,Extra Time,Stadio San Paolo,Naples,0,0 +462,1990,Italy,1990-07-03,Semi-final,Semi-finals,,Italy,Argentina,,,1,1,1,1,3,4,Argentina,Penalties,Stadio San Paolo,Naples,1,1 +463,1990,Italy,1990-07-04,Semi-final,Semi-finals,,West Germany,England,,,1,1,1,1,4,3,West Germany,Penalties,Stadio delle Alpi,Turin,1,1 +464,1990,Italy,1990-07-07,Third Place Play-off,Third place match,,Italy,England,,,2,1,,,,,Italy,Normal Time,Stadio San Nicola,Bari,2,1 +465,1990,Italy,1990-07-08,Final,Final,,West Germany,Argentina,,,1,0,,,,,West Germany,Normal Time,Stadio Olimpico,Rome,1,0 +466,1994,United States,1994-06-18,Group Stage,Matchday 1,Group A,USA,Switzerland,,,1,1,,,,,Draw,Draw,Pontiac Silverdome,Pontiac,0,0 +467,1994,United States,1994-06-18,Group Stage,Matchday 1,Group A,Colombia,Romania,,,1,3,,,,,Romania,Normal Time,Rose Bowl,Pasadena,0,0 +468,1994,United States,1994-06-22,Group Stage,Matchday 2,Group A,Romania,Switzerland,,,1,4,,,,,Switzerland,Normal Time,Pontiac Silverdome,Pontiac,0,0 +469,1994,United States,1994-06-22,Group Stage,Matchday 2,Group A,USA,Colombia,,,2,1,,,,,USA,Normal Time,Rose Bowl,Pasadena,0,0 +470,1994,United States,1994-06-26,Group Stage,Matchday 2,Group A,USA,Romania,,,0,1,,,,,Romania,Normal Time,Rose Bowl,Pasadena,0,0 +471,1994,United States,1994-06-26,Group Stage,Matchday 2,Group A,Switzerland,Colombia,,,0,2,,,,,Colombia,Normal Time,Stanford Stadium,Stanford,0,0 +472,1994,United States,1994-06-19,Group Stage,Matchday 1,Group B,Cameroon,Sweden,,,2,2,,,,,Draw,Draw,Rose Bowl,Pasadena,0,0 +473,1994,United States,1994-06-20,Group Stage,Matchday 1,Group B,Brazil,Russia,,,2,0,,,,,Brazil,Normal Time,Stanford Stadium,Stanford,0,0 +474,1994,United States,1994-06-24,Group Stage,Matchday 2,Group B,Brazil,Cameroon,,,3,0,,,,,Brazil,Normal Time,Stanford Stadium,Stanford,0,0 +475,1994,United States,1994-06-24,Group Stage,Matchday 2,Group B,Sweden,Russia,,,3,1,,,,,Sweden,Normal Time,Pontiac Silverdome,Pontiac,0,0 +476,1994,United States,1994-06-28,Group Stage,Matchday 3,Group B,Russia,Cameroon,,,6,1,,,,,Russia,Normal Time,Stanford Stadium,Stanford,0,0 +477,1994,United States,1994-06-28,Group Stage,Matchday 3,Group B,Brazil,Sweden,,,1,1,,,,,Draw,Draw,Pontiac Silverdome,Pontiac,0,0 +478,1994,United States,1994-06-17,Group Stage,Matchday 1,Group C,Germany,Bolivia,,,1,0,,,,,Germany,Normal Time,Soldier Field,Chicago,0,0 +479,1994,United States,1994-06-17,Group Stage,Matchday 1,Group C,Spain,South Korea,,,2,2,,,,,Draw,Draw,Cotton Bowl,Dallas,0,0 +480,1994,United States,1994-06-21,Group Stage,Matchday 1,Group C,Germany,Spain,,,1,1,,,,,Draw,Draw,Soldier Field,Chicago,0,0 +481,1994,United States,1994-06-23,Group Stage,Matchday 2,Group C,South Korea,Bolivia,,,0,0,,,,,Draw,Draw,Foxboro Stadium,Foxborough,0,0 +482,1994,United States,1994-06-27,Group Stage,Matchday 3,Group C,Bolivia,Spain,,,1,3,,,,,Spain,Normal Time,Soldier Field,Chicago,0,0 +483,1994,United States,1994-06-27,Group Stage,Matchday 3,Group C,Germany,South Korea,,,3,2,,,,,Germany,Normal Time,Cotton Bowl,Dallas,0,0 +484,1994,United States,1994-06-21,Group Stage,Matchday 1,Group D,Argentina,Greece,,,4,0,,,,,Argentina,Normal Time,Foxboro Stadium,Foxborough,0,0 +485,1994,United States,1994-06-21,Group Stage,Matchday 1,Group D,Nigeria,Bulgaria,,,3,0,,,,,Nigeria,Normal Time,Cotton Bowl,Dallas,0,0 +486,1994,United States,1994-06-25,Group Stage,Matchday 2,Group D,Argentina,Nigeria,,,2,1,,,,,Argentina,Normal Time,Foxboro Stadium,Foxborough,0,0 +487,1994,United States,1994-06-26,Group Stage,Matchday 2,Group D,Greece,Bulgaria,,,0,4,,,,,Bulgaria,Normal Time,Soldier Field,Chicago,0,0 +488,1994,United States,1994-06-30,Group Stage,Matchday 3,Group D,Greece,Nigeria,,,0,2,,,,,Nigeria,Normal Time,Foxboro Stadium,Foxborough,0,0 +489,1994,United States,1994-06-30,Group Stage,Matchday 3,Group D,Argentina,Bulgaria,,,0,2,,,,,Bulgaria,Normal Time,Cotton Bowl,Dallas,0,0 +490,1994,United States,1994-06-18,Group Stage,Matchday 1,Group E,Italy,Ireland,,,0,1,,,,,Ireland,Normal Time,Giants Stadium,East Rutherford,0,0 +491,1994,United States,1994-06-19,Group Stage,Matchday 1,Group E,Norway,Mexico,,,1,0,,,,,Norway,Normal Time,RFK Stadium,Washington,0,0 +492,1994,United States,1994-06-23,Group Stage,Matchday 2,Group E,Italy,Norway,,,1,0,,,,,Italy,Normal Time,Giants Stadium,East Rutherford,0,0 +493,1994,United States,1994-06-24,Group Stage,Matchday 2,Group E,Mexico,Ireland,,,2,1,,,,,Mexico,Normal Time,Citrus Bowl,Orlando,0,0 +494,1994,United States,1994-06-28,Group Stage,Matchday 3,Group E,Ireland,Norway,,,0,0,,,,,Draw,Draw,Giants Stadium,East Rutherford,0,0 +495,1994,United States,1994-06-28,Group Stage,Matchday 3,Group E,Italy,Mexico,,,1,1,,,,,Draw,Draw,RFK Stadium,Washington,0,0 +496,1994,United States,1994-06-19,Group Stage,Matchday 1,Group F,Belgium,Morocco,,,1,0,,,,,Belgium,Normal Time,Citrus Bowl,Orlando,0,0 +497,1994,United States,1994-06-20,Group Stage,Matchday 1,Group F,Netherlands,Saudi Arabia,,,2,1,,,,,Netherlands,Normal Time,RFK Stadium,Washington,0,0 +498,1994,United States,1994-06-25,Group Stage,Matchday 2,Group F,Belgium,Netherlands,,,1,0,,,,,Belgium,Normal Time,Citrus Bowl,Orlando,0,0 +499,1994,United States,1994-06-25,Group Stage,Matchday 2,Group F,Saudi Arabia,Morocco,,,2,1,,,,,Saudi Arabia,Normal Time,Giants Stadium,East Rutherford,0,0 +500,1994,United States,1994-06-29,Group Stage,Matchday 3,Group F,Morocco,Netherlands,,,1,2,,,,,Netherlands,Normal Time,Citrus Bowl,Orlando,0,0 +501,1994,United States,1994-06-29,Group Stage,Matchday 3,Group F,Belgium,Saudi Arabia,,,0,1,,,,,Saudi Arabia,Normal Time,RFK Stadium,Washington,0,0 +502,1994,United States,1994-07-02,Round of 16,Round of 16,,Germany,Belgium,,,3,2,,,,,Germany,Normal Time,Soldier Field,Chicago,0,0 +503,1994,United States,1994-07-02,Round of 16,Round of 16,,Spain,Switzerland,,,3,0,,,,,Spain,Normal Time,RFK Stadium,Washington,0,0 +504,1994,United States,1994-07-03,Round of 16,Round of 16,,Saudi Arabia,Sweden,,,1,3,,,,,Sweden,Normal Time,Cotton Bowl,Dallas,0,0 +505,1994,United States,1994-07-03,Round of 16,Round of 16,,Romania,Argentina,,,3,2,,,,,Romania,Normal Time,Rose Bowl,Pasadena,0,0 +506,1994,United States,1994-07-04,Round of 16,Round of 16,,Netherlands,Ireland,,,2,0,,,,,Netherlands,Normal Time,Citrus Bowl,Orlando,0,0 +507,1994,United States,1994-07-04,Round of 16,Round of 16,,Brazil,USA,,,1,0,,,,,Brazil,Normal Time,Stanford Stadium,Stanford,0,0 +508,1994,United States,1994-07-05,Round of 16,Round of 16,,Nigeria,Italy,,,1,1,1,2,,,Italy,Extra Time,Foxboro Stadium,Foxborough,0,0 +509,1994,United States,1994-07-05,Round of 16,Round of 16,,Mexico,Bulgaria,,,1,1,1,1,1,3,Bulgaria,Penalties,Giants Stadium,East Rutherford,0,0 +510,1994,United States,1994-07-09,Quarter-final,Quarter-finals,,Italy,Spain,,,2,1,,,,,Italy,Normal Time,Foxboro Stadium,Foxborough,0,0 +511,1994,United States,1994-07-09,Quarter-final,Quarter-finals,,Netherlands,Brazil,,,2,3,,,,,Brazil,Normal Time,Cotton Bowl,Dallas,0,0 +512,1994,United States,1994-07-10,Quarter-final,Quarter-finals,,Bulgaria,Germany,,,2,1,,,,,Bulgaria,Normal Time,Giants Stadium,East Rutherford,0,0 +513,1994,United States,1994-07-10,Quarter-final,Quarter-finals,,Romania,Sweden,,,1,1,2,2,4,5,Sweden,Penalties,Stanford Stadium,Stanford,0,0 +514,1994,United States,1994-07-13,Semi-final,Semi-finals,,Bulgaria,Italy,,,1,2,,,,,Italy,Normal Time,Giants Stadium,East Rutherford,0,0 +515,1994,United States,1994-07-13,Semi-final,Semi-finals,,Sweden,Brazil,,,0,1,,,,,Brazil,Normal Time,Rose Bowl,Pasadena,0,0 +516,1994,United States,1994-07-16,Third-place match,Third-place match,,Sweden,Bulgaria,,,4,0,,,,,Sweden,Normal Time,Rose Bowl,Pasadena,0,0 +517,1994,United States,1994-07-17,Final,Final,,Brazil,Italy,,,0,0,0,0,3,2,Brazil,Penalties,Rose Bowl,Pasadena,0,0 +518,1998,France,1998-06-10,Group Stage,Matchday 1,Group A,Brazil,Scotland,,,2,1,,,,,Brazil,Normal Time,Stade de France,Saint-Denis,0,0 +519,1998,France,1998-06-10,Group Stage,Matchday 1,Group A,Morocco,Norway,,,2,2,,,,,Draw,Draw,Stade de la Mosson,Montpellier,0,0 +520,1998,France,1998-06-16,Group Stage,Matchday 2,Group A,Scotland,Norway,,,1,1,,,,,Draw,Draw,Parc Lescure,Bordeaux,0,0 +521,1998,France,1998-06-16,Group Stage,Matchday 2,Group A,Brazil,Morocco,,,3,0,,,,,Brazil,Normal Time,Stade de la Beaujoire,Nantes,0,0 +522,1998,France,1998-06-23,Group Stage,Matchday 3,Group A,Scotland,Morocco,,,0,3,,,,,Morocco,Normal Time,Stade Geoffroy-Guichard,Saint-Étienne,0,0 +523,1998,France,1998-06-23,Group Stage,Matchday 3,Group A,Brazil,Norway,,,1,2,,,,,Norway,Normal Time,Stade Vélodrome,Marseille,0,0 +524,1998,France,1998-06-11,Group Stage,Matchday 1,Group B,Cameroon,Austria,,,1,1,,,,,Draw,Draw,Stade de Toulouse,Toulouse,0,0 +525,1998,France,1998-06-11,Group Stage,Matchday 1,Group B,Italy,Chile,,,2,2,,,,,Draw,Draw,Parc Lescure,Bordeaux,0,0 +526,1998,France,1998-06-17,Group Stage,Matchday 2,Group B,Chile,Austria,,,1,1,,,,,Draw,Draw,Stade Geoffroy-Guichard,Saint-Étienne,0,0 +527,1998,France,1998-06-17,Group Stage,Matchday 2,Group B,Italy,Cameroon,,,3,0,,,,,Italy,Normal Time,Stade de la Mosson,Montpellier,0,0 +528,1998,France,1998-06-23,Group Stage,Matchday 3,Group B,Italy,Austria,,,2,1,,,,,Italy,Normal Time,Stade de France,Saint-Denis,0,0 +529,1998,France,1998-06-23,Group Stage,Matchday 3,Group B,Chile,Cameroon,,,1,1,,,,,Draw,Draw,Stade de la Beaujoire,Nantes,0,0 +530,1998,France,1998-06-12,Group Stage,Matchday 1,Group C,Saudi Arabia,Denmark,,,0,1,,,,,Denmark,Normal Time,Stade Félix Bollaert,Lens,0,0 +531,1998,France,1998-06-12,Group Stage,Matchday 1,Group C,France,South Africa,,,3,0,,,,,France,Normal Time,Stade Vélodrome,Marseille,0,0 +532,1998,France,1998-06-18,Group Stage,Matchday 2,Group C,France,Saudi Arabia,,,4,0,,,,,France,Normal Time,Stade de France,Saint-Denis,0,0 +533,1998,France,1998-06-18,Group Stage,Matchday 2,Group C,South Africa,Denmark,,,1,1,,,,,Draw,Draw,Stade de Toulouse,Toulouse,0,0 +534,1998,France,1998-06-24,Group Stage,Matchday 3,Group C,France,Denmark,,,2,1,,,,,France,Normal Time,Stade Gerland,Lyon,0,0 +535,1998,France,1998-06-24,Group Stage,Matchday 3,Group C,South Africa,Saudi Arabia,,,2,2,,,,,Draw,Draw,Parc Lescure,Bordeaux,0,0 +536,1998,France,1998-06-12,Group Stage,Matchday 1,Group D,Paraguay,Bulgaria,,,0,0,,,,,Draw,Draw,Stade de la Mosson,Montpellier,0,0 +537,1998,France,1998-06-13,Group Stage,Matchday 1,Group D,Spain,Nigeria,,,2,3,,,,,Nigeria,Normal Time,Stade de la Beaujoire,Nantes,0,0 +538,1998,France,1998-06-19,Group Stage,Matchday 2,Group D,Nigeria,Bulgaria,,,1,0,,,,,Nigeria,Normal Time,Parc des Princes,Paris,0,0 +539,1998,France,1998-06-19,Group Stage,Matchday 2,Group D,Spain,Paraguay,,,0,0,,,,,Draw,Draw,Stade Geoffroy-Guichard,Saint-Étienne,0,0 +540,1998,France,1998-06-24,Group Stage,Matchday 3,Group D,Spain,Bulgaria,,,6,1,,,,,Spain,Normal Time,Stade Félix Bollaert,Lens,0,0 +541,1998,France,1998-06-24,Group Stage,Matchday 3,Group D,Nigeria,Paraguay,,,1,3,,,,,Paraguay,Normal Time,Stade de Toulouse,Toulouse,0,0 +542,1998,France,1998-06-13,Group Stage,Matchday 1,Group E,Netherlands,Belgium,,,0,0,,,,,Draw,Draw,Stade de France,Saint-Denis,0,0 +543,1998,France,1998-06-13,Group Stage,Matchday 1,Group E,South Korea,Mexico,,,1,3,,,,,Mexico,Normal Time,Stade Gerland,Lyon,0,0 +544,1998,France,1998-06-20,Group Stage,Matchday 2,Group E,Netherlands,South Korea,,,5,0,,,,,Netherlands,Normal Time,Stade Vélodrome,Marseille,0,0 +545,1998,France,1998-06-20,Group Stage,Matchday 2,Group E,Belgium,Mexico,,,2,2,,,,,Draw,Draw,Parc Lescure,Bordeaux,0,0 +546,1998,France,1998-06-25,Group Stage,Matchday 3,Group E,Belgium,South Korea,,,1,1,,,,,Draw,Draw,Parc des Princes,Paris,0,0 +547,1998,France,1998-06-25,Group Stage,Matchday 3,Group E,Netherlands,Mexico,,,2,2,,,,,Draw,Draw,Stade Geoffroy-Guichard,Saint-Étienne,0,0 +548,1998,France,1998-06-14,Group Stage,Matchday 1,Group F,Yugoslavia,Iran,,,1,0,,,,,Yugoslavia,Normal Time,Stade Geoffroy-Guichard,Saint-Étienne,0,0 +549,1998,France,1998-06-15,Group Stage,Matchday 1,Group F,Germany,USA,,,2,0,,,,,Germany,Normal Time,Parc des Princes,Paris,0,0 +550,1998,France,1998-06-21,Group Stage,Matchday 2,Group F,Germany,Yugoslavia,,,2,2,,,,,Draw,Draw,Stade Félix Bollaert,Lens,0,0 +551,1998,France,1998-06-21,Group Stage,Matchday 2,Group F,USA,Iran,,,1,2,,,,,Iran,Normal Time,Stade Gerland,Lyon,0,0 +552,1998,France,1998-06-25,Group Stage,Matchday 3,Group F,Germany,Iran,,,2,0,,,,,Germany,Normal Time,Stade de la Mosson,Montpellier,0,0 +553,1998,France,1998-06-25,Group Stage,Matchday 3,Group F,USA,Yugoslavia,,,0,1,,,,,Yugoslavia,Normal Time,Stade de la Beaujoire,Nantes,0,0 +554,1998,France,1998-06-15,Group Stage,Matchday 1,Group G,Romania,Colombia,,,1,0,,,,,Romania,Normal Time,Stade Gerland,Lyon,0,0 +555,1998,France,1998-06-15,Group Stage,Matchday 1,Group G,England,Tunisia,,,2,0,,,,,England,Normal Time,Stade Vélodrome,Marseille,0,0 +556,1998,France,1998-06-22,Group Stage,Matchday 2,Group G,Colombia,Tunisia,,,1,0,,,,,Colombia,Normal Time,Stade de la Mosson,Montpellier,0,0 +557,1998,France,1998-06-22,Group Stage,Matchday 2,Group G,Romania,England,,,2,1,,,,,Romania,Normal Time,Stade de Toulouse,Toulouse,0,0 +558,1998,France,1998-06-26,Group Stage,Matchday 3,Group G,Romania,Tunisia,,,1,1,,,,,Draw,Draw,Stade de France,Saint-Denis,0,0 +559,1998,France,1998-06-26,Group Stage,Matchday 3,Group G,Colombia,England,,,0,2,,,,,England,Normal Time,Stade Félix Bollaert,Lens,0,0 +560,1998,France,1998-06-14,Group Stage,Matchday 1,Group H,Jamaica,Croatia,,,1,3,,,,,Croatia,Normal Time,Stade Félix Bollaert,Lens,0,0 +561,1998,France,1998-06-14,Group Stage,Matchday 1,Group H,Argentina,Japan,,,1,0,,,,,Argentina,Normal Time,Stade de Toulouse,Toulouse,0,0 +562,1998,France,1998-06-20,Group Stage,Matchday 2,Group H,Japan,Croatia,,,0,1,,,,,Croatia,Normal Time,Stade de la Beaujoire,Nantes,0,0 +563,1998,France,1998-06-21,Group Stage,Matchday 2,Group H,Argentina,Jamaica,,,5,0,,,,,Argentina,Normal Time,Parc des Princes,Paris,0,0 +564,1998,France,1998-06-26,Group Stage,Matchday 3,Group H,Japan,Jamaica,,,1,2,,,,,Jamaica,Normal Time,Stade Gerland,Lyon,0,0 +565,1998,France,1998-06-26,Group Stage,Matchday 3,Group H,Argentina,Croatia,,,1,0,,,,,Argentina,Normal Time,Parc Lescure,Bordeaux,0,0 +566,1998,France,1998-06-27,Round of 16,Round of 16,,Brazil,Chile,,,4,1,,,,,Brazil,Normal Time,Parc des Princes,Paris,0,0 +567,1998,France,1998-06-27,Round of 16,Round of 16,,Italy,Norway,,,1,0,,,,,Italy,Normal Time,Stade Vélodrome,Marseille,0,0 +568,1998,France,1998-06-28,Round of 16,Round of 16,,Nigeria,Denmark,,,1,4,,,,,Denmark,Normal Time,Stade de France,Saint-Denis,0,0 +569,1998,France,1998-06-28,Round of 16,Round of 16,,France,Paraguay,,,0,0,1,0,,,France,Extra Time,Stade Félix Bollaert,Lens,0,0 +570,1998,France,1998-06-29,Round of 16,Round of 16,,Germany,Mexico,,,2,1,,,,,Germany,Normal Time,Stade de la Mosson,Montpellier,0,0 +571,1998,France,1998-06-29,Round of 16,Round of 16,,Netherlands,Yugoslavia,,,2,1,,,,,Netherlands,Normal Time,Stade de Toulouse,Toulouse,0,0 +572,1998,France,1998-06-30,Round of 16,Round of 16,,Argentina,England,,,2,2,2,2,4,3,Argentina,Penalties,Stade Geoffroy-Guichard,Saint-Étienne,0,0 +573,1998,France,1998-06-30,Round of 16,Round of 16,,Romania,Croatia,,,0,1,,,,,Croatia,Normal Time,Parc Lescure,Bordeaux,0,0 +574,1998,France,1998-07-03,Quarter-final,Quarter-finals,,Italy,France,,,0,0,0,0,3,4,France,Penalties,Stade de France,Saint-Denis,0,0 +575,1998,France,1998-07-03,Quarter-final,Quarter-finals,,Brazil,Denmark,,,3,2,,,,,Brazil,Normal Time,Stade de la Beaujoire,Nantes,0,0 +576,1998,France,1998-07-04,Quarter-final,Quarter-finals,,Germany,Croatia,,,0,3,,,,,Croatia,Normal Time,Stade Gerland,Lyon,0,0 +577,1998,France,1998-07-04,Quarter-final,Quarter-finals,,Netherlands,Argentina,,,2,1,,,,,Netherlands,Normal Time,Stade Vélodrome,Marseille,0,0 +578,1998,France,1998-07-07,Semi-final,Semi-finals,,Brazil,Netherlands,,,1,1,1,1,4,2,Brazil,Penalties,Stade Vélodrome,Marseille,0,0 +579,1998,France,1998-07-08,Semi-final,Semi-finals,,France,Croatia,,,2,1,,,,,France,Normal Time,Stade de France,Saint-Denis,0,0 +580,1998,France,1998-07-11,Third Place Play-off,Third place match,,Netherlands,Croatia,,,1,2,,,,,Croatia,Normal Time,Parc des Princes,Paris,0,0 +581,1998,France,1998-07-12,Final,Final,,Brazil,France,,,0,3,,,,,France,Normal Time,Stade de France,Saint-Denis,0,0 +582,2002,South Korea / Japan,2002-05-31,Group Stage,Matchday 1,Group A,France,Senegal,,,0,1,,,,,Senegal,Normal Time,Seoul World Cup Stadium,Seoul,0,0 +583,2002,South Korea / Japan,2002-06-01,Group Stage,Matchday 1,Group A,Uruguay,Denmark,,,1,2,,,,,Denmark,Normal Time,Munsu Cup Stadium,Ulsan,0,0 +584,2002,South Korea / Japan,2002-06-06,Group Stage,Matchday 2,Group A,France,Uruguay,,,0,0,,,,,Draw,Draw,Asiad Main Stadium,Busan,0,0 +585,2002,South Korea / Japan,2002-06-06,Group Stage,Matchday 2,Group A,Denmark,Senegal,,,1,1,,,,,Draw,Draw,Daegu World Cup Stadium,Daegu,0,0 +586,2002,South Korea / Japan,2002-06-11,Group Stage,Matchday 3,Group A,Denmark,France,,,2,0,,,,,Denmark,Normal Time,Incheon Munhak Stadium,Incheon,0,0 +587,2002,South Korea / Japan,2002-06-11,Group Stage,Matchday 3,Group A,Senegal,Uruguay,,,3,3,,,,,Draw,Draw,Suwon World Cup Stadium,Suwon,0,0 +588,2002,South Korea / Japan,2002-06-02,Group Stage,Matchday 1,Group B,Paraguay,South Africa,,,2,2,,,,,Draw,Draw,Asiad Main Stadium,Busan,0,0 +589,2002,South Korea / Japan,2002-06-02,Group Stage,Matchday 1,Group B,Spain,Slovenia,,,3,1,,,,,Spain,Normal Time,Gwangju World Cup Stadium,Gwangju,0,0 +590,2002,South Korea / Japan,2002-06-07,Group Stage,Matchday 2,Group B,Spain,Paraguay,,,3,1,,,,,Spain,Normal Time,Jeonju World Cup Stadium,Jeonju,0,0 +591,2002,South Korea / Japan,2002-06-08,Group Stage,Matchday 2,Group B,South Africa,Slovenia,,,1,0,,,,,South Africa,Normal Time,Daegu World Cup Stadium,Daegu,0,0 +592,2002,South Korea / Japan,2002-06-12,Group Stage,Matchday 3,Group B,South Africa,Spain,,,2,3,,,,,Spain,Normal Time,Daejeon World Cup Stadium,Daejeon,0,0 +593,2002,South Korea / Japan,2002-06-12,Group Stage,Matchday 3,Group B,Slovenia,Paraguay,,,1,3,,,,,Paraguay,Normal Time,Jeju World Cup Stadium,Jeju,0,0 +594,2002,South Korea / Japan,2002-06-03,Group Stage,Matchday 1,Group C,Brazil,Turkey,,,2,1,,,,,Brazil,Normal Time,Munsu Cup Stadium,Ulsan,0,0 +595,2002,South Korea / Japan,2002-06-04,Group Stage,Matchday 1,Group C,China,Costa Rica,,,0,2,,,,,Costa Rica,Normal Time,Gwangju World Cup Stadium,Gwangju,0,0 +596,2002,South Korea / Japan,2002-06-08,Group Stage,Matchday 2,Group C,Brazil,China,,,4,0,,,,,Brazil,Normal Time,Jeju World Cup Stadium,Jeju,0,0 +597,2002,South Korea / Japan,2002-06-09,Group Stage,Matchday 2,Group C,Costa Rica,Turkey,,,1,1,,,,,Draw,Draw,Incheon Munhak Stadium,Incheon,0,0 +598,2002,South Korea / Japan,2002-06-13,Group Stage,Matchday 3,Group C,Costa Rica,Brazil,,,2,5,,,,,Brazil,Normal Time,Suwon World Cup Stadium,Suwon,0,0 +599,2002,South Korea / Japan,2002-06-13,Group Stage,Matchday 3,Group C,Turkey,China,,,3,0,,,,,Turkey,Normal Time,Seoul World Cup Stadium,Seoul,0,0 +600,2002,South Korea / Japan,2002-06-04,Group Stage,Matchday 1,Group D,South Korea,Poland,,,2,0,,,,,South Korea,Normal Time,Asiad Main Stadium,Busan,0,0 +601,2002,South Korea / Japan,2002-06-05,Group Stage,Matchday 1,Group D,USA,Portugal,,,3,2,,,,,USA,Normal Time,Suwon World Cup Stadium,Suwon,0,0 +602,2002,South Korea / Japan,2002-06-10,Group Stage,Matchday 2,Group D,South Korea,USA,,,1,1,,,,,Draw,Draw,Daegu World Cup Stadium,Daegu,0,0 +603,2002,South Korea / Japan,2002-06-10,Group Stage,Matchday 2,Group D,Portugal,Poland,,,4,0,,,,,Portugal,Normal Time,Jeonju World Cup Stadium,Jeonju,0,0 +604,2002,South Korea / Japan,2002-06-14,Group Stage,Matchday 3,Group D,Portugal,South Korea,,,0,1,,,,,South Korea,Normal Time,Incheon Munhak Stadium,Incheon,0,0 +605,2002,South Korea / Japan,2002-06-14,Group Stage,Matchday 3,Group D,Poland,USA,,,3,1,,,,,Poland,Normal Time,Daejeon World Cup Stadium,Daejeon,0,0 +606,2002,South Korea / Japan,2002-06-01,Group Stage,Matchday 1,Group E,Ireland,Cameroon,,,1,1,,,,,Draw,Draw,Niigata Stadium,Niigata,0,0 +607,2002,South Korea / Japan,2002-06-01,Group Stage,Matchday 1,Group E,Germany,Saudi Arabia,,,8,0,,,,,Germany,Normal Time,Sapporo Dome,Sapporo,0,0 +608,2002,South Korea / Japan,2002-06-05,Group Stage,Matchday 1,Group E,Germany,Ireland,,,1,1,,,,,Draw,Draw,Kashima Soccer Stadium,Ibaraki,0,0 +609,2002,South Korea / Japan,2002-06-06,Group Stage,Matchday 2,Group E,Cameroon,Saudi Arabia,,,1,0,,,,,Cameroon,Normal Time,Saitama Stadium,Saitama,0,0 +610,2002,South Korea / Japan,2002-06-11,Group Stage,Matchday 3,Group E,Cameroon,Germany,,,0,2,,,,,Germany,Normal Time,Shizuoka Stadium,Shizuoka,0,0 +611,2002,South Korea / Japan,2002-06-11,Group Stage,Matchday 3,Group E,Saudi Arabia,Ireland,,,0,3,,,,,Ireland,Normal Time,International Stadium Yokohama,Yokohama,0,0 +612,2002,South Korea / Japan,2002-06-02,Group Stage,Matchday 1,Group F,England,Sweden,,,1,1,,,,,Draw,Draw,Saitama Stadium,Saitama,0,0 +613,2002,South Korea / Japan,2002-06-02,Group Stage,Matchday 1,Group F,Argentina,Nigeria,,,1,0,,,,,Argentina,Normal Time,Kashima Soccer Stadium,Ibaraki,0,0 +614,2002,South Korea / Japan,2002-06-07,Group Stage,Matchday 2,Group F,Sweden,Nigeria,,,2,1,,,,,Sweden,Normal Time,Kobe Wing Stadium,Kobe,0,0 +615,2002,South Korea / Japan,2002-06-07,Group Stage,Matchday 2,Group F,Argentina,England,,,0,1,,,,,England,Normal Time,Sapporo Dome,Sapporo,0,0 +616,2002,South Korea / Japan,2002-06-12,Group Stage,Matchday 3,Group F,Sweden,Argentina,,,1,1,,,,,Draw,Draw,Miyagi Stadium,Miyagi,0,0 +617,2002,South Korea / Japan,2002-06-12,Group Stage,Matchday 3,Group F,Nigeria,England,,,0,0,,,,,Draw,Draw,Nagai Stadium,Osaka,0,0 +618,2002,South Korea / Japan,2002-06-03,Group Stage,Matchday 1,Group G,Croatia,Mexico,,,0,1,,,,,Mexico,Normal Time,Niigata Stadium,Niigata,0,0 +619,2002,South Korea / Japan,2002-06-03,Group Stage,Matchday 1,Group G,Italy,Ecuador,,,2,0,,,,,Italy,Normal Time,Sapporo Dome,Sapporo,0,0 +620,2002,South Korea / Japan,2002-06-08,Group Stage,Matchday 2,Group G,Italy,Croatia,,,1,2,,,,,Croatia,Normal Time,Kashima Soccer Stadium,Ibaraki,0,0 +621,2002,South Korea / Japan,2002-06-09,Group Stage,Matchday 2,Group G,Mexico,Ecuador,,,2,1,,,,,Mexico,Normal Time,Miyagi Stadium,Miyagi,0,0 +622,2002,South Korea / Japan,2002-06-13,Group Stage,Matchday 3,Group G,Mexico,Italy,,,1,1,,,,,Draw,Draw,Ōita Stadium,Ōita,0,0 +623,2002,South Korea / Japan,2002-06-13,Group Stage,Matchday 3,Group G,Ecuador,Croatia,,,1,0,,,,,Ecuador,Normal Time,International Stadium Yokohama,Yokohama,0,0 +624,2002,South Korea / Japan,2002-06-04,Group Stage,Matchday 1,Group H,Japan,Belgium,,,2,2,,,,,Draw,Draw,Saitama Stadium,Saitama,0,0 +625,2002,South Korea / Japan,2002-06-05,Group Stage,Matchday 1,Group H,Russia,Tunisia,,,2,0,,,,,Russia,Normal Time,Kobe Wing Stadium,Kobe,0,0 +626,2002,South Korea / Japan,2002-06-09,Group Stage,Matchday 2,Group H,Japan,Russia,,,1,0,,,,,Japan,Normal Time,International Stadium Yokohama,Yokohama,0,0 +627,2002,South Korea / Japan,2002-06-10,Group Stage,Matchday 2,Group H,Tunisia,Belgium,,,1,1,,,,,Draw,Draw,Ōita Stadium,Ōita,0,0 +628,2002,South Korea / Japan,2002-06-14,Group Stage,Matchday 3,Group H,Tunisia,Japan,,,0,2,,,,,Japan,Normal Time,Nagai Stadium,Osaka,0,0 +629,2002,South Korea / Japan,2002-06-14,Group Stage,Matchday 3,Group H,Belgium,Russia,,,3,2,,,,,Belgium,Normal Time,Shizuoka Stadium,Shizuoka,0,0 +630,2002,South Korea / Japan,2002-06-15,Round of 16,Round of 16,,Germany,Paraguay,,,1,0,,,,,Germany,Normal Time,Jeju World Cup Stadium,Jeju,0,0 +631,2002,South Korea / Japan,2002-06-15,Round of 16,Round of 16,,Denmark,England,,,0,3,,,,,England,Normal Time,Niigata Stadium,Niigata,0,0 +632,2002,South Korea / Japan,2002-06-16,Round of 16,Round of 16,,Sweden,Senegal,,,1,1,1,2,,,Senegal,Extra Time,Ōita Stadium,Ōita,0,0 +633,2002,South Korea / Japan,2002-06-16,Round of 16,Round of 16,,Spain,Ireland,,,1,1,1,1,3,2,Spain,Penalties,Suwon World Cup Stadium,Suwon,0,0 +634,2002,South Korea / Japan,2002-06-17,Round of 16,Round of 16,,Mexico,USA,,,0,2,,,,,USA,Normal Time,Jeonju World Cup Stadium,Jeonju,0,0 +635,2002,South Korea / Japan,2002-06-17,Round of 16,Round of 16,,Brazil,Belgium,,,2,0,,,,,Brazil,Normal Time,Kobe Wing Stadium,Kobe,0,0 +636,2002,South Korea / Japan,2002-06-18,Round of 16,Round of 16,,Japan,Turkey,,,0,1,,,,,Turkey,Normal Time,Miyagi Stadium,Miyagi,0,0 +637,2002,South Korea / Japan,2002-06-18,Round of 16,Round of 16,,South Korea,Italy,,,1,1,2,1,,,South Korea,Extra Time,Daejeon World Cup Stadium,Daejeon,0,0 +638,2002,South Korea / Japan,2002-06-21,Quarter-final,Quarter-finals,,England,Brazil,,,1,2,,,,,Brazil,Normal Time,Shizuoka Stadium,Shizuoka,0,0 +639,2002,South Korea / Japan,2002-06-21,Quarter-final,Quarter-finals,,Germany,USA,,,1,0,,,,,Germany,Normal Time,Munsu Cup Stadium,Ulsan,0,0 +640,2002,South Korea / Japan,2002-06-22,Quarter-final,Quarter-finals,,Spain,South Korea,,,0,0,0,0,3,5,South Korea,Penalties,Gwangju World Cup Stadium,Gwangju,0,0 +641,2002,South Korea / Japan,2002-06-22,Quarter-final,Quarter-finals,,Senegal,Turkey,,,0,0,0,1,,,Turkey,Extra Time,Nagai Stadium,Osaka,0,0 +642,2002,South Korea / Japan,2002-06-25,Semi-final,Semi-finals,,Germany,South Korea,,,1,0,,,,,Germany,Normal Time,Seoul World Cup Stadium,Seoul,0,0 +643,2002,South Korea / Japan,2002-06-26,Semi-final,Semi-finals,,Brazil,Turkey,,,1,0,,,,,Brazil,Normal Time,Saitama Stadium,Saitama,0,0 +644,2002,South Korea / Japan,2002-06-29,Third Place Play-off,Third place play-off,,South Korea,Turkey,,,2,3,,,,,Turkey,Normal Time,Daegu World Cup Stadium,Daegu,0,0 +645,2002,South Korea / Japan,2002-06-30,Final,Final,,Germany,Brazil,,,0,2,,,,,Brazil,Normal Time,International Stadium Yokohama,Yokohama,0,0 +646,2006,Germany,2006-06-09,Group Stage,Matchday 1,Group A,Germany,Costa Rica,2,1,4,2,,,,,Germany,Normal Time,Allianz Arena,München,0,0 +647,2006,Germany,2006-06-09,Group Stage,Matchday 1,Group A,Poland,Ecuador,0,1,0,2,,,,,Ecuador,Normal Time,Veltins-Arena,Gelsenkirchen,0,0 +648,2006,Germany,2006-06-14,Group Stage,Matchday 6,Group A,Germany,Poland,0,0,1,0,,,,,Germany,Normal Time,Signal Iduna Park,Dortmund,0,0 +649,2006,Germany,2006-06-15,Group Stage,Matchday 7,Group A,Ecuador,Costa Rica,1,0,3,0,,,,,Ecuador,Normal Time,AOL Arena,Hamburg,0,0 +650,2006,Germany,2006-06-20,Group Stage,Matchday 12,Group A,Ecuador,Germany,0,2,0,3,,,,,Germany,Normal Time,Olympiastadion,Berlin,0,0 +651,2006,Germany,2006-06-20,Group Stage,Matchday 12,Group A,Costa Rica,Poland,1,1,1,2,,,,,Poland,Normal Time,AWD-Arena,Hannover,0,0 +652,2006,Germany,2006-06-10,Group Stage,Matchday 2,Group B,England,Paraguay,1,0,1,0,,,,,England,Normal Time,Commerzbank-Arena,Frankfurt,0,0 +653,2006,Germany,2006-06-10,Group Stage,Matchday 2,Group B,Trinidad and Tobago,Sweden,,,0,0,,,,,Draw,Draw,Signal Iduna Park,Dortmund,0,0 +654,2006,Germany,2006-06-15,Group Stage,Matchday 7,Group B,England,Trinidad and Tobago,0,0,2,0,,,,,England,Normal Time,Frankenstadion,Nürnberg,0,0 +655,2006,Germany,2006-06-15,Group Stage,Matchday 7,Group B,Sweden,Paraguay,0,0,1,0,,,,,Sweden,Normal Time,Olympiastadion,Berlin,0,0 +656,2006,Germany,2006-06-20,Group Stage,Matchday 12,Group B,Sweden,England,0,1,2,2,,,,,Draw,Draw,RheinEnergieStadion,Köln,0,0 +657,2006,Germany,2006-06-20,Group Stage,Matchday 12,Group B,Paraguay,Trinidad and Tobago,1,0,2,0,,,,,Paraguay,Normal Time,Fritz-Walter-Stadion,Kaiserslautern,0,0 +658,2006,Germany,2006-06-10,Group Stage,Matchday 2,Group C,Argentina,Côte d'Ivoire,2,0,2,1,,,,,Argentina,Normal Time,AOL Arena,Hamburg,0,0 +659,2006,Germany,2006-06-11,Group Stage,Matchday 3,Group C,Serbia and Montenegro,Netherlands,0,1,0,1,,,,,Netherlands,Normal Time,Zentralstadion,Leipzig,0,0 +660,2006,Germany,2006-06-16,Group Stage,Matchday 8,Group C,Argentina,Serbia and Montenegro,3,0,6,0,,,,,Argentina,Normal Time,Veltins-Arena,Gelsenkirchen,0,0 +661,2006,Germany,2006-06-16,Group Stage,Matchday 8,Group C,Netherlands,Côte d'Ivoire,2,1,2,1,,,,,Netherlands,Normal Time,Gottlieb-Daimler-Stadion,Stuttgart,0,0 +662,2006,Germany,2006-06-21,Group Stage,Matchday 13,Group C,Netherlands,Argentina,,,0,0,,,,,Draw,Draw,Commerzbank-Arena,Frankfurt,0,0 +663,2006,Germany,2006-06-21,Group Stage,Matchday 13,Group C,Côte d'Ivoire,Serbia and Montenegro,1,2,3,2,,,,,Côte d'Ivoire,Normal Time,Allianz Arena,München,0,0 +664,2006,Germany,2006-06-11,Group Stage,Matchday 3,Group D,Mexico,Iran,1,1,3,1,,,,,Mexico,Normal Time,Frankenstadion,Nürnberg,0,0 +665,2006,Germany,2006-06-11,Group Stage,Matchday 3,Group D,Angola,Portugal,0,1,0,1,,,,,Portugal,Normal Time,RheinEnergieStadion,Köln,0,0 +666,2006,Germany,2006-06-16,Group Stage,Matchday 8,Group D,Mexico,Angola,,,0,0,,,,,Draw,Draw,AWD-Arena,Hannover,0,0 +667,2006,Germany,2006-06-17,Group Stage,Matchday 9,Group D,Portugal,Iran,0,0,2,0,,,,,Portugal,Normal Time,Commerzbank-Arena,Frankfurt,0,0 +668,2006,Germany,2006-06-21,Group Stage,Matchday 13,Group D,Portugal,Mexico,2,1,2,1,,,,,Portugal,Normal Time,Veltins-Arena,Gelsenkirchen,0,0 +669,2006,Germany,2006-06-21,Group Stage,Matchday 13,Group D,Iran,Angola,0,0,1,1,,,,,Draw,Draw,Zentralstadion,Leipzig,0,0 +670,2006,Germany,2006-06-12,Group Stage,Matchday 4,Group E,Italy,Ghana,1,0,2,0,,,,,Italy,Normal Time,AWD-Arena,Hannover,0,0 +671,2006,Germany,2006-06-12,Group Stage,Matchday 4,Group E,USA,Czech Republic,0,2,0,3,,,,,Czech Republic,Normal Time,Veltins-Arena,Gelsenkirchen,0,0 +672,2006,Germany,2006-06-17,Group Stage,Matchday 9,Group E,Italy,USA,1,1,1,1,,,,,Draw,Draw,Fritz-Walter-Stadion,Kaiserslautern,0,0 +673,2006,Germany,2006-06-17,Group Stage,Matchday 9,Group E,Czech Republic,Ghana,0,1,0,2,,,,,Ghana,Normal Time,RheinEnergieStadion,Köln,0,0 +674,2006,Germany,2006-06-22,Group Stage,Matchday 14,Group E,Czech Republic,Italy,0,1,0,2,,,,,Italy,Normal Time,AOL Arena,Hamburg,0,0 +675,2006,Germany,2006-06-22,Group Stage,Matchday 14,Group E,Ghana,USA,2,1,2,1,,,,,Ghana,Normal Time,Frankenstadion,Nürnberg,0,0 +676,2006,Germany,2006-06-13,Group Stage,Matchday 5,Group F,Brazil,Croatia,1,0,1,0,,,,,Brazil,Normal Time,Olympiastadion,Berlin,0,0 +677,2006,Germany,2006-06-12,Group Stage,Matchday 4,Group F,Australia,Japan,0,1,3,1,,,,,Australia,Normal Time,Fritz-Walter-Stadion,Kaiserslautern,0,0 +678,2006,Germany,2006-06-18,Group Stage,Matchday 10,Group F,Brazil,Australia,0,0,2,0,,,,,Brazil,Normal Time,Allianz Arena,München,0,0 +679,2006,Germany,2006-06-18,Group Stage,Matchday 10,Group F,Japan,Croatia,,,0,0,,,,,Draw,Draw,Frankenstadion,Nürnberg,0,0 +680,2006,Germany,2006-06-22,Group Stage,Matchday 14,Group F,Japan,Brazil,1,1,1,4,,,,,Brazil,Normal Time,Signal Iduna Park,Dortmund,0,0 +681,2006,Germany,2006-06-22,Group Stage,Matchday 14,Group F,Croatia,Australia,1,1,2,2,,,,,Draw,Draw,Gottlieb-Daimler-Stadion,Stuttgart,0,0 +682,2006,Germany,2006-06-13,Group Stage,Matchday 5,Group G,France,Switzerland,,,0,0,,,,,Draw,Draw,Gottlieb-Daimler-Stadion,Stuttgart,0,0 +683,2006,Germany,2006-06-13,Group Stage,Matchday 5,Group G,South Korea,Togo,0,1,2,1,,,,,South Korea,Normal Time,Commerzbank-Arena,Frankfurt,0,0 +684,2006,Germany,2006-06-18,Group Stage,Matchday 10,Group G,France,South Korea,1,0,1,1,,,,,Draw,Draw,Zentralstadion,Leipzig,0,0 +685,2006,Germany,2006-06-19,Group Stage,Matchday 11,Group G,Togo,Switzerland,0,1,0,2,,,,,Switzerland,Normal Time,Signal Iduna Park,Dortmund,0,0 +686,2006,Germany,2006-06-23,Group Stage,Matchday 15,Group G,Togo,France,0,0,0,2,,,,,France,Normal Time,RheinEnergieStadion,Köln,0,0 +687,2006,Germany,2006-06-23,Group Stage,Matchday 15,Group G,Switzerland,South Korea,1,0,2,0,,,,,Switzerland,Normal Time,AWD-Arena,Hannover,0,0 +688,2006,Germany,2006-06-14,Group Stage,Matchday 6,Group H,Spain,Ukraine,2,0,4,0,,,,,Spain,Normal Time,Zentralstadion,Leipzig,0,0 +689,2006,Germany,2006-06-14,Group Stage,Matchday 6,Group H,Tunisia,Saudi Arabia,1,0,2,2,,,,,Draw,Draw,Allianz Arena,München,0,0 +690,2006,Germany,2006-06-19,Group Stage,Matchday 11,Group H,Spain,Tunisia,0,1,3,1,,,,,Spain,Normal Time,Gottlieb-Daimler-Stadion,Stuttgart,0,0 +691,2006,Germany,2006-06-19,Group Stage,Matchday 11,Group H,Saudi Arabia,Ukraine,0,2,0,4,,,,,Ukraine,Normal Time,AOL Arena,Hamburg,0,0 +692,2006,Germany,2006-06-23,Group Stage,Matchday 15,Group H,Saudi Arabia,Spain,0,1,0,1,,,,,Spain,Normal Time,Fritz-Walter-Stadion,Kaiserslautern,0,0 +693,2006,Germany,2006-06-23,Group Stage,Matchday 15,Group H,Ukraine,Tunisia,0,0,1,0,,,,,Ukraine,Normal Time,Olympiastadion,Berlin,0,0 +694,2006,Germany,2006-06-24,Round of 16,Round of 16,,Germany,Sweden,2,0,2,0,,,,,Germany,Normal Time,Allianz Arena,München,0,0 +695,2006,Germany,2006-06-24,Round of 16,Round of 16,,Argentina,Mexico,1,1,1,1,2,1,,,Argentina,Extra Time,Zentralstadion,Leipzig,0,0 +696,2006,Germany,2006-06-25,Round of 16,Round of 16,,England,Ecuador,0,0,1,0,,,,,England,Normal Time,Gottlieb-Daimler-Stadion,Stuttgart,0,0 +697,2006,Germany,2006-06-25,Round of 16,Round of 16,,Portugal,Netherlands,1,0,1,0,,,,,Portugal,Normal Time,Frankenstadion,Nürnberg,0,0 +698,2006,Germany,2006-06-26,Round of 16,Round of 16,,Italy,Australia,0,0,1,0,,,,,Italy,Normal Time,Fritz-Walter-Stadion,Kaiserslautern,0,0 +699,2006,Germany,2006-06-26,Round of 16,Round of 16,,Switzerland,Ukraine,,,0,0,0,0,0,3,Ukraine,Penalties,RheinEnergieStadion,Köln,0,0 +700,2006,Germany,2006-06-27,Round of 16,Round of 16,,Brazil,Ghana,2,0,3,0,,,,,Brazil,Normal Time,Signal Iduna Park,Dortmund,0,0 +701,2006,Germany,2006-06-27,Round of 16,Round of 16,,Spain,France,1,1,1,3,,,,,France,Normal Time,AWD-Arena,Hannover,0,0 +702,2006,Germany,2006-06-30,Quarter-final,Quarterfinals,,Germany,Argentina,0,0,1,1,1,1,4,2,Germany,Penalties,Olympiastadion,Berlin,0,0 +703,2006,Germany,2006-06-30,Quarter-final,Quarterfinals,,Italy,Ukraine,1,0,3,0,,,,,Italy,Normal Time,AOL Arena,Hamburg,0,0 +704,2006,Germany,2006-07-01,Quarter-final,Quarterfinals,,England,Portugal,,,0,0,0,0,1,3,Portugal,Penalties,Veltins-Arena,Gelsenkirchen,0,0 +705,2006,Germany,2006-07-01,Quarter-final,Quarterfinals,,Brazil,France,0,0,0,1,,,,,France,Normal Time,Commerzbank-Arena,Frankfurt,0,0 +706,2006,Germany,2006-07-04,Semi-final,Semifinals,,Germany,Italy,,,0,0,0,2,,,Italy,Extra Time,Signal Iduna Park,Dortmund,0,2 +707,2006,Germany,2006-07-05,Semi-final,Semifinals,,Portugal,France,0,1,0,1,,,,,France,Normal Time,Allianz Arena,München,0,1 +708,2006,Germany,2006-07-08,Third-place play-off,Third-place play-off,,Germany,Portugal,0,0,3,1,,,,,Germany,Normal Time,Gottlieb-Daimler-Stadion,Stuttgart,2,1 +709,2006,Germany,2006-07-09,Final,Final,,Italy,France,1,1,1,1,1,1,5,3,Italy,Penalties,Olympiastadion,Berlin,1,1 +710,2010,South Africa,2010-06-11,Group Stage,Matchday 1,Group A,South Africa,Mexico,,,1,1,,,,,Draw,Draw,Soccer City,Johannesburg,0,0 +711,2010,South Africa,2010-06-11,Group Stage,Matchday 1,Group A,Uruguay,France,,,0,0,,,,,Draw,Draw,Cape Town Stadium,Cape Town,0,0 +712,2010,South Africa,2010-06-16,Group Stage,Matchday 6,Group A,South Africa,Uruguay,,,0,3,,,,,Uruguay,Normal Time,Loftus Versfeld Stadium,Pretoria,0,0 +713,2010,South Africa,2010-06-17,Group Stage,Matchday 7,Group A,France,Mexico,,,0,2,,,,,Mexico,Normal Time,Peter Mokaba Stadium,Polokwane,0,0 +714,2010,South Africa,2010-06-22,Group Stage,Matchday 12,Group A,Mexico,Uruguay,,,0,1,,,,,Uruguay,Normal Time,Royal Bafokeng Stadium,Rustenburg,0,0 +715,2010,South Africa,2010-06-22,Group Stage,Matchday 12,Group A,France,South Africa,,,1,2,,,,,South Africa,Normal Time,Free State Stadium,Bloemfontein,0,0 +716,2010,South Africa,2010-06-12,Group Stage,Matchday 2,Group B,South Korea,Greece,,,2,0,,,,,South Korea,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +717,2010,South Africa,2010-06-12,Group Stage,Matchday 2,Group B,Argentina,Nigeria,,,1,0,,,,,Argentina,Normal Time,Ellis Park Stadium,Johannesburg,0,0 +718,2010,South Africa,2010-06-17,Group Stage,Matchday 7,Group B,Argentina,South Korea,,,4,1,,,,,Argentina,Normal Time,Soccer City,Johannesburg,0,0 +719,2010,South Africa,2010-06-17,Group Stage,Matchday 7,Group B,Greece,Nigeria,,,2,1,,,,,Greece,Normal Time,Free State Stadium,Bloemfontein,0,0 +720,2010,South Africa,2010-06-22,Group Stage,Matchday 12,Group B,Nigeria,South Korea,,,2,2,,,,,Draw,Draw,Moses Mabhida Stadium,Durban,0,0 +721,2010,South Africa,2010-06-22,Group Stage,Matchday 12,Group B,Greece,Argentina,,,0,2,,,,,Argentina,Normal Time,Peter Mokaba Stadium,Polokwane,0,0 +722,2010,South Africa,2010-06-12,Group Stage,Matchday 2,Group C,England,USA,,,1,1,,,,,Draw,Draw,Royal Bafokeng Stadium,Rustenburg,0,0 +723,2010,South Africa,2010-06-13,Group Stage,Matchday 3,Group C,Algeria,Slovenia,,,0,1,,,,,Slovenia,Normal Time,Peter Mokaba Stadium,Polokwane,0,0 +724,2010,South Africa,2010-06-18,Group Stage,Matchday 8,Group C,Slovenia,USA,,,2,2,,,,,Draw,Draw,Ellis Park Stadium,Johannesburg,0,0 +725,2010,South Africa,2010-06-18,Group Stage,Matchday 8,Group C,England,Algeria,,,0,0,,,,,Draw,Draw,Cape Town Stadium,Cape Town,0,0 +726,2010,South Africa,2010-06-23,Group Stage,Matchday 13,Group C,USA,Algeria,,,1,0,,,,,USA,Normal Time,Loftus Versfeld Stadium,Pretoria,0,0 +727,2010,South Africa,2010-06-23,Group Stage,Matchday 13,Group C,Slovenia,England,,,0,1,,,,,England,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +728,2010,South Africa,2010-06-13,Group Stage,Matchday 3,Group D,Serbia,Ghana,,,0,1,,,,,Ghana,Normal Time,Loftus Versfeld Stadium,Pretoria,0,0 +729,2010,South Africa,2010-06-13,Group Stage,Matchday 3,Group D,Germany,Australia,,,4,0,,,,,Germany,Normal Time,Moses Mabhida Stadium,Durban,0,0 +730,2010,South Africa,2010-06-18,Group Stage,Matchday 8,Group D,Germany,Serbia,,,0,1,,,,,Serbia,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +731,2010,South Africa,2010-06-19,Group Stage,Matchday 9,Group D,Ghana,Australia,,,1,1,,,,,Draw,Draw,Royal Bafokeng Stadium,Rustenburg,0,0 +732,2010,South Africa,2010-06-23,Group Stage,Matchday 13,Group D,Australia,Serbia,,,2,1,,,,,Australia,Normal Time,Mbombela Stadium,Nelspruit,0,0 +733,2010,South Africa,2010-06-23,Group Stage,Matchday 13,Group D,Ghana,Germany,,,0,1,,,,,Germany,Normal Time,Soccer City,Johannesburg,0,0 +734,2010,South Africa,2010-06-14,Group Stage,Matchday 4,Group E,Netherlands,Denmark,,,2,0,,,,,Netherlands,Normal Time,Soccer City,Johannesburg,0,0 +735,2010,South Africa,2010-06-14,Group Stage,Matchday 4,Group E,Japan,Cameroon,,,1,0,,,,,Japan,Normal Time,Free State Stadium,Bloemfontein,0,0 +736,2010,South Africa,2010-06-19,Group Stage,Matchday 9,Group E,Netherlands,Japan,,,1,0,,,,,Netherlands,Normal Time,Moses Mabhida Stadium,Durban,0,0 +737,2010,South Africa,2010-06-19,Group Stage,Matchday 9,Group E,Cameroon,Denmark,,,1,2,,,,,Denmark,Normal Time,Loftus Versfeld Stadium,Pretoria,0,0 +738,2010,South Africa,2010-06-24,Group Stage,Matchday 14,Group E,Denmark,Japan,,,1,3,,,,,Japan,Normal Time,Royal Bafokeng Stadium,Rustenburg,0,0 +739,2010,South Africa,2010-06-24,Group Stage,Matchday 14,Group E,Cameroon,Netherlands,,,1,2,,,,,Netherlands,Normal Time,Cape Town Stadium,Cape Town,0,0 +740,2010,South Africa,2010-06-14,Group Stage,Matchday 4,Group F,Italy,Paraguay,,,1,1,,,,,Draw,Draw,Cape Town Stadium,Cape Town,0,0 +741,2010,South Africa,2010-06-15,Group Stage,Matchday 5,Group F,New Zealand,Slovakia,,,1,1,,,,,Draw,Draw,Royal Bafokeng Stadium,Rustenburg,0,0 +742,2010,South Africa,2010-06-20,Group Stage,Matchday 10,Group F,Slovakia,Paraguay,,,0,2,,,,,Paraguay,Normal Time,Free State Stadium,Bloemfontein,0,0 +743,2010,South Africa,2010-06-20,Group Stage,Matchday 10,Group F,Italy,New Zealand,,,1,1,,,,,Draw,Draw,Mbombela Stadium,Nelspruit,0,0 +744,2010,South Africa,2010-06-24,Group Stage,Matchday 14,Group F,Slovakia,Italy,,,3,2,,,,,Slovakia,Normal Time,Ellis Park Stadium,Johannesburg,0,0 +745,2010,South Africa,2010-06-24,Group Stage,Matchday 14,Group F,Paraguay,New Zealand,,,0,0,,,,,Draw,Draw,Peter Mokaba Stadium,Polokwane,0,0 +746,2010,South Africa,2010-06-15,Group Stage,Matchday 5,Group G,Côte d'Ivoire,Portugal,,,0,0,,,,,Draw,Draw,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +747,2010,South Africa,2010-06-15,Group Stage,Matchday 5,Group G,Brazil,North Korea,,,2,1,,,,,Brazil,Normal Time,Ellis Park Stadium,Johannesburg,0,0 +748,2010,South Africa,2010-06-20,Group Stage,Matchday 10,Group G,Brazil,Côte d'Ivoire,,,3,1,,,,,Brazil,Normal Time,Soccer City,Johannesburg,0,0 +749,2010,South Africa,2010-06-21,Group Stage,Matchday 11,Group G,Portugal,North Korea,,,7,0,,,,,Portugal,Normal Time,Cape Town Stadium,Cape Town,0,0 +750,2010,South Africa,2010-06-25,Group Stage,Matchday 15,Group G,Portugal,Brazil,,,0,0,,,,,Draw,Draw,Moses Mabhida Stadium,Durban,0,0 +751,2010,South Africa,2010-06-25,Group Stage,Matchday 15,Group G,North Korea,Côte d'Ivoire,,,0,3,,,,,Côte d'Ivoire,Normal Time,Mbombela Stadium,Nelspruit,0,0 +752,2010,South Africa,2010-06-16,Group Stage,Matchday 6,Group H,Honduras,Chile,,,0,1,,,,,Chile,Normal Time,Mbombela Stadium,Nelspruit,0,0 +753,2010,South Africa,2010-06-16,Group Stage,Matchday 6,Group H,Spain,Switzerland,,,0,1,,,,,Switzerland,Normal Time,Moses Mabhida Stadium,Durban,0,0 +754,2010,South Africa,2010-06-21,Group Stage,Matchday 11,Group H,Chile,Switzerland,,,1,0,,,,,Chile,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +755,2010,South Africa,2010-06-21,Group Stage,Matchday 11,Group H,Spain,Honduras,,,2,0,,,,,Spain,Normal Time,Ellis Park Stadium,Johannesburg,0,0 +756,2010,South Africa,2010-06-25,Group Stage,Matchday 15,Group H,Chile,Spain,,,1,2,,,,,Spain,Normal Time,Loftus Versfeld Stadium,Pretoria,0,0 +757,2010,South Africa,2010-06-25,Group Stage,Matchday 15,Group H,Switzerland,Honduras,,,0,0,,,,,Draw,Draw,Free State Stadium,Bloemfontein,0,0 +758,2010,South Africa,2010-06-26,Round of 16,Round of 16,,Uruguay,South Korea,,,2,1,,,,,Uruguay,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +759,2010,South Africa,2010-06-26,Round of 16,Round of 16,,USA,Ghana,,,1,1,1,2,,,Ghana,Extra Time,Royal Bafokeng Stadium,Rustenburg,0,0 +760,2010,South Africa,2010-06-27,Round of 16,Round of 16,,Germany,England,,,4,1,,,,,Germany,Normal Time,Free State Stadium,Bloemfontein,0,0 +761,2010,South Africa,2010-06-27,Round of 16,Round of 16,,Argentina,Mexico,,,3,1,,,,,Argentina,Normal Time,Soccer City,Johannesburg,0,0 +762,2010,South Africa,2010-06-28,Round of 16,Round of 16,,Netherlands,Slovakia,,,2,1,,,,,Netherlands,Normal Time,Moses Mabhida Stadium,Durban,0,0 +763,2010,South Africa,2010-06-28,Round of 16,Round of 16,,Brazil,Chile,,,3,0,,,,,Brazil,Normal Time,Ellis Park Stadium,Johannesburg,0,0 +764,2010,South Africa,2010-06-29,Round of 16,Round of 16,,Paraguay,Japan,,,0,0,0,0,5,3,Paraguay,Penalties,Loftus Versfeld Stadium,Pretoria,0,0 +765,2010,South Africa,2010-06-29,Round of 16,Round of 16,,Spain,Portugal,,,1,0,,,,,Spain,Normal Time,Cape Town Stadium,Cape Town,0,0 +766,2010,South Africa,2010-07-02,Quarter-final,Quarterfinals,,Netherlands,Brazil,,,2,1,,,,,Netherlands,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +767,2010,South Africa,2010-07-02,Quarter-final,Quarterfinals,,Uruguay,Ghana,,,1,1,1,1,4,2,Uruguay,Penalties,Soccer City,Johannesburg,0,0 +768,2010,South Africa,2010-07-03,Quarter-final,Quarterfinals,,Argentina,Germany,,,0,4,,,,,Germany,Normal Time,Cape Town Stadium,Cape Town,0,0 +769,2010,South Africa,2010-07-03,Quarter-final,Quarterfinals,,Paraguay,Spain,,,0,1,,,,,Spain,Normal Time,Ellis Park Stadium,Johannesburg,0,0 +770,2010,South Africa,2010-07-06,Semi-final,Semifinals,,Uruguay,Netherlands,,,2,3,,,,,Netherlands,Normal Time,Cape Town Stadium,Cape Town,0,0 +771,2010,South Africa,2010-07-07,Semi-final,Semifinals,,Germany,Spain,,,0,1,,,,,Spain,Normal Time,Moses Mabhida Stadium,Durban,0,0 +772,2010,South Africa,2010-07-10,Third-place play-off,Third-place play-off,,Uruguay,Germany,,,2,3,,,,,Germany,Normal Time,Nelson Mandela Bay Stadium,Port Elizabeth,0,0 +773,2010,South Africa,2010-07-11,Final,Final,,Netherlands,Spain,,,0,0,0,1,,,Spain,Extra Time,Soccer City,Johannesburg,0,0 +774,2014,Brazil,2014-06-12,Group Stage,Matchday 1,Group A,Brazil,Croatia,1,1,3,1,,,,,Brazil,Normal Time,Arena de São Paulo,São Paulo,3,0 +775,2014,Brazil,2014-06-13,Group Stage,Matchday 2,Group A,Mexico,Cameroon,0,0,1,0,,,,,Mexico,Normal Time,Estádio das Dunas,Natal,1,0 +776,2014,Brazil,2014-06-17,Group Stage,Matchday 6,Group A,Brazil,Mexico,,,0,0,,,,,Draw,Draw,Estádio Castelão,Fortaleza,0,0 +777,2014,Brazil,2014-06-18,Group Stage,Matchday 7,Group A,Cameroon,Croatia,,,0,4,,,,,Croatia,Normal Time,Arena Amazônia,Manaus,0,4 +778,2014,Brazil,2014-06-23,Group Stage,Matchday 12,Group A,Cameroon,Brazil,,,1,4,,,,,Brazil,Normal Time,Estádio Nacional Mané Garrincha,Brasília,1,4 +779,2014,Brazil,2014-06-23,Group Stage,Matchday 12,Group A,Croatia,Mexico,,,1,3,,,,,Mexico,Normal Time,Arena Pernambuco,Recife,1,3 +780,2014,Brazil,2014-06-13,Group Stage,Matchday 2,Group B,Spain,Netherlands,1,1,1,5,,,,,Netherlands,Normal Time,Arena Fonte Nova,Salvador,1,5 +781,2014,Brazil,2014-06-13,Group Stage,Matchday 2,Group B,Chile,Australia,2,1,3,1,,,,,Chile,Normal Time,Arena Pantanal,Cuiabá,3,1 +782,2014,Brazil,2014-06-18,Group Stage,Matchday 7,Group B,Australia,Netherlands,,,2,3,,,,,Netherlands,Normal Time,Estádio Beira-Rio,Porto Alegre,2,3 +783,2014,Brazil,2014-06-18,Group Stage,Matchday 7,Group B,Spain,Chile,,,0,2,,,,,Chile,Normal Time,Estádio do Maracanã,Rio de Janeiro,0,2 +784,2014,Brazil,2014-06-23,Group Stage,Matchday 12,Group B,Australia,Spain,,,0,3,,,,,Spain,Normal Time,Arena da Baixada,Curitiba,0,3 +785,2014,Brazil,2014-06-23,Group Stage,Matchday 12,Group B,Netherlands,Chile,,,2,0,,,,,Netherlands,Normal Time,Arena de São Paulo,São Paulo,2,0 +786,2014,Brazil,2014-06-14,Group Stage,Matchday 3,Group C,Colombia,Greece,,,3,0,,,,,Colombia,Normal Time,Estádio Mineirão,Belo Horizonte,3,0 +787,2014,Brazil,2014-06-14,Group Stage,Matchday 3,Group C,Côte d'Ivoire,Japan,,,2,1,,,,,Côte d'Ivoire,Normal Time,Arena Pernambuco,Recife,2,1 +788,2014,Brazil,2014-06-19,Group Stage,Matchday 8,Group C,Colombia,Côte d'Ivoire,,,2,1,,,,,Colombia,Normal Time,Estádio Nacional Mané Garrincha,Brasília,2,1 +789,2014,Brazil,2014-06-19,Group Stage,Matchday 8,Group C,Japan,Greece,,,0,0,,,,,Draw,Draw,Estádio das Dunas,Natal,0,0 +790,2014,Brazil,2014-06-24,Group Stage,Matchday 13,Group C,Japan,Colombia,,,1,4,,,,,Colombia,Normal Time,Arena Pantanal,Cuiabá,1,4 +791,2014,Brazil,2014-06-24,Group Stage,Matchday 13,Group C,Greece,Côte d'Ivoire,,,2,1,,,,,Greece,Normal Time,Estádio Castelão,Fortaleza,2,1 +792,2014,Brazil,2014-06-14,Group Stage,Matchday 3,Group D,Uruguay,Costa Rica,,,1,3,,,,,Costa Rica,Normal Time,Estádio Castelão,Fortaleza,1,3 +793,2014,Brazil,2014-06-14,Group Stage,Matchday 3,Group D,England,Italy,,,1,2,,,,,Italy,Normal Time,Arena Amazônia,Manaus,1,2 +794,2014,Brazil,2014-06-19,Group Stage,Matchday 8,Group D,Uruguay,England,,,2,1,,,,,Uruguay,Normal Time,Arena de São Paulo,São Paulo,2,1 +795,2014,Brazil,2014-06-20,Group Stage,Matchday 9,Group D,Italy,Costa Rica,,,0,1,,,,,Costa Rica,Normal Time,Arena Pernambuco,Recife,0,1 +796,2014,Brazil,2014-06-24,Group Stage,Matchday 13,Group D,Italy,Uruguay,,,0,1,,,,,Uruguay,Normal Time,Estádio das Dunas,Natal,0,1 +797,2014,Brazil,2014-06-24,Group Stage,Matchday 13,Group D,Costa Rica,England,,,0,0,,,,,Draw,Draw,Estádio Mineirão,Belo Horizonte,0,0 +798,2014,Brazil,2014-06-15,Group Stage,Matchday 4,Group E,Switzerland,Ecuador,,,2,1,,,,,Switzerland,Normal Time,Estádio Nacional Mané Garrincha,Brasília,2,1 +799,2014,Brazil,2014-06-15,Group Stage,Matchday 4,Group E,France,Honduras,,,3,0,,,,,France,Normal Time,Estádio Beira-Rio,Porto Alegre,2,0 +800,2014,Brazil,2014-06-20,Group Stage,Matchday 9,Group E,Switzerland,France,,,2,5,,,,,France,Normal Time,Arena Fonte Nova,Salvador,2,5 +801,2014,Brazil,2014-06-20,Group Stage,Matchday 9,Group E,Honduras,Ecuador,,,1,2,,,,,Ecuador,Normal Time,Arena da Baixada,Curitiba,1,2 +802,2014,Brazil,2014-06-25,Group Stage,Matchday 14,Group E,Honduras,Switzerland,,,0,3,,,,,Switzerland,Normal Time,Arena Amazônia,Manaus,0,3 +803,2014,Brazil,2014-06-25,Group Stage,Matchday 14,Group E,Ecuador,France,,,0,0,,,,,Draw,Draw,Estádio do Maracanã,Rio de Janeiro,0,0 +804,2014,Brazil,2014-06-15,Group Stage,Matchday 4,Group F,Argentina,Bosnia-Herzegovina,,,2,1,,,,,Argentina,Normal Time,Estádio do Maracanã,Rio de Janeiro,1,1 +805,2014,Brazil,2014-06-16,Group Stage,Matchday 5,Group F,Iran,Nigeria,,,0,0,,,,,Draw,Draw,Arena da Baixada,Curitiba,0,0 +806,2014,Brazil,2014-06-21,Group Stage,Matchday 10,Group F,Argentina,Iran,,,1,0,,,,,Argentina,Normal Time,Estádio Mineirão,Belo Horizonte,1,0 +807,2014,Brazil,2014-06-21,Group Stage,Matchday 10,Group F,Nigeria,Bosnia-Herzegovina,,,1,0,,,,,Nigeria,Normal Time,Arena Pantanal,Cuiabá,1,0 +808,2014,Brazil,2014-06-25,Group Stage,Matchday 14,Group F,Nigeria,Argentina,,,2,3,,,,,Argentina,Normal Time,Estádio Beira-Rio,Porto Alegre,2,3 +809,2014,Brazil,2014-06-25,Group Stage,Matchday 14,Group F,Bosnia-Herzegovina,Iran,,,3,1,,,,,Bosnia-Herzegovina,Normal Time,Arena Fonte Nova,Salvador,3,1 +810,2014,Brazil,2014-06-16,Group Stage,Matchday 5,Group G,Germany,Portugal,,,4,0,,,,,Germany,Normal Time,Arena Fonte Nova,Salvador,4,0 +811,2014,Brazil,2014-06-16,Group Stage,Matchday 5,Group G,Ghana,USA,,,1,2,,,,,USA,Normal Time,Estádio das Dunas,Natal,1,2 +812,2014,Brazil,2014-06-21,Group Stage,Matchday 10,Group G,Germany,Ghana,,,2,2,,,,,Draw,Draw,Estádio Castelão,Fortaleza,2,2 +813,2014,Brazil,2014-06-22,Group Stage,Matchday 11,Group G,USA,Portugal,,,2,2,,,,,Draw,Draw,Arena Amazônia,Manaus,2,2 +814,2014,Brazil,2014-06-26,Group Stage,Matchday 15,Group G,USA,Germany,,,0,1,,,,,Germany,Normal Time,Arena Pernambuco,Recife,0,1 +815,2014,Brazil,2014-06-26,Group Stage,Matchday 15,Group G,Portugal,Ghana,,,2,1,,,,,Portugal,Normal Time,Estádio Nacional Mané Garrincha,Brasília,1,1 +816,2014,Brazil,2014-06-17,Group Stage,Matchday 6,Group H,Belgium,Algeria,,,2,1,,,,,Belgium,Normal Time,Estádio Mineirão,Belo Horizonte,2,1 +817,2014,Brazil,2014-06-17,Group Stage,Matchday 6,Group H,Russia,South Korea,,,1,1,,,,,Draw,Draw,Arena Pantanal,Cuiabá,1,1 +818,2014,Brazil,2014-06-22,Group Stage,Matchday 11,Group H,Belgium,Russia,,,1,0,,,,,Belgium,Normal Time,Estádio do Maracanã,Rio de Janeiro,1,0 +819,2014,Brazil,2014-06-22,Group Stage,Matchday 11,Group H,South Korea,Algeria,,,2,4,,,,,Algeria,Normal Time,Estádio Beira-Rio,Porto Alegre,2,4 +820,2014,Brazil,2014-06-26,Group Stage,Matchday 15,Group H,South Korea,Belgium,,,0,1,,,,,Belgium,Normal Time,Arena de São Paulo,São Paulo,0,1 +821,2014,Brazil,2014-06-26,Group Stage,Matchday 15,Group H,Algeria,Russia,,,1,1,,,,,Draw,Draw,Arena da Baixada,Curitiba,1,1 +822,2014,Brazil,2014-06-28,Round of 16,Round of 16,,Brazil,Chile,1,1,1,1,1,1,3,2,Brazil,Penalties,Estádio Mineirão,Belo Horizonte,1,1 +823,2014,Brazil,2014-06-28,Round of 16,Round of 16,,Colombia,Uruguay,1,0,2,0,,,,,Colombia,Normal Time,Estádio do Maracanã,Rio de Janeiro,2,0 +824,2014,Brazil,2014-06-29,Round of 16,Round of 16,,Netherlands,Mexico,0,0,2,1,,,,,Netherlands,Normal Time,Estádio Castelão,Fortaleza,2,1 +825,2014,Brazil,2014-06-29,Round of 16,Round of 16,,Costa Rica,Greece,0,0,1,1,1,1,5,3,Costa Rica,Penalties,Arena Pernambuco,Recife,1,1 +826,2014,Brazil,2014-06-30,Round of 16,Round of 16,,France,Nigeria,0,0,2,0,,,,,France,Normal Time,Estádio Nacional Mané Garrincha,Brasília,1,0 +827,2014,Brazil,2014-06-30,Round of 16,Round of 16,,Germany,Algeria,0,0,0,0,2,1,,,Germany,Extra Time,Estádio Beira-Rio,Porto Alegre,2,1 +828,2014,Brazil,2014-07-01,Round of 16,Round of 16,,Argentina,Switzerland,0,0,0,0,1,0,,,Argentina,Extra Time,Arena de São Paulo,São Paulo,1,0 +829,2014,Brazil,2014-07-01,Round of 16,Round of 16,,Belgium,USA,0,0,0,0,2,1,,,Belgium,Extra Time,Arena Fonte Nova,Salvador,2,1 +830,2014,Brazil,2014-07-04,Quarter-final,Quarter-finals,,France,Germany,0,1,0,1,,,,,Germany,Normal Time,Estádio do Maracanã,Rio de Janeiro,0,1 +831,2014,Brazil,2014-07-04,Quarter-final,Quarter-finals,,Brazil,Colombia,1,0,2,1,,,,,Brazil,Normal Time,Estádio Castelão,Fortaleza,2,1 +832,2014,Brazil,2014-07-05,Quarter-final,Quarter-finals,,Argentina,Belgium,1,0,1,0,,,,,Argentina,Normal Time,Estádio Nacional Mané Garrincha,Brasília,1,0 +833,2014,Brazil,2014-07-05,Quarter-final,Quarter-finals,,Netherlands,Costa Rica,0,0,0,0,0,0,4,3,Netherlands,Penalties,Arena Fonte Nova,Salvador,0,0 +834,2014,Brazil,2014-07-08,Semi-final,Semi-finals,,Brazil,Germany,0,5,1,7,,,,,Germany,Normal Time,Estádio Mineirão,Belo Horizonte,1,7 +835,2014,Brazil,2014-07-09,Semi-final,Semi-finals,,Netherlands,Argentina,0,0,0,0,0,0,2,4,Argentina,Penalties,Arena de São Paulo,São Paulo,0,0 +836,2014,Brazil,2014-07-12,Third Place Play-off,Match for third place,,Brazil,Netherlands,0,2,0,3,,,,,Netherlands,Normal Time,Estádio Nacional Mané Garrincha,Brasília,0,3 +837,2014,Brazil,2014-07-13,Final,Final,,Germany,Argentina,0,0,0,0,1,0,,,Germany,Extra Time,Estádio do Maracanã,Rio de Janeiro,1,0 +838,2018,Russia,2018-06-14,Group Stage,Matchday 1,Group A,Russia,Saudi Arabia,2,0,5,0,,,,,Russia,Normal Time,Luzhniki Stadium,Moscow,5,0 +839,2018,Russia,2018-06-15,Group Stage,Matchday 2,Group A,Egypt,Uruguay,0,0,0,1,,,,,Uruguay,Normal Time,Ekaterinburg Arena,Ekaterinburg,0,1 +840,2018,Russia,2018-06-19,Group Stage,Matchday 6,Group A,Russia,Egypt,0,0,3,1,,,,,Russia,Normal Time,Saint Petersburg Stadium,Saint Petersburg,2,1 +841,2018,Russia,2018-06-20,Group Stage,Matchday 7,Group A,Uruguay,Saudi Arabia,1,0,1,0,,,,,Uruguay,Normal Time,Rostov Arena,Rostov-on-Don,1,0 +842,2018,Russia,2018-06-25,Group Stage,Matchday 12,Group A,Uruguay,Russia,2,0,3,0,,,,,Uruguay,Normal Time,Samara Arena,Samara,2,0 +843,2018,Russia,2018-06-25,Group Stage,Matchday 12,Group A,Saudi Arabia,Egypt,1,1,2,1,,,,,Saudi Arabia,Normal Time,Volgograd Arena,Volgograd,2,1 +844,2018,Russia,2018-06-15,Group Stage,Matchday 2,Group B,Morocco,Iran,0,0,0,1,,,,,Iran,Normal Time,Saint Petersburg Stadium,Saint Petersburg,0,0 +845,2018,Russia,2018-06-15,Group Stage,Matchday 2,Group B,Portugal,Spain,2,1,3,3,,,,,Draw,Draw,Fisht Stadium,Sochi,3,3 +846,2018,Russia,2018-06-20,Group Stage,Matchday 7,Group B,Portugal,Morocco,1,0,1,0,,,,,Portugal,Normal Time,Luzhniki Stadium,Moscow,1,0 +847,2018,Russia,2018-06-20,Group Stage,Matchday 7,Group B,Iran,Spain,0,0,0,1,,,,,Spain,Normal Time,Kazan Arena,Kazan,0,1 +848,2018,Russia,2018-06-25,Group Stage,Matchday 12,Group B,Iran,Portugal,0,1,1,1,,,,,Draw,Draw,Mordovia Arena,Saransk,1,1 +849,2018,Russia,2018-06-25,Group Stage,Matchday 12,Group B,Spain,Morocco,1,1,2,2,,,,,Draw,Draw,Kaliningrad Stadium,Kaliningrad,2,2 +850,2018,Russia,2018-06-16,Group Stage,Matchday 3,Group C,France,Australia,0,0,2,1,,,,,France,Normal Time,Kazan Arena,Kazan,1,1 +851,2018,Russia,2018-06-16,Group Stage,Matchday 3,Group C,Peru,Denmark,0,0,0,1,,,,,Denmark,Normal Time,Mordovia Arena,Saransk,0,1 +852,2018,Russia,2018-06-21,Group Stage,Matchday 8,Group C,Denmark,Australia,1,1,1,1,,,,,Draw,Draw,Samara Arena,Samara,1,1 +853,2018,Russia,2018-06-21,Group Stage,Matchday 8,Group C,France,Peru,1,0,1,0,,,,,France,Normal Time,Ekaterinburg Arena,Ekaterinburg,1,0 +854,2018,Russia,2018-06-26,Group Stage,Matchday 13,Group C,Denmark,France,0,0,0,0,,,,,Draw,Draw,Luzhniki Stadium,Moscow,0,0 +855,2018,Russia,2018-06-26,Group Stage,Matchday 13,Group C,Australia,Peru,0,1,0,2,,,,,Peru,Normal Time,Fisht Stadium,Sochi,0,2 +856,2018,Russia,2018-06-16,Group Stage,Matchday 3,Group D,Argentina,Iceland,1,1,1,1,,,,,Draw,Draw,Spartak Stadium,Moscow,1,1 +857,2018,Russia,2018-06-16,Group Stage,Matchday 3,Group D,Croatia,Nigeria,1,0,2,0,,,,,Croatia,Normal Time,Kaliningrad Stadium,Kaliningrad,1,0 +858,2018,Russia,2018-06-21,Group Stage,Matchday 8,Group D,Argentina,Croatia,0,0,0,3,,,,,Croatia,Normal Time,Nizhny Novgorod Stadium,Nizhny Novgorod,0,3 +859,2018,Russia,2018-06-22,Group Stage,Matchday 9,Group D,Nigeria,Iceland,0,0,2,0,,,,,Nigeria,Normal Time,Volgograd Arena,Volgograd,2,0 +860,2018,Russia,2018-06-26,Group Stage,Matchday 13,Group D,Nigeria,Argentina,0,1,1,2,,,,,Argentina,Normal Time,Saint Petersburg Stadium,Saint Petersburg,1,2 +861,2018,Russia,2018-06-26,Group Stage,Matchday 13,Group D,Iceland,Croatia,0,0,1,2,,,,,Croatia,Normal Time,Rostov Arena,Rostov-on-Don,1,2 +862,2018,Russia,2018-06-17,Group Stage,Matchday 4,Group E,Costa Rica,Serbia,0,0,0,1,,,,,Serbia,Normal Time,Samara Arena,Samara,0,1 +863,2018,Russia,2018-06-17,Group Stage,Matchday 4,Group E,Brazil,Switzerland,1,0,1,1,,,,,Draw,Draw,Rostov Arena,Rostov-on-Don,1,1 +864,2018,Russia,2018-06-22,Group Stage,Matchday 9,Group E,Brazil,Costa Rica,0,0,2,0,,,,,Brazil,Normal Time,Saint Petersburg Stadium,Saint Petersburg,2,0 +865,2018,Russia,2018-06-22,Group Stage,Matchday 9,Group E,Serbia,Switzerland,1,0,1,2,,,,,Switzerland,Normal Time,Kaliningrad Stadium,Kaliningrad,1,2 +866,2018,Russia,2018-06-27,Group Stage,Matchday 14,Group E,Serbia,Brazil,0,1,0,2,,,,,Brazil,Normal Time,Spartak Stadium,Moscow,0,2 +867,2018,Russia,2018-06-27,Group Stage,Matchday 14,Group E,Switzerland,Costa Rica,1,0,2,2,,,,,Draw,Draw,Nizhny Novgorod Stadium,Nizhny Novgorod,2,1 +868,2018,Russia,2018-06-17,Group Stage,Matchday 4,Group F,Germany,Mexico,0,1,0,1,,,,,Mexico,Normal Time,Luzhniki Stadium,Moscow,0,1 +869,2018,Russia,2018-06-18,Group Stage,Matchday 5,Group F,Sweden,South Korea,0,0,1,0,,,,,Sweden,Normal Time,Nizhny Novgorod Stadium,Nizhny Novgorod,1,0 +870,2018,Russia,2018-06-23,Group Stage,Matchday 10,Group F,South Korea,Mexico,0,1,1,2,,,,,Mexico,Normal Time,Rostov Arena,Rostov-on-Don,1,2 +871,2018,Russia,2018-06-23,Group Stage,Matchday 10,Group F,Germany,Sweden,0,1,2,1,,,,,Germany,Normal Time,Fisht Stadium,Sochi,2,1 +872,2018,Russia,2018-06-27,Group Stage,Matchday 14,Group F,South Korea,Germany,0,0,2,0,,,,,South Korea,Normal Time,Kazan Arena,Kazan,2,0 +873,2018,Russia,2018-06-27,Group Stage,Matchday 14,Group F,Mexico,Sweden,0,0,0,3,,,,,Sweden,Normal Time,Ekaterinburg Arena,Ekaterinburg,0,2 +874,2018,Russia,2018-06-18,Group Stage,Matchday 5,Group G,Belgium,Panama,0,0,3,0,,,,,Belgium,Normal Time,Fisht Stadium,Sochi,3,0 +875,2018,Russia,2018-06-18,Group Stage,Matchday 5,Group G,Tunisia,England,1,1,1,2,,,,,England,Normal Time,Volgograd Arena,Volgograd,1,2 +876,2018,Russia,2018-06-23,Group Stage,Matchday 10,Group G,Belgium,Tunisia,3,1,5,2,,,,,Belgium,Normal Time,Spartak Stadium,Moscow,5,2 +877,2018,Russia,2018-06-24,Group Stage,Matchday 11,Group G,England,Panama,5,0,6,1,,,,,England,Normal Time,Nizhny Novgorod Stadium,Nizhny Novgorod,6,1 +878,2018,Russia,2018-06-28,Group Stage,Matchday 15,Group G,England,Belgium,0,0,0,1,,,,,Belgium,Normal Time,Kaliningrad Stadium,Kaliningrad,0,1 +879,2018,Russia,2018-06-28,Group Stage,Matchday 15,Group G,Panama,Tunisia,1,0,1,2,,,,,Tunisia,Normal Time,Mordovia Arena,Saransk,0,2 +880,2018,Russia,2018-06-19,Group Stage,Matchday 6,Group H,Colombia,Japan,1,1,1,2,,,,,Japan,Normal Time,Mordovia Arena,Saransk,1,2 +881,2018,Russia,2018-06-19,Group Stage,Matchday 6,Group H,Poland,Senegal,0,1,1,2,,,,,Senegal,Normal Time,Spartak Stadium,Moscow,1,1 +882,2018,Russia,2018-06-24,Group Stage,Matchday 11,Group H,Japan,Senegal,1,1,2,2,,,,,Draw,Draw,Ekaterinburg Arena,Ekaterinburg,2,2 +883,2018,Russia,2018-06-24,Group Stage,Matchday 11,Group H,Poland,Colombia,0,1,0,3,,,,,Colombia,Normal Time,Kazan Arena,Kazan,0,3 +884,2018,Russia,2018-06-28,Group Stage,Matchday 15,Group H,Japan,Poland,0,1,0,1,,,,,Poland,Normal Time,Volgograd Arena,Volgograd,0,1 +885,2018,Russia,2018-06-28,Group Stage,Matchday 15,Group H,Senegal,Colombia,0,1,0,1,,,,,Colombia,Normal Time,Samara Arena,Samara,0,1 +886,2018,Russia,2018-06-30,Round of 16,Round of 16,,France,Argentina,1,1,4,3,,,,,France,Normal Time,Kazan Arena,Kazan,4,3 +887,2018,Russia,2018-06-30,Round of 16,Round of 16,,Uruguay,Portugal,1,0,2,1,,,,,Uruguay,Normal Time,Fisht Stadium,Sochi,2,1 +888,2018,Russia,2018-07-01,Round of 16,Round of 16,,Spain,Russia,1,1,1,1,1,1,3,4,Russia,Penalties,Luzhniki Stadium,Moscow,0,1 +889,2018,Russia,2018-07-01,Round of 16,Round of 16,,Croatia,Denmark,1,1,1,1,1,1,3,2,Croatia,Penalties,Nizhny Novgorod Stadium,Nizhny Novgorod,1,1 +890,2018,Russia,2018-07-02,Round of 16,Round of 16,,Brazil,Mexico,0,0,2,0,,,,,Brazil,Normal Time,Samara Arena,Samara,2,0 +891,2018,Russia,2018-07-02,Round of 16,Round of 16,,Belgium,Japan,0,0,3,2,,,,,Belgium,Normal Time,Rostov Arena,Rostov-on-Don,3,2 +892,2018,Russia,2018-07-03,Round of 16,Round of 16,,Sweden,Switzerland,0,0,1,0,,,,,Sweden,Normal Time,Saint Petersburg Stadium,Saint Petersburg,1,0 +893,2018,Russia,2018-07-03,Round of 16,Round of 16,,Colombia,England,0,0,1,1,1,1,3,4,England,Penalties,Spartak Stadium,Moscow,1,1 +894,2018,Russia,2018-07-06,Quarter-final,Quarter-finals,,Uruguay,France,0,1,0,2,,,,,France,Normal Time,Nizhny Novgorod Stadium,Nizhny Novgorod,0,2 +895,2018,Russia,2018-07-06,Quarter-final,Quarter-finals,,Brazil,Belgium,0,2,1,2,,,,,Belgium,Normal Time,Kazan Arena,Kazan,1,1 +896,2018,Russia,2018-07-07,Quarter-final,Quarter-finals,,Sweden,England,0,1,0,2,,,,,England,Normal Time,Samara Arena,Samara,0,2 +897,2018,Russia,2018-07-07,Quarter-final,Quarter-finals,,Russia,Croatia,1,1,1,1,2,2,3,4,Croatia,Penalties,Fisht Stadium,Sochi,2,2 +898,2018,Russia,2018-07-10,Semi-final,Semi-finals,,France,Belgium,0,0,1,0,,,,,France,Normal Time,Saint Petersburg Stadium,St. Petersburg,1,0 +899,2018,Russia,2018-07-11,Semi-final,Semi-finals,,Croatia,England,0,1,1,1,2,1,,,Croatia,Extra Time,Luzhniki Stadium,Moscow,2,1 +900,2018,Russia,2018-07-14,Third Place Play-off,Match for third place,,Belgium,England,1,0,2,0,,,,,Belgium,Normal Time,Saint Petersburg Stadium,St. Petersburg,2,0 +901,2018,Russia,2018-07-15,Final,Final,,France,Croatia,2,1,4,2,,,,,France,Normal Time,Luzhniki Stadium,Moscow,3,2 +902,2022,Qatar,2022-11-20,Group Stage,Matchday 1,Group A,Qatar,Ecuador,0,2,0,2,,,,,Ecuador,Normal Time,Al Bayt Stadium,Al Khor,0,2 +903,2022,Qatar,2022-11-21,Group Stage,Matchday 2,Group A,Senegal,Netherlands,0,0,0,2,,,,,Netherlands,Normal Time,Al Thumama Stadium,Doha,0,2 +904,2022,Qatar,2022-11-25,Group Stage,Matchday 6,Group A,Qatar,Senegal,0,1,1,3,,,,,Senegal,Normal Time,Al Thumama Stadium,Doha,1,3 +905,2022,Qatar,2022-11-25,Group Stage,Matchday 6,Group A,Netherlands,Ecuador,1,0,1,1,,,,,Draw,Draw,Khalifa International Stadium,Al Rayyan,1,1 +906,2022,Qatar,2022-11-29,Group Stage,Matchday 10,Group A,Ecuador,Senegal,0,1,1,2,,,,,Senegal,Normal Time,Khalifa International Stadium,Al Rayyan,1,2 +907,2022,Qatar,2022-11-29,Group Stage,Matchday 10,Group A,Netherlands,Qatar,1,0,2,0,,,,,Netherlands,Normal Time,Al Bayt Stadium,Al Khor,2,0 +908,2022,Qatar,2022-11-21,Group Stage,Matchday 2,Group B,England,Iran,3,0,6,2,,,,,England,Normal Time,Khalifa International Stadium,Al Rayyan,6,2 +909,2022,Qatar,2022-11-21,Group Stage,Matchday 2,Group B,USA,Wales,1,0,1,1,,,,,Draw,Draw,Ahmad bin Ali Stadium,Al Rayyan,1,1 +910,2022,Qatar,2022-11-25,Group Stage,Matchday 6,Group B,Wales,Iran,0,0,0,2,,,,,Iran,Normal Time,Ahmad bin Ali Stadium,Al Rayyan,0,2 +911,2022,Qatar,2022-11-25,Group Stage,Matchday 6,Group B,England,USA,,,0,0,,,,,Draw,Draw,Al Bayt Stadium,Al Khor,0,0 +912,2022,Qatar,2022-11-29,Group Stage,Matchday 10,Group B,Wales,England,0,0,0,3,,,,,England,Normal Time,Ahmad bin Ali Stadium,Al Rayyan,0,3 +913,2022,Qatar,2022-11-29,Group Stage,Matchday 10,Group B,Iran,USA,0,1,0,1,,,,,USA,Normal Time,Al Thumama Stadium,Doha,0,1 +914,2022,Qatar,2022-11-22,Group Stage,Matchday 3,Group C,Argentina,Saudi Arabia,1,0,1,2,,,,,Saudi Arabia,Normal Time,Lusail Iconic Stadium,Lusail,1,2 +915,2022,Qatar,2022-11-22,Group Stage,Matchday 3,Group C,Mexico,Poland,,,0,0,,,,,Draw,Draw,Stadium 974,Doha,0,0 +916,2022,Qatar,2022-11-26,Group Stage,Matchday 7,Group C,Poland,Saudi Arabia,1,0,2,0,,,,,Poland,Normal Time,Education City Stadium,Al Rayyan,2,0 +917,2022,Qatar,2022-11-26,Group Stage,Matchday 7,Group C,Argentina,Mexico,0,0,2,0,,,,,Argentina,Normal Time,Lusail Iconic Stadium,Lusail,2,0 +918,2022,Qatar,2022-11-30,Group Stage,Matchday 11,Group C,Poland,Argentina,0,0,0,2,,,,,Argentina,Normal Time,Stadium 974,Doha,0,2 +919,2022,Qatar,2022-11-30,Group Stage,Matchday 11,Group C,Saudi Arabia,Mexico,0,0,1,2,,,,,Mexico,Normal Time,Lusail Iconic Stadium,Lusail,1,2 +920,2022,Qatar,2022-11-22,Group Stage,Matchday 3,Group D,Denmark,Tunisia,,,0,0,,,,,Draw,Draw,Education City Stadium,Al Rayyan,0,0 +921,2022,Qatar,2022-11-22,Group Stage,Matchday 3,Group D,France,Australia,2,1,4,1,,,,,France,Normal Time,Al Janoub Stadium,Al Wakrah,4,1 +922,2022,Qatar,2022-11-26,Group Stage,Matchday 7,Group D,Tunisia,Australia,0,1,0,1,,,,,Australia,Normal Time,Al Janoub Stadium,Al Wakrah,0,1 +923,2022,Qatar,2022-11-26,Group Stage,Matchday 7,Group D,France,Denmark,0,0,2,1,,,,,France,Normal Time,Stadium 974,Doha,2,1 +924,2022,Qatar,2022-11-30,Group Stage,Matchday 11,Group D,Australia,Denmark,0,0,1,0,,,,,Australia,Normal Time,Al Janoub Stadium,Al Wakrah,1,0 +925,2022,Qatar,2022-11-30,Group Stage,Matchday 11,Group D,Tunisia,France,0,0,1,0,,,,,Tunisia,Normal Time,Education City Stadium,Al Rayyan,1,0 +926,2022,Qatar,2022-11-23,Group Stage,Matchday 4,Group E,Germany,Japan,1,0,1,2,,,,,Japan,Normal Time,Khalifa International Stadium,Al Rayyan,1,2 +927,2022,Qatar,2022-11-23,Group Stage,Matchday 4,Group E,Spain,Costa Rica,3,0,7,0,,,,,Spain,Normal Time,Al Thumama Stadium,Doha,7,0 +928,2022,Qatar,2022-11-27,Group Stage,Matchday 8,Group E,Japan,Costa Rica,0,0,0,1,,,,,Costa Rica,Normal Time,Ahmad bin Ali Stadium,Al Rayyan,0,1 +929,2022,Qatar,2022-11-27,Group Stage,Matchday 8,Group E,Spain,Germany,0,0,1,1,,,,,Draw,Draw,Al Bayt Stadium,Al Khor,1,1 +930,2022,Qatar,2022-12-01,Group Stage,Matchday 12,Group E,Japan,Spain,0,0,2,1,,,,,Japan,Normal Time,Khalifa International Stadium,Al Rayyan,2,1 +931,2022,Qatar,2022-12-01,Group Stage,Matchday 12,Group E,Costa Rica,Germany,0,1,2,4,,,,,Germany,Normal Time,Al Bayt Stadium,Al Khor,2,4 +932,2022,Qatar,2022-11-23,Group Stage,Matchday 4,Group F,Morocco,Croatia,,,0,0,,,,,Draw,Draw,Al Bayt Stadium,Al Khor,0,0 +933,2022,Qatar,2022-11-23,Group Stage,Matchday 4,Group F,Belgium,Canada,1,0,1,0,,,,,Belgium,Normal Time,Ahmad bin Ali Stadium,Al Rayyan,1,0 +934,2022,Qatar,2022-11-27,Group Stage,Matchday 8,Group F,Belgium,Morocco,0,0,0,2,,,,,Morocco,Normal Time,Al Thumama Stadium,Doha,0,2 +935,2022,Qatar,2022-11-27,Group Stage,Matchday 8,Group F,Croatia,Canada,2,1,4,1,,,,,Croatia,Normal Time,Khalifa International Stadium,Al Rayyan,4,1 +936,2022,Qatar,2022-12-01,Group Stage,Matchday 12,Group F,Croatia,Belgium,,,0,0,,,,,Draw,Draw,Ahmad bin Ali Stadium,Al Rayyan,0,0 +937,2022,Qatar,2022-12-01,Group Stage,Matchday 12,Group F,Canada,Morocco,1,2,1,2,,,,,Morocco,Normal Time,Al Thumama Stadium,Doha,0,2 +938,2022,Qatar,2022-11-24,Group Stage,Matchday 5,Group G,Switzerland,Cameroon,0,0,1,0,,,,,Switzerland,Normal Time,Al Janoub Stadium,Al Wakrah,1,0 +939,2022,Qatar,2022-11-24,Group Stage,Matchday 5,Group G,Brazil,Serbia,0,0,2,0,,,,,Brazil,Normal Time,Lusail Iconic Stadium,Lusail,2,0 +940,2022,Qatar,2022-11-28,Group Stage,Matchday 9,Group G,Cameroon,Serbia,1,2,3,3,,,,,Draw,Draw,Al Janoub Stadium,Al Wakrah,3,3 +941,2022,Qatar,2022-11-28,Group Stage,Matchday 9,Group G,Brazil,Switzerland,0,0,1,0,,,,,Brazil,Normal Time,Stadium 974,Doha,1,0 +942,2022,Qatar,2022-12-02,Group Stage,Matchday 13,Group G,Serbia,Switzerland,2,1,2,3,,,,,Switzerland,Normal Time,Stadium 974,Doha,2,3 +943,2022,Qatar,2022-12-02,Group Stage,Matchday 13,Group G,Cameroon,Brazil,0,0,1,0,,,,,Cameroon,Normal Time,Lusail Iconic Stadium,Lusail,1,0 +944,2022,Qatar,2022-11-24,Group Stage,Matchday 5,Group H,Uruguay,South Korea,,,0,0,,,,,Draw,Draw,Education City Stadium,Al Rayyan,0,0 +945,2022,Qatar,2022-11-24,Group Stage,Matchday 5,Group H,Portugal,Ghana,0,0,3,2,,,,,Portugal,Normal Time,Stadium 974,Doha,3,2 +946,2022,Qatar,2022-11-28,Group Stage,Matchday 9,Group H,South Korea,Ghana,0,2,2,3,,,,,Ghana,Normal Time,Education City Stadium,Al Rayyan,2,3 +947,2022,Qatar,2022-11-28,Group Stage,Matchday 9,Group H,Portugal,Uruguay,0,0,2,0,,,,,Portugal,Normal Time,Lusail Iconic Stadium,Lusail,2,0 +948,2022,Qatar,2022-12-02,Group Stage,Matchday 13,Group H,Ghana,Uruguay,,,0,2,,,,,Uruguay,Normal Time,Al Janoub Stadium,Al Wakrah,0,2 +949,2022,Qatar,2022-12-02,Group Stage,Matchday 13,Group H,South Korea,Portugal,1,1,2,1,,,,,South Korea,Normal Time,Lusail Iconic Stadium,Lusail,2,1 +950,2022,Qatar,2022-12-03,Round of 16,Round of 16,,Netherlands,USA,2,0,3,1,,,,,Netherlands,Normal Time,Khalifa International Stadium,Al Rayyan,3,1 +951,2022,Qatar,2022-12-03,Round of 16,Round of 16,,Argentina,Australia,1,0,2,1,,,,,Argentina,Normal Time,Ahmad bin Ali Stadium,Al Rayyan,2,0 +952,2022,Qatar,2022-12-04,Round of 16,Round of 16,,France,Poland,1,0,3,1,,,,,France,Normal Time,Al Thumama Stadium,Doha,3,1 +953,2022,Qatar,2022-12-04,Round of 16,Round of 16,,England,Senegal,2,0,3,0,,,,,England,Normal Time,Al Bayt Stadium,Al Khor,3,0 +954,2022,Qatar,2022-12-05,Round of 16,Round of 16,,Japan,Croatia,1,0,1,1,1,1,1,3,Croatia,Penalties,Al Janoub Stadium,Al Wakrah,1,1 +955,2022,Qatar,2022-12-05,Round of 16,Round of 16,,Brazil,South Korea,4,0,4,1,,,,,Brazil,Normal Time,Stadium 974,Doha,4,1 +956,2022,Qatar,2022-12-06,Round of 16,Round of 16,,Morocco,Spain,0,0,0,0,0,0,3,0,Morocco,Penalties,Education City Stadium,Al Rayyan,0,0 +957,2022,Qatar,2022-12-06,Round of 16,Round of 16,,Portugal,Switzerland,2,0,6,1,,,,,Portugal,Normal Time,Lusail Iconic Stadium,Lusail,6,1 +958,2022,Qatar,2022-12-09,Quarter-final,Quarter-finals,,Croatia,Brazil,0,0,0,0,1,1,4,2,Croatia,Penalties,Education City Stadium,Al Rayyan,1,1 +959,2022,Qatar,2022-12-09,Quarter-final,Quarter-finals,,Netherlands,Argentina,1,0,2,2,2,2,3,4,Argentina,Penalties,Lusail Iconic Stadium,Lusail,2,2 +960,2022,Qatar,2022-12-10,Quarter-final,Quarter-finals,,Morocco,Portugal,1,0,1,0,,,,,Morocco,Normal Time,Al Thumama Stadium,Doha,1,0 +961,2022,Qatar,2022-12-10,Quarter-final,Quarter-finals,,England,France,0,1,1,2,,,,,France,Normal Time,Al Bayt Stadium,Al Khor,1,2 +962,2022,Qatar,2022-12-13,Semi-final,Semi-finals,,Argentina,Croatia,2,0,3,0,,,,,Argentina,Normal Time,Lusail Iconic Stadium,Lusail,3,0 +963,2022,Qatar,2022-12-14,Semi-final,Semi-finals,,France,Morocco,1,0,2,0,,,,,France,Normal Time,Al Bayt Stadium,Al Khor,2,0 +964,2022,Qatar,2022-12-17,Third Place Play-off,Match for third place,,Croatia,Morocco,2,1,2,1,,,,,Croatia,Normal Time,Khalifa International Stadium,Al Rayyan,2,1 +965,2022,Qatar,2022-12-18,Final,Final,,Argentina,France,2,0,2,2,3,3,4,2,Argentina,Penalties,Lusail Iconic Stadium,Lusail,3,3 +966,2026,"Canada, Mexico, United States",2026-06-11,Group Stage,Matchday 1,Group A,Mexico,South Africa,1,0,2,0,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,2,0 +967,2026,"Canada, Mexico, United States",2026-06-11,Group Stage,Matchday 1,Group A,South Korea,Czech Republic,0,0,2,1,,,,,South Korea,Normal Time,Estadio Guadalajara,Zapopan,2,1 +968,2026,"Canada, Mexico, United States",2026-06-18,Group Stage,Matchday 8,Group A,Czech Republic,South Africa,1,0,1,1,,,,,Draw,Draw,Mercedes-Benz Stadium,Atlanta,1,1 +969,2026,"Canada, Mexico, United States",2026-06-18,Group Stage,Matchday 8,Group A,Mexico,South Korea,0,0,1,0,,,,,Mexico,Normal Time,Estadio Guadalajara,Zapopan,1,0 +970,2026,"Canada, Mexico, United States",2026-06-24,Group Stage,Matchday 14,Group A,Czech Republic,Mexico,0,0,0,3,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,0,3 +971,2026,"Canada, Mexico, United States",2026-06-24,Group Stage,Matchday 14,Group A,South Africa,South Korea,0,0,1,0,,,,,South Africa,Normal Time,Estadio Monterrey,Guadalupe,1,0 +972,2026,"Canada, Mexico, United States",2026-06-12,Group Stage,Matchday 2,Group B,Canada,Bosnia & Herzegovina,0,1,1,1,,,,,Draw,Draw,BMO Field,Toronto,1,1 +973,2026,"Canada, Mexico, United States",2026-06-13,Group Stage,Matchday 3,Group B,Qatar,Switzerland,0,1,1,1,,,,,Draw,Draw,Levi's Stadium,Santa Clara,1,1 +974,2026,"Canada, Mexico, United States",2026-06-18,Group Stage,Matchday 8,Group B,Switzerland,Bosnia & Herzegovina,0,0,4,1,,,,,Switzerland,Normal Time,SoFi Stadium,Inglewood,4,1 +975,2026,"Canada, Mexico, United States",2026-06-18,Group Stage,Matchday 8,Group B,Canada,Qatar,3,0,6,0,,,,,Canada,Normal Time,BC Place,Vancouver,6,0 +976,2026,"Canada, Mexico, United States",2026-06-24,Group Stage,Matchday 14,Group B,Switzerland,Canada,0,0,2,1,,,,,Switzerland,Normal Time,BC Place,Vancouver,2,1 +977,2026,"Canada, Mexico, United States",2026-06-24,Group Stage,Matchday 14,Group B,Bosnia & Herzegovina,Qatar,2,1,3,1,,,,,Bosnia & Herzegovina,Normal Time,Lumen Field,Seattle,3,1 +978,2026,"Canada, Mexico, United States",2026-06-13,Group Stage,Matchday 3,Group C,Brazil,Morocco,1,1,1,1,,,,,Draw,Draw,MetLife Stadium,East Rutherford,1,1 +979,2026,"Canada, Mexico, United States",2026-06-13,Group Stage,Matchday 3,Group C,Haiti,Scotland,0,1,0,1,,,,,Scotland,Normal Time,Gillette Stadium,Foxborough,0,1 +980,2026,"Canada, Mexico, United States",2026-06-19,Group Stage,Matchday 9,Group C,Scotland,Morocco,0,1,0,1,,,,,Morocco,Normal Time,Gillette Stadium,Foxborough,0,1 +981,2026,"Canada, Mexico, United States",2026-06-19,Group Stage,Matchday 9,Group C,Brazil,Haiti,3,0,3,0,,,,,Brazil,Normal Time,Lincoln Financial Field,Philadelphia,3,0 +982,2026,"Canada, Mexico, United States",2026-06-24,Group Stage,Matchday 14,Group C,Scotland,Brazil,0,2,0,3,,,,,Brazil,Normal Time,Hard Rock Stadium,Miami Gardens,0,3 +983,2026,"Canada, Mexico, United States",2026-06-24,Group Stage,Matchday 14,Group C,Morocco,Haiti,2,2,4,2,,,,,Morocco,Normal Time,Mercedes-Benz Stadium,Atlanta,4,2 +984,2026,"Canada, Mexico, United States",2026-06-12,Group Stage,Matchday 2,Group D,USA,Paraguay,3,0,4,1,,,,,USA,Normal Time,SoFi Stadium,Inglewood,4,1 +985,2026,"Canada, Mexico, United States",2026-06-13,Group Stage,Matchday 3,Group D,Australia,Turkey,1,0,2,0,,,,,Australia,Normal Time,BC Place,Vancouver,2,0 +986,2026,"Canada, Mexico, United States",2026-06-19,Group Stage,Matchday 9,Group D,USA,Australia,2,0,2,0,,,,,USA,Normal Time,Lumen Field,Seattle,2,0 +987,2026,"Canada, Mexico, United States",2026-06-19,Group Stage,Matchday 9,Group D,Turkey,Paraguay,0,1,0,1,,,,,Paraguay,Normal Time,Levi's Stadium,Santa Clara,0,1 +988,2026,"Canada, Mexico, United States",2026-06-25,Group Stage,Matchday 15,Group D,Turkey,USA,2,1,3,2,,,,,Turkey,Normal Time,SoFi Stadium,Inglewood,3,2 +989,2026,"Canada, Mexico, United States",2026-06-25,Group Stage,Matchday 15,Group D,Paraguay,Australia,0,0,0,0,,,,,Draw,Draw,Levi's Stadium,Santa Clara,0,0 +990,2026,"Canada, Mexico, United States",2026-06-14,Group Stage,Matchday 4,Group E,Germany,Curaçao,3,1,7,1,,,,,Germany,Normal Time,NRG Stadium,Houston,7,1 +991,2026,"Canada, Mexico, United States",2026-06-14,Group Stage,Matchday 4,Group E,Ivory Coast,Ecuador,0,0,1,0,,,,,Ivory Coast,Normal Time,Lincoln Financial Field,Philadelphia,1,0 +992,2026,"Canada, Mexico, United States",2026-06-20,Group Stage,Matchday 10,Group E,Germany,Ivory Coast,0,1,2,1,,,,,Germany,Normal Time,BMO Field,Toronto,2,1 +993,2026,"Canada, Mexico, United States",2026-06-20,Group Stage,Matchday 10,Group E,Ecuador,Curaçao,0,0,0,0,,,,,Draw,Draw,Arrowhead Stadium,Kansas City,0,0 +994,2026,"Canada, Mexico, United States",2026-06-25,Group Stage,Matchday 15,Group E,Curaçao,Ivory Coast,0,1,0,2,,,,,Ivory Coast,Normal Time,Lincoln Financial Field,Philadelphia,0,2 +995,2026,"Canada, Mexico, United States",2026-06-25,Group Stage,Matchday 15,Group E,Ecuador,Germany,1,1,2,1,,,,,Ecuador,Normal Time,MetLife Stadium,East Rutherford,2,1 +996,2026,"Canada, Mexico, United States",2026-06-14,Group Stage,Matchday 4,Group F,Netherlands,Japan,0,0,2,2,,,,,Draw,Draw,AT&T Stadium,Arlington,2,2 +997,2026,"Canada, Mexico, United States",2026-06-14,Group Stage,Matchday 4,Group F,Sweden,Tunisia,2,1,5,1,,,,,Sweden,Normal Time,Estadio Monterrey,Guadalupe,5,1 +998,2026,"Canada, Mexico, United States",2026-06-20,Group Stage,Matchday 10,Group F,Netherlands,Sweden,2,0,5,1,,,,,Netherlands,Normal Time,NRG Stadium,Houston,5,1 +999,2026,"Canada, Mexico, United States",2026-06-20,Group Stage,Matchday 10,Group F,Tunisia,Japan,0,2,0,4,,,,,Japan,Normal Time,Estadio Monterrey,Guadalupe,0,4 +1000,2026,"Canada, Mexico, United States",2026-06-25,Group Stage,Matchday 15,Group F,Japan,Sweden,0,0,1,1,,,,,Draw,Draw,AT&T Stadium,Arlington,1,1 +1001,2026,"Canada, Mexico, United States",2026-06-25,Group Stage,Matchday 15,Group F,Tunisia,Netherlands,0,2,1,3,,,,,Netherlands,Normal Time,Arrowhead Stadium,Kansas City,1,3 +1002,2026,"Canada, Mexico, United States",2026-06-15,Group Stage,Matchday 5,Group G,Belgium,Egypt,0,1,1,1,,,,,Draw,Draw,Lumen Field,Seattle,1,1 +1003,2026,"Canada, Mexico, United States",2026-06-15,Group Stage,Matchday 5,Group G,Iran,New Zealand,1,1,2,2,,,,,Draw,Draw,SoFi Stadium,Inglewood,2,2 +1004,2026,"Canada, Mexico, United States",2026-06-21,Group Stage,Matchday 11,Group G,Belgium,Iran,0,0,0,0,,,,,Draw,Draw,SoFi Stadium,Inglewood,0,0 +1005,2026,"Canada, Mexico, United States",2026-06-21,Group Stage,Matchday 11,Group G,New Zealand,Egypt,1,0,1,3,,,,,Egypt,Normal Time,BC Place,Vancouver,1,3 +1006,2026,"Canada, Mexico, United States",2026-06-26,Group Stage,Matchday 16,Group G,Egypt,Iran,1,1,1,1,,,,,Draw,Draw,Lumen Field,Seattle,1,1 +1007,2026,"Canada, Mexico, United States",2026-06-26,Group Stage,Matchday 16,Group G,New Zealand,Belgium,0,1,1,5,,,,,Belgium,Normal Time,BC Place,Vancouver,1,5 +1008,2026,"Canada, Mexico, United States",2026-06-15,Group Stage,Matchday 5,Group H,Spain,Cape Verde,0,0,0,0,,,,,Draw,Draw,Mercedes-Benz Stadium,Atlanta,0,0 +1009,2026,"Canada, Mexico, United States",2026-06-15,Group Stage,Matchday 5,Group H,Saudi Arabia,Uruguay,1,0,1,1,,,,,Draw,Draw,Hard Rock Stadium,Miami Gardens,1,1 +1010,2026,"Canada, Mexico, United States",2026-06-21,Group Stage,Matchday 11,Group H,Spain,Saudi Arabia,3,0,4,0,,,,,Spain,Normal Time,Mercedes-Benz Stadium,Atlanta,4,0 +1011,2026,"Canada, Mexico, United States",2026-06-21,Group Stage,Matchday 11,Group H,Uruguay,Cape Verde,2,1,2,2,,,,,Draw,Draw,Hard Rock Stadium,Miami Gardens,2,2 +1012,2026,"Canada, Mexico, United States",2026-06-26,Group Stage,Matchday 16,Group H,Cape Verde,Saudi Arabia,0,0,0,0,,,,,Draw,Draw,NRG Stadium,Houston,0,0 +1013,2026,"Canada, Mexico, United States",2026-06-26,Group Stage,Matchday 16,Group H,Uruguay,Spain,0,1,0,1,,,,,Spain,Normal Time,Estadio Guadalajara,Zapopan,0,1 +1014,2026,"Canada, Mexico, United States",2026-06-16,Group Stage,Matchday 6,Group I,France,Senegal,0,0,3,1,,,,,France,Normal Time,MetLife Stadium,East Rutherford,3,1 +1015,2026,"Canada, Mexico, United States",2026-06-16,Group Stage,Matchday 6,Group I,Iraq,Norway,1,2,1,4,,,,,Norway,Normal Time,Gillette Stadium,Foxborough,1,4 +1016,2026,"Canada, Mexico, United States",2026-06-22,Group Stage,Matchday 12,Group I,France,Iraq,1,0,3,0,,,,,France,Normal Time,Lincoln Financial Field,Philadelphia,3,0 +1017,2026,"Canada, Mexico, United States",2026-06-22,Group Stage,Matchday 12,Group I,Norway,Senegal,1,0,3,2,,,,,Norway,Normal Time,MetLife Stadium,East Rutherford,3,2 +1018,2026,"Canada, Mexico, United States",2026-06-26,Group Stage,Matchday 16,Group I,Norway,France,1,3,1,4,,,,,France,Normal Time,Gillette Stadium,Foxborough,1,4 +1019,2026,"Canada, Mexico, United States",2026-06-26,Group Stage,Matchday 16,Group I,Senegal,Iraq,1,0,5,0,,,,,Senegal,Normal Time,BMO Field,Toronto,5,0 +1020,2026,"Canada, Mexico, United States",2026-06-16,Group Stage,Matchday 6,Group J,Argentina,Algeria,1,0,3,0,,,,,Argentina,Normal Time,Arrowhead Stadium,Kansas City,3,0 +1021,2026,"Canada, Mexico, United States",2026-06-16,Group Stage,Matchday 6,Group J,Austria,Jordan,1,0,3,1,,,,,Austria,Normal Time,Levi's Stadium,Santa Clara,3,1 +1022,2026,"Canada, Mexico, United States",2026-06-22,Group Stage,Matchday 12,Group J,Argentina,Austria,1,0,2,0,,,,,Argentina,Normal Time,AT&T Stadium,Arlington,2,0 +1023,2026,"Canada, Mexico, United States",2026-06-22,Group Stage,Matchday 12,Group J,Jordan,Algeria,1,0,1,2,,,,,Algeria,Normal Time,Levi's Stadium,Santa Clara,1,2 +1024,2026,"Canada, Mexico, United States",2026-06-27,Group Stage,Matchday 17,Group J,Algeria,Austria,1,1,3,3,,,,,Draw,Draw,Arrowhead Stadium,Kansas City,3,3 +1025,2026,"Canada, Mexico, United States",2026-06-27,Group Stage,Matchday 17,Group J,Jordan,Argentina,0,2,1,3,,,,,Argentina,Normal Time,AT&T Stadium,Arlington,1,3 +1026,2026,"Canada, Mexico, United States",2026-06-17,Group Stage,Matchday 7,Group K,Portugal,DR Congo,1,1,1,1,,,,,Draw,Draw,NRG Stadium,Houston,1,1 +1027,2026,"Canada, Mexico, United States",2026-06-17,Group Stage,Matchday 7,Group K,Uzbekistan,Colombia,0,1,1,3,,,,,Colombia,Normal Time,Estadio Azteca,Mexico City,1,3 +1028,2026,"Canada, Mexico, United States",2026-06-23,Group Stage,Matchday 13,Group K,Portugal,Uzbekistan,3,0,5,0,,,,,Portugal,Normal Time,NRG Stadium,Houston,5,0 +1029,2026,"Canada, Mexico, United States",2026-06-23,Group Stage,Matchday 13,Group K,Colombia,DR Congo,0,0,1,0,,,,,Colombia,Normal Time,Estadio Guadalajara,Zapopan,1,0 +1030,2026,"Canada, Mexico, United States",2026-06-27,Group Stage,Matchday 17,Group K,Colombia,Portugal,0,0,0,0,,,,,Draw,Draw,Hard Rock Stadium,Miami Gardens,0,0 +1031,2026,"Canada, Mexico, United States",2026-06-27,Group Stage,Matchday 17,Group K,DR Congo,Uzbekistan,0,1,3,1,,,,,DR Congo,Normal Time,Mercedes-Benz Stadium,Atlanta,3,1 +1032,2026,"Canada, Mexico, United States",2026-06-17,Group Stage,Matchday 7,Group L,England,Croatia,2,2,4,2,,,,,England,Normal Time,AT&T Stadium,Arlington,4,2 +1033,2026,"Canada, Mexico, United States",2026-06-17,Group Stage,Matchday 7,Group L,Ghana,Panama,0,0,1,0,,,,,Ghana,Normal Time,BMO Field,Toronto,1,0 +1034,2026,"Canada, Mexico, United States",2026-06-23,Group Stage,Matchday 13,Group L,England,Ghana,0,0,0,0,,,,,Draw,Draw,Gillette Stadium,Foxborough,0,0 +1035,2026,"Canada, Mexico, United States",2026-06-23,Group Stage,Matchday 13,Group L,Panama,Croatia,0,0,0,1,,,,,Croatia,Normal Time,BMO Field,Toronto,0,1 +1036,2026,"Canada, Mexico, United States",2026-06-27,Group Stage,Matchday 17,Group L,Panama,England,0,0,0,2,,,,,England,Normal Time,MetLife Stadium,East Rutherford,0,2 +1037,2026,"Canada, Mexico, United States",2026-06-27,Group Stage,Matchday 17,Group L,Croatia,Ghana,1,0,2,1,,,,,Croatia,Normal Time,Lincoln Financial Field,Philadelphia,2,1 +1038,2026,"Canada, Mexico, United States",2026-06-28,Round of 32,Round of 32,,South Africa,Canada,0,0,0,1,,,,,Canada,Normal Time,SoFi Stadium,Inglewood,0,1 +1039,2026,"Canada, Mexico, United States",2026-06-29,Round of 32,Round of 32,,Germany,Paraguay,0,1,1,1,1,1,3,4,Paraguay,Penalties,Gillette Stadium,Foxborough,1,1 +1040,2026,"Canada, Mexico, United States",2026-06-29,Round of 32,Round of 32,,Netherlands,Morocco,0,0,1,1,1,1,2,3,Morocco,Penalties,Estadio Monterrey,Guadalupe,1,1 +1041,2026,"Canada, Mexico, United States",2026-06-29,Round of 32,Round of 32,,Brazil,Japan,0,1,2,1,,,,,Brazil,Normal Time,NRG Stadium,Houston,2,1 +1042,2026,"Canada, Mexico, United States",2026-06-30,Round of 32,Round of 32,,France,Sweden,1,0,3,0,,,,,France,Normal Time,MetLife Stadium,East Rutherford,3,0 +1043,2026,"Canada, Mexico, United States",2026-06-30,Round of 32,Round of 32,,Ivory Coast,Norway,0,1,1,2,,,,,Norway,Normal Time,AT&T Stadium,Arlington,1,2 +1044,2026,"Canada, Mexico, United States",2026-06-30,Round of 32,Round of 32,,Mexico,Ecuador,1,0,2,0,,,,,Mexico,Normal Time,Estadio Azteca,Mexico City,2,0 +1045,2026,"Canada, Mexico, United States",2026-07-01,Round of 32,Round of 32,,England,DR Congo,0,1,2,1,,,,,England,Normal Time,Mercedes-Benz Stadium,Atlanta,2,1 +1046,2026,"Canada, Mexico, United States",2026-07-01,Round of 32,Round of 32,,USA,Bosnia & Herzegovina,1,0,2,0,,,,,USA,Normal Time,Levi's Stadium,Santa Clara,2,0 +1047,2026,"Canada, Mexico, United States",2026-07-01,Round of 32,Round of 32,,Belgium,Senegal,0,1,2,2,3,2,,,Belgium,Extra Time,Lumen Field,Seattle,3,2 +1048,2026,"Canada, Mexico, United States",2026-07-02,Round of 32,Round of 32,,Portugal,Croatia,0,0,2,1,,,,,Portugal,Normal Time,BMO Field,Toronto,2,1 +1049,2026,"Canada, Mexico, United States",2026-07-02,Round of 32,Round of 32,,Spain,Austria,1,0,3,0,,,,,Spain,Normal Time,SoFi Stadium,Inglewood,3,0 +1050,2026,"Canada, Mexico, United States",2026-07-02,Round of 32,Round of 32,,Switzerland,Algeria,1,0,2,0,,,,,Switzerland,Normal Time,BC Place,Vancouver,2,0 +1051,2026,"Canada, Mexico, United States",2026-07-03,Round of 32,Round of 32,,Argentina,Cape Verde,1,0,1,1,3,2,,,Argentina,Extra Time,Hard Rock Stadium,Miami Gardens,3,2 +1052,2026,"Canada, Mexico, United States",2026-07-03,Round of 32,Round of 32,,Colombia,Ghana,1,0,1,0,,,,,Colombia,Normal Time,Arrowhead Stadium,Kansas City,1,0 +1053,2026,"Canada, Mexico, United States",2026-07-03,Round of 32,Round of 32,,Australia,Egypt,0,1,1,1,1,1,2,4,Egypt,Penalties,AT&T Stadium,Arlington,1,1 +1054,2026,"Canada, Mexico, United States",2026-07-04,Round of 16,Round of 16,,Paraguay,France,0,0,0,1,,,,,France,Normal Time,Lincoln Financial Field,Philadelphia,0,1 +1055,2026,"Canada, Mexico, United States",2026-07-04,Round of 16,Round of 16,,Canada,Morocco,0,0,0,3,,,,,Morocco,Normal Time,NRG Stadium,Houston,0,3 +1056,2026,"Canada, Mexico, United States",2026-07-05,Round of 16,Round of 16,,Brazil,Norway,0,0,1,2,,,,,Norway,Normal Time,MetLife Stadium,East Rutherford,1,2 +1057,2026,"Canada, Mexico, United States",2026-07-05,Round of 16,Round of 16,,Mexico,England,1,2,2,3,,,,,England,Normal Time,Estadio Azteca,Mexico City,2,3 +1058,2026,"Canada, Mexico, United States",2026-07-06,Round of 16,Round of 16,,Portugal,Spain,0,0,0,1,,,,,Spain,Normal Time,AT&T Stadium,Arlington,0,1 +1059,2026,"Canada, Mexico, United States",2026-07-06,Round of 16,Round of 16,,USA,Belgium,1,2,1,4,,,,,Belgium,Normal Time,Lumen Field,Seattle,1,4 +1060,2026,"Canada, Mexico, United States",2026-07-07,Round of 16,Round of 16,,Argentina,Egypt,0,1,3,2,,,,,Argentina,Normal Time,Mercedes-Benz Stadium,Atlanta,3,2 +1061,2026,"Canada, Mexico, United States",2026-07-07,Round of 16,Round of 16,,Switzerland,Colombia,0,0,0,0,0,0,4,3,Switzerland,Penalties,BC Place,Vancouver,0,0 +1062,2026,"Canada, Mexico, United States",2026-07-09,Quarter-final,Quarter-finals,,France,Morocco,0,0,2,0,,,,,France,Normal Time,Gillette Stadium,Foxborough,2,0 +1063,2026,"Canada, Mexico, United States",2026-07-10,Quarter-final,Quarter-finals,,Spain,Belgium,1,1,2,1,,,,,Spain,Normal Time,SoFi Stadium,Inglewood,2,1 +1064,2026,"Canada, Mexico, United States",2026-07-11,Quarter-final,Quarter-finals,,Norway,England,1,1,1,1,1,2,,,England,Extra Time,Hard Rock Stadium,Miami Gardens,1,2 +1065,2026,"Canada, Mexico, United States",2026-07-11,Quarter-final,Quarter-finals,,Argentina,Switzerland,1,0,1,1,3,1,,,Argentina,Extra Time,Arrowhead Stadium,Kansas City,3,1 +1066,2026,"Canada, Mexico, United States",2026-07-14,Semi-final,Semi-finals,,France,Spain,0,1,0,2,,,,,Spain,Normal Time,AT&T Stadium,Arlington,0,2 +1067,2026,"Canada, Mexico, United States",2026-07-15,Semi-final,Semi-finals,,England,Argentina,0,0,1,2,,,,,Argentina,Normal Time,Mercedes-Benz Stadium,Atlanta,1,2 +1068,2026,"Canada, Mexico, United States",2026-07-18,Third Place Play-off,Match for third place,,France,England,0,4,4,6,,,,,England,Normal Time,Hard Rock Stadium,Miami Gardens,4,6 +1069,2026,"Canada, Mexico, United States",2026-07-19,Final,Final,,Spain,Argentina,0,0,0,0,1,0,,,Spain,Extra Time,MetLife Stadium,East Rutherford,1,0 diff --git a/wayang-jdbc/demo/data/heart_disease_risk_2026.csv b/wayang-jdbc/demo/data/heart_disease_risk_2026.csv new file mode 100644 index 000000000..4cc797632 --- /dev/null +++ b/wayang-jdbc/demo/data/heart_disease_risk_2026.csv @@ -0,0 +1,9001 @@ +patient_id,age,sex,resting_bp_systolic,resting_bp_diastolic,cholesterol_total,hdl,ldl,triglycerides,fasting_blood_sugar,hba1c,bmi,resting_heart_rate,max_heart_rate_achieved,chest_pain_type,exercise_induced_angina,st_depression,family_history,smoker_status,alcohol_units_per_week,exercise_minutes_per_week,sleep_hours,stress_score,wearable_owner,daily_steps,diet_quality_score,has_heart_disease +1,44,Male,117,74,193,57,106,119,112,5.2,26.5,74,165,Asymptomatic,False,0.3,False,Never,2.9,86,5.4,19.8,True,7731,62.9,0 +2,57,Male,139,94,185,69,110,35,114,5.9,20.8,63,150,Non-Anginal Pain,False,2.1,False,Never,3.0,132,4.3,45.8,True,2629,74.6,1 +3,29,Male,128,78,197,52,108,157,95,5.5,24.5,81,210,Asymptomatic,False,0.8,False,Current,3.5,128,5.1,17.7,True,9290,65.7,0 +4,72,Male,132,86,197,59,104,143,92,4.8,27.3,93,137,Asymptomatic,False,2.1,False,Never,2.7,18,6.8,63.6,True,7373,48.5,1 +5,62,Female,116,75,154,65,75,104,135,6.2,26.0,86,181,Atypical Angina,True,1.3,True,Former,3.3,24,8.2,58.7,False,6331,47.3,1 +6,50,Female,122,71,147,46,101,41,134,5.9,28.9,88,185,Atypical Angina,False,0.8,True,Former,3.3,190,5.9,55.1,False,6857,82.6,0 +7,50,Female,133,85,227,63,124,194,109,5.5,26.0,80,182,Non-Anginal Pain,False,2.1,False,Never,5.1,91,8.2,82.2,True,8466,63.7,0 +8,58,Female,133,81,141,54,99,40,118,5.8,24.7,71,135,Asymptomatic,True,0.9,True,Current,2.5,92,6.4,45.5,True,6769,42.4,1 +9,51,Female,121,64,219,84,104,85,136,5.7,20.8,96,190,Asymptomatic,False,0.4,False,Former,2.8,266,9.0,65.6,True,7648,53.5,0 +10,51,Male,126,77,172,50,104,115,132,6.3,19.5,76,151,Asymptomatic,False,0.3,True,Former,6.1,89,9.1,58.7,False,7531,53.2,0 +11,63,Female,123,87,164,65,81,136,170,6.9,19.2,83,125,Asymptomatic,True,1.2,False,Never,4.7,155,7.2,54.0,False,3440,62.7,1 +12,61,Female,112,77,230,65,148,105,101,5.5,22.3,78,145,Asymptomatic,True,0.4,False,Never,14.1,197,5.4,32.5,True,6443,80.9,0 +13,53,Female,110,81,166,52,104,149,103,5.3,22.7,79,181,Atypical Angina,False,1.6,False,Never,6.8,227,7.6,36.7,True,7583,60.0,0 +14,53,Male,131,70,192,63,92,127,107,4.9,28.0,78,173,Asymptomatic,False,1.0,False,Never,14.6,84,5.1,52.1,True,8539,80.2,0 +15,56,Female,148,92,177,41,107,102,78,5.7,28.0,90,167,Asymptomatic,False,0.2,False,Never,8.7,70,7.1,51.3,True,4864,64.8,0 +16,46,Male,134,77,105,46,36,118,84,4.4,25.6,77,178,Asymptomatic,False,0.6,False,Never,1.8,196,6.8,39.5,True,9626,78.6,0 +17,49,Male,150,96,158,47,81,214,136,6.0,22.7,82,180,Non-Anginal Pain,False,0.3,False,Former,15.3,165,7.1,48.3,False,9860,50.9,0 +18,61,Female,138,95,272,44,191,141,155,7.2,31.3,74,121,Asymptomatic,True,0.1,False,Never,0.4,103,7.7,25.8,False,4593,46.7,1 +19,52,Female,126,80,162,67,65,208,87,4.7,22.8,83,176,Asymptomatic,False,1.1,False,Former,14.0,162,5.6,49.9,False,5681,52.9,0 +20,36,Female,102,62,170,86,66,86,64,4.4,15.9,63,209,Asymptomatic,False,1.1,False,Never,1.7,266,5.3,32.2,False,7563,73.1,0 +21,48,Female,126,87,232,58,134,232,124,5.5,22.3,78,157,Non-Anginal Pain,False,1.4,False,Current,10.5,116,7.9,71.4,False,6483,63.6,1 +22,63,Male,126,87,229,47,148,191,88,4.9,21.1,80,151,Asymptomatic,True,0.4,False,Former,2.3,107,7.3,40.5,False,5408,64.5,0 +23,51,Male,129,81,149,53,88,82,183,7.2,27.4,66,176,Atypical Angina,False,0.7,False,Never,7.6,191,7.2,39.6,False,5714,59.7,0 +24,52,Female,126,77,134,77,58,56,121,5.9,20.5,65,158,Non-Anginal Pain,False,0.9,False,Former,3.7,206,8.1,46.6,True,9080,28.1,0 +25,62,Male,145,99,238,57,147,210,84,4.9,29.9,81,129,Asymptomatic,True,2.9,True,Never,4.7,85,6.1,35.7,False,4423,57.0,1 +26,78,Male,129,73,192,61,96,157,143,7.0,19.2,80,164,Non-Anginal Pain,False,0.6,True,Never,3.4,251,9.2,55.3,True,6652,73.1,0 +27,45,Female,133,81,199,50,108,199,138,6.2,27.5,76,173,Atypical Angina,False,0.3,False,Never,3.6,178,7.2,13.1,True,4106,32.0,0 +28,72,Male,125,76,138,64,62,153,146,6.1,25.8,78,157,Non-Anginal Pain,False,0.7,False,Never,16.7,170,5.5,11.2,True,8068,56.6,0 +29,38,Male,135,75,145,39,84,119,134,6.0,22.8,87,206,Asymptomatic,False,3.0,False,Never,2.1,165,6.7,44.0,False,4825,59.9,0 +30,56,Male,127,80,196,56,100,209,103,4.3,20.1,62,180,Asymptomatic,False,0.5,False,Never,18.3,167,8.4,17.5,False,5064,85.6,0 +31,39,Female,125,91,204,61,97,183,60,4.0,20.8,88,182,Atypical Angina,False,0.0,False,Current,0.9,146,5.9,45.5,False,5418,24.5,0 +32,72,Male,124,87,204,68,91,227,153,6.7,22.1,82,149,Typical Angina,True,0.6,False,Never,16.6,104,6.3,54.3,False,7079,45.3,1 +33,65,Male,143,76,130,39,79,85,95,5.1,25.9,87,132,Asymptomatic,False,1.2,False,Never,4.5,135,8.4,60.0,True,9496,46.1,1 +34,69,Female,123,84,178,57,116,111,94,5.2,18.9,65,123,Non-Anginal Pain,False,1.0,True,Former,1.9,68,8.3,55.2,True,5912,58.8,0 +35,42,Female,121,75,193,73,93,164,103,6.0,26.9,69,194,Asymptomatic,False,1.4,False,Former,11.7,179,7.3,45.6,True,8685,49.8,0 +36,63,Female,118,66,141,39,82,149,108,5.4,28.6,63,158,Atypical Angina,False,0.7,True,Never,1.6,114,7.3,64.3,False,5478,57.9,0 +37,47,Male,131,73,249,50,155,222,118,6.4,30.1,77,154,Atypical Angina,True,0.9,False,Never,18.5,94,8.4,60.2,False,1639,57.3,0 +38,48,Female,132,92,231,71,107,237,144,6.5,24.1,63,168,Asymptomatic,False,0.5,True,Former,18.9,180,7.2,47.6,False,7206,50.1,0 +39,61,Male,106,65,196,41,106,115,164,7.5,26.3,100,160,Asymptomatic,True,0.4,False,Former,3.0,120,10.0,64.4,False,7174,89.2,1 +40,65,Female,136,89,179,43,102,121,124,6.0,29.4,84,139,Non-Anginal Pain,False,1.9,False,Current,6.8,178,4.9,35.7,False,5151,62.0,1 +41,57,Female,127,79,172,32,121,122,142,6.3,24.8,82,177,Asymptomatic,False,1.0,False,Never,0.3,171,6.7,50.5,False,6841,57.4,0 +42,46,Male,103,59,237,48,153,154,138,6.6,22.6,81,210,Atypical Angina,False,0.2,False,Former,2.0,221,7.9,10.4,False,3549,47.3,0 +43,43,Female,125,75,215,70,126,129,114,5.2,25.2,75,194,Non-Anginal Pain,False,1.6,False,Never,7.7,176,5.6,48.5,True,5420,34.0,0 +44,73,Female,138,102,142,46,78,98,106,5.4,21.5,81,132,Asymptomatic,False,1.2,False,Never,6.3,135,5.9,55.7,True,3512,61.0,0 +45,62,Female,137,74,263,71,161,93,77,4.6,28.6,83,130,Asymptomatic,False,2.0,True,Current,7.7,176,7.1,70.5,True,9406,64.2,1 +46,63,Female,135,79,239,68,128,255,119,5.6,28.2,70,169,Atypical Angina,False,1.2,True,Former,9.9,203,8.0,25.2,False,7474,45.8,0 +47,82,Female,134,75,188,65,97,159,115,5.7,22.8,73,132,Atypical Angina,False,1.1,True,Never,1.4,167,7.2,54.2,True,9456,44.0,0 +48,43,Female,132,88,149,38,101,108,96,5.1,29.2,82,173,Non-Anginal Pain,True,0.4,False,Former,2.9,134,5.5,72.4,True,7278,62.7,1 +49,87,Female,137,94,214,69,121,155,141,6.3,24.8,72,140,Asymptomatic,True,3.1,True,Former,5.6,122,5.8,44.4,True,6277,78.6,1 +50,90,Female,143,95,197,70,99,169,106,5.0,16.4,90,140,Atypical Angina,False,0.7,False,Former,24.6,169,7.1,70.5,False,5986,49.8,1 +51,75,Female,141,86,259,56,181,122,135,5.9,23.5,82,109,Asymptomatic,False,0.7,False,Never,0.3,125,7.7,49.8,True,6994,51.0,1 +52,65,Male,118,72,165,66,55,197,77,4.8,16.4,70,153,Atypical Angina,False,0.2,True,Never,14.3,139,7.8,67.3,False,3561,66.4,0 +53,45,Female,113,70,173,72,83,144,80,4.8,24.1,84,174,Non-Anginal Pain,False,0.2,False,Never,3.6,111,7.7,80.6,True,8661,81.2,0 +54,67,Female,118,73,218,90,92,192,96,5.6,19.8,80,153,Asymptomatic,False,0.6,False,Never,3.0,244,9.1,26.3,True,5982,72.7,0 +55,48,Male,137,84,186,53,108,211,159,7.0,28.8,75,166,Asymptomatic,False,0.9,False,Never,6.9,178,6.4,52.7,False,4894,57.9,0 +56,54,Male,139,90,190,44,98,188,126,5.1,26.4,72,180,Typical Angina,False,0.2,False,Never,5.8,56,6.4,38.0,True,5451,55.8,0 +57,50,Male,155,107,170,49,97,202,126,6.1,28.6,80,175,Non-Anginal Pain,True,0.7,False,Never,11.0,146,6.7,43.7,True,9740,70.0,0 +58,58,Female,153,96,190,57,114,120,82,5.2,26.2,76,171,Non-Anginal Pain,False,0.3,False,Current,1.1,142,7.1,74.4,True,10719,77.6,1 +59,71,Male,133,71,157,47,90,196,122,5.4,24.2,89,132,Asymptomatic,True,0.1,False,Former,1.5,32,8.9,45.6,False,1009,49.0,1 +60,47,Male,124,83,182,55,96,161,147,6.9,27.6,77,145,Typical Angina,True,0.3,False,Never,5.4,261,6.2,46.8,True,8530,93.2,1 +61,41,Male,115,64,135,51,45,163,118,5.6,28.0,84,144,Asymptomatic,True,1.5,False,Never,6.3,89,7.8,24.8,False,3746,55.6,0 +62,41,Female,122,68,150,45,62,180,108,5.9,25.0,72,200,Atypical Angina,True,0.3,True,Former,1.9,168,6.1,29.5,False,6575,38.2,0 +63,41,Male,111,72,231,58,136,164,104,5.0,24.1,80,208,Asymptomatic,False,0.0,False,Never,7.3,78,6.7,60.5,False,3470,44.6,0 +64,35,Female,116,76,262,65,136,244,140,5.5,31.1,76,193,Asymptomatic,False,1.4,True,Never,0.0,155,7.2,48.0,False,5293,33.9,0 +65,42,Male,102,67,185,90,61,144,141,6.0,15.0,58,204,Asymptomatic,False,0.3,True,Current,1.5,279,6.9,39.4,True,10306,53.4,0 +66,71,Female,139,85,203,57,127,122,124,6.2,28.6,83,152,Non-Anginal Pain,True,3.0,False,Never,2.6,202,6.1,47.0,True,5469,53.9,1 +67,46,Male,144,83,158,48,64,190,94,4.6,20.9,90,207,Asymptomatic,True,0.9,True,Never,25.8,177,8.0,80.3,True,4468,61.5,0 +68,57,Male,137,89,222,58,154,134,134,6.1,24.2,82,148,Asymptomatic,False,1.1,True,Never,17.0,144,7.3,48.7,True,7402,49.6,0 +69,38,Male,113,65,180,36,116,121,143,6.8,24.1,75,170,Typical Angina,False,3.6,False,Never,5.6,41,6.6,45.1,False,4544,42.5,1 +70,56,Female,125,84,167,57,94,123,105,5.3,17.2,88,150,Asymptomatic,False,0.2,False,Current,1.2,171,8.5,38.0,True,7252,48.3,0 +71,31,Female,131,79,208,72,111,132,113,5.9,24.0,73,184,Asymptomatic,False,1.2,False,Never,3.7,101,6.8,63.6,True,6951,77.4,0 +72,45,Male,139,89,180,32,128,93,98,5.6,26.3,87,169,Non-Anginal Pain,False,1.4,True,Never,9.7,163,7.3,33.3,True,8326,68.0,0 +73,83,Male,148,98,161,35,112,124,93,5.2,24.7,72,121,Non-Anginal Pain,True,0.1,False,Former,2.2,141,5.6,70.5,False,7318,84.2,1 +74,46,Male,136,90,212,47,138,100,82,4.8,19.3,78,166,Non-Anginal Pain,False,1.2,False,Never,3.6,162,5.8,47.2,False,4685,72.5,0 +75,69,Male,131,90,197,38,117,183,128,5.9,28.4,70,169,Asymptomatic,False,0.5,False,Never,6.8,111,8.2,56.0,False,6717,31.7,0 +76,60,Male,156,92,163,56,56,290,108,5.5,28.1,87,157,Atypical Angina,False,2.6,True,Never,13.2,157,8.2,40.5,False,4347,49.1,0 +77,52,Male,124,72,178,63,84,129,132,6.2,27.1,85,177,Asymptomatic,False,0.7,False,Never,2.3,207,7.9,41.9,True,9628,73.6,0 +78,46,Male,140,95,173,42,93,171,114,5.7,26.3,83,205,Asymptomatic,False,0.2,True,Never,15.7,117,6.1,57.9,True,3751,76.8,0 +79,71,Female,148,92,206,61,120,73,162,6.5,21.9,76,150,Asymptomatic,False,0.7,True,Current,3.1,110,7.6,44.7,False,2404,57.4,0 +80,52,Male,126,86,213,67,128,112,156,7.2,26.8,80,182,Asymptomatic,True,0.6,False,Never,9.8,96,6.4,53.2,True,7284,51.8,0 +81,74,Female,142,80,190,53,104,111,100,5.3,24.4,74,136,Asymptomatic,False,2.2,False,Current,0.3,239,9.3,34.7,True,5383,71.5,0 +82,45,Male,124,74,153,58,78,95,112,5.5,21.4,89,182,Atypical Angina,False,0.5,True,Current,2.3,84,6.8,29.4,True,8516,44.6,1 +83,55,Female,113,71,208,66,88,239,84,4.7,22.6,79,166,Non-Anginal Pain,False,0.2,True,Former,4.0,194,6.6,57.6,False,5825,59.0,0 +84,60,Male,119,81,192,54,117,158,122,6.0,17.3,69,186,Non-Anginal Pain,False,1.3,False,Never,1.9,178,8.6,23.6,False,3984,73.1,0 +85,59,Female,143,101,216,71,107,189,133,6.0,31.4,77,141,Atypical Angina,False,3.8,False,Never,3.2,196,7.8,31.3,False,7782,57.4,1 +86,38,Female,124,85,166,66,74,165,107,5.2,25.8,81,184,Non-Anginal Pain,False,0.2,False,Never,5.5,73,6.3,39.6,False,4761,44.3,0 +87,45,Male,126,74,170,49,82,215,124,6.2,23.6,74,193,Typical Angina,False,0.1,True,Never,7.3,268,4.0,38.7,True,9865,60.7,0 +88,51,Male,116,72,227,58,148,111,135,6.5,20.8,87,166,Atypical Angina,False,0.3,True,Former,3.3,228,8.2,67.3,True,6216,56.1,0 +89,43,Female,107,66,156,43,98,70,124,5.8,27.1,81,201,Asymptomatic,False,0.6,False,Never,7.3,87,7.6,58.6,True,4938,70.2,0 +90,63,Female,113,82,207,48,119,188,103,5.2,25.3,93,149,Asymptomatic,True,0.4,False,Former,2.8,58,5.6,32.6,False,4082,62.6,1 +91,62,Male,148,86,134,31,67,157,160,7.6,31.2,84,118,Asymptomatic,True,2.8,False,Never,19.0,0,7.2,55.4,True,5831,61.5,1 +92,29,Male,116,56,190,59,98,172,117,5.9,26.5,85,195,Non-Anginal Pain,False,0.9,False,Current,5.0,168,6.5,20.2,True,7706,60.7,0 +93,31,Female,115,73,202,57,116,106,79,5.0,22.0,91,195,Non-Anginal Pain,False,0.8,False,Former,7.3,118,6.6,50.2,False,7412,74.9,0 +94,37,Male,121,92,132,57,35,93,103,5.4,21.2,80,192,Asymptomatic,False,0.3,False,Never,2.1,214,6.3,52.4,True,9985,57.5,0 +95,56,Female,137,86,175,59,100,153,101,4.6,20.6,77,167,Atypical Angina,False,0.6,False,Never,5.9,141,8.6,88.2,True,4963,69.0,0 +96,80,Male,121,79,289,66,178,263,143,6.5,21.3,83,132,Atypical Angina,False,1.0,False,Current,1.9,229,5.8,53.7,True,7844,78.6,0 +97,49,Male,127,79,182,58,55,314,97,4.9,19.7,89,193,Non-Anginal Pain,False,1.1,False,Current,33.2,181,4.1,49.6,False,7520,49.5,0 +98,57,Male,140,79,150,41,79,193,178,7.0,25.4,69,134,Asymptomatic,True,2.8,True,Never,5.1,86,7.8,81.9,True,8197,54.8,1 +99,40,Male,135,73,247,61,149,176,104,4.4,24.7,69,196,Asymptomatic,False,0.6,True,Former,2.6,189,8.3,33.4,False,5398,62.4,0 +100,40,Female,129,76,210,51,110,279,95,5.2,29.9,92,179,Non-Anginal Pain,False,0.2,False,Former,19.2,94,6.5,57.4,False,6911,41.8,0 +101,29,Male,98,60,214,52,142,103,124,5.3,28.5,85,167,Atypical Angina,False,1.9,False,Current,4.1,170,9.5,41.7,True,6424,52.4,1 +102,54,Female,130,82,197,68,97,109,137,6.2,30.2,82,154,Asymptomatic,False,0.7,False,Never,7.3,107,6.5,55.6,False,6714,45.8,0 +103,66,Female,129,75,217,51,147,139,124,6.3,27.6,84,140,Asymptomatic,True,1.5,False,Never,2.9,147,7.8,43.9,True,5643,62.9,1 +104,49,Male,134,84,180,51,101,170,135,6.4,32.2,62,185,Typical Angina,False,0.6,False,Never,3.2,202,7.8,41.9,True,7794,48.3,0 +105,72,Male,121,62,132,63,49,118,86,5.2,17.7,60,159,Atypical Angina,False,1.9,False,Never,4.8,154,7.9,36.5,False,4051,66.9,0 +106,57,Male,120,82,158,52,80,171,169,6.9,26.8,96,167,Asymptomatic,False,0.3,True,Never,11.7,0,7.8,25.9,True,4769,47.1,0 +107,54,Male,145,98,247,65,157,110,97,5.4,31.4,72,151,Asymptomatic,False,0.8,False,Former,2.6,158,7.5,40.6,False,3490,29.2,0 +108,61,Female,110,82,149,55,77,148,99,5.1,22.2,70,164,Non-Anginal Pain,True,0.1,False,Never,3.3,136,7.6,12.8,False,6953,21.2,0 +109,60,Male,119,74,194,40,111,212,72,4.6,28.5,83,151,Asymptomatic,True,1.8,False,Former,1.7,116,9.0,49.0,False,3222,63.4,1 +110,69,Female,140,99,175,46,81,203,107,5.6,30.5,88,109,Asymptomatic,False,1.6,False,Never,8.9,122,7.0,54.1,False,3448,35.6,1 +111,44,Male,107,65,224,46,120,202,89,5.3,22.7,81,195,Asymptomatic,False,0.2,False,Former,2.0,244,6.3,30.8,False,6194,79.4,0 +112,24,Male,112,75,159,52,58,264,111,5.6,22.6,77,210,Asymptomatic,False,0.7,False,Never,15.1,173,7.8,67.4,False,8550,48.9,0 +113,55,Female,143,101,202,52,108,167,143,6.4,23.4,76,161,Asymptomatic,True,3.7,False,Never,7.3,130,6.0,42.7,False,6604,66.8,1 +114,46,Female,116,69,171,59,82,158,103,5.5,29.8,98,184,Asymptomatic,False,0.5,False,Former,1.2,81,6.3,36.9,False,3527,38.3,0 +115,54,Female,138,91,171,69,81,35,113,6.2,27.9,93,162,Asymptomatic,False,0.1,False,Never,7.6,124,6.2,64.0,False,9015,68.5,0 +116,76,Female,141,97,233,43,154,183,112,5.9,31.9,79,168,Asymptomatic,False,0.2,False,Current,5.0,84,7.3,68.5,True,6176,37.4,0 +117,40,Female,113,74,174,52,82,159,111,5.2,18.1,86,172,Asymptomatic,False,1.4,False,Former,3.4,143,7.2,58.2,False,8240,83.6,0 +118,64,Female,134,81,182,52,95,228,133,5.6,30.3,94,150,Typical Angina,True,0.6,False,Never,8.5,34,7.8,57.8,False,7689,37.8,1 +119,66,Male,115,72,180,41,101,224,154,6.8,29.4,76,155,Non-Anginal Pain,False,0.3,False,Never,21.1,112,5.9,50.4,True,6597,67.7,1 +120,60,Male,131,76,149,48,83,113,135,6.5,28.5,85,120,Atypical Angina,True,1.0,False,Never,2.9,0,8.1,67.9,False,2307,48.9,1 +121,69,Male,133,84,192,49,114,127,118,5.8,29.2,89,154,Asymptomatic,False,0.5,True,Current,24.0,0,7.9,63.8,True,2791,46.1,0 +122,48,Female,103,69,214,56,112,182,151,6.2,23.3,82,160,Typical Angina,False,1.3,True,Former,7.5,187,6.8,52.6,True,3253,70.0,0 +123,45,Female,127,79,217,49,129,172,111,5.5,24.3,88,201,Asymptomatic,False,0.3,False,Current,0.8,94,6.5,28.3,True,11125,61.6,0 +124,68,Male,136,96,161,56,77,179,133,6.3,22.1,89,155,Asymptomatic,False,0.7,True,Former,1.8,78,7.7,61.0,False,1587,57.9,0 +125,63,Male,134,81,171,30,126,141,143,6.5,40.0,93,155,Typical Angina,True,0.0,False,Never,3.4,151,5.0,30.1,False,6740,61.0,1 +126,72,Male,153,90,243,55,148,235,146,6.5,29.7,89,127,Atypical Angina,True,0.5,False,Never,6.8,27,5.6,36.5,False,4505,39.6,1 +127,57,Male,102,68,177,48,113,90,121,5.7,17.7,69,176,Asymptomatic,False,0.8,False,Never,10.8,195,7.2,74.2,True,6960,53.4,0 +128,75,Male,168,99,200,51,114,109,120,5.6,32.8,79,141,Typical Angina,False,2.4,True,Former,5.9,160,6.8,32.6,True,3685,68.5,1 +129,50,Male,140,83,155,53,84,116,141,6.5,29.1,74,184,Asymptomatic,False,1.0,False,Never,7.0,71,5.6,48.0,False,5615,58.6,0 +130,40,Female,123,79,248,61,148,156,100,4.8,16.5,85,179,Atypical Angina,False,0.8,False,Current,5.6,161,7.7,37.2,False,8059,62.4,1 +131,28,Male,121,79,183,21,119,155,122,5.6,33.1,93,179,Atypical Angina,False,0.1,False,Current,15.0,120,8.2,39.7,True,2708,51.6,0 +132,40,Female,132,84,134,43,76,119,105,5.5,26.1,96,180,Atypical Angina,False,0.6,False,Former,3.9,0,6.9,56.9,False,5879,35.5,0 +133,65,Female,129,75,241,48,154,112,141,6.5,25.8,81,162,Asymptomatic,False,0.6,False,Former,2.8,94,6.7,36.5,False,2595,46.6,0 +134,35,Male,105,60,208,62,111,159,143,5.7,19.8,88,189,Typical Angina,False,1.4,False,Current,7.1,176,7.8,35.7,False,7470,67.2,0 +135,48,Female,109,72,146,42,67,211,164,7.1,24.6,91,184,Asymptomatic,False,0.7,True,Never,0.9,58,6.9,56.8,False,4136,43.5,0 +136,81,Male,123,85,249,61,149,155,155,7.4,22.4,85,134,Non-Anginal Pain,True,2.2,False,Never,9.5,108,6.4,47.2,False,6956,33.8,1 +137,65,Female,138,97,314,74,193,220,130,5.8,27.1,79,141,Asymptomatic,False,2.4,True,Former,0.3,99,6.5,45.1,True,9622,34.8,1 +138,77,Female,138,97,183,60,70,225,111,5.7,27.4,76,149,Asymptomatic,False,0.7,True,Former,12.4,64,7.5,16.0,False,7582,53.8,0 +139,41,Male,134,86,206,49,134,185,68,4.0,26.9,69,198,Atypical Angina,True,0.7,False,Never,2.2,103,7.9,42.4,True,7398,53.3,0 +140,22,Female,113,68,205,77,119,62,90,5.0,20.9,76,209,Asymptomatic,False,0.9,True,Never,5.4,214,6.9,51.6,False,6970,33.5,0 +141,74,Male,136,79,174,55,102,123,155,7.2,25.0,70,156,Asymptomatic,False,0.4,False,Former,1.7,119,6.3,6.9,False,4643,53.3,0 +142,36,Male,113,70,128,44,71,53,134,6.3,20.7,78,198,Asymptomatic,False,0.3,False,Current,4.5,182,8.1,53.0,True,4784,30.9,0 +143,55,Female,131,82,178,51,98,204,143,6.3,29.6,91,176,Asymptomatic,True,0.8,False,Current,7.1,90,7.6,43.2,True,8295,62.6,0 +144,57,Male,127,78,177,47,112,118,123,5.5,28.5,82,151,Asymptomatic,True,1.7,False,Never,7.8,46,7.1,62.6,True,2153,48.1,1 +145,42,Female,134,84,196,57,128,95,150,6.8,27.5,70,186,Non-Anginal Pain,False,1.7,False,Never,5.9,180,6.4,32.2,False,5337,62.4,0 +146,74,Female,130,72,226,60,118,245,113,5.4,27.1,76,135,Atypical Angina,False,0.4,False,Never,4.3,161,7.9,96.7,True,5822,52.7,0 +147,74,Male,139,86,217,43,132,157,109,5.2,22.1,73,106,Atypical Angina,False,1.1,False,Former,5.6,87,7.7,55.3,False,2985,47.2,1 +148,61,Male,141,97,182,40,120,120,106,5.4,32.4,96,136,Asymptomatic,True,1.1,False,Current,1.6,54,7.2,62.3,False,9236,55.5,1 +149,54,Female,139,90,185,79,86,135,122,5.7,26.9,91,173,Typical Angina,False,0.4,False,Former,6.5,195,6.7,62.8,True,5932,59.8,0 +150,56,Female,119,76,122,41,65,173,125,5.9,26.0,85,154,Non-Anginal Pain,True,1.7,True,Current,7.9,106,7.7,66.1,False,10736,15.9,1 +151,40,Female,124,82,214,52,154,45,93,4.7,26.1,72,175,Asymptomatic,True,0.1,False,Current,0.6,181,8.7,50.3,True,6839,53.3,0 +152,51,Male,124,70,188,35,113,162,148,6.8,31.3,91,164,Asymptomatic,False,0.3,False,Current,6.2,51,4.9,30.1,False,6574,51.0,1 +153,53,Female,125,88,192,61,105,143,115,5.8,27.4,80,171,Atypical Angina,False,0.1,True,Never,1.2,140,6.0,54.2,False,4151,88.5,0 +154,43,Female,127,84,198,44,139,92,121,5.6,28.9,78,186,Asymptomatic,False,0.3,True,Current,2.6,242,6.1,57.5,True,8554,67.7,0 +155,65,Male,130,95,188,47,112,155,144,6.5,29.4,85,141,Asymptomatic,False,0.4,False,Current,6.6,103,5.3,55.9,False,3467,36.1,1 +156,35,Male,147,89,224,73,98,184,141,7.0,26.3,75,176,Asymptomatic,False,1.1,False,Never,2.6,126,5.9,49.4,False,3980,46.6,1 +157,48,Female,119,80,220,60,129,132,139,6.3,30.0,91,183,Non-Anginal Pain,False,0.2,True,Never,0.6,169,6.8,46.3,True,6686,81.4,0 +158,25,Female,125,80,166,66,70,194,113,5.5,21.7,84,210,Typical Angina,False,0.8,False,Current,22.7,262,6.5,58.3,True,12857,59.6,0 +159,60,Male,155,89,106,46,50,90,136,5.9,26.9,84,108,Non-Anginal Pain,True,1.9,False,Former,9.3,87,6.5,68.0,False,2347,67.2,1 +160,64,Male,133,83,206,69,97,93,100,5.3,22.8,71,150,Atypical Angina,False,1.0,False,Former,2.5,158,4.8,20.4,False,9709,90.5,0 +161,62,Female,145,101,168,60,97,123,141,6.4,28.4,77,186,Asymptomatic,False,0.5,False,Never,6.5,279,8.3,33.0,True,7100,58.1,0 +162,90,Male,120,80,209,78,121,87,99,5.2,15.0,71,129,Asymptomatic,False,0.6,False,Former,12.2,206,7.8,42.1,True,3809,74.0,0 +163,66,Male,140,89,201,54,120,125,119,5.3,24.0,75,138,Typical Angina,True,0.5,False,Never,6.1,115,6.8,61.4,True,6950,85.2,1 +164,42,Male,127,88,144,49,72,169,108,5.2,22.6,82,178,Asymptomatic,True,2.2,True,Never,15.9,99,8.2,33.9,True,7044,60.3,0 +165,89,Male,153,86,229,56,127,206,146,6.8,27.1,81,118,Atypical Angina,False,0.3,False,Never,2.2,124,8.2,64.4,False,5567,69.9,1 +166,42,Male,127,91,153,59,85,70,98,5.6,21.4,63,172,Asymptomatic,False,0.3,False,Former,1.9,235,5.1,50.1,True,9687,53.4,0 +167,64,Male,140,89,184,43,106,226,146,6.7,18.6,63,138,Atypical Angina,False,4.3,True,Never,40.2,100,7.3,61.7,False,4717,80.9,1 +168,64,Female,134,92,171,64,113,77,125,6.1,23.5,82,158,Asymptomatic,False,0.2,False,Never,1.2,11,5.4,88.4,False,7435,59.5,0 +169,43,Female,113,62,161,47,77,137,107,5.0,23.9,76,200,Asymptomatic,False,0.4,False,Former,12.6,85,6.8,43.6,False,8363,82.4,0 +170,72,Male,135,86,205,63,116,155,104,5.0,29.3,78,134,Typical Angina,False,1.2,False,Never,9.4,33,7.0,57.3,False,3990,52.0,1 +171,59,Female,138,82,189,55,69,243,93,4.8,21.2,73,152,Asymptomatic,False,1.1,False,Never,1.2,84,6.2,36.0,True,4048,74.2,0 +172,61,Male,130,75,180,50,89,204,119,5.9,25.0,65,146,Asymptomatic,True,0.4,False,Former,8.5,175,7.5,16.6,False,6063,49.2,1 +173,45,Male,124,68,185,55,99,180,137,6.0,25.3,82,168,Atypical Angina,False,0.8,False,Never,3.7,147,7.2,63.6,False,7331,91.5,0 +174,71,Male,134,87,199,41,134,138,132,6.5,25.9,86,130,Asymptomatic,False,0.7,True,Former,3.9,116,8.2,46.6,True,8956,76.6,1 +175,43,Female,101,68,160,46,87,131,115,5.1,20.9,77,172,Non-Anginal Pain,False,3.1,False,Current,2.1,120,5.7,74.4,False,4668,41.6,0 +176,31,Female,106,81,173,52,105,62,140,6.3,27.2,81,210,Atypical Angina,False,0.6,False,Never,2.3,57,7.4,49.2,False,6239,60.9,0 +177,73,Male,135,98,181,56,79,247,118,5.9,25.4,88,143,Asymptomatic,False,1.3,False,Current,3.7,328,7.6,55.9,True,5525,39.1,1 +178,48,Female,117,79,148,62,62,106,122,6.2,23.9,84,183,Asymptomatic,True,0.1,False,Former,0.7,158,6.4,78.8,True,8548,53.9,0 +179,55,Female,147,93,177,48,87,173,113,5.6,27.8,78,178,Asymptomatic,True,1.0,True,Former,3.5,101,6.2,83.6,True,7371,67.4,0 +180,79,Female,164,103,158,65,67,109,113,5.9,30.1,66,151,Asymptomatic,False,0.3,False,Former,1.0,149,6.7,22.8,True,5938,62.3,0 +181,69,Female,134,83,146,52,65,165,113,5.9,20.1,83,174,Asymptomatic,True,2.0,False,Never,1.5,42,6.6,57.5,False,3170,43.9,0 +182,62,Male,131,91,134,38,67,118,92,4.7,17.5,89,169,Typical Angina,False,0.4,False,Never,14.7,163,7.5,66.9,False,6980,56.0,0 +183,68,Female,136,94,164,33,92,170,142,6.2,35.2,90,154,Asymptomatic,False,0.9,True,Former,10.0,136,5.6,61.0,True,6194,68.9,0 +184,45,Female,124,78,226,50,103,361,136,6.3,26.2,102,181,Asymptomatic,False,0.8,False,Never,34.1,130,7.0,53.5,False,6808,64.0,0 +185,64,Female,129,87,204,74,102,129,117,5.7,20.4,71,170,Non-Anginal Pain,False,0.4,False,Never,1.4,239,6.0,9.8,False,7293,37.4,0 +186,68,Female,157,99,186,53,106,150,111,5.2,27.4,88,148,Asymptomatic,False,0.0,False,Never,0.1,152,7.6,53.1,False,3955,47.4,0 +187,64,Male,128,89,224,55,123,175,111,6.1,26.7,85,175,Asymptomatic,False,0.6,False,Current,4.3,91,5.9,58.3,False,3573,78.3,0 +188,51,Female,136,102,212,76,101,186,137,6.7,28.9,85,170,Asymptomatic,False,0.6,True,Never,1.8,161,8.3,30.7,False,3955,58.2,0 +189,18,Male,116,69,172,53,79,205,123,6.1,25.3,66,210,Asymptomatic,False,0.0,True,Former,9.1,204,6.1,33.2,True,9376,55.1,0 +190,61,Male,128,72,218,44,121,222,126,5.8,31.0,86,139,Asymptomatic,True,1.5,False,Former,2.5,137,5.8,30.6,True,7410,57.9,1 +191,55,Male,113,61,163,50,78,167,104,5.7,21.9,93,178,Asymptomatic,False,0.0,False,Former,9.4,104,6.4,71.7,True,4823,50.6,0 +192,49,Male,125,64,139,67,35,160,117,5.7,16.3,94,183,Non-Anginal Pain,True,1.7,True,Never,2.0,138,7.8,41.7,False,6112,56.6,0 +193,64,Female,121,71,236,48,170,92,85,4.6,18.8,87,153,Asymptomatic,False,0.3,False,Never,1.5,113,6.3,56.4,False,4609,44.6,0 +194,57,Male,137,99,150,50,68,202,127,6.4,20.4,92,159,Typical Angina,False,0.8,True,Current,14.3,156,7.9,68.0,True,5184,72.5,1 +195,57,Female,101,72,177,64,94,149,131,6.1,19.7,75,134,Non-Anginal Pain,True,3.4,True,Never,1.3,19,7.2,38.3,True,6663,69.0,1 +196,35,Female,111,68,142,45,53,163,80,4.9,26.5,77,186,Non-Anginal Pain,False,0.5,False,Never,10.2,174,8.9,55.8,False,6295,66.3,0 +197,35,Female,119,78,152,51,75,189,136,6.1,27.3,73,163,Typical Angina,False,0.1,False,Never,3.8,101,5.6,21.3,False,4241,51.9,0 +198,59,Male,146,113,194,37,119,163,95,5.8,27.8,86,162,Atypical Angina,True,0.7,False,Never,2.0,128,5.8,36.1,True,9558,65.2,1 +199,55,Male,133,77,179,62,94,155,110,5.5,22.1,82,158,Asymptomatic,True,1.3,False,Former,1.6,196,5.0,58.8,False,3007,82.0,1 +200,56,Female,128,95,179,57,94,155,121,6.2,22.3,87,178,Atypical Angina,False,0.6,False,Current,0.5,120,7.9,40.5,False,6866,58.4,0 +201,56,Female,128,79,257,62,165,168,139,6.0,24.9,82,170,Atypical Angina,False,1.1,True,Never,3.2,157,7.3,51.2,True,4766,59.5,0 +202,59,Male,154,117,199,40,130,106,121,5.8,21.2,94,156,Asymptomatic,True,0.6,False,Never,5.5,68,5.8,69.2,True,4668,52.2,1 +203,54,Male,128,84,205,55,102,216,135,7.1,28.7,68,140,Asymptomatic,True,3.3,False,Never,8.1,0,8.1,48.5,False,3908,74.6,1 +204,56,Male,134,94,148,56,77,149,140,6.1,26.7,78,161,Asymptomatic,False,1.2,True,Never,1.7,174,8.9,66.8,True,9121,71.2,1 +205,57,Male,128,89,222,37,153,168,146,6.9,26.7,76,151,Asymptomatic,False,0.7,True,Current,11.6,182,5.3,33.4,False,4961,75.0,1 +206,66,Male,138,97,198,59,110,169,115,5.4,26.9,73,160,Asymptomatic,False,0.4,False,Never,4.0,157,4.7,55.4,False,8480,57.9,0 +207,47,Female,152,95,255,70,134,179,158,7.1,28.5,73,187,Asymptomatic,False,0.9,False,Former,0.5,183,8.4,81.3,True,6789,48.1,0 +208,64,Female,139,82,236,63,113,248,105,5.0,21.2,67,162,Atypical Angina,False,0.3,True,Never,12.7,141,5.3,7.6,True,5753,48.6,0 +209,62,Male,128,88,146,56,53,146,115,5.8,29.2,81,166,Non-Anginal Pain,False,3.2,True,Former,2.1,135,7.3,49.8,False,4707,55.6,0 +210,55,Female,131,90,206,52,126,166,108,5.1,22.3,90,179,Asymptomatic,False,0.0,True,Current,2.3,164,8.6,61.0,False,7441,76.3,0 +211,48,Female,119,73,201,78,123,35,106,5.6,21.0,71,171,Non-Anginal Pain,False,0.5,True,Former,10.4,95,8.4,33.6,False,3936,67.4,0 +212,59,Female,129,79,167,72,53,210,138,6.0,31.3,81,162,Non-Anginal Pain,False,0.3,False,Never,0.4,92,6.9,34.4,True,7875,86.2,0 +213,65,Male,160,100,183,79,93,100,80,4.6,21.1,88,150,Typical Angina,False,0.0,True,Former,8.6,221,6.1,34.7,True,3045,73.3,1 +214,40,Male,116,66,213,56,135,97,95,4.8,18.6,85,184,Typical Angina,False,0.3,False,Never,6.5,209,7.6,42.7,False,7786,74.4,0 +215,55,Female,131,83,220,49,134,145,113,5.8,30.1,77,151,Asymptomatic,True,1.9,False,Current,2.7,200,6.6,40.2,False,5962,55.7,1 +216,55,Male,142,90,204,71,96,162,121,5.6,20.2,80,171,Asymptomatic,False,0.2,False,Never,8.6,76,7.0,32.3,False,3326,51.3,0 +217,45,Male,127,70,193,30,132,174,139,6.4,25.1,82,176,Atypical Angina,True,1.7,False,Current,4.0,66,7.5,51.8,False,3750,44.9,1 +218,46,Male,148,98,168,54,77,248,119,5.9,27.6,91,160,Asymptomatic,False,1.3,True,Former,5.2,99,8.1,76.7,False,5798,55.0,0 +219,34,Male,121,80,242,54,145,135,120,5.6,30.6,84,184,Asymptomatic,False,0.8,False,Never,2.9,166,5.5,38.1,False,6733,53.3,0 +220,40,Female,115,76,152,81,49,105,108,5.8,24.8,95,176,Asymptomatic,False,1.1,False,Never,9.4,152,7.0,33.4,False,3503,77.1,0 +221,34,Female,129,77,211,55,130,106,143,6.9,25.1,82,194,Atypical Angina,False,0.1,False,Former,3.8,102,7.3,42.8,True,9427,56.9,0 +222,46,Male,137,101,236,81,109,163,112,5.4,25.6,82,177,Asymptomatic,False,1.3,True,Never,3.1,191,5.5,65.6,True,6898,55.3,0 +223,47,Female,123,80,165,79,50,163,97,5.3,24.5,67,176,Typical Angina,False,0.1,False,Former,2.4,255,5.7,37.4,True,4293,89.7,0 +224,47,Female,99,73,138,70,35,187,75,4.3,21.1,59,180,Asymptomatic,False,0.4,True,Never,3.8,110,7.1,40.4,False,6808,81.4,0 +225,59,Female,116,68,162,71,53,151,144,6.0,21.0,58,175,Non-Anginal Pain,False,0.5,False,Former,6.0,144,7.1,34.6,False,3544,70.9,0 +226,52,Female,124,79,168,61,83,158,143,6.0,19.2,81,155,Asymptomatic,False,0.8,False,Never,7.2,0,7.3,51.5,False,4437,81.0,0 +227,45,Male,143,81,181,60,85,165,130,5.9,32.6,81,193,Non-Anginal Pain,False,1.1,False,Never,16.3,138,7.1,33.5,True,8251,52.7,0 +228,45,Female,131,71,207,52,96,256,121,6.0,26.2,91,161,Atypical Angina,False,0.2,False,Former,12.6,59,8.5,37.6,False,1902,55.9,0 +229,39,Male,124,91,212,51,115,215,126,5.4,22.3,87,179,Typical Angina,False,0.1,False,Former,15.1,51,8.7,46.1,False,2533,48.1,0 +230,51,Female,151,98,196,51,123,148,138,6.7,35.3,86,137,Atypical Angina,True,0.4,False,Current,0.6,77,6.8,55.3,False,8256,80.8,1 +231,51,Male,148,89,150,36,87,119,138,6.4,27.4,85,151,Asymptomatic,False,0.3,False,Former,11.5,61,6.7,40.7,False,7586,35.7,1 +232,75,Female,144,89,206,54,123,139,95,4.9,25.7,72,134,Typical Angina,False,0.6,True,Never,0.4,52,6.6,25.7,True,6593,56.9,1 +233,74,Female,138,96,223,60,130,151,118,6.2,24.6,84,128,Non-Anginal Pain,True,1.1,False,Former,0.7,6,7.3,68.6,False,5639,45.6,1 +234,73,Female,124,79,238,70,143,157,91,4.9,18.1,96,156,Non-Anginal Pain,False,1.3,False,Never,7.5,59,6.2,67.0,True,4394,41.7,0 +235,81,Male,164,102,152,40,80,145,168,7.2,26.9,81,103,Non-Anginal Pain,True,0.9,True,Current,4.4,46,6.7,72.3,False,500,27.8,1 +236,38,Male,113,78,191,72,84,207,118,5.5,34.3,87,199,Asymptomatic,False,0.3,False,Never,3.6,166,5.6,52.1,False,6580,63.8,0 +237,63,Female,130,93,186,58,100,81,127,5.8,21.6,67,174,Non-Anginal Pain,False,0.4,True,Never,1.6,187,8.2,23.8,False,4573,79.3,0 +238,64,Female,143,96,161,66,64,138,114,6.1,24.6,83,141,Non-Anginal Pain,True,0.8,False,Current,1.7,27,6.0,82.2,False,5814,59.0,1 +239,60,Male,127,85,217,61,123,159,150,7.2,17.1,67,161,Asymptomatic,True,1.5,False,Former,6.0,193,6.3,40.6,True,8172,49.8,1 +240,82,Female,163,93,203,54,114,151,154,7.3,19.5,83,112,Asymptomatic,True,2.1,False,Former,0.4,125,6.6,69.6,True,4849,82.6,1 +241,87,Female,127,70,264,64,150,231,112,5.4,24.3,79,127,Asymptomatic,True,1.3,False,Former,10.2,127,9.9,40.2,True,4512,82.8,1 +242,67,Male,144,89,213,42,136,187,115,6.0,28.4,74,122,Non-Anginal Pain,False,1.5,True,Never,7.2,188,6.5,47.5,False,7429,70.7,1 +243,62,Female,124,97,178,51,97,169,87,4.8,26.2,76,147,Non-Anginal Pain,True,1.3,False,Never,12.6,146,6.8,30.3,True,8646,66.8,0 +244,39,Male,118,88,160,37,103,92,103,5.3,17.9,67,188,Asymptomatic,False,0.2,True,Never,4.7,157,6.5,35.6,False,4446,53.6,0 +245,39,Male,129,93,175,65,71,178,115,5.8,28.1,69,185,Atypical Angina,False,0.2,False,Never,2.8,211,6.8,55.2,False,7305,48.3,0 +246,63,Female,120,78,223,90,104,199,102,5.2,24.1,78,188,Atypical Angina,False,1.2,False,Former,5.4,156,6.4,49.1,True,8848,80.5,0 +247,53,Female,114,67,239,83,114,186,120,6.4,25.6,92,149,Non-Anginal Pain,False,0.8,False,Never,9.1,161,6.8,34.6,False,3275,53.1,1 +248,37,Female,119,72,167,38,113,123,102,5.5,22.4,77,198,Non-Anginal Pain,False,0.1,False,Current,1.3,203,7.0,42.7,True,2086,43.3,0 +249,52,Female,130,84,241,33,160,217,136,6.0,30.8,79,187,Non-Anginal Pain,False,0.2,False,Former,0.1,48,7.6,39.2,False,1930,49.6,0 +250,59,Female,117,94,152,34,86,108,162,6.6,27.7,95,169,Asymptomatic,False,1.6,False,Never,0.3,3,5.4,47.2,False,3901,77.1,0 +251,66,Male,144,97,210,51,143,128,103,5.8,26.0,87,166,Non-Anginal Pain,False,3.2,True,Never,8.9,196,8.1,47.8,False,3647,55.4,0 +252,53,Female,124,77,173,30,106,211,127,6.3,26.7,78,188,Asymptomatic,False,0.7,False,Current,3.2,174,6.4,46.5,False,3106,53.2,0 +253,51,Male,116,69,181,56,97,140,107,5.7,21.9,73,167,Asymptomatic,False,0.8,True,Never,9.3,202,7.2,40.5,False,6748,45.4,0 +254,54,Female,132,77,103,54,35,166,135,6.3,23.9,76,179,Asymptomatic,False,2.6,False,Never,0.7,82,6.4,41.3,True,7473,49.1,0 +255,56,Male,138,90,178,39,117,199,120,5.9,26.7,94,152,Typical Angina,False,0.8,False,Never,11.6,85,6.3,47.9,True,6425,50.0,0 +256,39,Male,142,101,227,58,139,151,131,6.2,27.3,82,187,Non-Anginal Pain,False,0.2,False,Current,22.4,117,6.0,15.5,False,6087,65.0,0 +257,65,Female,137,84,184,48,104,154,140,6.1,25.3,89,126,Asymptomatic,False,0.7,True,Current,13.6,113,6.8,17.6,True,6296,58.8,1 +258,82,Male,147,90,185,52,109,125,125,5.9,22.8,73,163,Asymptomatic,False,0.3,False,Never,1.6,213,7.3,50.1,True,8699,75.3,0 +259,65,Female,130,100,245,69,132,162,108,5.9,25.3,75,130,Asymptomatic,True,2.2,False,Never,2.1,122,7.3,57.6,False,3838,72.9,1 +260,35,Female,108,76,214,53,114,228,135,6.1,23.1,71,190,Asymptomatic,False,0.8,False,Never,18.1,180,5.7,36.5,True,5206,47.1,0 +261,55,Male,138,79,207,36,127,237,130,5.9,31.0,94,141,Asymptomatic,True,0.7,False,Never,16.4,0,8.3,66.1,False,4222,29.7,1 +262,31,Female,112,68,137,57,49,184,92,4.7,18.3,81,200,Atypical Angina,False,0.4,False,Never,4.3,246,6.1,49.4,True,5233,41.6,0 +263,30,Male,124,66,130,57,57,88,119,5.8,21.6,77,162,Atypical Angina,False,0.3,True,Never,5.9,148,6.7,43.4,False,2801,37.8,0 +264,63,Female,102,58,194,51,110,161,136,6.3,27.3,79,134,Asymptomatic,False,1.2,False,Never,3.8,94,7.2,31.3,False,7098,49.7,0 +265,55,Female,135,78,119,58,44,91,108,5.3,15.0,63,171,Non-Anginal Pain,True,2.1,False,Former,2.9,108,6.1,61.9,False,6435,84.2,0 +266,45,Male,107,63,200,62,76,251,189,7.7,26.2,85,192,Asymptomatic,False,0.2,False,Never,2.0,98,7.4,69.1,True,5835,49.1,0 +267,27,Male,106,70,196,62,120,122,103,5.2,27.3,86,190,Atypical Angina,False,2.9,False,Never,4.0,135,6.4,52.7,False,5319,42.5,0 +268,38,Male,117,78,136,40,59,145,103,5.6,25.2,78,182,Atypical Angina,False,0.0,False,Former,14.4,234,6.4,40.9,True,8307,67.3,0 +269,56,Female,132,84,222,80,121,109,98,5.2,24.3,74,150,Asymptomatic,True,0.7,True,Never,10.4,235,6.5,24.8,True,6937,71.0,0 +270,54,Male,136,83,223,53,149,158,117,5.8,30.2,85,133,Asymptomatic,False,1.6,True,Never,4.9,126,6.3,44.1,True,6731,53.4,1 +271,63,Female,120,70,236,50,144,138,110,5.8,25.6,92,160,Asymptomatic,False,0.5,False,Current,0.1,153,7.5,28.5,False,6800,51.1,0 +272,74,Female,152,96,188,60,90,134,105,5.5,28.6,75,177,Asymptomatic,True,0.2,False,Never,0.4,165,4.9,65.5,False,5872,63.9,0 +273,50,Male,133,91,148,65,87,35,129,5.6,19.9,71,191,Non-Anginal Pain,False,1.6,False,Never,2.6,184,5.0,34.2,False,5602,65.4,0 +274,60,Male,122,87,202,63,95,219,133,6.0,27.1,88,155,Asymptomatic,False,1.3,False,Never,2.2,118,5.0,56.8,False,6925,58.8,0 +275,52,Female,125,79,209,75,95,171,110,5.6,25.9,69,147,Asymptomatic,False,1.2,False,Former,11.3,285,6.5,35.7,True,7238,73.5,0 +276,48,Male,124,82,185,45,128,141,127,5.8,23.9,75,177,Typical Angina,False,0.3,False,Former,2.6,209,7.8,50.8,False,7308,59.1,0 +277,51,Female,120,83,214,48,127,176,110,5.6,28.7,79,182,Asymptomatic,False,0.2,False,Never,0.3,234,5.9,30.9,False,4701,85.4,0 +278,66,Male,128,78,215,65,141,73,125,6.2,28.8,83,146,Non-Anginal Pain,False,0.2,False,Former,1.6,101,6.9,32.0,True,7503,79.7,0 +279,41,Female,122,88,200,63,102,163,120,5.9,29.4,70,190,Non-Anginal Pain,False,0.4,True,Never,5.3,171,6.0,54.3,True,8653,79.5,0 +280,69,Male,150,102,172,57,81,122,82,4.1,24.2,77,151,Typical Angina,False,0.2,False,Never,22.2,118,7.8,68.5,True,3211,60.2,0 +281,73,Female,146,87,168,57,90,97,127,6.2,20.3,104,125,Non-Anginal Pain,True,0.5,False,Never,1.0,0,7.5,48.2,False,2753,61.4,1 +282,54,Female,117,63,170,72,54,204,83,4.4,20.0,69,161,Asymptomatic,False,0.0,True,Never,1.6,188,7.2,46.6,False,5928,66.7,0 +283,57,Female,122,73,258,86,136,190,126,6.2,28.6,83,159,Asymptomatic,False,0.5,False,Former,4.7,207,3.5,9.9,True,5928,58.8,0 +284,36,Male,118,73,167,60,82,184,134,6.4,24.0,81,204,Asymptomatic,False,0.3,False,Former,3.9,93,6.5,75.6,False,7333,74.6,0 +285,85,Female,145,97,198,58,114,115,109,5.5,16.1,101,118,Atypical Angina,True,1.7,False,Former,3.6,13,6.6,33.8,False,5708,73.9,1 +286,67,Male,115,71,156,63,68,138,104,5.5,24.7,81,164,Non-Anginal Pain,False,0.9,True,Former,7.5,205,8.4,0.0,True,6488,67.7,0 +287,56,Female,125,73,249,75,144,160,84,4.8,21.0,75,172,Asymptomatic,True,0.2,False,Never,18.8,171,6.2,26.7,False,4552,53.4,0 +288,55,Male,128,69,202,73,94,150,126,5.9,23.4,73,158,Asymptomatic,False,1.3,False,Former,2.4,240,8.5,47.3,True,5387,67.7,0 +289,60,Female,131,71,250,68,132,183,70,4.1,15.2,88,174,Asymptomatic,False,1.0,True,Never,6.6,214,6.0,32.4,True,9796,38.9,0 +290,46,Female,110,69,245,78,137,151,73,4.7,15.0,87,191,Asymptomatic,False,0.3,True,Former,2.6,182,6.2,25.5,False,4821,51.2,0 +291,58,Male,120,79,178,61,94,84,82,5.0,17.9,77,164,Asymptomatic,False,0.1,False,Never,10.1,162,8.4,33.0,True,6304,66.5,0 +292,42,Female,137,85,249,67,146,217,122,5.5,31.0,80,171,Asymptomatic,False,0.4,True,Never,1.9,150,4.8,34.6,False,5125,52.1,1 +293,60,Male,122,77,199,58,108,167,93,5.7,24.1,62,172,Asymptomatic,False,0.5,False,Former,4.3,216,7.3,53.1,True,6929,46.6,0 +294,45,Female,133,77,191,46,128,113,133,6.4,22.7,85,161,Asymptomatic,True,0.6,False,Never,1.4,127,7.6,57.4,False,4400,64.2,1 +295,66,Female,152,89,215,56,108,152,147,6.9,27.1,79,119,Asymptomatic,True,1.0,True,Never,20.3,29,7.6,48.8,False,1577,54.2,1 +296,52,Male,123,74,130,33,66,171,112,5.9,23.2,72,174,Asymptomatic,False,1.0,False,Never,7.3,183,6.9,42.6,True,6883,75.3,0 +297,57,Female,117,82,160,49,102,72,99,5.3,21.8,81,184,Asymptomatic,False,2.3,False,Never,4.1,256,5.3,38.5,False,8078,64.9,0 +298,90,Male,125,72,228,63,130,133,164,7.2,25.1,84,95,Typical Angina,True,0.2,False,Never,3.4,91,7.6,47.8,True,7882,74.2,1 +299,64,Male,127,74,180,56,106,128,162,6.9,22.1,74,123,Atypical Angina,True,0.2,False,Never,7.4,112,6.4,64.6,False,5437,58.4,1 +300,57,Female,132,78,140,45,84,105,89,5.4,20.5,99,153,Non-Anginal Pain,True,0.7,False,Never,1.7,151,5.5,67.6,True,7564,74.1,0 +301,55,Female,129,82,220,58,124,188,135,6.4,32.9,80,164,Asymptomatic,False,0.4,False,Current,13.5,164,6.9,30.9,True,6151,51.0,1 +302,40,Female,120,71,146,60,81,63,129,6.3,29.1,78,183,Asymptomatic,False,0.8,True,Never,2.2,135,7.7,39.0,True,7491,81.5,0 +303,68,Male,146,93,188,60,84,212,116,6.0,22.3,67,109,Asymptomatic,False,2.0,True,Never,24.7,163,6.8,47.1,True,6316,45.5,1 +304,75,Male,139,98,215,61,115,160,133,6.3,30.5,78,129,Asymptomatic,False,1.0,True,Former,1.8,294,8.4,46.1,True,8442,56.8,1 +305,55,Female,138,98,182,59,78,170,115,5.8,22.2,83,188,Asymptomatic,False,2.9,False,Former,7.2,159,6.2,24.7,True,8717,62.5,0 +306,76,Male,146,86,254,63,175,145,134,6.0,26.0,87,123,Non-Anginal Pain,True,0.2,False,Former,8.7,166,6.8,59.3,True,7868,52.6,1 +307,53,Female,104,63,187,51,122,87,143,6.4,21.8,71,179,Typical Angina,True,0.1,True,Former,0.1,153,5.8,22.5,False,5309,70.0,0 +308,31,Female,124,88,144,68,53,171,78,4.5,21.5,91,186,Non-Anginal Pain,False,0.4,False,Former,7.5,269,7.1,31.2,True,6784,100.0,0 +309,46,Male,122,73,148,83,41,121,127,6.3,19.7,76,179,Non-Anginal Pain,False,0.5,False,Never,4.7,292,7.9,38.9,True,10099,84.4,0 +310,40,Female,116,73,153,47,83,130,101,5.1,27.9,72,195,Non-Anginal Pain,False,0.3,False,Current,4.6,270,10.2,19.5,True,7141,78.9,0 +311,50,Male,109,65,129,49,51,133,139,6.5,18.1,80,175,Asymptomatic,False,0.1,False,Never,4.7,101,6.0,51.2,False,4748,42.7,0 +312,62,Female,154,99,148,53,80,60,111,5.9,31.3,86,180,Asymptomatic,False,0.4,True,Never,1.2,184,7.8,60.3,False,5579,54.7,0 +313,42,Female,109,68,192,77,106,73,123,6.3,27.8,78,174,Typical Angina,False,1.8,False,Current,10.6,210,8.8,44.8,False,8605,52.4,0 +314,53,Female,107,64,187,50,116,145,88,4.9,27.1,80,171,Asymptomatic,False,0.3,True,Never,1.8,190,4.5,46.3,False,4559,66.7,0 +315,57,Female,117,77,186,74,91,129,150,6.8,26.9,78,176,Non-Anginal Pain,False,0.7,True,Former,3.7,197,9.1,63.5,True,5665,87.9,0 +316,44,Female,125,82,230,61,120,191,150,6.9,28.6,77,153,Asymptomatic,False,1.3,True,Never,0.7,141,7.4,71.8,True,6318,98.9,0 +317,42,Female,100,64,199,67,106,153,116,5.6,24.1,72,178,Typical Angina,False,0.9,False,Never,1.3,78,6.8,24.4,False,4486,61.7,0 +318,55,Female,114,86,218,65,127,106,120,5.9,25.5,71,165,Asymptomatic,False,5.0,False,Never,4.3,87,5.4,50.4,False,6600,48.9,1 +319,65,Female,138,80,204,65,123,66,138,5.6,24.0,76,200,Asymptomatic,False,1.9,False,Current,0.6,224,7.4,45.2,True,10570,51.0,0 +320,46,Male,123,71,175,84,70,103,85,4.3,15.0,83,160,Atypical Angina,False,1.0,False,Former,4.7,224,8.1,55.9,False,6162,62.4,0 +321,44,Female,108,61,204,70,100,135,116,6.3,22.2,71,194,Non-Anginal Pain,False,1.0,False,Former,3.1,158,5.5,66.7,True,4513,83.4,0 +322,52,Female,146,89,226,39,155,184,141,6.3,33.8,91,146,Non-Anginal Pain,False,1.6,False,Current,2.5,74,5.7,58.2,False,5534,33.9,1 +323,58,Female,144,93,201,57,119,203,115,6.1,28.8,96,162,Asymptomatic,False,0.7,False,Never,10.8,65,6.7,37.4,False,4648,37.5,0 +324,47,Female,105,77,181,59,99,125,104,5.3,26.1,90,181,Typical Angina,False,0.2,False,Never,1.3,78,5.9,77.0,True,7005,78.5,0 +325,50,Female,128,79,173,37,111,92,84,4.3,28.7,78,178,Asymptomatic,False,0.5,True,Former,1.9,96,6.8,59.1,True,5403,47.4,0 +326,51,Male,129,67,183,44,92,217,126,6.4,26.0,78,169,Non-Anginal Pain,False,1.1,False,Current,2.4,136,7.5,39.1,True,7241,67.9,1 +327,40,Male,110,83,170,48,99,90,97,4.9,20.2,77,190,Typical Angina,False,1.0,False,Never,11.3,187,5.7,58.9,False,5847,79.6,0 +328,52,Female,128,84,157,55,80,130,145,6.2,23.7,87,191,Asymptomatic,False,0.6,False,Current,4.0,215,5.9,71.8,True,9793,55.3,0 +329,47,Male,134,96,211,53,120,186,122,5.3,27.4,81,150,Non-Anginal Pain,True,3.2,False,Never,4.2,50,7.2,73.0,True,6057,64.5,1 +330,75,Female,123,84,190,49,106,173,112,5.7,32.4,89,145,Asymptomatic,False,0.3,False,Never,5.5,112,8.3,28.1,True,5908,49.4,0 +331,47,Male,126,80,178,53,96,154,104,5.8,31.2,97,180,Asymptomatic,False,0.4,False,Never,10.4,69,7.1,38.2,True,6980,36.0,0 +332,60,Male,116,72,214,67,102,213,139,5.8,26.5,79,155,Atypical Angina,False,0.4,False,Never,2.3,116,6.8,69.9,False,1660,51.4,0 +333,59,Female,131,93,156,49,73,140,129,6.3,24.9,102,140,Atypical Angina,True,0.8,True,Never,5.5,102,6.4,63.5,True,6050,47.5,1 +334,39,Female,125,81,230,65,125,192,112,5.9,25.5,68,182,Atypical Angina,False,1.0,False,Never,2.1,140,6.0,23.9,False,6240,59.3,0 +335,38,Male,137,84,172,44,99,99,151,7.1,26.6,80,159,Asymptomatic,False,0.5,True,Former,5.4,96,6.8,46.3,False,2707,75.9,0 +336,48,Female,136,86,209,60,114,206,135,6.6,29.2,92,137,Asymptomatic,False,0.7,True,Never,8.6,105,5.6,40.1,True,4709,41.7,1 +337,63,Female,115,79,194,49,97,154,67,4.0,27.8,84,170,Asymptomatic,False,0.7,False,Current,1.8,259,7.2,16.3,True,8151,61.5,0 +338,47,Female,129,87,188,54,101,187,149,6.8,21.0,86,185,Typical Angina,False,0.3,False,Current,0.2,80,5.9,35.8,False,5894,57.1,0 +339,45,Male,116,70,163,73,75,102,99,5.3,19.8,65,192,Typical Angina,False,3.2,False,Never,2.9,127,4.6,62.5,True,5628,81.6,0 +340,18,Male,123,79,108,27,61,177,90,5.3,29.0,80,201,Asymptomatic,True,0.5,True,Former,15.7,33,5.5,23.9,False,6990,52.7,0 +341,49,Male,129,84,214,69,98,140,101,4.7,20.8,79,196,Non-Anginal Pain,True,0.7,True,Former,4.8,186,7.1,56.8,False,3608,46.0,0 +342,58,Female,132,86,145,69,45,113,125,6.3,27.2,86,187,Asymptomatic,False,0.3,False,Never,6.3,91,8.3,60.4,True,7140,58.2,0 +343,60,Male,118,75,222,35,161,176,138,6.7,24.4,78,148,Asymptomatic,True,1.0,False,Current,3.0,90,6.9,49.9,True,8783,23.3,1 +344,60,Male,138,81,177,52,103,62,130,6.3,28.9,85,138,Asymptomatic,True,0.5,False,Former,3.3,90,7.5,54.9,False,4450,59.7,1 +345,50,Female,119,67,193,52,114,157,119,5.8,25.4,84,160,Asymptomatic,False,0.6,True,Current,4.1,92,7.2,50.7,False,1847,51.4,1 +346,51,Male,156,96,197,38,125,208,144,6.5,30.5,76,145,Asymptomatic,True,0.8,False,Never,9.6,95,7.1,54.0,True,7284,56.1,1 +347,65,Male,125,74,157,54,93,115,106,5.6,27.1,79,156,Asymptomatic,False,0.6,True,Never,5.4,113,6.4,57.9,False,2442,62.8,1 +348,52,Male,130,93,213,47,126,242,154,6.5,28.9,78,178,Non-Anginal Pain,False,0.2,False,Former,3.2,202,7.2,30.8,False,5623,44.4,0 +349,24,Male,100,70,158,74,58,122,62,4.0,18.0,58,200,Atypical Angina,False,0.2,False,Never,2.4,232,7.4,67.1,True,8851,75.4,0 +350,67,Male,111,85,195,67,105,112,104,5.2,23.6,63,125,Asymptomatic,True,1.7,False,Current,2.3,180,6.0,40.7,True,7172,53.7,1 +351,40,Female,131,89,201,71,87,206,123,5.9,29.4,85,152,Atypical Angina,False,1.6,True,Never,8.8,119,7.0,34.6,True,5134,74.9,1 +352,72,Male,142,94,176,31,101,233,106,5.3,17.2,66,150,Asymptomatic,False,0.4,False,Never,21.3,141,6.8,61.5,False,3870,69.0,0 +353,76,Male,135,82,178,58,93,146,140,6.2,21.7,77,149,Atypical Angina,False,2.5,False,Never,3.0,246,8.0,36.3,False,4781,64.4,0 +354,64,Male,137,101,181,47,91,158,147,6.8,26.1,75,139,Non-Anginal Pain,True,0.5,False,Former,6.9,124,5.2,61.8,True,6127,61.8,1 +355,66,Female,131,82,197,57,105,153,149,6.9,22.7,89,122,Asymptomatic,True,0.3,False,Never,0.8,48,6.9,38.1,False,8134,50.0,1 +356,78,Male,132,77,152,67,74,44,133,5.6,21.2,72,155,Asymptomatic,False,0.1,False,Never,8.1,218,6.2,68.1,True,7576,56.4,0 +357,40,Male,119,72,235,46,146,211,164,6.3,22.6,76,174,Asymptomatic,False,0.4,True,Never,5.5,150,6.6,77.4,False,4079,43.7,0 +358,57,Female,150,99,191,63,83,220,142,5.8,31.7,65,166,Non-Anginal Pain,False,0.5,True,Never,1.4,150,6.7,65.3,True,4088,50.0,0 +359,57,Female,125,68,156,39,87,143,93,4.8,22.3,82,172,Asymptomatic,False,1.7,False,Current,11.8,109,5.8,47.3,False,6453,24.1,0 +360,41,Female,106,66,183,51,123,91,77,4.4,19.0,83,179,Atypical Angina,False,1.2,True,Former,3.4,256,8.6,51.7,True,10779,79.0,0 +361,80,Male,129,71,225,56,139,128,107,5.8,22.0,83,134,Atypical Angina,True,3.7,True,Former,1.7,63,5.2,17.4,False,7715,64.7,1 +362,46,Female,133,70,190,64,110,93,152,6.8,26.8,84,172,Typical Angina,False,0.1,False,Never,12.3,201,7.6,36.4,True,9233,60.4,0 +363,44,Male,129,84,224,56,133,158,95,4.5,16.7,81,190,Asymptomatic,False,0.2,False,Current,18.6,228,7.2,47.9,True,13061,44.3,0 +364,57,Female,113,71,172,73,87,151,117,6.0,20.7,76,204,Asymptomatic,False,2.3,True,Former,3.5,235,7.1,64.3,True,8882,66.4,0 +365,67,Female,132,94,182,69,96,98,101,5.5,15.0,77,179,Asymptomatic,True,0.2,False,Never,5.2,289,8.5,36.5,True,7816,67.8,0 +366,46,Male,119,73,229,60,120,266,87,4.9,23.9,79,179,Asymptomatic,False,0.7,True,Former,11.9,118,6.9,56.1,True,6334,66.0,0 +367,46,Female,129,77,185,57,117,35,95,5.2,26.9,94,158,Asymptomatic,True,2.6,False,Never,5.9,142,6.8,59.6,False,5439,66.3,1 +368,61,Male,124,81,268,69,158,226,131,5.9,26.6,88,151,Asymptomatic,False,0.7,False,Former,6.5,168,7.3,18.8,True,7791,62.9,1 +369,35,Male,120,73,193,51,108,121,114,5.2,27.1,85,197,Asymptomatic,False,0.2,False,Never,2.6,207,5.8,68.0,True,7811,83.0,0 +370,44,Female,125,75,199,74,82,220,122,5.7,26.6,87,175,Atypical Angina,False,1.1,False,Former,2.2,220,6.7,42.6,False,3337,70.8,0 +371,43,Male,108,52,142,75,42,162,120,5.2,20.4,80,159,Non-Anginal Pain,False,1.0,False,Former,7.1,332,6.6,42.9,True,7206,68.7,0 +372,48,Female,126,87,224,76,109,176,109,5.2,26.3,93,163,Asymptomatic,False,0.1,False,Never,0.9,81,6.4,61.7,True,7722,56.1,0 +373,52,Male,117,69,198,80,88,188,87,4.9,27.6,73,175,Asymptomatic,False,0.8,True,Former,2.9,184,5.6,31.3,False,9841,57.2,0 +374,78,Female,150,88,259,54,176,159,142,6.5,31.6,71,108,Typical Angina,False,1.4,False,Never,1.7,119,8.3,36.3,False,5109,53.8,1 +375,66,Female,119,68,254,68,164,123,116,5.5,25.6,86,155,Non-Anginal Pain,True,0.4,True,Current,0.1,131,8.9,54.3,True,8610,72.9,0 +376,54,Female,101,71,187,62,99,166,101,5.3,21.1,72,180,Asymptomatic,False,0.2,False,Former,3.2,273,5.3,65.1,True,9738,78.1,0 +377,51,Female,128,88,205,65,103,179,144,6.7,26.1,82,186,Asymptomatic,False,0.4,False,Never,11.6,127,8.0,26.5,True,8063,44.2,0 +378,65,Female,138,93,192,65,91,149,112,5.8,23.5,81,142,Atypical Angina,True,0.6,False,Former,2.5,218,8.0,58.0,False,5070,54.4,1 +379,60,Male,145,92,200,27,124,213,138,6.5,29.3,83,150,Non-Anginal Pain,True,0.4,False,Current,2.7,61,7.6,50.9,False,6509,32.6,1 +380,66,Male,140,89,167,44,89,147,116,5.9,30.9,88,153,Non-Anginal Pain,False,0.7,False,Former,7.4,97,6.8,26.1,False,3568,32.9,0 +381,72,Male,123,90,187,48,135,103,113,5.7,25.1,78,147,Asymptomatic,False,0.9,False,Former,15.0,184,7.7,29.1,False,500,58.0,0 +382,41,Female,96,54,185,68,103,55,107,5.6,26.0,71,193,Asymptomatic,False,0.5,True,Current,1.2,63,5.7,9.9,False,8013,43.4,0 +383,25,Male,140,98,219,66,111,223,111,5.4,27.7,81,174,Asymptomatic,False,0.2,False,Never,2.9,111,6.2,39.2,False,7101,56.5,0 +384,54,Male,125,74,223,51,138,124,130,6.1,16.9,73,162,Non-Anginal Pain,False,0.4,False,Current,6.7,139,7.7,55.0,False,8673,64.4,0 +385,55,Female,140,82,191,83,63,235,124,6.3,23.7,77,160,Asymptomatic,False,0.5,True,Never,20.2,174,5.9,78.2,True,7459,64.3,0 +386,58,Male,136,79,115,50,67,47,133,6.1,21.4,69,158,Asymptomatic,False,1.6,False,Former,4.0,58,7.3,51.8,False,8748,78.4,0 +387,46,Male,149,101,199,61,98,145,143,6.6,23.2,75,187,Asymptomatic,False,0.6,True,Never,10.1,140,7.0,31.0,True,6816,74.4,0 +388,51,Female,119,81,216,49,141,172,139,5.8,30.0,88,160,Asymptomatic,False,0.0,False,Former,1.9,136,8.6,41.6,False,5325,57.2,0 +389,61,Female,135,83,212,65,102,190,111,6.0,27.0,72,160,Asymptomatic,False,2.2,True,Former,0.9,226,7.3,30.1,True,7981,60.9,0 +390,62,Male,120,75,127,19,88,167,118,5.6,23.0,73,128,Typical Angina,False,2.2,True,Never,8.0,29,4.9,38.9,False,6654,42.1,1 +391,71,Female,133,69,248,34,160,188,122,5.7,30.0,81,148,Asymptomatic,False,1.8,False,Never,0.4,39,5.2,39.4,True,6559,67.9,1 +392,26,Male,114,71,168,42,93,146,114,5.4,23.3,81,195,Asymptomatic,False,0.5,False,Never,2.3,199,8.7,20.4,False,8116,43.8,0 +393,33,Female,115,59,155,56,85,76,122,5.8,20.3,78,199,Non-Anginal Pain,False,0.9,False,Never,3.1,116,7.3,44.7,False,5530,59.9,0 +394,73,Female,139,94,148,61,54,163,108,5.8,24.8,85,155,Asymptomatic,False,0.4,False,Former,9.3,127,7.2,31.7,True,6551,60.2,0 +395,62,Female,129,82,209,51,121,196,150,6.9,29.3,93,168,Asymptomatic,True,1.9,False,Current,5.4,106,4.5,24.9,False,5819,59.8,1 +396,64,Male,98,74,243,51,140,215,144,6.0,26.7,71,163,Atypical Angina,True,0.3,True,Former,6.0,181,8.3,49.8,True,4659,40.2,1 +397,50,Female,103,62,216,65,115,201,77,4.6,23.8,71,177,Atypical Angina,False,0.9,True,Never,0.5,184,7.0,18.4,False,6909,38.9,0 +398,48,Male,110,61,190,57,108,199,99,5.4,21.9,72,186,Asymptomatic,False,0.7,False,Current,1.8,198,7.8,31.9,True,5478,37.0,0 +399,57,Female,105,67,195,72,84,171,152,7.0,23.9,81,145,Atypical Angina,False,0.8,False,Current,3.1,117,7.5,53.3,False,2667,32.7,0 +400,42,Male,113,64,182,42,113,114,66,4.0,22.6,81,185,Atypical Angina,False,0.7,False,Former,5.3,203,7.3,51.5,False,7031,66.9,0 +401,34,Female,119,81,174,44,94,120,154,6.8,28.5,92,192,Asymptomatic,False,0.4,True,Former,4.3,188,6.8,43.6,False,4610,46.1,0 +402,40,Female,119,78,142,67,68,96,132,6.2,22.7,84,181,Atypical Angina,False,1.0,False,Never,0.5,182,5.2,54.8,False,7786,43.1,0 +403,56,Male,111,80,187,43,115,147,142,6.7,23.5,64,146,Typical Angina,True,0.4,True,Former,1.9,253,5.7,56.4,True,10396,55.9,1 +404,62,Male,128,95,179,45,100,147,129,6.2,29.0,82,137,Asymptomatic,False,0.1,False,Never,1.6,95,6.7,44.7,True,8037,61.1,1 +405,75,Female,161,102,225,63,118,187,148,6.5,27.3,83,149,Non-Anginal Pain,False,0.4,False,Former,2.5,68,5.3,16.1,True,3335,78.4,0 +406,59,Male,126,75,251,62,151,182,146,6.7,27.8,88,127,Asymptomatic,False,0.5,False,Never,3.1,179,7.6,35.0,False,5935,65.9,1 +407,60,Male,118,63,221,60,114,222,137,6.7,24.4,96,170,Asymptomatic,False,0.2,False,Never,2.0,216,6.7,74.9,True,7395,53.7,0 +408,76,Male,155,92,195,66,98,171,113,5.4,27.3,88,151,Asymptomatic,False,3.9,False,Former,9.6,65,6.6,57.2,False,2953,43.8,1 +409,44,Male,143,96,175,35,70,251,137,6.8,33.6,81,160,Asymptomatic,True,0.7,False,Never,7.1,187,4.5,47.4,False,3678,99.8,1 +410,42,Female,118,70,179,46,97,139,94,5.5,22.1,77,183,Non-Anginal Pain,False,0.3,False,Never,8.6,66,7.4,56.5,False,3206,34.8,0 +411,47,Female,117,64,196,54,98,190,79,4.6,20.1,88,175,Non-Anginal Pain,False,0.3,False,Never,12.0,62,6.3,61.1,False,6403,46.7,0 +412,53,Female,119,80,140,52,65,109,128,5.7,28.3,81,186,Non-Anginal Pain,False,1.1,False,Never,5.8,144,7.1,41.7,False,4252,81.1,0 +413,80,Male,152,105,166,51,107,41,105,5.4,23.2,82,127,Atypical Angina,True,0.3,False,Never,7.9,0,6.6,52.7,False,4361,58.6,0 +414,49,Female,110,74,219,83,109,123,141,5.6,28.3,82,171,Non-Anginal Pain,False,0.0,False,Never,0.5,196,8.3,46.3,True,6819,65.9,0 +415,71,Male,153,87,168,56,92,84,160,6.7,24.9,75,130,Atypical Angina,True,0.9,False,Former,5.0,59,7.5,43.7,True,4580,75.6,1 +416,48,Male,124,76,166,51,83,241,102,5.3,23.9,62,175,Non-Anginal Pain,False,0.3,False,Current,7.3,267,6.6,48.1,False,7096,65.9,0 +417,60,Female,142,92,230,62,135,174,123,6.1,25.9,94,142,Asymptomatic,False,0.5,False,Never,4.9,177,5.9,43.9,True,4521,48.7,1 +418,63,Male,136,83,190,43,112,126,109,5.3,25.3,92,125,Non-Anginal Pain,True,0.4,True,Never,3.5,59,8.6,55.0,False,5558,69.2,1 +419,61,Male,142,96,234,38,140,268,133,5.6,26.9,94,134,Asymptomatic,True,5.9,False,Current,15.0,69,7.6,61.5,True,6173,56.3,1 +420,64,Female,139,84,231,61,139,153,192,7.5,32.0,91,156,Asymptomatic,False,2.8,False,Never,0.3,46,5.9,64.7,False,5181,48.5,1 +421,45,Male,117,80,127,46,61,183,93,5.6,23.6,84,203,Asymptomatic,False,1.2,False,Never,1.6,157,6.1,59.6,False,6295,65.2,0 +422,73,Male,139,79,190,33,107,177,144,5.8,23.3,88,106,Atypical Angina,True,0.5,False,Never,4.8,84,7.2,62.8,True,7169,42.5,1 +423,67,Female,141,87,158,52,84,147,111,5.2,34.5,69,139,Asymptomatic,False,0.5,False,Never,1.7,76,8.5,20.5,False,4306,67.5,0 +424,45,Male,148,97,228,86,112,148,133,6.0,22.7,73,171,Asymptomatic,False,0.1,False,Never,4.9,199,6.6,98.1,True,5837,43.4,0 +425,61,Male,123,79,123,54,49,119,148,6.6,26.2,88,151,Atypical Angina,False,0.5,False,Never,1.6,186,5.7,46.5,False,8861,74.0,1 +426,40,Male,100,59,178,76,98,49,130,5.3,22.0,85,166,Asymptomatic,False,0.8,False,Never,5.6,104,7.7,28.3,True,8679,68.1,0 +427,55,Male,115,72,241,57,168,70,96,4.5,23.8,74,142,Atypical Angina,True,0.1,False,Current,3.8,235,5.7,19.2,True,9065,39.2,1 +428,39,Female,119,72,182,57,108,99,111,6.0,23.7,82,187,Asymptomatic,False,0.3,False,Never,7.9,11,7.7,68.3,False,5961,73.0,0 +429,63,Female,140,81,170,56,90,113,121,5.6,25.8,89,159,Asymptomatic,False,0.4,False,Former,6.2,179,5.1,47.1,False,2555,59.5,0 +430,90,Male,151,83,187,57,104,121,157,6.9,28.2,72,123,Non-Anginal Pain,False,0.9,True,Former,1.6,107,6.7,37.3,False,1720,63.8,1 +431,73,Male,130,81,161,37,96,155,148,6.4,25.9,87,142,Asymptomatic,True,6.5,False,Never,5.3,32,4.5,83.7,False,6477,72.5,1 +432,64,Female,140,85,278,53,175,228,167,7.5,25.9,87,132,Asymptomatic,False,0.2,False,Never,3.1,5,7.4,48.7,False,591,33.5,0 +433,42,Female,114,73,206,76,81,233,152,5.9,24.0,88,181,Non-Anginal Pain,False,0.5,False,Former,5.1,128,7.4,41.3,False,4127,28.6,0 +434,59,Male,131,75,182,71,98,81,136,5.7,19.5,80,171,Non-Anginal Pain,False,0.3,True,Never,1.5,149,7.1,32.5,True,9169,60.3,0 +435,69,Female,122,71,184,52,95,198,129,6.1,25.5,86,124,Atypical Angina,True,2.4,True,Current,4.1,32,5.8,66.9,False,3939,35.7,1 +436,53,Female,116,72,185,44,120,190,118,5.2,29.2,72,159,Typical Angina,False,1.2,False,Never,2.6,157,5.9,57.0,False,5211,52.3,0 +437,56,Female,129,82,193,38,115,192,128,6.4,30.4,90,127,Non-Anginal Pain,True,1.1,False,Never,8.9,38,7.5,33.1,False,4706,66.7,1 +438,32,Female,125,79,216,47,165,100,94,4.9,21.0,92,200,Non-Anginal Pain,True,5.3,True,Current,4.0,47,4.9,66.6,False,4752,17.8,1 +439,43,Female,114,78,183,62,96,124,121,6.1,28.3,76,170,Asymptomatic,False,0.6,False,Never,5.7,174,6.9,54.3,False,4124,53.4,0 +440,30,Female,104,61,206,66,98,214,90,5.0,21.0,67,203,Atypical Angina,False,1.1,False,Never,13.1,243,7.3,72.3,True,6233,67.1,0 +441,79,Female,146,88,208,90,96,164,125,5.8,26.5,70,153,Non-Anginal Pain,False,0.6,False,Former,5.3,173,6.9,36.4,True,6966,91.5,0 +442,60,Female,129,95,207,76,104,137,96,5.1,26.4,79,178,Asymptomatic,False,1.4,False,Never,2.0,260,6.2,30.5,True,8269,75.7,0 +443,63,Male,132,87,217,55,132,209,133,6.2,26.9,64,146,Atypical Angina,True,1.1,True,Never,1.6,249,6.5,50.2,False,7927,73.1,1 +444,51,Male,107,68,186,48,116,117,129,6.6,21.6,82,171,Asymptomatic,True,0.2,True,Never,3.9,150,7.7,31.0,True,7236,61.9,0 +445,35,Female,112,60,148,52,77,93,95,5.3,19.6,64,199,Non-Anginal Pain,False,0.6,True,Former,2.0,128,7.5,55.9,False,2487,70.5,0 +446,56,Male,125,68,189,57,93,160,111,5.9,16.7,84,178,Asymptomatic,True,0.9,False,Current,2.4,140,4.9,45.1,False,3383,37.5,1 +447,46,Male,128,85,204,47,141,56,122,6.0,20.7,66,162,Non-Anginal Pain,True,0.9,False,Current,1.5,156,6.5,71.6,False,5940,75.3,1 +448,41,Female,129,93,169,63,75,112,104,5.2,15.9,82,191,Asymptomatic,False,0.2,False,Never,0.7,149,7.1,44.3,False,6755,69.6,0 +449,55,Female,142,105,179,53,106,152,146,7.0,32.2,94,170,Atypical Angina,False,1.0,False,Never,2.0,12,5.0,61.2,False,7549,62.3,0 +450,55,Male,112,79,174,55,101,92,104,5.4,28.3,85,136,Non-Anginal Pain,False,0.4,False,Never,4.6,129,6.7,59.3,False,4654,85.5,1 +451,52,Female,147,91,161,49,86,55,97,5.2,24.8,69,178,Non-Anginal Pain,False,0.8,False,Never,5.3,116,6.8,42.7,False,6002,90.8,0 +452,44,Female,128,78,189,35,123,138,146,6.4,22.1,83,151,Asymptomatic,False,1.2,False,Never,0.8,30,6.3,70.6,True,6768,50.2,1 +453,41,Female,98,69,123,48,39,160,104,5.6,26.2,85,196,Typical Angina,False,0.2,False,Former,2.6,176,5.8,57.8,True,9968,49.3,0 +454,54,Female,110,74,220,56,116,174,126,6.2,23.1,62,194,Atypical Angina,False,0.5,True,Former,11.6,136,6.1,48.9,True,5031,63.6,0 +455,70,Female,126,91,207,64,108,148,153,7.3,19.5,84,132,Non-Anginal Pain,False,2.2,False,Never,5.3,82,6.7,72.7,False,2624,28.3,1 +456,33,Male,124,85,158,40,78,202,104,5.5,26.0,85,200,Asymptomatic,False,0.4,False,Never,4.0,61,6.5,55.8,True,5991,56.8,0 +457,45,Male,118,82,180,50,102,88,130,5.6,23.7,98,174,Asymptomatic,False,1.4,False,Never,7.6,20,5.7,56.1,False,11327,49.1,0 +458,52,Male,121,87,164,32,107,111,110,5.4,20.0,89,146,Asymptomatic,True,0.3,True,Former,12.3,67,7.0,63.6,False,4815,55.9,1 +459,52,Female,122,79,217,59,114,194,112,6.0,29.6,73,164,Asymptomatic,False,0.2,False,Current,2.1,103,6.4,25.0,False,8108,65.4,0 +460,46,Male,103,60,151,52,74,116,109,5.8,18.3,89,179,Asymptomatic,False,0.5,True,Never,7.4,182,9.0,61.2,False,6926,79.1,0 +461,79,Female,149,93,146,32,85,114,124,5.7,28.4,77,124,Non-Anginal Pain,False,1.4,False,Current,0.4,80,8.0,18.2,True,6422,72.3,1 +462,59,Male,138,99,160,35,92,225,118,5.9,25.5,71,180,Non-Anginal Pain,True,0.1,False,Current,8.0,220,7.9,27.5,True,9724,47.8,0 +463,41,Female,117,66,160,61,75,139,155,6.1,27.5,88,171,Asymptomatic,True,2.2,True,Never,5.6,10,7.9,40.9,False,1869,61.8,1 +464,30,Male,120,73,180,51,99,92,132,5.5,21.0,82,191,Non-Anginal Pain,False,0.6,True,Never,4.8,220,7.5,64.0,False,6936,47.9,0 +465,52,Male,134,102,196,38,129,143,170,7.5,30.1,80,157,Typical Angina,False,1.0,True,Never,3.8,102,9.2,57.6,False,6545,71.9,1 +466,73,Male,148,99,182,51,101,149,105,5.1,22.1,85,144,Typical Angina,False,0.6,False,Never,20.0,162,7.8,80.8,True,6584,53.8,1 +467,57,Male,125,75,182,55,86,240,118,6.0,25.0,76,172,Asymptomatic,False,1.8,False,Current,6.6,246,8.3,53.7,True,6696,61.9,0 +468,24,Female,128,80,200,59,126,35,161,6.5,21.2,86,203,Non-Anginal Pain,False,0.6,False,Never,3.7,101,7.9,59.4,False,6352,58.6,0 +469,36,Female,120,84,188,54,102,208,118,5.5,19.1,81,198,Asymptomatic,False,0.2,False,Current,4.4,209,8.5,42.8,True,6378,71.0,0 +470,56,Male,135,82,241,52,147,225,117,5.4,34.2,82,168,Asymptomatic,False,0.3,False,Former,12.6,129,5.7,33.7,False,3394,59.1,0 +471,68,Male,113,71,177,34,82,265,151,6.7,29.9,86,137,Non-Anginal Pain,True,0.8,False,Former,1.9,95,5.5,14.1,False,6695,82.7,1 +472,56,Male,123,81,159,52,75,142,155,6.8,23.7,74,142,Non-Anginal Pain,False,0.4,False,Never,11.5,111,7.0,51.3,False,8146,73.9,0 +473,56,Male,138,89,161,53,91,106,124,5.9,26.8,92,136,Typical Angina,True,4.8,False,Never,2.4,86,8.9,32.5,True,9451,73.6,1 +474,68,Female,132,86,254,65,154,177,93,5.7,18.2,79,147,Asymptomatic,False,0.4,True,Former,9.9,139,7.0,84.7,True,9342,72.7,0 +475,70,Male,125,77,207,60,118,108,133,6.6,25.5,77,135,Atypical Angina,False,0.2,False,Former,6.3,127,6.7,75.2,False,7162,68.8,1 +476,45,Male,134,78,168,55,85,139,113,5.7,19.3,77,165,Asymptomatic,False,0.4,True,Never,12.7,133,8.1,81.1,False,6375,51.4,0 +477,60,Male,128,84,158,50,86,112,161,7.0,18.1,91,132,Non-Anginal Pain,True,0.2,False,Former,16.8,92,6.5,45.2,False,2327,82.0,1 +478,42,Female,114,85,204,57,121,190,105,5.3,33.3,88,183,Asymptomatic,False,1.4,False,Never,0.1,128,8.0,75.8,False,2052,69.2,0 +479,40,Female,116,86,199,36,130,128,123,5.8,25.9,82,183,Asymptomatic,False,0.6,False,Current,3.0,95,8.5,64.9,False,7395,27.6,0 +480,62,Male,118,81,158,32,102,93,163,7.0,27.8,74,159,Typical Angina,True,4.4,False,Current,5.6,62,5.3,11.3,False,5832,52.7,1 +481,35,Male,114,68,207,65,94,243,124,5.5,21.1,83,187,Atypical Angina,False,2.0,False,Never,6.0,175,8.8,41.0,False,7807,40.5,0 +482,56,Male,140,79,171,42,102,99,111,5.9,27.2,96,164,Asymptomatic,False,0.1,True,Never,9.5,59,5.5,38.7,False,4836,43.4,0 +483,58,Female,133,74,186,51,111,166,91,4.7,21.7,73,157,Atypical Angina,False,0.8,False,Former,8.3,166,7.6,41.1,False,7021,50.4,0 +484,65,Male,142,100,170,47,97,158,131,5.8,25.5,83,136,Atypical Angina,True,4.6,False,Former,3.0,110,6.8,62.0,True,4940,56.1,1 +485,39,Female,111,77,156,63,70,105,113,6.2,28.2,77,210,Asymptomatic,False,0.4,False,Never,2.0,268,7.2,9.8,False,6014,61.8,0 +486,59,Male,141,86,156,58,78,134,110,5.3,31.5,95,160,Asymptomatic,False,0.5,False,Never,1.7,176,4.5,60.7,True,7753,84.0,0 +487,52,Male,110,78,159,48,77,156,94,5.6,30.2,80,177,Atypical Angina,False,1.0,True,Never,3.6,102,8.2,61.8,True,7867,71.3,0 +488,73,Female,145,100,214,78,109,102,129,6.2,25.2,78,163,Asymptomatic,False,0.3,False,Former,1.6,159,7.9,64.5,False,5880,53.7,0 +489,44,Male,123,84,172,50,100,153,101,5.1,35.7,88,140,Asymptomatic,False,0.5,True,Current,1.7,100,5.8,37.6,False,6283,52.7,1 +490,40,Female,113,69,158,43,92,92,113,5.9,27.4,85,172,Non-Anginal Pain,False,1.0,False,Never,0.2,150,7.4,56.1,False,3367,63.2,0 +491,61,Male,143,92,159,86,56,49,120,5.8,19.1,71,140,Non-Anginal Pain,False,0.2,False,Never,5.7,223,5.9,44.0,False,3814,71.1,0 +492,43,Male,133,89,129,54,35,92,95,4.9,21.4,62,210,Non-Anginal Pain,False,0.4,False,Never,6.8,131,8.1,47.9,False,7228,63.4,0 +493,37,Female,131,81,201,63,94,252,110,5.2,15.0,80,176,Non-Anginal Pain,False,0.4,False,Never,17.6,124,7.4,63.6,False,4215,36.5,0 +494,66,Male,136,86,255,60,174,106,128,5.9,27.9,88,133,Asymptomatic,False,0.4,False,Current,3.1,118,8.5,50.4,False,5637,50.6,1 +495,60,Male,121,78,158,45,66,241,174,7.1,27.6,97,146,Asymptomatic,False,2.0,True,Current,5.9,111,8.1,53.8,True,6976,56.8,0 +496,18,Male,119,74,164,50,79,191,90,5.2,22.1,80,210,Atypical Angina,False,0.2,True,Never,4.7,154,6.2,72.9,False,8048,38.5,0 +497,42,Male,119,71,127,49,79,59,82,4.8,16.4,91,174,Asymptomatic,False,0.0,True,Never,2.5,0,10.5,10.1,False,4140,56.5,0 +498,40,Male,115,58,221,53,147,140,117,6.4,18.9,70,187,Asymptomatic,False,0.5,False,Current,8.4,95,8.4,37.8,False,5731,58.9,0 +499,62,Male,123,80,168,62,79,186,178,7.9,21.9,84,170,Typical Angina,True,0.5,False,Never,9.6,75,5.8,63.3,False,4955,72.7,0 +500,73,Female,132,80,199,62,120,145,105,4.8,25.9,84,162,Asymptomatic,True,2.0,False,Former,1.1,121,7.0,55.9,True,5636,60.3,0 +501,81,Female,131,92,186,65,113,90,119,6.1,24.0,102,103,Asymptomatic,False,3.1,False,Never,12.2,37,7.2,54.4,False,5355,66.6,1 +502,63,Male,126,75,153,48,76,167,142,6.8,26.8,88,150,Asymptomatic,True,1.4,True,Never,3.2,60,6.2,68.6,False,5473,71.2,1 +503,40,Male,127,79,134,45,75,98,118,5.9,22.7,75,192,Atypical Angina,True,1.2,False,Former,4.8,181,6.7,36.6,True,8923,50.6,0 +504,39,Male,121,79,153,46,82,122,139,5.7,27.0,84,188,Asymptomatic,False,0.1,True,Former,3.9,87,7.4,66.9,False,853,52.5,0 +505,42,Male,128,65,149,56,46,167,148,6.2,22.9,80,188,Asymptomatic,False,0.8,False,Former,13.7,166,4.9,49.3,False,3577,84.0,0 +506,60,Female,108,69,225,72,114,144,121,5.3,28.0,80,167,Non-Anginal Pain,False,2.8,True,Former,10.8,262,8.1,22.0,True,8308,67.3,0 +507,70,Male,127,87,262,52,155,213,133,5.5,18.3,75,157,Asymptomatic,True,0.4,True,Former,10.7,152,6.9,54.1,False,4476,41.5,0 +508,29,Female,99,63,191,45,110,201,115,5.7,26.7,89,198,Asymptomatic,False,0.5,True,Former,1.5,232,6.9,28.7,False,10324,72.9,0 +509,62,Female,127,96,192,52,112,150,123,6.0,28.8,91,151,Non-Anginal Pain,False,3.6,False,Current,0.9,175,6.7,42.2,False,5650,37.4,1 +510,66,Male,136,95,216,54,111,267,137,6.4,28.0,101,118,Asymptomatic,False,3.7,True,Former,3.6,137,7.6,59.9,False,6139,50.7,1 +511,58,Male,134,96,165,56,93,153,124,5.8,24.6,69,139,Atypical Angina,True,0.3,False,Never,2.4,59,6.9,36.5,False,3398,63.7,1 +512,90,Male,153,97,140,43,70,167,104,5.7,26.7,71,135,Asymptomatic,True,0.8,True,Never,9.6,92,8.2,49.9,True,3142,54.7,1 +513,61,Male,149,90,263,52,169,149,148,6.2,28.9,80,143,Asymptomatic,True,3.3,False,Former,1.7,86,7.8,50.2,False,5031,64.0,1 +514,54,Male,117,69,164,38,84,241,125,5.6,21.9,96,139,Typical Angina,True,1.4,False,Current,3.9,83,7.5,63.0,True,6054,34.2,1 +515,62,Female,117,85,142,42,83,97,144,6.5,21.6,80,166,Non-Anginal Pain,False,0.7,False,Never,1.1,83,7.2,45.0,False,6331,41.8,0 +516,47,Female,130,84,210,58,106,200,116,5.3,30.3,88,175,Non-Anginal Pain,False,2.7,True,Never,4.1,39,8.8,20.8,False,6082,54.3,0 +517,40,Male,117,82,213,49,116,238,113,5.2,26.8,72,178,Non-Anginal Pain,False,0.7,False,Former,2.8,176,6.0,64.6,True,6914,90.9,0 +518,59,Male,142,89,210,54,117,139,140,6.4,22.1,69,171,Asymptomatic,False,0.7,True,Never,5.5,230,8.5,62.7,True,9779,77.0,0 +519,69,Male,138,94,116,40,42,178,143,6.7,20.5,94,144,Non-Anginal Pain,False,1.5,False,Never,3.0,91,8.3,39.8,True,5040,70.9,1 +520,51,Male,107,78,150,60,66,128,88,5.2,17.5,81,171,Non-Anginal Pain,False,0.2,False,Never,2.4,101,7.6,61.4,True,7132,50.9,0 +521,66,Male,128,81,153,32,97,143,137,6.5,27.4,91,122,Asymptomatic,False,6.5,True,Current,17.1,121,6.6,36.1,False,6590,84.1,1 +522,49,Female,115,69,178,51,80,168,130,6.0,26.2,71,186,Asymptomatic,False,0.5,False,Former,0.8,174,7.3,47.6,True,9350,57.2,0 +523,75,Female,138,89,210,76,116,159,119,6.0,26.2,79,144,Asymptomatic,False,0.3,True,Never,10.0,199,8.9,62.0,False,5020,82.5,0 +524,57,Male,134,87,228,38,153,179,138,6.2,32.3,91,128,Asymptomatic,False,1.4,False,Never,6.9,107,6.1,20.7,False,4745,20.5,1 +525,61,Female,120,77,164,31,123,137,118,5.8,33.0,94,158,Asymptomatic,True,0.9,True,Current,0.1,155,7.0,65.9,False,4563,46.8,1 +526,64,Male,118,66,201,37,139,122,109,5.6,22.7,79,161,Asymptomatic,True,0.7,False,Never,5.6,95,8.3,42.7,False,5091,55.3,1 +527,36,Male,111,56,240,71,133,93,112,5.9,21.6,96,175,Typical Angina,False,0.5,False,Current,10.7,221,8.7,28.1,False,9918,58.3,0 +528,52,Male,142,91,157,52,74,193,136,6.4,30.0,85,148,Atypical Angina,True,1.3,False,Never,4.1,195,6.6,62.9,True,4841,66.5,1 +529,78,Male,119,73,141,30,96,83,107,5.3,26.8,75,127,Asymptomatic,False,0.4,False,Former,2.1,142,6.7,42.3,False,6396,77.1,0 +530,54,Female,123,79,189,69,112,142,62,4.6,15.0,84,173,Asymptomatic,False,0.5,True,Former,2.1,224,6.7,52.1,True,8417,43.5,0 +531,72,Female,140,96,113,33,58,148,165,6.8,35.7,80,136,Asymptomatic,False,0.5,False,Never,5.0,88,7.2,33.7,True,5302,62.4,0 +532,65,Female,132,84,150,59,92,103,103,5.3,16.4,79,150,Asymptomatic,True,0.2,False,Never,1.6,116,5.7,56.3,False,1414,57.3,0 +533,30,Female,113,75,171,35,105,188,149,6.4,30.1,76,199,Asymptomatic,False,0.8,False,Never,0.8,144,5.0,59.1,True,8137,47.8,0 +534,63,Male,134,98,191,45,109,178,122,5.8,20.7,88,180,Asymptomatic,False,0.4,False,Never,3.4,164,6.2,35.2,False,6951,61.4,0 +535,40,Female,126,78,193,56,68,282,103,5.3,24.6,74,188,Asymptomatic,True,0.8,True,Former,11.9,134,5.8,54.2,False,6551,62.3,0 +536,57,Female,116,82,211,77,103,169,115,5.5,25.8,85,194,Asymptomatic,False,0.2,False,Never,1.2,116,7.0,25.5,False,4734,63.1,0 +537,49,Female,116,73,142,87,35,53,95,5.4,21.1,86,170,Asymptomatic,False,0.7,False,Never,2.9,118,6.8,68.9,False,5199,73.3,0 +538,54,Male,128,80,159,63,68,72,157,7.0,34.6,75,179,Non-Anginal Pain,False,1.2,True,Never,1.6,117,8.2,51.8,True,5645,53.3,0 +539,53,Male,149,89,197,36,138,107,117,5.6,33.0,80,177,Asymptomatic,False,0.3,False,Current,6.7,148,9.0,56.3,False,7291,56.5,0 +540,57,Female,137,83,220,61,118,216,117,6.2,28.7,81,174,Asymptomatic,False,1.4,True,Former,4.6,115,5.4,53.3,False,6209,54.9,1 +541,48,Female,112,50,219,79,103,160,124,5.4,18.0,66,175,Typical Angina,False,1.6,True,Never,0.6,208,6.5,43.5,True,6122,62.1,0 +542,36,Male,119,80,189,59,90,218,64,4.1,15.0,82,178,Asymptomatic,False,2.4,False,Never,11.0,133,6.5,65.8,False,6214,77.6,0 +543,41,Male,112,77,201,46,102,175,118,5.2,23.6,79,178,Non-Anginal Pain,False,0.1,False,Never,9.9,209,5.9,48.4,True,5826,78.3,0 +544,66,Male,138,88,168,56,83,200,105,5.7,25.9,96,158,Asymptomatic,False,0.1,False,Never,2.7,4,7.5,87.2,False,3233,32.2,0 +545,76,Male,142,92,205,48,125,180,106,5.4,22.1,71,146,Asymptomatic,True,0.2,False,Never,8.5,127,6.8,67.1,False,4759,55.5,1 +546,57,Female,123,59,174,71,82,108,111,5.9,25.9,83,168,Non-Anginal Pain,False,1.6,True,Never,0.3,147,8.7,25.6,True,9121,59.2,0 +547,65,Female,174,102,207,64,88,198,128,6.1,26.1,80,143,Typical Angina,False,1.4,False,Former,7.7,144,7.7,53.7,True,5057,36.7,1 +548,67,Male,151,104,186,65,105,107,93,5.2,24.6,73,162,Non-Anginal Pain,False,0.8,False,Former,5.5,236,7.9,38.9,True,6815,44.9,0 +549,36,Female,115,82,175,54,98,129,123,5.7,16.2,78,184,Asymptomatic,False,0.4,False,Never,9.5,235,7.5,67.9,False,6924,51.3,0 +550,30,Male,136,98,202,49,106,144,137,6.0,23.1,78,202,Typical Angina,False,0.4,True,Never,1.9,100,5.6,43.3,False,5977,69.7,0 +551,53,Female,131,78,214,52,121,187,76,4.7,30.1,69,148,Non-Anginal Pain,True,2.7,False,Former,7.0,186,6.6,56.0,True,7911,52.0,1 +552,29,Female,124,77,119,50,38,131,124,5.4,19.6,90,157,Non-Anginal Pain,False,0.7,False,Former,8.7,189,7.8,60.2,True,8113,63.7,0 +553,50,Male,132,95,172,45,113,104,92,5.0,16.8,70,178,Non-Anginal Pain,False,1.0,False,Never,5.8,160,8.3,0.0,False,5283,67.5,0 +554,35,Female,88,61,142,70,62,80,118,5.9,20.0,89,178,Atypical Angina,False,0.3,False,Never,4.9,76,6.9,46.2,False,2927,68.5,0 +555,46,Male,146,100,170,59,75,199,125,6.3,30.2,95,162,Asymptomatic,False,0.6,False,Never,4.5,103,6.7,74.0,False,3395,65.4,0 +556,44,Male,124,85,166,41,80,195,151,6.7,26.9,75,184,Asymptomatic,True,0.4,False,Former,1.6,70,7.2,51.5,False,3447,52.1,0 +557,61,Male,129,89,231,63,116,244,86,5.2,26.6,71,163,Asymptomatic,False,0.1,True,Never,14.9,156,6.1,49.6,True,8097,64.2,0 +558,46,Male,136,91,188,54,92,185,137,6.8,22.4,69,191,Atypical Angina,False,0.1,False,Former,22.3,139,8.7,52.7,False,7326,68.7,0 +559,39,Male,116,75,159,48,84,114,134,6.2,22.2,89,172,Asymptomatic,False,0.8,False,Current,11.0,74,4.8,46.3,True,10565,54.4,0 +560,55,Male,130,79,212,43,107,235,137,6.6,31.0,72,153,Atypical Angina,False,0.4,True,Never,6.8,5,4.8,63.7,False,4443,41.4,1 +561,90,Female,157,97,154,33,98,97,111,6.0,33.5,79,110,Asymptomatic,True,2.0,False,Never,2.6,45,6.3,29.5,False,2004,55.6,1 +562,60,Female,143,97,203,54,99,196,100,5.8,28.2,75,172,Non-Anginal Pain,True,0.8,False,Former,1.0,195,7.5,58.4,False,4759,80.4,0 +563,29,Male,117,74,178,47,102,157,130,6.6,27.9,88,204,Atypical Angina,False,0.2,True,Current,15.2,224,7.3,54.1,False,4865,79.9,0 +564,55,Female,140,90,215,74,99,154,101,5.1,19.4,99,175,Asymptomatic,False,0.5,False,Never,1.9,228,5.8,71.6,False,6071,62.1,0 +565,87,Female,124,77,222,81,128,35,154,6.8,17.3,86,129,Asymptomatic,False,1.0,False,Never,1.4,176,7.4,41.5,True,10491,68.7,0 +566,56,Male,150,93,178,49,87,194,134,6.2,31.2,85,142,Atypical Angina,True,2.2,True,Never,9.6,165,5.4,59.3,True,7095,68.8,1 +567,71,Female,133,83,179,48,121,49,101,5.8,24.6,83,154,Atypical Angina,False,0.7,False,Never,4.8,99,7.7,43.9,True,4003,59.0,0 +568,68,Female,118,75,186,62,86,194,109,5.3,26.4,85,163,Asymptomatic,False,0.6,False,Never,6.8,51,7.8,64.4,False,4982,41.6,0 +569,69,Female,151,83,243,54,143,223,112,5.6,29.0,74,131,Asymptomatic,False,3.5,False,Never,7.4,46,5.1,47.4,False,6758,50.9,1 +570,68,Male,111,72,200,30,147,135,150,6.3,32.1,95,109,Asymptomatic,False,0.4,False,Never,4.9,134,6.2,53.2,False,6417,56.8,1 +571,58,Female,131,79,199,68,110,105,126,5.9,16.9,73,179,Asymptomatic,False,0.7,False,Never,6.3,152,8.2,64.8,True,2018,53.9,0 +572,52,Male,136,88,196,52,109,91,126,6.0,20.9,73,152,Typical Angina,True,0.4,False,Never,9.2,182,8.3,42.4,True,7227,71.3,1 +573,50,Female,151,91,225,72,122,159,155,6.6,30.7,89,168,Atypical Angina,False,0.4,True,Never,22.1,75,6.0,36.6,True,4334,50.7,0 +574,56,Female,118,79,137,28,85,140,143,6.4,35.8,91,161,Asymptomatic,False,0.8,False,Never,2.6,64,7.3,24.7,True,5714,50.5,0 +575,60,Male,125,73,195,45,116,186,119,5.9,32.8,82,158,Asymptomatic,False,1.7,False,Never,17.6,87,8.0,60.1,False,1896,45.4,0 +576,37,Male,158,104,202,46,114,215,112,5.3,32.9,96,177,Atypical Angina,True,0.6,False,Never,4.5,143,8.9,56.7,False,7939,60.0,0 +577,50,Female,132,89,99,36,59,45,78,5.0,19.1,95,172,Asymptomatic,False,0.1,False,Never,0.2,198,7.5,62.5,False,7786,75.2,0 +578,53,Female,146,81,201,50,113,172,131,6.1,35.5,85,164,Non-Anginal Pain,False,0.4,False,Former,5.8,102,6.8,49.4,True,4476,58.6,0 +579,55,Male,112,67,240,54,126,311,131,6.7,30.4,91,167,Asymptomatic,False,2.0,False,Current,10.4,93,7.6,4.8,False,3182,56.2,0 +580,50,Male,123,86,209,71,98,198,128,5.4,25.2,72,194,Atypical Angina,False,0.7,True,Never,2.2,215,8.0,39.7,False,9427,49.2,0 +581,64,Male,115,77,260,82,151,127,150,6.6,28.1,75,161,Asymptomatic,False,0.2,False,Former,3.7,123,9.0,41.8,True,6668,45.5,0 +582,53,Male,123,77,153,48,71,155,125,6.3,33.9,69,156,Asymptomatic,False,1.9,False,Never,1.6,213,6.4,62.5,True,6748,41.6,0 +583,49,Male,120,73,132,51,60,145,154,6.8,22.7,78,198,Typical Angina,False,0.8,True,Former,7.3,164,6.5,58.3,False,3548,59.1,0 +584,38,Male,143,94,190,39,101,242,79,4.9,28.8,62,169,Asymptomatic,False,0.1,False,Never,3.1,221,7.9,45.6,False,3713,61.7,0 +585,44,Female,138,86,196,59,105,143,166,6.8,29.7,84,149,Asymptomatic,True,2.5,False,Never,4.3,68,4.9,82.8,False,2286,50.1,0 +586,57,Male,128,68,201,66,96,213,131,5.5,19.0,76,175,Atypical Angina,True,1.4,False,Former,20.4,221,5.5,56.9,True,10031,74.2,0 +587,56,Female,125,85,176,54,93,185,125,5.6,22.5,82,157,Typical Angina,False,1.9,True,Never,11.2,79,6.4,18.1,False,5845,33.3,1 +588,27,Male,125,85,165,50,77,166,106,5.1,20.7,75,206,Typical Angina,False,1.2,False,Never,5.6,215,4.8,83.3,False,8164,77.8,0 +589,66,Female,146,100,246,50,152,169,169,7.3,29.8,91,124,Typical Angina,True,2.1,False,Never,22.3,134,6.6,52.3,True,5466,67.2,1 +590,45,Female,129,83,147,47,63,133,125,5.7,22.9,89,185,Atypical Angina,False,0.6,True,Never,0.3,184,5.4,41.0,True,3944,76.4,0 +591,42,Male,146,83,185,30,126,164,89,5.2,26.1,81,193,Asymptomatic,False,0.4,True,Current,9.2,166,4.9,48.5,True,10080,44.1,0 +592,68,Female,139,72,188,62,117,109,109,5.7,19.1,69,164,Non-Anginal Pain,False,1.0,True,Never,6.1,162,7.8,77.5,False,5571,54.7,0 +593,69,Male,133,75,179,54,88,207,128,5.7,22.4,90,167,Non-Anginal Pain,False,0.3,False,Never,6.1,119,6.0,52.8,False,5942,43.1,0 +594,45,Male,133,84,211,44,144,157,130,6.3,29.3,98,191,Asymptomatic,True,1.9,True,Former,7.3,88,8.1,73.0,False,4022,34.6,1 +595,49,Female,122,82,204,47,124,194,151,6.5,31.3,91,185,Asymptomatic,False,0.5,True,Never,5.3,201,6.6,51.0,True,4554,49.9,0 +596,38,Female,136,85,141,50,56,131,166,6.7,30.8,85,206,Asymptomatic,False,0.1,True,Never,0.8,152,7.5,60.1,False,5028,77.4,0 +597,65,Female,132,78,147,37,96,105,146,6.7,29.7,94,137,Asymptomatic,False,3.4,True,Current,2.5,58,7.5,56.7,False,7031,41.0,0 +598,66,Male,138,86,218,62,98,208,133,6.3,24.0,88,108,Asymptomatic,True,0.7,True,Never,1.9,39,6.2,77.7,False,4617,65.9,1 +599,48,Female,124,65,128,37,60,159,118,5.3,24.6,75,172,Asymptomatic,False,0.4,True,Never,2.6,121,7.9,43.7,False,4330,44.6,0 +600,72,Male,117,72,149,63,73,136,140,6.9,25.2,88,149,Asymptomatic,False,1.1,True,Never,5.3,74,6.6,18.3,False,5370,64.2,0 +601,66,Female,140,95,172,44,114,40,109,5.0,21.6,91,159,Atypical Angina,False,1.1,False,Current,3.7,94,7.8,52.2,False,6432,52.4,0 +602,52,Female,130,89,177,52,93,157,126,5.6,26.8,104,193,Asymptomatic,True,1.8,False,Current,2.2,124,5.5,77.7,False,7278,51.6,0 +603,63,Male,131,80,160,51,86,96,97,5.3,15.0,71,166,Asymptomatic,False,0.2,True,Never,3.5,211,6.0,81.6,False,6129,48.2,0 +604,32,Male,116,71,189,46,91,238,98,4.9,30.0,72,210,Typical Angina,False,0.1,False,Former,9.1,101,6.5,77.3,True,6920,44.9,0 +605,51,Male,120,74,151,35,103,112,121,5.9,33.7,88,140,Typical Angina,True,0.5,True,Never,2.2,150,6.6,44.1,True,10768,63.4,1 +606,57,Male,122,81,223,49,161,89,114,5.2,23.1,62,160,Typical Angina,False,0.2,False,Former,15.3,132,7.9,44.9,False,7225,61.1,0 +607,54,Female,122,72,174,54,103,94,114,6.1,24.1,72,173,Asymptomatic,False,0.4,False,Former,3.0,211,6.0,44.5,False,2450,50.8,0 +608,81,Male,123,78,173,40,90,208,128,5.4,27.2,89,120,Non-Anginal Pain,True,0.2,False,Never,4.1,158,8.6,78.0,False,5947,72.3,1 +609,58,Male,139,93,232,46,133,289,124,5.8,31.6,89,152,Atypical Angina,True,0.7,False,Never,5.1,250,7.6,45.9,True,11163,64.3,1 +610,59,Male,124,94,240,53,135,230,101,5.2,27.7,89,155,Atypical Angina,True,2.9,False,Current,1.9,85,6.1,48.6,False,7332,58.7,1 +611,37,Female,118,75,160,56,78,117,60,4.0,16.8,79,183,Non-Anginal Pain,False,0.1,False,Never,9.5,146,8.0,42.5,False,4391,59.6,0 +612,52,Female,141,81,248,49,150,223,149,6.9,35.6,88,170,Asymptomatic,False,0.6,False,Former,5.2,148,7.9,51.2,True,9686,57.3,0 +613,44,Female,113,63,211,52,110,233,100,5.5,29.7,103,204,Non-Anginal Pain,False,0.1,False,Current,3.5,125,6.1,80.8,False,5105,58.9,0 +614,85,Male,134,72,237,57,144,95,144,6.7,25.4,88,140,Asymptomatic,True,0.9,False,Never,8.1,0,7.6,57.1,False,4596,69.0,1 +615,49,Male,127,90,159,35,98,136,80,4.8,25.9,62,189,Non-Anginal Pain,False,0.4,False,Former,19.3,276,6.2,42.7,False,6513,53.7,0 +616,56,Female,155,98,144,54,60,186,103,5.7,29.8,103,200,Atypical Angina,False,0.2,False,Never,3.2,0,7.5,57.9,False,6780,54.0,0 +617,70,Female,129,87,185,39,116,150,145,6.9,32.4,80,131,Non-Anginal Pain,True,1.2,False,Former,0.6,0,8.3,72.9,False,1778,49.2,1 +618,63,Female,130,84,236,66,131,142,96,5.1,25.7,81,161,Asymptomatic,False,3.1,False,Never,9.6,155,7.3,39.2,False,7060,66.4,0 +619,36,Male,128,84,173,55,91,150,130,6.7,20.1,96,189,Atypical Angina,False,0.4,False,Never,2.4,104,5.0,53.9,False,4425,55.9,0 +620,62,Female,134,81,204,50,120,182,135,6.5,25.6,80,165,Non-Anginal Pain,False,1.3,False,Current,7.2,140,6.0,53.1,False,2770,69.6,0 +621,63,Male,149,89,206,71,101,160,108,5.4,25.9,67,169,Typical Angina,True,1.2,False,Never,9.1,209,7.2,40.3,True,6955,77.1,1 +622,52,Male,140,84,219,57,137,120,158,7.1,25.9,83,183,Atypical Angina,False,1.8,True,Former,1.9,81,7.9,33.8,False,3690,40.5,0 +623,60,Female,105,64,193,55,96,211,104,5.5,20.7,82,193,Non-Anginal Pain,False,0.6,False,Never,2.1,138,5.9,63.5,False,6228,65.6,0 +624,55,Female,136,85,229,57,143,176,95,5.0,26.7,71,176,Non-Anginal Pain,False,0.8,True,Never,3.5,173,8.3,37.1,False,4328,60.1,0 +625,36,Male,114,66,174,35,93,170,121,6.1,19.3,80,205,Typical Angina,False,1.3,False,Current,4.3,125,7.0,40.5,True,5115,57.0,0 +626,47,Male,123,83,221,69,124,170,132,6.5,30.8,87,174,Atypical Angina,False,0.4,False,Former,8.3,90,6.1,55.9,True,4796,60.9,0 +627,54,Female,144,89,171,63,70,164,145,7.1,25.7,86,165,Asymptomatic,True,0.1,True,Former,1.1,118,6.6,27.1,True,6733,51.0,0 +628,46,Female,111,59,179,43,107,194,124,6.0,26.4,80,173,Asymptomatic,False,0.2,False,Former,1.8,133,7.8,44.3,False,4215,61.0,0 +629,61,Female,106,62,194,51,135,116,133,5.9,25.9,93,148,Asymptomatic,True,1.0,False,Former,9.5,56,6.1,52.4,False,4238,32.3,0 +630,67,Male,133,83,107,51,38,84,89,4.8,23.7,75,144,Non-Anginal Pain,False,0.3,True,Former,1.7,126,7.1,33.7,False,6130,71.0,0 +631,58,Male,110,66,218,74,122,108,122,5.5,20.5,75,162,Asymptomatic,True,0.4,False,Former,1.7,303,8.1,57.8,True,8164,80.1,0 +632,49,Female,118,67,167,58,81,121,130,6.1,28.9,84,190,Asymptomatic,True,0.0,True,Never,0.7,134,7.2,54.5,False,5505,73.5,0 +633,72,Female,119,89,140,54,69,144,148,6.6,25.8,80,138,Asymptomatic,False,0.4,False,Former,13.6,57,5.3,47.7,False,4978,56.5,0 +634,56,Female,133,73,231,60,145,146,124,5.9,25.2,78,134,Atypical Angina,False,2.7,False,Former,5.4,152,7.2,44.6,False,5163,54.4,1 +635,59,Female,121,84,213,78,98,207,145,5.8,23.3,91,183,Non-Anginal Pain,False,2.2,False,Former,2.0,147,7.5,58.0,True,5395,51.0,0 +636,44,Male,132,86,217,61,102,214,135,6.1,21.5,82,196,Typical Angina,False,0.1,False,Former,41.0,177,7.3,42.2,False,3857,52.8,0 +637,51,Male,111,57,139,50,58,173,125,5.9,29.0,82,181,Asymptomatic,False,0.3,True,Never,13.3,160,8.5,57.7,True,4086,96.6,0 +638,67,Female,129,86,178,61,89,136,108,5.7,28.2,90,154,Asymptomatic,True,0.3,True,Current,14.6,157,7.0,46.5,True,4740,53.7,1 +639,64,Male,122,76,230,68,137,147,74,4.5,27.2,84,137,Asymptomatic,True,0.7,False,Never,2.3,102,6.3,75.8,False,6993,64.4,1 +640,52,Male,117,69,216,57,122,141,93,4.9,22.9,96,153,Asymptomatic,False,0.9,False,Former,5.4,123,6.0,42.6,True,7545,54.2,0 +641,54,Female,125,77,218,69,119,129,117,6.1,27.3,72,159,Asymptomatic,False,0.8,False,Never,10.6,196,6.0,60.7,False,6155,66.4,0 +642,57,Male,131,93,217,55,130,116,93,5.2,27.0,89,170,Atypical Angina,True,0.1,False,Never,3.2,52,7.9,39.8,True,6246,67.7,0 +643,42,Female,108,68,176,62,105,101,125,6.0,24.3,84,190,Non-Anginal Pain,False,1.1,False,Current,2.1,139,7.3,40.6,False,6355,65.6,0 +644,52,Female,131,86,223,70,100,189,73,4.9,24.6,86,181,Atypical Angina,False,0.3,True,Current,3.2,156,8.9,60.4,True,8784,84.1,0 +645,47,Female,129,91,225,63,139,68,160,6.2,27.6,82,179,Asymptomatic,False,0.1,False,Current,3.9,246,5.7,38.6,True,7456,61.4,0 +646,36,Female,135,79,192,65,78,193,133,6.2,31.5,70,188,Typical Angina,False,0.6,False,Never,5.0,147,7.4,42.3,True,8326,67.5,0 +647,56,Male,143,95,210,47,133,127,114,5.2,22.9,75,175,Asymptomatic,False,1.0,False,Former,3.2,167,7.1,48.4,True,7468,45.7,0 +648,52,Female,114,73,195,63,105,129,131,6.2,18.6,75,169,Typical Angina,False,1.4,True,Never,1.0,163,6.4,50.2,False,6463,47.2,0 +649,35,Female,107,70,210,59,122,181,158,6.8,25.5,62,195,Asymptomatic,False,0.8,False,Never,6.7,104,5.5,49.1,False,4427,55.4,0 +650,44,Female,108,75,171,51,108,69,130,6.3,24.4,76,176,Non-Anginal Pain,False,1.2,False,Never,1.1,173,7.7,2.1,False,5433,89.8,0 +651,53,Female,133,70,139,44,87,113,114,6.0,27.7,84,190,Atypical Angina,False,1.6,False,Former,0.1,118,5.6,69.4,False,5272,79.7,0 +652,18,Female,126,82,165,49,91,162,70,4.1,23.5,94,210,Asymptomatic,False,0.1,False,Never,6.7,166,6.7,34.9,True,7658,68.1,0 +653,56,Female,148,97,165,43,101,162,104,5.4,26.8,78,156,Typical Angina,False,0.4,False,Never,2.5,65,4.9,79.2,False,5465,48.7,0 +654,57,Female,112,74,232,65,138,158,100,5.6,22.4,77,154,Atypical Angina,False,0.1,False,Never,3.2,97,5.4,11.7,False,8850,47.5,0 +655,62,Female,130,72,204,64,112,130,126,6.1,26.6,68,161,Non-Anginal Pain,False,1.3,False,Never,0.4,255,7.0,22.6,False,5501,72.6,0 +656,46,Male,135,90,185,51,92,164,120,5.7,24.7,71,186,Asymptomatic,False,0.6,False,Never,4.0,112,7.6,49.7,False,4695,57.1,0 +657,36,Female,111,68,148,59,80,122,120,5.1,21.2,91,210,Non-Anginal Pain,True,0.5,False,Never,2.6,169,8.2,48.7,True,6619,63.1,0 +658,62,Male,123,79,199,58,118,102,155,6.9,20.7,83,180,Asymptomatic,False,0.0,False,Never,9.9,139,8.1,47.9,True,5938,61.4,0 +659,36,Male,122,70,158,46,81,209,103,5.5,24.6,92,202,Non-Anginal Pain,False,2.2,False,Never,6.8,144,5.5,35.0,False,8806,86.1,0 +660,61,Female,129,76,238,75,143,63,97,5.4,19.5,95,156,Typical Angina,False,0.1,True,Former,2.1,62,7.9,55.2,True,5724,59.7,0 +661,45,Male,139,78,118,35,35,212,111,5.8,31.4,90,165,Non-Anginal Pain,True,2.1,True,Current,10.5,64,6.1,64.7,False,4650,57.2,1 +662,41,Female,126,72,182,43,93,194,85,5.0,26.0,80,192,Typical Angina,True,0.7,True,Never,11.9,177,8.3,45.8,True,3233,60.5,0 +663,58,Female,134,74,245,51,153,164,136,6.8,26.3,91,177,Asymptomatic,True,1.5,False,Current,4.0,156,8.4,34.9,True,4787,70.6,0 +664,69,Male,157,88,146,43,79,138,132,5.9,28.7,79,167,Asymptomatic,False,0.6,False,Never,3.3,173,6.2,55.7,True,9398,50.9,0 +665,52,Male,133,82,148,54,83,108,85,4.7,26.1,78,195,Atypical Angina,False,1.5,False,Never,7.6,181,7.5,39.1,False,7313,72.9,0 +666,51,Male,149,106,252,42,184,128,84,4.9,29.2,93,165,Atypical Angina,False,2.4,False,Never,3.4,167,8.2,88.4,True,8761,49.4,1 +667,32,Male,126,85,149,36,81,129,124,5.7,28.1,86,182,Asymptomatic,False,0.5,True,Never,3.6,30,6.5,68.9,False,8451,46.0,1 +668,65,Female,141,85,219,64,127,162,112,5.5,20.2,70,153,Asymptomatic,True,0.2,False,Current,6.2,220,6.5,41.7,False,7260,43.9,0 +669,55,Female,112,63,192,88,82,106,64,4.5,20.2,72,176,Atypical Angina,False,0.7,True,Never,3.6,198,7.5,36.8,False,7328,57.4,0 +670,50,Male,103,68,164,64,54,171,91,4.9,25.7,71,189,Non-Anginal Pain,False,2.2,False,Never,18.0,210,8.0,81.9,True,7374,64.8,0 +671,71,Male,122,84,263,30,191,230,139,6.3,26.9,96,159,Atypical Angina,True,1.0,False,Former,1.7,56,7.9,41.5,False,6429,63.4,1 +672,34,Male,107,70,165,45,79,172,75,4.5,28.5,83,196,Non-Anginal Pain,False,0.1,True,Former,3.4,251,5.0,15.1,False,5662,60.5,0 +673,47,Female,111,77,182,62,91,150,93,5.5,26.0,71,180,Asymptomatic,False,0.6,True,Former,1.4,166,5.7,22.6,True,12152,62.5,0 +674,54,Male,122,78,154,66,69,143,117,5.7,26.4,86,172,Non-Anginal Pain,False,0.2,False,Never,11.2,196,7.5,60.1,False,6854,59.2,0 +675,50,Female,127,66,223,52,138,187,101,6.2,22.8,80,180,Atypical Angina,False,0.6,False,Never,2.9,172,9.1,55.1,False,6373,85.9,0 +676,22,Female,117,75,160,48,92,137,117,6.0,30.3,86,199,Typical Angina,False,2.5,False,Former,21.3,79,6.0,39.5,True,8622,55.2,0 +677,59,Male,152,100,217,70,117,127,137,6.3,26.7,69,150,Atypical Angina,False,4.9,True,Former,6.2,180,8.4,33.8,False,4451,57.5,1 +678,54,Male,121,76,144,66,68,84,101,5.3,24.5,85,159,Non-Anginal Pain,False,0.6,True,Former,1.9,142,5.3,49.6,True,6354,58.5,0 +679,67,Male,115,68,189,56,109,162,85,5.3,22.8,81,138,Non-Anginal Pain,False,0.1,False,Never,6.2,105,5.0,59.7,False,3495,54.8,0 +680,81,Female,140,79,202,51,129,107,118,6.3,26.9,96,119,Asymptomatic,True,1.0,False,Never,0.5,0,7.1,50.4,False,3921,46.0,1 +681,52,Female,150,94,233,90,93,204,106,5.4,28.9,76,161,Non-Anginal Pain,False,0.4,False,Never,3.8,215,8.2,46.1,False,5414,76.1,0 +682,59,Female,148,93,225,64,136,113,145,6.3,23.3,70,148,Atypical Angina,False,3.0,True,Never,3.9,107,6.9,34.1,True,4411,89.4,1 +683,57,Female,146,79,203,57,96,258,119,5.7,23.0,75,147,Asymptomatic,False,0.4,False,Current,24.1,292,8.1,32.1,True,8295,66.1,0 +684,56,Male,111,59,191,70,91,157,80,4.3,22.6,79,171,Non-Anginal Pain,False,0.7,False,Former,2.6,157,5.1,48.7,True,3452,62.2,0 +685,52,Male,124,84,188,48,127,172,118,5.4,29.9,79,167,Asymptomatic,False,0.7,True,Never,19.5,137,6.9,36.1,False,6644,54.2,0 +686,59,Male,138,96,201,51,110,205,130,6.3,23.5,79,147,Asymptomatic,True,0.8,False,Current,7.8,144,7.2,53.1,False,5953,69.1,1 +687,69,Female,135,106,105,52,58,64,85,4.7,23.1,85,176,Asymptomatic,False,1.8,False,Former,4.7,212,7.5,24.0,True,9893,68.8,0 +688,43,Female,126,88,201,44,113,199,137,6.3,34.6,94,155,Asymptomatic,False,0.3,False,Never,0.4,33,8.7,44.4,False,4336,60.5,0 +689,79,Female,159,80,225,58,130,162,128,5.9,25.8,78,123,Asymptomatic,False,0.3,False,Current,4.9,166,7.8,29.0,False,5444,33.9,1 +690,61,Female,140,79,161,46,103,126,150,6.4,28.9,82,150,Typical Angina,False,0.6,False,Former,1.9,12,7.6,56.9,False,3326,46.6,1 +691,58,Male,136,84,200,42,103,232,127,6.0,24.4,94,155,Asymptomatic,False,0.4,False,Current,20.7,60,8.3,53.1,False,7197,63.0,0 +692,25,Male,118,60,210,40,142,139,163,6.8,32.9,87,210,Asymptomatic,False,1.3,False,Current,2.8,144,6.7,45.3,True,8811,69.9,0 +693,54,Female,110,81,187,64,71,203,98,5.4,22.2,76,193,Atypical Angina,False,1.0,False,Never,1.8,201,5.0,30.6,False,8079,84.1,0 +694,41,Male,135,84,204,34,136,201,106,5.1,30.5,102,181,Asymptomatic,True,4.0,True,Current,8.6,109,5.8,40.5,False,2638,38.3,1 +695,61,Female,114,67,233,59,146,152,165,6.7,25.4,90,190,Asymptomatic,False,0.0,True,Never,11.4,192,6.8,67.9,True,7357,67.1,0 +696,66,Female,139,83,214,71,103,166,131,6.1,25.3,75,149,Non-Anginal Pain,False,0.1,False,Former,2.4,115,4.3,40.5,False,4852,52.4,0 +697,69,Female,135,81,204,38,98,282,148,6.9,33.6,79,147,Asymptomatic,True,0.9,True,Current,0.7,47,8.6,40.3,False,1362,37.3,1 +698,52,Female,124,75,198,35,129,199,165,6.8,30.6,77,138,Atypical Angina,False,2.5,False,Current,5.9,223,7.3,30.5,True,6969,41.4,1 +699,53,Female,131,82,233,77,122,116,104,5.6,19.4,78,189,Non-Anginal Pain,True,0.1,True,Never,5.4,186,6.8,67.2,True,8761,54.8,0 +700,60,Male,125,79,187,63,98,126,105,5.5,23.2,72,165,Asymptomatic,False,0.5,False,Never,5.0,87,5.3,69.9,False,3516,54.6,0 +701,27,Male,120,80,124,24,77,99,138,6.1,23.7,91,198,Asymptomatic,False,0.4,True,Current,2.8,4,6.2,56.8,False,3654,23.4,0 +702,48,Female,109,76,126,31,64,184,129,6.3,27.6,94,171,Non-Anginal Pain,True,1.3,False,Current,16.1,113,6.2,34.4,True,6883,49.7,1 +703,47,Male,124,61,193,51,119,127,96,4.8,35.0,68,179,Asymptomatic,False,1.2,False,Never,6.8,183,7.5,34.4,True,6465,54.9,0 +704,61,Male,142,89,192,53,108,146,123,5.9,26.9,83,141,Atypical Angina,False,2.6,False,Never,8.1,258,3.8,32.9,False,7672,49.4,1 +705,48,Male,132,83,176,62,82,196,113,5.4,21.8,72,172,Asymptomatic,False,0.1,False,Never,12.1,169,5.5,41.2,True,7152,69.8,0 +706,64,Male,122,71,130,41,49,205,141,5.9,22.3,84,163,Asymptomatic,False,0.1,False,Never,1.7,32,7.6,42.1,False,6335,58.5,0 +707,51,Female,112,65,173,80,65,92,98,5.2,21.6,75,192,Non-Anginal Pain,False,1.4,False,Never,0.3,284,8.2,38.3,False,5326,72.7,0 +708,65,Male,144,97,188,84,95,122,132,6.3,22.6,93,145,Atypical Angina,True,1.1,True,Former,2.1,141,6.3,56.8,False,901,67.1,1 +709,83,Male,177,115,213,39,131,246,135,6.0,37.0,88,126,Non-Anginal Pain,False,3.0,False,Former,18.4,149,8.4,47.9,False,7762,43.0,1 +710,74,Female,146,92,183,59,110,152,113,5.9,17.8,83,153,Asymptomatic,False,0.4,False,Never,6.1,146,6.8,65.6,True,9151,42.3,0 +711,66,Male,129,83,213,50,135,188,131,6.2,22.5,80,152,Non-Anginal Pain,True,1.1,True,Never,7.8,162,6.6,64.7,True,10809,34.4,1 +712,69,Female,141,81,222,70,96,240,153,6.5,24.8,74,135,Asymptomatic,True,0.0,False,Former,7.9,187,6.5,51.6,False,4848,70.6,0 +713,49,Female,130,85,197,60,89,212,140,6.3,26.1,86,178,Atypical Angina,False,0.8,True,Never,33.6,62,7.3,31.2,False,7209,67.6,0 +714,44,Male,135,80,206,60,104,197,135,6.5,32.1,99,165,Typical Angina,False,0.9,True,Never,5.3,140,7.0,45.3,False,3344,71.0,1 +715,43,Female,111,83,167,56,92,84,84,5.1,26.9,66,157,Asymptomatic,False,0.7,True,Never,4.1,142,8.5,59.5,False,3544,59.4,1 +716,57,Male,133,73,256,67,140,266,136,5.8,27.6,88,163,Asymptomatic,False,0.1,True,Never,1.6,128,6.5,59.9,False,4013,64.9,0 +717,73,Male,134,95,174,46,91,170,97,5.2,20.9,86,120,Asymptomatic,False,0.4,True,Never,10.9,119,6.4,26.4,False,4265,59.2,0 +718,45,Male,145,85,187,18,117,141,79,5.2,30.2,86,183,Atypical Angina,False,0.0,False,Current,9.0,71,6.3,52.1,False,5953,58.8,0 +719,60,Male,135,89,169,49,92,129,95,4.5,26.9,80,180,Non-Anginal Pain,False,0.4,False,Current,10.2,146,7.3,31.4,True,9850,71.1,0 +720,38,Male,93,71,138,30,88,146,96,5.3,30.2,70,186,Asymptomatic,False,0.9,True,Former,11.4,171,7.2,34.4,True,7172,57.4,0 +721,38,Male,130,75,200,45,123,171,131,5.9,31.6,76,178,Non-Anginal Pain,False,0.1,True,Former,2.5,98,5.1,50.9,True,8387,60.0,0 +722,65,Male,128,83,179,57,98,85,125,6.0,29.5,80,159,Non-Anginal Pain,False,0.3,False,Never,5.7,154,5.6,35.5,True,5462,44.4,0 +723,45,Male,124,81,196,49,113,149,96,5.9,26.7,73,168,Non-Anginal Pain,False,1.6,False,Former,14.2,124,7.0,46.6,True,5966,74.9,0 +724,45,Male,122,78,184,63,80,233,123,6.4,20.2,66,170,Non-Anginal Pain,False,0.2,False,Never,4.9,245,6.8,49.1,True,8416,74.9,0 +725,80,Female,147,84,217,55,118,245,145,6.4,28.4,89,130,Non-Anginal Pain,True,1.9,False,Former,3.9,142,5.3,57.1,False,5132,54.8,1 +726,55,Female,149,83,181,73,88,112,112,5.8,22.1,86,168,Typical Angina,False,0.2,True,Never,6.5,126,6.9,66.7,False,5988,72.2,0 +727,53,Female,135,82,185,67,106,93,128,6.0,21.9,93,162,Atypical Angina,False,0.9,False,Current,11.5,182,6.2,50.8,False,4863,44.5,0 +728,51,Female,137,81,130,58,76,75,106,5.7,19.6,82,175,Asymptomatic,True,1.0,True,Current,1.0,71,8.3,32.4,False,5588,57.8,0 +729,59,Female,109,78,213,62,131,142,95,4.4,20.9,75,181,Asymptomatic,False,1.3,False,Never,2.8,115,9.1,20.2,False,2206,56.4,0 +730,45,Male,122,73,195,51,118,109,116,5.7,19.5,78,210,Asymptomatic,False,0.2,False,Never,6.8,144,5.6,52.8,False,7932,48.9,0 +731,55,Female,131,78,164,51,98,65,154,6.9,22.9,83,194,Atypical Angina,False,1.3,True,Former,0.7,211,8.1,48.8,True,8986,49.5,0 +732,68,Male,149,93,180,73,110,65,139,6.9,19.4,80,133,Typical Angina,False,4.3,False,Former,2.9,108,4.9,47.8,False,5348,35.2,1 +733,50,Female,125,82,109,65,54,81,109,5.8,26.1,86,158,Atypical Angina,False,0.9,False,Never,2.4,161,8.4,38.7,True,6529,89.4,0 +734,23,Female,117,73,206,66,102,165,121,5.2,29.7,87,200,Asymptomatic,False,0.3,False,Never,0.4,235,6.6,72.2,False,7746,59.1,0 +735,45,Male,117,83,151,69,58,97,110,5.9,22.8,82,182,Non-Anginal Pain,False,0.9,False,Former,12.7,199,5.6,36.6,True,8135,71.9,0 +736,64,Male,140,102,214,40,133,124,191,7.6,25.1,85,137,Asymptomatic,False,0.4,False,Never,3.0,74,7.6,42.9,False,7566,38.1,1 +737,69,Female,152,101,210,60,120,153,90,4.9,30.4,84,147,Asymptomatic,True,1.1,False,Former,0.4,180,7.1,22.1,False,1749,55.3,0 +738,59,Female,143,85,210,42,147,113,101,5.1,22.3,65,159,Asymptomatic,False,0.4,False,Never,9.3,206,8.2,62.8,True,7550,45.8,0 +739,73,Male,139,79,159,39,103,122,88,5.0,19.3,78,148,Asymptomatic,False,0.1,False,Never,4.7,130,7.4,38.6,True,3418,35.7,0 +740,40,Male,115,65,183,66,85,153,118,5.5,27.0,76,179,Asymptomatic,False,0.5,False,Never,2.3,208,6.3,73.0,True,7580,73.6,0 +741,71,Female,125,73,189,55,126,149,83,5.4,21.6,79,135,Non-Anginal Pain,True,0.6,False,Current,2.5,58,7.3,36.5,False,621,56.0,1 +742,57,Male,122,81,180,52,86,166,143,6.3,23.4,80,143,Asymptomatic,False,0.5,False,Never,2.8,34,7.4,41.1,False,2802,47.8,0 +743,63,Female,139,72,173,49,89,170,112,5.7,28.8,82,173,Atypical Angina,False,2.7,False,Former,0.2,82,8.0,31.5,False,9434,50.3,0 +744,18,Male,116,67,115,51,40,124,142,6.5,30.8,73,206,Typical Angina,True,0.0,False,Never,1.5,193,6.3,55.5,False,7566,63.6,0 +745,66,Male,154,96,189,64,101,134,82,4.4,24.9,78,149,Asymptomatic,False,0.3,True,Former,8.0,243,8.3,37.1,True,7613,45.3,1 +746,57,Female,130,87,104,25,62,35,114,5.6,26.2,87,183,Non-Anginal Pain,False,1.0,False,Never,2.0,231,6.9,46.2,True,7247,48.6,0 +747,79,Female,130,89,239,60,156,97,157,6.4,25.0,70,128,Asymptomatic,False,1.5,True,Former,3.9,150,8.7,49.0,True,7596,50.2,1 +748,56,Male,123,78,139,42,90,35,98,4.6,22.2,68,150,Non-Anginal Pain,False,0.5,False,Never,13.4,162,7.9,59.4,True,7300,76.4,0 +749,41,Male,107,69,177,37,107,153,137,7.0,23.2,74,198,Non-Anginal Pain,False,1.4,False,Current,2.9,185,6.0,57.7,True,7510,45.7,0 +750,44,Male,132,78,173,54,83,135,103,5.5,23.4,72,183,Non-Anginal Pain,False,0.8,True,Never,16.5,156,7.0,17.6,True,7770,87.9,0 +751,59,Male,141,97,171,47,85,156,146,6.1,30.7,78,164,Asymptomatic,False,0.2,False,Never,3.0,181,7.3,46.6,True,6779,58.3,0 +752,58,Male,127,89,233,64,132,160,123,6.1,24.2,80,124,Non-Anginal Pain,False,0.4,True,Never,9.4,30,8.8,61.9,False,7459,45.6,1 +753,46,Male,123,72,190,72,82,184,99,5.7,20.3,79,165,Non-Anginal Pain,True,0.5,False,Never,4.5,97,5.4,79.7,True,7906,54.5,0 +754,40,Female,130,86,204,70,84,236,140,6.2,27.9,85,190,Non-Anginal Pain,True,1.5,True,Never,7.3,130,6.0,65.3,False,4886,27.0,0 +755,74,Male,146,100,176,28,118,162,67,4.9,25.3,89,135,Non-Anginal Pain,True,2.0,False,Current,10.5,157,7.4,64.8,False,5778,42.7,1 +756,51,Female,131,73,173,55,105,131,124,6.8,31.5,85,193,Atypical Angina,False,1.5,True,Never,4.4,134,7.2,66.4,False,4789,84.6,0 +757,53,Male,119,79,175,45,117,61,148,6.3,24.0,76,167,Atypical Angina,False,1.0,True,Former,4.1,113,6.1,60.5,False,3348,32.1,1 +758,47,Male,125,67,183,54,94,198,124,5.6,24.7,68,184,Atypical Angina,False,0.4,False,Current,3.6,116,7.5,39.3,True,2984,56.7,0 +759,72,Female,148,95,225,48,143,132,138,6.7,26.8,86,147,Asymptomatic,False,1.0,False,Never,4.8,103,6.3,57.7,False,7760,52.5,0 +760,69,Female,124,88,167,56,108,82,131,6.5,28.6,79,141,Non-Anginal Pain,False,0.2,False,Former,1.5,109,6.8,42.7,False,7352,51.1,1 +761,41,Male,138,84,216,53,121,209,82,4.4,24.3,85,179,Asymptomatic,False,0.7,False,Never,8.5,143,5.9,64.6,False,5016,66.6,0 +762,53,Male,127,75,233,61,126,176,152,7.0,23.0,81,163,Typical Angina,True,1.7,False,Current,7.9,270,7.4,41.0,False,7891,39.9,1 +763,42,Female,132,85,167,49,84,180,114,5.8,26.2,71,171,Non-Anginal Pain,False,1.3,False,Never,4.8,52,6.6,49.4,False,5299,62.7,0 +764,78,Male,138,91,207,54,104,193,108,5.6,26.7,88,135,Non-Anginal Pain,False,0.3,False,Never,4.5,20,8.3,60.4,False,3164,55.4,0 +765,60,Female,128,81,166,63,80,79,117,6.0,17.2,82,170,Asymptomatic,False,1.0,False,Never,3.3,169,7.0,59.8,False,5566,75.1,0 +766,50,Male,132,87,216,61,123,132,147,6.8,30.3,74,184,Typical Angina,False,0.2,False,Never,2.0,122,7.0,48.2,False,6080,67.2,0 +767,50,Female,153,94,217,78,119,137,162,7.3,19.8,84,166,Non-Anginal Pain,False,0.7,False,Never,3.9,185,8.0,43.6,True,8125,50.8,0 +768,61,Male,146,99,199,44,102,205,153,6.9,30.9,93,120,Asymptomatic,False,5.3,False,Current,4.9,78,7.5,49.3,False,5138,46.1,1 +769,51,Female,137,80,208,62,121,177,102,5.7,25.1,80,142,Atypical Angina,True,2.1,True,Former,7.1,182,6.7,28.2,False,5039,63.8,1 +770,74,Male,154,100,202,66,90,231,125,6.4,28.7,81,161,Non-Anginal Pain,False,0.9,True,Never,5.3,112,7.3,70.0,False,5902,46.3,0 +771,42,Male,127,76,194,57,93,210,94,5.0,21.7,67,186,Non-Anginal Pain,False,1.2,False,Current,4.9,231,7.6,40.9,True,7375,43.9,0 +772,38,Male,126,83,117,58,35,130,106,5.7,24.1,78,182,Typical Angina,False,0.1,False,Never,4.5,116,7.2,84.3,False,4325,47.9,0 +773,72,Female,130,72,226,49,143,153,133,6.3,28.1,85,118,Typical Angina,False,2.7,True,Current,6.7,169,6.6,33.3,True,8414,34.6,1 +774,48,Female,119,91,213,40,126,154,144,6.8,32.1,93,177,Non-Anginal Pain,False,0.9,True,Current,6.3,120,7.5,68.1,True,6953,47.6,1 +775,72,Female,127,89,151,40,103,58,136,5.8,16.5,81,155,Non-Anginal Pain,True,2.5,False,Never,3.1,137,4.7,58.3,True,7191,53.2,0 +776,65,Male,134,90,160,58,95,95,129,5.3,18.7,97,148,Asymptomatic,False,0.6,False,Never,4.9,76,7.6,83.6,True,6927,88.6,0 +777,36,Female,119,70,142,57,70,124,133,6.3,24.1,77,174,Non-Anginal Pain,False,1.2,False,Former,25.2,276,7.0,60.8,True,7184,64.0,0 +778,46,Female,148,83,121,44,56,88,125,5.8,26.0,68,195,Non-Anginal Pain,False,0.8,False,Never,8.9,158,7.1,77.9,False,3231,86.2,0 +779,55,Male,145,92,290,60,168,298,150,6.8,30.2,90,171,Asymptomatic,False,0.6,False,Never,30.0,183,6.7,44.9,True,7140,62.7,0 +780,51,Female,128,86,220,61,138,105,102,5.9,22.7,78,157,Asymptomatic,False,0.2,False,Never,11.7,205,6.2,13.5,True,9511,78.5,0 +781,58,Male,133,76,147,52,87,65,128,5.5,21.0,75,174,Asymptomatic,False,0.9,False,Never,3.4,169,6.5,57.5,True,8853,67.7,0 +782,46,Female,111,71,224,49,145,70,99,5.5,27.4,75,193,Asymptomatic,False,0.4,False,Former,5.6,100,9.6,30.0,False,5419,56.1,0 +783,53,Female,118,69,197,58,95,187,142,6.2,25.4,66,175,Non-Anginal Pain,False,0.5,False,Never,1.1,121,7.5,29.4,True,8887,63.9,0 +784,67,Male,133,82,213,43,144,154,144,6.8,30.9,82,121,Non-Anginal Pain,True,0.4,True,Current,4.1,183,6.7,39.3,False,996,44.7,1 +785,71,Male,148,88,197,48,138,89,112,5.9,28.6,90,125,Asymptomatic,False,0.4,False,Current,3.8,13,7.5,52.8,False,6130,63.0,1 +786,44,Female,112,81,200,57,108,168,117,5.0,23.9,92,175,Asymptomatic,False,0.7,False,Former,1.8,116,6.4,78.0,False,3954,46.8,0 +787,51,Male,129,87,171,46,78,178,150,6.5,25.8,80,167,Asymptomatic,False,0.2,True,Never,1.6,108,8.4,58.4,False,2969,45.2,0 +788,52,Female,133,77,183,49,106,88,157,6.8,34.2,80,162,Asymptomatic,False,0.9,False,Current,0.8,91,8.6,34.8,False,3731,43.5,1 +789,36,Female,141,90,222,38,156,98,99,5.6,26.4,87,193,Asymptomatic,False,0.5,False,Current,4.9,168,4.9,59.7,False,6021,60.7,0 +790,66,Female,98,75,201,54,130,125,102,5.7,23.5,77,142,Asymptomatic,False,0.5,False,Never,4.6,86,9.1,47.1,False,3340,73.0,0 +791,61,Female,122,80,211,81,89,170,126,6.1,26.5,87,179,Asymptomatic,False,0.1,False,Never,1.2,153,7.5,60.0,False,5962,64.4,0 +792,61,Female,128,82,187,54,109,113,124,5.6,29.8,87,181,Atypical Angina,False,0.1,False,Never,4.4,231,5.4,28.4,False,4239,54.0,0 +793,53,Female,128,77,233,47,152,165,122,6.2,34.2,86,163,Asymptomatic,True,2.8,False,Current,3.6,99,7.8,22.5,False,4970,51.8,1 +794,65,Female,152,88,161,56,107,75,122,6.1,28.9,81,161,Atypical Angina,False,2.5,False,Current,4.2,143,6.1,79.4,False,5128,60.6,0 +795,67,Female,134,88,206,51,112,173,117,6.1,23.7,83,148,Non-Anginal Pain,True,1.5,False,Never,0.5,74,7.6,59.9,False,6240,80.1,1 +796,69,Male,142,83,205,35,134,105,137,6.5,25.2,75,153,Typical Angina,False,0.1,False,Never,6.3,87,8.2,42.0,False,3500,66.2,1 +797,52,Male,115,70,138,46,71,143,86,4.8,21.3,76,175,Asymptomatic,False,1.4,False,Current,1.6,162,6.3,54.3,True,4979,73.8,0 +798,59,Male,124,78,207,45,98,265,118,5.8,28.8,82,139,Asymptomatic,True,2.2,False,Current,1.7,248,5.7,58.8,True,9540,52.7,1 +799,49,Female,139,91,145,39,96,83,146,6.7,17.2,79,189,Asymptomatic,False,0.9,False,Current,3.2,110,8.2,43.3,False,2016,51.3,0 +800,50,Male,118,76,171,47,95,107,120,5.6,25.6,85,159,Non-Anginal Pain,True,0.9,True,Former,6.7,149,6.7,36.0,False,6465,50.0,0 +801,67,Female,133,79,199,53,138,36,123,5.9,19.7,84,139,Asymptomatic,True,1.3,False,Current,2.5,100,7.4,57.4,False,3458,84.1,1 +802,55,Male,132,90,209,68,96,230,133,5.9,23.9,88,191,Non-Anginal Pain,True,0.6,False,Current,2.6,185,5.7,2.7,False,2639,58.6,0 +803,52,Female,115,74,233,74,141,143,118,5.6,15.0,76,178,Non-Anginal Pain,False,0.8,False,Former,9.7,104,7.4,43.1,True,9525,66.3,0 +804,62,Male,120,65,200,62,124,87,94,5.1,26.9,78,180,Atypical Angina,False,0.2,False,Former,2.6,100,3.6,29.3,False,5366,75.7,0 +805,63,Male,125,68,129,57,51,134,148,6.5,25.9,86,162,Non-Anginal Pain,False,0.2,True,Never,9.8,98,6.4,33.5,False,4886,69.4,0 +806,44,Male,134,107,237,49,161,137,77,4.4,23.0,88,187,Asymptomatic,False,0.4,True,Current,2.2,129,7.6,50.3,True,7152,66.4,0 +807,46,Female,101,65,220,62,121,100,120,5.6,16.9,76,182,Typical Angina,False,0.8,False,Never,4.4,160,7.0,25.7,True,9046,63.6,0 +808,63,Male,116,89,198,52,104,193,95,5.3,25.8,61,157,Typical Angina,False,1.0,False,Former,5.7,196,6.6,39.7,True,9442,53.5,0 +809,61,Female,111,70,194,47,130,84,151,7.0,25.8,79,129,Non-Anginal Pain,False,0.6,True,Never,3.5,219,7.7,64.4,False,6469,45.4,1 +810,51,Male,129,81,236,54,151,106,126,5.8,20.5,80,173,Non-Anginal Pain,False,0.3,False,Former,1.6,192,8.0,46.7,True,7812,66.9,0 +811,70,Male,136,90,233,66,125,182,130,5.8,22.6,89,145,Asymptomatic,False,0.7,True,Never,3.5,152,5.4,44.8,False,5504,53.7,0 +812,53,Male,105,56,227,56,121,241,138,6.7,27.9,71,140,Typical Angina,False,1.5,True,Former,1.9,100,6.3,2.2,True,6147,52.5,1 +813,29,Male,113,87,190,76,84,194,112,5.2,16.5,85,206,Non-Anginal Pain,False,1.1,True,Never,10.3,316,7.0,54.3,True,10778,75.1,0 +814,44,Male,113,73,199,52,132,99,81,4.9,25.8,88,177,Asymptomatic,False,0.6,True,Former,9.8,5,5.5,26.0,False,4022,76.3,0 +815,35,Female,131,84,246,83,137,206,87,4.7,26.5,87,202,Atypical Angina,False,0.1,False,Never,2.0,186,6.2,49.9,True,6561,49.5,0 +816,69,Female,141,89,193,60,116,104,100,5.7,25.1,72,149,Atypical Angina,False,4.1,True,Former,1.5,85,6.6,57.0,False,4328,50.7,1 +817,61,Female,133,92,182,38,112,168,125,5.7,21.6,77,171,Non-Anginal Pain,False,1.9,False,Former,4.9,124,6.6,38.0,True,4139,51.4,0 +818,56,Female,138,91,211,70,118,118,138,6.5,26.8,80,159,Asymptomatic,False,1.2,False,Current,2.9,135,7.4,58.0,False,6364,64.4,0 +819,24,Male,103,68,154,57,97,89,61,4.0,18.6,78,192,Asymptomatic,False,1.1,False,Former,9.3,87,6.8,20.2,True,7433,48.4,0 +820,35,Male,107,72,157,63,82,89,112,5.7,21.2,80,191,Asymptomatic,False,1.3,False,Never,2.6,174,5.2,37.3,False,7138,69.7,0 +821,52,Female,127,81,183,64,97,69,101,5.8,22.3,65,176,Atypical Angina,False,0.1,False,Never,10.2,236,6.1,20.9,True,8767,75.4,0 +822,31,Male,128,86,135,57,71,35,88,5.3,17.7,79,184,Atypical Angina,False,0.1,False,Former,1.7,163,4.8,52.7,False,3686,50.8,0 +823,66,Female,130,86,188,68,73,205,128,6.1,22.3,78,210,Asymptomatic,False,0.7,False,Never,1.0,308,6.9,59.1,True,6936,42.2,0 +824,53,Female,130,78,207,56,115,179,110,5.9,27.1,72,169,Asymptomatic,False,0.4,False,Former,2.9,249,5.9,65.1,False,8995,49.4,0 +825,52,Male,115,77,270,56,163,243,125,6.4,27.9,81,150,Typical Angina,True,2.6,False,Never,8.2,133,6.9,59.2,False,7855,56.2,1 +826,53,Male,137,91,168,63,70,164,161,6.8,31.8,95,183,Non-Anginal Pain,False,0.2,False,Never,14.6,89,7.1,52.5,False,3956,90.8,0 +827,42,Female,103,60,155,69,86,113,104,4.9,15.0,89,171,Atypical Angina,False,0.3,False,Never,6.4,232,8.2,42.7,True,10308,46.4,0 +828,40,Female,116,69,187,79,84,177,138,6.2,22.8,65,190,Asymptomatic,False,0.7,True,Former,3.4,214,5.3,45.5,True,10123,47.1,0 +829,29,Female,100,55,180,72,86,72,136,6.2,21.5,73,188,Atypical Angina,False,0.5,False,Never,3.2,283,6.0,44.7,True,9735,75.2,0 +830,54,Female,124,77,180,54,93,147,137,6.2,25.4,74,145,Typical Angina,False,0.6,False,Former,1.9,226,6.2,36.6,True,9217,57.9,0 +831,59,Male,129,84,190,64,119,65,129,5.5,20.1,69,156,Asymptomatic,False,1.3,False,Never,2.5,159,7.4,60.4,False,5626,56.0,0 +832,51,Male,133,82,215,52,138,129,93,5.1,28.4,78,173,Non-Anginal Pain,False,1.5,False,Current,4.7,178,8.8,49.3,True,7506,34.9,0 +833,50,Male,132,88,161,67,88,75,107,5.2,24.1,92,176,Atypical Angina,True,1.1,False,Former,1.6,59,6.9,71.3,False,6672,60.8,1 +834,42,Male,132,86,180,62,88,143,95,5.4,18.5,72,190,Asymptomatic,False,0.9,True,Never,1.9,155,7.1,70.5,False,6950,86.7,0 +835,57,Female,126,84,178,61,94,174,143,6.3,22.6,99,162,Asymptomatic,False,0.8,False,Former,4.1,122,8.3,48.7,True,7866,65.8,0 +836,22,Female,109,65,186,41,128,136,89,5.0,29.8,89,206,Typical Angina,False,0.3,False,Current,1.6,130,5.9,47.1,False,4645,69.5,0 +837,40,Female,122,78,202,64,121,120,126,6.5,27.6,79,180,Asymptomatic,False,2.8,False,Never,2.3,104,4.1,61.5,False,3724,48.2,1 +838,45,Male,132,94,210,37,144,159,124,6.3,26.1,92,185,Asymptomatic,False,0.1,False,Never,2.5,81,7.1,64.8,True,5887,37.2,0 +839,47,Male,121,58,144,41,72,116,130,6.1,21.9,70,204,Asymptomatic,True,0.3,True,Former,2.1,99,6.6,53.3,False,5252,43.0,0 +840,57,Female,120,63,150,71,45,164,109,6.1,24.6,80,184,Asymptomatic,False,1.1,False,Former,1.4,211,5.6,33.9,True,9370,89.3,0 +841,51,Male,151,95,201,50,111,187,138,6.1,27.7,75,135,Typical Angina,False,1.5,False,Never,12.0,98,6.0,11.8,True,6587,54.6,1 +842,56,Male,126,68,231,61,142,104,80,4.4,25.7,77,152,Asymptomatic,False,0.3,True,Never,3.3,87,5.7,24.3,False,9976,87.1,0 +843,70,Male,121,85,207,61,117,171,129,6.1,19.9,83,176,Non-Anginal Pain,False,0.8,False,Former,3.2,130,6.0,63.4,False,6099,64.4,0 +844,72,Female,129,88,210,56,120,106,117,5.3,22.6,77,143,Non-Anginal Pain,False,0.4,True,Never,2.3,240,7.2,46.4,True,6479,47.8,0 +845,62,Male,141,81,170,53,84,171,98,5.3,25.2,93,143,Atypical Angina,False,0.7,True,Never,3.2,46,6.9,58.2,False,4144,57.9,0 +846,70,Male,134,88,157,46,95,74,109,5.0,26.8,88,172,Asymptomatic,False,2.3,False,Never,4.8,164,9.4,43.3,True,5334,52.1,0 +847,76,Female,112,66,179,75,92,66,96,5.0,26.5,78,125,Non-Anginal Pain,False,0.4,True,Never,4.6,174,7.1,49.5,False,5596,76.8,0 +848,59,Female,122,69,116,58,36,134,132,5.8,25.0,75,186,Non-Anginal Pain,False,0.5,False,Never,3.3,89,6.1,40.4,True,7332,83.7,0 +849,36,Male,134,87,207,40,126,177,130,6.3,26.4,99,178,Atypical Angina,True,0.5,False,Current,2.1,114,6.0,30.2,False,8176,54.6,1 +850,67,Female,104,66,223,60,121,181,151,7.1,21.3,60,146,Asymptomatic,False,3.3,False,Never,3.3,173,7.7,40.8,True,7855,34.1,0 +851,41,Male,128,91,176,26,92,266,132,6.4,26.6,90,147,Atypical Angina,True,0.9,False,Current,4.6,80,5.9,47.6,False,2320,59.3,1 +852,78,Female,133,75,140,47,78,81,109,5.8,21.7,74,174,Asymptomatic,False,0.5,False,Former,7.6,102,6.9,47.5,False,5532,83.9,0 +853,76,Female,158,102,175,50,103,173,96,5.5,30.6,81,140,Typical Angina,False,3.8,False,Former,3.0,162,5.7,37.2,True,7548,67.8,0 +854,47,Male,114,80,220,53,138,147,108,5.3,27.6,75,165,Non-Anginal Pain,False,0.3,False,Former,3.6,110,7.1,41.4,False,6560,44.8,0 +855,40,Male,121,80,231,78,122,109,127,5.8,22.9,83,173,Non-Anginal Pain,False,0.3,False,Never,5.4,221,6.9,57.8,False,5256,36.5,0 +856,45,Male,107,69,203,59,118,197,152,7.1,17.0,69,170,Asymptomatic,False,0.8,True,Never,5.2,61,4.5,29.2,False,6536,56.9,1 +857,53,Male,117,91,189,54,105,183,143,6.8,22.0,67,148,Asymptomatic,True,5.4,True,Never,7.4,63,7.9,43.1,False,3857,21.9,1 +858,71,Female,139,83,202,46,157,108,112,5.7,24.8,73,127,Asymptomatic,False,1.4,True,Current,1.9,112,7.1,23.6,False,4708,56.6,1 +859,38,Male,134,87,170,44,117,94,156,7.1,27.1,87,173,Typical Angina,False,0.1,False,Never,6.4,23,6.0,53.4,False,4834,54.8,0 +860,65,Male,144,98,160,52,71,181,142,6.6,30.1,81,127,Atypical Angina,False,3.3,False,Former,3.8,114,9.5,54.2,True,7207,38.3,1 +861,27,Female,101,52,162,57,89,89,108,5.5,17.7,76,206,Typical Angina,False,1.0,False,Never,3.9,142,7.1,24.2,True,5776,74.4,0 +862,70,Male,140,80,150,21,107,129,161,7.3,37.1,87,153,Non-Anginal Pain,True,0.5,True,Current,7.9,65,5.7,55.6,True,5655,43.8,1 +863,53,Male,131,93,191,72,104,172,111,6.1,28.7,81,198,Asymptomatic,False,0.4,False,Never,6.3,250,6.9,50.7,False,7165,57.2,0 +864,57,Female,131,87,195,68,111,63,103,5.8,22.8,82,157,Atypical Angina,False,0.8,False,Never,2.5,47,7.0,66.2,True,2780,60.5,0 +865,53,Male,139,96,218,58,141,139,132,6.1,26.7,88,186,Non-Anginal Pain,False,1.3,False,Never,4.1,131,8.8,68.9,False,4798,37.9,0 +866,66,Male,128,85,200,51,111,148,148,7.0,26.0,73,143,Typical Angina,True,2.6,False,Never,2.3,170,7.1,67.2,False,6364,39.6,1 +867,59,Female,124,81,217,58,110,287,138,6.1,31.3,78,179,Asymptomatic,False,0.4,False,Former,3.7,100,9.6,43.3,False,3741,20.6,0 +868,76,Male,150,94,220,61,122,175,127,6.5,30.5,84,140,Atypical Angina,True,0.2,False,Former,3.7,93,6.7,76.4,False,6298,62.4,1 +869,31,Male,116,73,146,45,68,190,105,6.2,29.2,75,191,Asymptomatic,False,0.1,True,Former,1.7,99,7.1,61.7,False,6416,72.9,0 +870,42,Female,136,89,191,49,105,130,107,5.6,26.2,76,208,Non-Anginal Pain,False,0.8,False,Never,1.6,149,6.2,58.1,False,7742,58.8,0 +871,37,Male,129,83,150,34,67,161,118,4.7,29.0,81,207,Non-Anginal Pain,False,0.5,False,Former,6.3,169,5.2,33.6,False,6933,70.3,0 +872,63,Male,128,86,226,51,127,206,66,4.8,22.9,91,159,Asymptomatic,False,0.1,False,Current,2.4,125,8.0,62.3,True,5884,69.6,0 +873,32,Male,107,65,255,62,139,144,73,4.9,19.2,76,183,Atypical Angina,False,1.4,True,Never,3.9,127,7.4,47.9,False,5857,47.2,0 +874,86,Female,120,76,186,51,110,149,136,5.8,20.3,92,145,Non-Anginal Pain,False,0.5,False,Current,6.2,152,8.1,62.4,True,3893,60.7,1 +875,55,Male,131,81,205,43,143,150,71,4.4,27.0,83,171,Typical Angina,True,2.9,True,Current,1.6,107,7.5,51.1,False,4970,44.3,1 +876,70,Male,144,90,198,47,120,135,104,5.4,25.8,74,147,Non-Anginal Pain,True,0.5,False,Never,1.7,175,6.2,45.4,True,8914,52.4,1 +877,41,Female,133,82,221,45,138,151,121,5.7,28.8,79,177,Non-Anginal Pain,False,0.5,False,Former,0.7,169,6.3,41.5,False,6156,49.7,0 +878,57,Male,141,91,192,48,99,193,159,7.2,22.1,89,152,Atypical Angina,True,2.9,False,Current,16.6,119,6.8,38.2,False,6000,48.3,1 +879,62,Female,144,92,221,51,108,216,95,4.0,30.2,74,172,Asymptomatic,False,0.2,False,Current,1.1,248,6.4,32.2,True,10190,68.5,0 +880,45,Male,144,89,199,57,104,160,110,5.7,28.3,75,161,Non-Anginal Pain,False,0.6,False,Never,2.6,197,7.8,50.9,True,6200,57.9,0 +881,51,Female,137,86,230,68,114,213,146,6.7,32.5,86,175,Atypical Angina,False,1.2,False,Never,4.5,175,7.8,46.6,True,9877,63.5,0 +882,74,Female,138,83,169,82,86,47,134,5.8,25.7,88,128,Typical Angina,False,0.2,False,Former,6.5,129,6.3,23.8,False,5778,61.8,0 +883,70,Female,136,87,224,67,126,152,122,5.3,31.1,88,132,Non-Anginal Pain,False,3.1,False,Former,0.9,55,7.7,62.0,False,4921,84.4,1 +884,62,Female,132,85,225,49,137,164,145,6.1,31.7,78,189,Non-Anginal Pain,False,0.2,False,Former,1.5,160,6.3,30.2,True,4004,34.3,0 +885,80,Male,118,71,196,44,110,231,104,5.6,27.0,79,117,Atypical Angina,False,0.2,False,Former,11.1,120,9.0,50.6,True,7852,66.9,0 +886,29,Male,113,63,206,59,92,194,128,5.4,24.8,81,196,Non-Anginal Pain,False,0.3,False,Former,17.7,267,7.0,21.1,True,11128,76.5,0 +887,58,Female,123,72,256,87,117,190,150,6.8,24.4,88,142,Non-Anginal Pain,False,1.2,False,Current,4.4,186,8.9,35.2,True,6146,51.1,0 +888,49,Male,110,68,239,75,133,170,113,5.3,18.2,81,177,Non-Anginal Pain,False,0.7,True,Never,3.7,227,7.8,25.4,True,10547,54.0,0 +889,73,Female,106,73,186,65,115,35,98,5.0,18.2,74,146,Non-Anginal Pain,False,0.9,False,Never,0.6,133,9.2,53.4,True,3751,70.3,0 +890,68,Female,128,82,199,57,127,60,113,5.2,23.9,86,135,Atypical Angina,False,0.2,False,Former,1.7,150,5.4,36.2,False,4886,68.6,1 +891,69,Female,104,68,216,47,114,182,87,5.1,21.5,71,169,Atypical Angina,False,0.4,False,Former,1.8,116,8.2,48.2,False,3629,68.1,0 +892,46,Female,137,90,213,57,118,185,132,6.1,24.9,77,192,Asymptomatic,False,3.5,False,Never,0.9,81,5.8,56.4,False,6401,59.4,0 +893,61,Male,148,78,168,36,121,63,132,6.0,33.1,83,151,Non-Anginal Pain,False,0.6,False,Never,6.1,0,5.4,74.3,False,5518,49.2,1 +894,68,Male,134,87,213,65,128,65,128,6.3,22.5,70,138,Non-Anginal Pain,False,1.7,False,Never,4.4,113,7.6,39.9,False,5331,58.2,0 +895,71,Female,126,91,218,66,127,154,132,6.0,23.4,70,163,Non-Anginal Pain,False,1.1,False,Never,4.3,164,6.0,59.7,False,2481,100.0,0 +896,42,Male,123,75,151,41,81,149,92,4.9,28.2,88,154,Typical Angina,False,1.1,False,Former,5.8,46,7.0,41.8,False,4867,73.7,1 +897,45,Female,124,80,231,58,131,189,103,4.9,21.7,81,166,Non-Anginal Pain,False,0.1,True,Never,7.3,138,7.7,41.4,True,2678,60.6,0 +898,57,Male,140,90,219,66,120,147,123,5.8,25.7,81,138,Non-Anginal Pain,True,0.9,True,Never,2.4,270,7.8,52.4,True,8007,69.4,1 +899,72,Female,126,82,230,67,125,113,133,6.1,26.5,82,164,Asymptomatic,False,1.2,False,Never,7.1,236,5.8,45.4,True,7390,53.8,0 +900,62,Female,127,79,232,65,135,179,130,5.6,22.3,90,188,Asymptomatic,False,0.5,False,Never,4.5,39,6.6,53.5,False,5356,49.3,0 +901,72,Male,145,87,183,26,112,235,96,5.4,28.8,85,137,Asymptomatic,True,0.7,False,Never,10.8,65,6.5,49.3,True,7354,54.1,1 +902,29,Male,111,61,227,69,117,213,168,7.1,22.6,90,188,Non-Anginal Pain,False,1.7,True,Current,10.8,107,8.7,28.2,False,6966,60.2,0 +903,50,Female,145,91,195,59,85,242,133,6.1,26.7,82,159,Asymptomatic,True,1.5,True,Never,23.6,108,6.5,36.6,False,5976,58.5,1 +904,60,Male,141,84,177,65,83,173,134,6.5,20.3,83,174,Asymptomatic,False,1.2,False,Current,25.9,103,7.3,35.7,True,9423,55.6,0 +905,58,Female,128,86,215,55,153,105,145,6.3,21.2,78,160,Asymptomatic,False,0.9,False,Never,1.9,181,6.1,75.5,False,5194,54.5,0 +906,29,Male,135,79,184,51,88,261,129,6.4,27.9,90,205,Non-Anginal Pain,False,0.2,True,Never,6.9,91,5.8,49.4,False,4161,58.8,0 +907,68,Male,112,65,201,63,108,188,116,5.5,17.5,92,138,Typical Angina,False,1.7,True,Never,13.0,120,9.7,50.8,False,4869,56.6,1 +908,58,Male,151,87,205,49,137,87,132,6.2,24.7,76,165,Asymptomatic,False,0.7,False,Never,1.8,138,7.9,35.3,True,7492,64.9,0 +909,48,Female,139,91,197,64,108,132,123,6.1,26.0,74,201,Atypical Angina,True,1.0,False,Former,1.7,171,4.6,76.4,True,8431,60.9,0 +910,70,Male,157,92,205,56,136,35,73,4.7,20.6,86,147,Asymptomatic,False,0.4,False,Former,6.1,21,6.4,50.9,False,1809,51.6,0 +911,32,Male,132,91,177,48,94,211,114,5.8,36.4,83,181,Non-Anginal Pain,False,1.7,False,Never,2.3,10,8.7,53.4,False,4473,49.0,0 +912,47,Male,123,69,207,90,92,147,109,5.2,23.2,71,178,Asymptomatic,False,0.1,False,Former,1.8,176,6.8,55.0,True,6768,53.4,0 +913,65,Male,139,92,208,49,131,146,114,5.6,26.4,69,136,Atypical Angina,True,3.3,False,Former,2.7,58,7.8,44.4,False,2751,57.6,1 +914,59,Female,130,87,188,37,100,206,107,4.8,23.4,91,141,Non-Anginal Pain,False,1.8,False,Current,0.6,240,6.9,90.7,True,8633,56.1,1 +915,51,Female,133,86,190,54,113,118,124,6.4,22.5,77,190,Non-Anginal Pain,False,0.5,False,Former,0.7,195,7.0,49.1,True,9129,43.5,0 +916,52,Male,124,75,190,37,116,170,98,5.3,34.5,75,161,Typical Angina,True,1.0,False,Current,2.2,96,7.3,48.5,True,6311,36.7,1 +917,51,Male,125,80,189,50,118,124,112,5.2,21.4,73,181,Asymptomatic,False,0.0,True,Never,6.7,100,7.2,50.1,True,6446,68.1,0 +918,65,Male,135,90,135,48,71,48,123,5.6,24.7,84,153,Typical Angina,False,4.1,False,Never,3.1,160,6.0,33.8,False,6438,57.5,0 +919,50,Male,120,81,162,55,77,167,164,7.2,30.0,82,136,Asymptomatic,True,4.6,False,Never,5.1,141,6.8,30.1,True,6680,63.3,1 +920,63,Female,105,63,168,49,121,56,90,5.4,21.0,101,157,Atypical Angina,True,0.9,False,Never,3.1,78,6.8,62.7,True,8793,37.3,0 +921,27,Male,121,86,213,60,127,148,115,6.3,21.2,70,189,Asymptomatic,False,0.3,True,Never,3.4,261,7.4,30.5,True,6852,59.9,0 +922,70,Male,127,76,185,37,115,183,112,5.7,26.1,83,134,Atypical Angina,True,0.5,False,Never,9.9,238,8.1,29.8,True,9805,52.0,1 +923,86,Male,155,98,182,39,109,149,123,5.6,23.6,78,120,Asymptomatic,False,1.5,False,Current,2.1,133,6.6,49.2,False,3919,57.9,1 +924,60,Male,118,81,203,69,111,99,98,5.0,17.6,77,153,Asymptomatic,False,0.7,False,Never,4.9,205,4.5,71.3,False,3265,65.4,0 +925,53,Female,148,96,243,54,130,241,123,5.9,22.0,79,154,Asymptomatic,False,4.6,False,Never,20.5,155,6.5,50.0,False,3806,69.1,1 +926,47,Male,124,74,208,18,145,215,115,5.9,29.3,89,167,Asymptomatic,False,0.1,False,Former,2.2,79,3.9,50.9,False,3023,30.3,1 +927,63,Male,132,80,220,56,132,87,129,6.2,26.0,75,166,Non-Anginal Pain,True,2.6,False,Never,12.4,245,6.7,56.3,False,5952,47.5,1 +928,46,Female,114,72,187,56,103,109,121,6.0,29.0,70,178,Asymptomatic,False,0.3,False,Never,3.6,241,6.4,62.6,True,8496,54.5,0 +929,43,Female,114,80,168,89,76,79,71,4.0,16.3,61,186,Typical Angina,False,0.1,True,Never,8.7,264,6.7,37.4,True,6634,65.0,0 +930,26,Male,133,85,153,59,66,167,137,6.5,30.4,77,193,Atypical Angina,False,1.1,True,Never,2.7,237,6.0,57.8,True,7328,50.6,0 +931,57,Male,129,79,171,43,80,134,87,5.2,28.8,82,137,Asymptomatic,True,1.1,False,Never,18.5,0,6.5,32.1,False,1053,46.2,1 +932,50,Female,144,90,187,61,89,218,104,5.1,23.8,85,162,Asymptomatic,False,0.6,True,Former,1.0,145,5.5,32.4,False,8427,74.6,0 +933,51,Female,123,86,189,59,110,71,150,6.3,19.2,62,176,Asymptomatic,False,0.5,False,Current,1.2,278,6.2,22.6,False,10951,62.9,0 +934,54,Male,125,76,189,48,107,151,96,4.6,22.5,83,174,Asymptomatic,False,1.1,True,Never,8.9,159,6.0,31.0,False,5281,68.2,0 +935,45,Female,131,77,146,48,76,154,168,7.0,24.4,92,173,Atypical Angina,False,1.1,False,Current,0.6,159,8.8,19.4,False,4810,70.2,0 +936,56,Male,121,78,178,54,104,120,139,6.2,24.1,90,149,Asymptomatic,False,0.1,False,Never,3.7,48,5.7,63.0,False,4554,50.4,0 +937,40,Male,139,94,187,55,91,225,92,4.7,30.1,78,198,Asymptomatic,True,0.9,False,Never,7.1,161,5.4,65.3,False,4886,62.9,0 +938,52,Female,115,60,139,57,65,131,120,5.7,26.9,72,175,Asymptomatic,False,0.9,False,Never,8.6,147,5.6,22.6,False,4682,48.1,0 +939,50,Female,150,101,150,48,97,95,121,6.2,26.4,77,175,Asymptomatic,False,0.3,False,Never,1.9,133,5.5,36.4,False,6793,53.9,0 +940,32,Male,113,67,188,53,89,187,88,4.9,21.9,87,173,Asymptomatic,False,0.4,True,Former,1.9,108,4.8,65.7,False,8870,69.7,0 +941,38,Male,130,90,194,61,96,206,122,5.5,25.2,73,183,Non-Anginal Pain,False,1.1,True,Never,7.9,48,7.6,48.5,False,6993,66.3,0 +942,46,Male,117,70,151,50,69,105,136,6.0,21.6,67,168,Non-Anginal Pain,False,0.1,True,Former,2.4,144,4.9,23.8,True,5933,77.6,0 +943,47,Female,133,80,147,75,45,155,140,6.5,19.0,79,172,Atypical Angina,False,0.6,False,Never,6.9,89,7.1,63.2,False,4218,52.8,0 +944,57,Male,115,70,229,57,101,263,82,4.9,28.5,83,154,Asymptomatic,False,1.0,False,Never,2.0,215,5.3,44.6,True,6730,54.8,0 +945,49,Female,122,89,172,47,86,187,145,6.4,32.2,85,208,Asymptomatic,False,0.6,False,Never,7.4,74,5.4,40.8,False,4891,54.6,0 +946,53,Female,119,80,165,60,85,171,152,7.2,23.6,93,174,Atypical Angina,False,1.1,False,Former,3.8,267,6.9,26.8,True,11880,84.7,0 +947,49,Female,138,83,206,58,115,142,94,5.1,28.1,67,173,Non-Anginal Pain,False,0.5,True,Never,0.0,197,8.4,32.3,True,11565,64.9,0 +948,20,Male,110,68,157,65,63,143,98,5.4,19.1,77,192,Asymptomatic,False,0.7,False,Former,4.2,269,9.2,44.3,True,10966,44.3,0 +949,52,Male,133,93,165,50,78,174,121,5.8,20.9,62,176,Asymptomatic,True,0.8,True,Current,3.3,191,7.7,37.2,True,5578,34.1,0 +950,43,Male,150,86,187,63,77,248,138,6.8,30.0,89,166,Asymptomatic,False,0.9,False,Former,11.5,115,6.8,60.2,False,7035,32.7,0 +951,52,Female,137,81,189,59,112,81,158,6.6,27.9,89,187,Asymptomatic,True,0.1,True,Former,2.9,159,7.2,50.4,False,4639,61.6,0 +952,44,Female,129,76,191,42,129,150,138,6.5,24.0,70,197,Asymptomatic,False,2.5,False,Never,2.0,151,5.4,57.9,True,6227,85.4,0 +953,63,Male,121,76,242,52,149,157,159,6.9,25.3,84,165,Non-Anginal Pain,False,0.1,True,Current,6.8,137,7.2,65.9,True,7464,67.6,1 +954,53,Male,124,79,167,65,78,138,134,6.2,26.0,85,167,Typical Angina,False,0.5,True,Former,10.6,169,8.1,32.0,False,6578,47.1,0 +955,63,Male,129,84,190,41,112,163,140,6.7,30.0,92,168,Asymptomatic,False,0.3,False,Current,1.9,178,5.3,19.1,False,3601,29.6,0 +956,64,Female,133,83,222,71,119,212,139,6.7,22.0,82,155,Non-Anginal Pain,False,0.3,True,Never,12.6,275,8.1,37.2,True,11074,76.6,0 +957,47,Male,111,85,239,69,117,224,109,5.8,21.1,86,186,Non-Anginal Pain,False,0.5,False,Current,3.3,250,7.1,15.4,True,7857,44.9,0 +958,65,Male,140,78,220,66,128,105,123,6.6,23.9,92,121,Non-Anginal Pain,False,0.2,False,Current,4.1,80,7.3,37.5,False,3341,65.1,1 +959,57,Male,139,91,173,53,101,102,95,5.7,24.7,97,167,Asymptomatic,True,2.8,False,Former,5.6,61,5.8,57.3,False,3862,41.1,1 +960,40,Male,138,82,224,64,146,103,112,5.8,26.3,82,167,Asymptomatic,True,0.8,False,Never,1.5,98,7.0,45.0,False,5635,53.5,1 +961,52,Male,114,78,217,66,125,125,151,6.6,23.3,79,182,Asymptomatic,False,0.3,False,Former,2.4,169,7.2,18.7,True,10130,53.3,0 +962,55,Male,162,93,179,41,89,237,134,5.8,34.3,88,165,Typical Angina,True,0.7,False,Never,17.6,64,5.0,59.7,False,7292,51.6,1 +963,71,Male,136,82,209,38,129,169,159,6.8,32.4,70,134,Non-Anginal Pain,True,1.5,False,Never,22.2,86,7.6,38.6,True,2985,54.1,1 +964,49,Female,128,82,230,72,116,123,157,6.6,25.1,78,183,Asymptomatic,False,0.7,False,Former,4.1,143,7.4,29.6,True,9211,69.6,0 +965,74,Female,128,81,209,56,123,123,122,5.9,27.4,77,152,Atypical Angina,False,0.9,True,Never,3.9,81,7.7,49.4,False,2308,62.2,0 +966,64,Female,128,85,210,47,132,87,133,6.1,28.6,88,139,Non-Anginal Pain,True,2.4,False,Never,4.9,170,7.6,57.7,False,4121,36.5,1 +967,27,Male,117,73,188,59,73,157,109,5.4,21.0,84,174,Typical Angina,False,1.0,False,Current,10.3,79,7.6,53.0,False,5608,81.4,0 +968,41,Female,140,95,183,55,109,87,121,6.4,25.6,88,148,Typical Angina,True,3.0,False,Former,3.3,134,6.2,69.0,False,4182,54.5,1 +969,62,Female,128,73,198,66,116,76,100,4.8,22.0,79,162,Non-Anginal Pain,True,1.9,False,Never,0.4,118,7.6,57.6,True,4102,91.4,1 +970,35,Male,129,86,200,63,100,167,70,4.4,26.8,81,192,Non-Anginal Pain,False,0.0,True,Former,2.9,201,6.8,34.7,True,6585,75.5,0 +971,60,Female,132,85,176,58,83,199,95,4.8,25.6,73,146,Typical Angina,False,0.0,False,Never,8.9,129,6.5,29.9,False,7091,77.8,0 +972,72,Male,124,78,232,46,143,197,161,7.1,24.4,87,125,Asymptomatic,False,1.0,False,Never,2.7,70,6.6,18.3,False,500,61.7,1 +973,51,Male,130,81,160,55,90,82,147,6.3,28.2,89,182,Asymptomatic,False,0.1,False,Never,2.1,114,8.8,56.5,False,5588,55.6,0 +974,72,Male,115,69,140,57,64,73,68,5.0,25.1,85,149,Non-Anginal Pain,False,2.2,False,Never,7.7,102,7.1,41.8,True,4631,66.5,0 +975,71,Male,123,81,149,61,74,64,150,6.3,22.5,77,121,Asymptomatic,True,1.4,False,Never,4.5,193,7.9,58.9,True,2767,51.9,1 +976,53,Female,139,101,215,83,106,182,93,4.8,25.4,89,150,Non-Anginal Pain,False,0.3,False,Former,2.0,218,8.2,50.2,True,8828,79.0,0 +977,54,Male,146,83,142,45,75,136,121,6.0,23.9,89,178,Asymptomatic,False,0.4,False,Current,5.8,126,7.5,58.4,False,9654,62.3,0 +978,56,Male,139,86,174,54,111,82,119,5.9,22.8,82,162,Non-Anginal Pain,True,1.2,False,Former,3.3,173,7.7,47.0,False,5918,62.7,1 +979,60,Male,119,61,213,60,111,164,148,6.8,27.2,77,168,Asymptomatic,False,0.2,False,Never,5.7,125,8.9,35.2,True,7091,56.6,0 +980,34,Female,105,62,185,53,85,228,91,4.6,17.3,69,199,Non-Anginal Pain,False,2.8,False,Current,4.3,106,5.3,45.9,False,6675,55.4,0 +981,52,Male,130,87,227,46,142,174,146,6.1,29.6,84,181,Non-Anginal Pain,False,0.1,True,Never,12.8,66,9.3,61.9,True,5351,44.2,0 +982,32,Male,104,69,143,66,54,90,94,5.3,24.8,68,189,Non-Anginal Pain,False,0.8,False,Former,10.4,122,6.4,26.8,True,5194,69.4,0 +983,50,Female,116,94,226,61,121,208,107,5.0,27.5,91,159,Non-Anginal Pain,False,0.6,False,Former,9.4,84,7.0,39.9,False,5846,75.2,0 +984,51,Female,128,84,213,40,121,177,136,6.6,34.1,95,160,Atypical Angina,False,0.1,False,Current,6.8,105,5.2,38.4,False,4668,74.7,1 +985,30,Male,105,71,206,47,128,173,60,4.0,20.5,66,196,Atypical Angina,False,0.9,False,Former,18.4,165,5.5,16.1,True,3613,53.2,0 +986,38,Male,123,66,153,55,84,121,91,5.0,26.2,83,180,Typical Angina,False,2.5,False,Never,10.0,139,8.6,55.0,False,8104,64.3,0 +987,49,Female,120,84,226,73,116,200,114,5.8,24.7,73,167,Non-Anginal Pain,False,0.3,False,Never,0.6,209,7.1,34.7,True,8177,57.3,0 +988,82,Male,140,91,145,45,72,118,122,5.8,18.9,86,117,Typical Angina,False,0.8,True,Former,4.4,157,7.0,60.8,False,5925,64.4,1 +989,36,Male,116,82,198,47,116,137,121,5.3,27.0,69,187,Asymptomatic,False,2.3,False,Never,4.2,217,8.6,62.4,True,10040,40.0,1 +990,56,Male,130,80,197,54,95,220,133,6.4,26.4,72,166,Asymptomatic,False,1.8,False,Former,3.3,111,7.5,32.7,False,7040,73.7,0 +991,42,Male,121,70,238,61,147,172,82,4.7,26.1,66,173,Atypical Angina,True,1.5,True,Never,3.5,140,6.2,45.1,True,8108,53.4,1 +992,49,Male,121,67,201,49,121,202,90,5.3,26.8,86,154,Asymptomatic,False,2.4,False,Never,10.3,159,7.3,70.0,True,10351,68.8,0 +993,67,Male,137,91,243,46,167,168,141,6.6,33.7,92,145,Non-Anginal Pain,False,0.5,False,Current,9.5,189,7.9,30.1,True,7710,12.0,1 +994,58,Female,164,107,201,46,116,180,97,5.2,30.8,85,156,Asymptomatic,False,0.7,False,Never,10.0,52,8.0,53.2,True,5876,60.1,0 +995,60,Male,134,88,134,40,67,133,183,7.2,28.7,94,172,Typical Angina,False,0.3,False,Never,1.9,10,8.7,23.3,False,4254,64.1,0 +996,60,Male,135,88,142,42,81,152,133,6.4,27.1,81,187,Non-Anginal Pain,True,0.4,False,Never,2.5,227,7.2,14.9,True,10265,52.9,0 +997,61,Male,136,90,181,62,76,170,142,6.0,26.9,81,158,Asymptomatic,False,2.8,True,Former,1.7,240,9.1,73.0,True,7005,52.3,0 +998,26,Female,106,77,150,46,75,146,122,5.4,26.1,95,210,Asymptomatic,False,0.7,False,Never,11.4,155,5.5,40.0,False,6085,59.9,0 +999,59,Male,156,100,294,36,207,194,140,6.2,31.8,92,142,Asymptomatic,True,0.6,True,Never,2.9,89,7.4,44.4,False,2812,46.6,1 +1000,53,Female,117,58,189,70,90,172,126,5.5,18.8,84,181,Typical Angina,False,0.5,False,Never,7.5,230,7.4,31.9,False,4468,65.6,0 +1001,59,Male,142,86,157,48,81,146,112,5.6,28.7,70,150,Asymptomatic,False,0.5,False,Never,1.8,75,7.5,45.1,True,4731,47.1,0 +1002,65,Male,134,99,225,79,112,104,144,6.6,22.7,79,164,Non-Anginal Pain,False,1.5,False,Former,4.2,135,7.9,24.4,False,4134,66.9,0 +1003,59,Female,120,85,215,58,142,109,83,5.5,26.5,80,179,Atypical Angina,False,0.9,False,Never,4.4,152,8.1,26.2,False,5631,72.3,0 +1004,63,Male,133,79,192,60,109,57,81,4.4,24.3,77,174,Non-Anginal Pain,False,0.2,False,Never,2.6,147,7.6,60.5,True,4806,78.5,0 +1005,39,Female,161,105,171,68,82,61,135,6.2,30.7,95,173,Non-Anginal Pain,False,1.4,False,Current,3.7,70,7.2,82.7,False,5421,55.6,0 +1006,60,Female,123,79,229,59,138,139,143,6.5,26.3,85,169,Asymptomatic,True,0.2,False,Never,7.4,9,7.6,38.8,False,6115,28.8,0 +1007,53,Female,122,70,189,69,76,156,126,6.1,23.9,76,184,Typical Angina,False,0.1,True,Never,3.7,213,7.6,44.3,True,7745,54.8,0 +1008,53,Male,157,98,175,61,97,97,74,4.7,31.6,76,173,Typical Angina,False,0.6,False,Never,3.1,236,7.3,66.5,True,5725,58.2,0 +1009,71,Male,129,81,210,34,135,123,150,6.9,25.9,89,125,Asymptomatic,True,3.1,False,Current,6.5,74,6.6,80.7,False,6087,49.2,1 +1010,48,Female,131,81,215,58,129,183,157,6.6,23.8,81,125,Typical Angina,True,1.0,True,Current,1.2,110,6.7,36.8,True,7173,72.6,1 +1011,45,Female,104,62,229,65,127,160,166,7.0,20.3,99,174,Asymptomatic,False,0.1,False,Former,5.0,96,6.3,59.6,False,7336,70.9,0 +1012,37,Female,135,90,189,68,84,119,129,6.0,34.1,76,202,Non-Anginal Pain,False,0.2,True,Never,1.7,153,5.4,41.4,False,7362,34.6,0 +1013,50,Male,130,89,151,43,67,144,132,5.6,15.0,67,151,Non-Anginal Pain,True,0.8,False,Former,10.9,164,6.8,44.0,True,6610,87.9,0 +1014,68,Female,154,96,176,44,91,185,102,5.9,24.7,94,149,Non-Anginal Pain,True,2.1,False,Never,6.9,119,7.8,45.2,False,5072,63.0,1 +1015,32,Male,124,72,241,44,151,210,128,6.0,33.5,91,202,Asymptomatic,False,0.4,False,Current,2.6,224,8.6,47.6,False,4447,31.0,0 +1016,57,Male,118,86,203,65,121,85,95,4.7,19.7,77,171,Asymptomatic,False,0.8,False,Never,7.2,106,6.1,57.3,True,5625,76.9,0 +1017,21,Male,101,72,155,40,76,191,113,5.3,25.4,79,198,Non-Anginal Pain,False,2.4,True,Never,1.9,75,3.6,43.4,False,3986,39.3,0 +1018,45,Female,116,65,197,62,98,181,88,4.7,22.9,72,194,Non-Anginal Pain,False,0.5,False,Current,4.6,243,6.5,43.4,True,7928,66.0,0 +1019,60,Male,126,74,245,46,162,209,129,6.1,25.3,83,161,Asymptomatic,False,0.2,False,Former,1.6,53,8.3,73.9,False,6152,62.8,0 +1020,47,Male,113,77,177,49,85,186,155,6.8,24.6,73,157,Asymptomatic,False,0.7,True,Never,3.6,156,6.5,41.2,False,8532,43.5,0 +1021,38,Male,102,68,215,70,99,236,139,5.9,16.2,86,199,Asymptomatic,False,0.5,True,Never,14.1,126,8.1,59.3,True,4756,66.7,0 +1022,49,Male,119,70,131,59,50,93,145,6.2,22.4,78,179,Typical Angina,False,0.5,False,Former,6.8,139,8.4,55.8,False,3632,97.4,0 +1023,67,Female,147,94,163,52,84,81,145,7.1,28.5,72,97,Typical Angina,False,1.0,False,Never,0.2,39,7.1,39.9,False,4034,70.3,1 +1024,73,Female,161,100,184,44,100,198,164,6.5,26.6,87,140,Atypical Angina,False,2.6,True,Never,21.5,93,4.2,57.4,False,3564,80.6,1 +1025,74,Male,127,81,212,67,104,182,112,5.7,26.5,82,153,Non-Anginal Pain,False,0.7,False,Never,1.6,191,6.9,39.5,False,5930,60.4,0 +1026,63,Male,135,82,156,40,67,215,111,5.6,28.3,84,159,Non-Anginal Pain,False,0.6,False,Never,5.4,159,8.1,66.9,False,5529,78.9,1 +1027,59,Female,132,91,189,51,114,144,124,6.4,26.4,90,150,Asymptomatic,False,1.0,False,Former,9.9,58,7.5,60.7,True,8235,59.9,0 +1028,67,Male,115,79,214,43,116,179,101,5.0,27.8,75,136,Atypical Angina,True,4.0,False,Former,4.7,108,8.6,26.6,True,4844,59.9,1 +1029,39,Female,127,79,180,45,100,174,79,5.2,26.1,70,185,Non-Anginal Pain,False,0.9,False,Never,10.4,166,5.2,52.2,True,9337,57.2,0 +1030,41,Female,124,76,216,51,119,202,143,6.6,30.3,96,163,Atypical Angina,False,0.4,False,Former,7.2,59,5.9,73.8,False,7874,50.0,0 +1031,71,Male,135,94,174,53,105,132,117,5.7,25.0,80,134,Asymptomatic,False,0.7,False,Former,3.6,124,6.7,48.8,True,8587,60.1,0 +1032,65,Male,125,76,175,39,111,157,98,5.7,28.4,87,117,Atypical Angina,False,4.7,True,Former,3.2,74,5.9,33.3,False,4736,43.0,1 +1033,65,Female,126,83,189,38,115,156,165,7.4,35.2,92,142,Typical Angina,True,0.0,True,Never,4.5,92,6.4,61.3,False,7549,41.8,1 +1034,57,Female,120,66,191,66,89,143,138,5.9,29.4,89,173,Non-Anginal Pain,False,0.6,False,Never,2.0,116,6.3,45.3,False,10006,46.5,0 +1035,43,Female,118,82,181,61,85,194,149,6.4,24.0,58,174,Typical Angina,False,0.5,False,Never,6.4,163,7.7,27.4,False,6465,64.1,0 +1036,40,Female,123,64,184,46,107,176,148,6.5,18.9,71,171,Typical Angina,False,1.4,False,Never,7.5,216,7.0,31.8,True,9360,61.6,0 +1037,66,Male,139,83,164,50,82,112,145,6.4,22.3,77,163,Asymptomatic,False,1.2,False,Former,4.3,97,7.4,43.0,False,4454,62.4,0 +1038,68,Male,102,60,115,39,44,209,120,5.6,23.8,79,155,Asymptomatic,False,0.3,True,Current,19.5,76,8.0,53.5,False,3352,39.9,0 +1039,39,Male,93,58,170,45,81,157,104,5.6,20.7,77,200,Asymptomatic,False,0.7,False,Never,2.3,207,6.3,54.4,True,8286,62.7,0 +1040,44,Male,123,78,173,58,97,114,107,5.7,30.9,85,161,Atypical Angina,False,1.0,True,Former,2.0,162,7.2,50.1,False,853,54.7,0 +1041,53,Male,132,79,237,55,166,75,144,6.8,28.5,78,190,Asymptomatic,False,0.4,False,Never,3.5,61,6.6,66.5,False,5832,80.3,0 +1042,65,Female,135,77,212,69,97,186,129,6.4,23.1,60,164,Non-Anginal Pain,False,0.8,False,Current,3.5,176,7.3,48.7,True,7392,34.4,0 +1043,50,Male,138,96,228,50,146,168,98,5.0,26.7,85,156,Non-Anginal Pain,False,0.1,False,Former,2.7,193,6.6,47.2,True,5354,51.2,1 +1044,43,Female,115,77,124,66,41,126,128,6.6,30.9,67,170,Atypical Angina,False,0.3,False,Never,4.0,117,8.9,52.9,False,6389,77.7,0 +1045,67,Male,170,107,173,51,100,77,138,6.2,23.0,80,139,Typical Angina,False,0.4,False,Never,9.1,120,6.3,43.3,False,7460,59.4,1 +1046,62,Male,140,90,164,47,74,175,93,5.2,19.9,64,163,Asymptomatic,False,1.7,False,Former,6.8,153,6.8,72.6,False,8567,84.2,1 +1047,45,Male,128,78,209,55,126,146,137,5.9,27.6,78,175,Asymptomatic,False,1.9,True,Former,2.7,226,5.9,49.1,True,7397,65.4,0 +1048,45,Female,111,56,189,44,114,161,115,5.6,19.6,89,190,Asymptomatic,False,0.2,True,Current,1.1,83,7.1,59.3,False,3905,38.2,0 +1049,68,Female,113,79,188,80,100,63,142,6.1,20.3,80,156,Asymptomatic,False,1.5,False,Never,5.7,131,6.9,34.5,False,852,68.6,0 +1050,37,Female,112,69,185,56,96,106,81,4.6,17.5,61,177,Asymptomatic,False,0.4,False,Never,6.4,132,6.3,37.4,True,7692,49.4,0 +1051,50,Female,127,76,184,61,77,168,131,5.6,21.7,83,190,Asymptomatic,False,0.6,False,Former,0.6,65,7.6,35.6,False,5729,38.3,0 +1052,60,Female,130,91,228,47,146,169,132,6.4,27.3,80,174,Asymptomatic,False,2.4,False,Former,9.9,99,6.6,58.2,False,5414,52.7,0 +1053,56,Female,109,59,172,80,73,136,126,5.9,26.9,64,179,Asymptomatic,False,1.0,False,Former,9.1,276,7.1,46.2,True,10352,56.4,0 +1054,66,Female,121,79,205,73,80,197,117,5.5,20.9,68,153,Atypical Angina,False,0.2,True,Former,14.9,82,6.8,43.2,False,3674,61.6,0 +1055,32,Female,118,80,204,72,105,140,84,4.6,25.6,88,196,Typical Angina,False,1.2,False,Never,11.5,145,4.9,48.3,True,7677,53.6,0 +1056,54,Female,118,74,188,64,104,130,132,6.2,29.3,68,193,Asymptomatic,False,0.3,False,Never,0.7,141,9.0,28.4,True,7706,59.8,0 +1057,58,Male,129,86,223,58,118,173,102,6.1,27.3,83,154,Non-Anginal Pain,False,0.1,False,Never,2.1,59,6.0,64.5,True,5374,54.2,0 +1058,58,Female,113,88,199,74,95,163,129,6.0,28.3,97,180,Asymptomatic,False,1.5,True,Never,5.0,129,6.6,67.3,False,8993,50.0,0 +1059,61,Female,143,103,155,43,104,91,136,6.2,26.7,84,150,Typical Angina,False,2.3,True,Former,0.8,126,6.6,30.3,False,6165,71.1,1 +1060,39,Male,111,68,146,56,39,199,99,5.0,27.1,67,181,Non-Anginal Pain,False,0.3,False,Never,2.7,163,6.4,65.3,False,9483,54.7,0 +1061,73,Female,135,81,139,51,83,149,115,5.3,24.2,94,133,Asymptomatic,False,0.4,True,Former,4.5,147,7.3,51.9,True,4354,79.6,0 +1062,60,Male,133,86,209,54,97,260,129,6.2,31.1,92,161,Atypical Angina,False,2.4,False,Never,17.2,63,5.8,62.0,False,6073,65.3,1 +1063,61,Male,108,76,161,22,116,151,110,5.7,28.6,70,173,Asymptomatic,False,0.3,False,Never,4.1,147,8.0,30.1,True,9078,52.8,0 +1064,47,Male,139,77,194,57,109,127,102,5.6,26.3,71,153,Asymptomatic,False,0.1,False,Former,6.2,75,6.5,57.4,True,3443,43.6,0 +1065,56,Female,132,90,215,82,124,153,126,5.8,23.3,80,161,Non-Anginal Pain,True,0.0,False,Current,2.4,106,6.6,57.1,False,7878,60.4,0 +1066,71,Female,133,90,245,62,150,153,85,5.1,27.4,93,140,Asymptomatic,True,1.5,False,Former,4.2,142,6.7,43.6,True,7276,59.6,1 +1067,54,Male,138,85,153,50,81,94,106,5.1,18.8,69,167,Atypical Angina,True,0.1,False,Never,2.1,198,7.3,51.8,True,8812,75.9,0 +1068,57,Female,127,65,155,22,90,162,148,6.7,25.7,81,198,Atypical Angina,False,0.4,True,Never,3.8,105,7.6,49.3,False,4883,58.1,0 +1069,58,Female,119,77,215,69,108,160,111,5.6,24.6,76,192,Non-Anginal Pain,False,0.1,False,Former,0.9,94,7.0,56.7,False,7420,58.6,0 +1070,33,Male,129,74,172,62,91,102,120,5.5,22.7,75,183,Asymptomatic,False,0.6,True,Former,5.0,143,5.7,46.0,False,5942,72.5,1 +1071,52,Female,114,73,198,92,80,134,105,6.2,25.6,77,169,Atypical Angina,True,2.1,False,Former,1.1,234,7.9,60.9,True,7319,52.5,0 +1072,63,Female,122,64,115,55,60,67,119,6.2,29.8,78,151,Typical Angina,False,2.5,False,Never,4.8,164,7.3,57.7,False,5161,63.6,0 +1073,48,Male,138,94,230,63,140,131,165,6.7,29.3,90,163,Asymptomatic,False,0.9,False,Never,4.9,76,6.0,38.4,False,7872,61.9,1 +1074,53,Male,143,90,177,55,93,158,118,5.5,26.4,78,144,Non-Anginal Pain,False,0.2,False,Never,18.3,178,6.9,64.2,True,7048,34.2,0 +1075,54,Female,121,69,218,79,125,105,92,5.1,18.4,77,169,Asymptomatic,False,0.9,False,Current,2.9,214,8.4,27.7,True,8225,76.3,0 +1076,33,Male,97,68,137,52,76,91,125,6.1,19.4,71,193,Asymptomatic,False,0.4,True,Current,3.4,169,6.4,42.5,True,8118,66.4,0 +1077,64,Female,134,86,172,48,93,136,133,6.0,26.0,78,137,Asymptomatic,False,3.8,True,Never,2.8,37,5.3,53.0,False,2328,42.7,1 +1078,36,Male,138,88,165,48,77,178,136,6.4,26.0,70,210,Asymptomatic,False,1.1,False,Former,8.4,97,8.5,71.9,True,4185,68.8,0 +1079,59,Male,126,73,204,38,129,182,149,6.1,28.2,74,150,Asymptomatic,False,1.4,True,Former,4.2,160,7.3,62.3,False,5034,54.2,1 +1080,52,Male,113,73,137,40,83,55,105,5.9,23.9,61,137,Asymptomatic,True,1.0,False,Former,5.7,199,5.5,53.0,True,7254,78.7,1 +1081,50,Male,124,85,210,72,100,234,116,5.3,23.7,83,189,Asymptomatic,False,1.5,True,Former,3.3,216,7.2,52.1,False,6031,56.8,0 +1082,55,Female,130,90,210,57,121,144,145,6.7,25.2,98,157,Asymptomatic,False,0.1,False,Former,3.8,68,6.4,67.2,False,5776,47.6,0 +1083,64,Female,128,73,194,46,128,124,115,5.0,25.6,89,156,Non-Anginal Pain,False,1.7,False,Former,5.9,125,6.3,14.4,False,3659,56.0,0 +1084,65,Female,126,80,199,69,128,73,106,6.1,24.5,76,157,Typical Angina,True,0.4,False,Never,2.1,100,8.3,59.9,False,5065,50.2,1 +1085,48,Male,109,78,247,66,146,117,129,6.5,25.7,87,154,Asymptomatic,False,0.7,False,Never,9.5,169,7.4,9.5,True,5670,37.0,1 +1086,52,Female,115,65,141,62,54,135,154,6.7,27.0,68,176,Non-Anginal Pain,True,0.5,False,Never,0.9,248,7.7,43.9,False,5304,68.5,0 +1087,43,Female,106,71,225,83,103,165,124,5.8,21.1,81,176,Asymptomatic,False,0.1,False,Former,1.7,241,6.5,79.4,True,4073,51.0,0 +1088,35,Male,122,71,204,43,126,160,152,7.3,25.8,74,179,Asymptomatic,False,0.6,True,Never,2.9,179,6.1,76.9,True,8707,32.1,1 +1089,66,Female,132,76,139,55,69,64,118,5.6,24.5,76,153,Non-Anginal Pain,True,1.6,True,Never,0.1,142,6.1,61.4,False,2365,55.2,0 +1090,40,Male,129,83,182,41,94,241,100,5.5,26.4,71,164,Asymptomatic,False,0.2,False,Never,24.3,215,6.1,47.3,False,4839,68.9,0 +1091,44,Female,112,74,172,68,85,123,133,6.0,21.9,71,206,Non-Anginal Pain,True,0.9,True,Never,2.0,244,7.9,47.5,True,7763,56.2,0 +1092,59,Male,143,85,156,60,81,68,143,6.2,20.9,63,153,Asymptomatic,False,1.6,False,Never,2.2,120,6.1,23.8,True,5028,59.8,0 +1093,36,Male,114,64,201,56,127,116,85,4.6,18.1,73,188,Asymptomatic,False,1.3,False,Former,18.3,119,7.1,44.7,False,8626,41.7,0 +1094,60,Male,151,91,167,54,88,114,100,5.7,31.0,80,166,Non-Anginal Pain,False,1.3,False,Former,2.8,144,8.4,50.5,True,7088,69.7,0 +1095,43,Male,85,51,217,62,127,84,102,5.5,20.0,73,184,Asymptomatic,False,1.6,False,Never,2.6,149,6.1,24.3,False,2428,65.0,0 +1096,39,Male,117,74,175,34,106,191,114,5.5,26.5,79,185,Asymptomatic,False,0.3,False,Never,4.0,163,9.6,53.3,True,9285,54.0,0 +1097,46,Female,132,91,235,85,129,85,87,5.4,21.5,78,190,Non-Anginal Pain,False,0.2,False,Former,5.2,201,3.6,25.6,True,13562,63.0,0 +1098,43,Male,141,90,179,50,111,125,138,6.0,29.0,92,139,Asymptomatic,True,0.3,False,Never,13.8,193,8.6,77.2,True,8266,69.2,1 +1099,57,Male,107,75,197,58,115,141,83,5.6,32.8,71,161,Atypical Angina,True,1.5,False,Never,1.8,130,6.5,60.4,False,4910,50.3,1 +1100,72,Male,119,90,163,63,73,159,129,6.3,25.7,86,141,Asymptomatic,False,0.7,False,Never,4.3,204,8.4,36.3,True,7156,73.3,0 +1101,63,Female,140,90,147,58,81,167,127,5.8,27.7,79,154,Non-Anginal Pain,False,1.3,False,Current,18.5,136,8.4,48.3,True,7346,60.2,0 +1102,60,Male,130,81,175,63,73,150,129,6.1,27.6,86,166,Atypical Angina,False,2.5,False,Never,2.1,101,8.0,54.5,False,6751,52.4,0 +1103,46,Male,118,76,166,63,110,49,84,4.4,15.0,76,197,Non-Anginal Pain,False,1.0,False,Never,2.8,161,6.2,39.9,False,2912,68.2,0 +1104,51,Female,117,78,190,50,121,137,113,5.4,24.6,77,167,Typical Angina,False,0.3,False,Former,2.6,171,8.7,43.7,True,7600,72.8,0 +1105,55,Male,122,73,225,66,117,197,119,5.2,27.0,62,184,Asymptomatic,False,0.9,False,Never,7.3,170,6.6,27.8,False,7420,50.6,0 +1106,53,Female,118,84,211,53,120,163,88,4.6,26.9,72,182,Asymptomatic,True,0.6,False,Current,5.5,310,6.4,39.8,False,6283,54.8,0 +1107,56,Female,123,78,170,59,86,134,117,5.1,25.8,69,170,Non-Anginal Pain,False,0.7,True,Never,7.4,48,7.6,27.8,False,4295,47.2,0 +1108,38,Female,105,70,218,75,92,210,114,5.8,23.5,65,186,Atypical Angina,False,1.7,False,Former,3.1,185,6.7,15.8,True,11235,87.6,0 +1109,77,Male,158,100,198,40,128,129,68,4.0,27.0,77,127,Non-Anginal Pain,False,0.2,False,Never,3.8,155,7.3,72.9,True,3114,52.4,1 +1110,36,Female,129,90,198,61,95,181,94,6.1,26.7,80,178,Asymptomatic,False,0.1,True,Former,8.5,134,6.0,71.4,False,7163,54.3,0 +1111,52,Male,128,70,199,31,139,102,73,4.0,29.6,71,170,Atypical Angina,False,0.3,False,Former,4.8,249,6.7,63.1,True,6367,40.4,0 +1112,64,Female,114,72,213,67,122,146,143,6.3,25.5,97,128,Asymptomatic,True,0.2,True,Former,5.8,141,9.0,40.8,False,3141,85.3,1 +1113,44,Female,143,86,190,57,116,145,116,5.0,31.5,85,192,Atypical Angina,True,2.4,False,Never,1.6,157,5.5,41.1,False,3830,32.0,0 +1114,67,Female,127,84,124,51,44,100,92,5.4,24.1,79,151,Non-Anginal Pain,False,0.3,True,Never,3.6,54,7.2,36.1,False,2830,70.7,0 +1115,35,Female,122,67,225,77,91,152,115,6.0,26.4,85,188,Asymptomatic,False,0.9,False,Former,2.0,143,8.1,38.4,True,5882,67.2,0 +1116,44,Male,137,88,216,38,136,195,146,7.0,43.3,89,187,Asymptomatic,False,2.0,False,Never,2.0,102,7.2,57.7,True,8745,34.9,0 +1117,23,Male,109,63,129,47,47,134,85,4.8,28.4,65,204,Non-Anginal Pain,False,1.2,False,Former,14.3,142,5.3,44.1,True,5497,75.0,0 +1118,67,Female,131,86,180,60,97,169,159,6.9,23.0,91,133,Asymptomatic,False,3.5,False,Current,6.7,123,5.7,63.2,True,8136,71.9,1 +1119,38,Female,142,89,178,58,68,226,125,5.8,30.8,68,191,Atypical Angina,False,0.2,True,Former,1.4,153,6.6,50.6,False,1789,73.6,0 +1120,44,Male,129,78,160,54,77,149,137,6.4,24.5,87,152,Atypical Angina,False,0.4,False,Never,1.6,92,3.9,25.5,False,3805,50.1,1 +1121,63,Female,132,93,195,57,123,71,112,5.0,21.9,79,154,Atypical Angina,False,0.2,True,Current,0.1,187,5.8,62.9,True,6336,77.5,0 +1122,58,Female,120,60,237,61,146,208,83,4.4,33.0,87,157,Asymptomatic,False,0.6,False,Never,1.6,86,7.1,72.7,False,4116,65.8,0 +1123,67,Male,117,70,220,54,138,162,144,6.6,28.6,83,148,Asymptomatic,False,1.3,False,Former,3.2,14,7.9,70.0,False,4507,69.6,0 +1124,62,Male,128,92,169,37,109,88,117,5.8,25.7,67,147,Asymptomatic,False,0.6,False,Never,6.8,133,8.5,58.2,True,6612,80.4,0 +1125,65,Male,136,96,141,45,73,93,118,5.4,30.1,90,171,Non-Anginal Pain,False,1.1,True,Former,9.8,227,8.2,45.4,False,7856,59.4,0 +1126,47,Female,111,73,182,44,103,141,87,4.5,20.4,78,168,Atypical Angina,False,0.3,False,Current,2.2,139,8.7,28.9,True,6885,49.1,0 +1127,52,Female,124,79,192,53,97,183,97,5.4,23.0,77,164,Typical Angina,True,0.5,True,Former,13.3,115,6.6,29.5,True,5267,54.6,0 +1128,63,Male,131,89,181,45,105,153,127,5.9,27.1,73,131,Non-Anginal Pain,False,2.7,False,Former,3.5,122,7.0,22.7,False,3415,40.0,1 +1129,63,Male,135,86,184,63,88,140,180,7.6,27.2,82,139,Atypical Angina,False,1.2,True,Never,2.6,113,7.6,26.2,False,5751,63.8,1 +1130,65,Male,113,74,245,79,134,144,104,5.3,23.8,67,168,Non-Anginal Pain,False,1.0,True,Never,2.5,67,8.6,40.0,True,6205,71.1,0 +1131,43,Female,135,78,218,66,109,121,121,6.1,21.1,79,179,Asymptomatic,False,0.7,True,Current,1.2,117,7.5,51.4,False,8545,58.7,0 +1132,39,Female,126,81,223,58,132,121,121,5.8,23.8,88,161,Asymptomatic,False,0.2,False,Never,2.4,172,6.6,63.3,False,4576,65.1,0 +1133,37,Female,112,83,193,69,92,196,135,5.9,25.5,88,192,Atypical Angina,False,0.6,False,Never,4.2,101,4.7,68.2,False,4636,93.2,0 +1134,47,Female,109,68,152,31,94,85,134,6.1,18.1,87,182,Atypical Angina,False,2.3,False,Never,5.5,134,6.9,55.3,True,6936,58.6,0 +1135,52,Female,126,85,202,71,106,115,136,6.0,26.3,83,147,Non-Anginal Pain,True,2.0,True,Never,0.1,130,7.3,52.3,False,2598,41.4,1 +1136,38,Male,124,82,134,25,68,206,127,5.9,30.5,89,196,Non-Anginal Pain,False,3.8,False,Never,6.2,73,8.3,57.5,False,500,57.8,1 +1137,51,Female,151,92,213,48,133,165,155,6.7,31.3,81,146,Asymptomatic,False,0.6,False,Former,7.4,86,5.9,64.1,False,6252,47.1,1 +1138,61,Female,141,99,214,38,132,188,120,5.6,27.9,78,147,Asymptomatic,False,0.7,False,Never,9.3,126,7.6,24.3,True,3475,54.0,0 +1139,66,Male,140,84,186,42,101,200,102,5.8,24.3,87,126,Asymptomatic,False,0.9,False,Former,2.3,180,6.0,27.7,True,7602,63.4,1 +1140,46,Male,130,88,164,63,70,165,132,6.1,27.3,76,187,Non-Anginal Pain,False,1.3,False,Never,10.3,145,5.7,60.7,False,6006,53.4,0 +1141,61,Male,118,79,183,24,128,174,132,6.0,25.5,78,142,Non-Anginal Pain,True,3.7,False,Current,5.4,183,3.1,50.3,True,7788,43.2,1 +1142,37,Male,147,102,222,57,137,158,80,5.0,26.0,99,174,Asymptomatic,False,0.3,False,Former,3.1,133,6.7,77.8,False,3762,60.9,0 +1143,45,Male,130,86,190,60,108,174,144,6.4,21.4,76,154,Non-Anginal Pain,True,5.3,False,Never,3.1,123,8.2,35.9,False,8914,59.8,1 +1144,55,Female,116,76,166,50,99,79,143,6.4,20.6,80,146,Non-Anginal Pain,True,0.5,True,Never,0.6,146,6.0,58.8,True,4588,69.5,1 +1145,45,Male,111,69,146,61,81,76,110,5.5,15.8,84,182,Asymptomatic,False,1.2,True,Never,3.1,199,7.0,39.1,False,2456,59.1,0 +1146,43,Male,130,85,174,66,87,91,131,5.7,26.5,68,162,Non-Anginal Pain,False,0.7,False,Former,4.5,144,7.6,57.9,True,5677,65.2,0 +1147,57,Female,130,89,160,76,65,158,111,5.6,22.7,61,173,Asymptomatic,False,0.3,False,Former,1.4,254,6.7,56.4,True,7333,89.1,0 +1148,40,Female,95,64,166,73,83,67,94,4.4,21.1,81,172,Atypical Angina,True,2.1,False,Current,1.3,176,6.1,39.8,True,8105,63.4,1 +1149,55,Male,115,77,154,60,86,85,138,6.1,21.6,60,164,Non-Anginal Pain,False,0.9,False,Never,8.1,227,7.7,59.5,False,4689,59.3,0 +1150,52,Female,120,74,208,64,112,180,113,6.0,33.4,94,192,Typical Angina,False,0.8,True,Never,8.5,261,7.7,55.2,True,8021,55.7,0 +1151,60,Male,127,84,191,56,120,100,159,6.2,18.3,69,154,Non-Anginal Pain,False,0.7,False,Never,14.2,139,6.0,17.5,False,5936,33.5,1 +1152,63,Female,151,91,187,67,92,184,145,6.3,29.4,80,152,Non-Anginal Pain,False,0.8,False,Never,4.3,68,6.3,64.5,False,3014,85.2,1 +1153,55,Male,129,80,221,58,123,185,121,5.8,24.8,73,151,Non-Anginal Pain,False,3.2,False,Never,7.4,200,7.2,41.6,True,10172,41.3,0 +1154,47,Female,118,81,159,54,97,35,156,7.2,22.8,83,186,Non-Anginal Pain,False,0.1,True,Former,0.9,177,7.1,54.0,False,8206,71.6,0 +1155,66,Female,134,81,261,62,165,161,124,6.1,28.8,89,150,Asymptomatic,False,0.9,False,Never,16.9,121,7.5,83.5,False,5110,37.9,0 +1156,56,Female,135,84,207,70,95,155,119,5.8,22.8,82,180,Asymptomatic,False,0.1,False,Current,1.9,82,6.2,64.0,False,5178,66.7,0 +1157,42,Female,125,81,179,47,99,198,134,6.0,24.7,83,149,Asymptomatic,False,0.1,False,Current,3.4,176,7.5,20.2,False,6493,37.9,0 +1158,55,Male,131,82,209,58,118,190,117,6.1,27.7,88,169,Asymptomatic,True,0.4,False,Former,9.5,80,8.6,61.6,True,8495,51.3,1 +1159,45,Female,100,60,126,69,43,110,153,6.0,22.4,70,198,Atypical Angina,False,0.5,True,Never,9.2,223,6.5,33.0,False,8659,79.7,0 +1160,20,Male,122,80,219,51,132,171,138,6.1,22.7,89,196,Asymptomatic,False,0.2,False,Former,2.8,170,7.4,30.0,False,5795,58.3,0 +1161,41,Male,123,72,138,37,72,83,101,5.7,29.1,79,191,Atypical Angina,False,0.6,True,Former,2.0,219,5.5,65.5,False,6292,67.9,0 +1162,48,Male,136,85,202,62,130,71,102,5.9,19.1,76,182,Asymptomatic,False,0.2,False,Never,2.8,227,8.6,49.7,True,6131,69.7,0 +1163,47,Male,106,65,150,40,95,99,79,4.8,26.0,89,157,Typical Angina,False,0.9,False,Never,1.9,147,6.8,30.4,False,3214,49.1,1 +1164,33,Female,96,56,148,62,64,199,120,5.7,18.0,88,162,Asymptomatic,False,0.9,False,Former,0.7,80,7.1,42.1,True,9740,63.1,0 +1165,49,Female,123,66,179,65,91,184,108,5.6,29.0,86,160,Asymptomatic,False,3.1,True,Former,0.9,176,7.8,62.6,True,5536,69.6,0 +1166,59,Male,125,82,202,56,108,194,135,5.4,22.7,88,172,Atypical Angina,False,0.6,False,Never,2.1,71,7.3,48.4,False,3907,72.9,0 +1167,38,Female,120,65,204,71,106,162,78,4.0,29.3,89,188,Asymptomatic,False,1.0,True,Never,4.0,139,9.4,46.1,True,5398,92.1,0 +1168,56,Female,127,71,174,73,66,168,87,5.1,19.0,78,166,Asymptomatic,False,1.0,True,Never,11.0,171,8.9,29.3,False,3947,55.1,0 +1169,27,Female,104,64,167,38,121,35,125,5.8,32.8,78,204,Asymptomatic,False,0.7,False,Never,2.9,124,8.7,47.3,False,6967,81.5,0 +1170,60,Male,128,80,197,50,124,116,100,5.5,25.1,88,146,Asymptomatic,True,5.0,True,Current,4.5,203,7.9,32.7,True,8281,77.0,1 +1171,46,Male,125,85,183,58,95,210,83,4.4,25.8,86,163,Non-Anginal Pain,False,0.7,True,Never,4.6,122,7.4,30.6,False,5770,69.5,0 +1172,36,Female,113,59,146,35,71,155,113,5.5,24.7,71,197,Non-Anginal Pain,False,1.5,False,Never,8.5,157,9.6,50.9,True,8066,61.5,0 +1173,68,Male,141,83,194,53,106,140,169,7.1,34.1,84,137,Asymptomatic,True,0.2,False,Never,2.0,53,6.9,54.8,True,5528,78.9,1 +1174,59,Male,142,85,209,56,104,246,147,6.8,30.2,94,163,Non-Anginal Pain,False,1.1,False,Current,3.6,125,7.2,64.3,True,4991,50.6,0 +1175,65,Female,121,84,250,60,158,164,117,5.9,28.4,78,156,Asymptomatic,False,1.5,False,Never,1.0,102,7.1,66.1,False,5730,45.2,0 +1176,57,Male,113,70,104,42,50,73,91,5.3,24.0,70,170,Asymptomatic,False,0.2,True,Never,8.8,166,6.5,78.4,False,9084,49.4,0 +1177,58,Female,127,73,207,76,61,300,122,6.0,32.7,74,170,Asymptomatic,True,2.0,False,Never,4.0,167,7.7,28.9,True,5865,47.1,0 +1178,48,Female,119,76,143,46,91,37,144,6.2,28.0,71,162,Asymptomatic,False,1.0,False,Never,0.2,219,6.2,50.8,True,10523,85.7,0 +1179,59,Male,122,67,210,64,99,171,96,5.5,26.2,72,171,Asymptomatic,False,0.6,False,Never,1.8,240,7.9,37.7,True,8783,93.2,0 +1180,52,Female,125,92,157,65,74,115,148,6.7,26.6,75,185,Typical Angina,False,0.2,False,Never,5.2,136,7.6,61.7,False,3536,60.1,0 +1181,45,Male,135,96,154,52,73,169,107,5.3,28.2,87,181,Asymptomatic,False,0.9,False,Never,1.9,193,7.6,44.1,True,8932,77.7,0 +1182,51,Male,109,72,193,34,126,110,121,5.5,26.3,80,150,Asymptomatic,True,0.5,True,Never,3.1,87,6.8,18.0,True,3823,53.0,1 +1183,37,Female,111,81,221,83,101,104,154,6.7,22.4,73,203,Non-Anginal Pain,False,0.6,True,Former,4.0,187,6.7,49.7,True,8958,76.3,0 +1184,53,Male,95,57,160,38,84,161,94,4.8,22.7,88,176,Asymptomatic,False,1.9,False,Never,7.4,142,8.4,51.2,False,5258,55.9,0 +1185,59,Female,134,84,188,54,113,129,112,5.8,18.3,73,143,Asymptomatic,True,1.0,False,Current,2.8,118,6.3,72.9,True,6610,85.6,1 +1186,55,Female,138,79,218,57,135,118,140,6.3,31.5,91,164,Non-Anginal Pain,False,1.0,False,Never,1.5,155,8.6,49.5,True,9310,25.3,0 +1187,60,Male,125,79,165,65,62,180,149,6.7,25.5,89,163,Typical Angina,False,1.3,False,Never,7.9,243,7.4,45.5,True,10712,65.7,0 +1188,49,Female,129,66,111,53,35,103,98,5.1,16.6,99,169,Atypical Angina,False,1.0,False,Former,1.1,118,7.4,65.5,True,5593,69.7,0 +1189,53,Female,128,75,187,64,81,238,95,4.7,21.3,85,150,Atypical Angina,False,0.6,False,Never,14.4,180,6.2,18.1,True,8983,45.5,0 +1190,53,Female,116,73,183,70,69,163,123,5.4,27.0,81,168,Non-Anginal Pain,False,0.1,True,Never,7.7,122,6.3,43.0,False,5032,63.3,0 +1191,78,Male,143,95,184,70,84,155,124,6.4,24.8,93,134,Asymptomatic,True,2.1,False,Never,12.4,110,6.4,51.7,False,8341,52.5,1 +1192,36,Female,116,66,203,93,81,141,71,4.4,17.7,64,210,Asymptomatic,False,0.5,False,Never,2.6,230,6.2,29.6,True,9960,64.3,0 +1193,79,Male,127,85,212,64,101,156,112,5.5,19.7,81,128,Atypical Angina,False,2.5,False,Current,2.9,260,11.0,59.0,True,7595,60.9,1 +1194,44,Female,118,81,146,62,47,130,85,4.5,15.0,69,176,Asymptomatic,False,0.8,False,Never,1.0,159,8.2,46.9,True,6736,47.4,0 +1195,49,Male,147,93,128,55,44,139,112,5.9,21.5,86,182,Asymptomatic,False,0.6,False,Never,10.5,153,6.1,72.6,False,8180,67.5,0 +1196,57,Female,134,85,223,75,109,215,107,5.9,21.5,77,175,Non-Anginal Pain,True,0.9,False,Never,6.7,167,6.9,47.3,False,3330,62.8,0 +1197,61,Male,137,89,221,50,146,101,107,5.2,17.6,81,149,Non-Anginal Pain,False,0.6,False,Never,8.5,41,7.3,46.5,False,4069,34.3,0 +1198,53,Male,128,82,170,40,96,124,104,5.1,31.8,79,160,Asymptomatic,False,1.4,False,Never,4.1,54,6.3,29.8,False,8792,53.1,0 +1199,56,Male,149,104,176,40,94,121,99,4.9,27.2,86,170,Asymptomatic,True,0.8,False,Never,6.1,93,8.5,32.5,False,2887,34.8,0 +1200,71,Female,148,93,170,58,98,86,74,4.5,24.3,96,155,Asymptomatic,False,0.1,False,Never,1.0,127,7.3,72.4,False,7498,67.8,0 +1201,87,Male,159,96,282,76,159,271,123,6.1,29.0,84,154,Typical Angina,False,1.4,False,Former,12.3,232,7.5,50.0,True,8012,49.2,0 +1202,58,Female,112,78,189,73,111,35,138,5.9,24.6,86,172,Asymptomatic,False,0.8,True,Former,4.8,170,7.2,42.4,True,8614,66.3,0 +1203,62,Female,103,64,231,55,135,140,105,5.1,19.0,79,175,Asymptomatic,False,0.6,False,Never,1.8,189,5.8,33.2,True,8028,37.4,0 +1204,52,Female,105,77,150,68,76,46,119,5.7,20.2,79,177,Asymptomatic,False,0.5,False,Never,4.2,215,7.4,67.4,True,13950,57.4,0 +1205,75,Male,136,85,177,35,114,132,128,6.0,22.8,78,128,Asymptomatic,True,0.5,True,Never,1.7,55,6.0,57.5,False,2383,57.5,1 +1206,52,Female,113,88,249,77,131,264,138,6.0,22.5,87,156,Asymptomatic,True,1.7,True,Never,1.3,209,6.8,66.1,True,6367,69.3,1 +1207,60,Male,135,80,184,53,108,99,117,6.0,22.5,73,154,Non-Anginal Pain,False,0.1,False,Current,3.6,149,6.1,45.6,True,8858,57.4,0 +1208,40,Male,141,80,184,61,89,153,143,6.2,27.6,86,158,Asymptomatic,False,0.3,False,Never,13.4,106,8.3,58.3,False,2319,50.5,0 +1209,19,Male,113,64,173,59,80,149,115,5.3,25.7,72,210,Asymptomatic,False,1.0,False,Never,7.6,265,7.2,30.2,True,10199,55.1,0 +1210,82,Male,142,85,157,65,71,142,104,5.4,18.5,85,150,Atypical Angina,False,0.4,False,Never,16.0,217,9.1,62.0,True,9669,71.2,0 +1211,67,Male,114,84,231,79,124,135,106,5.3,15.0,72,161,Asymptomatic,False,0.8,False,Never,7.0,140,6.1,51.0,False,5199,50.7,0 +1212,65,Male,128,92,236,64,138,139,127,5.8,22.7,71,121,Asymptomatic,True,2.4,False,Never,5.5,106,7.2,61.3,False,5160,48.9,1 +1213,41,Female,133,86,228,65,103,189,98,4.9,18.8,65,184,Asymptomatic,False,0.8,False,Never,0.1,226,5.1,59.3,True,8920,50.0,0 +1214,32,Male,102,60,156,31,81,165,119,6.5,21.4,90,166,Atypical Angina,False,0.1,False,Current,9.8,127,7.0,64.5,False,3571,26.1,1 +1215,50,Female,117,77,208,62,116,202,117,5.8,26.1,82,179,Atypical Angina,False,0.6,True,Former,2.6,210,9.0,62.9,True,6125,59.8,0 +1216,55,Female,124,72,149,58,83,114,133,6.0,21.0,84,171,Non-Anginal Pain,False,1.3,True,Former,2.9,92,5.0,45.4,False,5651,100.0,0 +1217,62,Female,117,84,178,52,104,101,115,5.5,22.9,71,157,Asymptomatic,False,0.3,False,Never,0.4,140,5.9,37.6,False,5568,82.8,0 +1218,53,Male,112,77,217,67,115,120,133,5.9,21.5,76,189,Non-Anginal Pain,False,0.3,False,Current,1.7,150,6.5,61.2,True,5666,62.2,0 +1219,70,Female,146,93,268,71,179,79,131,6.3,28.0,88,115,Asymptomatic,True,0.1,False,Current,9.6,155,7.3,65.5,True,6411,55.4,1 +1220,58,Male,125,68,173,41,103,155,116,5.5,26.6,87,136,Asymptomatic,False,0.9,True,Current,7.7,44,7.8,45.0,False,4768,40.0,1 +1221,57,Female,118,75,179,56,87,138,122,6.1,28.0,73,165,Atypical Angina,False,1.4,True,Never,4.7,152,6.2,49.3,False,3815,51.9,0 +1222,68,Female,120,80,215,46,148,139,65,4.6,27.0,92,128,Non-Anginal Pain,False,0.4,False,Current,4.9,128,7.5,50.5,False,3558,79.4,1 +1223,45,Male,133,80,152,51,70,142,115,5.9,25.4,66,184,Asymptomatic,False,0.3,False,Never,6.8,160,7.6,46.7,False,5511,76.5,0 +1224,58,Male,129,78,141,68,52,68,116,5.6,19.3,89,145,Asymptomatic,False,1.1,True,Former,3.3,217,8.6,64.2,True,10138,98.4,0 +1225,46,Female,117,73,193,45,112,138,114,5.1,28.7,88,179,Atypical Angina,False,2.9,True,Current,7.0,107,6.5,65.5,False,4939,47.5,1 +1226,45,Male,99,58,123,27,49,248,123,5.7,20.4,88,190,Asymptomatic,True,0.0,False,Never,5.7,132,7.5,39.1,False,2934,62.2,0 +1227,73,Female,104,67,154,53,72,154,119,5.8,20.0,60,132,Asymptomatic,False,2.4,False,Never,0.1,222,6.9,66.7,True,6428,74.8,0 +1228,67,Female,145,88,276,83,154,266,182,7.7,35.1,83,130,Asymptomatic,True,0.4,False,Never,4.7,119,8.2,64.2,True,7538,45.2,0 +1229,60,Female,139,78,175,60,96,46,113,5.7,24.0,74,168,Atypical Angina,False,0.5,True,Former,3.3,143,7.7,48.7,True,9888,62.3,1 +1230,70,Female,127,84,204,52,74,310,133,6.3,23.7,78,143,Typical Angina,True,0.9,False,Current,6.8,119,8.8,75.2,True,10045,55.1,1 +1231,58,Female,128,87,186,60,118,45,147,6.5,23.0,95,151,Asymptomatic,False,0.8,True,Current,1.9,127,7.4,77.9,False,5789,67.0,1 +1232,71,Female,137,92,235,88,94,228,131,6.3,26.4,77,157,Typical Angina,True,0.5,False,Never,0.2,273,8.8,37.6,True,10775,57.3,1 +1233,42,Female,130,85,241,69,130,204,123,5.8,23.9,82,177,Asymptomatic,False,0.7,False,Former,2.4,151,8.4,52.7,True,7119,65.5,0 +1234,51,Male,108,83,170,36,80,222,151,6.4,33.7,104,175,Asymptomatic,True,2.2,True,Current,1.7,80,5.4,83.5,False,4353,41.5,1 +1235,58,Female,140,85,214,65,133,141,160,6.3,21.3,85,129,Atypical Angina,True,1.5,True,Never,0.1,97,6.0,42.5,False,3439,41.7,1 +1236,40,Male,134,80,184,43,123,113,140,6.4,30.0,69,161,Asymptomatic,True,0.3,False,Never,8.6,142,7.7,19.4,False,8217,32.6,1 +1237,45,Male,110,73,222,46,130,172,107,5.4,21.9,82,192,Asymptomatic,False,1.5,True,Never,19.5,214,6.3,20.9,True,7256,56.2,0 +1238,37,Male,103,63,163,72,74,113,108,5.6,23.1,80,183,Asymptomatic,False,0.3,False,Never,4.9,189,6.9,43.6,True,5439,78.6,0 +1239,62,Male,124,63,170,45,110,90,124,5.7,19.5,95,160,Asymptomatic,False,1.4,False,Never,1.6,93,7.3,55.5,False,4149,53.0,0 +1240,47,Female,124,86,239,63,140,197,96,5.6,30.4,96,169,Asymptomatic,False,0.8,False,Never,13.3,114,4.3,40.4,False,5024,63.7,0 +1241,57,Male,125,69,198,45,123,217,134,5.6,27.7,72,150,Asymptomatic,False,0.2,True,Current,2.2,189,6.8,46.0,True,7290,57.1,0 +1242,60,Male,138,104,228,39,142,188,95,5.5,19.8,77,151,Atypical Angina,False,0.6,False,Never,15.4,38,6.8,48.2,False,4254,52.5,0 +1243,51,Female,138,88,161,75,62,142,110,5.8,22.7,77,181,Asymptomatic,False,0.6,True,Never,14.0,190,6.4,42.5,True,6488,57.8,0 +1244,54,Female,105,52,142,59,80,65,112,5.3,27.8,94,155,Non-Anginal Pain,False,1.6,True,Former,0.2,83,6.7,51.7,True,7089,87.9,0 +1245,55,Male,121,79,172,68,81,191,106,5.5,23.5,77,151,Non-Anginal Pain,True,1.7,True,Never,15.8,175,7.9,75.6,True,7740,61.8,1 +1246,59,Male,151,92,167,71,76,146,109,6.3,26.8,86,165,Typical Angina,False,0.3,False,Former,7.2,88,7.7,40.5,False,4479,79.4,0 +1247,71,Female,155,94,227,77,107,154,112,5.5,27.7,86,159,Typical Angina,False,0.4,False,Never,1.8,33,7.8,57.1,False,4578,68.0,0 +1248,39,Female,126,78,200,59,107,127,100,5.2,26.1,76,193,Atypical Angina,False,0.1,True,Former,1.5,187,7.8,56.5,True,9580,75.6,0 +1249,54,Male,120,75,202,69,110,121,143,6.3,22.7,61,169,Asymptomatic,False,0.6,False,Never,5.4,245,8.8,62.0,False,5932,59.8,0 +1250,38,Female,105,59,253,43,195,81,81,4.2,23.4,78,190,Asymptomatic,False,0.2,False,Former,1.7,59,5.0,41.5,False,5175,39.4,0 +1251,72,Female,131,87,209,84,105,127,141,6.3,20.1,74,153,Asymptomatic,True,0.6,False,Never,7.7,215,7.7,31.6,True,9670,65.2,0 +1252,30,Female,106,71,213,64,104,233,139,5.9,21.4,73,207,Non-Anginal Pain,False,0.8,False,Current,2.0,234,8.4,31.8,True,12115,76.3,0 +1253,55,Male,133,75,189,47,104,147,129,6.3,29.5,82,145,Typical Angina,False,1.7,True,Former,3.0,138,6.8,73.2,True,7503,77.2,1 +1254,48,Male,135,83,212,50,123,210,107,5.8,27.9,72,191,Typical Angina,False,1.4,False,Former,33.7,199,6.3,67.9,False,5447,47.5,0 +1255,46,Male,130,85,225,55,122,184,121,5.8,30.2,70,181,Asymptomatic,False,0.6,False,Never,4.5,179,7.5,56.1,True,9666,74.1,0 +1256,62,Female,136,83,136,55,67,107,128,6.1,31.0,95,158,Asymptomatic,False,0.3,False,Current,1.0,120,4.6,53.7,True,4432,64.3,0 +1257,60,Male,117,70,186,47,127,144,78,5.4,28.3,84,148,Atypical Angina,False,1.0,True,Never,11.2,79,8.4,12.2,False,5396,54.4,0 +1258,41,Female,114,65,172,55,96,53,116,4.7,26.3,87,191,Atypical Angina,False,0.2,False,Never,0.9,106,6.3,22.5,False,5813,34.0,0 +1259,59,Female,123,76,179,67,107,95,96,5.1,21.8,92,141,Non-Anginal Pain,True,0.6,False,Never,5.3,138,8.5,74.6,False,6684,67.9,0 +1260,57,Male,123,75,148,65,52,168,103,5.3,22.6,77,183,Asymptomatic,False,0.9,False,Never,7.8,231,8.2,39.6,False,7643,92.9,0 +1261,44,Female,135,89,122,65,46,96,107,5.6,20.9,81,170,Asymptomatic,False,0.5,False,Never,4.1,87,6.1,53.0,False,3709,63.0,0 +1262,35,Female,131,87,156,47,69,140,102,5.3,23.3,77,187,Non-Anginal Pain,False,0.7,False,Never,0.9,131,7.0,41.4,False,2535,59.0,0 +1263,63,Female,125,81,192,64,108,136,125,5.5,19.4,64,179,Non-Anginal Pain,False,0.6,False,Never,1.8,163,7.3,35.0,False,7284,61.3,0 +1264,62,Male,147,92,168,56,86,123,157,6.7,24.8,67,151,Atypical Angina,False,0.4,False,Never,2.9,144,6.1,60.7,False,1959,48.6,0 +1265,60,Female,125,69,182,62,95,118,124,6.1,23.1,77,178,Non-Anginal Pain,False,0.3,False,Former,13.5,147,5.5,21.5,False,7446,47.9,0 +1266,47,Male,125,76,195,40,136,117,101,5.5,21.8,75,172,Asymptomatic,True,1.9,False,Former,11.9,197,7.4,52.2,True,8872,53.2,0 +1267,69,Female,141,99,206,63,124,150,172,7.1,34.0,95,161,Non-Anginal Pain,False,0.5,False,Former,20.8,24,7.0,68.9,False,4530,71.9,0 +1268,90,Female,145,88,175,52,95,154,145,6.3,29.6,87,120,Non-Anginal Pain,False,0.9,True,Never,0.6,116,8.7,42.8,True,6154,63.0,1 +1269,55,Male,147,90,209,62,99,193,129,5.5,25.6,77,166,Asymptomatic,False,0.6,False,Former,2.5,195,7.8,33.1,True,6218,90.0,0 +1270,60,Female,138,77,230,64,141,109,123,5.9,27.1,77,163,Asymptomatic,False,1.7,True,Current,3.0,156,6.8,49.6,False,5470,56.1,1 +1271,43,Female,110,70,172,44,89,174,136,6.6,20.8,72,172,Non-Anginal Pain,True,0.1,False,Never,0.5,99,6.2,27.2,False,5731,48.1,0 +1272,43,Female,143,98,104,55,37,74,123,5.8,31.1,81,146,Typical Angina,True,1.2,True,Never,1.6,26,7.2,71.9,False,4045,70.4,1 +1273,76,Male,132,74,252,33,200,142,120,6.2,29.6,83,126,Typical Angina,True,0.2,False,Current,2.4,123,7.0,16.0,False,4830,38.2,1 +1274,82,Male,149,95,120,36,68,67,145,5.8,25.6,85,115,Atypical Angina,True,0.5,True,Never,2.5,10,8.5,62.3,False,500,52.1,1 +1275,50,Female,123,81,165,39,63,252,129,5.8,29.4,84,185,Non-Anginal Pain,False,0.1,False,Never,7.5,136,7.4,56.1,True,2055,55.5,0 +1276,45,Female,139,85,219,75,102,179,75,4.7,22.8,77,185,Asymptomatic,False,0.7,False,Never,0.6,198,6.6,12.5,True,11243,55.4,0 +1277,41,Female,132,76,180,39,105,142,127,5.9,30.6,98,172,Atypical Angina,False,3.9,False,Current,0.1,16,7.3,59.3,False,5600,52.8,1 +1278,45,Male,137,83,196,53,97,209,119,5.6,23.7,81,173,Asymptomatic,False,0.9,False,Former,9.8,151,5.9,53.3,False,7488,45.7,1 +1279,54,Male,148,99,191,41,105,199,137,6.4,24.5,84,155,Asymptomatic,False,0.5,False,Current,2.5,165,4.3,71.0,False,4095,69.5,1 +1280,37,Male,122,82,191,61,94,103,126,5.9,20.9,75,175,Atypical Angina,False,2.0,False,Former,13.5,20,9.4,31.0,False,2959,71.4,1 +1281,44,Female,135,91,206,62,123,104,99,5.4,18.4,96,189,Atypical Angina,False,0.1,False,Never,2.6,141,6.8,54.5,True,8950,61.7,0 +1282,65,Male,111,63,196,39,130,171,124,5.8,24.0,79,162,Typical Angina,False,1.4,False,Never,4.3,91,7.1,62.1,False,6429,56.6,0 +1283,51,Female,140,89,174,41,92,207,204,8.1,27.1,72,144,Atypical Angina,True,1.4,False,Former,2.0,168,8.7,25.7,False,5644,43.7,1 +1284,43,Male,126,70,180,22,134,145,145,6.9,28.4,100,163,Asymptomatic,False,0.8,False,Current,14.8,107,6.2,64.4,False,8998,33.1,1 +1285,38,Male,118,58,182,44,119,157,115,6.3,22.5,67,168,Asymptomatic,False,0.5,False,Never,3.8,78,6.7,5.6,False,3465,55.9,0 +1286,67,Female,134,87,209,65,97,241,99,5.3,22.3,68,154,Asymptomatic,False,0.5,False,Never,6.2,175,7.8,18.8,True,6676,53.2,0 +1287,39,Male,115,64,251,68,157,185,119,5.6,27.9,81,197,Non-Anginal Pain,False,0.5,True,Former,5.8,142,6.3,69.0,False,5832,72.6,0 +1288,51,Male,120,77,171,41,89,122,127,6.1,20.8,92,145,Atypical Angina,False,2.3,True,Current,2.4,12,8.1,48.0,False,4701,38.1,1 +1289,66,Male,126,86,198,54,102,199,98,5.4,30.3,72,157,Non-Anginal Pain,False,0.4,False,Current,1.7,185,7.6,24.7,True,8712,33.2,0 +1290,60,Male,134,81,138,52,78,50,127,5.7,27.2,86,142,Asymptomatic,True,1.6,False,Current,3.8,130,7.6,17.5,True,8962,64.1,1 +1291,57,Female,115,78,240,68,136,121,82,4.5,25.1,73,147,Asymptomatic,True,1.2,True,Never,4.5,155,7.2,52.5,False,5054,42.1,1 +1292,57,Female,118,78,192,58,84,218,153,7.1,24.7,84,166,Asymptomatic,False,0.3,False,Never,11.7,111,7.1,48.0,False,4434,77.8,0 +1293,41,Female,134,89,192,53,97,259,139,6.0,27.9,74,191,Atypical Angina,False,0.7,False,Never,3.0,50,7.1,29.7,True,6929,39.9,0 +1294,44,Male,117,75,247,91,121,208,95,5.6,23.8,81,191,Non-Anginal Pain,False,0.1,False,Never,3.4,154,6.5,15.5,False,7026,76.0,0 +1295,47,Female,111,77,186,39,124,103,134,6.3,27.0,88,176,Non-Anginal Pain,False,1.8,True,Current,4.6,251,7.6,43.0,True,8029,30.7,0 +1296,18,Female,121,65,243,58,157,149,118,5.9,34.8,91,199,Typical Angina,False,1.8,False,Never,1.0,154,6.7,70.2,True,8152,69.3,0 +1297,48,Female,125,78,165,76,59,160,155,6.8,21.3,85,163,Non-Anginal Pain,False,1.3,False,Never,5.2,179,5.5,21.7,False,7777,82.7,0 +1298,52,Female,132,86,225,51,131,240,125,6.4,28.4,87,179,Asymptomatic,False,1.8,False,Current,0.2,182,6.7,71.1,True,6433,60.7,0 +1299,52,Male,127,85,170,54,88,116,98,4.8,24.1,76,177,Asymptomatic,False,0.1,True,Never,4.9,111,7.5,33.2,False,2622,58.1,0 +1300,51,Female,118,85,198,74,113,69,84,4.9,23.8,85,158,Asymptomatic,False,1.2,False,Former,2.0,267,7.7,29.0,True,7146,70.9,0 +1301,56,Male,135,85,231,67,131,147,116,5.6,26.5,91,172,Atypical Angina,False,0.6,False,Never,2.0,75,6.0,38.3,True,5936,61.5,0 +1302,56,Female,128,87,191,49,120,175,99,5.2,22.6,92,154,Atypical Angina,True,0.2,False,Former,2.0,110,6.2,60.2,False,4383,63.7,1 +1303,74,Female,141,80,230,53,142,171,98,5.6,23.0,89,141,Asymptomatic,False,0.1,False,Never,5.2,109,6.2,24.8,True,9981,49.8,0 +1304,55,Female,120,68,185,68,101,117,106,5.3,27.7,82,159,Asymptomatic,False,1.0,True,Current,6.4,248,7.2,23.1,True,4548,50.5,0 +1305,64,Female,132,83,226,61,125,151,155,6.5,33.7,68,167,Non-Anginal Pain,False,1.7,False,Never,0.4,160,7.6,32.9,False,6142,63.1,0 +1306,45,Male,125,87,166,54,63,231,113,5.4,18.7,93,170,Asymptomatic,False,0.5,False,Former,14.1,63,8.0,30.2,False,9131,70.5,0 +1307,57,Female,127,70,207,40,132,114,142,7.0,19.6,87,138,Asymptomatic,False,3.5,False,Current,11.7,60,7.8,61.8,False,5421,35.4,1 +1308,57,Male,130,78,215,38,145,191,119,6.1,23.8,90,176,Asymptomatic,False,0.5,False,Never,6.3,69,5.8,44.4,False,4777,58.3,0 +1309,50,Male,125,78,233,77,136,127,66,4.4,25.6,77,160,Non-Anginal Pain,False,0.7,True,Never,10.7,261,7.6,36.7,True,7071,51.1,0 +1310,31,Female,134,76,224,53,125,213,137,5.5,32.4,87,192,Asymptomatic,False,0.3,False,Never,5.2,146,7.0,42.9,False,5817,58.6,0 +1311,36,Male,122,78,185,56,88,214,163,6.9,34.7,97,203,Asymptomatic,True,4.7,False,Never,4.7,0,6.7,34.1,False,4145,51.7,1 +1312,59,Female,152,82,268,78,154,222,101,5.5,26.3,96,184,Atypical Angina,False,0.2,False,Former,3.6,3,6.4,42.1,True,4574,55.0,0 +1313,52,Female,120,77,221,49,142,105,141,6.1,27.7,71,172,Asymptomatic,False,0.6,True,Never,1.5,70,7.2,59.7,True,6199,38.4,0 +1314,50,Male,141,94,210,37,135,196,137,6.3,27.9,92,143,Asymptomatic,False,1.0,False,Current,4.0,167,8.1,58.0,True,8661,58.8,1 +1315,44,Male,124,76,213,58,123,181,104,5.2,26.0,86,173,Asymptomatic,False,0.6,False,Never,5.0,72,7.0,56.8,False,5717,58.1,0 +1316,54,Male,127,88,207,64,123,157,115,5.4,28.6,70,140,Typical Angina,False,0.7,False,Never,7.0,156,6.7,32.2,False,6610,62.0,1 +1317,61,Male,123,80,146,55,62,171,84,4.7,15.0,85,175,Atypical Angina,False,0.7,False,Never,19.8,127,6.8,51.4,True,5257,93.3,0 +1318,77,Female,130,90,187,62,109,123,135,5.7,29.5,85,138,Asymptomatic,True,0.7,False,Current,4.8,110,7.5,50.6,False,6199,54.2,1 +1319,53,Male,133,67,187,42,121,163,121,5.9,26.6,79,162,Typical Angina,False,0.1,True,Never,8.1,84,7.9,54.1,False,3319,20.0,0 +1320,51,Female,129,86,187,55,98,115,107,5.4,31.6,82,169,Non-Anginal Pain,False,1.9,False,Never,3.2,221,9.3,30.3,False,6315,45.6,0 +1321,57,Male,144,90,204,60,111,181,105,5.2,23.3,99,170,Asymptomatic,False,0.2,False,Current,10.1,0,3.8,44.4,False,3444,54.5,0 +1322,68,Male,132,90,165,52,78,199,135,6.8,29.6,84,158,Non-Anginal Pain,False,0.1,False,Former,4.4,177,7.1,50.9,True,10573,65.3,0 +1323,83,Female,140,86,218,48,131,167,121,6.0,20.2,85,117,Typical Angina,True,6.5,True,Former,29.6,208,7.3,21.7,True,4975,46.5,1 +1324,61,Male,121,75,162,56,95,88,124,5.6,26.4,87,163,Asymptomatic,False,1.4,False,Never,1.5,184,7.7,55.7,False,7602,64.7,0 +1325,35,Male,120,88,206,68,101,183,118,5.6,22.8,83,183,Asymptomatic,False,1.5,False,Former,5.5,232,6.4,71.8,True,6663,65.6,0 +1326,54,Male,133,80,164,46,93,173,121,5.5,25.0,78,157,Asymptomatic,False,1.1,False,Former,7.1,135,5.8,77.5,False,7821,33.2,1 +1327,39,Female,129,82,156,49,92,118,138,5.9,25.2,99,165,Typical Angina,False,0.9,False,Never,3.5,121,8.5,37.4,False,4763,49.6,1 +1328,41,Male,139,95,143,49,64,177,120,5.4,25.5,84,177,Asymptomatic,False,0.6,False,Never,8.8,255,5.8,56.7,True,7016,62.4,0 +1329,77,Female,152,74,239,50,138,189,171,7.1,29.3,80,130,Asymptomatic,False,1.9,False,Never,7.7,195,7.9,50.2,False,7266,27.8,1 +1330,49,Male,135,76,214,47,133,130,109,5.1,22.3,81,166,Asymptomatic,False,0.1,False,Never,4.3,172,5.8,61.0,False,8840,48.9,0 +1331,44,Male,132,64,217,47,137,189,142,5.7,25.8,74,178,Asymptomatic,False,2.8,False,Never,4.2,155,7.1,28.7,False,9273,70.7,0 +1332,71,Female,134,74,208,55,126,164,140,5.8,27.0,74,169,Asymptomatic,False,0.3,False,Never,1.8,99,7.9,41.1,False,4203,58.5,0 +1333,54,Female,133,86,124,40,60,133,138,6.1,24.5,74,167,Non-Anginal Pain,False,0.3,False,Former,2.8,114,6.9,54.2,False,591,64.0,1 +1334,39,Female,146,95,169,65,69,191,88,5.7,27.7,83,161,Atypical Angina,False,3.6,True,Former,16.1,161,6.8,48.7,False,6023,54.6,1 +1335,54,Male,137,87,179,59,76,156,129,6.1,27.7,89,171,Atypical Angina,False,0.1,False,Never,3.9,132,6.5,36.9,False,3648,60.5,0 +1336,35,Male,139,83,186,51,92,181,119,5.2,28.7,87,201,Asymptomatic,False,0.5,False,Never,3.7,92,7.4,99.0,False,6664,48.9,0 +1337,42,Male,103,60,216,49,136,196,97,5.1,25.6,79,190,Asymptomatic,True,0.2,False,Current,8.5,210,6.8,44.2,True,7705,61.7,0 +1338,56,Male,136,88,234,55,149,132,127,6.3,20.6,80,145,Non-Anginal Pain,False,0.8,False,Current,2.8,73,7.1,54.7,True,5468,57.3,1 +1339,21,Female,102,58,182,42,136,63,131,5.8,23.0,89,194,Asymptomatic,False,1.3,False,Current,1.9,142,6.0,49.8,False,4038,65.4,0 +1340,63,Male,131,94,172,61,83,104,144,6.4,21.3,91,171,Asymptomatic,False,0.6,False,Never,3.1,139,9.0,69.5,True,7609,83.1,0 +1341,57,Female,139,93,239,52,160,125,104,5.2,30.7,88,142,Asymptomatic,False,0.6,False,Never,4.2,139,6.5,44.3,False,4539,63.0,1 +1342,65,Male,139,82,210,59,124,147,118,6.2,30.9,81,140,Asymptomatic,True,2.0,False,Never,9.7,190,7.0,53.5,True,7570,62.2,1 +1343,49,Male,110,76,177,43,112,114,125,5.2,27.1,79,180,Typical Angina,False,0.7,False,Never,3.7,29,6.7,41.4,False,5520,53.1,0 +1344,59,Male,149,98,195,72,94,197,157,6.8,28.6,71,184,Atypical Angina,False,0.3,True,Never,2.5,267,6.7,52.4,True,7621,77.9,0 +1345,41,Male,139,87,237,61,140,134,114,6.1,29.4,93,202,Asymptomatic,True,0.0,False,Never,8.0,141,6.3,70.0,False,5210,66.7,0 +1346,42,Female,136,93,149,66,63,152,141,6.6,27.4,87,191,Asymptomatic,False,2.3,False,Former,9.4,79,5.0,62.1,False,7135,61.1,0 +1347,55,Male,135,78,212,52,143,162,128,5.9,33.5,78,146,Asymptomatic,False,4.8,False,Never,3.3,139,8.8,45.2,False,6477,72.4,1 +1348,54,Male,125,82,141,50,66,96,124,6.0,25.8,101,177,Atypical Angina,False,0.6,False,Never,3.5,176,7.0,67.7,True,9978,45.7,0 +1349,54,Female,95,55,192,61,104,110,130,5.7,29.6,99,172,Asymptomatic,False,1.7,False,Never,2.9,172,8.8,30.6,False,6042,66.8,0 +1350,71,Female,132,82,187,43,106,182,146,6.3,30.5,89,153,Non-Anginal Pain,False,0.2,False,Former,8.8,112,6.9,53.4,False,500,69.9,0 +1351,50,Female,141,90,140,67,54,112,159,6.3,26.1,84,153,Typical Angina,True,0.4,False,Never,5.6,174,7.2,60.4,True,6251,50.8,1 +1352,60,Male,140,93,206,41,121,204,124,6.4,33.3,78,153,Non-Anginal Pain,False,2.2,True,Current,3.5,173,7.7,40.9,True,5104,53.9,1 +1353,58,Male,123,86,190,55,97,177,113,5.9,24.3,90,176,Asymptomatic,False,0.2,False,Never,11.6,181,7.8,87.9,True,7166,81.7,0 +1354,56,Female,100,59,207,71,121,74,116,6.0,27.9,77,170,Asymptomatic,False,0.2,False,Former,3.8,182,9.4,37.8,False,5599,64.8,0 +1355,59,Male,145,87,196,75,90,130,125,6.2,26.3,83,168,Atypical Angina,False,0.5,False,Never,4.3,261,5.8,51.6,True,9399,60.6,0 +1356,31,Male,106,70,180,79,85,78,103,4.8,16.4,69,210,Non-Anginal Pain,False,0.1,False,Former,8.6,202,7.7,28.3,True,8627,90.5,0 +1357,47,Male,139,95,181,33,129,132,129,5.9,30.9,95,158,Non-Anginal Pain,True,3.1,True,Never,7.5,141,4.8,50.0,True,7232,29.6,1 +1358,68,Female,135,93,192,40,118,195,134,6.2,22.9,93,136,Atypical Angina,True,5.5,False,Current,24.3,187,7.9,65.8,True,9132,65.8,1 +1359,50,Male,138,91,281,64,171,242,141,6.8,30.8,97,153,Non-Anginal Pain,True,0.9,False,Never,23.4,93,7.2,31.8,False,3103,78.3,1 +1360,63,Male,138,76,210,65,111,213,126,6.2,24.7,92,149,Non-Anginal Pain,True,1.0,True,Former,5.9,188,6.0,55.3,False,7009,60.5,1 +1361,60,Female,129,82,232,44,148,183,105,5.3,31.9,98,143,Atypical Angina,False,1.2,False,Current,5.8,76,7.1,36.6,False,4550,45.5,1 +1362,18,Male,116,72,151,38,84,143,116,6.2,19.5,84,210,Atypical Angina,False,0.7,False,Former,3.6,132,9.4,34.2,True,6866,65.5,0 +1363,37,Male,130,66,143,47,72,187,124,6.1,21.0,74,179,Atypical Angina,False,0.5,False,Current,21.7,0,6.4,61.4,False,4519,48.7,0 +1364,45,Female,122,75,187,44,119,177,97,5.9,24.7,66,184,Non-Anginal Pain,False,0.5,False,Current,7.2,169,7.9,51.6,True,7204,83.0,0 +1365,45,Female,99,61,243,54,152,189,98,5.7,22.6,81,178,Asymptomatic,False,0.7,False,Current,1.0,63,6.7,41.7,True,6821,42.0,0 +1366,48,Male,127,84,194,49,109,183,159,7.2,29.7,84,136,Atypical Angina,False,1.6,True,Former,16.1,90,7.7,45.1,False,2902,65.9,1 +1367,48,Female,124,81,150,53,58,157,102,4.9,26.2,87,167,Asymptomatic,False,0.7,True,Never,0.1,150,7.5,38.6,True,7784,49.4,0 +1368,43,Male,95,59,242,70,148,90,78,4.5,19.4,82,190,Atypical Angina,False,1.0,False,Never,3.7,166,5.6,27.0,True,7065,77.3,0 +1369,45,Male,137,88,209,64,119,130,154,7.7,30.4,86,164,Atypical Angina,False,0.5,True,Never,7.5,84,6.3,35.8,False,5517,61.2,0 +1370,28,Female,110,79,136,56,66,35,109,5.7,26.5,84,186,Atypical Angina,False,0.4,False,Former,2.0,95,5.2,73.4,False,5305,60.8,0 +1371,79,Male,140,85,167,21,97,200,135,5.6,28.7,79,124,Atypical Angina,False,0.4,True,Never,16.8,89,7.2,63.1,True,4407,68.2,1 +1372,72,Female,131,84,208,56,124,133,91,4.7,25.4,93,164,Non-Anginal Pain,False,0.6,False,Current,1.6,172,6.0,49.3,True,4937,58.5,0 +1373,65,Female,136,74,238,57,142,169,128,6.1,31.3,78,125,Asymptomatic,False,2.0,False,Former,13.9,264,7.2,76.8,False,5783,74.0,1 +1374,53,Male,111,64,134,41,72,119,103,5.4,25.6,73,160,Non-Anginal Pain,False,0.6,False,Never,6.3,123,6.7,10.0,True,6033,100.0,0 +1375,42,Male,125,76,226,44,128,186,124,5.8,22.7,68,182,Asymptomatic,False,0.4,False,Never,3.5,151,5.4,32.2,False,9570,57.8,0 +1376,85,Female,148,93,175,40,93,167,126,6.2,33.1,82,112,Asymptomatic,False,1.7,False,Former,4.9,17,6.3,37.3,False,1998,83.1,1 +1377,41,Female,115,66,175,45,108,151,156,6.6,23.9,80,163,Typical Angina,False,0.3,False,Former,24.3,103,9.0,46.8,False,8937,51.3,0 +1378,72,Female,123,68,224,43,124,292,178,6.8,20.9,89,161,Atypical Angina,False,0.2,False,Current,0.4,220,6.4,39.6,True,7913,34.7,0 +1379,58,Female,139,83,232,58,110,211,114,5.6,28.1,76,171,Non-Anginal Pain,False,2.1,True,Never,2.3,74,6.5,36.5,True,8477,55.4,0 +1380,42,Female,123,63,204,36,140,118,105,5.9,24.6,83,165,Non-Anginal Pain,True,0.3,False,Current,13.7,142,7.7,28.9,True,4389,54.9,1 +1381,43,Male,131,80,186,34,115,146,118,5.1,20.6,88,140,Asymptomatic,True,0.5,False,Current,2.8,106,7.8,23.4,False,7588,44.3,1 +1382,48,Male,136,77,181,71,88,193,129,5.3,29.0,66,158,Asymptomatic,False,0.2,False,Former,4.4,252,5.2,52.0,True,9694,75.5,0 +1383,46,Male,125,80,206,72,78,286,134,6.3,26.3,83,203,Non-Anginal Pain,False,0.8,True,Never,34.2,217,8.5,33.0,True,8990,79.5,0 +1384,35,Female,109,75,186,78,87,53,141,6.3,20.4,83,189,Asymptomatic,False,1.6,False,Former,0.3,173,7.7,39.4,True,9753,80.2,0 +1385,59,Male,121,77,265,54,167,198,119,5.4,24.8,81,158,Asymptomatic,False,1.0,True,Never,6.5,184,8.5,29.7,False,5819,46.8,0 +1386,42,Female,164,100,260,53,147,213,141,6.4,29.3,79,171,Asymptomatic,False,0.8,False,Former,21.7,97,8.1,62.2,False,4248,71.8,1 +1387,64,Male,124,69,205,72,138,35,124,5.7,19.1,80,154,Typical Angina,False,0.1,True,Never,2.3,167,7.0,70.5,False,4357,56.0,0 +1388,51,Female,133,78,181,56,98,165,106,5.3,26.1,74,170,Non-Anginal Pain,True,2.6,False,Never,5.4,114,4.9,50.6,True,7398,71.6,1 +1389,55,Male,116,66,136,41,66,151,122,5.9,16.3,79,167,Asymptomatic,False,0.0,True,Current,4.7,150,7.2,29.6,True,4029,51.4,0 +1390,55,Female,132,85,191,43,101,229,120,6.2,28.4,101,190,Non-Anginal Pain,True,1.6,False,Never,11.0,179,8.2,17.0,True,7301,70.6,0 +1391,49,Female,124,67,155,42,107,115,107,5.7,25.3,83,182,Atypical Angina,False,0.1,False,Never,0.4,123,7.3,55.7,True,10222,62.5,0 +1392,52,Male,145,81,185,48,108,198,114,5.8,29.4,82,170,Typical Angina,False,1.2,False,Current,2.3,208,5.0,52.5,True,7007,38.6,0 +1393,56,Male,112,61,168,51,88,121,122,5.9,19.3,79,166,Asymptomatic,False,1.9,True,Never,7.8,124,7.4,71.2,False,2988,58.2,0 +1394,84,Male,118,77,174,28,99,196,131,6.0,26.0,82,125,Non-Anginal Pain,False,0.7,False,Current,4.9,97,6.2,28.2,False,5739,65.0,1 +1395,37,Female,132,91,162,69,59,147,107,5.2,24.5,82,187,Atypical Angina,False,1.2,False,Never,10.3,93,4.9,50.3,False,6951,69.0,0 +1396,44,Male,124,70,159,36,103,97,78,4.5,21.9,71,183,Asymptomatic,False,0.4,True,Never,1.5,54,7.9,48.1,False,3658,71.9,0 +1397,49,Male,112,60,230,49,138,231,77,4.4,28.9,78,175,Asymptomatic,False,0.6,False,Never,2.1,214,8.0,48.9,False,5692,61.6,0 +1398,37,Female,106,84,189,68,92,118,131,5.9,24.3,73,196,Asymptomatic,False,1.9,False,Never,3.6,248,7.9,26.9,False,4091,66.9,0 +1399,36,Female,111,63,211,69,107,150,108,5.7,19.4,85,181,Asymptomatic,False,1.7,False,Current,0.3,150,4.6,77.6,False,7226,49.8,0 +1400,33,Female,109,80,176,50,109,141,109,5.4,28.4,86,195,Asymptomatic,False,0.3,True,Never,1.6,173,7.2,73.4,True,7205,62.0,0 +1401,53,Female,113,72,201,75,80,153,102,5.3,20.9,85,160,Atypical Angina,False,0.9,True,Never,0.3,152,8.8,25.6,False,4849,81.3,0 +1402,46,Female,141,102,206,65,114,142,124,5.8,22.5,75,196,Non-Anginal Pain,False,1.8,False,Former,3.2,180,8.0,59.7,True,10279,71.6,0 +1403,56,Male,114,77,163,58,84,134,156,6.8,24.9,84,148,Asymptomatic,False,1.9,False,Never,8.0,109,8.1,50.3,False,643,56.3,0 +1404,35,Female,120,75,142,37,73,194,116,5.4,27.6,90,182,Non-Anginal Pain,True,0.7,False,Current,7.5,158,5.9,38.1,True,6958,75.7,0 +1405,42,Female,116,63,176,30,115,148,138,6.0,27.1,70,178,Asymptomatic,False,0.5,False,Never,3.3,106,7.4,28.3,False,4026,51.5,0 +1406,65,Male,137,78,156,53,77,119,148,7.0,25.4,88,150,Typical Angina,True,0.1,False,Former,6.5,135,7.3,52.5,True,5203,78.5,1 +1407,63,Female,142,97,227,46,153,97,179,7.5,32.2,79,127,Non-Anginal Pain,False,2.3,False,Former,3.1,71,7.0,58.4,False,3635,38.2,1 +1408,33,Female,115,69,159,75,68,164,101,5.4,25.9,80,184,Non-Anginal Pain,False,1.0,False,Never,1.4,164,5.5,38.2,False,8301,70.4,0 +1409,64,Male,147,100,184,56,93,75,107,5.3,22.7,84,171,Asymptomatic,False,0.2,True,Never,2.3,114,8.4,33.0,False,3990,52.3,0 +1410,46,Female,114,68,194,59,100,211,124,6.5,28.9,76,183,Non-Anginal Pain,False,0.4,True,Former,3.6,96,5.7,46.5,False,4513,62.6,0 +1411,39,Female,125,74,216,50,113,272,114,5.5,19.9,85,167,Atypical Angina,False,0.6,True,Former,8.8,84,7.3,42.4,False,6475,90.0,0 +1412,63,Female,151,103,170,57,71,172,113,6.2,24.3,80,151,Asymptomatic,False,1.4,False,Never,2.5,108,7.4,35.2,False,6265,75.8,0 +1413,65,Male,123,79,172,38,97,168,121,5.6,26.7,92,126,Typical Angina,True,0.7,False,Former,5.3,70,8.6,28.5,True,8170,37.2,1 +1414,21,Male,111,76,166,54,74,212,157,6.1,25.6,78,207,Non-Anginal Pain,False,0.6,False,Never,11.0,43,6.7,66.4,False,7917,16.7,0 +1415,64,Male,128,89,157,39,104,105,88,4.9,20.5,92,157,Non-Anginal Pain,False,0.6,False,Current,7.3,209,6.4,41.2,True,7660,55.5,0 +1416,47,Male,134,91,265,57,169,229,96,5.7,32.2,81,151,Asymptomatic,True,0.7,False,Current,11.6,223,8.1,58.1,True,9922,53.1,1 +1417,46,Male,132,83,187,55,97,194,84,4.8,27.9,82,167,Asymptomatic,False,1.6,False,Never,12.1,28,8.0,22.3,False,5196,51.5,0 +1418,48,Female,145,83,171,53,79,184,149,6.7,29.9,66,177,Non-Anginal Pain,False,0.2,False,Former,3.8,184,9.5,56.7,False,5443,61.2,0 +1419,67,Male,140,77,173,45,109,87,147,7.2,21.6,88,147,Asymptomatic,True,0.4,False,Former,4.9,139,7.5,79.7,False,7575,77.5,1 +1420,69,Male,122,78,175,54,87,181,115,6.1,15.6,81,148,Asymptomatic,False,0.3,False,Former,29.1,51,6.8,48.8,False,2498,47.0,0 +1421,57,Female,122,86,156,44,93,124,133,6.0,24.8,90,159,Non-Anginal Pain,False,0.9,False,Current,3.0,145,7.3,82.7,False,5511,69.2,0 +1422,63,Female,140,88,185,55,82,222,148,6.4,24.0,80,148,Atypical Angina,False,1.5,False,Never,17.3,82,5.8,41.0,False,2065,68.2,0 +1423,80,Male,131,80,189,46,104,249,163,6.9,30.1,85,133,Asymptomatic,False,0.5,True,Never,8.7,60,7.9,43.7,True,6582,61.4,1 +1424,52,Female,130,91,148,48,66,148,98,4.5,30.3,83,168,Typical Angina,False,0.6,False,Never,6.3,171,7.6,35.1,True,6976,65.1,0 +1425,39,Male,103,65,173,51,99,98,101,5.7,27.6,86,167,Asymptomatic,True,0.8,True,Never,2.0,135,7.4,45.3,True,9994,35.7,1 +1426,59,Male,122,70,212,66,119,106,123,5.6,20.4,81,194,Non-Anginal Pain,False,1.4,True,Current,1.9,196,7.5,49.2,True,6584,81.2,0 +1427,62,Female,146,99,186,39,109,153,113,6.4,31.4,92,158,Atypical Angina,True,0.7,False,Current,1.6,103,5.8,58.7,False,3204,26.4,1 +1428,51,Female,108,62,201,52,121,150,118,5.3,23.6,87,174,Asymptomatic,False,0.9,False,Current,5.9,41,6.8,38.5,False,3731,35.1,0 +1429,50,Female,132,90,167,59,92,103,103,5.5,27.7,74,202,Non-Anginal Pain,True,1.0,False,Never,1.5,182,8.0,70.9,False,4928,50.7,0 +1430,80,Male,134,80,209,51,133,149,161,7.0,28.3,79,108,Typical Angina,False,0.3,False,Never,7.9,57,7.4,35.4,False,1220,54.8,1 +1431,49,Female,141,82,237,60,142,205,133,6.1,22.6,83,185,Non-Anginal Pain,True,1.1,False,Never,29.8,157,6.8,73.0,True,8154,68.4,0 +1432,41,Male,131,90,226,79,113,152,109,5.5,20.9,84,154,Non-Anginal Pain,False,0.1,False,Never,17.2,119,6.4,62.8,False,4366,62.9,0 +1433,18,Female,124,70,182,55,72,216,84,4.0,22.8,67,210,Atypical Angina,False,1.1,False,Current,20.9,215,7.1,33.3,True,8368,54.7,0 +1434,63,Male,123,70,141,33,89,67,83,5.0,25.4,76,160,Asymptomatic,False,0.3,False,Current,4.0,181,6.9,53.8,False,5635,78.2,0 +1435,69,Male,173,126,212,40,135,195,145,6.4,36.8,97,131,Asymptomatic,True,1.5,True,Never,6.0,66,7.4,45.3,True,4868,67.2,1 +1436,37,Male,128,80,155,32,98,172,104,5.3,36.2,77,169,Asymptomatic,False,0.2,False,Former,13.9,160,6.0,47.8,False,5578,71.3,0 +1437,60,Male,141,95,153,54,74,117,99,5.2,31.9,87,159,Non-Anginal Pain,True,2.6,False,Former,7.1,101,6.4,61.0,False,5155,35.0,1 +1438,48,Female,111,75,202,76,106,116,73,4.6,21.4,64,170,Non-Anginal Pain,False,0.1,False,Former,7.2,215,7.6,59.2,True,8872,56.4,0 +1439,54,Male,108,72,158,47,89,132,87,4.8,23.9,89,179,Asymptomatic,False,1.1,False,Never,2.2,75,6.0,62.1,False,4507,64.6,0 +1440,45,Male,126,77,169,58,96,112,105,5.5,24.0,85,189,Asymptomatic,False,1.4,False,Current,1.7,57,7.5,53.8,False,6890,43.9,0 +1441,53,Female,133,84,225,80,102,196,133,6.4,24.3,87,133,Non-Anginal Pain,True,0.1,True,Never,0.7,160,7.2,49.7,True,5424,61.1,1 +1442,64,Female,134,82,231,61,146,176,124,5.9,30.9,79,169,Non-Anginal Pain,False,0.7,False,Never,1.5,153,8.4,59.5,True,7037,70.9,0 +1443,46,Male,122,83,134,37,72,104,70,4.0,21.1,75,191,Atypical Angina,False,2.3,False,Former,9.7,293,7.8,38.0,True,8794,71.6,0 +1444,44,Male,137,85,128,50,35,215,107,6.1,31.3,84,147,Typical Angina,True,1.2,False,Never,3.5,63,8.1,62.1,False,3793,50.1,1 +1445,40,Male,120,77,162,20,94,246,124,6.0,25.9,83,148,Atypical Angina,False,1.2,False,Current,5.1,0,7.6,33.2,False,5903,32.2,1 +1446,67,Male,128,76,236,45,140,241,144,6.7,23.7,74,163,Asymptomatic,False,0.3,False,Former,4.5,59,6.9,26.1,True,7066,67.7,1 +1447,42,Female,99,69,227,79,97,246,90,5.5,20.6,85,186,Asymptomatic,False,1.3,True,Never,3.8,239,8.7,56.5,True,10427,65.4,0 +1448,61,Male,124,76,119,39,46,187,147,6.5,25.0,71,172,Non-Anginal Pain,True,0.2,True,Never,17.1,95,6.8,26.7,True,5794,63.2,0 +1449,37,Male,122,65,140,51,64,194,189,7.5,35.2,77,170,Atypical Angina,False,1.4,False,Former,11.6,57,7.6,64.2,True,5657,62.7,0 +1450,25,Male,111,62,168,55,84,174,109,5.5,26.0,83,205,Atypical Angina,False,0.1,True,Current,12.4,134,7.1,61.5,False,6151,54.2,0 +1451,46,Female,110,71,220,52,132,208,109,5.2,21.7,89,172,Asymptomatic,False,1.0,False,Current,1.1,223,6.6,58.5,True,4808,45.8,0 +1452,56,Male,132,85,281,67,178,131,134,5.7,28.2,73,181,Typical Angina,False,0.5,False,Former,3.0,277,7.0,35.7,True,7019,45.2,0 +1453,67,Male,159,96,202,80,96,110,127,6.1,18.3,89,188,Atypical Angina,False,2.4,False,Never,6.8,201,7.6,55.0,True,10121,65.5,0 +1454,63,Male,135,89,235,50,159,57,78,4.9,25.5,89,143,Asymptomatic,False,1.8,True,Current,3.1,99,8.1,77.6,False,4125,42.8,1 +1455,57,Female,154,92,159,51,72,157,125,5.9,26.8,74,193,Atypical Angina,False,0.7,False,Never,2.6,222,8.0,52.1,True,9711,70.6,0 +1456,21,Male,119,78,169,48,81,169,95,5.6,25.5,67,193,Atypical Angina,False,1.2,False,Never,4.8,255,6.4,25.7,True,6934,71.4,0 +1457,59,Female,121,77,173,66,81,192,69,4.0,19.7,77,160,Non-Anginal Pain,False,0.1,False,Never,3.3,207,7.2,41.9,True,9653,65.8,0 +1458,34,Male,98,52,200,51,134,99,100,4.9,24.0,70,202,Asymptomatic,False,0.5,False,Former,5.8,285,6.0,6.3,False,7551,69.8,0 +1459,44,Female,126,87,234,52,182,72,121,5.4,24.0,82,176,Typical Angina,False,1.1,False,Never,5.6,274,6.6,42.0,True,11430,50.6,0 +1460,76,Female,128,77,196,63,105,155,113,5.3,15.0,73,153,Typical Angina,False,0.3,False,Never,4.0,190,6.6,47.6,True,7229,65.5,0 +1461,66,Female,145,91,231,44,149,160,151,6.6,29.3,69,152,Non-Anginal Pain,False,2.1,False,Former,6.9,31,8.1,55.7,False,7696,62.8,1 +1462,39,Female,117,78,191,54,102,104,134,5.8,24.5,85,167,Non-Anginal Pain,False,0.2,False,Former,3.3,53,7.1,59.7,False,7598,62.2,1 +1463,48,Female,118,77,145,39,98,105,116,6.2,27.3,87,172,Non-Anginal Pain,True,0.7,True,Current,0.8,122,6.2,39.8,False,7459,60.9,0 +1464,63,Female,117,85,197,44,105,238,172,7.2,33.9,78,138,Typical Angina,True,0.7,True,Never,1.8,120,5.9,26.8,True,3955,88.0,1 +1465,51,Male,95,54,165,57,62,214,109,5.4,25.4,67,153,Non-Anginal Pain,False,1.7,False,Never,1.6,101,8.3,70.4,False,4085,43.4,0 +1466,50,Male,123,80,141,49,94,110,100,5.4,21.0,68,193,Asymptomatic,False,0.4,True,Former,3.6,162,6.5,40.2,False,6479,57.6,0 +1467,38,Male,126,84,221,62,113,184,123,6.1,24.5,89,171,Non-Anginal Pain,True,0.9,True,Never,9.7,82,5.7,66.6,True,7043,59.3,0 +1468,60,Female,130,81,134,62,74,96,136,5.7,28.6,78,168,Asymptomatic,False,1.0,False,Current,3.3,167,7.7,49.0,True,8737,90.9,0 +1469,62,Female,112,75,197,49,114,175,102,5.2,16.9,84,176,Typical Angina,True,1.0,False,Current,14.8,161,6.3,44.3,False,2564,50.7,1 +1470,43,Male,119,80,210,69,104,144,85,5.2,24.7,70,193,Asymptomatic,True,0.7,True,Never,4.5,293,7.5,38.3,False,8410,77.2,0 +1471,27,Male,112,84,215,68,119,148,148,5.6,28.5,86,210,Asymptomatic,False,1.4,False,Never,2.5,143,7.8,35.9,True,6470,43.9,0 +1472,76,Male,137,95,200,57,99,165,150,6.3,30.3,79,124,Asymptomatic,False,0.2,True,Never,1.7,166,7.3,73.3,False,4534,40.9,0 +1473,44,Male,118,80,199,61,120,141,119,5.6,20.2,75,189,Asymptomatic,False,0.8,True,Current,9.0,254,8.3,46.5,True,9241,82.0,0 +1474,58,Female,139,99,223,83,108,154,104,5.3,25.5,82,159,Asymptomatic,False,1.0,False,Never,0.1,139,7.7,75.0,False,6522,52.8,0 +1475,42,Female,137,87,156,52,87,123,152,6.6,33.2,89,182,Non-Anginal Pain,False,1.1,False,Never,1.9,48,7.9,61.3,False,2478,50.7,0 +1476,43,Male,131,83,154,69,69,100,124,5.7,25.9,91,189,Asymptomatic,False,0.9,True,Never,24.8,231,7.0,62.6,False,4986,64.0,0 +1477,66,Male,117,73,102,40,54,54,91,4.5,17.1,64,153,Asymptomatic,False,1.3,False,Former,1.9,165,4.6,32.7,True,5362,42.6,0 +1478,49,Male,131,79,151,40,101,109,111,5.7,22.6,88,176,Asymptomatic,False,0.8,False,Never,7.9,21,8.1,64.8,False,1594,50.8,0 +1479,63,Male,125,74,210,40,134,217,158,6.6,27.0,69,138,Non-Anginal Pain,False,1.7,False,Never,5.9,146,5.5,47.3,True,5758,47.4,1 +1480,63,Male,132,75,256,72,152,133,142,6.6,29.4,91,162,Asymptomatic,False,1.1,False,Former,3.1,167,6.2,53.5,False,5655,54.8,0 +1481,46,Male,134,86,205,58,97,248,112,5.5,26.4,71,169,Atypical Angina,False,0.1,False,Never,4.5,239,7.1,30.1,False,6460,57.1,0 +1482,57,Male,116,83,95,43,36,90,147,6.9,24.4,74,166,Asymptomatic,True,1.8,False,Former,1.5,87,7.7,52.1,False,3183,80.7,0 +1483,63,Female,131,87,199,47,131,130,123,5.9,28.3,76,155,Asymptomatic,False,0.4,True,Never,10.0,52,7.4,49.0,False,3713,58.0,0 +1484,69,Male,133,88,193,29,137,120,80,4.6,18.8,78,157,Asymptomatic,False,2.4,True,Never,1.9,136,7.2,57.3,False,1529,65.6,0 +1485,50,Male,135,79,124,48,63,47,156,6.9,30.1,82,169,Atypical Angina,False,0.4,True,Never,2.2,143,6.5,28.7,False,4790,93.1,0 +1486,53,Female,130,85,164,55,85,108,113,5.8,24.1,75,160,Asymptomatic,False,0.5,True,Never,6.1,66,7.6,66.6,False,5327,63.0,0 +1487,41,Female,103,69,201,76,86,218,99,5.3,25.3,78,184,Non-Anginal Pain,False,0.6,False,Former,3.1,135,8.1,32.7,True,6194,50.7,0 +1488,63,Female,154,92,199,58,106,151,139,6.5,23.5,73,137,Non-Anginal Pain,False,0.5,False,Former,5.1,88,5.2,45.2,False,4001,77.8,0 +1489,55,Male,126,95,183,51,115,168,121,5.6,26.5,88,172,Asymptomatic,False,0.3,False,Never,1.9,133,8.5,64.6,False,5664,78.5,0 +1490,36,Female,136,95,215,65,102,255,126,5.8,26.7,95,189,Asymptomatic,True,1.5,True,Former,19.9,148,6.5,73.7,False,8072,54.5,0 +1491,49,Male,121,80,131,56,84,50,141,6.1,25.5,84,180,Asymptomatic,False,0.2,True,Former,3.3,177,6.6,67.6,False,8136,60.9,0 +1492,52,Female,124,77,207,74,99,133,85,4.3,20.2,86,169,Asymptomatic,False,0.4,False,Never,4.3,206,8.9,62.7,True,5828,70.5,0 +1493,46,Male,122,70,193,40,116,135,129,6.0,20.0,82,174,Asymptomatic,False,1.1,False,Never,2.2,11,10.2,38.2,False,2369,58.5,1 +1494,44,Female,131,77,220,45,155,148,140,6.5,26.0,83,159,Asymptomatic,True,1.5,True,Current,3.1,71,7.2,50.2,True,6064,61.8,1 +1495,32,Female,108,67,188,64,91,187,128,5.9,25.6,64,184,Asymptomatic,False,0.7,False,Never,1.4,193,7.9,34.0,True,6786,64.8,0 +1496,55,Female,134,82,160,47,92,177,60,4.1,20.4,80,152,Asymptomatic,False,0.2,True,Former,3.1,185,5.7,73.5,False,4520,77.9,0 +1497,48,Female,118,78,223,53,120,211,93,4.8,24.4,87,170,Asymptomatic,False,0.7,True,Former,5.8,166,7.8,58.5,True,6946,68.2,0 +1498,65,Male,142,89,187,62,100,169,116,5.6,26.0,76,150,Typical Angina,False,0.7,False,Former,2.9,134,9.2,76.2,True,7408,60.1,0 +1499,52,Male,121,81,124,18,79,208,119,5.3,24.7,80,156,Non-Anginal Pain,False,0.4,False,Current,12.0,36,7.6,59.2,False,2944,18.5,1 +1500,64,Female,113,69,212,75,101,199,93,5.1,21.6,91,167,Asymptomatic,True,0.5,False,Former,7.6,114,8.3,46.2,True,5983,35.0,0 +1501,38,Female,126,90,240,56,126,296,119,5.7,30.3,82,188,Atypical Angina,False,0.0,False,Never,5.7,216,7.8,70.0,True,7661,82.2,0 +1502,58,Female,120,89,182,41,100,176,120,5.0,24.3,77,164,Atypical Angina,False,0.2,True,Never,1.3,114,7.3,48.5,False,5259,70.0,0 +1503,63,Male,130,74,227,57,132,191,165,7.3,22.1,73,147,Atypical Angina,False,1.1,True,Former,12.9,179,7.5,77.1,False,9929,61.3,1 +1504,63,Female,136,78,213,35,132,259,99,5.5,23.0,87,132,Asymptomatic,True,2.7,False,Current,11.6,145,8.8,35.4,False,7062,41.8,1 +1505,50,Female,124,70,177,54,86,109,144,6.1,27.4,94,157,Atypical Angina,True,1.6,False,Current,4.7,89,6.5,38.3,False,4780,53.9,1 +1506,42,Male,107,73,193,64,95,130,114,5.6,28.5,70,183,Asymptomatic,False,2.1,False,Never,2.9,123,6.0,36.3,False,4016,76.1,0 +1507,75,Female,155,115,116,60,39,65,122,5.9,22.8,79,158,Atypical Angina,False,0.2,False,Never,2.6,33,8.0,64.0,False,5384,74.6,0 +1508,51,Male,114,72,152,44,88,93,86,4.6,20.0,88,195,Asymptomatic,False,0.5,False,Current,5.1,164,8.6,29.1,True,6063,50.6,0 +1509,38,Male,117,95,173,72,79,99,102,4.7,22.5,63,188,Asymptomatic,False,0.6,False,Never,1.6,296,7.4,27.6,True,5558,65.9,0 +1510,51,Female,144,86,216,62,124,152,165,6.9,20.8,64,177,Asymptomatic,False,1.0,True,Former,7.6,227,7.9,50.0,True,7363,54.3,0 +1511,58,Male,123,71,208,55,112,150,101,5.4,27.4,81,168,Asymptomatic,False,0.7,True,Never,10.7,144,8.6,53.5,True,5335,61.0,0 +1512,44,Female,133,83,215,75,106,162,124,6.3,24.8,76,165,Non-Anginal Pain,True,0.7,False,Former,0.8,95,9.0,59.3,False,7067,51.5,0 +1513,59,Male,148,92,234,64,144,89,103,5.8,23.0,75,125,Typical Angina,False,3.5,True,Former,4.6,106,7.3,34.5,True,7691,61.0,1 +1514,65,Male,121,87,194,42,100,233,120,6.1,25.5,98,134,Asymptomatic,True,1.8,False,Current,3.8,47,6.7,44.9,False,3888,37.4,1 +1515,53,Female,145,101,173,52,97,153,96,5.2,29.6,69,172,Non-Anginal Pain,True,2.6,True,Never,3.0,110,8.9,39.7,False,5506,50.8,0 +1516,67,Female,123,84,133,62,35,153,113,6.2,22.2,71,163,Non-Anginal Pain,False,1.2,False,Former,9.6,170,9.0,31.5,True,8059,90.5,0 +1517,52,Male,136,88,137,60,85,66,117,5.7,27.2,77,177,Non-Anginal Pain,False,1.2,False,Never,3.7,168,6.9,29.5,False,3783,50.4,0 +1518,48,Male,107,72,141,35,83,90,106,5.4,22.2,73,157,Non-Anginal Pain,False,0.1,True,Never,1.5,117,6.5,25.2,False,4372,77.8,0 +1519,74,Male,113,63,176,60,94,133,116,5.3,31.1,86,117,Atypical Angina,False,1.0,False,Former,2.7,92,8.2,42.8,False,3440,55.9,1 +1520,62,Female,144,77,225,60,123,214,137,5.7,29.8,85,163,Asymptomatic,True,0.1,False,Former,12.3,136,8.6,31.9,False,5275,44.6,0 +1521,55,Female,121,80,183,52,79,219,102,5.7,24.7,91,174,Asymptomatic,True,0.2,False,Former,0.5,0,7.0,81.3,False,4235,45.1,0 +1522,30,Male,101,69,159,59,80,157,89,4.9,28.7,73,206,Atypical Angina,False,0.7,True,Never,2.9,239,7.9,44.0,True,8464,63.1,0 +1523,36,Male,112,80,217,70,101,194,159,7.3,33.0,81,194,Non-Anginal Pain,True,0.0,True,Former,5.8,110,7.0,38.4,False,7205,59.6,0 +1524,32,Female,109,63,178,43,114,86,131,5.7,20.1,77,210,Asymptomatic,False,0.6,False,Current,1.7,194,6.7,60.5,True,5505,63.5,0 +1525,53,Male,149,99,202,49,113,238,118,5.2,23.9,84,170,Non-Anginal Pain,True,0.8,True,Never,9.4,137,8.3,63.4,True,4300,43.1,0 +1526,53,Female,143,93,193,79,81,193,96,5.6,24.8,69,174,Asymptomatic,False,0.6,False,Never,1.0,138,7.5,87.4,False,5210,31.1,0 +1527,59,Female,143,95,192,45,115,205,140,6.4,28.4,88,154,Atypical Angina,False,0.5,False,Never,4.1,196,6.8,66.6,True,8399,54.9,0 +1528,67,Female,138,81,114,46,44,93,117,6.1,21.9,97,110,Non-Anginal Pain,False,3.2,True,Never,6.7,67,5.2,53.6,True,8129,80.9,1 +1529,34,Female,118,92,176,49,119,35,126,5.6,20.8,85,206,Typical Angina,False,0.5,False,Never,0.8,205,7.5,50.4,False,6510,59.2,0 +1530,36,Female,142,89,197,59,79,253,116,5.1,34.5,94,190,Non-Anginal Pain,False,0.5,False,Never,0.2,49,7.2,39.2,False,4757,30.6,0 +1531,42,Female,132,87,131,43,68,151,125,5.1,29.8,65,172,Non-Anginal Pain,False,0.3,False,Former,9.0,203,6.3,42.2,False,9133,74.2,0 +1532,60,Female,126,78,213,73,109,150,88,5.3,23.8,88,130,Typical Angina,False,0.4,False,Former,0.4,138,5.5,48.5,False,4670,73.4,1 +1533,57,Male,127,87,138,47,74,125,78,4.4,29.3,78,176,Asymptomatic,False,0.2,False,Former,7.8,174,7.2,31.8,False,4403,55.2,0 +1534,40,Female,112,63,181,49,86,198,84,4.6,22.5,88,186,Atypical Angina,False,0.1,False,Never,0.4,161,6.7,57.5,True,4762,48.9,0 +1535,45,Male,114,68,153,59,79,96,91,5.0,21.4,79,173,Typical Angina,False,0.3,False,Never,7.6,162,7.0,41.9,False,3401,72.8,0 +1536,59,Female,124,80,242,69,138,174,119,5.4,29.4,72,146,Atypical Angina,False,0.6,False,Never,5.4,62,7.6,54.0,True,6428,59.2,1 +1537,55,Male,138,76,225,55,117,270,144,6.6,32.7,76,152,Asymptomatic,False,0.4,False,Never,3.5,103,6.5,57.7,False,4512,46.5,0 +1538,67,Male,137,89,196,60,130,35,101,5.6,28.9,77,117,Non-Anginal Pain,False,1.8,True,Never,2.0,86,6.9,33.5,True,7625,62.0,1 +1539,43,Male,119,81,179,71,63,170,118,5.5,24.2,81,196,Asymptomatic,False,0.4,True,Never,17.7,186,7.1,58.5,True,5838,63.2,0 +1540,52,Female,144,93,166,49,84,171,119,5.2,22.5,98,142,Typical Angina,True,0.3,False,Current,7.6,20,5.9,69.2,False,6387,50.0,1 +1541,41,Male,130,73,180,49,99,165,104,6.0,19.8,85,153,Typical Angina,True,3.3,False,Former,5.2,87,4.7,45.5,False,6932,57.8,1 +1542,69,Male,134,92,223,52,133,153,94,5.0,36.0,99,136,Asymptomatic,True,3.3,False,Current,2.9,94,6.9,34.4,False,6878,60.4,1 +1543,67,Male,121,82,201,54,114,175,91,5.2,29.3,87,171,Asymptomatic,False,0.0,False,Never,5.7,116,7.0,43.2,False,3589,61.7,0 +1544,60,Male,154,84,263,63,132,291,126,6.4,27.0,91,149,Non-Anginal Pain,True,0.5,False,Never,3.0,147,7.3,52.9,False,7061,65.4,1 +1545,66,Female,126,90,143,54,54,130,124,6.0,26.8,76,172,Asymptomatic,False,0.7,True,Current,0.3,195,9.8,30.3,True,8824,68.7,0 +1546,72,Female,115,78,205,54,118,214,96,5.4,30.3,81,125,Typical Angina,True,2.9,True,Former,2.5,100,5.5,40.6,False,1495,59.7,1 +1547,73,Female,126,76,154,59,86,132,176,7.4,28.2,69,145,Non-Anginal Pain,False,1.0,False,Never,2.9,121,6.5,41.3,False,6649,69.0,0 +1548,76,Male,163,98,132,40,82,108,109,5.4,30.3,75,126,Non-Anginal Pain,False,0.2,False,Former,3.5,140,6.9,69.9,False,3015,38.0,0 +1549,45,Female,135,82,159,33,70,201,140,6.3,28.3,85,170,Atypical Angina,False,0.7,False,Former,7.0,45,7.6,67.2,False,4503,25.3,1 +1550,43,Male,131,73,206,60,106,164,119,5.7,21.0,87,139,Atypical Angina,True,1.0,False,Never,3.0,75,6.6,72.8,False,1852,63.7,1 +1551,70,Male,122,79,184,58,102,206,111,5.8,23.6,82,137,Asymptomatic,False,1.8,True,Never,3.3,53,6.8,10.2,False,3520,74.7,0 +1552,48,Male,126,75,196,52,120,190,112,5.3,21.8,77,163,Non-Anginal Pain,False,0.5,True,Never,2.2,115,6.6,48.1,False,7150,37.1,0 +1553,31,Female,122,84,196,70,84,188,113,5.5,27.6,85,209,Asymptomatic,False,0.4,True,Former,2.0,183,7.1,52.5,False,3847,70.6,0 +1554,48,Female,102,62,177,54,76,256,146,6.4,28.4,78,163,Asymptomatic,False,0.5,True,Never,16.0,230,6.4,40.5,False,5430,52.7,0 +1555,67,Male,130,78,227,35,144,208,109,5.5,33.2,94,159,Atypical Angina,False,1.3,False,Never,12.4,95,7.5,60.4,False,5335,43.2,1 +1556,48,Male,112,69,203,73,115,117,134,6.5,16.1,89,158,Asymptomatic,False,1.8,False,Never,2.2,1,5.1,73.1,False,2291,65.2,1 +1557,64,Female,152,89,169,74,73,119,130,5.9,24.6,69,170,Typical Angina,False,0.6,False,Never,4.2,226,7.9,79.7,True,6129,63.6,0 +1558,58,Male,138,91,196,55,113,178,147,6.8,27.1,90,139,Non-Anginal Pain,False,1.8,False,Former,4.7,32,8.6,53.8,True,7637,67.9,1 +1559,37,Male,114,76,176,57,80,174,108,5.6,24.6,79,176,Atypical Angina,False,5.1,False,Former,2.0,68,6.6,64.2,False,6774,61.5,1 +1560,60,Male,136,74,165,62,70,126,97,5.2,22.3,66,170,Atypical Angina,True,0.7,True,Never,2.5,218,5.8,63.4,False,4496,79.3,0 +1561,54,Male,130,82,159,46,67,164,161,6.4,33.7,76,146,Asymptomatic,False,1.0,False,Never,15.5,0,6.7,35.8,False,3611,45.7,0 +1562,47,Male,127,84,115,49,62,102,178,6.8,26.1,78,187,Atypical Angina,False,0.8,False,Never,2.3,147,7.1,59.6,True,6532,100.0,0 +1563,35,Male,134,85,179,36,94,200,100,5.4,30.0,87,174,Atypical Angina,False,2.3,False,Current,2.7,41,5.1,86.6,False,5744,76.0,0 +1564,75,Female,150,97,211,46,128,178,148,6.4,29.8,97,124,Non-Anginal Pain,True,1.8,False,Former,0.9,21,3.8,47.9,False,3724,38.0,1 +1565,42,Male,125,80,210,49,122,220,141,6.7,29.3,93,151,Asymptomatic,True,0.6,True,Never,8.7,65,7.3,33.5,True,7196,21.7,1 +1566,28,Male,132,80,224,50,145,152,129,6.2,24.6,69,162,Non-Anginal Pain,True,2.1,True,Never,5.6,109,7.5,39.1,False,7135,68.7,1 +1567,65,Male,150,98,218,51,129,172,106,5.5,24.3,68,141,Atypical Angina,True,0.4,False,Former,43.9,217,7.0,49.1,False,4158,60.7,1 +1568,48,Male,132,84,211,52,116,187,145,6.8,31.2,79,153,Atypical Angina,True,0.8,False,Never,22.2,37,7.8,61.0,False,3884,68.0,1 +1569,69,Male,157,99,199,39,133,165,119,5.2,25.5,68,136,Non-Anginal Pain,False,0.3,False,Current,2.5,160,6.8,54.7,True,5906,61.5,1 +1570,53,Male,153,83,144,32,89,149,89,5.1,32.2,75,177,Asymptomatic,False,0.1,True,Former,6.6,105,7.9,52.5,False,3770,58.1,0 +1571,54,Male,117,84,198,62,102,174,112,5.6,23.7,75,147,Typical Angina,True,4.1,True,Former,4.6,150,7.3,18.7,True,6032,75.2,1 +1572,62,Male,127,87,149,69,57,155,86,4.7,20.4,65,158,Asymptomatic,False,0.7,False,Never,2.8,185,7.8,17.2,True,7050,68.5,0 +1573,55,Female,140,84,276,59,169,163,129,5.7,28.1,81,144,Atypical Angina,True,0.5,True,Former,4.6,88,7.3,43.9,False,5600,33.3,1 +1574,55,Male,153,91,173,61,92,124,165,7.8,34.0,90,151,Asymptomatic,False,0.1,False,Never,6.3,28,5.9,73.9,True,7207,52.8,1 +1575,68,Male,120,84,245,64,158,123,130,6.4,22.9,74,154,Non-Anginal Pain,False,2.3,False,Never,11.7,113,6.3,36.8,False,7482,64.3,1 +1576,42,Female,127,74,195,44,137,100,85,4.9,26.3,79,177,Atypical Angina,True,0.2,False,Never,11.7,98,6.2,53.6,False,6967,51.4,0 +1577,61,Female,155,94,158,55,71,140,94,5.0,26.8,74,156,Typical Angina,False,1.1,False,Never,17.7,207,9.5,51.6,True,6972,68.4,1 +1578,58,Female,148,105,185,47,105,170,134,6.4,26.5,96,157,Atypical Angina,True,1.9,True,Never,5.1,0,8.2,55.7,False,7834,39.0,1 +1579,33,Female,114,70,211,38,136,161,118,5.8,26.3,94,179,Asymptomatic,False,1.1,False,Current,3.1,69,8.7,41.0,True,5375,52.6,0 +1580,68,Female,130,74,159,55,82,68,123,5.9,29.5,66,157,Asymptomatic,False,0.8,False,Current,1.6,176,6.1,39.6,True,5502,63.8,0 +1581,64,Male,138,79,184,43,112,187,112,5.5,24.7,68,132,Non-Anginal Pain,False,5.8,False,Former,12.6,177,6.9,44.3,False,2334,54.7,1 +1582,74,Female,161,98,206,51,110,238,147,6.5,30.5,82,155,Atypical Angina,False,0.1,False,Former,8.9,108,6.8,49.3,False,500,37.2,0 +1583,48,Female,128,83,133,62,47,101,145,6.4,21.7,82,168,Non-Anginal Pain,False,0.5,True,Former,3.4,108,8.6,35.1,False,5915,68.7,0 +1584,40,Male,132,74,155,71,85,35,113,5.7,20.6,87,192,Asymptomatic,False,0.8,False,Never,4.3,129,4.8,65.4,True,5003,61.1,0 +1585,90,Female,153,98,153,38,92,165,186,7.7,27.3,94,132,Asymptomatic,True,0.3,False,Never,11.3,94,7.8,58.3,True,4248,45.7,1 +1586,41,Female,106,65,226,62,121,243,126,5.6,29.3,94,178,Asymptomatic,False,0.8,False,Current,4.6,212,7.6,51.4,True,9047,46.0,0 +1587,44,Male,121,86,123,44,70,73,112,5.5,21.9,90,138,Asymptomatic,False,1.4,False,Never,2.0,138,6.2,92.8,True,10090,43.8,1 +1588,61,Male,158,90,153,50,79,96,103,5.5,33.6,73,141,Non-Anginal Pain,False,0.7,False,Former,15.0,142,6.8,69.9,True,6863,39.2,1 +1589,48,Female,121,75,181,64,99,96,93,5.3,22.2,83,165,Asymptomatic,False,0.2,False,Current,1.1,228,7.5,65.9,True,7486,65.8,0 +1590,59,Male,145,75,204,53,121,69,133,6.2,24.4,83,162,Non-Anginal Pain,False,0.8,False,Never,1.9,212,6.6,46.3,True,5869,52.0,0 +1591,37,Female,108,66,160,54,98,97,151,6.8,20.1,86,203,Asymptomatic,True,2.2,True,Never,1.7,81,7.1,25.8,False,7555,76.8,0 +1592,32,Male,110,68,222,41,124,259,110,4.9,26.1,77,173,Asymptomatic,False,0.3,False,Never,2.1,33,6.1,56.2,False,4993,49.2,0 +1593,47,Female,122,74,203,58,104,145,171,7.4,26.6,85,159,Asymptomatic,False,1.0,False,Never,0.1,54,6.9,30.7,True,7861,64.4,0 +1594,63,Male,142,93,180,43,107,179,163,6.8,28.3,85,157,Non-Anginal Pain,False,0.6,False,Never,13.9,96,6.7,70.3,True,8659,45.9,0 +1595,54,Female,129,78,173,46,87,164,102,5.9,27.8,87,168,Non-Anginal Pain,False,0.2,False,Never,16.2,0,6.3,48.5,False,3486,52.3,0 +1596,70,Male,156,83,226,56,141,153,108,6.1,26.2,97,135,Asymptomatic,False,1.2,False,Current,6.2,84,6.3,57.8,True,6353,61.8,1 +1597,51,Male,148,91,153,50,81,166,113,5.6,28.2,74,175,Asymptomatic,False,0.4,False,Current,12.7,203,4.7,86.5,False,6288,63.1,0 +1598,56,Female,115,85,143,57,63,147,141,6.3,24.2,75,151,Asymptomatic,True,0.7,False,Never,1.3,151,7.9,39.4,False,1862,57.1,0 +1599,42,Female,118,77,210,48,121,176,113,6.0,25.7,70,160,Asymptomatic,False,3.1,True,Former,1.2,149,7.8,58.0,True,9992,60.4,0 +1600,35,Female,116,75,167,60,94,159,96,5.2,29.5,78,183,Atypical Angina,False,0.7,False,Never,2.9,218,4.4,25.6,True,8580,34.3,0 +1601,38,Female,119,84,136,59,45,174,114,5.4,25.7,79,190,Asymptomatic,False,1.1,False,Current,1.6,171,7.0,57.6,False,5188,80.4,0 +1602,44,Male,131,80,190,69,82,196,106,5.0,19.6,85,169,Typical Angina,False,0.2,False,Former,10.1,251,5.0,70.5,True,7919,77.9,0 +1603,80,Male,144,94,227,58,121,237,149,6.9,28.1,73,128,Typical Angina,False,1.1,False,Never,6.4,70,8.5,56.3,True,4679,48.8,1 +1604,37,Male,96,53,199,64,109,177,113,5.8,24.5,64,184,Asymptomatic,False,0.4,False,Never,4.8,71,6.4,41.7,False,7053,88.6,0 +1605,43,Female,136,77,205,66,116,132,109,5.8,23.2,80,168,Non-Anginal Pain,False,0.6,True,Never,0.2,147,7.7,51.8,False,3988,50.1,1 +1606,72,Female,136,87,196,50,121,118,90,5.0,34.2,82,132,Asymptomatic,False,0.6,False,Never,2.3,25,5.8,65.8,False,3821,58.3,1 +1607,45,Male,144,88,189,50,93,227,146,6.8,27.5,83,158,Asymptomatic,True,0.1,False,Current,7.6,132,7.0,39.5,False,3475,50.5,1 +1608,62,Male,116,82,219,62,137,136,132,6.6,23.4,93,149,Asymptomatic,False,0.2,False,Former,5.0,102,6.2,39.9,False,6561,87.5,0 +1609,24,Male,136,78,167,50,80,151,135,6.2,25.0,82,193,Asymptomatic,False,1.6,False,Former,16.1,101,7.0,55.2,False,6257,62.4,0 +1610,41,Male,124,73,196,33,109,250,102,5.7,30.9,75,169,Non-Anginal Pain,False,0.9,False,Former,20.3,81,6.3,43.0,True,7825,68.7,0 +1611,61,Male,151,96,239,67,114,266,113,4.8,30.0,83,185,Atypical Angina,False,0.5,False,Former,7.2,163,6.8,27.7,False,4904,70.1,0 +1612,32,Male,109,77,186,52,115,128,107,6.4,27.4,79,168,Asymptomatic,False,0.4,True,Current,1.6,76,7.0,27.4,True,7619,58.5,0 +1613,56,Male,114,67,152,71,67,68,83,4.6,19.1,77,163,Asymptomatic,False,0.8,False,Never,3.9,199,7.3,43.1,True,6300,78.5,0 +1614,54,Male,152,92,125,39,79,100,119,5.8,21.8,89,147,Asymptomatic,False,1.4,True,Never,7.1,85,5.1,82.3,False,3958,57.2,1 +1615,47,Female,115,72,220,71,134,138,101,5.3,18.8,85,164,Asymptomatic,False,1.5,False,Never,0.5,129,7.5,28.2,False,5881,37.6,0 +1616,50,Male,121,93,173,51,85,177,84,5.5,22.9,86,168,Non-Anginal Pain,False,0.3,False,Former,2.7,118,7.7,51.5,False,5136,73.8,0 +1617,63,Male,138,76,152,44,75,137,151,7.3,27.0,93,138,Asymptomatic,False,0.7,False,Never,1.6,34,7.3,44.8,True,6747,100.0,0 +1618,53,Male,131,77,218,38,153,117,154,6.4,24.5,65,177,Asymptomatic,False,0.1,False,Former,3.1,37,6.4,43.6,False,5013,51.6,0 +1619,67,Female,120,75,223,59,113,225,125,6.1,27.4,83,159,Asymptomatic,False,0.7,False,Never,4.5,115,5.7,53.5,False,3689,61.7,0 +1620,64,Male,137,85,205,62,102,170,121,5.1,24.9,90,135,Asymptomatic,False,0.5,False,Former,5.7,52,7.0,53.6,False,1235,50.6,0 +1621,74,Female,128,82,215,54,115,144,156,6.7,21.9,105,135,Asymptomatic,True,1.0,False,Never,4.9,29,6.7,55.7,False,3369,46.5,0 +1622,48,Female,129,89,199,55,100,163,148,7.1,30.6,83,167,Atypical Angina,False,0.5,True,Never,20.6,185,7.0,51.1,False,7721,74.3,1 +1623,56,Female,126,79,250,54,168,118,112,6.0,29.2,91,187,Atypical Angina,False,0.7,False,Never,8.4,84,7.6,49.5,False,6199,43.6,0 +1624,40,Female,141,82,195,58,95,206,147,6.4,35.3,80,191,Atypical Angina,False,0.4,False,Never,0.2,168,6.6,36.1,False,6119,54.6,0 +1625,62,Male,118,76,186,60,87,123,118,5.4,26.7,78,147,Typical Angina,False,0.8,False,Never,3.1,164,6.6,45.1,False,7526,35.5,0 +1626,45,Female,130,78,197,65,109,102,101,4.7,21.1,75,184,Typical Angina,False,1.3,False,Former,0.6,151,5.5,56.1,False,7457,61.5,0 +1627,62,Male,132,81,180,43,97,146,110,4.6,26.7,80,168,Asymptomatic,False,1.8,False,Former,2.1,171,6.3,76.9,False,5836,56.7,0 +1628,50,Female,132,94,215,59,127,154,123,5.7,26.9,76,181,Atypical Angina,False,0.2,False,Former,2.6,95,6.2,39.1,False,6166,60.3,0 +1629,52,Female,124,74,188,53,116,136,152,6.6,31.8,72,182,Asymptomatic,False,0.9,False,Never,18.7,113,5.7,28.8,True,8610,50.9,0 +1630,57,Male,138,85,182,60,81,196,146,6.9,18.9,80,157,Non-Anginal Pain,False,0.7,True,Former,8.6,113,7.0,67.2,True,5863,60.9,0 +1631,44,Male,118,84,215,55,114,164,127,5.4,22.3,91,207,Non-Anginal Pain,False,2.3,False,Never,8.3,219,7.7,44.7,True,9907,50.7,0 +1632,45,Female,142,84,231,67,133,184,101,5.7,25.9,92,174,Typical Angina,True,0.9,False,Former,7.8,132,6.9,47.6,True,5140,57.4,0 +1633,46,Male,134,79,179,56,94,158,117,6.4,26.1,95,164,Asymptomatic,True,0.7,False,Never,2.2,5,7.5,46.1,False,6293,11.5,0 +1634,47,Female,129,82,166,66,68,173,117,5.6,27.6,80,162,Asymptomatic,False,1.0,False,Never,2.0,130,8.2,24.7,False,8299,62.6,0 +1635,62,Male,115,77,174,38,98,202,128,5.8,29.7,84,155,Typical Angina,False,0.8,False,Never,3.8,136,9.0,60.4,True,7660,32.9,0 +1636,49,Male,102,50,158,47,79,153,114,5.6,24.4,94,185,Asymptomatic,False,0.6,False,Never,3.5,102,8.7,66.7,False,4008,51.6,0 +1637,46,Male,127,88,181,53,102,144,94,5.5,28.8,84,172,Asymptomatic,False,1.2,False,Never,16.4,199,6.1,36.4,False,7481,67.9,1 +1638,65,Female,123,74,151,52,88,103,97,5.5,22.3,69,151,Asymptomatic,False,1.0,True,Never,14.2,129,7.2,22.9,True,3761,70.3,0 +1639,63,Male,131,67,158,35,99,143,127,5.7,25.7,85,168,Asymptomatic,False,1.3,False,Never,3.7,110,6.8,49.9,False,7074,52.4,0 +1640,52,Female,137,79,198,70,111,107,116,5.8,27.1,92,168,Asymptomatic,False,0.5,True,Current,8.0,171,6.2,44.8,True,7738,51.1,0 +1641,86,Male,134,89,200,58,98,173,81,4.8,25.8,74,139,Asymptomatic,False,0.8,True,Former,6.5,157,8.3,47.1,False,3291,47.2,0 +1642,40,Female,124,74,144,44,93,49,135,6.0,28.5,69,175,Asymptomatic,False,1.7,False,Current,2.3,126,6.7,64.0,False,4901,63.6,0 +1643,75,Male,109,69,149,42,102,61,142,5.9,23.4,77,181,Atypical Angina,False,0.4,False,Current,8.6,71,6.2,55.7,True,7993,76.1,0 +1644,57,Female,119,78,209,62,112,110,107,5.4,26.6,76,155,Non-Anginal Pain,False,2.1,False,Former,9.9,150,8.3,58.7,False,5927,58.5,0 +1645,67,Female,130,93,242,69,132,197,141,5.5,33.7,74,148,Asymptomatic,True,1.0,True,Former,0.2,100,6.9,22.4,False,4847,68.6,1 +1646,50,Male,136,88,161,60,69,167,141,6.6,27.4,76,144,Atypical Angina,False,2.2,False,Never,6.9,157,6.7,81.2,True,7847,70.5,1 +1647,69,Female,127,76,200,48,135,126,114,5.9,24.4,69,163,Asymptomatic,True,1.8,False,Never,1.3,151,6.2,22.3,True,4524,54.0,0 +1648,41,Female,122,82,160,36,108,107,140,6.5,15.1,84,185,Asymptomatic,False,1.5,True,Never,4.3,144,7.1,23.4,True,5863,60.5,0 +1649,64,Female,124,87,257,50,156,196,74,4.7,23.9,57,158,Asymptomatic,True,0.8,False,Former,5.5,194,6.0,37.8,True,5415,48.4,1 +1650,57,Female,150,91,152,28,88,179,119,6.1,28.7,78,150,Asymptomatic,True,0.6,False,Former,0.5,67,4.5,48.9,False,6496,43.8,1 +1651,65,Male,130,81,158,37,112,35,144,6.3,29.5,82,162,Atypical Angina,False,0.4,False,Never,2.7,105,7.3,64.3,False,5804,49.7,0 +1652,48,Female,140,82,181,51,115,66,143,6.4,26.0,77,160,Atypical Angina,False,0.3,False,Former,3.1,92,6.9,56.6,False,2679,73.9,1 +1653,59,Female,121,76,175,47,94,163,106,5.4,31.8,94,127,Asymptomatic,False,0.6,False,Never,5.2,63,5.6,69.4,False,6081,69.5,0 +1654,44,Female,133,91,116,61,37,51,80,4.7,20.0,78,183,Non-Anginal Pain,True,0.1,False,Never,1.7,192,5.3,55.8,True,6321,55.4,0 +1655,49,Female,126,86,148,52,101,57,136,6.5,27.6,96,154,Asymptomatic,False,0.7,False,Never,2.4,130,7.0,58.1,True,8227,61.7,0 +1656,51,Male,131,68,164,50,103,118,135,5.4,25.3,92,189,Typical Angina,False,0.2,False,Never,5.0,51,7.4,49.7,False,7438,52.9,0 +1657,46,Male,121,80,187,73,80,178,181,7.4,29.4,97,131,Atypical Angina,True,0.1,True,Former,7.0,64,6.1,50.2,True,4908,72.0,0 +1658,47,Male,105,62,197,55,97,190,87,5.1,23.6,83,183,Asymptomatic,False,3.1,False,Former,2.5,183,6.7,63.3,False,9116,48.2,0 +1659,38,Male,126,81,191,72,90,215,125,5.8,27.9,95,190,Asymptomatic,False,0.2,False,Never,12.3,93,6.5,66.0,False,4054,69.5,0 +1660,52,Male,111,73,152,50,77,216,140,6.5,28.8,78,187,Non-Anginal Pain,False,1.0,False,Never,6.1,129,9.4,37.8,True,6933,58.9,0 +1661,73,Female,120,74,207,75,90,211,116,5.8,24.6,70,149,Asymptomatic,False,1.1,True,Never,2.2,125,7.6,36.7,False,5625,54.7,0 +1662,90,Female,151,107,183,41,95,223,157,6.8,33.6,86,150,Non-Anginal Pain,False,0.9,False,Never,0.4,73,8.4,58.9,False,4501,62.1,0 +1663,43,Female,128,82,156,34,97,154,149,6.9,26.1,89,177,Asymptomatic,True,1.9,False,Current,2.2,40,4.2,47.4,False,8396,48.3,1 +1664,44,Female,144,91,209,58,121,210,106,5.3,29.4,94,190,Asymptomatic,False,0.2,True,Never,2.6,105,6.5,58.4,False,6120,21.4,0 +1665,58,Male,123,88,205,50,126,159,155,6.4,21.7,81,145,Asymptomatic,False,0.3,True,Never,5.2,25,5.9,55.0,True,8856,56.2,1 +1666,60,Male,145,103,150,43,70,163,113,5.5,26.6,99,177,Asymptomatic,False,0.2,False,Former,11.5,98,6.8,80.6,False,6021,69.5,0 +1667,37,Female,94,50,161,40,76,227,154,6.4,24.5,83,192,Asymptomatic,False,0.5,False,Current,1.4,129,6.6,29.2,True,7738,64.1,0 +1668,24,Male,136,81,200,62,113,137,72,4.5,27.1,80,206,Typical Angina,True,1.0,False,Never,3.6,229,8.3,32.6,False,5828,83.5,0 +1669,57,Male,149,96,169,53,83,161,107,5.0,27.8,87,167,Asymptomatic,False,0.6,False,Never,27.0,89,4.6,51.1,False,3699,48.7,0 +1670,71,Female,139,92,228,50,148,150,167,7.0,35.1,102,145,Non-Anginal Pain,False,3.2,False,Never,4.0,38,7.2,59.0,True,5055,51.3,1 +1671,72,Female,124,77,190,52,111,198,132,5.9,31.4,81,140,Asymptomatic,False,1.8,False,Never,1.0,69,7.7,59.8,False,1810,53.1,1 +1672,54,Female,119,81,146,49,62,169,105,5.4,21.4,85,155,Atypical Angina,True,0.6,False,Never,1.0,128,8.4,33.7,False,6001,73.8,0 +1673,72,Male,137,81,229,55,117,247,152,6.2,20.2,78,122,Asymptomatic,True,0.2,False,Current,3.3,61,8.0,62.3,False,3816,60.8,1 +1674,52,Male,130,78,195,54,106,159,114,5.8,22.4,88,177,Asymptomatic,False,1.0,False,Never,8.5,156,7.6,43.6,False,5205,69.8,0 +1675,36,Male,133,76,179,55,112,114,134,5.9,18.3,86,189,Atypical Angina,False,0.2,True,Former,3.4,122,5.7,40.2,False,5549,44.3,0 +1676,52,Female,118,80,203,59,112,130,102,5.1,26.7,83,177,Asymptomatic,True,0.1,False,Former,0.3,181,8.3,16.6,False,6594,44.0,0 +1677,67,Male,148,83,194,52,104,176,112,6.0,31.5,79,132,Typical Angina,True,0.5,True,Current,7.9,45,4.8,47.2,False,4161,51.6,1 +1678,56,Female,138,81,203,60,114,101,112,5.9,24.9,86,144,Atypical Angina,False,0.3,True,Never,5.9,56,6.3,55.4,True,4094,58.3,1 +1679,47,Male,163,99,222,78,94,246,140,6.4,33.1,65,165,Atypical Angina,False,1.2,False,Never,18.0,145,6.3,34.1,False,3414,60.9,1 +1680,55,Male,144,96,104,66,44,52,124,6.0,22.5,81,133,Asymptomatic,True,1.5,True,Never,1.8,91,4.3,47.3,False,5137,52.5,1 +1681,58,Female,134,86,224,90,113,106,108,5.2,28.4,82,169,Atypical Angina,False,0.1,False,Never,2.9,247,6.4,12.5,True,7278,63.4,0 +1682,56,Male,119,69,203,41,129,186,113,6.1,24.8,66,144,Non-Anginal Pain,False,1.0,False,Former,6.7,96,7.3,42.9,True,9607,60.9,1 +1683,58,Male,137,93,222,64,125,150,108,5.1,23.3,74,189,Non-Anginal Pain,False,1.3,True,Current,6.7,199,8.2,52.0,False,3297,58.0,0 +1684,59,Male,105,71,168,29,87,199,118,5.7,26.2,86,172,Typical Angina,True,2.0,False,Never,9.9,162,8.1,49.5,True,6501,54.2,1 +1685,68,Female,138,101,203,61,104,217,132,5.9,24.4,79,153,Asymptomatic,False,0.3,False,Former,16.8,137,7.1,45.2,False,2765,74.7,0 +1686,56,Male,127,75,236,68,127,157,121,6.1,22.5,87,154,Asymptomatic,False,1.4,False,Never,32.2,116,8.9,58.5,False,7371,42.2,0 +1687,52,Male,131,80,184,70,75,202,132,5.8,23.0,85,193,Asymptomatic,True,0.9,True,Never,1.7,225,7.5,40.0,True,9794,95.0,0 +1688,59,Male,127,86,245,42,133,355,119,6.2,35.5,70,150,Non-Anginal Pain,False,0.1,False,Former,4.0,47,7.7,30.4,True,6097,78.5,1 +1689,62,Female,131,68,213,72,119,162,104,5.8,17.7,76,155,Atypical Angina,False,0.8,False,Never,0.8,226,7.8,34.5,True,5556,69.4,0 +1690,31,Male,113,63,182,61,99,92,87,4.6,17.2,80,168,Non-Anginal Pain,False,1.1,True,Former,10.5,175,8.9,37.2,True,9862,76.3,0 +1691,69,Female,129,74,197,71,106,146,85,4.4,25.7,75,149,Atypical Angina,False,0.7,False,Former,5.0,194,7.8,41.2,True,6134,75.1,0 +1692,76,Male,169,104,198,50,100,194,99,5.4,30.4,91,129,Atypical Angina,True,0.2,False,Former,5.7,111,6.9,80.6,False,3576,62.1,1 +1693,54,Male,121,67,192,55,137,85,116,5.6,29.6,86,173,Asymptomatic,False,0.1,False,Former,1.9,222,5.8,66.2,False,5746,75.5,0 +1694,62,Female,126,74,209,65,125,126,117,6.0,24.2,66,177,Non-Anginal Pain,False,0.4,True,Never,8.4,151,8.0,40.4,False,6598,72.3,0 +1695,44,Male,123,70,179,72,66,178,79,4.5,21.8,67,181,Atypical Angina,False,0.1,True,Former,4.9,226,9.3,45.9,True,7007,61.3,0 +1696,63,Male,117,85,187,46,112,200,106,5.0,24.3,96,147,Asymptomatic,False,0.6,True,Current,7.5,160,5.2,48.9,False,7123,49.3,1 +1697,43,Male,107,65,169,48,81,199,113,5.8,27.1,79,176,Non-Anginal Pain,False,1.0,False,Never,5.1,145,7.1,19.5,False,4806,44.3,0 +1698,56,Male,120,63,254,73,135,199,140,6.2,29.5,60,182,Typical Angina,False,0.4,False,Never,6.1,207,6.7,27.8,False,3804,66.3,0 +1699,61,Male,139,100,177,55,96,168,132,6.0,23.2,86,156,Atypical Angina,False,0.4,True,Never,4.4,87,6.0,72.2,False,5768,41.0,0 +1700,44,Male,126,75,125,51,35,151,111,5.1,29.1,68,188,Non-Anginal Pain,False,0.6,False,Never,1.8,175,6.8,72.9,False,5967,47.8,0 +1701,40,Male,131,87,221,70,112,172,126,5.9,26.6,78,179,Asymptomatic,False,0.2,False,Current,1.6,167,4.8,60.2,False,4649,61.3,0 +1702,49,Female,115,71,203,54,111,167,153,6.5,30.9,70,164,Typical Angina,False,0.5,False,Former,1.0,212,8.7,43.9,True,4868,70.4,0 +1703,47,Female,130,89,191,56,109,118,107,5.6,24.7,84,175,Asymptomatic,False,2.9,False,Never,1.4,123,8.2,58.6,False,5805,45.8,0 +1704,50,Female,142,88,157,31,96,89,127,6.1,28.1,95,161,Asymptomatic,False,0.1,False,Never,0.0,58,7.1,47.1,False,2684,53.7,0 +1705,40,Female,124,75,154,54,83,111,118,5.6,28.3,99,196,Asymptomatic,False,0.7,False,Never,0.5,79,7.2,61.8,False,4851,87.6,0 +1706,68,Female,118,62,188,49,114,85,102,5.5,24.7,94,137,Typical Angina,True,0.1,False,Current,7.8,126,6.7,42.7,False,5846,70.2,1 +1707,50,Male,136,85,144,34,57,299,138,6.5,30.9,87,172,Atypical Angina,False,0.6,False,Current,10.6,147,7.6,40.1,True,3204,39.2,1 +1708,60,Male,116,83,189,60,85,201,118,5.7,21.6,89,133,Typical Angina,True,1.6,False,Never,6.6,134,6.5,43.0,False,5902,72.3,1 +1709,33,Male,127,88,183,23,126,160,130,6.5,33.9,90,200,Asymptomatic,False,0.2,False,Never,4.3,0,6.9,51.8,False,4733,54.5,0 +1710,46,Male,122,81,146,26,91,140,120,6.0,29.5,95,180,Asymptomatic,False,0.5,True,Former,1.5,111,6.7,57.2,True,6516,83.0,1 +1711,75,Female,134,83,168,47,86,186,162,6.9,23.6,66,151,Atypical Angina,False,4.7,False,Never,7.0,106,8.8,73.5,True,4144,46.8,0 +1712,43,Male,122,96,164,61,68,175,109,5.4,26.6,84,183,Asymptomatic,False,1.1,False,Never,7.8,195,5.7,39.7,True,6958,61.9,0 +1713,58,Male,120,86,204,62,106,145,87,5.4,30.7,83,155,Asymptomatic,False,1.4,False,Former,2.6,196,6.6,29.3,True,8142,91.4,1 +1714,81,Male,146,92,201,49,123,133,148,6.5,36.2,111,113,Non-Anginal Pain,True,1.6,False,Current,2.2,0,6.8,83.7,False,4384,42.0,1 +1715,54,Male,114,73,190,34,118,176,89,5.0,23.7,84,137,Atypical Angina,True,4.1,False,Current,2.0,136,6.3,32.7,True,10145,68.8,1 +1716,73,Male,166,112,210,42,154,44,122,5.6,23.5,98,144,Asymptomatic,True,4.4,False,Never,17.1,115,7.7,73.5,False,8733,47.0,1 +1717,42,Male,123,77,211,52,125,170,123,6.2,22.9,73,172,Asymptomatic,False,0.6,False,Never,2.1,181,7.0,39.1,True,7588,50.8,0 +1718,48,Female,138,92,221,59,146,128,89,4.6,18.3,82,168,Asymptomatic,False,1.0,False,Former,8.9,167,7.0,61.2,True,7920,42.9,0 +1719,53,Female,130,73,147,52,74,143,145,6.6,24.4,99,150,Non-Anginal Pain,False,3.9,True,Former,1.9,7,5.7,37.7,True,6436,34.7,1 +1720,47,Male,127,84,214,52,128,198,151,6.9,36.0,94,164,Asymptomatic,False,1.2,True,Former,14.8,183,5.5,41.8,True,8883,72.8,1 +1721,58,Male,104,61,174,37,103,169,143,6.3,28.7,92,191,Asymptomatic,False,1.6,False,Current,3.5,164,6.8,33.4,True,5691,64.8,0 +1722,31,Male,132,76,177,49,97,151,122,5.9,25.0,84,191,Asymptomatic,False,0.6,False,Current,7.2,167,6.8,44.9,False,8167,60.0,0 +1723,40,Male,119,79,198,45,142,132,103,5.1,29.2,83,171,Asymptomatic,False,0.9,False,Never,3.8,109,7.0,67.6,False,7944,62.8,0 +1724,71,Female,155,100,149,36,98,68,140,6.1,23.9,86,131,Asymptomatic,False,0.2,False,Current,9.4,102,7.8,54.8,True,5238,42.6,0 +1725,55,Female,128,76,211,66,117,143,84,4.3,18.8,79,181,Asymptomatic,False,1.7,True,Former,3.6,257,6.4,47.9,False,4485,56.7,0 +1726,60,Female,111,74,131,64,53,38,108,5.5,19.6,88,139,Asymptomatic,False,0.9,False,Current,9.1,108,5.9,56.2,False,6369,78.1,0 +1727,76,Male,109,81,210,36,144,118,128,6.7,19.9,74,133,Asymptomatic,False,2.6,True,Never,5.5,0,5.9,26.7,False,500,35.8,1 +1728,31,Female,104,63,181,54,100,103,63,4.1,24.1,79,193,Atypical Angina,False,0.4,False,Never,12.6,174,6.8,56.4,False,7695,63.9,0 +1729,18,Male,94,65,172,52,82,184,108,5.5,16.2,76,210,Asymptomatic,False,1.8,False,Former,4.3,174,6.5,61.2,True,4607,61.6,0 +1730,77,Male,135,91,150,63,58,126,122,5.5,17.0,82,147,Asymptomatic,False,0.3,False,Never,10.3,75,7.5,43.8,False,5405,57.0,0 +1731,36,Male,103,72,123,48,52,83,140,6.0,18.8,74,172,Non-Anginal Pain,False,1.2,False,Former,5.6,157,7.6,57.2,False,3700,61.0,0 +1732,55,Male,144,97,211,34,120,230,144,6.7,32.6,81,181,Asymptomatic,False,0.9,False,Never,14.5,107,5.5,41.6,False,7320,50.0,0 +1733,33,Female,93,53,230,79,93,249,77,4.0,15.3,62,192,Asymptomatic,False,0.2,False,Former,7.7,161,7.2,43.2,True,4236,53.7,0 +1734,21,Female,136,93,179,38,105,198,119,5.7,31.4,78,208,Non-Anginal Pain,False,1.2,True,Current,5.8,131,6.3,59.3,False,7427,33.8,0 +1735,53,Male,131,82,178,61,76,199,83,5.2,20.6,93,183,Non-Anginal Pain,False,2.7,False,Never,7.2,155,7.3,45.3,True,5794,69.9,0 +1736,60,Female,121,76,163,55,83,90,118,5.2,20.1,80,164,Asymptomatic,False,2.3,False,Current,5.9,172,7.5,21.5,False,5674,65.2,0 +1737,43,Male,128,85,170,32,96,208,135,6.0,27.3,90,148,Asymptomatic,False,0.7,False,Former,2.7,174,6.0,30.8,True,9432,38.4,1 +1738,21,Male,126,83,185,57,86,196,95,5.0,23.3,74,210,Atypical Angina,False,0.9,False,Never,1.8,220,7.6,21.8,True,8655,51.5,0 +1739,58,Male,135,87,231,52,156,121,114,5.9,22.0,84,193,Atypical Angina,False,2.0,False,Never,7.0,70,5.6,51.1,False,4965,60.5,0 +1740,78,Male,125,74,173,39,108,107,135,6.3,23.9,85,136,Asymptomatic,True,1.4,True,Never,2.1,172,7.6,43.3,True,8698,48.3,1 +1741,31,Male,117,87,228,53,116,234,129,6.0,24.4,74,183,Asymptomatic,True,2.8,False,Never,12.2,192,7.4,29.1,False,7464,63.1,1 +1742,64,Male,140,95,209,74,82,173,131,6.1,22.5,82,150,Atypical Angina,False,1.8,False,Former,5.5,73,8.3,66.2,False,3894,62.3,0 +1743,57,Female,143,92,167,75,82,59,134,5.9,22.8,76,158,Asymptomatic,False,0.7,False,Former,0.2,116,8.8,63.9,True,5932,62.6,0 +1744,30,Male,98,69,147,56,60,128,108,5.6,17.2,83,199,Asymptomatic,False,0.5,False,Never,2.7,152,8.1,44.2,True,5735,69.0,0 +1745,67,Female,129,80,199,61,122,72,92,5.0,21.5,79,131,Asymptomatic,False,0.7,False,Never,0.0,127,7.5,54.6,True,4764,44.8,0 +1746,56,Male,133,75,219,49,123,188,156,6.8,27.1,86,152,Asymptomatic,True,1.0,True,Current,13.5,126,5.2,28.2,False,6341,46.0,1 +1747,52,Male,120,81,204,65,100,156,93,5.6,28.1,90,164,Typical Angina,True,0.4,False,Former,2.0,150,6.2,38.8,False,6443,41.2,1 +1748,70,Female,135,82,175,33,109,174,140,6.7,28.6,78,138,Non-Anginal Pain,False,0.6,False,Former,4.5,25,8.3,69.6,False,2107,56.0,1 +1749,54,Female,124,78,199,38,120,198,142,6.8,30.5,91,158,Asymptomatic,False,0.0,False,Current,4.2,77,5.0,48.0,False,4853,71.9,0 +1750,70,Female,125,75,197,44,119,161,147,6.3,30.6,90,149,Asymptomatic,True,2.9,True,Former,6.5,143,5.5,46.7,True,6576,63.0,1 +1751,88,Male,145,91,228,80,118,160,155,7.1,23.2,81,128,Non-Anginal Pain,True,0.4,False,Never,2.6,72,6.7,46.9,False,3273,51.2,1 +1752,57,Female,129,79,189,46,114,177,174,7.1,29.9,76,167,Asymptomatic,False,0.9,True,Never,3.1,120,8.1,53.7,False,3511,59.3,0 +1753,59,Female,113,58,276,85,167,177,84,4.8,19.3,82,178,Asymptomatic,False,1.0,False,Current,3.0,274,6.8,34.7,True,9030,71.4,0 +1754,46,Male,138,81,176,53,81,181,157,7.0,21.1,86,155,Non-Anginal Pain,True,0.2,False,Never,10.3,185,6.0,72.1,True,7591,79.4,1 +1755,74,Female,107,66,170,48,92,108,115,5.2,18.5,88,153,Asymptomatic,False,0.3,False,Former,2.2,166,4.7,19.1,False,8352,46.5,0 +1756,38,Female,110,64,188,63,97,121,106,6.2,28.4,100,188,Asymptomatic,True,0.2,True,Current,0.8,17,6.0,83.6,False,3378,53.1,0 +1757,47,Female,101,62,165,60,93,53,109,5.8,20.5,97,168,Asymptomatic,False,0.6,True,Never,0.4,25,5.8,49.5,False,2666,54.7,0 +1758,53,Male,122,67,147,39,89,125,79,4.5,23.8,78,185,Non-Anginal Pain,False,0.7,False,Former,1.9,213,6.7,22.5,True,10934,46.2,0 +1759,52,Female,128,74,127,58,56,138,112,5.9,24.6,81,183,Asymptomatic,False,0.9,False,Never,12.1,213,8.1,51.4,False,4283,67.6,0 +1760,45,Male,123,64,143,30,73,237,142,5.9,27.6,88,175,Asymptomatic,False,0.3,True,Current,2.1,159,7.1,47.8,True,9955,52.9,0 +1761,65,Female,132,87,167,71,70,111,140,6.2,24.5,85,158,Atypical Angina,False,3.7,False,Never,2.3,66,5.4,46.9,True,6556,70.4,0 +1762,50,Male,115,72,126,65,52,101,113,5.6,23.4,69,183,Non-Anginal Pain,False,1.2,False,Former,2.2,179,8.2,67.8,True,4808,87.8,0 +1763,26,Female,102,58,167,72,67,124,105,6.1,19.9,80,184,Asymptomatic,False,0.1,True,Current,2.8,152,5.3,40.4,True,4690,52.9,0 +1764,69,Female,147,87,218,45,101,390,157,6.5,41.2,87,150,Atypical Angina,False,4.0,False,Never,27.2,65,6.5,28.1,False,6721,59.5,1 +1765,76,Male,144,87,130,44,64,66,141,6.2,27.9,84,130,Asymptomatic,False,0.6,False,Never,2.2,45,8.5,62.9,True,1705,66.0,1 +1766,47,Female,118,82,200,85,101,137,112,5.7,31.6,102,182,Asymptomatic,False,0.2,False,Current,1.0,229,7.2,38.9,False,5180,57.8,0 +1767,72,Female,136,73,117,62,47,63,137,6.6,26.4,77,149,Non-Anginal Pain,False,0.9,True,Never,2.3,125,5.9,19.0,False,3602,63.6,0 +1768,47,Male,123,76,194,57,111,118,118,5.6,16.5,77,174,Atypical Angina,False,2.0,True,Never,2.3,174,7.4,56.6,True,6858,77.1,0 +1769,41,Male,122,77,193,60,100,117,107,5.5,22.8,67,172,Asymptomatic,False,1.2,True,Never,2.3,197,7.1,53.4,True,7890,62.9,0 +1770,42,Male,132,74,220,45,149,192,134,6.4,28.1,86,154,Asymptomatic,True,0.9,False,Never,3.3,53,6.6,58.8,True,5030,71.9,1 +1771,75,Male,121,83,179,53,117,35,155,6.4,21.7,99,121,Asymptomatic,True,1.7,True,Former,6.7,85,8.5,74.5,True,6108,62.8,1 +1772,72,Female,131,83,231,56,148,179,158,6.7,27.7,81,135,Asymptomatic,True,4.0,False,Never,1.1,189,6.8,32.8,True,6789,50.9,1 +1773,63,Male,133,81,221,60,131,132,77,4.7,24.5,83,189,Asymptomatic,False,1.5,False,Never,11.1,139,8.4,62.5,True,4891,71.0,0 +1774,41,Female,123,81,224,75,93,215,132,6.4,20.2,80,192,Atypical Angina,False,0.6,False,Never,4.9,197,6.3,26.4,True,5480,61.1,0 +1775,64,Female,121,80,188,53,107,104,100,4.8,20.8,92,165,Atypical Angina,True,1.0,True,Never,2.3,50,6.0,41.6,False,4951,27.5,0 +1776,40,Female,135,78,121,59,43,130,112,5.2,27.3,81,177,Asymptomatic,False,0.5,False,Former,1.5,196,7.7,60.3,True,5059,69.9,0 +1777,62,Male,134,79,214,45,134,166,150,6.4,25.5,86,133,Non-Anginal Pain,False,1.1,False,Never,5.3,153,8.1,30.4,True,8042,54.9,1 +1778,47,Female,118,72,153,62,85,51,138,5.7,23.9,85,182,Non-Anginal Pain,False,0.5,False,Never,1.4,155,9.1,27.7,False,6669,74.0,0 +1779,47,Female,127,80,166,66,86,35,122,5.9,18.7,84,187,Typical Angina,False,1.1,True,Never,10.3,178,6.5,56.9,True,5494,71.1,0 +1780,47,Female,125,96,206,72,99,122,101,5.5,21.5,70,185,Atypical Angina,False,0.0,False,Current,0.6,235,7.3,22.7,True,7803,62.2,0 +1781,27,Male,136,79,161,39,95,150,97,5.4,30.5,83,195,Asymptomatic,False,3.1,False,Never,2.8,131,8.0,41.2,False,8304,44.5,0 +1782,31,Female,111,55,227,42,142,226,160,6.7,33.8,84,170,Typical Angina,False,2.7,True,Current,6.8,132,7.4,65.3,False,5714,43.4,1 +1783,52,Female,126,94,245,59,146,201,138,6.4,31.6,77,173,Asymptomatic,False,0.6,False,Never,0.1,115,7.3,25.3,False,5170,59.0,0 +1784,40,Male,133,89,188,49,120,73,137,6.4,29.4,86,182,Non-Anginal Pain,True,0.1,True,Never,4.4,186,7.9,33.7,False,5771,41.2,0 +1785,65,Female,124,89,181,57,96,121,159,7.4,21.5,75,146,Asymptomatic,True,2.0,True,Former,2.4,57,8.3,42.9,False,5836,52.9,1 +1786,69,Male,122,90,238,54,147,142,175,6.4,24.7,73,129,Non-Anginal Pain,True,1.1,False,Never,1.7,78,9.3,22.9,True,3543,63.2,1 +1787,34,Male,122,79,218,68,105,177,139,6.0,27.6,85,201,Atypical Angina,False,0.3,False,Never,5.2,157,6.9,29.4,True,9231,91.3,0 +1788,34,Female,119,81,156,53,87,51,111,5.6,23.0,84,170,Atypical Angina,False,1.4,False,Former,1.8,123,7.2,57.2,False,6921,63.2,0 +1789,52,Female,135,80,185,56,68,223,124,5.6,28.0,76,138,Atypical Angina,True,2.7,False,Never,6.1,167,6.2,36.9,True,8712,71.2,1 +1790,79,Female,126,83,204,58,124,103,165,7.2,24.5,93,133,Asymptomatic,True,2.1,True,Never,4.2,67,8.0,20.0,False,4694,66.0,1 +1791,44,Male,125,66,187,34,153,136,104,5.5,36.9,104,149,Non-Anginal Pain,True,0.7,False,Current,2.6,147,8.0,75.9,True,5765,57.6,1 +1792,60,Male,144,108,224,61,127,215,142,6.2,29.1,85,175,Asymptomatic,False,1.3,False,Former,3.8,206,6.5,51.5,True,5507,59.7,0 +1793,32,Male,105,70,187,53,101,102,129,6.3,21.2,81,208,Non-Anginal Pain,False,0.7,False,Never,8.7,184,5.5,57.9,False,9443,77.0,0 +1794,42,Female,106,68,198,56,100,119,149,6.6,25.6,83,163,Typical Angina,False,0.4,True,Never,1.1,9,9.2,49.6,False,3715,75.9,1 +1795,60,Male,143,85,183,57,107,136,115,5.2,25.3,102,136,Non-Anginal Pain,False,0.6,True,Current,4.8,241,6.2,58.6,True,10640,52.7,1 +1796,51,Male,112,58,272,53,173,161,96,5.8,23.0,84,144,Asymptomatic,False,2.4,True,Current,2.9,93,6.8,41.4,True,5979,64.3,1 +1797,60,Male,131,91,165,36,91,232,143,6.8,24.1,84,164,Asymptomatic,False,0.3,True,Never,12.3,112,7.4,69.2,False,6519,40.7,0 +1798,55,Female,137,86,285,54,179,233,107,5.4,30.6,76,140,Asymptomatic,False,0.1,False,Former,2.3,244,6.1,47.7,True,5686,54.1,0 +1799,54,Female,120,75,212,56,131,164,109,5.1,22.5,84,174,Non-Anginal Pain,False,0.4,False,Never,6.5,165,8.4,65.1,False,4364,61.2,0 +1800,53,Male,125,78,246,68,140,210,90,5.2,22.3,74,185,Typical Angina,False,2.5,False,Never,10.3,171,6.1,32.4,True,5977,76.3,0 +1801,72,Male,141,92,209,53,91,292,89,5.1,26.7,71,147,Asymptomatic,False,0.5,False,Never,16.6,156,6.3,92.7,False,1765,66.4,1 +1802,53,Female,135,75,128,55,43,107,168,7.2,26.8,80,184,Non-Anginal Pain,False,0.6,False,Never,3.5,91,7.0,57.1,True,993,72.1,0 +1803,65,Male,123,74,191,59,122,69,103,5.6,20.2,63,149,Non-Anginal Pain,False,0.9,False,Former,8.1,185,6.5,35.2,True,8168,62.5,0 +1804,50,Female,127,90,157,50,88,66,124,6.0,24.6,100,174,Asymptomatic,False,0.1,False,Never,5.1,143,6.7,48.7,False,3954,65.4,0 +1805,55,Male,123,73,209,42,144,154,145,7.1,26.5,92,156,Non-Anginal Pain,True,0.1,False,Never,3.2,191,6.1,10.2,False,6052,58.9,0 +1806,40,Female,124,84,140,70,68,66,127,5.4,27.1,86,165,Asymptomatic,False,0.5,False,Never,8.4,173,6.8,57.6,True,4880,66.2,0 +1807,26,Male,126,84,186,50,96,200,146,6.8,25.5,74,162,Asymptomatic,False,0.2,True,Current,8.1,151,6.5,35.6,True,5960,63.7,0 +1808,48,Male,113,77,167,50,91,137,152,7.0,28.3,87,166,Typical Angina,False,1.3,False,Never,10.3,244,9.0,33.2,False,10335,84.0,0 +1809,55,Female,119,80,212,60,129,103,126,6.2,26.1,69,166,Non-Anginal Pain,False,1.4,False,Never,4.0,161,7.4,33.7,False,4988,46.7,0 +1810,47,Female,138,83,156,46,89,167,131,5.8,26.7,83,164,Asymptomatic,False,0.1,False,Never,2.2,180,6.7,34.0,True,6752,57.8,0 +1811,61,Male,130,84,200,55,110,162,124,6.5,27.0,75,146,Atypical Angina,False,2.0,False,Never,2.6,118,6.2,46.8,False,2284,63.0,1 +1812,43,Female,131,76,205,44,127,158,86,4.7,26.8,85,205,Asymptomatic,True,0.3,True,Current,4.3,206,7.8,37.7,True,9876,66.7,0 +1813,35,Male,141,104,182,55,83,200,116,5.8,30.0,85,154,Atypical Angina,True,2.0,True,Never,4.2,134,6.2,64.2,False,7439,51.7,1 +1814,34,Male,130,72,152,46,85,155,115,5.5,24.3,72,195,Non-Anginal Pain,False,1.2,False,Never,8.6,206,7.6,27.6,True,7979,72.8,0 +1815,62,Male,136,98,155,46,85,107,124,5.8,25.8,84,157,Atypical Angina,False,0.2,True,Never,5.8,114,7.4,64.5,True,9277,48.2,1 +1816,43,Male,125,84,201,62,106,145,100,5.1,23.1,76,197,Asymptomatic,False,0.1,False,Current,9.8,159,6.0,39.4,True,9843,42.7,0 +1817,53,Male,117,75,163,49,97,110,105,5.1,25.9,67,153,Non-Anginal Pain,False,0.9,False,Former,1.7,242,7.9,42.1,False,8378,56.0,0 +1818,35,Male,125,79,169,48,93,130,97,5.3,26.0,65,207,Asymptomatic,False,0.4,False,Never,1.9,79,5.4,17.1,True,5242,58.9,0 +1819,42,Female,143,103,203,76,103,155,104,5.2,25.8,68,180,Atypical Angina,False,1.4,False,Former,0.2,126,6.6,57.2,False,7949,79.6,0 +1820,53,Female,147,88,208,43,135,174,132,6.1,27.6,69,143,Non-Anginal Pain,False,1.5,False,Current,8.1,76,3.5,63.9,True,4325,47.6,1 +1821,67,Male,131,75,206,55,121,129,125,6.5,28.0,73,162,Asymptomatic,False,0.6,False,Never,9.0,149,7.9,38.3,False,8479,65.6,0 +1822,39,Male,128,83,157,62,73,128,107,5.3,26.0,67,196,Non-Anginal Pain,False,0.6,False,Never,6.6,264,6.0,18.8,True,11751,67.2,0 +1823,34,Male,103,55,194,62,86,175,137,6.3,23.9,90,184,Non-Anginal Pain,False,0.9,False,Former,12.9,127,6.7,45.7,True,8804,45.2,0 +1824,53,Male,138,90,167,59,83,168,147,6.1,28.2,88,161,Non-Anginal Pain,False,0.6,False,Never,3.9,94,7.6,46.6,False,4339,72.4,0 +1825,55,Female,101,64,125,62,54,56,88,4.9,27.7,82,189,Asymptomatic,False,1.2,False,Current,0.8,149,5.2,17.1,True,7543,55.8,0 +1826,47,Male,135,86,144,44,90,161,70,4.7,31.7,85,200,Non-Anginal Pain,False,0.1,False,Never,3.1,157,6.9,66.5,False,3550,58.4,0 +1827,69,Male,118,74,168,58,82,164,95,5.3,21.0,90,143,Atypical Angina,False,0.1,True,Never,3.3,166,6.9,17.2,False,3853,92.7,0 +1828,31,Male,124,68,191,56,88,225,137,6.2,25.5,79,167,Non-Anginal Pain,True,0.5,False,Current,6.6,157,6.6,74.6,True,6649,71.7,1 +1829,42,Male,125,90,212,54,131,156,105,5.4,29.8,74,180,Asymptomatic,False,1.0,False,Never,9.0,162,8.3,63.7,False,5992,55.8,0 +1830,53,Female,128,86,191,65,111,113,153,7.0,20.2,68,182,Asymptomatic,False,1.8,False,Never,4.3,174,7.6,68.9,True,5746,72.7,0 +1831,42,Female,118,66,137,64,69,35,134,6.3,20.2,74,167,Asymptomatic,False,0.3,False,Former,0.1,105,8.0,63.9,False,8590,95.7,0 +1832,57,Female,130,86,228,64,161,102,118,5.3,29.5,104,175,Asymptomatic,False,2.8,False,Current,17.0,117,6.0,56.3,True,5040,49.2,0 +1833,53,Female,127,79,222,66,148,102,107,5.7,19.4,67,160,Atypical Angina,True,3.0,False,Never,6.3,250,7.7,60.4,True,6280,38.6,1 +1834,50,Male,145,88,174,36,121,99,110,5.4,18.6,90,176,Atypical Angina,True,0.6,True,Former,5.4,204,4.0,63.2,False,8861,86.3,1 +1835,84,Female,127,70,222,60,141,129,119,6.0,22.3,81,124,Non-Anginal Pain,True,1.6,False,Never,5.1,175,7.3,50.0,True,5061,46.4,1 +1836,40,Male,119,68,177,65,51,230,82,5.2,24.0,69,173,Asymptomatic,False,0.8,False,Never,9.7,193,7.0,43.9,True,8778,59.4,0 +1837,50,Male,135,83,175,42,103,153,86,5.3,30.4,83,137,Asymptomatic,False,0.2,False,Never,2.7,0,6.7,50.7,False,1608,35.1,1 +1838,59,Male,128,79,167,35,97,137,126,5.7,18.0,68,119,Asymptomatic,True,1.9,False,Former,4.0,189,4.6,51.4,True,5877,49.2,1 +1839,43,Male,112,64,177,50,102,184,99,5.1,17.0,81,179,Atypical Angina,False,0.9,True,Current,2.5,218,8.1,52.2,True,6493,57.8,0 +1840,55,Male,114,81,231,60,140,201,114,6.0,21.7,87,188,Asymptomatic,True,0.7,False,Never,3.9,87,6.7,27.5,True,6699,56.5,0 +1841,64,Female,121,69,222,77,113,120,137,6.7,27.0,76,151,Asymptomatic,True,0.9,True,Never,2.5,135,5.7,29.6,True,5793,50.2,1 +1842,56,Female,129,73,221,55,136,210,148,6.5,31.0,90,152,Typical Angina,False,0.3,False,Current,5.8,242,6.6,52.6,False,4426,45.1,1 +1843,63,Female,133,88,208,54,136,117,100,4.9,21.2,81,143,Atypical Angina,True,1.6,False,Never,0.8,144,6.4,62.2,False,3350,62.5,1 +1844,48,Male,105,71,194,71,91,194,122,5.7,28.2,75,162,Asymptomatic,False,0.0,True,Never,2.2,88,5.7,68.0,False,5690,64.7,0 +1845,50,Female,116,83,205,59,121,129,128,6.8,33.3,88,164,Non-Anginal Pain,False,0.9,False,Never,0.3,194,6.9,39.5,False,6762,50.2,0 +1846,78,Male,151,97,171,47,100,141,129,6.2,28.2,88,124,Atypical Angina,True,0.2,False,Never,8.3,90,7.6,60.8,False,5466,40.4,1 +1847,59,Female,109,62,186,50,98,133,101,5.3,23.6,69,162,Typical Angina,True,1.7,False,Former,3.0,178,5.8,39.7,False,7270,57.3,0 +1848,66,Male,122,82,161,51,76,224,105,4.7,24.3,78,136,Asymptomatic,False,0.2,False,Never,7.0,143,5.3,54.0,False,5604,76.4,0 +1849,44,Female,116,74,241,68,124,231,124,6.0,23.9,84,184,Atypical Angina,False,0.6,False,Never,2.3,173,8.6,60.5,True,7862,41.2,0 +1850,50,Female,132,76,203,73,87,191,129,5.9,26.3,71,172,Atypical Angina,False,0.5,False,Current,5.1,148,7.8,58.2,True,6891,44.6,0 +1851,68,Male,141,87,201,61,109,184,142,6.4,18.4,87,140,Typical Angina,False,1.6,False,Current,4.2,92,6.6,85.0,False,7768,55.6,1 +1852,54,Female,135,84,174,69,76,103,123,6.2,22.5,83,164,Atypical Angina,False,2.4,False,Never,1.9,150,9.4,41.7,True,8540,65.4,0 +1853,37,Male,108,71,136,47,58,145,60,4.4,20.0,71,206,Asymptomatic,False,0.7,True,Current,3.3,111,7.2,21.2,False,2839,41.8,0 +1854,41,Female,124,76,193,71,84,158,129,6.3,19.1,95,209,Atypical Angina,False,1.0,False,Never,19.4,134,8.0,51.7,True,7935,61.4,0 +1855,52,Female,123,77,225,47,139,150,99,4.8,18.7,89,196,Atypical Angina,False,0.6,False,Never,3.5,161,6.2,53.0,False,8408,43.9,0 +1856,73,Female,131,84,119,43,62,104,118,5.6,26.1,71,141,Asymptomatic,False,0.7,False,Never,2.6,74,6.6,58.9,True,5288,70.9,0 +1857,60,Female,108,68,219,82,86,218,135,6.2,21.1,70,152,Non-Anginal Pain,False,0.3,False,Former,7.0,283,9.0,72.2,True,6724,55.5,0 +1858,43,Female,115,64,192,48,125,145,101,5.0,21.2,73,179,Asymptomatic,False,1.8,False,Never,6.8,97,7.7,53.8,False,8043,85.9,0 +1859,53,Male,128,75,146,54,73,133,115,5.7,21.4,75,144,Asymptomatic,True,1.3,True,Former,15.8,113,6.0,47.2,True,9119,75.4,1 +1860,54,Male,118,86,178,49,87,230,120,6.0,26.5,65,154,Typical Angina,False,0.2,False,Former,4.7,54,5.7,51.1,False,2119,56.1,0 +1861,31,Male,129,85,205,65,91,193,121,6.1,25.8,79,210,Asymptomatic,False,1.7,False,Current,16.5,240,7.8,49.6,False,3941,51.9,0 +1862,53,Male,116,93,122,55,58,68,124,6.5,19.4,82,181,Asymptomatic,False,2.9,False,Former,6.9,172,8.3,34.3,True,5863,62.9,0 +1863,49,Female,147,93,189,64,84,228,156,6.9,25.2,77,153,Non-Anginal Pain,True,0.5,False,Former,9.7,152,5.5,57.6,False,7347,65.6,1 +1864,51,Female,131,70,174,58,79,214,143,6.4,32.8,86,164,Non-Anginal Pain,False,1.1,False,Never,6.0,199,5.3,52.6,True,12488,63.1,0 +1865,41,Male,129,78,220,60,115,171,69,4.6,30.0,82,169,Asymptomatic,False,0.9,False,Never,2.1,186,5.7,57.6,True,9948,61.7,0 +1866,58,Male,126,75,200,74,115,87,106,5.8,23.0,92,173,Non-Anginal Pain,True,0.5,False,Former,8.3,190,8.9,62.8,True,10411,85.0,0 +1867,48,Female,144,77,206,76,101,110,152,6.1,23.7,79,189,Non-Anginal Pain,False,1.2,True,Never,1.1,178,7.5,58.3,True,9644,100.0,0 +1868,43,Female,123,68,214,63,124,155,171,6.8,29.0,77,159,Typical Angina,True,0.7,False,Current,3.5,187,6.2,24.1,False,4143,64.8,1 +1869,77,Male,147,99,204,42,120,230,178,7.5,26.7,95,128,Asymptomatic,False,2.8,False,Current,5.7,50,8.6,65.7,True,4008,53.1,1 +1870,48,Male,128,71,187,53,82,223,108,5.1,30.0,84,183,Atypical Angina,False,0.6,False,Current,15.9,151,5.6,54.1,False,4286,51.9,0 +1871,35,Male,111,63,200,56,111,137,161,7.7,33.2,73,178,Asymptomatic,False,6.5,False,Former,1.6,176,8.1,36.4,True,6973,66.7,1 +1872,69,Female,126,78,224,37,138,222,107,5.6,29.9,78,135,Non-Anginal Pain,True,1.1,False,Former,13.3,116,7.3,79.8,False,6483,34.3,1 +1873,71,Female,130,81,192,60,100,174,145,6.8,25.1,76,147,Atypical Angina,False,0.2,False,Never,0.6,96,6.5,57.5,False,5097,67.1,0 +1874,41,Female,140,90,194,73,80,226,188,7.9,25.8,95,201,Asymptomatic,False,1.4,False,Never,18.1,111,7.2,61.9,True,6815,25.6,0 +1875,47,Female,127,81,111,39,51,156,89,5.2,27.5,84,173,Non-Anginal Pain,False,0.8,False,Never,9.0,156,6.5,43.0,True,6909,71.8,0 +1876,51,Female,150,109,133,73,63,64,126,5.8,26.7,91,180,Non-Anginal Pain,False,0.5,False,Never,4.4,208,6.7,30.1,False,3725,49.2,0 +1877,48,Male,122,78,144,57,75,119,101,5.3,25.0,69,159,Atypical Angina,False,0.2,True,Never,2.1,159,9.9,57.9,False,4144,87.5,0 +1878,35,Male,123,86,159,38,82,181,123,6.0,21.4,71,164,Non-Anginal Pain,True,0.2,False,Former,7.4,146,6.8,71.5,False,4251,76.0,0 +1879,39,Female,148,85,201,58,92,255,130,6.2,28.5,96,189,Asymptomatic,False,0.5,True,Former,16.7,87,4.7,69.0,True,4814,78.6,0 +1880,81,Female,125,75,158,54,98,35,159,7.0,19.9,66,134,Atypical Angina,False,0.3,False,Never,0.9,98,7.9,37.2,False,5695,84.9,0 +1881,45,Female,146,93,206,55,112,196,113,5.6,25.7,63,195,Asymptomatic,True,0.6,False,Former,8.0,188,6.4,41.5,True,8183,55.0,0 +1882,46,Female,113,64,153,44,76,131,124,6.5,27.0,74,167,Typical Angina,False,0.6,False,Current,11.1,254,6.6,0.0,True,8941,49.6,0 +1883,63,Male,135,74,230,47,155,137,99,4.8,21.7,64,143,Non-Anginal Pain,False,1.5,False,Current,4.1,177,9.1,65.3,True,8540,56.8,0 +1884,47,Male,104,78,260,67,163,173,112,5.7,24.5,73,183,Atypical Angina,False,2.1,False,Never,4.2,117,7.1,11.1,False,5567,47.2,0 +1885,44,Female,120,71,206,59,117,142,95,5.1,22.8,75,191,Non-Anginal Pain,False,0.4,True,Former,0.2,235,6.0,24.9,False,4661,46.4,1 +1886,39,Male,128,94,204,57,131,138,150,6.3,16.2,75,183,Non-Anginal Pain,False,0.5,False,Current,5.8,124,6.0,36.7,False,7452,57.7,0 +1887,60,Male,130,95,231,78,122,129,138,6.4,24.3,74,136,Atypical Angina,False,1.7,False,Never,5.4,161,6.8,52.8,True,8759,66.9,1 +1888,56,Male,142,91,157,34,73,192,88,5.3,22.3,94,181,Asymptomatic,False,0.4,False,Never,3.4,30,7.6,69.6,False,4346,76.0,0 +1889,68,Female,120,86,172,75,69,132,138,6.8,24.5,79,172,Asymptomatic,False,0.3,False,Never,1.1,162,7.8,33.4,False,5405,69.5,0 +1890,47,Male,127,76,186,73,85,199,119,5.4,22.8,71,146,Asymptomatic,True,0.5,True,Former,8.9,116,8.7,58.8,True,5300,83.0,1 +1891,70,Male,134,82,196,52,123,135,116,5.9,21.1,82,112,Asymptomatic,False,0.3,False,Current,5.6,28,7.7,40.6,False,4100,56.3,1 +1892,55,Female,136,81,192,37,110,197,121,6.1,28.4,85,153,Atypical Angina,False,0.5,False,Current,2.9,34,8.4,45.2,False,7131,33.1,1 +1893,46,Female,120,72,218,58,135,218,155,7.1,27.0,63,164,Typical Angina,False,0.5,False,Never,11.1,180,6.1,68.5,False,4756,80.4,0 +1894,59,Male,139,86,236,61,126,251,125,5.9,25.6,92,151,Asymptomatic,False,0.2,False,Never,18.2,77,6.3,56.1,False,8594,59.9,0 +1895,57,Male,145,86,197,52,110,158,111,5.9,23.7,71,157,Typical Angina,False,0.3,False,Current,6.3,125,7.5,47.4,False,2452,50.9,1 +1896,57,Female,139,97,157,54,84,120,137,6.3,24.9,74,166,Non-Anginal Pain,False,2.6,False,Former,5.3,173,6.4,24.7,True,8116,62.5,0 +1897,43,Male,133,80,167,60,82,140,133,6.4,28.5,81,178,Non-Anginal Pain,False,0.6,False,Never,4.4,197,7.1,60.0,True,9994,53.2,0 +1898,52,Male,105,74,167,47,109,136,137,7.0,27.9,88,169,Non-Anginal Pain,True,1.3,False,Never,3.2,62,6.8,90.0,False,7599,24.1,1 +1899,50,Male,110,70,123,44,70,96,92,5.3,24.3,92,159,Atypical Angina,True,1.7,False,Current,2.0,70,7.8,71.6,False,1864,57.0,1 +1900,63,Female,124,84,170,37,109,81,118,5.8,27.0,91,159,Typical Angina,True,1.4,False,Never,5.5,106,6.3,47.2,True,7167,44.1,1 +1901,70,Female,127,76,174,52,87,230,164,7.4,32.7,72,167,Asymptomatic,True,1.3,True,Never,0.2,122,7.2,49.0,False,6249,54.5,0 +1902,64,Male,125,75,183,43,103,185,103,5.3,31.1,76,156,Non-Anginal Pain,True,1.3,False,Never,1.8,162,8.0,48.8,True,7174,59.2,1 +1903,63,Female,114,75,215,80,115,55,108,5.4,18.8,81,147,Asymptomatic,False,1.3,False,Former,3.6,184,4.2,44.0,False,5982,65.6,0 +1904,67,Male,133,97,253,63,151,191,143,6.4,22.4,81,161,Asymptomatic,False,1.8,False,Never,12.1,148,9.2,19.1,False,6650,72.2,0 +1905,69,Female,150,94,210,54,124,145,119,5.9,29.8,90,143,Asymptomatic,True,0.1,False,Former,1.0,130,7.9,52.0,False,7081,64.1,1 +1906,48,Female,132,72,206,52,132,144,125,5.9,29.7,89,158,Atypical Angina,False,0.7,False,Never,6.9,86,8.0,66.3,True,7981,46.8,0 +1907,38,Male,134,82,184,35,126,133,117,5.3,29.0,73,155,Typical Angina,True,4.7,True,Former,1.8,13,7.5,51.1,False,3352,29.7,1 +1908,55,Male,136,87,200,72,121,81,129,6.7,17.3,53,191,Atypical Angina,True,1.6,False,Former,2.7,291,7.1,49.6,False,7219,89.3,0 +1909,73,Female,113,64,215,73,97,180,156,6.9,21.7,78,149,Asymptomatic,False,0.2,False,Current,4.2,182,6.5,48.8,True,10129,56.6,0 +1910,37,Female,116,75,186,64,92,159,121,5.6,21.1,76,178,Typical Angina,False,0.1,False,Never,5.8,144,6.1,49.3,True,7790,38.2,0 +1911,41,Male,124,76,243,48,149,194,106,5.1,34.6,77,161,Asymptomatic,False,1.0,False,Never,2.1,108,7.4,55.0,True,8822,68.0,1 +1912,54,Male,146,92,189,51,106,148,109,5.5,34.2,76,171,Asymptomatic,True,0.9,True,Never,16.3,133,9.2,37.9,False,5260,65.6,0 +1913,46,Female,104,65,216,52,110,199,133,6.3,23.8,77,162,Asymptomatic,False,0.3,False,Former,5.3,131,6.0,44.7,False,7346,75.0,0 +1914,66,Male,129,91,227,56,153,99,138,6.4,15.0,88,136,Asymptomatic,False,3.6,False,Current,2.6,148,7.3,60.4,True,7266,37.7,1 +1915,54,Female,124,86,207,35,127,216,120,5.3,31.2,105,144,Typical Angina,False,0.3,False,Current,1.3,0,7.7,67.0,False,6942,44.8,1 +1916,64,Female,134,84,190,59,102,177,127,5.9,19.1,83,158,Non-Anginal Pain,True,0.3,False,Former,0.1,200,6.1,32.2,True,4289,58.8,0 +1917,57,Female,141,91,219,68,114,171,109,5.4,30.3,80,175,Asymptomatic,False,0.9,True,Never,16.5,79,6.6,58.0,False,4663,45.1,0 +1918,58,Female,161,99,187,44,93,236,162,6.9,25.5,80,151,Non-Anginal Pain,True,1.9,True,Never,7.0,164,5.9,66.6,True,6897,47.7,1 +1919,38,Female,118,83,250,46,146,248,106,5.6,27.4,80,210,Non-Anginal Pain,False,0.2,False,Never,4.2,100,6.1,55.2,True,8905,59.1,0 +1920,45,Female,121,72,185,46,97,142,146,6.6,25.1,84,162,Non-Anginal Pain,False,0.5,True,Never,13.8,48,4.8,41.3,False,5161,40.7,1 +1921,28,Female,101,59,164,70,82,100,126,7.0,23.3,78,191,Asymptomatic,False,0.8,True,Never,0.9,156,6.5,53.3,True,9221,66.9,0 +1922,43,Female,127,85,124,59,52,92,106,4.9,15.0,79,169,Atypical Angina,False,0.2,False,Never,1.9,258,6.0,38.6,True,5875,60.3,0 +1923,46,Female,139,97,213,35,123,180,113,5.7,34.5,95,171,Non-Anginal Pain,True,0.8,True,Never,9.9,101,7.2,38.3,True,6152,54.1,0 +1924,58,Male,151,103,156,52,70,153,121,6.4,27.7,82,142,Typical Angina,False,1.0,True,Never,2.5,51,7.2,51.5,False,3519,71.3,1 +1925,38,Female,110,77,150,54,55,166,129,5.7,21.7,74,189,Asymptomatic,False,1.0,False,Never,16.5,134,5.7,41.3,True,11032,65.6,0 +1926,76,Female,153,86,214,57,137,140,122,6.7,28.9,77,170,Non-Anginal Pain,False,0.0,False,Never,2.8,157,6.7,44.5,False,3070,59.8,0 +1927,69,Female,141,67,169,20,104,233,116,6.1,32.8,76,129,Atypical Angina,True,1.3,False,Current,6.7,105,7.6,61.8,False,4545,55.4,1 +1928,40,Female,133,79,221,47,136,187,89,5.1,29.1,90,196,Asymptomatic,False,1.1,True,Current,1.4,123,8.3,57.2,False,4586,32.5,0 +1929,29,Male,104,72,149,54,79,62,83,4.2,19.0,79,180,Asymptomatic,True,1.5,False,Current,3.2,104,8.0,75.4,True,9509,63.4,0 +1930,32,Male,127,85,160,58,90,143,114,5.4,26.3,87,185,Asymptomatic,False,2.3,True,Never,7.1,161,8.0,54.7,False,7292,58.9,0 +1931,57,Female,107,61,188,65,106,102,66,4.2,16.4,77,180,Asymptomatic,False,1.2,False,Never,1.1,148,7.2,37.1,False,4860,60.3,0 +1932,37,Male,128,78,146,53,94,35,127,5.6,20.2,82,195,Typical Angina,True,3.0,True,Never,2.6,85,8.5,43.7,False,4375,77.2,1 +1933,49,Male,131,75,243,70,135,228,129,5.8,22.2,81,158,Asymptomatic,True,1.2,False,Former,5.1,134,7.6,65.9,True,10174,65.9,1 +1934,60,Male,132,87,224,58,158,128,115,5.1,24.3,86,128,Non-Anginal Pain,True,1.4,True,Former,7.7,145,6.0,34.2,False,4750,89.0,1 +1935,58,Male,121,80,230,56,144,148,111,6.3,23.3,75,170,Typical Angina,True,0.9,False,Never,4.8,270,5.4,48.3,True,5129,65.2,1 +1936,63,Female,155,90,249,51,151,150,141,6.7,34.2,98,154,Asymptomatic,True,0.4,False,Never,3.8,141,8.9,23.4,False,2969,51.7,0 +1937,36,Female,113,74,169,52,90,139,93,5.4,22.0,75,203,Asymptomatic,False,0.5,True,Never,4.2,178,8.5,29.7,True,7157,76.0,0 +1938,62,Male,127,80,168,46,83,179,130,5.9,21.7,74,174,Asymptomatic,False,1.3,False,Former,5.2,135,6.5,31.6,False,5790,57.3,0 +1939,62,Female,163,106,170,56,91,78,107,5.5,21.1,66,147,Asymptomatic,False,0.5,False,Never,7.9,145,5.3,50.4,False,9619,70.8,0 +1940,66,Female,119,73,242,68,149,117,139,6.2,20.4,81,168,Non-Anginal Pain,False,0.9,False,Never,1.9,164,7.0,24.6,True,7928,48.4,0 +1941,64,Male,124,80,170,49,99,89,106,5.2,19.5,69,153,Asymptomatic,False,0.2,False,Current,2.0,322,8.4,20.3,True,7642,78.7,0 +1942,37,Male,109,70,201,58,106,194,151,6.6,31.0,73,186,Asymptomatic,True,0.0,False,Never,3.4,162,6.7,37.3,True,9652,48.1,0 +1943,21,Female,103,63,207,80,93,202,81,4.3,29.2,83,171,Non-Anginal Pain,False,0.7,True,Never,2.4,234,7.9,31.1,True,9192,74.2,0 +1944,58,Male,133,76,190,48,116,146,76,4.9,21.4,74,159,Asymptomatic,True,1.6,True,Current,7.3,150,6.4,37.7,False,4648,49.7,1 +1945,74,Female,143,86,268,62,151,260,135,6.0,32.1,82,141,Non-Anginal Pain,True,0.5,False,Current,16.2,122,9.8,34.4,True,7920,32.2,1 +1946,43,Female,122,67,195,62,94,150,73,4.1,25.3,70,166,Asymptomatic,False,0.3,False,Current,0.4,222,8.3,44.6,True,9983,55.9,0 +1947,43,Female,130,88,206,58,124,144,170,7.0,32.8,88,178,Asymptomatic,False,0.3,False,Never,2.6,109,7.3,55.3,False,3151,53.1,0 +1948,55,Male,125,85,185,51,80,193,128,5.5,27.4,83,192,Asymptomatic,False,0.3,False,Former,12.5,122,5.1,42.0,False,4601,63.4,0 +1949,67,Female,130,81,170,59,81,152,81,5.0,27.5,68,133,Non-Anginal Pain,False,0.4,True,Current,4.6,145,6.0,78.8,True,7207,73.0,0 +1950,63,Female,125,82,144,39,68,178,114,5.8,25.2,99,148,Non-Anginal Pain,True,1.8,False,Former,4.2,66,6.0,53.1,True,3801,37.6,1 +1951,38,Female,111,63,254,79,113,297,158,7.3,27.1,83,196,Asymptomatic,False,0.2,False,Never,16.2,177,6.6,31.9,False,5239,40.4,0 +1952,48,Female,121,73,192,48,118,164,121,6.4,25.2,86,140,Asymptomatic,False,0.7,False,Never,7.3,42,7.4,43.0,False,5447,37.0,1 +1953,46,Female,119,75,202,62,112,159,159,6.5,30.7,74,192,Asymptomatic,False,0.6,False,Never,4.2,165,5.9,27.9,True,8213,56.2,0 +1954,61,Male,108,77,180,70,88,174,125,5.1,24.3,98,166,Non-Anginal Pain,False,0.1,False,Former,4.0,135,7.3,48.4,True,9001,38.9,0 +1955,63,Female,119,80,157,50,93,102,105,5.8,30.0,74,156,Asymptomatic,False,0.3,True,Never,0.4,158,6.1,60.3,False,5451,52.3,0 +1956,42,Male,131,85,148,58,52,194,156,7.1,26.6,68,184,Atypical Angina,False,0.6,False,Never,14.1,132,6.5,50.4,True,5779,68.7,0 +1957,43,Male,143,92,134,44,65,138,121,5.8,22.5,66,175,Typical Angina,False,6.5,False,Former,2.9,126,7.6,69.1,False,7307,56.6,1 +1958,57,Male,104,76,224,51,123,223,148,6.5,28.3,79,178,Atypical Angina,False,2.3,False,Former,11.7,114,6.1,35.7,False,3685,24.4,0 +1959,50,Male,133,96,179,61,92,114,111,5.4,23.8,94,166,Asymptomatic,False,0.4,False,Current,3.1,97,7.0,56.0,False,5839,57.5,0 +1960,43,Male,105,76,186,57,91,233,103,5.4,27.1,82,161,Asymptomatic,True,0.1,False,Current,7.2,131,6.6,34.0,True,5868,59.8,1 +1961,47,Male,146,88,190,59,79,216,157,6.7,28.9,89,146,Typical Angina,False,0.7,False,Never,9.2,70,7.0,56.1,True,4530,71.2,1 +1962,61,Female,139,95,198,42,108,224,62,4.8,28.8,77,168,Asymptomatic,False,0.5,True,Never,0.9,129,5.1,18.2,True,5697,52.7,0 +1963,49,Female,135,90,206,71,89,185,124,5.7,23.7,84,144,Non-Anginal Pain,True,5.7,True,Never,2.0,161,8.8,87.4,False,6828,53.1,1 +1964,52,Male,140,83,229,62,126,184,132,5.7,29.4,75,183,Typical Angina,False,0.7,True,Never,5.7,264,6.9,43.0,False,9454,52.1,0 +1965,43,Male,108,58,195,51,120,164,191,7.1,22.3,88,173,Asymptomatic,True,0.2,False,Current,3.4,83,8.5,55.3,False,5592,64.2,1 +1966,61,Female,124,85,187,55,93,196,151,6.2,27.7,68,175,Asymptomatic,False,0.7,False,Never,1.8,241,6.0,45.1,False,3497,72.0,0 +1967,47,Female,124,65,183,55,120,101,150,5.9,32.5,86,190,Asymptomatic,False,0.1,False,Never,1.6,189,8.0,57.7,False,7986,62.1,0 +1968,57,Male,132,81,201,60,111,137,94,5.4,30.6,75,141,Asymptomatic,False,4.7,False,Former,4.3,188,8.6,62.9,False,5168,60.9,1 +1969,56,Female,137,95,199,43,96,258,117,5.3,23.0,94,160,Non-Anginal Pain,False,0.6,False,Current,31.6,188,6.9,64.4,True,8040,45.0,1 +1970,48,Male,108,59,172,62,87,106,88,5.0,22.3,85,174,Non-Anginal Pain,False,0.7,False,Never,2.2,151,9.1,34.9,True,6371,70.3,0 +1971,42,Male,143,90,177,46,104,167,78,4.3,29.5,86,181,Asymptomatic,True,1.0,False,Former,2.2,242,8.3,46.2,True,10192,46.2,0 +1972,52,Male,110,56,175,77,71,153,109,5.2,26.1,92,161,Atypical Angina,False,1.1,False,Never,7.7,158,6.7,45.0,False,4141,68.2,0 +1973,49,Male,147,96,163,49,77,167,82,4.4,32.0,83,170,Asymptomatic,False,0.6,True,Former,8.7,155,8.9,64.1,False,6376,58.1,0 +1974,67,Male,130,87,131,46,72,130,135,6.1,24.8,92,159,Non-Anginal Pain,False,0.6,True,Former,4.5,90,9.0,31.9,False,1658,59.7,1 +1975,42,Female,111,67,213,68,131,104,67,4.3,21.7,76,200,Asymptomatic,False,0.2,False,Former,0.3,241,6.5,46.2,True,8219,86.2,0 +1976,63,Male,141,95,177,40,116,153,101,6.2,25.9,86,158,Non-Anginal Pain,False,1.3,False,Former,2.3,88,9.3,56.5,False,7004,53.5,0 +1977,69,Male,117,78,213,49,114,193,115,5.7,26.8,78,145,Asymptomatic,False,0.3,False,Never,3.4,85,5.6,49.5,False,760,77.8,0 +1978,62,Female,137,86,180,55,102,103,124,5.9,22.5,79,152,Atypical Angina,False,0.2,True,Former,9.8,205,7.2,55.6,True,11885,30.0,0 +1979,63,Male,126,77,165,58,75,163,122,6.1,29.2,85,174,Atypical Angina,False,0.1,False,Former,5.8,88,6.4,40.4,False,5836,73.4,0 +1980,50,Female,118,77,217,66,108,228,73,4.7,27.4,78,172,Atypical Angina,False,1.7,False,Former,0.4,120,7.7,42.3,False,5796,67.6,0 +1981,59,Female,130,84,135,40,83,121,126,5.8,17.9,93,153,Typical Angina,False,0.8,False,Never,14.9,13,3.8,47.2,True,8777,26.3,0 +1982,59,Male,138,87,181,54,98,169,129,5.7,21.6,89,164,Non-Anginal Pain,False,0.2,False,Never,3.6,174,5.7,40.6,False,7419,70.4,0 +1983,33,Female,146,81,179,66,98,131,130,6.0,25.4,83,199,Atypical Angina,True,0.6,False,Former,12.6,100,5.0,49.8,False,5015,69.6,0 +1984,49,Female,107,60,201,72,108,142,69,4.4,22.0,85,196,Asymptomatic,False,0.1,True,Never,1.7,204,8.0,35.7,False,8570,64.3,0 +1985,38,Male,85,55,138,36,72,155,107,5.0,18.6,72,198,Asymptomatic,False,0.4,False,Never,3.4,232,6.5,45.3,False,6993,67.7,0 +1986,29,Female,129,87,201,51,123,167,131,5.5,29.7,69,204,Asymptomatic,False,1.0,False,Never,1.7,181,7.8,56.1,True,9006,52.1,0 +1987,53,Male,118,81,202,58,121,131,78,5.0,21.6,76,172,Non-Anginal Pain,False,2.2,False,Never,2.2,185,6.6,67.4,False,4517,68.1,0 +1988,59,Male,144,99,204,65,112,151,121,6.0,22.9,84,164,Non-Anginal Pain,False,1.5,True,Former,9.3,120,6.3,76.0,False,8834,62.5,1 +1989,45,Female,141,89,207,88,82,218,89,4.8,22.8,90,180,Asymptomatic,False,1.4,False,Former,18.1,167,7.7,45.9,True,5160,58.8,0 +1990,60,Female,145,96,176,68,73,151,90,5.2,23.3,80,157,Atypical Angina,False,0.7,True,Former,12.0,223,5.5,80.6,True,6898,50.9,0 +1991,61,Male,108,74,240,47,161,226,81,4.5,21.2,73,148,Asymptomatic,True,1.6,True,Former,5.3,106,6.5,51.9,True,6864,40.7,1 +1992,55,Female,120,82,215,64,95,278,119,5.9,27.4,83,151,Atypical Angina,False,0.3,False,Former,19.7,123,7.1,29.4,True,5429,53.9,0 +1993,47,Female,138,90,240,60,143,153,87,5.1,31.7,92,138,Asymptomatic,True,0.9,False,Former,2.4,72,8.6,47.2,False,7809,61.1,1 +1994,63,Male,118,63,184,50,90,163,101,4.3,26.7,81,147,Atypical Angina,False,0.4,False,Never,4.1,82,8.3,52.0,False,6239,70.5,0 +1995,77,Female,145,97,214,67,121,175,134,6.3,25.5,77,113,Non-Anginal Pain,False,1.4,True,Former,3.0,122,8.5,66.3,False,1335,82.2,1 +1996,27,Female,98,66,146,52,64,142,125,5.7,19.0,84,194,Asymptomatic,False,1.0,False,Never,2.4,135,7.0,46.2,False,3925,69.0,0 +1997,63,Male,146,99,142,52,85,110,129,5.6,23.9,66,168,Asymptomatic,False,0.9,False,Never,1.5,83,6.5,36.0,False,3781,73.4,0 +1998,39,Female,127,84,201,67,94,190,85,4.2,27.9,73,184,Asymptomatic,False,0.2,False,Never,12.2,246,7.2,43.4,True,7549,80.4,0 +1999,65,Male,131,87,264,83,130,203,112,5.5,28.1,88,153,Typical Angina,True,1.0,False,Never,3.9,147,7.1,40.1,False,3277,63.0,1 +2000,67,Male,132,92,191,66,102,142,133,6.4,20.6,83,147,Atypical Angina,False,1.0,False,Never,1.6,204,6.0,39.7,True,6857,58.3,0 +2001,49,Male,93,83,185,63,75,232,118,5.5,20.3,64,188,Typical Angina,False,2.0,False,Former,6.0,203,6.7,32.1,True,8643,63.7,0 +2002,48,Male,118,75,155,48,85,109,142,6.2,24.0,88,166,Typical Angina,False,1.2,True,Never,2.9,110,8.6,39.0,False,4818,48.5,1 +2003,54,Male,114,57,214,52,116,217,131,5.8,21.9,67,157,Non-Anginal Pain,True,1.7,False,Former,9.0,159,7.5,49.2,True,5129,50.6,1 +2004,56,Male,139,81,229,74,131,126,133,5.9,23.8,95,132,Non-Anginal Pain,True,1.5,True,Never,2.7,195,7.1,43.2,False,6690,73.3,1 +2005,51,Male,101,61,173,43,105,119,104,5.1,24.2,77,170,Non-Anginal Pain,False,0.6,False,Current,1.8,154,7.5,26.5,True,7538,33.2,0 +2006,69,Male,123,77,160,36,100,86,108,5.3,22.2,84,138,Atypical Angina,False,0.7,True,Never,1.8,118,6.3,75.5,False,6496,62.0,1 +2007,34,Male,113,67,209,48,116,182,69,4.0,17.6,81,197,Non-Anginal Pain,True,0.5,True,Current,8.3,201,7.1,14.2,True,9148,43.4,0 +2008,47,Male,149,91,191,68,87,162,151,6.5,27.2,74,184,Atypical Angina,False,0.0,False,Never,2.5,157,6.4,34.6,True,9311,53.9,0 +2009,62,Female,130,83,186,70,82,147,108,6.2,25.9,83,174,Typical Angina,True,0.8,True,Former,3.1,92,6.6,31.2,False,5308,84.7,0 +2010,50,Male,127,75,231,67,120,192,67,4.4,24.5,79,161,Asymptomatic,False,0.9,False,Never,4.8,149,6.5,43.7,False,4364,43.4,0 +2011,51,Female,141,92,163,58,95,89,87,4.8,20.6,102,185,Asymptomatic,False,0.5,True,Never,3.8,241,8.1,63.2,False,6980,86.2,0 +2012,50,Male,130,79,146,39,62,175,107,5.2,17.4,70,172,Non-Anginal Pain,False,0.8,False,Former,10.8,210,7.2,40.7,True,8224,49.8,0 +2013,66,Female,132,87,151,54,65,211,117,5.8,27.2,71,162,Typical Angina,True,1.4,False,Former,6.4,177,6.5,37.6,False,7317,66.9,1 +2014,63,Female,141,95,222,73,130,88,140,6.5,25.1,82,153,Non-Anginal Pain,False,0.3,False,Never,0.8,159,5.8,56.0,False,3559,56.7,0 +2015,37,Female,101,60,133,40,77,81,110,5.3,24.4,85,170,Non-Anginal Pain,False,0.8,False,Never,3.2,111,7.8,48.2,False,4779,60.1,0 +2016,39,Male,115,79,138,64,55,115,125,6.5,24.4,88,185,Asymptomatic,False,1.5,False,Never,7.5,118,6.1,49.0,False,4718,72.2,0 +2017,49,Male,119,82,218,55,142,125,135,6.0,27.5,83,181,Asymptomatic,False,1.9,False,Never,8.2,135,6.6,53.5,False,7484,75.6,0 +2018,52,Female,120,79,184,42,122,138,131,6.2,29.4,93,167,Asymptomatic,False,1.3,False,Never,3.2,77,6.4,16.7,False,4167,35.4,0 +2019,66,Female,130,81,200,32,138,182,98,5.5,26.1,87,165,Asymptomatic,True,1.5,True,Never,2.2,125,7.0,54.5,True,4173,48.5,0 +2020,52,Female,140,95,223,72,138,77,160,6.9,28.9,85,180,Typical Angina,False,0.0,True,Former,0.4,238,6.2,49.5,False,9178,73.7,0 +2021,71,Male,158,99,167,39,96,173,142,6.1,30.9,77,119,Typical Angina,True,2.3,False,Former,6.0,24,5.5,54.8,False,3263,74.0,1 +2022,78,Female,142,89,221,64,126,166,128,5.9,25.8,75,141,Non-Anginal Pain,False,1.7,True,Former,0.4,154,5.1,43.1,True,3853,63.5,0 +2023,43,Female,131,89,216,61,117,217,165,7.1,26.4,86,163,Non-Anginal Pain,True,0.4,False,Former,7.2,149,7.4,63.9,False,3605,48.6,1 +2024,56,Male,142,81,241,60,141,175,91,5.2,28.0,91,146,Non-Anginal Pain,True,1.3,False,Never,3.7,86,9.2,61.3,False,8296,54.0,1 +2025,67,Male,140,74,193,47,112,176,117,6.0,27.2,76,151,Non-Anginal Pain,False,0.0,False,Never,5.6,223,5.5,53.8,False,7556,82.5,0 +2026,57,Female,142,88,216,66,123,204,134,6.1,26.5,81,182,Atypical Angina,False,0.6,True,Never,19.0,165,7.9,30.5,False,6605,67.1,0 +2027,59,Male,146,97,163,50,100,121,115,5.9,29.7,84,160,Non-Anginal Pain,True,1.3,False,Never,15.0,130,7.6,66.9,True,7424,61.1,1 +2028,48,Male,132,84,214,60,107,221,117,5.7,22.5,77,183,Asymptomatic,False,0.7,False,Former,11.1,140,6.8,53.5,False,2765,72.1,0 +2029,47,Male,121,80,187,69,77,171,108,5.6,15.0,75,176,Asymptomatic,False,1.7,True,Never,2.1,241,6.5,41.1,True,7063,78.9,0 +2030,57,Male,102,61,140,61,50,91,129,6.0,18.6,92,157,Non-Anginal Pain,False,0.0,False,Former,3.5,196,7.6,32.2,True,6761,63.2,0 +2031,67,Female,134,91,135,44,93,35,97,5.2,25.1,94,145,Asymptomatic,True,0.8,False,Never,8.0,122,6.9,57.2,False,5807,63.8,1 +2032,40,Male,121,80,199,58,128,108,125,5.5,20.2,75,164,Non-Anginal Pain,False,0.9,True,Current,6.7,213,7.7,50.8,True,5819,42.3,0 +2033,52,Male,128,83,256,66,155,164,123,5.7,26.3,84,134,Asymptomatic,True,2.8,False,Current,1.8,184,6.8,13.5,True,4807,39.1,1 +2034,78,Female,130,93,204,35,134,137,101,5.7,29.9,86,158,Asymptomatic,False,0.6,False,Never,0.4,107,8.2,58.0,False,3730,58.5,0 +2035,52,Female,132,72,193,44,131,153,130,6.8,26.5,96,160,Asymptomatic,False,3.9,False,Current,2.5,75,6.2,43.8,False,3916,56.6,1 +2036,56,Female,130,75,154,57,77,113,98,5.2,24.8,104,154,Atypical Angina,True,1.3,False,Never,1.2,45,5.1,64.2,True,3879,89.8,0 +2037,65,Male,147,93,152,55,64,191,100,5.5,30.6,79,159,Non-Anginal Pain,False,1.8,False,Former,3.5,114,6.8,61.7,False,4887,40.1,0 +2038,62,Female,138,89,158,36,94,203,124,6.2,29.3,76,135,Asymptomatic,True,0.2,True,Former,6.6,90,5.9,69.0,False,6873,42.0,1 +2039,52,Male,131,85,192,69,97,66,143,6.2,25.0,78,152,Asymptomatic,False,0.5,False,Never,1.7,145,6.9,40.1,False,4310,39.1,0 +2040,51,Female,110,66,229,44,129,238,127,6.4,29.5,86,173,Typical Angina,False,1.6,False,Former,0.2,200,6.8,72.5,True,6901,35.1,0 +2041,74,Male,127,73,200,64,110,92,121,5.5,19.6,67,141,Atypical Angina,False,1.6,False,Former,7.4,219,7.6,72.4,True,6161,83.8,0 +2042,42,Female,124,66,148,49,74,145,131,5.8,28.4,89,176,Asymptomatic,False,0.2,True,Never,2.6,120,7.6,45.0,True,3696,88.6,0 +2043,37,Male,125,80,179,39,88,237,143,6.2,32.7,85,186,Typical Angina,True,0.8,False,Former,1.9,127,6.9,70.7,False,6851,58.3,1 +2044,69,Male,110,76,212,72,118,135,171,7.4,22.2,100,117,Non-Anginal Pain,False,0.5,False,Current,4.0,153,7.5,56.3,True,9833,47.2,1 +2045,71,Male,144,89,228,53,131,200,150,6.5,22.5,71,161,Typical Angina,False,2.7,False,Never,8.0,223,7.6,40.9,False,9250,53.7,0 +2046,42,Male,155,84,262,77,152,196,112,5.5,28.4,80,162,Atypical Angina,False,2.0,False,Former,15.3,234,6.2,47.1,False,3579,47.3,1 +2047,66,Female,139,96,238,63,140,111,96,5.1,28.5,63,160,Typical Angina,False,0.2,False,Never,1.9,282,8.5,44.9,True,4882,61.8,0 +2048,59,Female,132,77,193,73,101,70,114,5.7,23.9,77,175,Asymptomatic,False,1.2,True,Never,6.1,165,7.1,34.8,False,2870,75.7,0 +2049,53,Male,143,96,172,70,76,120,124,5.9,22.8,98,182,Asymptomatic,False,0.8,False,Former,9.6,90,4.5,27.7,False,4518,53.6,0 +2050,56,Female,120,71,132,52,73,107,117,5.7,22.4,79,170,Typical Angina,False,0.5,False,Never,7.7,95,7.8,40.3,False,500,58.1,0 +2051,78,Female,161,104,188,41,114,192,129,5.9,24.3,93,141,Non-Anginal Pain,True,0.3,True,Never,5.5,11,7.5,75.1,False,6227,69.4,0 +2052,64,Male,130,76,180,58,95,125,141,6.6,33.2,84,160,Typical Angina,False,1.2,False,Never,3.9,126,7.0,48.4,False,6307,45.8,0 +2053,62,Female,153,89,162,75,56,169,107,5.1,25.7,81,161,Asymptomatic,True,0.4,False,Never,1.5,61,6.4,66.2,False,6393,65.8,0 +2054,61,Male,151,81,188,48,84,245,92,5.0,29.2,84,152,Asymptomatic,False,0.3,False,Never,2.8,161,7.1,77.5,True,6815,32.7,0 +2055,47,Female,125,75,144,82,53,35,100,5.8,17.9,77,180,Non-Anginal Pain,False,0.4,True,Never,3.1,265,7.8,27.0,True,5557,58.0,0 +2056,50,Male,109,68,177,53,89,165,73,4.5,25.2,90,152,Asymptomatic,False,0.3,True,Never,11.1,111,5.1,51.4,False,4266,34.9,1 +2057,53,Male,155,96,177,56,101,164,96,5.3,26.5,72,147,Asymptomatic,True,1.7,False,Current,20.6,234,7.2,12.6,True,7197,64.1,1 +2058,43,Female,131,64,210,46,125,229,125,5.9,27.1,86,200,Asymptomatic,True,6.1,False,Never,6.9,188,6.7,47.8,True,11676,45.9,1 +2059,61,Female,144,92,160,64,76,133,131,6.6,20.3,83,160,Asymptomatic,False,0.1,False,Never,4.3,167,7.7,41.7,True,4115,63.3,0 +2060,70,Male,128,80,161,42,106,133,139,6.2,29.5,78,138,Asymptomatic,True,1.8,False,Never,4.7,52,9.1,17.4,False,4341,42.1,1 +2061,53,Male,124,68,135,44,60,147,127,6.2,25.4,81,181,Asymptomatic,False,0.3,True,Never,11.4,105,6.4,49.5,False,3864,67.7,0 +2062,44,Male,114,78,173,31,101,218,119,5.6,32.1,102,173,Asymptomatic,False,0.3,False,Never,2.7,66,8.0,31.8,False,9167,50.4,0 +2063,44,Female,140,80,175,63,98,130,100,5.0,23.1,96,174,Non-Anginal Pain,True,1.3,True,Never,1.5,74,8.4,61.4,False,2652,78.1,0 +2064,75,Male,143,89,177,32,86,224,156,7.1,28.9,95,157,Non-Anginal Pain,False,0.6,True,Never,5.5,72,7.4,31.2,False,2777,89.4,0 +2065,47,Female,127,90,181,68,99,87,136,6.5,21.3,77,178,Asymptomatic,False,0.7,False,Never,5.8,81,8.8,44.7,False,6786,56.9,0 +2066,39,Female,106,71,202,70,93,218,118,5.8,36.6,78,185,Non-Anginal Pain,False,0.2,False,Never,3.2,174,8.0,35.2,True,5637,47.2,0 +2067,35,Male,128,79,161,45,66,173,128,6.1,25.0,71,182,Atypical Angina,False,0.4,False,Never,7.5,103,7.5,27.7,True,4123,72.1,0 +2068,48,Male,129,71,194,50,115,143,128,5.5,25.0,74,199,Asymptomatic,True,1.2,False,Never,2.3,220,7.5,50.9,True,7762,62.6,0 +2069,70,Male,134,80,242,63,141,175,104,5.3,34.7,86,152,Non-Anginal Pain,True,1.5,False,Never,12.9,87,6.0,50.3,False,10490,56.8,0 +2070,71,Male,143,92,239,36,162,191,119,5.8,29.6,83,136,Asymptomatic,True,1.4,True,Current,9.3,107,5.6,60.9,False,5062,62.3,1 +2071,62,Female,150,104,140,61,45,210,121,5.7,27.5,79,165,Asymptomatic,False,0.3,False,Former,13.7,83,6.3,54.7,False,5700,71.7,0 +2072,45,Male,134,87,212,49,126,176,114,6.0,28.3,104,185,Asymptomatic,False,1.8,False,Current,6.5,147,7.1,59.9,False,5210,51.5,0 +2073,65,Male,119,77,176,64,95,145,91,5.0,20.1,81,149,Non-Anginal Pain,False,0.5,False,Never,8.0,142,6.4,59.5,False,7058,46.9,1 +2074,52,Male,133,87,205,37,125,243,154,6.7,30.8,91,150,Non-Anginal Pain,False,1.6,False,Never,6.9,52,5.1,50.9,False,6171,62.5,1 +2075,63,Female,135,80,205,78,80,129,109,5.5,19.2,73,160,Asymptomatic,False,1.0,True,Never,1.6,207,8.4,37.2,True,5652,60.9,0 +2076,83,Female,125,78,244,69,122,204,110,4.9,24.2,73,123,Non-Anginal Pain,True,0.5,True,Former,34.1,137,5.2,34.3,False,2911,50.3,1 +2077,52,Male,153,104,149,50,74,144,142,7.0,33.3,83,170,Asymptomatic,False,0.1,False,Never,3.9,226,6.7,56.7,False,5119,67.9,0 +2078,37,Male,127,63,206,65,93,222,158,7.1,23.5,87,197,Asymptomatic,False,0.9,False,Former,10.8,92,7.0,58.1,False,5004,26.5,0 +2079,80,Male,160,114,166,53,102,90,118,6.0,27.7,90,160,Non-Anginal Pain,False,0.7,False,Former,11.6,76,7.4,53.5,False,605,32.4,0 +2080,53,Male,132,87,215,69,112,183,70,4.4,26.3,82,164,Atypical Angina,False,1.2,False,Former,5.1,81,8.7,41.8,False,4230,44.0,0 +2081,52,Female,146,100,173,53,97,163,109,5.5,28.9,89,175,Asymptomatic,False,0.2,False,Former,0.6,236,7.7,37.1,False,8323,72.3,0 +2082,33,Male,122,61,216,52,136,109,107,4.8,19.3,77,199,Asymptomatic,False,0.6,True,Current,20.2,178,8.2,36.2,True,8649,55.1,0 +2083,65,Male,163,105,189,62,95,229,107,5.7,25.7,96,140,Asymptomatic,True,1.9,True,Never,3.5,116,6.4,65.6,False,7066,52.3,0 +2084,69,Male,150,84,166,50,84,191,140,6.1,30.3,81,132,Asymptomatic,False,0.6,True,Current,13.0,226,7.3,75.9,True,5551,74.4,1 +2085,58,Female,143,100,174,56,82,133,160,6.7,28.5,84,162,Non-Anginal Pain,False,2.5,False,Former,3.6,142,6.8,43.7,False,5667,47.3,0 +2086,69,Female,138,93,184,67,74,167,133,6.5,23.0,93,148,Asymptomatic,False,1.5,False,Former,13.4,150,7.6,28.5,True,10663,75.1,0 +2087,50,Female,125,76,133,46,65,126,101,5.1,22.3,80,186,Asymptomatic,False,0.1,True,Former,0.3,250,6.5,43.0,True,3536,55.9,0 +2088,73,Female,132,96,180,65,87,66,111,5.6,28.8,87,149,Atypical Angina,False,0.2,False,Current,0.8,117,6.8,52.0,False,5080,53.3,1 +2089,65,Male,139,89,216,57,119,188,161,6.8,31.4,66,159,Non-Anginal Pain,True,0.8,True,Never,5.3,190,6.6,56.4,False,4036,34.6,1 +2090,78,Female,151,101,178,52,105,54,160,6.5,18.2,72,158,Asymptomatic,False,0.5,True,Never,2.2,125,7.4,43.6,False,5076,39.9,0 +2091,33,Male,130,82,164,39,91,139,140,6.5,27.5,90,175,Asymptomatic,False,0.6,True,Never,7.0,116,5.7,60.7,True,5283,69.6,0 +2092,39,Female,128,78,184,44,85,240,137,6.6,23.2,67,175,Asymptomatic,False,0.9,False,Never,15.0,198,7.6,41.2,True,9709,64.6,0 +2093,67,Male,107,66,168,56,82,156,145,5.8,15.3,81,146,Asymptomatic,False,0.3,False,Former,5.6,179,4.7,62.2,False,8450,56.5,0 +2094,60,Male,154,108,213,68,103,212,111,5.9,29.2,80,152,Non-Anginal Pain,True,0.9,False,Former,7.4,155,7.6,48.3,True,6444,55.2,1 +2095,43,Male,120,75,177,44,98,159,80,4.6,29.3,95,168,Asymptomatic,True,1.2,True,Former,7.9,176,5.3,44.1,False,8406,61.2,0 +2096,56,Female,98,66,163,42,80,158,133,6.7,31.6,76,173,Asymptomatic,False,0.8,False,Never,1.4,194,10.2,37.9,True,5266,94.0,0 +2097,67,Male,102,50,219,58,130,162,146,6.6,25.9,89,134,Typical Angina,True,0.1,False,Never,2.4,134,6.8,41.2,False,6243,63.7,1 +2098,70,Female,125,86,201,70,106,102,143,6.7,21.4,82,162,Asymptomatic,False,0.6,False,Never,1.7,94,9.3,28.6,True,4927,77.4,0 +2099,59,Male,131,83,190,81,83,131,142,6.1,18.9,75,142,Non-Anginal Pain,False,2.5,False,Former,4.5,248,7.1,64.1,True,5164,75.5,0 +2100,56,Female,136,89,198,65,109,141,121,6.1,35.4,94,164,Non-Anginal Pain,False,0.7,False,Never,2.8,115,6.9,21.5,False,2255,63.2,0 +2101,61,Male,157,90,213,54,119,118,141,6.5,35.1,86,161,Non-Anginal Pain,True,0.1,False,Never,6.4,101,7.3,35.8,True,7577,81.0,0 +2102,55,Female,127,80,258,69,159,171,161,6.9,36.1,88,160,Typical Angina,False,1.1,True,Never,1.8,81,5.5,68.0,True,8760,41.9,1 +2103,80,Female,143,97,170,67,68,175,121,6.0,20.1,87,135,Typical Angina,False,1.2,False,Never,4.3,100,6.1,39.7,False,1698,63.5,0 +2104,50,Female,102,61,185,72,90,134,106,5.8,23.4,77,186,Asymptomatic,False,0.1,False,Never,0.6,188,6.9,50.4,True,8073,49.0,0 +2105,55,Female,149,89,176,65,81,138,108,5.6,22.8,80,174,Asymptomatic,False,0.1,True,Never,2.6,133,6.4,17.3,False,6750,41.4,0 +2106,53,Female,135,95,177,54,106,56,86,5.4,25.3,72,146,Asymptomatic,False,1.8,False,Never,7.7,105,9.4,52.3,True,6139,53.1,1 +2107,75,Male,145,88,213,54,140,114,134,5.9,30.6,83,141,Asymptomatic,False,4.7,False,Current,1.7,220,5.5,49.1,True,7046,34.4,1 +2108,48,Male,137,89,200,50,110,174,142,6.5,19.5,74,140,Asymptomatic,False,0.6,False,Never,1.5,38,5.9,67.4,False,5536,49.9,0 +2109,67,Female,107,63,185,52,98,115,144,6.1,23.6,90,139,Asymptomatic,False,1.7,False,Former,5.2,56,5.9,46.4,False,2521,65.4,0 +2110,55,Male,141,94,149,30,88,158,148,6.8,27.3,83,156,Atypical Angina,True,4.5,True,Never,4.9,121,7.2,50.4,True,8357,62.6,1 +2111,49,Female,117,78,157,46,75,164,128,5.9,23.2,74,169,Atypical Angina,True,0.3,False,Current,1.4,235,7.6,72.4,True,7891,63.2,0 +2112,28,Female,119,71,168,61,82,169,107,5.9,22.1,80,197,Atypical Angina,False,0.0,False,Never,1.5,119,7.5,60.3,False,4181,48.8,0 +2113,54,Female,123,71,157,56,71,197,110,6.3,26.4,88,169,Non-Anginal Pain,False,0.7,False,Never,1.4,105,6.5,66.4,True,6127,52.4,1 +2114,77,Female,153,95,184,50,81,297,93,5.2,25.3,73,134,Non-Anginal Pain,True,1.9,False,Never,16.6,126,5.5,62.1,True,5818,65.7,1 +2115,46,Male,115,77,136,33,61,176,130,5.9,18.4,71,173,Non-Anginal Pain,False,0.4,False,Former,3.7,38,7.5,51.8,False,3295,73.9,0 +2116,18,Female,123,58,166,79,73,151,116,5.4,28.3,87,210,Asymptomatic,False,0.4,False,Never,0.1,157,5.8,96.2,True,8489,81.7,0 +2117,59,Male,139,91,191,45,111,142,128,6.0,24.7,90,173,Typical Angina,False,0.3,False,Never,2.7,28,7.5,70.7,False,8215,48.2,0 +2118,39,Male,105,70,212,57,117,177,140,5.3,28.0,93,183,Atypical Angina,True,0.4,True,Former,6.0,189,6.8,59.4,False,9661,46.1,0 +2119,32,Female,106,68,178,54,84,200,126,6.1,24.9,82,199,Asymptomatic,False,0.3,False,Never,8.7,144,7.4,61.1,False,8240,48.5,0 +2120,48,Female,103,66,190,58,99,164,89,4.7,24.1,94,189,Non-Anginal Pain,False,0.7,False,Never,5.4,74,7.7,33.6,True,11684,56.3,0 +2121,37,Male,87,59,214,79,112,109,98,5.2,22.8,64,181,Asymptomatic,True,0.9,False,Former,1.8,214,7.8,18.5,True,8977,59.6,0 +2122,68,Male,132,72,183,41,119,131,122,6.2,23.5,83,117,Atypical Angina,False,5.1,False,Never,3.9,178,8.4,28.9,False,4795,70.3,1 +2123,57,Female,127,79,195,67,85,216,102,5.1,26.5,86,149,Atypical Angina,False,0.3,False,Former,4.1,235,6.6,18.7,True,12137,61.3,0 +2124,63,Male,111,70,198,63,100,196,90,5.3,20.5,53,150,Atypical Angina,False,0.4,True,Former,3.8,163,6.4,30.4,True,4493,66.1,0 +2125,46,Female,108,76,203,62,91,207,74,5.0,25.3,78,184,Asymptomatic,False,0.2,False,Former,0.9,224,7.1,35.5,False,2537,48.3,0 +2126,53,Female,126,82,199,44,122,150,110,5.4,24.8,89,181,Asymptomatic,False,0.9,False,Never,16.2,158,7.2,23.9,False,5296,52.6,0 +2127,47,Female,122,89,182,49,104,190,107,5.3,18.1,75,175,Asymptomatic,False,0.3,False,Current,7.4,246,8.2,49.4,False,5110,84.0,1 +2128,58,Male,122,73,212,63,106,240,111,5.8,29.0,76,163,Non-Anginal Pain,True,0.5,False,Former,6.9,188,6.7,40.2,True,8481,44.7,0 +2129,25,Female,110,70,256,45,161,227,108,5.4,25.4,76,210,Asymptomatic,False,0.0,True,Current,8.3,186,6.5,44.6,True,9856,63.7,0 +2130,54,Male,119,71,140,58,70,126,110,5.5,22.9,92,165,Asymptomatic,True,4.6,False,Former,11.6,55,5.4,49.8,True,6929,62.6,1 +2131,67,Female,131,89,152,51,91,100,134,6.8,22.5,84,182,Asymptomatic,False,0.9,False,Former,3.4,105,8.2,31.5,False,6554,68.1,0 +2132,76,Female,138,92,178,78,70,151,111,5.8,26.5,70,153,Asymptomatic,False,0.4,False,Former,5.4,200,8.1,32.4,True,4671,86.8,0 +2133,65,Male,138,80,213,43,118,243,157,7.0,32.6,88,121,Asymptomatic,False,2.2,False,Current,7.7,154,5.7,4.0,False,8846,18.1,1 +2134,56,Male,115,76,168,53,90,122,94,4.6,23.9,82,165,Asymptomatic,False,0.2,False,Current,3.0,158,8.9,20.3,True,7789,37.7,0 +2135,32,Female,102,65,207,66,108,193,139,6.6,24.3,83,201,Non-Anginal Pain,False,1.5,False,Former,1.9,109,6.3,25.8,False,10283,62.7,0 +2136,56,Male,117,87,130,71,41,124,108,6.5,30.7,78,158,Asymptomatic,False,0.6,False,Never,2.5,195,7.2,44.2,False,5940,50.2,0 +2137,28,Male,114,65,143,50,83,91,107,5.5,22.6,88,156,Non-Anginal Pain,False,0.7,False,Former,1.9,122,7.5,48.0,True,8303,64.2,1 +2138,42,Male,118,74,217,56,117,194,105,5.4,22.6,80,177,Asymptomatic,False,2.5,True,Never,5.2,212,5.9,44.9,True,6723,47.8,0 +2139,51,Male,130,80,158,60,49,203,135,6.3,20.0,71,160,Non-Anginal Pain,False,1.9,False,Former,3.7,86,5.2,59.7,False,5062,64.6,0 +2140,50,Male,113,81,199,71,70,266,123,6.5,24.0,67,170,Non-Anginal Pain,False,0.6,True,Never,13.7,143,6.2,26.9,True,5209,61.7,0 +2141,65,Female,127,79,179,29,103,214,108,5.9,34.0,80,157,Asymptomatic,False,1.1,False,Current,1.8,147,7.2,54.6,False,6771,49.1,0 +2142,50,Male,147,86,157,69,59,140,133,5.7,28.1,78,164,Typical Angina,False,0.6,False,Former,6.8,212,7.2,50.7,True,7998,71.0,0 +2143,37,Female,110,69,139,49,77,73,118,5.4,22.6,93,202,Typical Angina,False,0.4,True,Current,2.3,239,8.0,67.6,False,7914,65.0,0 +2144,48,Male,117,79,139,47,76,118,157,7.4,25.1,76,186,Asymptomatic,False,0.2,False,Never,7.3,93,6.0,32.7,True,8285,62.7,0 +2145,44,Female,137,93,199,60,115,223,92,4.7,31.8,73,204,Asymptomatic,False,0.0,False,Former,0.9,214,6.2,54.5,True,8705,88.4,0 +2146,68,Male,145,105,204,68,125,76,143,6.0,24.0,78,166,Atypical Angina,True,0.8,False,Former,3.2,225,8.5,32.7,True,4007,73.3,0 +2147,35,Male,86,68,183,64,85,194,114,6.3,25.2,79,188,Asymptomatic,False,1.6,True,Never,4.3,126,7.9,41.0,False,5012,76.4,0 +2148,47,Female,113,81,199,85,85,163,150,5.8,22.4,86,172,Typical Angina,False,0.9,False,Former,5.5,119,6.1,72.1,False,6823,73.8,0 +2149,66,Female,147,99,214,74,118,83,121,6.0,20.4,79,149,Non-Anginal Pain,False,1.1,False,Former,7.9,186,5.1,46.4,False,5858,100.0,0 +2150,43,Female,118,74,257,63,153,297,113,5.6,26.4,97,135,Non-Anginal Pain,True,1.0,False,Current,14.9,76,5.3,30.4,False,4641,39.4,1 +2151,59,Male,116,77,186,61,81,188,95,4.8,15.0,66,170,Atypical Angina,False,0.7,False,Former,3.8,246,7.7,38.8,True,8412,56.1,0 +2152,54,Female,145,100,192,46,91,224,144,6.9,31.8,99,174,Asymptomatic,False,0.2,False,Never,5.2,104,7.5,46.0,True,3937,56.4,0 +2153,49,Female,151,101,202,46,128,138,128,5.7,29.3,87,168,Atypical Angina,False,2.0,False,Never,3.4,94,8.4,75.8,False,5597,53.5,1 +2154,31,Female,119,76,220,53,118,260,113,5.4,25.2,99,192,Non-Anginal Pain,False,1.6,False,Never,12.4,167,7.3,47.4,True,5429,52.6,0 +2155,54,Female,130,79,168,49,95,94,160,6.9,22.7,73,189,Asymptomatic,False,0.5,False,Former,0.4,101,7.3,55.3,False,2208,67.3,0 +2156,47,Male,139,91,207,46,122,163,95,5.2,25.6,73,178,Non-Anginal Pain,False,0.3,False,Never,4.7,160,5.4,32.3,False,5335,51.3,0 +2157,58,Male,113,73,188,70,86,94,94,4.8,26.7,84,186,Atypical Angina,False,0.5,True,Never,5.1,147,7.0,58.2,False,1335,47.1,0 +2158,35,Female,134,91,223,50,147,152,130,6.7,27.7,81,180,Non-Anginal Pain,False,2.3,False,Current,12.6,183,7.6,42.6,False,4595,76.7,0 +2159,61,Male,118,76,167,32,101,142,93,4.9,15.2,88,159,Asymptomatic,False,2.2,False,Former,3.3,137,7.5,40.5,False,4156,53.6,0 +2160,62,Female,138,97,218,57,104,285,91,4.5,20.9,88,189,Asymptomatic,False,0.5,False,Current,1.1,179,6.5,37.5,True,4999,59.6,0 +2161,72,Male,131,82,191,41,101,176,160,7.1,24.2,93,154,Asymptomatic,True,3.5,False,Current,14.8,150,6.9,62.0,True,4958,65.5,1 +2162,48,Female,125,65,173,47,109,71,116,5.6,18.9,76,184,Asymptomatic,False,0.2,True,Never,0.6,182,6.1,38.1,False,3965,72.2,0 +2163,45,Female,124,85,214,73,123,143,66,4.3,19.2,90,188,Atypical Angina,False,0.2,True,Current,18.6,172,7.8,40.7,True,8530,52.8,0 +2164,66,Female,122,77,198,55,120,153,116,5.8,23.8,96,141,Non-Anginal Pain,True,0.4,True,Former,0.2,106,5.1,73.5,True,4597,30.3,1 +2165,40,Male,109,65,206,70,109,135,94,4.9,23.0,72,167,Atypical Angina,False,3.9,True,Never,2.0,194,6.3,38.2,False,6752,53.9,1 +2166,43,Male,126,90,154,63,51,168,84,4.3,20.3,74,187,Asymptomatic,False,0.5,False,Never,1.6,260,5.9,40.9,False,8722,80.6,0 +2167,50,Female,111,68,223,70,126,105,87,4.5,19.1,72,176,Asymptomatic,False,0.3,False,Never,0.5,247,6.8,73.3,True,9609,59.0,0 +2168,39,Male,118,76,168,36,117,64,134,5.5,23.2,82,165,Non-Anginal Pain,True,3.8,False,Never,6.6,136,6.4,46.9,True,5960,60.6,1 +2169,73,Female,126,79,180,60,87,130,167,6.9,18.6,83,148,Asymptomatic,False,1.3,False,Never,3.2,68,7.6,43.2,False,4118,50.1,0 +2170,66,Male,145,97,190,42,121,77,138,6.5,21.8,78,124,Asymptomatic,True,1.7,False,Never,3.8,79,5.1,72.2,False,4737,65.1,1 +2171,26,Female,86,67,201,68,96,184,128,5.4,21.9,83,210,Atypical Angina,False,1.1,False,Current,22.3,180,5.4,11.6,True,7103,34.9,0 +2172,26,Female,97,64,227,84,108,216,109,5.4,27.8,74,210,Non-Anginal Pain,False,1.7,False,Former,5.0,170,5.5,43.1,True,4058,71.2,0 +2173,45,Female,155,99,201,48,103,235,131,5.9,28.7,93,169,Asymptomatic,False,0.1,False,Current,5.5,236,6.3,69.9,True,11598,25.5,0 +2174,60,Female,145,94,181,45,101,135,124,5.9,32.5,80,159,Asymptomatic,False,0.4,True,Never,2.3,104,7.0,17.4,False,4658,81.2,1 +2175,63,Female,119,80,207,45,140,94,116,5.7,25.9,83,158,Asymptomatic,False,0.4,False,Former,9.7,155,9.4,25.9,True,6682,88.1,0 +2176,72,Male,133,82,215,66,123,136,126,5.8,25.4,76,154,Asymptomatic,False,0.2,False,Never,4.6,112,7.4,25.5,False,7624,38.2,1 +2177,58,Male,124,68,189,48,140,112,79,4.6,21.9,90,182,Typical Angina,False,0.3,False,Former,8.9,110,6.2,43.8,True,7516,55.9,0 +2178,40,Male,111,70,167,68,85,62,112,5.4,25.7,64,174,Atypical Angina,False,1.7,False,Former,10.0,262,8.3,46.8,True,9366,77.2,0 +2179,59,Female,114,71,208,49,137,160,101,5.8,21.4,70,170,Atypical Angina,False,1.4,False,Current,4.5,201,8.0,16.7,True,10880,43.3,0 +2180,39,Female,117,69,210,70,120,170,103,5.8,26.2,78,188,Asymptomatic,False,1.0,False,Former,0.6,125,8.0,26.4,False,2460,51.7,0 +2181,43,Female,130,80,220,58,121,220,125,6.0,28.6,79,161,Atypical Angina,False,1.1,True,Never,5.2,138,7.6,41.0,True,9088,64.3,0 +2182,33,Female,105,72,172,54,85,146,73,4.1,20.5,86,199,Asymptomatic,False,0.0,False,Current,5.4,96,8.5,69.7,False,6656,50.6,0 +2183,42,Female,125,85,148,64,70,125,119,5.6,17.5,79,175,Asymptomatic,False,0.4,False,Former,14.0,104,8.2,27.8,True,9360,68.7,0 +2184,46,Male,130,76,186,52,97,219,79,4.8,20.6,86,191,Asymptomatic,False,0.1,True,Never,13.0,187,6.5,40.2,True,7300,56.8,0 +2185,47,Male,118,71,167,54,59,219,121,5.6,24.1,86,185,Atypical Angina,False,3.6,False,Never,10.6,180,7.6,12.8,False,5406,59.2,0 +2186,77,Female,149,96,187,65,96,148,124,5.9,20.5,93,133,Typical Angina,False,0.7,True,Never,2.0,122,7.6,67.4,False,4852,58.5,1 +2187,55,Female,122,83,255,76,149,124,130,6.1,22.0,79,174,Asymptomatic,False,0.5,False,Never,0.1,223,7.0,43.2,True,10082,88.3,0 +2188,59,Male,144,80,186,37,96,248,130,6.1,27.1,81,182,Asymptomatic,False,0.3,True,Former,5.4,111,8.1,16.1,False,6612,74.1,0 +2189,56,Male,133,78,187,55,96,104,107,5.4,16.2,70,185,Asymptomatic,False,1.4,False,Never,1.8,88,9.1,45.6,True,4908,57.5,0 +2190,75,Female,138,91,238,57,114,305,133,6.4,24.4,95,139,Asymptomatic,False,0.4,False,Never,21.3,123,6.8,46.6,False,7992,96.0,1 +2191,42,Male,119,86,184,48,104,156,101,5.8,21.8,70,186,Asymptomatic,False,0.6,False,Never,5.2,212,6.0,29.5,True,8154,48.7,0 +2192,64,Female,136,86,242,45,152,256,129,5.5,33.4,104,125,Typical Angina,True,0.2,False,Never,4.3,10,5.9,89.0,False,4914,42.9,1 +2193,43,Male,139,86,159,36,103,167,146,6.6,20.8,86,186,Asymptomatic,False,1.5,True,Never,6.3,104,8.0,62.0,True,11215,70.1,0 +2194,52,Male,150,99,193,49,105,198,130,6.2,30.1,88,168,Non-Anginal Pain,True,0.1,False,Never,3.9,184,7.1,49.1,True,7809,48.3,0 +2195,60,Female,130,83,202,43,127,134,132,6.0,26.4,89,159,Typical Angina,True,2.1,False,Never,2.6,94,7.3,26.5,True,7255,42.2,1 +2196,36,Male,131,89,194,51,116,166,132,5.9,21.6,77,182,Asymptomatic,False,0.3,True,Never,4.0,166,4.7,41.4,True,9836,70.7,0 +2197,49,Male,117,72,187,40,106,192,110,5.6,22.0,82,187,Non-Anginal Pain,False,0.1,False,Current,7.8,145,6.2,37.2,True,8118,72.5,0 +2198,54,Male,123,77,184,32,102,212,120,5.7,21.1,72,157,Asymptomatic,True,2.6,True,Never,16.0,107,5.3,20.5,False,7503,60.2,1 +2199,61,Female,125,82,189,63,113,73,61,4.9,19.4,90,148,Atypical Angina,False,0.7,True,Never,0.4,194,6.0,55.4,False,6312,100.0,0 +2200,51,Male,117,68,168,74,76,101,123,5.5,21.4,64,176,Asymptomatic,False,0.6,False,Never,3.3,115,6.7,58.0,False,6089,63.0,0 +2201,90,Male,131,84,147,59,79,116,140,6.4,19.7,78,137,Asymptomatic,False,1.5,False,Never,9.4,197,7.3,35.7,True,4469,58.5,0 +2202,78,Male,131,95,176,45,105,170,119,5.8,26.8,74,153,Asymptomatic,False,0.4,False,Never,5.0,66,6.7,56.2,False,5325,55.4,0 +2203,25,Male,97,55,130,49,80,62,89,4.9,20.6,86,194,Atypical Angina,False,0.3,False,Never,2.8,108,7.6,46.6,True,10617,60.5,0 +2204,56,Male,138,92,118,65,35,146,124,6.0,22.1,80,185,Atypical Angina,False,0.6,False,Former,1.9,133,5.3,43.1,False,4855,73.1,0 +2205,61,Male,110,79,191,79,74,188,125,5.6,21.5,75,165,Asymptomatic,False,1.7,False,Never,1.9,285,5.0,59.2,False,7875,79.5,0 +2206,58,Male,118,91,157,52,93,120,134,6.0,23.7,81,131,Asymptomatic,False,0.8,False,Never,9.9,131,6.4,56.2,True,6923,35.3,1 +2207,72,Male,155,96,213,56,109,210,140,6.8,30.3,86,135,Asymptomatic,False,0.6,True,Never,13.6,0,6.9,56.6,False,1303,58.0,0 +2208,18,Male,109,70,187,29,121,175,131,5.7,28.5,91,191,Asymptomatic,True,1.0,False,Current,3.0,136,8.1,51.0,False,4587,53.0,1 +2209,40,Female,108,73,212,59,132,123,122,5.9,28.8,84,178,Non-Anginal Pain,False,0.7,False,Never,4.5,190,7.6,34.1,True,7705,36.9,0 +2210,74,Female,132,83,181,31,116,128,95,5.3,31.8,70,130,Asymptomatic,False,0.2,False,Current,3.5,217,7.4,73.1,True,7853,66.7,1 +2211,70,Female,142,97,193,51,96,190,114,5.5,23.9,77,142,Asymptomatic,False,0.9,True,Never,8.0,28,8.1,35.2,False,2781,33.6,0 +2212,84,Male,136,84,194,45,105,214,119,6.1,27.9,69,121,Non-Anginal Pain,False,0.7,False,Former,2.9,162,6.6,33.4,True,7584,77.4,1 +2213,76,Male,158,105,190,32,141,113,79,4.6,32.2,90,130,Atypical Angina,True,0.5,True,Never,4.7,118,6.3,46.3,False,6084,64.5,1 +2214,37,Male,123,78,209,56,116,165,66,4.6,24.7,82,176,Asymptomatic,False,0.0,False,Former,2.7,239,7.1,38.9,False,6700,79.0,0 +2215,67,Female,156,98,151,68,67,86,125,6.2,20.7,94,170,Non-Anginal Pain,False,0.1,False,Former,2.0,123,8.3,54.5,False,5679,57.0,0 +2216,50,Female,147,96,177,60,102,99,144,6.8,28.5,86,165,Asymptomatic,False,1.6,False,Never,5.3,157,7.2,60.5,False,3564,61.5,0 +2217,57,Male,130,85,166,69,76,63,71,4.2,18.8,72,155,Atypical Angina,False,0.7,False,Never,5.4,194,5.6,57.7,False,8872,63.8,0 +2218,55,Male,128,74,186,54,100,166,158,6.8,25.8,94,146,Asymptomatic,True,0.6,False,Never,10.7,131,6.3,47.0,False,6870,49.9,1 +2219,48,Female,122,95,173,63,68,148,146,6.3,21.7,86,184,Asymptomatic,False,0.9,False,Current,1.3,196,8.5,27.7,True,5286,54.2,0 +2220,47,Male,128,79,173,42,115,142,127,5.9,25.7,82,188,Asymptomatic,False,4.7,False,Former,9.0,38,6.0,47.0,False,7853,49.0,1 +2221,64,Male,140,93,169,41,114,58,119,6.2,22.8,82,161,Atypical Angina,False,0.3,False,Former,1.8,42,5.9,34.1,False,4636,71.5,1 +2222,47,Female,117,72,126,60,45,145,115,5.5,18.2,67,145,Asymptomatic,False,0.5,True,Never,9.6,210,7.8,41.6,True,3288,82.3,0 +2223,57,Female,131,89,224,75,117,148,144,6.7,22.2,59,173,Typical Angina,False,0.9,False,Never,7.1,131,6.0,32.2,True,7277,58.2,0 +2224,60,Male,133,70,155,49,85,158,122,6.1,23.5,73,145,Asymptomatic,False,0.0,False,Never,21.9,203,8.0,50.5,False,4161,47.8,0 +2225,47,Male,123,82,174,57,96,143,99,5.1,32.2,79,174,Non-Anginal Pain,False,0.6,True,Never,1.8,150,7.8,63.2,False,5528,80.9,0 +2226,50,Female,106,80,219,70,96,146,147,6.2,28.6,68,161,Asymptomatic,False,0.4,False,Never,0.0,106,9.0,43.3,False,5199,54.8,0 +2227,69,Male,126,82,259,41,168,213,140,6.5,27.8,93,131,Non-Anginal Pain,False,1.0,True,Never,4.4,0,5.5,68.9,False,3911,51.2,1 +2228,32,Male,123,93,186,63,80,188,127,5.7,19.5,63,179,Atypical Angina,False,2.9,False,Former,1.9,120,8.3,37.0,False,8340,53.5,0 +2229,45,Male,144,101,190,58,106,142,88,5.3,21.5,73,190,Non-Anginal Pain,False,1.4,True,Never,13.2,100,6.1,55.0,True,7435,60.1,0 +2230,37,Female,111,72,202,66,113,127,146,6.6,28.0,84,178,Asymptomatic,True,0.0,False,Former,3.0,64,5.4,39.8,False,3090,66.6,0 +2231,57,Male,134,73,211,45,115,225,116,5.2,28.7,80,144,Asymptomatic,False,0.0,True,Never,5.3,61,6.8,78.1,True,10118,51.7,1 +2232,89,Male,166,105,173,33,97,237,87,5.0,26.0,83,147,Non-Anginal Pain,False,1.4,True,Never,17.9,68,7.4,29.1,False,4738,74.8,1 +2233,38,Female,98,63,204,64,111,118,121,6.1,22.4,79,169,Atypical Angina,True,0.1,False,Never,4.6,162,7.6,43.6,True,8717,22.9,0 +2234,70,Female,146,87,172,61,67,145,149,6.4,26.4,70,166,Atypical Angina,False,2.7,False,Never,14.9,143,7.7,52.9,True,5370,79.4,0 +2235,72,Female,140,77,200,53,115,87,153,7.2,23.0,72,168,Asymptomatic,False,1.4,True,Never,5.9,78,7.8,45.7,True,5780,52.8,0 +2236,26,Male,106,66,178,60,105,134,97,4.8,33.2,79,188,Atypical Angina,False,1.0,False,Never,8.4,210,8.7,58.1,False,7852,59.8,0 +2237,37,Male,128,93,179,48,105,170,116,5.7,28.4,83,195,Asymptomatic,False,0.7,True,Former,1.9,176,9.6,71.4,True,8957,62.5,0 +2238,54,Male,128,79,174,37,108,96,95,5.3,21.5,71,161,Asymptomatic,False,0.2,False,Former,2.2,125,7.1,30.0,True,7374,58.9,0 +2239,41,Male,136,90,218,46,126,208,129,6.3,26.0,74,142,Non-Anginal Pain,True,0.4,True,Never,6.6,123,8.4,56.8,False,2307,60.4,1 +2240,58,Male,127,69,203,62,105,164,99,5.0,23.9,71,155,Non-Anginal Pain,False,1.6,False,Never,6.8,159,8.2,53.8,True,5825,59.7,1 +2241,72,Male,115,70,198,47,138,113,97,4.9,17.6,79,131,Asymptomatic,True,0.6,False,Current,4.3,69,6.7,41.9,False,4128,52.3,1 +2242,63,Male,130,88,170,48,81,255,154,5.9,24.8,93,147,Asymptomatic,False,1.6,True,Never,4.7,149,8.0,40.1,True,6295,76.6,0 +2243,51,Male,121,77,167,46,100,109,125,6.1,22.2,90,173,Asymptomatic,False,0.3,False,Never,3.8,143,6.2,30.6,False,8882,53.1,0 +2244,61,Female,119,83,231,66,143,160,72,4.4,17.3,82,161,Asymptomatic,True,0.6,False,Former,3.9,278,6.2,71.9,False,7498,57.7,0 +2245,59,Female,143,98,250,71,135,197,143,5.8,28.8,72,176,Typical Angina,True,2.1,False,Never,9.8,232,4.8,60.9,True,7683,74.5,1 +2246,38,Female,125,89,179,55,103,122,107,5.5,28.9,80,168,Typical Angina,False,0.9,False,Never,3.6,53,7.1,47.7,False,3341,66.8,0 +2247,46,Male,155,98,119,37,59,162,145,6.7,28.6,79,188,Asymptomatic,True,0.7,True,Never,1.7,113,7.2,55.2,False,6989,90.9,0 +2248,60,Female,113,74,157,53,72,68,103,5.3,19.0,82,177,Non-Anginal Pain,False,0.4,False,Never,16.3,182,6.9,75.5,False,6159,55.4,0 +2249,53,Female,127,75,130,53,54,130,106,6.0,23.7,70,173,Asymptomatic,False,0.1,False,Never,8.3,206,8.4,38.1,False,7755,66.1,0 +2250,58,Female,98,70,170,74,89,35,85,5.1,23.3,78,161,Non-Anginal Pain,False,1.9,True,Never,0.3,166,6.1,23.8,True,7410,88.3,0 +2251,66,Female,137,81,218,63,129,205,108,5.7,24.1,97,158,Non-Anginal Pain,False,0.5,False,Never,0.4,12,6.5,40.7,False,4877,79.2,0 +2252,23,Female,101,75,189,41,127,104,100,4.6,18.3,78,200,Non-Anginal Pain,False,0.1,True,Never,0.9,158,7.9,43.5,False,3668,55.4,0 +2253,73,Male,137,80,158,47,79,158,116,5.8,23.7,86,151,Asymptomatic,False,0.5,False,Former,7.6,79,8.5,43.3,False,1689,41.0,0 +2254,29,Female,118,72,172,69,56,162,143,6.3,25.5,75,205,Asymptomatic,False,0.7,False,Never,1.7,220,6.5,46.9,True,6891,64.6,0 +2255,54,Male,149,103,203,47,116,130,135,6.4,28.2,81,164,Atypical Angina,False,2.4,False,Former,1.6,34,6.2,84.4,False,5858,62.2,0 +2256,56,Male,140,90,208,46,129,162,112,5.7,26.7,61,139,Typical Angina,False,1.5,False,Never,6.4,227,7.5,52.7,False,6626,59.8,1 +2257,52,Female,129,86,179,42,95,224,130,5.8,31.0,82,168,Typical Angina,True,1.7,False,Current,2.6,131,8.4,45.4,False,4342,22.2,1 +2258,56,Female,139,79,194,42,122,126,124,6.0,25.9,90,183,Asymptomatic,False,0.1,True,Former,0.4,153,5.0,71.0,True,5608,77.6,0 +2259,47,Female,116,67,166,53,79,153,130,6.0,22.5,86,188,Asymptomatic,False,0.5,False,Never,4.4,157,7.6,34.5,False,833,65.5,0 +2260,44,Male,123,76,185,48,110,134,154,6.5,20.5,73,197,Typical Angina,False,0.3,False,Former,5.0,32,7.6,65.6,False,3443,36.2,0 +2261,53,Male,134,76,202,50,104,191,126,5.6,27.8,79,156,Typical Angina,True,1.9,False,Never,6.5,179,6.6,29.6,False,1498,56.9,1 +2262,56,Male,150,94,117,45,35,222,113,5.5,24.5,71,179,Non-Anginal Pain,False,0.6,False,Never,2.7,82,7.1,36.2,False,2753,58.4,0 +2263,45,Male,114,63,192,70,83,227,74,5.4,22.4,84,178,Non-Anginal Pain,False,1.3,True,Current,2.4,123,5.6,38.4,True,7190,43.3,0 +2264,58,Female,113,78,204,66,109,174,139,6.0,31.5,82,156,Non-Anginal Pain,False,1.1,True,Former,0.5,181,6.7,56.6,False,6195,73.9,0 +2265,43,Male,149,91,202,44,116,240,169,7.2,37.3,98,156,Non-Anginal Pain,True,1.6,True,Never,21.5,73,7.9,56.0,False,6827,65.5,1 +2266,46,Male,139,96,188,61,85,170,119,5.7,28.3,91,167,Typical Angina,False,6.5,True,Former,20.2,111,6.9,34.0,False,7165,57.5,1 +2267,51,Female,139,92,235,71,138,145,121,4.8,25.5,75,177,Asymptomatic,False,0.2,False,Current,4.4,200,7.3,58.7,True,7742,66.2,0 +2268,60,Female,146,88,165,63,75,88,136,6.0,20.5,75,156,Asymptomatic,False,1.9,False,Never,8.1,136,8.7,86.9,True,8097,94.1,0 +2269,50,Male,124,79,182,57,85,150,123,6.2,23.1,83,179,Non-Anginal Pain,False,1.1,False,Never,10.8,97,5.4,68.2,True,7690,56.7,0 +2270,59,Female,135,71,184,53,92,191,108,5.3,21.1,87,162,Asymptomatic,False,0.4,True,Never,1.2,236,8.3,42.6,True,8310,58.1,0 +2271,75,Male,138,93,132,60,46,135,158,7.2,28.0,98,146,Atypical Angina,False,1.9,False,Never,4.2,131,8.1,35.5,True,8441,82.5,0 +2272,48,Male,118,74,202,71,86,200,120,5.9,29.1,77,169,Asymptomatic,False,0.4,False,Never,14.5,150,6.4,73.7,True,8400,67.9,0 +2273,71,Male,129,88,202,50,117,153,119,5.4,18.8,76,139,Asymptomatic,False,0.9,False,Former,8.1,111,6.1,39.6,False,2515,39.1,1 +2274,37,Male,118,80,155,59,89,73,135,6.1,29.7,89,181,Asymptomatic,False,1.0,False,Current,11.9,209,6.6,27.2,True,8219,52.0,0 +2275,62,Male,139,91,224,51,137,163,139,5.6,25.8,88,124,Asymptomatic,True,0.4,False,Current,10.6,42,6.3,42.3,False,6559,50.6,1 +2276,51,Male,132,86,180,33,102,217,149,7.4,20.8,85,139,Atypical Angina,True,0.6,False,Never,5.8,38,5.5,53.6,False,6091,48.4,1 +2277,81,Female,106,56,212,72,128,47,110,5.7,20.6,97,163,Asymptomatic,False,1.5,True,Never,10.5,209,6.5,37.5,False,3728,53.7,0 +2278,47,Male,120,69,180,53,77,226,107,5.6,29.2,76,184,Asymptomatic,False,0.1,False,Never,18.1,128,8.8,40.2,True,8738,64.5,0 +2279,43,Male,124,74,249,48,161,148,119,6.1,25.7,85,150,Asymptomatic,True,0.4,False,Never,1.7,145,6.1,43.5,False,4721,32.3,1 +2280,68,Male,153,94,205,54,99,208,132,5.9,27.3,84,167,Asymptomatic,False,1.0,False,Never,1.9,126,7.8,47.5,True,4352,60.8,0 +2281,59,Male,124,80,217,51,133,147,68,4.7,23.4,83,156,Atypical Angina,True,0.6,True,Former,2.0,114,7.9,70.8,False,7585,59.7,0 +2282,55,Male,135,87,175,46,93,124,91,4.9,24.3,94,142,Typical Angina,True,1.6,False,Former,6.8,27,7.5,49.0,False,2072,60.9,1 +2283,22,Male,118,85,223,73,135,121,127,5.6,27.5,89,200,Atypical Angina,True,0.3,False,Never,3.0,133,6.2,47.7,True,8129,70.7,0 +2284,59,Male,135,79,222,77,113,105,132,5.9,27.4,86,147,Asymptomatic,True,1.1,False,Current,3.1,173,6.5,38.8,False,1647,46.2,1 +2285,52,Female,127,69,177,48,113,65,115,5.7,22.4,83,183,Non-Anginal Pain,False,1.3,False,Former,2.9,83,7.0,27.5,False,5113,64.6,0 +2286,55,Male,116,75,164,50,80,189,109,5.0,25.2,82,176,Asymptomatic,False,2.5,False,Never,3.2,175,7.3,52.1,False,6010,55.9,0 +2287,44,Male,116,75,196,47,99,182,60,4.0,24.5,78,193,Non-Anginal Pain,False,0.6,True,Never,2.0,243,6.9,62.4,False,8055,67.9,0 +2288,71,Male,139,96,149,48,67,101,118,5.9,22.6,74,147,Typical Angina,False,0.3,False,Never,6.6,147,8.1,46.0,False,7096,76.3,0 +2289,54,Female,85,52,236,53,146,125,101,4.9,15.0,61,175,Atypical Angina,False,1.1,False,Never,2.7,249,8.0,32.0,True,7304,56.1,0 +2290,51,Male,93,64,198,52,105,192,148,6.3,26.7,71,160,Non-Anginal Pain,True,0.2,False,Former,3.5,237,5.3,21.6,True,9380,63.8,0 +2291,33,Female,120,80,156,45,94,92,168,6.8,29.5,75,176,Non-Anginal Pain,False,1.2,True,Never,0.9,83,6.8,34.2,False,4107,70.9,0 +2292,51,Male,120,81,219,33,148,104,144,6.7,26.1,71,150,Non-Anginal Pain,True,2.2,False,Never,4.7,39,6.0,40.6,False,4106,52.4,1 +2293,39,Male,102,50,150,33,96,157,91,5.0,29.9,75,185,Asymptomatic,False,0.3,False,Former,2.4,220,6.4,55.2,False,5099,79.6,0 +2294,71,Female,139,80,243,76,138,165,104,5.7,28.5,76,144,Asymptomatic,True,0.3,False,Never,2.1,176,3.4,18.7,True,6820,36.5,0 +2295,57,Female,127,88,226,47,161,155,108,5.5,25.3,67,147,Non-Anginal Pain,True,1.1,False,Current,0.8,171,7.0,43.8,False,4600,41.3,1 +2296,46,Male,157,102,217,36,124,243,150,6.8,37.3,85,179,Asymptomatic,False,3.4,False,Current,13.9,123,8.9,37.1,False,1251,43.6,1 +2297,51,Male,132,93,215,52,114,172,100,5.3,25.1,69,165,Asymptomatic,True,3.0,True,Never,9.0,138,6.6,30.3,False,4774,61.4,1 +2298,72,Male,155,98,195,56,117,183,124,5.9,31.1,87,130,Non-Anginal Pain,False,1.1,False,Former,6.9,115,7.5,69.6,False,1684,63.4,0 +2299,55,Female,118,70,191,67,88,197,113,5.9,31.0,78,166,Non-Anginal Pain,False,1.6,False,Never,1.4,144,7.7,66.8,False,4554,58.9,0 +2300,53,Male,140,101,209,46,134,113,131,6.3,32.9,100,158,Asymptomatic,True,1.7,True,Former,8.2,58,5.5,38.3,False,4728,40.5,1 +2301,78,Female,114,65,245,75,135,137,158,6.4,25.2,81,155,Asymptomatic,False,0.6,True,Never,8.2,112,6.8,64.5,True,6746,69.0,0 +2302,58,Female,131,85,180,48,101,126,110,5.2,29.8,79,165,Non-Anginal Pain,False,1.0,False,Never,4.5,184,8.0,52.9,True,6518,71.5,0 +2303,65,Male,160,89,150,41,65,193,109,4.9,26.2,81,160,Non-Anginal Pain,False,0.6,True,Former,11.9,178,7.5,90.2,False,7581,57.9,0 +2304,49,Male,112,81,200,47,133,147,91,5.5,27.9,85,169,Typical Angina,True,0.9,False,Never,3.0,159,6.6,20.4,False,6440,47.9,1 +2305,49,Female,146,91,186,44,109,145,100,4.7,23.9,79,161,Non-Anginal Pain,False,0.1,False,Never,13.9,169,7.4,46.1,True,4484,84.9,0 +2306,65,Male,136,93,208,66,126,95,148,6.4,27.4,57,155,Non-Anginal Pain,True,1.1,False,Never,1.5,168,5.5,40.6,False,7391,47.3,0 +2307,53,Male,135,81,167,51,89,148,94,5.0,27.0,92,171,Atypical Angina,False,0.1,False,Former,8.6,132,7.4,59.7,False,6793,61.2,0 +2308,58,Male,114,65,197,57,92,251,110,5.4,23.4,63,182,Typical Angina,False,0.4,False,Former,25.3,138,7.2,28.6,False,6318,68.5,0 +2309,53,Female,114,66,228,78,108,180,139,6.4,22.7,83,178,Asymptomatic,False,2.5,False,Never,0.4,34,7.0,54.7,False,5557,63.1,0 +2310,54,Male,113,75,198,65,106,161,129,6.4,26.8,80,178,Asymptomatic,False,0.6,True,Never,11.9,224,6.7,49.3,False,6214,58.8,0 +2311,52,Male,159,107,183,43,104,184,113,5.6,31.2,74,176,Asymptomatic,False,0.2,False,Never,13.6,69,9.0,63.8,False,9187,76.9,0 +2312,36,Male,137,73,144,58,63,148,146,5.8,26.4,85,210,Typical Angina,True,2.2,False,Never,4.7,97,7.9,50.1,True,7174,61.8,0 +2313,71,Female,123,74,166,76,73,77,153,6.4,21.4,53,136,Asymptomatic,False,0.7,True,Never,5.9,121,5.6,31.6,True,6299,70.2,0 +2314,46,Female,107,64,230,66,123,249,141,6.0,26.7,80,199,Non-Anginal Pain,False,0.5,False,Former,7.9,103,6.5,44.2,False,4303,58.6,0 +2315,38,Male,125,78,207,46,127,166,116,5.9,23.4,61,182,Asymptomatic,False,0.1,True,Never,9.3,130,8.7,60.5,True,7042,88.2,0 +2316,55,Male,109,63,198,69,115,85,124,6.0,22.8,76,176,Typical Angina,False,0.2,False,Never,2.7,212,7.7,20.6,True,7434,73.5,0 +2317,45,Male,135,86,246,38,158,255,106,5.6,31.2,83,175,Atypical Angina,False,1.7,True,Never,25.5,200,6.7,47.7,True,6255,47.1,1 +2318,70,Male,118,73,227,20,159,220,144,7.1,32.8,86,126,Non-Anginal Pain,True,1.1,False,Current,15.3,129,6.2,37.7,False,6833,36.1,1 +2319,62,Female,137,99,203,66,97,94,127,5.9,25.3,77,178,Asymptomatic,True,1.0,False,Never,2.5,112,7.9,56.2,False,6772,82.1,0 +2320,46,Male,145,97,265,74,138,225,138,6.2,31.1,86,169,Atypical Angina,True,1.9,False,Never,5.6,92,6.5,95.7,False,2852,52.5,1 +2321,42,Female,132,74,160,67,66,132,97,5.7,21.9,75,201,Non-Anginal Pain,False,0.5,False,Never,17.9,214,6.7,57.0,True,7727,66.8,0 +2322,62,Male,151,100,199,67,97,195,135,6.4,31.3,103,129,Asymptomatic,False,1.8,False,Current,8.3,24,5.4,52.3,False,2840,36.7,1 +2323,45,Male,126,81,191,49,112,127,117,5.9,26.9,80,167,Asymptomatic,False,3.6,False,Current,9.7,157,8.0,54.8,False,10238,56.8,1 +2324,36,Female,143,92,197,54,105,257,151,6.5,30.9,83,181,Asymptomatic,False,1.7,True,Never,6.2,175,7.2,61.2,True,8905,42.4,0 +2325,32,Female,112,69,151,45,88,49,109,6.0,24.2,71,194,Non-Anginal Pain,True,0.3,True,Former,0.5,48,7.6,60.9,False,4899,80.4,0 +2326,63,Male,148,88,218,66,136,96,112,5.6,33.2,83,133,Asymptomatic,True,0.7,True,Former,3.4,111,6.1,45.1,False,1326,77.8,1 +2327,33,Female,121,79,154,69,64,179,90,4.9,20.8,73,207,Non-Anginal Pain,False,1.4,False,Never,1.6,287,6.7,46.5,True,10270,65.1,0 +2328,38,Female,101,54,188,79,86,180,134,5.8,19.0,70,150,Asymptomatic,False,1.1,False,Former,4.9,55,7.1,60.8,False,7757,54.5,1 +2329,63,Male,143,99,242,67,133,190,108,5.5,25.8,73,173,Atypical Angina,True,2.7,False,Former,7.4,130,7.7,83.8,False,6421,47.6,1 +2330,64,Female,134,74,254,45,169,201,139,6.5,27.1,77,132,Asymptomatic,False,4.5,True,Never,5.0,170,7.6,53.2,True,6315,61.6,1 +2331,38,Female,120,77,215,55,114,184,109,5.3,26.2,91,204,Asymptomatic,False,0.6,True,Never,3.2,172,7.0,35.2,True,7468,39.9,0 +2332,46,Female,97,62,208,70,129,144,124,6.1,24.6,71,177,Typical Angina,True,1.3,False,Never,3.9,143,7.6,38.4,True,9008,65.1,0 +2333,66,Female,125,85,204,74,105,174,127,5.8,22.3,77,191,Asymptomatic,False,1.2,False,Never,3.9,231,6.4,32.5,True,7848,61.4,0 +2334,56,Female,124,80,228,84,136,35,77,4.8,15.6,78,167,Asymptomatic,False,0.5,False,Never,0.4,173,6.2,58.0,False,4687,74.6,0 +2335,48,Female,102,64,194,50,133,102,121,5.8,28.3,88,186,Non-Anginal Pain,False,2.2,True,Current,1.3,149,5.8,36.0,False,5207,71.2,1 +2336,55,Male,127,88,157,47,106,52,129,6.5,19.7,89,163,Asymptomatic,False,0.5,False,Current,6.4,194,7.4,52.0,False,5510,52.2,0 +2337,59,Male,139,92,163,30,84,161,116,6.1,26.6,96,171,Non-Anginal Pain,False,1.0,False,Never,9.2,122,7.3,92.8,True,9145,68.8,0 +2338,39,Female,137,88,184,59,98,102,120,5.5,23.4,94,187,Asymptomatic,False,0.4,True,Former,5.0,86,7.2,30.4,False,2532,55.5,0 +2339,40,Male,120,64,229,69,135,175,106,5.4,23.0,74,190,Asymptomatic,False,0.9,False,Never,6.0,218,6.2,59.8,True,6846,53.5,0 +2340,68,Female,137,90,217,60,131,113,131,6.0,24.3,76,143,Asymptomatic,False,3.0,False,Never,1.8,102,7.1,56.0,True,6715,52.4,0 +2341,76,Female,120,82,198,62,111,141,119,5.7,23.3,83,135,Non-Anginal Pain,True,1.0,False,Never,1.7,98,6.6,34.5,False,5081,81.4,0 +2342,65,Male,124,74,237,52,136,243,132,6.5,27.2,95,155,Non-Anginal Pain,True,0.5,False,Former,8.8,64,6.2,61.2,True,4607,63.2,1 +2343,51,Male,136,86,124,37,67,105,118,5.3,24.3,72,174,Non-Anginal Pain,False,0.6,False,Never,15.7,250,7.4,23.1,True,11676,87.3,0 +2344,45,Female,121,79,186,47,103,175,107,5.5,34.7,79,201,Asymptomatic,False,0.4,True,Former,3.4,63,6.4,44.9,False,5783,66.6,0 +2345,54,Female,108,63,209,72,111,171,131,6.2,21.2,76,154,Typical Angina,False,0.5,True,Never,3.1,165,8.9,54.7,False,9145,38.9,0 +2346,67,Female,122,65,198,51,119,198,165,7.5,24.3,82,165,Asymptomatic,False,1.0,False,Current,18.8,198,7.5,42.5,True,6919,26.8,0 +2347,70,Male,139,91,230,45,148,170,151,6.9,27.7,71,129,Typical Angina,False,0.6,False,Never,3.4,65,6.6,24.3,False,4916,78.5,1 +2348,53,Female,151,98,213,65,114,173,125,5.6,28.4,76,165,Non-Anginal Pain,False,1.3,True,Never,6.7,78,5.8,67.9,False,2910,48.2,0 +2349,59,Male,136,90,190,56,94,163,146,6.6,28.5,88,163,Asymptomatic,False,0.9,False,Never,23.6,57,7.1,49.6,False,4174,65.3,0 +2350,35,Female,114,69,174,45,101,141,168,6.3,25.4,81,192,Asymptomatic,False,0.9,True,Never,4.0,136,8.2,52.5,True,10245,43.6,0 +2351,52,Female,117,71,243,56,137,228,141,6.8,24.2,79,150,Typical Angina,False,2.0,True,Former,0.7,92,6.1,8.3,False,6844,68.4,1 +2352,73,Female,133,85,202,69,99,204,75,4.5,25.9,85,143,Asymptomatic,False,0.0,True,Former,8.7,96,6.6,42.5,False,6063,45.3,1 +2353,52,Female,130,82,225,61,132,157,128,5.9,27.3,77,161,Non-Anginal Pain,False,0.1,False,Former,1.1,123,6.6,64.6,False,5868,78.3,1 +2354,60,Female,125,89,172,52,93,150,122,6.3,27.5,76,125,Typical Angina,True,1.6,False,Never,3.7,40,6.2,76.4,False,3930,58.7,1 +2355,65,Female,132,84,200,57,103,165,122,6.4,25.1,92,129,Asymptomatic,True,0.3,True,Never,3.5,74,3.8,65.4,False,4598,52.8,1 +2356,64,Female,129,85,186,40,99,202,99,4.9,30.9,86,138,Asymptomatic,True,2.5,False,Current,18.0,60,6.4,43.1,False,4669,56.2,1 +2357,55,Male,109,62,229,32,126,266,133,6.3,33.0,93,150,Atypical Angina,True,0.8,False,Current,2.0,141,7.5,45.0,True,8753,48.8,1 +2358,46,Female,124,77,218,68,135,96,160,7.0,25.8,82,179,Asymptomatic,False,2.4,False,Never,2.3,121,5.9,19.8,False,1628,45.7,0 +2359,25,Male,123,80,154,31,97,133,162,7.2,27.5,88,194,Asymptomatic,False,2.0,False,Current,5.6,117,7.0,42.2,False,4127,68.4,1 +2360,39,Male,125,78,216,58,110,212,68,4.5,19.3,78,178,Asymptomatic,False,0.9,False,Never,3.8,217,8.0,47.3,True,7778,40.4,0 +2361,50,Female,155,86,193,71,94,152,126,6.3,26.7,92,169,Non-Anginal Pain,False,0.4,True,Never,3.5,136,7.3,44.0,False,4658,65.7,0 +2362,63,Male,133,82,188,46,111,176,137,6.3,28.9,87,148,Asymptomatic,False,1.2,True,Never,2.7,69,5.8,38.5,False,4122,56.3,0 +2363,56,Male,143,79,239,52,160,117,150,6.0,24.4,72,137,Asymptomatic,True,1.2,False,Former,2.4,58,5.7,47.8,False,5307,57.3,1 +2364,68,Female,127,86,195,54,102,226,98,4.7,28.9,79,166,Typical Angina,False,0.3,False,Current,1.7,106,7.3,48.1,False,1423,32.6,0 +2365,38,Male,137,81,198,78,92,122,101,5.5,22.3,88,191,Non-Anginal Pain,False,0.4,False,Never,2.0,123,4.2,47.2,True,7106,49.1,0 +2366,31,Female,119,69,163,54,90,149,128,5.8,25.0,77,186,Typical Angina,False,0.8,False,Never,0.6,157,7.1,41.3,False,6369,38.6,0 +2367,61,Female,143,90,233,42,152,203,112,5.9,27.7,73,132,Non-Anginal Pain,True,1.9,False,Former,0.1,204,6.9,61.0,True,10336,28.0,1 +2368,77,Female,125,89,219,41,144,124,94,4.9,18.9,76,172,Non-Anginal Pain,False,0.3,False,Former,1.7,108,6.4,49.1,False,5283,44.8,0 +2369,56,Female,131,80,167,26,103,168,142,6.1,25.9,81,123,Atypical Angina,False,1.9,False,Former,7.1,46,7.0,60.1,False,1193,62.9,1 +2370,46,Female,114,75,199,82,89,138,83,4.4,20.5,94,178,Non-Anginal Pain,True,4.4,True,Former,2.6,183,5.5,60.5,False,6403,81.3,0 +2371,65,Male,151,93,145,24,82,184,120,5.9,21.3,75,130,Non-Anginal Pain,True,1.0,False,Former,9.0,40,7.2,30.0,False,5602,61.6,1 +2372,72,Male,133,71,208,48,118,170,91,4.4,26.1,74,129,Asymptomatic,False,1.7,False,Current,5.2,205,8.3,57.6,False,1921,40.8,1 +2373,38,Female,135,82,134,64,58,112,166,7.3,27.5,75,201,Non-Anginal Pain,False,0.3,True,Never,4.7,115,9.4,75.3,False,5334,52.7,0 +2374,49,Male,142,91,202,50,129,141,92,5.3,24.4,79,174,Atypical Angina,False,1.1,True,Never,10.1,153,6.9,59.9,False,5776,37.2,0 +2375,67,Female,137,94,198,69,95,150,118,6.0,26.0,78,151,Asymptomatic,False,0.3,False,Former,2.3,100,7.9,57.8,False,777,58.2,0 +2376,57,Male,99,58,240,85,140,103,128,5.8,21.7,86,154,Atypical Angina,False,2.2,False,Current,1.6,117,7.6,30.6,True,6280,45.3,1 +2377,43,Male,142,93,159,39,96,134,72,4.4,29.8,82,168,Asymptomatic,False,0.8,False,Never,3.2,77,5.1,62.5,False,4176,61.8,0 +2378,50,Female,126,85,185,38,126,114,107,5.0,29.6,87,144,Asymptomatic,False,0.9,False,Never,0.1,121,8.2,55.3,True,6678,43.7,0 +2379,42,Female,105,73,214,73,117,147,116,5.1,20.9,83,190,Asymptomatic,False,0.6,False,Never,2.2,84,6.3,75.2,True,3441,58.7,0 +2380,35,Male,117,74,129,46,58,84,101,5.3,23.8,90,168,Non-Anginal Pain,False,0.2,False,Never,5.2,112,7.0,56.7,False,6411,47.0,0 +2381,58,Male,149,91,181,38,120,114,107,5.0,19.8,75,146,Asymptomatic,False,0.3,False,Never,2.8,16,6.4,61.1,False,6223,51.8,0 +2382,37,Male,118,64,213,53,116,236,129,6.1,28.1,96,209,Asymptomatic,False,0.1,True,Never,6.8,84,8.0,64.6,False,4434,48.1,0 +2383,52,Female,126,93,204,49,114,182,143,6.5,26.6,96,143,Asymptomatic,False,1.1,False,Never,0.1,159,7.1,43.3,True,8869,67.3,1 +2384,41,Female,128,81,128,57,49,109,77,5.0,22.7,93,194,Typical Angina,False,0.8,True,Never,3.5,233,7.1,59.6,True,7045,68.6,0 +2385,59,Female,132,79,189,61,90,175,60,4.0,20.3,85,142,Atypical Angina,False,0.1,False,Current,8.7,210,7.4,57.4,True,5001,45.7,0 +2386,49,Female,150,98,176,53,97,182,113,5.5,27.0,86,153,Non-Anginal Pain,False,1.1,False,Current,0.3,74,6.2,41.9,True,7841,32.3,0 +2387,50,Male,127,90,181,65,98,67,164,6.7,21.6,68,162,Typical Angina,True,0.5,False,Never,10.3,82,5.9,70.2,False,2658,73.9,1 +2388,34,Male,106,61,196,66,83,221,113,5.9,21.2,92,184,Asymptomatic,False,1.4,False,Former,5.3,341,6.4,43.9,True,11925,100.0,0 +2389,56,Female,143,92,142,35,96,54,122,5.5,24.0,84,143,Asymptomatic,True,1.8,False,Never,2.9,67,6.1,46.0,False,5824,42.3,0 +2390,48,Male,127,74,186,46,117,93,125,5.7,17.4,81,197,Asymptomatic,False,0.1,False,Never,5.7,209,8.3,23.7,False,5028,80.8,0 +2391,43,Male,132,89,177,64,82,149,112,5.7,15.5,86,168,Atypical Angina,False,1.3,False,Never,2.3,166,8.4,56.7,False,6624,61.6,0 +2392,59,Female,128,79,215,48,136,185,100,5.2,23.2,86,137,Asymptomatic,False,1.4,True,Current,3.0,201,9.0,46.5,True,6195,51.4,1 +2393,65,Female,96,51,188,65,94,148,106,5.1,22.9,82,157,Non-Anginal Pain,False,1.7,False,Never,1.4,235,6.7,0.0,True,7766,60.5,0 +2394,75,Male,115,73,214,87,105,155,99,4.8,16.2,69,125,Typical Angina,False,3.3,True,Current,5.2,164,9.0,43.9,True,6299,43.7,1 +2395,56,Female,118,70,182,52,108,65,122,5.3,27.4,81,181,Non-Anginal Pain,False,0.5,True,Never,1.1,139,6.8,48.3,False,11188,70.8,0 +2396,56,Male,127,97,195,54,116,107,86,5.6,26.7,81,152,Asymptomatic,False,0.3,False,Former,3.6,35,8.2,44.1,False,6399,63.4,0 +2397,41,Male,147,95,185,41,105,150,103,5.7,23.1,67,150,Asymptomatic,False,1.0,True,Never,8.5,162,7.2,77.4,False,2889,71.5,1 +2398,45,Male,101,62,191,83,86,121,104,6.0,26.2,77,173,Asymptomatic,False,0.5,False,Former,4.0,172,7.4,33.4,True,10906,77.8,0 +2399,68,Male,116,80,183,53,106,143,131,5.4,26.6,70,177,Asymptomatic,False,0.2,False,Never,2.8,57,6.1,25.1,False,3941,63.4,0 +2400,48,Female,99,57,203,52,136,113,133,6.4,24.3,90,176,Asymptomatic,True,0.6,False,Never,1.5,87,8.0,64.6,False,5334,61.6,1 +2401,77,Male,137,91,163,52,64,209,129,6.3,28.4,72,151,Asymptomatic,False,1.7,False,Never,10.3,300,6.4,59.1,True,4268,54.6,0 +2402,37,Female,129,86,208,82,117,35,118,5.4,20.4,78,175,Non-Anginal Pain,False,0.2,False,Former,2.6,217,8.2,60.5,False,7812,82.3,0 +2403,52,Male,95,62,190,67,102,60,116,6.1,26.8,84,173,Asymptomatic,True,0.8,False,Former,2.1,175,5.8,52.8,False,5875,66.3,0 +2404,51,Male,104,58,147,68,53,211,82,5.0,28.4,91,162,Atypical Angina,False,2.0,True,Former,7.1,141,7.4,51.0,True,5278,59.3,0 +2405,45,Female,119,76,216,52,123,160,138,6.5,23.9,79,157,Typical Angina,False,0.7,False,Never,2.6,20,7.7,41.5,False,7029,49.9,1 +2406,50,Female,149,96,165,46,83,174,121,5.7,30.2,89,155,Atypical Angina,False,0.7,False,Never,5.8,102,8.2,49.5,False,7746,56.3,0 +2407,51,Female,114,70,202,60,97,186,127,6.1,28.0,67,134,Typical Angina,False,0.8,True,Former,2.1,102,6.5,51.0,False,3361,73.2,1 +2408,56,Female,133,75,214,53,118,211,126,6.1,26.3,80,169,Asymptomatic,False,0.5,False,Never,14.6,101,7.3,52.3,False,6004,50.6,0 +2409,53,Female,147,97,203,46,112,225,124,6.1,32.5,94,163,Atypical Angina,False,2.7,True,Current,15.3,109,5.7,76.7,False,2912,43.4,1 +2410,67,Male,143,92,165,45,97,115,150,6.6,20.3,106,166,Asymptomatic,False,0.9,False,Current,2.7,166,6.8,76.5,True,6931,67.2,0 +2411,86,Female,138,76,181,62,115,35,111,5.7,18.8,84,119,Asymptomatic,True,0.8,False,Current,5.5,111,8.2,64.6,False,7291,61.4,1 +2412,63,Female,139,81,176,53,104,161,116,6.1,29.5,86,160,Asymptomatic,False,0.8,True,Former,2.1,167,7.4,54.6,True,5683,45.9,0 +2413,59,Female,144,90,215,49,112,275,153,6.8,25.5,90,164,Asymptomatic,True,0.9,False,Former,1.1,52,7.0,33.0,True,6392,52.8,1 +2414,41,Female,142,90,187,80,90,35,131,5.8,22.4,84,191,Non-Anginal Pain,False,1.2,True,Former,1.4,167,6.2,42.5,False,6550,87.3,0 +2415,47,Female,105,65,222,45,134,167,147,6.4,32.9,104,171,Asymptomatic,True,0.8,True,Never,4.8,151,6.6,28.4,False,7857,40.2,1 +2416,32,Female,131,78,161,46,86,116,116,5.8,30.6,83,177,Non-Anginal Pain,True,1.4,False,Never,1.0,146,7.8,59.2,False,2795,42.8,0 +2417,60,Female,129,81,191,63,99,49,88,5.0,25.7,92,151,Asymptomatic,False,1.5,False,Current,2.5,124,6.9,47.3,False,3945,58.7,0 +2418,35,Female,122,78,161,68,67,143,92,5.2,19.6,81,182,Typical Angina,False,1.3,False,Never,2.8,180,6.9,39.3,False,6337,60.3,0 +2419,63,Male,138,89,193,36,133,169,95,5.0,27.8,80,128,Typical Angina,False,3.7,True,Former,2.1,74,5.7,46.0,False,5089,55.5,1 +2420,44,Male,119,90,182,44,123,89,137,6.1,23.4,87,199,Non-Anginal Pain,True,1.1,False,Never,2.7,100,7.6,37.4,False,6457,65.7,0 +2421,59,Male,118,83,195,57,121,120,70,4.5,21.2,81,169,Non-Anginal Pain,False,0.0,False,Never,4.8,196,6.2,34.1,False,4169,70.8,0 +2422,61,Male,131,102,185,35,114,168,167,6.4,23.7,77,137,Typical Angina,True,3.9,False,Never,5.4,147,9.5,47.1,False,5685,53.5,1 +2423,29,Female,114,80,157,50,88,89,104,5.1,21.5,80,200,Asymptomatic,False,0.4,True,Never,3.1,252,8.2,40.5,False,7757,66.2,0 +2424,44,Male,119,70,196,59,106,122,170,7.3,22.0,79,172,Asymptomatic,False,0.8,False,Never,2.8,100,7.3,36.8,False,3962,37.8,0 +2425,59,Female,132,80,195,57,110,184,127,6.1,16.9,85,163,Asymptomatic,False,0.1,False,Current,3.4,211,6.1,70.6,True,4656,62.4,0 +2426,60,Female,144,86,204,74,119,48,153,6.9,20.3,88,168,Asymptomatic,False,0.8,False,Never,0.6,130,7.4,40.7,False,5828,53.9,0 +2427,64,Female,132,94,171,60,102,122,138,6.6,28.5,82,175,Non-Anginal Pain,False,1.2,False,Never,2.0,229,6.0,78.6,True,6670,52.9,0 +2428,50,Female,142,88,160,46,99,81,108,6.1,24.3,87,172,Non-Anginal Pain,True,0.4,True,Former,5.8,182,8.5,37.6,False,3820,57.3,0 +2429,53,Male,140,82,170,45,87,189,118,5.3,20.7,85,207,Asymptomatic,False,0.3,False,Current,6.2,0,6.3,84.0,False,7486,52.3,0 +2430,77,Male,149,88,206,57,118,141,109,5.0,26.0,83,153,Asymptomatic,False,1.3,False,Former,8.9,66,7.8,61.9,True,8701,79.6,0 +2431,57,Male,133,83,188,55,85,205,77,4.9,19.3,73,166,Typical Angina,False,2.5,False,Never,6.3,179,8.8,77.2,False,7338,27.3,0 +2432,65,Male,141,96,210,21,152,150,140,6.5,27.6,77,126,Non-Anginal Pain,True,2.3,False,Former,6.1,15,6.0,30.8,False,500,64.6,1 +2433,51,Female,128,86,184,55,93,166,137,5.9,23.8,79,171,Atypical Angina,False,0.1,True,Former,0.8,170,7.4,50.8,True,7127,74.2,0 +2434,34,Male,134,90,189,42,113,164,128,6.1,27.0,78,182,Asymptomatic,True,1.9,False,Never,12.8,160,6.8,37.1,True,6710,94.3,1 +2435,60,Male,131,86,198,32,125,205,106,5.6,26.6,88,140,Asymptomatic,False,2.4,True,Current,2.8,135,7.6,57.7,True,7854,59.8,1 +2436,61,Female,123,64,185,42,132,78,124,6.0,23.6,86,140,Asymptomatic,False,1.2,True,Former,1.8,202,5.8,43.1,True,9150,67.6,1 +2437,66,Male,147,91,182,57,102,127,159,6.8,26.8,85,136,Atypical Angina,False,0.6,False,Former,2.8,142,7.3,51.7,False,4437,46.2,1 +2438,42,Female,117,81,182,43,102,162,89,5.0,34.2,98,167,Atypical Angina,False,1.6,False,Current,3.0,56,7.0,32.8,False,1451,63.1,1 +2439,45,Male,124,82,214,60,115,202,107,5.9,25.5,77,156,Non-Anginal Pain,False,1.9,False,Former,6.1,160,9.2,53.9,False,5180,46.0,0 +2440,26,Male,114,74,160,67,71,122,92,4.4,22.7,79,210,Asymptomatic,False,1.3,False,Former,5.2,105,7.9,46.4,False,7800,45.2,0 +2441,61,Male,136,86,152,41,111,38,85,4.8,29.6,74,142,Non-Anginal Pain,False,0.8,True,Never,1.9,187,9.4,25.0,False,4284,48.4,0 +2442,65,Male,121,74,236,68,127,206,110,4.7,22.6,90,173,Asymptomatic,False,0.6,False,Current,7.8,95,8.3,50.6,False,5675,39.9,0 +2443,45,Male,155,98,123,30,67,112,98,5.1,31.7,83,181,Asymptomatic,False,0.6,True,Current,5.8,77,7.9,43.4,True,5534,53.7,0 +2444,48,Male,120,80,154,51,81,69,104,5.6,22.1,76,186,Typical Angina,False,1.5,False,Never,4.5,167,6.7,50.3,True,7945,68.5,0 +2445,51,Male,131,70,216,52,116,232,115,6.3,29.5,76,179,Non-Anginal Pain,False,1.4,False,Never,7.5,156,8.8,53.9,True,3347,46.3,0 +2446,75,Female,132,88,211,80,115,67,123,6.0,23.4,82,152,Atypical Angina,False,0.2,False,Never,3.2,164,9.2,34.1,True,9706,85.6,0 +2447,66,Female,142,96,190,54,106,183,94,4.7,20.9,85,125,Non-Anginal Pain,True,0.4,False,Current,2.9,146,8.5,44.4,False,4253,58.0,1 +2448,69,Male,126,82,174,41,99,156,117,5.4,24.8,78,131,Asymptomatic,True,1.4,False,Current,6.2,126,9.2,41.8,False,500,46.9,1 +2449,52,Female,126,89,214,37,136,155,142,6.9,26.9,84,151,Atypical Angina,False,0.9,True,Current,3.0,173,6.6,48.6,False,6773,59.0,1 +2450,48,Male,127,67,166,41,112,90,120,5.5,28.4,77,150,Atypical Angina,True,1.5,False,Never,1.9,58,7.1,46.3,False,6607,51.0,1 +2451,68,Male,154,101,174,45,92,133,137,6.5,25.9,59,118,Typical Angina,True,0.4,True,Never,4.7,176,6.7,67.4,False,6586,88.5,1 +2452,32,Female,112,59,143,45,89,56,91,5.4,22.3,78,164,Non-Anginal Pain,False,0.2,True,Never,0.1,119,7.5,46.7,False,3455,69.7,0 +2453,61,Female,121,79,157,72,77,89,134,6.5,17.2,73,170,Asymptomatic,False,0.6,True,Never,2.8,145,8.7,46.9,True,6516,60.8,0 +2454,37,Female,93,64,192,78,87,121,97,5.0,22.8,68,171,Asymptomatic,False,2.3,False,Never,4.3,201,8.4,36.8,True,7860,64.2,0 +2455,64,Female,131,71,180,67,89,158,113,5.5,23.4,73,112,Typical Angina,True,1.1,False,Never,8.3,60,6.7,59.9,False,3247,50.7,1 +2456,61,Female,124,86,217,53,129,154,106,6.1,33.0,83,160,Atypical Angina,False,1.0,True,Former,1.0,242,7.3,44.9,True,5546,55.0,0 +2457,42,Male,114,76,187,45,120,163,147,6.4,30.7,83,188,Atypical Angina,False,1.3,False,Former,2.6,140,9.0,42.9,False,2118,61.3,0 +2458,57,Male,142,95,223,58,126,198,120,5.8,24.4,76,178,Atypical Angina,False,0.4,False,Never,17.8,116,8.3,30.9,True,6459,54.1,0 +2459,39,Male,121,79,164,45,102,58,111,4.6,20.0,79,194,Atypical Angina,False,1.1,False,Former,7.4,173,7.4,71.4,True,5647,59.6,0 +2460,40,Female,116,68,204,59,116,182,100,5.3,22.6,72,192,Atypical Angina,False,1.9,False,Former,3.0,214,6.7,11.7,False,7329,51.3,0 +2461,49,Female,136,81,162,47,87,165,70,4.1,24.0,78,146,Atypical Angina,False,0.8,True,Current,0.6,187,7.5,22.7,True,6617,74.3,0 +2462,44,Female,107,65,206,74,90,175,93,4.4,26.4,93,189,Non-Anginal Pain,False,0.6,False,Never,1.6,163,8.8,28.8,False,4803,67.3,0 +2463,67,Female,152,90,211,68,106,250,156,7.2,28.6,80,129,Asymptomatic,True,1.4,False,Former,14.7,168,6.8,51.3,False,6045,45.1,1 +2464,81,Male,150,80,230,62,125,245,144,6.2,30.5,76,139,Non-Anginal Pain,False,0.8,False,Never,4.4,158,7.5,31.5,True,5665,44.3,0 +2465,54,Female,136,86,186,67,89,128,138,5.9,32.3,77,168,Asymptomatic,False,1.0,False,Never,3.4,168,7.4,8.7,True,7595,49.1,0 +2466,54,Male,147,88,229,75,135,102,92,5.1,24.6,70,167,Typical Angina,False,0.6,False,Never,3.0,119,9.5,43.9,False,7563,39.9,0 +2467,64,Female,125,70,141,47,44,214,117,6.0,26.9,87,164,Asymptomatic,False,0.9,False,Never,0.8,160,7.1,50.4,False,6131,73.5,0 +2468,50,Female,140,93,215,64,112,184,106,5.4,21.7,82,178,Atypical Angina,False,1.4,True,Never,12.0,89,7.5,56.1,False,5422,67.2,0 +2469,60,Male,145,83,190,35,117,141,146,6.7,33.5,78,162,Non-Anginal Pain,False,1.2,False,Former,4.3,96,6.9,25.9,False,4037,56.4,1 +2470,29,Female,111,87,185,68,96,125,114,5.2,18.0,67,203,Asymptomatic,False,2.5,True,Former,7.8,232,7.7,55.9,True,8246,52.1,0 +2471,45,Female,104,68,181,57,87,166,82,4.7,20.8,74,208,Asymptomatic,False,0.7,False,Current,2.5,247,6.6,2.6,True,10774,32.6,0 +2472,34,Male,116,64,217,78,129,53,97,5.1,16.1,73,186,Typical Angina,False,0.2,False,Never,3.6,197,6.7,66.3,True,9780,83.2,0 +2473,29,Male,101,62,162,44,99,111,103,5.2,26.5,94,166,Non-Anginal Pain,False,1.5,False,Never,11.3,34,6.5,52.2,True,7591,56.5,0 +2474,66,Female,139,85,201,58,129,49,139,6.2,29.6,85,125,Non-Anginal Pain,False,0.3,False,Never,1.7,109,7.2,59.0,True,6997,41.0,1 +2475,50,Male,112,72,144,62,67,128,128,6.1,26.8,72,153,Non-Anginal Pain,False,1.0,False,Former,1.5,234,6.2,25.6,True,9503,73.1,0 +2476,74,Female,125,90,173,78,96,75,132,6.3,22.9,81,144,Non-Anginal Pain,False,0.1,False,Never,0.3,233,7.6,20.7,True,8044,62.8,0 +2477,73,Female,169,106,165,50,89,66,116,5.8,25.4,73,136,Asymptomatic,True,1.3,False,Never,1.2,93,6.7,65.3,False,4812,53.6,1 +2478,53,Male,138,80,158,34,96,153,151,6.6,28.8,86,145,Asymptomatic,True,0.6,False,Former,1.7,0,7.7,50.0,False,1179,66.5,1 +2479,48,Male,110,80,184,64,93,160,105,4.8,25.1,89,173,Asymptomatic,False,1.4,False,Former,2.4,137,6.3,44.7,True,6073,68.4,0 +2480,44,Female,117,66,159,61,54,200,148,6.5,25.0,92,179,Non-Anginal Pain,False,0.5,False,Former,0.3,139,7.8,62.8,False,3898,77.8,0 +2481,22,Male,125,85,148,32,95,126,124,5.8,24.2,83,154,Atypical Angina,False,0.5,True,Former,9.2,35,5.7,63.7,False,4109,52.2,1 +2482,47,Female,142,100,217,57,125,218,87,4.6,25.3,86,169,Asymptomatic,False,0.9,False,Current,2.1,49,6.9,39.9,False,8047,27.0,0 +2483,50,Male,128,88,213,61,122,157,126,5.6,29.2,69,176,Asymptomatic,False,1.6,False,Never,2.0,124,6.7,84.8,False,8460,59.7,0 +2484,45,Female,129,88,188,62,84,186,113,6.2,15.4,69,188,Asymptomatic,False,2.6,False,Former,11.4,132,6.6,69.5,False,7032,99.5,0 +2485,41,Male,127,72,128,42,51,226,123,5.9,25.0,79,177,Non-Anginal Pain,False,0.6,False,Current,13.0,142,7.1,38.3,False,6414,50.8,0 +2486,53,Female,136,77,224,85,102,215,107,5.1,19.7,79,170,Typical Angina,False,0.6,True,Never,4.0,285,5.8,48.5,True,7217,59.2,0 +2487,49,Female,133,87,188,76,104,35,121,5.7,20.5,65,162,Non-Anginal Pain,False,0.5,False,Former,1.5,168,7.9,47.2,False,9159,60.0,0 +2488,56,Female,139,78,189,62,97,77,160,7.0,26.1,71,191,Asymptomatic,False,1.2,False,Never,0.4,192,7.2,42.0,False,3852,77.1,0 +2489,41,Female,119,76,190,48,126,174,129,5.6,25.7,85,185,Asymptomatic,False,0.0,False,Never,4.8,78,6.7,55.3,True,5688,79.2,0 +2490,78,Female,153,104,229,61,148,150,123,5.9,26.5,78,131,Atypical Angina,False,0.1,True,Former,9.1,135,7.0,48.0,True,6855,39.0,1 +2491,61,Female,160,106,230,56,110,227,122,6.1,23.8,90,167,Atypical Angina,False,0.6,False,Never,13.9,94,5.6,35.8,False,6081,66.7,0 +2492,52,Male,110,69,188,48,124,74,125,6.0,20.6,90,168,Typical Angina,False,0.6,False,Never,3.6,24,5.5,15.9,False,3406,64.6,1 +2493,44,Male,133,80,233,51,132,206,126,5.5,23.5,84,188,Asymptomatic,False,1.1,False,Former,3.0,115,6.3,63.6,False,7514,70.0,0 +2494,41,Male,127,90,188,48,116,69,118,5.6,19.4,93,172,Non-Anginal Pain,False,0.9,False,Never,2.3,169,6.1,57.5,True,10285,72.3,0 +2495,64,Female,109,68,199,61,119,100,71,4.6,17.0,84,150,Asymptomatic,False,0.8,False,Never,1.4,260,5.9,48.1,True,7888,50.7,0 +2496,48,Female,109,62,188,66,94,176,141,6.6,23.2,70,196,Asymptomatic,False,0.8,False,Never,5.7,219,8.1,62.4,False,6150,46.0,0 +2497,54,Male,132,92,186,47,119,122,130,6.2,25.6,76,148,Asymptomatic,True,1.2,True,Former,3.3,144,8.0,59.2,True,4920,58.2,1 +2498,59,Male,116,71,201,57,107,126,132,6.3,26.8,71,171,Asymptomatic,False,0.6,False,Never,2.3,245,6.4,45.9,True,7732,64.7,0 +2499,47,Male,123,88,164,50,92,99,124,5.7,28.0,78,172,Atypical Angina,False,1.1,False,Never,1.7,237,6.0,24.7,True,9894,79.3,0 +2500,57,Female,137,94,181,33,110,166,104,5.6,27.6,88,147,Non-Anginal Pain,True,0.6,True,Former,7.3,90,5.1,45.0,False,6582,39.7,1 +2501,30,Male,107,68,190,76,90,141,92,5.0,26.5,86,187,Asymptomatic,False,0.9,False,Never,1.6,307,3.9,7.5,True,6677,65.4,0 +2502,41,Female,120,72,173,63,99,149,79,4.6,19.1,82,162,Typical Angina,False,0.1,True,Never,8.2,209,7.3,40.3,True,8396,80.6,0 +2503,29,Female,112,83,120,27,65,169,107,5.3,24.7,80,202,Non-Anginal Pain,False,0.1,False,Never,1.9,108,8.6,44.8,False,5960,42.7,0 +2504,48,Male,112,72,254,85,137,144,158,7.2,25.4,64,178,Non-Anginal Pain,False,0.6,False,Never,6.3,262,6.8,83.9,True,4562,52.8,0 +2505,48,Male,132,76,188,56,110,101,121,5.8,21.8,62,183,Atypical Angina,False,1.1,True,Never,5.4,239,6.5,68.2,False,3825,77.8,0 +2506,76,Male,131,80,109,36,68,91,132,6.0,22.0,86,143,Non-Anginal Pain,True,1.0,True,Never,6.5,82,7.7,60.3,False,4230,49.7,1 +2507,43,Female,126,87,192,53,107,161,104,5.6,27.1,75,144,Atypical Angina,True,1.6,False,Current,12.9,153,8.3,55.2,False,7380,35.7,1 +2508,56,Male,154,104,197,30,104,275,60,4.2,28.1,76,166,Asymptomatic,False,0.8,False,Current,13.7,260,9.1,42.3,True,9348,48.6,0 +2509,59,Female,125,82,187,36,127,158,88,5.0,33.6,89,153,Non-Anginal Pain,False,1.4,True,Never,0.7,169,7.7,89.0,True,7472,61.9,1 +2510,72,Male,132,84,188,55,111,92,86,5.3,17.7,82,138,Asymptomatic,False,0.2,True,Never,5.4,202,4.0,39.5,False,5352,82.8,0 +2511,59,Male,109,78,167,66,74,179,104,5.7,28.6,76,160,Non-Anginal Pain,False,0.5,True,Never,5.6,133,7.1,30.7,False,6303,34.7,0 +2512,63,Female,148,97,209,72,104,177,100,5.5,31.2,76,161,Asymptomatic,False,1.4,True,Former,1.4,190,7.6,47.3,False,3961,74.4,0 +2513,77,Female,140,91,238,52,130,237,98,5.4,33.9,92,131,Non-Anginal Pain,False,0.9,False,Current,6.4,105,7.8,80.1,False,6856,52.3,1 +2514,32,Male,126,87,183,49,108,89,114,5.1,21.6,77,190,Non-Anginal Pain,True,1.5,True,Current,21.6,249,7.4,73.5,False,6103,81.5,1 +2515,46,Female,105,71,203,58,106,195,168,7.5,23.7,89,177,Atypical Angina,False,2.8,True,Never,0.7,216,9.1,27.2,True,5636,46.9,0 +2516,49,Female,131,87,198,75,78,153,150,6.3,19.6,81,182,Non-Anginal Pain,True,1.8,False,Former,2.0,134,6.9,32.5,False,2645,42.9,0 +2517,53,Male,133,84,236,66,117,196,117,6.1,18.4,63,160,Asymptomatic,False,1.1,True,Never,11.4,142,8.6,42.5,True,9484,73.5,0 +2518,45,Female,112,58,199,50,121,99,110,6.1,22.6,75,194,Non-Anginal Pain,False,0.5,False,Current,6.6,158,8.2,62.6,False,6527,73.0,0 +2519,67,Female,122,73,109,54,35,120,133,5.9,25.6,84,138,Typical Angina,False,1.1,False,Never,7.6,59,5.1,41.7,False,5250,42.6,0 +2520,45,Male,126,66,180,46,106,127,104,5.3,20.1,75,165,Asymptomatic,False,0.1,False,Never,4.7,72,6.6,70.3,False,6034,51.4,0 +2521,45,Male,138,90,199,41,113,235,119,5.9,25.7,88,181,Atypical Angina,False,0.2,False,Never,2.4,22,7.8,69.3,False,7484,39.2,0 +2522,59,Female,114,69,196,64,94,172,104,5.4,25.0,90,156,Asymptomatic,False,0.3,False,Former,3.6,124,6.8,38.2,False,8668,47.0,0 +2523,44,Male,116,80,170,60,99,73,129,5.6,28.4,83,176,Non-Anginal Pain,False,1.3,True,Former,3.6,202,6.1,33.1,True,9276,83.9,0 +2524,40,Female,138,92,180,51,93,167,153,7.1,26.7,75,186,Asymptomatic,False,1.1,False,Former,3.8,82,7.2,32.1,False,3126,86.6,0 +2525,37,Female,105,72,149,78,64,75,75,4.0,17.8,78,197,Atypical Angina,False,0.2,False,Never,3.0,258,6.8,87.6,True,9343,71.8,0 +2526,52,Female,131,80,156,52,65,172,131,6.4,23.2,67,171,Asymptomatic,False,0.3,False,Former,5.2,260,7.3,26.7,True,5232,59.6,0 +2527,67,Male,130,93,227,73,116,153,129,6.4,25.0,80,134,Asymptomatic,True,4.6,False,Former,12.3,138,5.7,20.4,False,6270,65.9,1 +2528,64,Female,134,87,166,49,85,169,127,5.8,25.5,82,144,Non-Anginal Pain,True,0.5,False,Former,10.5,178,8.3,56.7,True,10405,76.9,1 +2529,59,Female,133,100,200,69,108,205,117,6.4,22.2,67,157,Asymptomatic,False,0.6,False,Never,0.0,84,7.5,30.6,False,3434,44.7,0 +2530,55,Female,120,80,187,55,99,132,123,6.3,23.1,73,144,Asymptomatic,False,1.1,False,Former,4.8,72,6.9,38.6,False,4606,61.9,0 +2531,46,Male,125,94,211,54,113,209,107,5.5,22.3,80,173,Non-Anginal Pain,False,0.5,True,Current,2.5,104,8.9,73.6,True,4140,43.9,0 +2532,52,Male,114,77,110,61,56,63,94,5.9,18.3,85,189,Asymptomatic,True,0.4,True,Never,3.3,157,7.1,75.9,False,8024,67.6,0 +2533,37,Female,120,79,158,87,54,101,70,4.1,18.1,68,209,Asymptomatic,False,3.0,False,Never,3.8,208,8.4,42.7,False,5368,90.0,0 +2534,55,Male,137,86,194,62,113,106,125,5.9,19.6,65,156,Atypical Angina,True,4.7,True,Never,8.1,174,5.9,37.9,True,5841,60.7,1 +2535,66,Female,128,86,199,64,84,160,129,6.2,24.9,87,175,Asymptomatic,False,1.1,False,Former,1.0,186,6.6,30.5,False,824,49.6,0 +2536,32,Female,128,80,232,48,158,142,169,6.9,28.1,74,165,Asymptomatic,False,0.4,True,Current,3.0,72,7.1,51.6,False,5421,78.8,0 +2537,70,Male,152,91,186,60,89,194,138,6.4,28.7,85,114,Atypical Angina,True,1.4,True,Never,13.7,12,6.7,55.5,False,4573,35.1,1 +2538,25,Male,121,78,154,51,81,121,113,5.8,27.3,80,194,Non-Anginal Pain,False,1.0,False,Never,15.6,212,5.8,24.0,True,6550,62.8,0 +2539,43,Female,116,67,179,73,85,135,133,6.1,29.4,79,183,Non-Anginal Pain,False,0.9,False,Former,0.3,161,6.7,36.8,False,2985,69.7,0 +2540,39,Male,144,91,194,55,108,126,60,4.1,27.2,65,188,Asymptomatic,False,0.4,False,Former,12.1,309,6.8,42.3,True,8613,75.7,0 +2541,44,Male,134,100,191,60,81,272,132,5.8,28.1,69,147,Asymptomatic,False,0.8,False,Former,20.7,168,5.7,54.6,True,8641,49.7,0 +2542,49,Female,143,87,159,48,86,151,91,4.6,28.0,84,189,Asymptomatic,False,3.0,False,Former,4.7,129,6.3,69.1,False,3905,69.1,0 +2543,70,Male,132,86,158,25,112,148,89,4.8,26.8,85,141,Asymptomatic,True,1.0,False,Current,4.0,102,6.7,42.9,True,7052,42.4,1 +2544,40,Male,113,70,198,41,121,181,127,6.1,25.3,70,164,Atypical Angina,False,0.5,False,Former,6.0,142,6.4,28.4,True,8883,41.2,0 +2545,41,Female,117,77,180,43,110,112,161,7.0,23.8,70,178,Asymptomatic,False,0.1,False,Former,2.7,192,6.1,62.2,True,9437,37.7,0 +2546,44,Male,148,95,137,43,73,160,122,5.7,25.7,94,164,Non-Anginal Pain,False,0.1,False,Former,12.1,48,8.5,62.0,True,8748,64.6,1 +2547,46,Male,127,96,114,73,35,35,117,5.8,18.7,83,160,Non-Anginal Pain,False,0.0,False,Never,5.4,87,7.3,67.5,False,1348,76.4,0 +2548,45,Male,111,74,175,44,90,183,82,5.2,24.7,73,181,Non-Anginal Pain,False,0.0,True,Never,3.2,94,7.6,68.5,False,3630,62.0,0 +2549,36,Male,105,67,147,60,53,170,107,5.5,26.2,79,196,Non-Anginal Pain,True,0.5,False,Never,4.1,112,8.3,38.6,True,6210,80.4,0 +2550,56,Female,135,94,146,38,84,114,133,6.5,25.3,86,180,Non-Anginal Pain,False,1.5,True,Never,5.7,42,9.3,65.5,False,6376,54.2,0 +2551,51,Female,124,82,167,32,109,150,167,7.0,25.0,91,143,Atypical Angina,True,2.4,False,Current,1.6,94,7.7,48.0,False,6583,39.8,1 +2552,66,Male,131,87,182,52,87,197,111,5.7,28.2,83,140,Non-Anginal Pain,False,2.3,False,Never,9.7,69,6.4,67.9,False,3908,35.6,1 +2553,69,Male,119,68,226,54,117,224,143,6.5,30.9,89,166,Typical Angina,False,0.3,True,Never,15.1,285,7.9,45.8,True,10261,66.8,0 +2554,33,Female,113,84,122,57,60,53,135,6.2,17.5,61,210,Non-Anginal Pain,False,2.7,False,Current,2.4,150,7.9,46.6,False,7653,78.2,0 +2555,74,Female,129,80,198,56,114,180,131,6.0,30.7,73,149,Asymptomatic,False,1.2,False,Never,3.8,214,7.3,50.1,True,7834,54.1,0 +2556,60,Male,168,101,225,34,136,207,109,5.6,29.9,104,130,Asymptomatic,False,0.5,False,Current,8.6,135,6.5,48.0,False,5598,46.3,1 +2557,70,Female,105,70,172,64,80,111,87,5.1,24.4,85,172,Atypical Angina,False,0.8,True,Former,0.8,100,7.6,12.1,False,5455,90.8,0 +2558,52,Female,124,83,213,74,119,102,98,5.6,31.5,86,167,Asymptomatic,False,0.7,False,Former,4.4,114,8.0,14.2,True,3996,61.0,0 +2559,62,Male,132,89,192,48,113,134,122,5.6,29.9,80,128,Asymptomatic,False,2.7,False,Never,2.3,69,7.6,25.5,False,999,35.8,1 +2560,61,Female,129,76,212,61,120,179,95,5.0,25.8,70,149,Asymptomatic,True,0.2,False,Never,1.5,146,7.9,25.6,True,9413,61.0,0 +2561,71,Male,133,86,206,59,109,172,111,5.7,30.0,85,113,Typical Angina,True,0.0,False,Former,1.6,148,5.6,47.0,True,7820,93.0,1 +2562,45,Female,98,66,171,73,79,91,109,5.2,20.8,76,188,Non-Anginal Pain,False,0.1,True,Never,1.3,229,5.1,64.1,True,9767,66.1,0 +2563,45,Female,127,77,157,67,60,170,88,5.4,23.4,75,171,Typical Angina,False,0.9,True,Never,2.2,115,6.6,36.9,False,9608,78.2,0 +2564,50,Male,129,98,153,50,67,173,120,6.4,32.0,92,177,Asymptomatic,False,1.0,False,Never,7.5,164,7.5,56.1,False,4935,61.0,0 +2565,71,Female,111,52,211,45,130,157,125,6.1,30.2,87,129,Non-Anginal Pain,True,1.1,False,Former,14.5,30,5.3,52.0,False,4444,41.3,1 +2566,73,Female,121,79,233,68,129,210,118,5.5,16.9,68,147,Asymptomatic,False,1.1,False,Never,20.2,128,6.8,22.8,True,4456,47.8,0 +2567,39,Female,121,82,167,44,80,182,103,5.5,25.2,74,163,Non-Anginal Pain,False,0.3,False,Never,2.6,93,7.9,6.8,True,7959,63.2,0 +2568,60,Female,122,85,151,66,65,88,83,4.7,18.3,77,138,Atypical Angina,False,0.4,False,Former,2.4,143,5.9,65.5,False,5068,39.7,1 +2569,53,Female,132,86,172,69,74,201,134,6.1,27.8,84,164,Atypical Angina,False,2.9,False,Never,2.6,169,7.8,36.8,True,6347,63.3,0 +2570,50,Female,131,82,132,47,78,49,136,6.6,30.0,81,168,Asymptomatic,False,0.6,False,Former,1.3,114,7.3,64.1,False,2866,67.8,0 +2571,60,Female,133,90,204,66,94,236,72,4.5,27.8,80,135,Asymptomatic,True,0.2,False,Never,3.0,180,6.0,57.7,True,5481,56.4,0 +2572,78,Male,133,96,198,52,104,186,140,6.4,20.1,77,139,Non-Anginal Pain,True,0.3,True,Never,4.6,112,6.8,47.9,False,4354,58.5,1 +2573,61,Female,142,88,225,60,134,135,141,6.4,26.9,88,131,Atypical Angina,True,0.8,True,Never,0.1,67,7.5,26.4,False,3121,64.4,1 +2574,48,Male,127,75,233,45,131,231,110,5.6,25.5,94,156,Non-Anginal Pain,True,0.1,False,Former,8.1,29,6.5,20.0,False,3298,47.2,1 +2575,45,Male,145,93,208,44,139,149,144,6.9,34.8,97,165,Typical Angina,False,4.2,True,Never,5.3,63,6.6,44.2,False,7038,39.8,1 +2576,60,Male,118,70,178,41,108,122,131,6.5,26.2,78,155,Atypical Angina,False,4.7,False,Never,6.6,87,6.4,61.0,False,7051,37.2,1 +2577,57,Male,115,88,192,31,110,189,138,6.3,21.3,70,148,Asymptomatic,True,1.1,False,Former,16.4,98,8.5,22.8,False,5435,45.4,1 +2578,68,Male,133,87,185,59,83,215,135,5.5,21.2,87,153,Non-Anginal Pain,False,0.5,True,Never,3.5,188,7.6,38.5,True,6324,71.9,0 +2579,72,Female,149,97,202,61,113,142,177,7.7,35.7,71,121,Atypical Angina,False,4.7,False,Never,2.5,171,6.6,38.4,False,4088,78.1,1 +2580,57,Male,136,80,193,43,123,145,118,6.1,32.5,73,143,Asymptomatic,True,1.3,True,Never,8.2,120,8.6,40.3,False,7988,53.7,1 +2581,62,Male,153,97,153,51,69,199,120,5.4,29.7,79,166,Asymptomatic,False,0.5,True,Former,13.1,111,5.5,43.5,False,7198,66.1,0 +2582,76,Female,135,82,221,61,124,130,156,6.2,24.4,75,158,Asymptomatic,False,2.0,False,Current,4.7,189,6.0,36.9,True,7520,56.7,0 +2583,71,Male,134,98,127,74,55,35,103,5.6,17.0,76,152,Asymptomatic,False,0.9,False,Never,4.8,180,9.2,52.3,True,8250,73.0,0 +2584,42,Female,99,61,182,38,113,87,103,4.9,22.1,70,165,Atypical Angina,False,1.8,True,Former,2.0,72,6.2,45.2,True,10259,65.5,0 +2585,35,Male,138,79,180,37,112,214,83,4.7,26.0,80,194,Non-Anginal Pain,False,0.4,True,Current,6.4,72,7.2,76.1,True,6661,43.2,0 +2586,36,Male,96,50,237,76,134,133,104,5.9,24.5,84,197,Asymptomatic,True,1.0,True,Never,2.6,145,4.7,62.8,True,9642,64.1,0 +2587,31,Female,119,82,187,66,91,197,76,4.3,26.5,92,186,Non-Anginal Pain,False,0.2,False,Former,36.4,87,7.4,45.1,False,4175,48.5,0 +2588,59,Female,136,81,175,48,98,168,159,7.7,27.2,96,158,Asymptomatic,False,1.2,False,Never,8.1,0,8.1,44.7,False,6967,42.6,0 +2589,38,Male,122,81,261,53,148,204,157,6.5,30.2,77,181,Non-Anginal Pain,True,0.3,True,Never,9.8,78,7.4,58.4,False,4328,28.6,0 +2590,63,Male,121,76,163,64,74,131,135,5.5,22.2,81,171,Asymptomatic,True,0.3,True,Former,8.2,155,7.8,44.3,True,8345,56.1,0 +2591,43,Male,106,79,176,48,96,170,137,6.2,22.4,76,171,Non-Anginal Pain,False,0.3,True,Former,6.7,145,7.4,31.5,False,3449,48.0,0 +2592,66,Male,128,84,234,40,157,182,112,5.8,23.1,87,150,Typical Angina,True,1.1,False,Former,20.0,131,7.9,48.3,False,4098,66.1,1 +2593,62,Male,136,75,182,58,83,213,106,5.2,25.0,77,159,Asymptomatic,False,0.6,False,Former,2.3,240,9.8,26.8,False,4137,54.5,0 +2594,56,Female,136,77,143,51,94,35,134,6.5,23.0,78,161,Asymptomatic,False,1.0,False,Never,5.9,156,6.2,44.3,True,10486,79.7,0 +2595,60,Male,127,92,218,45,135,199,146,6.6,29.3,72,141,Non-Anginal Pain,False,0.9,False,Never,4.8,137,6.5,58.2,False,4891,63.4,1 +2596,37,Male,88,52,257,67,140,241,109,5.5,19.1,78,182,Non-Anginal Pain,False,0.2,False,Never,11.6,113,6.0,34.3,True,6129,38.7,0 +2597,22,Female,118,78,199,71,95,148,127,5.6,23.5,77,196,Non-Anginal Pain,False,2.7,True,Never,3.3,293,7.1,38.7,True,10507,56.8,0 +2598,46,Male,130,92,233,39,144,246,87,5.0,30.9,84,173,Asymptomatic,True,1.4,False,Current,20.9,196,6.0,33.4,False,4534,35.9,1 +2599,59,Male,131,74,173,53,92,113,115,5.5,27.5,85,162,Asymptomatic,False,0.2,False,Never,2.1,115,4.3,50.6,False,8467,74.8,0 +2600,37,Male,119,77,184,46,113,171,101,5.5,28.2,84,152,Asymptomatic,True,0.8,False,Never,3.8,171,6.5,54.4,True,10100,76.7,1 +2601,62,Female,123,76,230,70,129,176,109,5.5,18.9,77,162,Asymptomatic,False,2.1,False,Never,0.9,159,8.0,60.2,True,10497,47.1,0 +2602,61,Male,124,77,234,59,144,158,115,5.9,25.8,77,167,Atypical Angina,False,0.7,False,Never,8.2,177,8.0,56.3,True,2989,43.5,0 +2603,55,Female,127,87,166,36,98,91,128,6.1,29.8,89,159,Atypical Angina,False,0.4,False,Current,3.1,144,7.2,58.4,True,6610,62.2,0 +2604,57,Male,141,89,232,68,123,187,115,5.7,26.3,91,173,Asymptomatic,True,0.3,False,Former,6.1,89,6.2,39.3,False,3623,58.3,0 +2605,52,Male,118,74,164,43,75,207,110,5.3,23.3,87,157,Asymptomatic,False,1.3,False,Former,4.3,209,7.9,48.2,True,6550,73.3,0 +2606,55,Male,132,77,236,47,149,142,102,5.0,32.5,76,146,Asymptomatic,True,3.6,False,Former,5.5,241,7.8,54.3,True,6116,64.1,1 +2607,37,Female,124,74,217,58,122,212,105,4.7,27.4,81,201,Non-Anginal Pain,False,0.6,False,Current,0.1,136,7.0,50.1,True,8024,69.0,0 +2608,67,Female,125,70,237,71,136,130,127,6.2,22.3,91,160,Asymptomatic,False,0.3,True,Never,1.9,216,8.2,42.0,True,8320,50.8,0 +2609,58,Male,143,90,228,63,123,220,185,7.4,32.2,78,161,Typical Angina,True,1.6,False,Never,4.0,155,7.9,40.6,False,7776,53.2,1 +2610,60,Female,126,85,185,57,87,199,118,5.5,27.3,77,152,Asymptomatic,False,0.2,False,Former,1.9,142,7.2,45.4,True,8079,43.2,1 +2611,44,Female,123,79,188,67,79,164,93,5.2,20.8,72,183,Asymptomatic,True,0.3,False,Former,2.8,167,7.6,61.4,False,8182,52.2,0 +2612,34,Male,126,71,145,64,56,107,116,5.5,22.4,74,208,Atypical Angina,False,0.7,False,Former,3.5,166,6.9,56.2,False,7663,61.9,0 +2613,69,Male,173,102,177,41,113,106,136,6.1,24.4,95,136,Asymptomatic,True,0.6,False,Current,2.0,72,7.9,57.8,True,5184,54.1,1 +2614,34,Female,112,74,187,41,121,186,103,5.4,21.9,73,189,Non-Anginal Pain,False,0.7,True,Current,1.9,125,6.4,44.7,False,4875,41.2,0 +2615,49,Male,147,96,206,46,136,185,133,7.0,34.9,91,172,Asymptomatic,False,0.1,False,Never,6.9,127,9.0,42.7,False,8306,77.4,1 +2616,52,Female,112,60,211,58,102,230,121,5.8,25.4,90,184,Typical Angina,True,0.6,True,Never,2.2,86,5.2,15.8,False,4058,62.1,0 +2617,57,Male,108,73,197,57,116,112,108,5.6,19.8,83,155,Asymptomatic,False,1.8,True,Never,3.0,184,8.4,35.3,False,7656,53.0,0 +2618,58,Male,129,81,198,45,106,213,121,6.4,28.0,97,150,Non-Anginal Pain,False,0.4,False,Never,6.0,63,6.0,62.2,False,7141,44.7,0 +2619,53,Female,140,89,204,56,132,85,118,5.8,30.4,78,166,Asymptomatic,False,0.0,False,Never,2.0,67,8.5,64.6,False,7257,46.6,0 +2620,35,Female,115,72,179,55,100,168,120,5.7,18.0,77,199,Asymptomatic,False,0.1,False,Current,6.7,207,6.7,59.8,False,8203,57.3,0 +2621,50,Female,99,60,187,29,132,154,61,4.7,17.3,89,177,Asymptomatic,True,0.5,False,Current,5.3,173,7.0,58.0,False,6310,43.7,0 +2622,52,Male,128,87,219,65,136,168,96,5.6,27.0,100,153,Typical Angina,False,0.2,False,Current,2.5,69,6.8,51.1,False,7939,34.7,0 +2623,60,Male,132,87,260,83,144,124,109,5.7,19.5,90,165,Asymptomatic,False,1.2,False,Never,5.9,96,6.2,27.6,False,1583,63.6,0 +2624,56,Male,164,105,199,57,114,134,163,6.8,27.2,92,149,Non-Anginal Pain,False,0.8,True,Never,3.0,169,7.5,63.7,True,8033,78.9,0 +2625,68,Female,137,73,232,35,173,199,161,6.8,30.3,96,118,Asymptomatic,False,0.1,False,Current,7.7,8,8.7,64.0,False,3128,30.7,1 +2626,64,Female,136,91,207,52,133,116,136,6.3,30.2,84,163,Atypical Angina,False,0.2,False,Never,7.5,134,6.5,35.5,True,4726,42.4,0 +2627,37,Male,111,65,198,47,133,94,66,4.0,21.0,69,199,Asymptomatic,False,2.7,True,Current,4.0,146,5.7,49.8,False,8828,35.1,0 +2628,54,Female,129,74,175,71,83,89,67,4.0,25.6,74,165,Typical Angina,False,1.1,False,Never,8.5,105,6.3,28.9,True,5424,62.8,0 +2629,59,Male,118,79,193,35,121,219,114,5.2,29.4,79,152,Typical Angina,False,0.7,False,Former,3.1,231,8.2,20.4,True,4898,63.9,1 +2630,47,Male,108,65,184,43,109,114,121,6.1,23.5,61,177,Non-Anginal Pain,False,0.4,False,Never,3.1,181,6.3,38.0,True,7779,49.0,0 +2631,73,Male,125,72,150,62,77,57,124,5.7,20.4,69,160,Non-Anginal Pain,False,1.6,True,Never,4.5,220,6.5,24.4,True,9916,42.4,0 +2632,46,Female,123,67,146,53,67,157,152,7.2,28.2,71,193,Asymptomatic,False,1.3,False,Former,1.2,97,7.6,57.5,False,5606,54.7,0 +2633,37,Male,102,78,176,43,108,148,104,5.1,17.8,75,201,Asymptomatic,False,0.1,False,Current,8.2,225,9.9,23.4,True,6944,33.6,0 +2634,30,Male,134,86,166,62,81,144,138,6.1,30.8,79,191,Non-Anginal Pain,False,0.2,True,Never,5.3,113,7.3,55.8,False,6483,55.3,0 +2635,47,Male,129,83,177,53,95,143,116,5.1,21.3,74,187,Asymptomatic,False,0.3,False,Never,20.2,131,4.5,73.4,True,5288,75.6,0 +2636,47,Male,103,64,194,49,112,151,118,5.5,18.6,72,179,Asymptomatic,False,0.1,False,Current,5.7,217,8.1,48.9,True,6560,69.0,0 +2637,48,Female,142,86,224,63,137,145,135,6.3,25.2,82,157,Typical Angina,True,0.8,False,Former,3.9,92,7.1,27.6,True,6229,100.0,1 +2638,25,Male,115,79,149,50,68,145,102,5.0,24.8,94,195,Non-Anginal Pain,False,0.6,True,Never,2.8,146,8.8,50.6,False,7690,69.8,0 +2639,54,Male,134,80,206,39,113,270,144,6.8,28.8,87,153,Asymptomatic,True,0.3,False,Current,10.9,108,6.2,46.4,True,4975,34.4,1 +2640,68,Female,124,70,176,45,91,177,154,7.1,27.5,84,150,Non-Anginal Pain,False,1.3,False,Never,1.6,183,7.2,43.3,True,8482,72.8,1 +2641,45,Female,120,95,180,75,93,39,111,5.7,26.4,86,188,Atypical Angina,False,0.4,False,Never,2.8,93,6.2,70.6,True,5479,99.5,0 +2642,61,Male,136,85,192,45,118,118,126,6.2,22.1,82,161,Asymptomatic,False,0.1,True,Never,5.4,131,5.8,31.4,False,4180,81.1,0 +2643,46,Female,119,79,148,28,98,112,100,5.3,25.7,76,170,Typical Angina,False,0.3,True,Never,8.9,128,6.2,76.3,False,3013,65.5,1 +2644,43,Male,120,83,208,45,128,105,99,4.9,27.8,89,194,Atypical Angina,True,1.2,False,Current,6.1,112,7.5,33.6,False,3365,61.4,0 +2645,71,Male,135,88,186,47,92,220,142,6.0,30.3,90,153,Asymptomatic,False,0.3,True,Current,3.8,205,6.4,60.0,False,5082,46.7,0 +2646,63,Male,135,87,259,48,159,232,162,7.0,28.6,91,124,Atypical Angina,True,0.2,False,Former,6.9,0,5.0,43.1,False,1008,40.1,1 +2647,65,Female,150,106,227,58,143,131,93,4.9,27.3,81,145,Non-Anginal Pain,True,0.4,False,Never,10.9,49,6.8,53.0,False,5173,67.7,1 +2648,84,Female,147,85,181,46,109,176,150,6.5,30.5,89,128,Atypical Angina,False,0.8,False,Never,0.5,107,8.2,67.7,True,6554,38.8,1 +2649,54,Male,88,61,252,66,152,125,115,5.2,19.8,75,150,Asymptomatic,True,0.4,False,Former,3.6,212,7.6,11.5,True,8138,69.9,0 +2650,54,Male,125,83,243,64,160,102,70,4.1,26.6,74,151,Non-Anginal Pain,True,0.9,True,Never,3.9,164,6.5,91.6,False,5765,75.1,1 +2651,56,Female,106,74,159,58,72,145,86,4.7,20.1,64,165,Atypical Angina,False,1.8,True,Never,0.2,219,5.6,57.7,True,6437,57.7,0 +2652,73,Female,130,70,130,60,67,68,163,6.7,23.2,79,148,Asymptomatic,False,1.9,False,Never,11.9,114,7.1,67.2,True,3259,51.9,0 +2653,66,Female,131,79,161,63,85,107,129,5.9,24.7,79,143,Asymptomatic,False,0.1,False,Never,6.8,153,8.7,37.8,True,2843,87.4,0 +2654,42,Male,104,69,157,38,92,166,70,4.5,19.2,83,199,Atypical Angina,True,1.0,True,Never,13.9,121,8.6,62.2,True,4971,72.0,0 +2655,43,Male,137,87,137,36,80,99,121,6.3,25.4,82,191,Asymptomatic,False,1.0,False,Never,1.8,48,6.0,43.7,False,4267,69.3,0 +2656,59,Female,117,78,218,65,119,181,98,6.0,27.3,75,178,Asymptomatic,False,0.6,True,Current,1.9,300,5.2,41.0,True,6955,64.1,0 +2657,61,Female,148,93,199,39,110,174,142,6.7,26.6,76,159,Asymptomatic,True,0.2,False,Never,3.9,151,6.0,42.6,False,6944,54.1,0 +2658,60,Female,136,82,179,51,92,177,115,5.9,20.1,100,169,Asymptomatic,False,0.4,True,Current,6.9,127,7.2,47.6,False,7080,47.2,0 +2659,61,Male,137,88,213,64,129,110,133,6.4,24.2,70,147,Non-Anginal Pain,False,1.4,False,Current,4.1,156,6.7,48.1,True,6373,52.9,1 +2660,52,Male,139,91,166,49,95,120,96,5.1,24.8,89,173,Typical Angina,False,0.2,False,Never,3.2,104,10.2,75.8,True,9605,57.4,0 +2661,62,Female,137,94,155,60,82,69,110,5.4,16.7,84,151,Non-Anginal Pain,False,2.3,False,Never,0.1,18,7.3,76.4,False,4555,55.1,0 +2662,62,Female,141,81,169,26,107,147,95,5.0,30.1,95,148,Asymptomatic,False,2.1,False,Current,7.0,84,8.8,80.1,True,5548,33.3,1 +2663,42,Male,100,63,209,64,100,254,169,7.2,26.2,79,195,Asymptomatic,False,0.5,False,Never,7.9,218,6.7,82.2,False,6451,51.0,0 +2664,38,Male,137,98,174,30,94,196,83,4.5,29.1,72,197,Asymptomatic,False,0.0,False,Former,7.2,48,7.5,83.0,False,4229,80.7,0 +2665,57,Female,130,80,195,61,92,218,121,6.3,18.4,72,157,Asymptomatic,False,0.2,False,Never,10.2,153,6.7,48.7,False,6645,69.8,0 +2666,49,Male,105,73,135,64,55,49,81,5.2,23.0,82,195,Asymptomatic,False,0.1,False,Former,4.1,88,6.1,39.4,False,2321,60.8,0 +2667,35,Female,123,82,151,48,83,129,119,6.2,30.8,92,182,Typical Angina,False,0.7,False,Never,8.7,109,5.8,44.7,False,2619,67.2,0 +2668,64,Male,146,88,210,50,140,120,111,5.2,18.4,73,148,Non-Anginal Pain,True,0.6,False,Current,5.3,78,5.3,30.3,False,4926,62.3,1 +2669,59,Female,143,96,230,75,143,108,108,4.9,24.7,88,187,Asymptomatic,False,1.5,False,Never,3.0,147,7.1,36.0,False,8115,66.0,0 +2670,72,Male,117,68,193,26,123,209,117,6.0,23.0,97,124,Non-Anginal Pain,False,0.7,True,Current,5.1,132,8.3,33.4,False,4954,57.4,1 +2671,53,Female,110,73,163,75,55,145,82,4.1,15.5,71,163,Asymptomatic,False,0.3,True,Never,1.1,143,7.4,50.1,True,7733,69.3,0 +2672,55,Male,138,92,163,29,102,190,164,7.0,37.8,89,137,Asymptomatic,False,1.2,False,Never,8.7,72,7.1,49.7,False,4860,69.2,1 +2673,35,Male,122,74,193,73,86,145,97,5.8,20.4,72,202,Asymptomatic,False,0.7,True,Former,15.4,294,5.7,33.3,True,8161,57.8,0 +2674,72,Male,135,78,203,50,136,122,93,4.9,23.3,82,125,Asymptomatic,False,1.4,False,Never,3.2,186,8.3,39.5,True,9765,54.5,1 +2675,62,Female,152,93,232,60,121,262,133,5.9,25.5,80,165,Typical Angina,False,1.5,False,Former,0.5,45,6.8,63.9,True,4925,26.6,1 +2676,66,Male,124,75,170,64,56,227,130,6.4,29.3,70,156,Non-Anginal Pain,False,0.4,False,Former,24.7,263,7.9,40.5,True,4834,50.8,0 +2677,51,Male,114,61,212,62,130,119,106,5.6,31.0,78,200,Asymptomatic,False,0.1,False,Current,2.2,234,7.6,49.9,True,9231,65.0,0 +2678,53,Male,131,86,171,36,100,219,139,6.1,23.5,70,171,Non-Anginal Pain,True,1.2,False,Never,3.3,148,7.0,34.4,False,7515,34.8,1 +2679,58,Male,149,99,213,40,132,196,133,6.5,35.4,90,144,Asymptomatic,True,2.1,False,Current,3.4,132,7.1,55.1,False,5354,52.5,1 +2680,44,Male,97,68,173,57,98,98,130,6.2,30.0,91,168,Asymptomatic,False,0.3,False,Never,2.0,10,7.6,37.8,True,6352,33.4,0 +2681,44,Male,118,77,222,51,142,153,106,5.1,26.7,81,203,Asymptomatic,False,0.8,True,Former,3.1,164,5.7,58.8,False,2893,51.0,0 +2682,80,Male,138,79,233,42,150,183,159,6.6,19.0,83,124,Asymptomatic,True,1.5,False,Current,7.6,149,8.9,46.8,True,6865,44.0,1 +2683,58,Female,136,80,207,69,109,133,94,4.6,22.8,76,174,Non-Anginal Pain,False,0.4,False,Former,1.3,129,7.0,8.0,False,3835,33.5,0 +2684,45,Male,109,68,151,39,85,91,169,6.9,31.4,74,143,Non-Anginal Pain,True,1.4,False,Former,2.1,140,7.2,18.5,True,7656,72.1,1 +2685,35,Male,127,85,188,41,116,180,122,5.4,26.0,72,189,Asymptomatic,False,0.3,True,Current,2.4,151,6.9,32.1,True,9678,33.2,0 +2686,39,Female,110,69,202,59,124,97,107,6.0,23.2,82,179,Asymptomatic,False,0.1,False,Never,22.3,129,8.9,58.3,True,4549,40.6,0 +2687,58,Female,108,60,211,33,145,136,138,6.1,30.3,76,157,Asymptomatic,False,0.1,False,Current,6.8,108,8.4,44.0,True,6683,81.6,1 +2688,41,Female,114,69,192,53,118,137,108,5.8,25.8,92,195,Asymptomatic,False,0.3,False,Never,4.1,218,6.5,43.3,True,7037,73.3,0 +2689,40,Female,140,93,180,53,80,197,134,5.9,37.1,85,188,Asymptomatic,False,0.5,False,Never,7.0,50,6.8,50.3,False,5530,58.3,0 +2690,51,Male,105,62,160,43,98,125,125,5.5,26.1,77,163,Asymptomatic,False,0.3,False,Never,3.2,205,6.0,42.1,True,7731,67.1,0 +2691,59,Male,130,87,199,40,103,235,102,5.2,28.8,85,141,Non-Anginal Pain,True,6.5,False,Former,8.5,78,6.6,51.0,True,3933,69.2,1 +2692,71,Female,138,86,215,40,107,225,115,5.6,25.5,87,127,Asymptomatic,False,0.5,False,Never,24.5,97,6.9,64.6,False,3664,62.0,1 +2693,43,Female,100,58,125,41,72,80,124,5.1,15.0,70,192,Typical Angina,False,0.7,False,Never,4.7,143,8.4,39.0,False,6699,59.0,0 +2694,45,Male,143,86,199,55,112,226,126,6.1,34.6,87,172,Asymptomatic,False,0.5,False,Former,2.7,212,8.6,79.4,False,1795,51.4,0 +2695,59,Male,119,86,164,46,103,87,100,5.0,20.1,72,145,Typical Angina,True,1.2,False,Former,2.9,216,8.4,58.6,False,5920,73.9,1 +2696,47,Female,114,74,230,50,149,155,129,6.1,28.0,94,169,Non-Anginal Pain,False,2.7,False,Former,4.9,101,7.0,49.1,False,3553,46.3,1 +2697,65,Female,134,87,207,40,123,198,129,6.5,24.8,72,176,Asymptomatic,False,0.3,True,Never,5.7,38,8.0,49.5,True,3941,80.9,0 +2698,48,Male,149,87,206,44,116,205,107,5.4,32.0,76,146,Asymptomatic,True,1.9,False,Never,8.4,133,5.8,78.7,False,5085,58.0,1 +2699,36,Male,104,72,121,31,77,96,118,6.3,26.9,71,179,Asymptomatic,True,0.2,True,Never,4.5,217,6.6,73.5,True,4640,51.3,0 +2700,45,Male,145,89,195,52,101,199,150,6.1,27.9,74,178,Non-Anginal Pain,False,0.1,False,Former,5.6,101,8.4,58.6,False,6974,86.4,0 +2701,34,Male,99,66,175,39,99,196,79,4.9,21.0,75,184,Asymptomatic,False,0.3,False,Never,2.4,138,6.9,58.7,False,7049,77.9,0 +2702,47,Male,136,84,203,68,99,164,112,5.9,28.9,102,159,Asymptomatic,False,0.3,False,Never,13.1,79,7.3,48.7,False,3572,63.9,0 +2703,60,Male,112,74,169,36,96,174,78,4.7,35.7,95,155,Asymptomatic,False,0.1,True,Current,11.8,137,8.1,32.7,False,6150,42.2,0 +2704,54,Female,142,92,228,47,136,179,150,6.4,32.0,89,210,Non-Anginal Pain,True,2.0,False,Never,7.4,63,6.7,47.8,False,2764,45.3,0 +2705,52,Female,140,89,226,65,138,121,100,5.4,28.9,84,187,Asymptomatic,False,0.5,False,Current,0.3,109,6.8,41.4,True,10623,34.6,0 +2706,37,Male,115,78,151,42,88,145,119,4.6,23.7,72,169,Asymptomatic,True,0.1,False,Current,3.5,122,6.8,45.5,False,2208,64.4,0 +2707,44,Female,117,81,189,48,110,156,82,4.7,24.0,59,195,Typical Angina,False,1.6,False,Never,3.4,144,7.1,36.4,True,6555,59.6,0 +2708,49,Female,134,78,192,56,115,136,142,6.4,27.8,88,178,Atypical Angina,False,1.5,True,Never,1.7,135,6.4,50.7,False,7029,47.8,1 +2709,57,Female,135,91,232,76,140,103,120,5.8,29.3,86,161,Non-Anginal Pain,False,1.3,True,Never,10.9,255,6.2,69.5,True,12295,73.4,0 +2710,87,Male,123,81,179,63,99,106,102,5.6,20.6,93,142,Non-Anginal Pain,False,0.4,False,Never,3.4,49,7.0,57.3,True,6490,79.6,0 +2711,45,Male,140,88,207,61,122,109,157,6.3,24.5,72,172,Asymptomatic,False,0.1,False,Never,8.2,165,7.6,47.3,False,5295,64.3,0 +2712,66,Female,145,89,212,67,93,267,128,6.3,23.5,85,145,Asymptomatic,False,0.6,False,Never,12.2,28,7.8,45.1,False,500,75.4,0 +2713,39,Female,139,87,167,55,64,224,93,4.6,26.0,91,173,Typical Angina,False,0.3,False,Former,3.8,71,5.4,86.7,True,7861,40.0,1 +2714,40,Male,94,56,152,45,83,189,118,6.3,22.5,75,182,Typical Angina,False,0.7,False,Former,3.4,124,6.5,39.6,False,9528,76.7,0 +2715,28,Female,102,69,118,55,60,76,75,4.3,27.2,83,210,Asymptomatic,False,0.5,True,Never,3.0,110,5.3,37.2,False,8609,63.7,0 +2716,43,Female,134,84,206,61,142,61,99,5.3,25.1,85,141,Non-Anginal Pain,True,0.7,False,Former,1.9,76,6.7,92.6,True,7520,74.0,1 +2717,67,Female,141,91,192,40,118,208,119,5.8,22.6,72,144,Non-Anginal Pain,False,0.3,True,Former,5.9,167,6.9,48.3,False,5112,55.1,0 +2718,53,Female,132,85,218,60,128,123,127,4.9,22.0,89,156,Atypical Angina,False,0.9,False,Former,0.3,179,7.3,56.8,True,7271,77.2,1 +2719,69,Female,115,61,169,49,90,172,123,5.8,22.2,76,137,Asymptomatic,False,0.2,False,Never,0.5,160,5.0,31.6,False,2952,44.5,1 +2720,47,Male,117,84,169,53,82,110,127,5.7,15.0,76,178,Asymptomatic,False,0.8,False,Never,5.3,194,7.5,37.3,True,6806,78.3,0 +2721,67,Female,126,83,191,59,111,60,146,7.0,16.8,84,154,Non-Anginal Pain,False,1.8,True,Current,9.7,256,8.0,41.0,False,5314,69.5,0 +2722,46,Male,114,79,203,43,128,205,152,7.4,31.1,73,169,Typical Angina,False,2.4,False,Never,3.3,238,5.8,66.3,True,7443,51.6,1 +2723,65,Male,118,79,172,74,65,141,87,5.3,17.2,80,164,Asymptomatic,False,0.7,False,Former,5.8,99,7.6,31.4,False,5263,76.4,0 +2724,75,Female,163,94,200,43,116,188,146,6.7,34.6,89,172,Atypical Angina,True,0.9,True,Never,32.5,23,7.1,66.7,False,4555,46.9,1 +2725,51,Male,139,86,154,37,111,120,117,5.8,24.3,71,147,Typical Angina,False,1.9,False,Never,5.4,95,7.3,38.7,False,6144,39.3,1 +2726,36,Female,133,84,202,61,92,250,117,5.2,24.4,75,182,Typical Angina,False,1.6,False,Never,2.6,101,5.6,5.7,True,10659,36.5,0 +2727,77,Female,141,76,221,60,90,276,89,4.9,22.6,85,144,Asymptomatic,False,0.8,False,Former,1.3,88,5.8,54.0,True,3967,40.9,1 +2728,42,Female,111,56,171,75,57,175,111,6.0,17.1,83,206,Atypical Angina,False,0.3,False,Former,3.0,133,7.5,65.1,False,6170,85.5,0 +2729,46,Female,139,82,227,61,123,239,122,5.9,35.1,75,171,Atypical Angina,True,0.8,False,Current,2.3,107,6.8,66.8,False,4388,82.6,1 +2730,50,Male,150,90,213,58,127,74,125,6.1,23.6,77,162,Typical Angina,True,0.3,False,Former,3.2,57,8.8,35.1,False,1439,51.3,1 +2731,65,Male,119,60,174,32,114,205,117,6.1,28.1,91,158,Non-Anginal Pain,True,0.4,True,Current,4.6,95,7.1,77.9,True,7565,45.2,1 +2732,63,Male,114,63,205,59,113,105,129,5.9,20.6,73,151,Non-Anginal Pain,False,0.8,False,Current,3.6,104,5.5,65.8,False,4674,50.7,0 +2733,62,Male,132,81,204,61,111,128,102,5.6,30.7,89,151,Asymptomatic,False,1.7,True,Former,2.6,166,6.5,49.0,False,3033,81.3,1 +2734,50,Female,136,89,248,44,149,200,127,5.8,26.6,70,155,Non-Anginal Pain,False,0.3,False,Former,2.7,178,5.6,50.9,False,4672,57.5,1 +2735,51,Male,121,80,242,54,155,182,97,4.7,23.4,85,152,Asymptomatic,False,1.6,True,Former,1.5,118,7.0,46.8,False,1938,60.9,0 +2736,64,Male,150,106,207,74,112,125,130,5.9,31.3,81,162,Non-Anginal Pain,False,2.3,True,Former,3.7,119,7.2,30.2,False,5616,44.1,0 +2737,75,Male,112,75,129,33,89,76,120,6.3,23.2,87,146,Asymptomatic,False,0.5,False,Never,3.2,64,8.6,46.2,True,5636,56.0,0 +2738,37,Male,117,62,207,36,132,212,120,5.6,26.1,99,188,Atypical Angina,False,0.1,False,Former,3.6,193,8.2,37.7,True,5926,59.8,0 +2739,70,Female,143,87,185,67,87,174,171,7.1,22.5,84,147,Asymptomatic,False,1.0,False,Never,15.6,210,6.0,43.7,True,9586,63.9,0 +2740,66,Female,136,87,175,62,102,109,115,5.9,20.4,81,172,Atypical Angina,True,0.9,False,Former,0.5,87,6.2,50.7,True,5464,48.7,0 +2741,62,Female,126,78,184,55,99,110,153,6.7,25.9,90,151,Atypical Angina,False,2.3,False,Never,2.0,184,4.9,36.8,True,8841,71.3,1 +2742,45,Female,115,80,202,56,117,155,142,6.2,31.5,71,189,Non-Anginal Pain,False,0.2,False,Former,8.6,160,6.9,38.9,False,6712,36.2,0 +2743,55,Male,119,74,185,42,126,142,157,7.2,23.7,89,204,Typical Angina,False,0.5,False,Never,8.0,108,9.4,41.7,True,2892,74.3,0 +2744,59,Female,135,81,198,62,97,158,114,5.7,23.5,77,190,Asymptomatic,False,0.9,False,Never,5.7,69,8.5,35.9,True,6636,66.2,0 +2745,46,Female,114,82,196,70,103,132,117,5.3,23.5,70,174,Atypical Angina,False,0.4,False,Former,0.3,213,6.7,25.1,False,6314,44.5,0 +2746,69,Male,138,83,127,55,38,127,96,5.2,23.7,75,157,Atypical Angina,False,0.2,True,Never,10.4,185,7.4,36.9,False,6639,68.8,0 +2747,48,Male,134,90,226,61,124,190,142,6.1,32.4,81,176,Atypical Angina,False,0.5,False,Never,3.7,40,7.2,85.4,False,3920,57.8,1 +2748,74,Male,133,77,173,33,112,149,131,6.1,27.5,88,127,Typical Angina,False,1.5,False,Current,2.9,16,5.7,27.7,False,3037,69.1,1 +2749,34,Female,112,69,132,77,43,131,170,7.8,29.0,75,196,Non-Anginal Pain,False,0.4,False,Never,3.5,249,8.8,72.6,True,7193,66.6,0 +2750,36,Female,88,55,196,69,107,156,83,5.0,18.6,78,199,Non-Anginal Pain,False,0.4,False,Current,7.5,267,7.6,34.1,True,8926,48.0,0 +2751,29,Female,118,79,173,66,67,147,92,5.0,25.4,88,210,Asymptomatic,False,1.3,False,Never,1.9,260,5.9,46.5,False,3829,48.3,0 +2752,63,Female,122,74,145,62,77,52,121,5.5,24.1,84,165,Atypical Angina,False,0.1,False,Never,2.3,211,7.4,57.9,False,4531,66.0,0 +2753,42,Male,130,91,175,56,71,260,112,5.2,28.0,78,157,Asymptomatic,False,0.4,False,Former,3.6,163,6.0,41.3,False,6259,52.1,1 +2754,43,Male,125,70,233,69,105,222,70,5.2,24.5,67,178,Asymptomatic,False,0.4,False,Former,16.9,122,6.0,32.5,False,4467,62.7,0 +2755,66,Male,134,93,152,46,74,122,143,5.5,22.9,78,155,Atypical Angina,False,0.4,True,Never,3.2,209,6.2,34.0,False,4216,58.9,0 +2756,77,Female,150,98,217,57,134,208,124,6.0,33.5,76,154,Asymptomatic,True,0.4,False,Never,1.6,115,8.1,47.8,False,5974,69.9,0 +2757,44,Male,132,74,247,65,140,186,100,5.3,24.1,67,181,Asymptomatic,False,0.5,False,Never,9.0,203,8.9,38.1,False,5671,56.9,0 +2758,72,Female,113,75,218,59,133,123,175,7.3,25.0,70,159,Typical Angina,False,0.8,False,Never,0.1,94,6.7,26.8,False,4177,85.2,0 +2759,61,Male,138,88,238,49,148,256,104,5.5,29.3,97,162,Asymptomatic,False,0.1,False,Current,12.0,97,7.2,63.4,False,6353,10.2,1 +2760,54,Male,138,91,161,57,100,58,140,6.3,17.4,79,146,Atypical Angina,False,0.7,True,Current,3.9,118,7.5,43.1,True,6080,63.1,1 +2761,38,Female,158,98,169,49,91,195,119,5.8,30.5,86,182,Asymptomatic,False,0.8,True,Current,19.6,78,5.9,54.3,False,3960,49.1,0 +2762,36,Female,121,84,248,83,122,183,104,5.6,29.5,71,177,Typical Angina,False,1.1,True,Never,19.0,206,7.1,34.1,True,9656,72.7,0 +2763,55,Female,109,66,206,63,91,236,112,5.7,20.0,77,167,Typical Angina,False,0.2,True,Never,13.3,89,6.7,13.5,False,3919,54.1,0 +2764,56,Male,150,106,234,62,130,196,115,5.4,26.4,81,157,Typical Angina,False,5.8,False,Never,34.1,82,5.2,39.1,True,6485,78.7,1 +2765,45,Male,126,61,254,67,149,161,133,6.3,28.5,77,206,Atypical Angina,False,1.2,True,Never,1.7,276,6.3,34.2,True,7908,88.0,0 +2766,41,Female,120,80,136,73,44,153,160,7.3,28.6,84,161,Asymptomatic,True,0.8,False,Former,1.0,221,6.8,42.3,True,8600,35.4,0 +2767,37,Male,112,67,155,44,76,146,112,5.9,31.0,83,195,Asymptomatic,False,0.5,False,Former,3.5,95,7.9,60.1,True,9046,60.3,0 +2768,58,Female,152,90,209,55,92,278,176,7.0,30.2,85,138,Non-Anginal Pain,False,4.4,False,Former,3.8,177,6.6,70.3,False,5249,78.5,1 +2769,63,Female,128,77,200,65,106,153,153,6.5,16.7,84,155,Atypical Angina,False,0.7,True,Never,2.7,109,5.2,8.4,False,500,63.4,0 +2770,63,Female,129,69,187,48,107,191,105,5.3,26.4,79,155,Atypical Angina,False,0.3,False,Current,8.7,127,6.5,58.9,True,8645,64.8,0 +2771,62,Female,127,75,228,61,142,163,89,4.7,30.2,91,168,Asymptomatic,False,0.7,False,Never,8.4,79,6.5,68.9,False,3494,54.5,0 +2772,47,Female,117,79,211,77,98,147,143,6.8,22.1,94,195,Asymptomatic,False,1.5,True,Former,2.6,171,7.2,47.9,False,6607,66.4,0 +2773,75,Male,134,80,193,41,118,188,148,7.0,31.2,84,128,Non-Anginal Pain,True,1.5,False,Former,2.7,152,8.7,52.8,False,6837,60.4,1 +2774,41,Male,129,90,216,61,119,130,68,5.1,25.7,84,174,Asymptomatic,False,0.9,False,Never,3.8,212,7.6,58.6,True,7935,42.6,0 +2775,61,Female,121,65,221,86,105,125,113,5.7,15.0,56,175,Typical Angina,False,0.3,False,Never,0.5,250,9.8,41.2,True,6193,72.4,0 +2776,49,Male,126,82,149,55,72,114,103,5.4,16.0,74,182,Asymptomatic,False,0.0,True,Former,6.1,108,5.1,56.9,False,6561,54.5,0 +2777,39,Female,102,50,178,43,97,207,109,5.2,33.5,82,205,Atypical Angina,False,3.0,True,Former,3.0,86,7.4,8.5,True,4133,46.6,0 +2778,45,Female,116,64,191,55,107,121,94,4.7,26.4,90,177,Asymptomatic,False,0.8,False,Never,2.1,104,7.4,41.9,False,5702,74.1,0 +2779,61,Female,120,77,123,44,62,119,123,5.6,27.8,71,160,Asymptomatic,False,1.5,False,Never,5.8,183,7.6,58.7,True,8243,68.4,0 +2780,68,Female,127,90,188,66,88,188,106,5.3,18.0,83,159,Asymptomatic,False,2.7,False,Never,7.0,102,4.4,57.8,False,2935,43.4,1 +2781,58,Male,141,96,194,63,79,254,94,5.6,28.4,76,172,Asymptomatic,True,0.6,False,Former,10.4,149,7.7,67.3,True,7459,52.4,0 +2782,18,Female,131,96,195,82,75,155,141,7.2,22.3,86,205,Non-Anginal Pain,False,0.6,True,Never,8.1,313,7.2,53.7,True,9464,85.0,0 +2783,63,Male,116,71,144,37,74,128,90,5.0,23.3,73,170,Asymptomatic,False,1.3,True,Former,4.5,125,7.3,44.1,True,6785,77.8,0 +2784,26,Female,117,69,187,46,102,188,112,5.5,25.1,83,208,Asymptomatic,False,0.7,False,Current,1.7,156,6.4,31.7,False,3175,70.0,0 +2785,79,Male,122,69,173,34,94,234,144,6.7,32.9,82,126,Non-Anginal Pain,True,2.6,False,Never,4.1,72,7.6,54.4,True,7525,55.0,1 +2786,57,Female,135,81,240,52,159,177,102,4.6,24.7,72,131,Asymptomatic,True,0.3,False,Former,0.5,154,5.3,50.6,False,4872,68.1,1 +2787,56,Male,118,75,165,33,111,142,102,5.6,22.5,80,128,Non-Anginal Pain,True,3.0,False,Never,10.2,137,5.5,53.4,False,3840,41.0,1 +2788,67,Female,133,88,178,43,115,127,99,4.6,21.8,68,151,Typical Angina,False,0.2,False,Current,4.8,156,7.0,56.1,False,6310,45.6,0 +2789,50,Male,137,83,221,52,141,149,143,6.1,29.0,101,159,Asymptomatic,False,1.2,False,Current,6.0,107,6.6,53.6,False,3998,62.8,0 +2790,51,Male,135,86,194,45,130,140,141,6.6,32.5,73,155,Non-Anginal Pain,True,1.1,False,Never,6.1,268,6.1,58.2,False,5782,70.9,1 +2791,49,Female,149,84,194,55,114,146,101,5.2,23.4,71,148,Asymptomatic,False,0.5,False,Former,1.4,204,5.1,53.8,False,5583,52.1,1 +2792,56,Female,124,75,186,40,102,219,119,5.0,26.4,79,169,Non-Anginal Pain,False,0.9,False,Former,7.5,64,7.2,58.7,False,1874,68.3,0 +2793,55,Male,138,90,212,41,120,202,70,4.6,27.1,70,176,Typical Angina,False,0.1,False,Never,3.5,95,8.0,56.8,False,5019,74.1,0 +2794,57,Female,129,85,201,75,82,164,110,5.9,30.6,85,146,Asymptomatic,True,0.5,False,Never,3.1,133,6.8,35.6,False,6895,70.6,1 +2795,18,Male,122,69,135,38,78,169,168,7.2,24.6,91,210,Asymptomatic,False,2.0,False,Current,3.3,74,5.9,65.1,False,4215,73.7,0 +2796,53,Female,126,89,139,52,57,144,143,6.6,28.6,82,169,Asymptomatic,False,0.2,False,Current,12.4,152,7.9,51.5,True,8698,67.5,0 +2797,33,Female,129,67,200,65,94,193,118,5.7,19.9,76,204,Atypical Angina,False,0.9,False,Never,3.6,230,6.6,58.9,True,6697,79.4,0 +2798,89,Female,123,59,144,42,56,181,108,5.9,15.0,73,146,Atypical Angina,False,0.2,False,Never,4.6,258,7.9,29.5,True,7060,41.6,0 +2799,64,Female,142,80,231,59,133,173,124,6.5,26.1,90,166,Atypical Angina,False,0.2,False,Never,6.0,122,7.8,43.8,False,6202,27.1,0 +2800,66,Female,132,91,255,75,124,182,126,5.7,25.4,84,149,Non-Anginal Pain,False,0.1,False,Former,6.0,44,7.3,35.2,False,5516,29.1,0 +2801,60,Female,133,84,249,55,158,163,147,6.6,28.8,96,155,Asymptomatic,False,2.0,False,Current,4.1,145,7.6,65.8,True,6646,65.7,1 +2802,63,Female,131,87,202,55,111,173,133,6.9,31.2,79,164,Atypical Angina,False,1.1,False,Never,1.3,95,6.0,55.3,False,5063,62.8,0 +2803,42,Female,135,87,104,45,35,111,84,4.8,28.5,92,178,Asymptomatic,False,1.0,False,Never,0.2,149,7.4,55.2,True,9314,64.0,0 +2804,64,Male,127,89,201,37,129,128,133,6.5,31.8,89,143,Typical Angina,True,1.2,False,Never,4.4,159,8.3,64.6,False,3532,70.8,1 +2805,65,Female,137,87,167,73,87,35,113,5.3,18.8,64,166,Atypical Angina,False,1.5,True,Never,3.7,188,7.6,46.3,False,5557,82.8,0 +2806,56,Male,156,100,184,61,87,182,101,5.4,26.4,78,190,Atypical Angina,False,1.6,True,Never,12.6,186,8.4,68.4,False,7042,52.0,0 +2807,64,Male,121,89,237,61,124,259,149,6.3,23.4,67,129,Non-Anginal Pain,False,2.5,True,Never,3.4,173,8.9,44.1,True,6847,52.3,1 +2808,68,Male,137,82,215,67,115,226,123,6.0,34.7,77,150,Asymptomatic,False,1.7,False,Never,2.7,78,9.0,12.2,False,6038,66.8,0 +2809,54,Female,149,88,182,47,63,300,121,5.9,25.0,82,151,Atypical Angina,False,0.3,False,Never,22.1,88,4.8,58.4,False,3329,32.2,0 +2810,39,Female,115,77,173,71,83,136,98,6.0,25.1,72,185,Atypical Angina,False,0.8,False,Never,8.9,147,5.7,30.0,False,6232,59.4,0 +2811,65,Female,130,76,209,41,136,102,103,5.3,25.1,73,163,Asymptomatic,False,1.2,False,Former,0.2,129,8.8,66.2,True,10936,57.3,0 +2812,74,Male,128,79,191,42,144,102,128,6.3,21.5,69,156,Atypical Angina,False,1.5,False,Never,1.7,94,7.7,38.4,False,3096,71.0,1 +2813,38,Female,111,72,131,57,40,143,110,6.1,28.4,78,197,Asymptomatic,False,0.2,False,Former,7.9,250,7.7,31.1,True,7811,69.4,0 +2814,69,Female,142,83,196,62,119,100,140,6.0,27.1,86,119,Atypical Angina,False,0.5,False,Never,1.4,24,6.2,69.6,False,2055,71.5,1 +2815,57,Male,102,66,238,61,139,152,99,5.6,19.4,71,148,Asymptomatic,True,4.7,False,Current,4.4,290,6.0,30.5,True,8308,85.4,1 +2816,62,Female,138,86,119,60,45,66,126,5.6,18.9,71,181,Asymptomatic,False,0.8,False,Never,0.2,197,7.2,28.8,True,7883,63.0,0 +2817,65,Female,116,70,225,50,134,207,134,6.4,30.4,65,166,Atypical Angina,False,0.9,False,Never,4.4,198,6.1,22.8,False,4309,59.4,0 +2818,40,Male,123,76,154,52,67,218,100,5.7,17.0,97,162,Atypical Angina,False,2.2,False,Never,1.6,65,8.3,82.8,False,3362,46.4,1 +2819,58,Male,126,69,201,49,111,207,151,6.7,24.7,72,173,Asymptomatic,False,0.2,True,Never,9.4,133,5.9,43.5,False,4008,36.0,0 +2820,67,Female,125,82,160,55,86,115,125,5.2,20.1,76,161,Non-Anginal Pain,False,0.3,False,Never,0.4,116,7.6,60.3,True,6765,73.4,0 +2821,73,Male,129,84,204,30,143,170,107,6.1,27.5,82,133,Asymptomatic,False,1.1,False,Never,11.3,155,7.0,51.8,True,10096,74.1,1 +2822,65,Male,138,90,240,34,154,215,149,6.1,26.8,81,147,Atypical Angina,True,2.5,False,Current,7.1,153,7.4,46.4,True,4163,52.8,1 +2823,42,Male,120,82,152,57,58,189,107,5.5,28.7,67,181,Asymptomatic,False,1.6,False,Never,5.9,122,7.7,46.3,True,6473,87.1,0 +2824,57,Female,137,85,242,68,128,171,145,6.5,27.0,84,149,Asymptomatic,False,0.5,False,Never,1.0,112,7.1,50.8,True,7588,67.2,1 +2825,51,Male,110,89,200,46,118,195,116,5.7,30.3,83,168,Asymptomatic,True,1.6,False,Never,3.0,110,7.5,63.3,True,5092,69.7,0 +2826,55,Female,125,82,237,77,140,144,92,5.2,25.6,76,174,Asymptomatic,False,0.4,False,Never,2.7,146,6.8,76.9,True,4798,85.0,0 +2827,69,Female,135,75,172,72,63,142,131,5.9,20.6,76,174,Atypical Angina,False,1.4,False,Never,5.5,215,6.9,57.1,True,8506,68.9,0 +2828,36,Male,141,84,175,48,82,128,87,5.7,22.4,70,210,Asymptomatic,True,0.1,False,Never,1.9,164,7.0,29.8,False,6655,66.2,0 +2829,61,Male,118,68,201,68,112,100,137,6.1,26.3,80,176,Asymptomatic,False,0.6,False,Former,5.1,194,8.9,27.5,False,5600,64.7,0 +2830,60,Male,118,76,138,66,58,80,107,5.3,23.0,81,171,Asymptomatic,False,0.1,True,Current,4.9,199,8.3,2.6,True,7259,52.9,0 +2831,41,Female,137,88,222,49,136,215,80,5.1,33.6,88,184,Asymptomatic,True,1.1,False,Never,0.8,107,6.2,48.8,False,4818,53.9,0 +2832,69,Female,125,80,257,78,155,146,144,6.6,33.7,81,143,Typical Angina,True,0.8,True,Never,0.6,196,5.4,43.5,True,5973,36.1,1 +2833,46,Female,122,85,229,76,129,180,108,5.9,26.2,84,190,Non-Anginal Pain,True,0.2,True,Never,10.9,125,8.5,45.7,False,8379,55.4,0 +2834,55,Female,123,79,174,71,87,117,129,5.5,27.2,94,183,Asymptomatic,False,0.9,False,Never,0.6,209,8.2,74.5,True,4358,67.9,0 +2835,20,Female,105,79,202,55,121,132,111,5.5,20.3,84,198,Non-Anginal Pain,False,1.3,False,Never,11.3,194,5.2,65.4,False,7240,77.1,0 +2836,69,Male,120,83,238,66,141,174,165,6.9,20.2,67,159,Non-Anginal Pain,False,0.5,False,Former,3.7,148,7.6,47.8,False,5908,58.8,0 +2837,50,Male,130,76,149,38,54,231,134,6.5,22.6,93,150,Non-Anginal Pain,True,3.0,False,Current,10.3,42,7.9,52.1,False,7216,33.6,1 +2838,50,Female,128,78,207,48,134,175,109,5.3,31.6,103,147,Non-Anginal Pain,False,1.4,False,Never,4.5,88,5.9,53.8,False,617,41.2,1 +2839,73,Female,156,89,201,53,106,151,121,6.2,24.7,73,141,Asymptomatic,True,0.5,True,Never,23.0,64,10.0,47.5,True,7437,62.9,1 +2840,29,Female,106,70,181,69,87,130,128,5.3,23.8,82,176,Non-Anginal Pain,False,0.7,True,Never,4.2,231,7.4,34.8,True,5888,46.3,0 +2841,65,Female,130,70,235,57,149,140,186,8.2,25.1,79,135,Non-Anginal Pain,False,6.5,True,Current,1.0,110,7.7,32.1,False,2735,60.1,1 +2842,68,Female,135,91,183,49,129,118,123,5.5,28.4,79,154,Atypical Angina,False,2.5,False,Never,1.7,176,6.7,20.1,True,8646,63.6,0 +2843,28,Male,141,88,142,42,83,141,129,5.3,21.6,94,205,Atypical Angina,False,0.1,False,Never,3.6,126,7.6,33.6,False,6770,40.6,0 +2844,57,Male,132,92,153,32,92,228,131,5.7,27.5,70,169,Asymptomatic,True,2.4,False,Former,14.4,186,9.1,48.6,True,6003,53.1,0 +2845,49,Male,153,103,191,58,129,111,126,5.9,30.1,79,153,Atypical Angina,True,3.0,False,Current,7.0,179,5.4,45.6,True,9772,66.6,1 +2846,40,Male,140,74,248,71,121,236,131,6.6,26.8,99,199,Asymptomatic,False,0.9,False,Former,12.0,299,7.4,46.6,True,8564,75.4,0 +2847,37,Female,96,59,226,77,136,91,107,4.9,19.5,82,172,Asymptomatic,False,0.8,True,Former,1.6,193,8.3,41.1,True,5818,52.8,0 +2848,64,Male,120,84,153,51,72,125,85,4.8,24.8,91,163,Asymptomatic,False,0.2,False,Never,3.5,154,8.7,19.2,True,8926,57.0,0 +2849,69,Female,136,84,157,30,94,115,109,5.6,22.4,90,124,Atypical Angina,False,0.8,True,Former,2.1,0,6.3,48.6,False,4830,68.3,1 +2850,39,Male,130,83,166,64,70,203,121,6.3,27.4,84,188,Non-Anginal Pain,False,0.5,False,Never,16.0,62,5.2,22.1,False,3628,77.0,0 +2851,42,Male,100,66,162,49,96,43,124,5.8,18.9,72,174,Atypical Angina,False,0.0,False,Never,1.7,125,9.2,45.0,True,4871,71.4,0 +2852,65,Male,132,89,203,61,110,185,134,6.7,23.1,76,146,Asymptomatic,True,0.3,True,Former,7.4,179,8.7,9.3,True,5663,66.8,1 +2853,86,Female,128,83,262,68,133,228,163,7.3,30.8,103,115,Typical Angina,True,0.6,True,Never,4.4,75,4.7,73.7,False,1802,56.9,1 +2854,34,Male,115,68,147,58,65,94,85,5.2,22.5,83,201,Asymptomatic,False,0.9,False,Former,3.0,143,6.7,52.8,False,2555,48.7,0 +2855,35,Female,111,75,176,56,73,211,98,5.7,21.9,82,193,Asymptomatic,True,0.7,False,Never,6.9,232,8.1,15.5,True,7108,65.8,0 +2856,40,Male,129,83,192,62,88,206,113,5.8,32.0,69,167,Typical Angina,False,2.9,False,Never,1.8,250,7.9,70.0,False,9742,52.7,1 +2857,40,Female,119,69,172,77,61,174,91,5.5,27.9,62,172,Typical Angina,False,0.5,False,Never,1.1,144,6.5,13.8,False,9133,97.7,0 +2858,69,Female,143,90,191,55,111,150,122,5.7,30.8,87,157,Asymptomatic,False,0.6,False,Current,2.3,174,7.5,77.2,True,8400,60.2,0 +2859,40,Male,110,56,201,71,122,77,116,5.6,30.7,77,185,Asymptomatic,False,1.0,False,Never,3.4,193,7.6,20.1,False,8657,67.4,0 +2860,84,Female,117,54,270,58,177,162,87,4.9,20.7,69,111,Asymptomatic,True,1.2,False,Current,0.9,225,6.4,65.8,True,8946,72.9,1 +2861,60,Male,121,71,264,66,158,157,92,4.9,15.0,83,171,Asymptomatic,True,0.8,False,Never,8.5,157,6.8,31.4,True,8011,51.7,0 +2862,68,Female,137,83,191,56,118,136,137,6.5,22.7,76,136,Asymptomatic,False,1.4,True,Former,4.4,91,7.7,47.2,False,3701,42.4,1 +2863,62,Female,126,62,224,71,111,193,153,7.2,28.6,83,151,Asymptomatic,False,1.2,False,Never,3.4,170,6.1,58.0,True,8273,64.3,0 +2864,40,Female,131,82,152,41,71,104,79,4.8,18.6,77,206,Atypical Angina,False,2.7,True,Current,0.0,251,6.6,29.4,True,10252,48.7,0 +2865,36,Female,134,77,218,60,131,153,138,6.4,25.9,81,187,Non-Anginal Pain,False,0.2,False,Never,3.0,178,7.9,32.8,True,9240,77.6,0 +2866,67,Female,135,84,202,64,129,62,98,5.3,26.3,78,124,Asymptomatic,True,0.1,True,Never,2.4,36,7.3,28.0,False,4345,78.4,1 +2867,70,Male,138,87,172,59,85,141,95,4.9,22.1,64,147,Asymptomatic,False,0.9,False,Never,6.1,160,8.7,47.9,False,8881,47.7,0 +2868,60,Female,122,82,196,57,134,61,146,6.9,23.9,93,160,Non-Anginal Pain,False,0.5,False,Never,1.2,0,7.2,64.9,False,2790,77.4,0 +2869,54,Female,124,72,216,51,128,229,129,6.1,28.2,75,156,Non-Anginal Pain,False,1.2,True,Never,9.7,196,8.1,31.4,False,8116,49.0,1 +2870,55,Female,126,84,164,54,95,134,98,4.8,20.8,70,176,Asymptomatic,False,0.3,False,Never,2.3,185,8.2,50.8,False,3985,51.1,0 +2871,57,Female,129,81,104,51,54,75,88,5.2,24.9,75,175,Asymptomatic,True,1.3,True,Former,10.0,121,8.4,64.4,True,4352,52.5,0 +2872,36,Male,108,58,209,46,119,182,117,6.2,25.4,80,210,Atypical Angina,True,0.0,False,Never,5.5,267,7.1,82.0,False,6758,50.9,0 +2873,55,Male,138,82,156,58,68,106,127,5.6,17.8,65,162,Asymptomatic,False,0.8,True,Former,11.9,260,7.3,31.4,False,5886,66.5,0 +2874,54,Male,125,88,152,47,84,102,112,5.7,35.8,78,160,Atypical Angina,False,0.5,False,Never,5.4,60,6.5,14.7,False,7094,90.7,0 +2875,30,Female,115,59,129,59,47,153,158,7.1,28.7,100,190,Non-Anginal Pain,False,1.3,True,Former,4.3,21,6.1,47.8,False,4770,72.1,0 +2876,18,Male,118,78,206,56,134,164,154,6.6,29.3,86,199,Asymptomatic,False,0.3,True,Never,10.1,192,6.8,42.8,True,7028,36.1,0 +2877,51,Male,118,80,162,42,94,127,119,5.2,22.8,89,140,Typical Angina,False,0.9,True,Never,3.0,113,8.6,27.0,False,6472,67.7,1 +2878,27,Female,110,75,191,73,65,191,141,6.4,19.3,65,181,Non-Anginal Pain,False,1.0,False,Former,2.8,131,7.3,46.9,False,5875,59.4,0 +2879,23,Female,106,66,184,71,74,238,105,5.4,18.7,80,209,Asymptomatic,False,0.1,True,Never,3.3,204,4.8,50.4,False,6230,84.2,0 +2880,31,Male,91,59,143,54,83,115,96,5.4,23.0,85,189,Atypical Angina,False,0.8,True,Never,1.7,134,7.0,48.0,False,4521,68.9,0 +2881,57,Male,131,89,196,63,103,142,134,6.2,29.2,72,162,Asymptomatic,False,1.4,False,Never,3.6,133,6.3,45.8,True,8678,67.4,0 +2882,53,Male,115,77,194,41,111,226,124,6.2,34.1,85,139,Asymptomatic,False,0.2,True,Current,8.0,136,8.4,48.0,True,7042,33.1,1 +2883,55,Male,132,90,227,55,123,221,135,5.5,26.8,100,176,Asymptomatic,False,1.2,False,Former,6.4,82,7.4,74.4,False,3399,62.7,0 +2884,77,Male,127,90,166,52,73,202,148,6.3,26.9,81,147,Asymptomatic,False,2.6,False,Never,7.6,86,7.6,56.1,True,4849,49.6,0 +2885,61,Male,131,80,236,40,176,108,107,5.6,21.6,91,151,Asymptomatic,False,0.4,True,Former,9.6,90,8.8,49.6,False,5431,23.2,0 +2886,75,Male,148,91,167,65,89,110,95,4.9,21.1,65,124,Atypical Angina,False,1.1,False,Never,2.0,49,6.6,59.6,False,1023,80.2,0 +2887,57,Male,103,63,161,28,83,234,143,6.9,27.3,80,154,Non-Anginal Pain,False,0.2,True,Former,1.6,186,8.2,43.3,True,8199,56.8,1 +2888,68,Female,105,78,211,53,118,184,103,6.0,24.5,79,134,Asymptomatic,False,2.9,False,Never,1.3,42,6.9,61.9,False,1733,52.8,1 +2889,75,Female,129,87,170,48,84,236,147,6.9,30.0,79,155,Asymptomatic,False,0.9,False,Never,13.1,75,6.3,64.2,True,1916,52.3,0 +2890,81,Female,147,85,212,50,134,124,142,6.3,32.4,70,127,Atypical Angina,False,1.1,True,Former,0.5,46,7.2,63.1,False,4912,38.2,1 +2891,51,Male,129,89,170,41,95,192,94,4.6,23.4,90,160,Atypical Angina,False,0.3,False,Never,7.7,138,7.6,60.7,True,9182,42.1,1 +2892,38,Female,118,77,216,66,116,202,119,5.7,25.7,65,193,Typical Angina,False,0.6,False,Never,21.5,183,7.0,46.5,True,5377,48.2,0 +2893,55,Male,141,80,167,56,72,124,121,5.9,17.8,81,150,Atypical Angina,False,2.9,True,Never,25.4,217,6.9,56.5,True,8576,78.5,1 +2894,72,Male,122,73,163,34,88,151,127,6.1,29.9,93,137,Non-Anginal Pain,False,0.4,False,Never,5.5,173,7.7,45.9,True,7234,45.0,1 +2895,75,Female,118,83,202,61,97,192,125,6.1,25.7,79,160,Non-Anginal Pain,False,0.2,True,Never,5.6,162,6.7,37.3,True,7562,71.9,0 +2896,56,Male,125,76,191,36,124,153,143,6.5,21.1,70,131,Asymptomatic,True,0.5,False,Current,18.4,248,6.2,39.4,True,8671,73.5,1 +2897,59,Male,133,80,146,54,70,139,140,6.5,23.6,87,174,Asymptomatic,False,0.2,False,Former,10.1,91,7.5,27.4,False,5806,44.0,0 +2898,75,Female,138,91,180,76,80,90,107,5.2,19.4,78,146,Asymptomatic,False,0.2,False,Former,1.2,213,6.3,41.6,True,10597,63.4,0 +2899,56,Male,133,82,153,42,80,204,120,5.9,31.8,85,176,Non-Anginal Pain,False,0.5,False,Current,9.2,198,5.6,64.9,True,6258,63.7,0 +2900,63,Male,149,90,169,55,103,60,91,5.2,18.3,87,151,Non-Anginal Pain,True,0.0,False,Former,7.3,155,6.2,87.0,True,7538,59.8,0 +2901,67,Male,147,87,190,51,103,149,95,5.2,34.7,74,181,Asymptomatic,False,0.5,True,Never,10.9,117,7.4,45.0,True,6007,70.7,0 +2902,51,Male,136,80,127,36,73,136,122,6.3,22.8,99,192,Asymptomatic,False,0.1,False,Never,2.6,22,9.2,62.2,False,3047,50.9,0 +2903,43,Male,123,92,146,73,54,115,93,5.4,24.8,79,190,Typical Angina,False,0.4,True,Former,1.8,201,5.9,39.0,True,8548,72.1,0 +2904,87,Male,145,92,179,54,92,209,142,6.7,27.0,89,115,Non-Anginal Pain,False,1.3,False,Former,18.7,139,7.3,57.6,True,8122,64.3,1 +2905,46,Male,142,93,178,37,107,140,80,4.8,23.0,84,187,Non-Anginal Pain,True,1.1,False,Never,3.1,126,6.7,41.3,True,8683,64.2,0 +2906,40,Male,117,65,161,64,60,217,98,5.3,27.4,86,192,Asymptomatic,False,0.7,False,Never,2.5,189,7.4,35.5,False,4783,75.7,0 +2907,51,Male,141,79,181,50,89,198,144,6.6,26.8,69,168,Asymptomatic,False,0.5,False,Former,4.4,137,8.2,50.6,True,6093,59.8,0 +2908,56,Male,125,84,209,41,127,153,139,6.4,29.0,81,167,Atypical Angina,False,1.9,True,Never,3.0,184,7.9,10.7,False,6682,43.6,0 +2909,58,Female,151,85,186,63,125,71,165,6.6,22.2,90,165,Non-Anginal Pain,True,1.2,False,Current,3.5,182,8.7,55.8,False,8794,70.5,1 +2910,50,Male,124,86,195,63,98,122,119,5.4,25.1,68,194,Asymptomatic,False,0.9,False,Never,2.0,274,8.6,33.2,True,10828,66.6,0 +2911,61,Female,110,77,200,66,115,153,95,5.3,17.8,87,177,Non-Anginal Pain,True,2.0,False,Never,3.6,75,5.0,32.1,False,6314,52.2,1 +2912,77,Male,125,87,201,66,110,108,137,6.0,22.3,68,168,Asymptomatic,False,1.5,False,Never,5.7,344,7.3,50.3,True,11962,59.0,0 +2913,50,Male,137,85,164,65,61,125,152,7.1,27.0,97,176,Asymptomatic,False,0.3,True,Never,6.7,84,6.5,53.3,False,6531,50.8,0 +2914,55,Female,121,79,156,67,77,58,84,4.5,17.3,69,148,Asymptomatic,False,0.4,True,Never,2.8,157,8.5,42.0,True,5919,61.7,0 +2915,73,Female,110,72,200,59,111,187,130,6.2,33.4,96,132,Asymptomatic,False,0.7,False,Never,10.0,99,7.6,61.9,False,3620,88.0,1 +2916,40,Male,120,67,167,43,81,216,129,6.3,24.8,79,188,Asymptomatic,True,1.8,False,Never,1.6,140,5.7,28.4,True,6413,72.3,0 +2917,38,Female,130,80,175,55,104,167,142,5.9,29.4,83,187,Asymptomatic,False,0.1,False,Never,0.5,181,8.9,43.0,True,7506,45.9,0 +2918,45,Male,125,69,201,44,113,166,127,6.4,20.5,72,163,Typical Angina,False,0.5,False,Former,6.7,120,6.0,34.1,False,1497,56.5,0 +2919,52,Female,130,83,194,61,134,48,126,5.9,19.9,77,165,Non-Anginal Pain,False,1.2,False,Never,4.9,111,7.5,29.1,False,3501,57.6,0 +2920,66,Female,113,69,190,69,96,99,108,5.5,19.2,72,150,Asymptomatic,False,0.2,True,Never,1.3,68,8.9,59.5,False,5895,71.0,0 +2921,32,Male,117,70,184,54,69,241,135,6.5,27.0,81,184,Typical Angina,False,0.0,False,Former,11.2,110,7.0,32.0,True,8019,63.1,0 +2922,45,Male,109,59,193,57,116,128,84,4.6,23.0,82,186,Non-Anginal Pain,False,0.2,True,Current,3.0,160,6.1,55.7,False,4872,49.8,0 +2923,39,Female,139,96,194,63,131,54,120,5.5,25.3,91,192,Asymptomatic,False,1.0,False,Never,2.2,164,6.1,49.2,False,7004,63.7,0 +2924,33,Male,130,84,143,43,86,82,137,6.3,23.8,73,166,Asymptomatic,False,1.9,False,Current,1.8,226,6.0,27.9,True,6753,53.7,1 +2925,37,Male,103,50,193,65,120,91,92,5.4,25.2,76,189,Atypical Angina,False,2.9,False,Never,2.9,172,6.8,37.3,True,9364,61.7,0 +2926,64,Female,119,81,188,63,110,137,99,4.8,31.3,83,156,Asymptomatic,False,1.1,False,Never,3.0,130,4.0,38.6,False,3789,62.4,0 +2927,55,Female,138,74,193,58,113,97,124,6.0,20.4,82,167,Asymptomatic,False,0.1,True,Never,5.0,144,7.7,58.5,False,5664,93.1,0 +2928,56,Female,125,77,194,30,106,264,143,6.3,39.1,90,171,Non-Anginal Pain,True,0.1,False,Never,0.0,25,6.3,24.3,False,3247,53.1,0 +2929,62,Female,133,88,175,57,118,102,97,4.8,22.4,85,140,Typical Angina,False,1.2,False,Never,7.7,106,6.5,22.3,False,5679,32.4,0 +2930,60,Female,140,93,200,57,127,107,88,4.8,24.4,86,172,Asymptomatic,False,3.6,False,Never,5.9,150,7.3,59.8,True,5931,59.0,0 +2931,60,Female,122,74,161,37,83,186,122,5.9,24.2,84,169,Non-Anginal Pain,True,0.1,False,Current,5.0,163,9.9,34.6,True,5705,53.8,1 +2932,80,Male,136,80,142,38,104,44,139,6.4,31.8,81,123,Asymptomatic,True,0.1,False,Never,2.9,69,7.5,58.8,False,1370,66.0,1 +2933,63,Male,116,68,263,63,163,160,110,5.4,27.3,78,128,Non-Anginal Pain,True,1.5,False,Former,4.4,206,4.4,14.0,True,8491,56.4,1 +2934,18,Female,102,65,139,57,68,80,83,4.6,15.2,74,209,Asymptomatic,False,0.5,False,Never,0.2,173,5.6,35.2,True,7201,91.1,0 +2935,62,Male,143,86,212,80,104,119,147,6.4,24.1,73,152,Asymptomatic,False,1.1,True,Never,1.9,117,7.1,22.8,True,8833,38.6,0 +2936,67,Female,136,97,106,50,44,35,67,4.2,15.2,76,170,Non-Anginal Pain,True,0.6,True,Never,7.8,148,7.4,63.5,True,3769,60.1,0 +2937,61,Male,151,103,206,63,107,210,116,6.0,33.1,82,145,Asymptomatic,False,0.1,False,Current,11.6,144,6.7,61.1,True,7812,64.7,1 +2938,46,Male,124,79,152,44,104,136,134,5.6,21.6,79,190,Asymptomatic,False,0.2,False,Never,3.5,235,6.3,50.8,False,6748,59.4,0 +2939,40,Female,138,89,183,67,90,143,98,5.5,26.9,71,164,Asymptomatic,False,0.5,False,Never,1.7,173,7.3,89.1,True,6811,47.9,0 +2940,55,Male,114,83,192,46,122,131,134,6.2,29.2,76,153,Atypical Angina,False,1.2,False,Never,7.5,188,5.0,25.1,True,6558,81.7,1 +2941,63,Female,156,100,187,61,111,143,146,6.6,30.7,86,118,Asymptomatic,True,1.3,False,Former,6.3,0,6.8,40.0,False,6431,39.9,1 +2942,66,Female,130,81,159,47,75,157,104,5.3,27.8,71,147,Atypical Angina,False,0.1,False,Former,6.7,37,4.5,67.2,False,4078,60.5,0 +2943,29,Male,106,67,172,61,93,165,105,5.5,26.4,67,210,Non-Anginal Pain,False,1.2,False,Former,3.4,282,8.2,34.5,True,8202,47.9,0 +2944,59,Male,124,75,193,31,144,116,89,4.9,24.5,92,151,Asymptomatic,False,0.8,False,Former,13.0,34,5.5,17.1,False,6218,54.6,1 +2945,71,Female,145,110,171,40,109,129,131,5.9,26.8,88,141,Non-Anginal Pain,True,0.0,True,Former,22.6,80,6.4,70.3,False,5243,46.9,1 +2946,64,Male,143,90,208,68,125,90,138,6.5,19.7,91,155,Asymptomatic,False,0.2,False,Former,1.5,71,7.8,47.9,True,7193,64.3,0 +2947,89,Male,145,94,214,41,149,140,139,6.4,26.6,83,120,Atypical Angina,False,0.1,True,Current,2.8,244,5.0,57.2,True,9530,68.8,1 +2948,45,Female,105,61,212,64,106,206,111,5.2,28.1,89,171,Non-Anginal Pain,False,0.7,False,Former,6.9,127,6.4,69.7,False,5265,43.4,0 +2949,38,Male,95,54,149,42,99,96,137,6.2,25.9,77,193,Typical Angina,False,0.5,False,Former,5.5,140,8.7,54.3,False,7505,65.7,0 +2950,66,Female,138,102,171,60,73,193,141,6.3,25.8,84,169,Typical Angina,False,0.2,False,Never,1.6,82,5.2,49.1,True,6827,66.4,0 +2951,74,Female,128,78,274,74,159,183,106,5.9,21.9,75,130,Atypical Angina,False,0.2,True,Never,2.2,28,5.8,44.3,False,3247,69.9,1 +2952,40,Female,112,63,137,57,71,63,160,6.8,26.8,87,183,Typical Angina,False,1.4,False,Never,0.5,80,3.9,71.6,False,7641,74.0,0 +2953,55,Male,113,61,189,56,109,154,89,4.5,25.3,77,165,Asymptomatic,False,0.9,True,Never,8.1,233,8.9,39.4,True,6033,54.8,0 +2954,57,Female,130,75,136,56,50,152,107,6.1,18.0,66,167,Asymptomatic,False,0.1,False,Former,12.3,218,6.2,27.0,False,1889,85.7,0 +2955,60,Female,125,80,227,71,107,209,171,7.4,24.1,91,157,Atypical Angina,False,3.7,False,Never,4.3,156,6.3,15.3,True,6387,83.7,0 +2956,71,Male,118,69,212,49,121,150,142,6.4,24.2,80,116,Asymptomatic,True,1.9,False,Never,9.4,49,7.2,70.7,False,2996,42.7,1 +2957,86,Male,149,107,189,52,131,96,146,6.8,24.0,81,120,Asymptomatic,False,1.3,False,Former,1.6,59,7.0,58.4,False,4514,70.5,1 +2958,46,Male,131,89,182,51,108,187,63,4.8,20.8,83,169,Atypical Angina,False,0.1,True,Current,2.1,231,6.0,22.9,True,8586,45.2,0 +2959,50,Male,121,71,179,46,84,223,114,5.6,26.4,78,174,Asymptomatic,False,1.5,False,Never,7.0,206,6.1,40.9,True,7971,71.7,0 +2960,34,Male,122,76,148,47,60,174,127,5.9,25.9,82,199,Asymptomatic,False,2.8,False,Never,3.8,25,6.5,42.6,False,1707,72.2,0 +2961,65,Male,139,93,191,61,81,186,119,6.1,27.6,79,153,Asymptomatic,False,0.5,False,Never,19.9,161,6.5,50.9,False,5219,47.5,0 +2962,39,Male,132,85,127,40,46,218,124,5.7,27.4,90,187,Typical Angina,False,0.3,False,Never,2.0,134,8.4,41.2,True,7352,70.0,0 +2963,56,Female,125,74,159,60,68,163,103,5.4,26.6,82,166,Asymptomatic,False,0.1,False,Former,1.5,119,8.2,20.6,False,4709,76.8,0 +2964,60,Male,140,96,209,45,130,138,97,4.8,26.3,82,157,Non-Anginal Pain,True,2.6,True,Current,8.8,228,5.7,24.3,True,7134,51.6,1 +2965,72,Female,140,91,247,75,135,112,124,5.9,25.3,88,154,Asymptomatic,False,1.2,False,Never,0.3,117,6.8,67.8,False,6673,60.8,0 +2966,53,Female,132,88,169,71,80,122,135,6.4,18.9,77,177,Atypical Angina,False,0.1,True,Never,13.8,161,7.4,42.6,True,4991,62.5,0 +2967,47,Male,122,78,103,52,37,135,110,5.2,29.5,82,173,Asymptomatic,False,0.4,False,Never,3.5,174,7.3,56.4,True,8512,56.2,0 +2968,45,Male,115,86,184,74,94,146,135,6.3,20.5,82,186,Non-Anginal Pain,False,0.2,False,Never,13.2,226,7.1,46.2,False,7185,77.3,0 +2969,67,Female,118,73,195,66,102,199,113,5.9,29.5,94,154,Typical Angina,False,0.7,False,Never,0.4,124,7.2,58.9,False,5881,60.0,1 +2970,49,Male,122,85,145,62,51,155,107,5.5,21.0,89,182,Asymptomatic,False,0.0,True,Never,17.8,208,4.4,76.4,False,6557,96.9,0 +2971,55,Male,115,69,214,66,98,171,107,5.5,24.9,82,186,Atypical Angina,False,0.9,False,Never,2.6,163,7.7,41.1,False,5660,52.5,0 +2972,64,Male,131,78,215,74,115,119,142,5.9,30.0,84,135,Asymptomatic,True,0.1,False,Never,3.3,63,7.6,35.8,False,2712,68.0,0 +2973,72,Male,129,91,179,63,71,219,106,5.7,17.4,78,139,Non-Anginal Pain,False,0.5,False,Former,7.3,164,8.0,40.8,True,5812,63.6,0 +2974,70,Male,136,94,161,56,91,105,118,5.9,23.7,72,163,Asymptomatic,False,0.2,False,Never,3.8,170,7.5,16.0,True,8956,48.2,0 +2975,35,Male,134,81,181,30,111,166,123,5.7,30.7,90,186,Asymptomatic,False,0.2,True,Never,5.4,91,6.5,47.4,False,7680,74.9,0 +2976,39,Female,117,78,215,52,114,213,103,5.3,30.5,76,198,Asymptomatic,False,0.1,False,Former,8.9,173,9.8,35.6,False,5744,43.8,0 +2977,59,Male,133,86,180,47,111,70,105,5.2,21.5,91,137,Asymptomatic,True,3.4,False,Current,1.8,164,6.5,69.1,True,7404,51.3,1 +2978,62,Female,146,94,166,65,74,90,118,5.5,26.4,68,162,Asymptomatic,False,1.2,True,Never,4.3,71,7.1,58.3,False,4663,67.1,0 +2979,58,Female,130,92,173,56,106,113,160,6.7,29.2,82,132,Non-Anginal Pain,False,0.7,False,Current,1.5,116,6.3,48.1,False,7140,67.8,0 +2980,72,Female,146,95,198,52,121,180,129,6.1,36.7,87,140,Non-Anginal Pain,False,0.2,False,Former,0.2,8,7.8,22.4,False,2905,49.8,0 +2981,75,Male,139,92,190,54,112,145,133,6.4,26.0,82,138,Non-Anginal Pain,True,2.1,True,Never,3.1,55,7.0,55.6,False,5220,66.3,1 +2982,53,Male,130,78,192,53,94,210,118,5.3,23.9,80,177,Non-Anginal Pain,False,0.1,False,Former,2.4,203,7.8,40.4,True,10088,80.5,0 +2983,56,Female,147,89,203,52,109,187,99,5.8,22.0,94,133,Non-Anginal Pain,False,3.4,False,Former,0.8,6,7.4,61.5,False,4315,53.1,1 +2984,69,Female,166,93,178,50,110,192,164,7.2,33.6,89,122,Asymptomatic,True,0.5,False,Former,0.6,0,6.1,84.3,False,3771,39.9,1 +2985,66,Female,127,93,201,55,114,180,101,5.2,18.9,63,146,Asymptomatic,False,0.4,False,Never,3.4,145,8.4,48.2,False,5391,62.7,0 +2986,40,Female,119,79,196,58,113,133,129,6.3,29.0,91,191,Asymptomatic,False,1.2,False,Never,7.6,217,6.7,40.6,False,7852,53.8,0 +2987,37,Female,106,76,168,66,58,173,111,5.5,23.1,88,183,Non-Anginal Pain,True,2.7,True,Never,4.4,143,5.8,52.7,True,8658,71.6,0 +2988,30,Female,108,82,139,60,79,35,142,6.7,24.4,86,172,Atypical Angina,False,2.3,False,Current,3.9,206,4.9,45.5,True,9587,28.2,1 +2989,54,Female,102,69,195,31,129,183,128,6.2,25.8,82,164,Atypical Angina,False,0.2,False,Current,0.2,117,8.7,32.9,True,8527,59.7,1 +2990,46,Female,118,79,273,49,175,200,139,6.5,32.4,82,166,Asymptomatic,False,0.8,False,Current,8.8,105,7.9,76.7,True,7597,45.1,0 +2991,45,Female,115,70,231,69,122,183,169,7.0,21.8,65,181,Non-Anginal Pain,False,0.8,False,Former,8.5,122,7.9,30.1,True,6075,37.7,0 +2992,33,Male,129,84,197,83,74,188,84,5.0,22.5,73,184,Non-Anginal Pain,False,0.2,False,Former,7.8,196,6.4,43.6,False,7599,79.1,0 +2993,53,Female,132,85,157,48,99,72,153,6.7,29.8,81,149,Asymptomatic,False,1.0,False,Former,4.8,58,7.8,65.8,False,2708,60.9,1 +2994,34,Male,135,69,177,58,82,196,146,6.6,27.2,88,194,Asymptomatic,False,0.2,False,Never,3.2,164,7.5,47.4,True,6570,75.0,0 +2995,38,Male,113,72,208,72,105,86,160,6.3,16.1,67,195,Asymptomatic,False,0.7,False,Former,13.6,131,5.4,29.7,False,6781,57.2,0 +2996,49,Female,140,85,196,66,108,151,133,6.0,27.1,85,178,Asymptomatic,True,1.7,False,Never,11.2,225,8.3,32.1,True,11647,51.2,1 +2997,60,Female,122,70,200,56,107,156,122,6.4,28.9,72,172,Asymptomatic,False,0.4,False,Never,0.6,112,6.4,23.3,True,7279,50.0,0 +2998,54,Female,127,86,210,47,143,101,121,6.5,29.0,75,181,Asymptomatic,True,1.5,True,Never,4.5,216,6.3,34.6,True,7564,47.3,0 +2999,63,Female,138,98,142,45,90,115,95,5.1,20.5,70,153,Asymptomatic,False,0.4,False,Never,2.0,81,8.0,63.8,False,4259,63.8,0 +3000,53,Male,124,89,154,38,99,81,87,5.0,24.6,77,186,Non-Anginal Pain,False,0.5,False,Current,4.0,173,6.3,55.5,True,6376,64.6,0 +3001,48,Female,107,71,180,88,84,103,98,5.0,15.0,80,198,Non-Anginal Pain,False,0.3,False,Never,4.6,275,4.9,50.4,True,11221,80.0,0 +3002,49,Male,127,75,147,53,74,141,121,5.8,32.0,85,153,Asymptomatic,False,0.4,False,Former,2.8,126,7.2,36.6,True,8432,63.7,0 +3003,42,Female,137,84,160,44,68,229,98,5.4,27.6,69,202,Non-Anginal Pain,False,0.3,False,Former,1.7,132,6.3,21.8,True,8226,59.5,0 +3004,54,Female,109,89,212,67,101,116,117,5.6,15.0,81,166,Asymptomatic,False,1.8,False,Never,0.5,210,7.5,55.5,True,7027,73.1,0 +3005,69,Female,136,78,192,79,75,118,144,6.2,22.6,90,143,Atypical Angina,False,0.7,False,Former,3.6,130,7.8,55.7,True,6940,47.6,0 +3006,64,Male,121,64,158,56,78,197,142,6.3,25.9,89,167,Non-Anginal Pain,False,0.5,False,Never,9.9,30,7.6,48.0,False,6363,64.9,0 +3007,63,Male,115,63,232,49,152,198,130,5.6,19.9,78,166,Atypical Angina,False,0.5,False,Never,5.3,245,7.2,59.9,False,5136,60.2,0 +3008,59,Male,135,109,146,23,96,136,126,6.0,26.2,91,148,Asymptomatic,True,0.2,True,Current,5.6,34,8.1,44.5,False,3425,30.0,1 +3009,57,Male,142,85,213,59,154,54,103,5.8,25.5,85,150,Asymptomatic,False,2.4,True,Current,2.2,206,7.6,70.3,True,6008,70.9,1 +3010,55,Female,105,63,230,70,130,148,99,4.9,22.5,78,179,Non-Anginal Pain,False,0.1,False,Current,14.0,135,5.3,15.9,False,4245,51.4,0 +3011,39,Male,131,86,133,74,35,126,142,6.3,21.7,82,189,Typical Angina,False,0.2,False,Never,8.3,134,9.0,76.6,False,6963,62.3,0 +3012,39,Male,131,79,150,67,82,75,103,5.3,30.3,74,178,Asymptomatic,False,0.3,False,Never,7.1,181,6.9,31.4,True,6347,62.3,0 +3013,41,Female,127,87,132,37,91,99,108,5.7,25.2,78,182,Asymptomatic,False,0.5,True,Former,6.1,144,7.8,8.4,True,10521,32.8,0 +3014,66,Female,128,79,175,79,79,89,90,5.5,21.3,74,173,Asymptomatic,False,0.7,False,Never,2.1,128,4.9,43.4,False,5521,61.2,0 +3015,45,Female,119,75,230,47,135,225,117,6.0,24.6,87,164,Asymptomatic,True,1.9,False,Current,5.4,264,8.0,44.5,False,6186,64.8,1 +3016,62,Male,122,76,215,59,117,158,80,4.4,18.7,71,171,Non-Anginal Pain,True,0.2,False,Former,2.6,173,6.6,35.3,False,5088,58.9,0 +3017,39,Male,112,65,139,63,58,105,97,5.2,26.3,80,200,Non-Anginal Pain,False,1.0,False,Former,3.5,311,6.8,75.8,True,7428,75.5,0 +3018,50,Female,140,92,207,66,116,114,142,6.5,23.9,89,153,Non-Anginal Pain,False,1.9,False,Never,0.2,117,8.4,29.0,False,4275,54.3,0 +3019,41,Female,112,68,151,60,98,40,131,6.2,25.7,83,193,Asymptomatic,False,0.1,False,Never,2.3,322,7.7,66.0,True,10611,71.6,0 +3020,63,Male,123,87,213,65,127,138,99,5.6,28.1,79,158,Atypical Angina,True,0.4,False,Never,4.2,154,9.0,47.8,True,5464,59.1,1 +3021,80,Male,164,95,247,78,127,124,156,6.7,26.4,71,129,Asymptomatic,True,0.4,False,Former,1.9,118,6.5,66.2,True,7090,63.9,1 +3022,37,Male,128,86,150,58,59,141,154,7.0,25.6,77,210,Asymptomatic,False,2.9,False,Never,2.5,181,8.2,24.0,True,5759,72.1,0 +3023,58,Male,125,75,217,49,130,165,136,6.3,21.2,74,151,Typical Angina,False,1.0,False,Current,4.9,169,6.3,38.3,True,8950,56.8,1 +3024,43,Male,106,80,205,62,97,200,149,6.5,21.2,80,163,Non-Anginal Pain,False,0.6,False,Current,9.7,267,5.4,41.4,True,9254,76.2,0 +3025,63,Female,151,94,224,42,140,211,117,6.0,24.5,95,150,Asymptomatic,True,1.0,False,Never,5.5,118,6.2,74.7,False,3143,57.3,1 +3026,76,Female,137,91,154,33,90,212,120,5.7,24.8,88,144,Atypical Angina,True,0.5,True,Never,19.7,47,5.4,71.4,False,4803,80.9,1 +3027,47,Female,121,73,193,69,110,113,99,5.5,20.5,77,177,Non-Anginal Pain,False,0.6,True,Never,3.0,204,6.3,43.4,True,7932,80.4,0 +3028,67,Female,146,82,217,51,134,159,150,7.1,28.2,83,134,Non-Anginal Pain,False,2.5,False,Never,3.3,44,5.2,44.8,True,9091,71.3,1 +3029,52,Female,133,86,194,44,87,250,122,5.9,28.4,76,143,Typical Angina,False,1.5,False,Never,2.6,118,4.6,72.5,False,3082,59.1,1 +3030,44,Male,123,88,177,43,109,198,125,5.6,23.2,73,158,Atypical Angina,True,0.2,True,Current,9.7,113,6.2,53.3,True,7706,53.8,1 +3031,49,Male,128,83,150,59,55,221,139,6.3,34.7,90,173,Asymptomatic,False,0.2,False,Never,2.1,187,6.9,56.0,False,3916,41.3,0 +3032,69,Male,123,75,203,43,145,75,93,5.2,24.1,83,162,Asymptomatic,False,0.9,False,Current,6.0,94,7.8,59.6,False,3537,47.9,0 +3033,60,Male,136,77,195,43,129,138,153,6.3,31.6,84,147,Atypical Angina,False,0.8,False,Former,4.3,138,6.3,74.3,True,6617,38.2,1 +3034,53,Male,157,90,238,64,150,182,107,5.6,29.3,89,194,Asymptomatic,False,0.5,False,Never,14.2,103,6.9,57.5,False,6639,44.0,0 +3035,52,Female,154,89,172,72,84,154,82,4.6,26.0,87,151,Non-Anginal Pain,False,0.5,False,Never,2.3,59,8.5,73.6,True,5727,57.6,1 +3036,46,Female,102,61,165,55,84,119,92,4.5,19.4,79,202,Asymptomatic,False,0.1,True,Never,1.3,299,7.6,42.1,True,11373,56.6,0 +3037,63,Male,121,64,206,67,115,87,107,5.0,23.3,73,191,Asymptomatic,False,0.2,True,Never,2.7,222,8.3,38.0,True,5505,63.5,0 +3038,83,Male,127,69,221,43,158,122,126,5.7,22.2,90,103,Asymptomatic,False,6.5,False,Current,2.1,151,7.4,48.7,False,4562,67.4,1 +3039,52,Male,130,78,171,61,81,140,129,6.3,20.7,87,172,Atypical Angina,False,1.0,True,Never,4.3,78,6.7,54.4,False,4671,59.6,0 +3040,40,Male,149,98,252,48,150,215,142,6.0,28.7,80,198,Asymptomatic,False,0.7,False,Current,2.2,133,5.9,57.6,True,11092,44.5,0 +3041,59,Male,145,98,258,67,142,150,122,5.4,25.7,81,151,Non-Anginal Pain,True,1.1,False,Never,4.5,30,5.0,48.1,False,3721,57.2,1 +3042,61,Male,136,101,183,38,110,159,95,5.0,21.7,88,134,Non-Anginal Pain,False,0.4,False,Former,2.1,86,6.2,46.2,False,6408,38.3,1 +3043,68,Male,143,96,189,36,116,177,105,5.4,28.1,69,162,Asymptomatic,False,0.4,False,Never,3.1,139,5.1,60.4,True,4358,57.8,0 +3044,38,Female,135,76,207,75,99,127,96,4.9,24.1,82,209,Asymptomatic,False,0.5,False,Current,1.0,127,8.9,12.5,False,4027,57.6,0 +3045,58,Male,113,78,194,51,104,138,116,5.2,26.8,92,173,Asymptomatic,False,0.3,False,Never,9.2,199,7.9,38.9,True,9236,71.4,0 +3046,43,Male,117,69,118,37,37,163,145,6.7,31.4,81,154,Non-Anginal Pain,False,0.4,False,Former,6.7,147,7.8,40.1,True,9055,57.1,0 +3047,72,Male,156,105,183,40,102,163,91,5.2,35.0,96,137,Asymptomatic,False,0.8,False,Current,3.3,80,7.6,36.8,False,1519,71.2,1 +3048,64,Male,130,93,161,43,105,80,85,4.7,24.0,78,139,Atypical Angina,True,1.7,True,Never,3.2,117,8.8,47.7,True,3835,50.9,1 +3049,52,Male,141,94,191,65,98,199,139,6.4,26.3,91,170,Atypical Angina,False,0.9,False,Never,5.3,121,7.9,66.7,False,6548,62.4,0 +3050,38,Female,115,77,180,62,81,150,119,5.4,18.4,86,184,Asymptomatic,False,0.2,False,Former,10.2,148,6.5,39.0,False,6571,83.3,0 +3051,79,Female,144,92,202,70,107,129,116,6.0,26.9,88,144,Asymptomatic,False,1.6,True,Former,5.3,153,6.1,66.2,True,6068,69.5,1 +3052,52,Female,135,84,183,59,126,35,114,6.0,26.0,91,163,Atypical Angina,False,0.4,False,Never,8.5,97,6.1,55.1,False,7434,65.8,0 +3053,66,Female,138,87,245,49,150,258,132,6.5,28.7,73,137,Asymptomatic,True,1.2,True,Never,2.8,119,9.1,62.4,False,6569,47.8,1 +3054,29,Female,134,81,163,46,68,262,153,7.0,35.6,91,182,Asymptomatic,False,0.8,False,Former,8.9,121,7.0,62.2,True,6714,50.8,1 +3055,56,Female,124,79,150,53,70,156,123,6.1,26.5,81,172,Asymptomatic,False,0.2,False,Never,2.5,202,7.2,36.6,True,8403,80.3,0 +3056,64,Female,124,71,206,44,145,98,111,5.7,27.5,98,153,Asymptomatic,False,0.3,False,Never,7.9,1,6.4,28.5,False,4278,37.2,0 +3057,25,Male,97,63,145,53,74,104,113,5.9,18.2,69,173,Asymptomatic,False,0.3,False,Former,2.5,201,5.5,39.3,False,5458,32.0,0 +3058,58,Female,155,105,123,59,45,115,139,6.1,27.0,94,189,Asymptomatic,False,0.8,True,Former,1.2,137,8.1,56.0,True,6273,65.2,0 +3059,71,Female,118,74,111,36,58,144,182,7.6,22.4,83,172,Non-Anginal Pain,False,0.1,False,Former,0.7,65,7.3,68.6,False,6410,81.4,0 +3060,35,Male,129,85,186,50,101,225,133,5.9,23.8,86,206,Asymptomatic,True,0.9,False,Never,10.1,222,7.4,38.7,True,9760,54.7,0 +3061,52,Male,143,90,246,51,163,163,111,5.5,22.1,72,151,Atypical Angina,False,0.7,False,Current,2.0,163,8.0,40.3,False,8069,47.5,1 +3062,49,Male,119,73,214,70,113,207,128,5.8,27.2,73,171,Asymptomatic,False,0.4,True,Never,6.4,186,7.2,47.6,False,6258,50.1,0 +3063,46,Female,114,76,126,40,66,174,125,5.2,21.7,87,168,Non-Anginal Pain,True,1.5,False,Never,1.2,95,5.9,44.7,False,4722,59.1,0 +3064,46,Male,127,91,214,57,112,198,101,5.5,24.4,83,178,Asymptomatic,False,1.0,True,Former,2.8,82,6.8,60.0,False,4456,76.9,0 +3065,42,Male,155,102,168,64,73,138,110,6.1,27.7,90,159,Typical Angina,False,4.8,False,Never,2.3,99,7.1,50.7,True,5810,57.5,1 +3066,44,Male,115,72,158,51,78,184,129,6.3,20.4,87,170,Asymptomatic,True,1.5,False,Current,4.3,149,6.4,55.7,True,6695,60.8,1 +3067,53,Male,140,81,262,76,147,210,168,7.2,27.9,89,175,Non-Anginal Pain,False,1.4,False,Never,11.1,134,6.7,65.3,False,2572,51.4,0 +3068,55,Female,110,67,143,67,72,38,163,6.7,26.0,83,160,Non-Anginal Pain,False,0.2,False,Former,0.1,96,6.5,19.9,True,6473,57.1,0 +3069,36,Male,153,96,184,56,118,63,112,5.6,28.9,83,170,Atypical Angina,True,2.4,False,Never,2.9,199,6.3,79.1,True,11744,72.1,1 +3070,46,Female,146,95,216,62,129,156,120,5.8,31.3,77,173,Asymptomatic,False,0.9,True,Never,2.5,139,5.1,37.9,False,7067,64.1,0 +3071,55,Female,121,75,168,64,92,123,117,5.4,21.5,80,174,Non-Anginal Pain,False,0.7,False,Never,4.1,215,7.0,24.9,True,8589,81.7,0 +3072,70,Male,118,74,218,51,123,184,74,4.6,28.4,82,171,Asymptomatic,False,0.6,False,Never,5.4,117,6.7,36.8,False,5858,80.9,0 +3073,70,Male,132,79,133,37,74,178,145,6.4,29.4,86,144,Non-Anginal Pain,False,0.4,True,Former,4.6,53,5.5,40.2,False,6747,64.5,0 +3074,54,Male,161,98,167,18,123,105,132,6.4,32.2,94,133,Asymptomatic,True,0.8,False,Current,3.6,61,5.7,72.9,False,7617,41.8,1 +3075,56,Female,120,75,119,53,43,138,132,6.1,26.1,86,173,Typical Angina,False,0.6,False,Never,2.5,159,8.4,54.8,False,5479,77.0,0 +3076,35,Female,127,69,191,70,72,281,108,5.3,20.9,86,191,Atypical Angina,False,0.0,False,Former,1.5,115,7.4,22.4,True,7636,75.5,0 +3077,55,Male,123,87,227,53,138,163,96,5.8,30.9,75,161,Non-Anginal Pain,False,2.4,False,Former,5.4,149,4.7,38.2,True,8087,50.1,1 +3078,29,Male,113,74,188,45,110,206,105,5.8,22.9,82,172,Asymptomatic,True,2.1,True,Current,5.5,125,7.5,58.7,False,4468,54.1,1 +3079,49,Male,129,81,193,59,83,224,124,6.1,28.0,94,193,Asymptomatic,False,2.3,True,Never,23.1,80,7.7,51.0,False,4473,69.2,0 +3080,37,Male,122,74,157,62,79,93,60,4.0,19.6,72,170,Atypical Angina,False,0.1,False,Former,2.8,158,6.0,38.7,True,7815,51.1,0 +3081,44,Male,130,86,214,65,124,148,120,6.2,17.7,87,175,Atypical Angina,False,0.1,False,Former,12.6,220,7.9,39.6,True,9325,61.2,0 +3082,56,Male,127,87,213,64,133,121,145,6.3,23.1,74,150,Typical Angina,True,1.6,True,Never,2.6,181,6.9,61.3,False,5686,53.4,1 +3083,57,Female,126,76,220,75,123,153,119,5.8,25.9,82,190,Non-Anginal Pain,False,0.2,False,Former,4.3,278,7.0,53.0,True,5428,56.6,0 +3084,70,Male,126,73,132,50,60,98,141,6.3,22.9,79,151,Non-Anginal Pain,False,0.4,True,Never,14.4,168,6.6,37.0,True,9265,62.9,1 +3085,57,Female,128,77,190,74,82,209,148,6.6,21.5,80,171,Non-Anginal Pain,True,0.9,False,Former,8.4,142,7.5,71.5,False,3632,44.2,0 +3086,47,Female,149,98,190,43,133,103,106,5.6,26.3,70,183,Asymptomatic,False,1.0,True,Never,6.3,172,7.0,58.9,True,7603,69.8,0 +3087,62,Male,131,83,238,47,162,139,95,5.1,27.5,83,179,Asymptomatic,False,0.9,False,Current,9.7,0,6.5,38.8,False,4808,51.8,0 +3088,32,Female,108,69,163,63,81,129,108,5.2,25.5,94,199,Atypical Angina,False,0.9,False,Never,0.1,141,6.6,63.1,True,6656,39.4,0 +3089,76,Female,153,89,251,61,144,185,142,6.4,32.5,89,123,Asymptomatic,False,0.2,True,Former,4.1,8,6.2,44.6,False,5174,43.9,1 +3090,26,Male,128,77,90,52,35,91,118,5.7,23.2,90,210,Atypical Angina,False,1.4,True,Former,2.4,291,7.8,27.6,True,8231,79.0,0 +3091,63,Female,150,92,202,47,118,189,90,4.9,28.1,77,164,Non-Anginal Pain,False,0.9,False,Former,1.8,78,7.5,46.1,False,6207,57.0,0 +3092,61,Male,145,91,275,40,199,143,130,5.9,34.3,81,157,Non-Anginal Pain,True,1.1,False,Never,2.1,88,5.6,47.2,False,7038,48.3,1 +3093,46,Female,127,76,202,54,131,69,118,5.7,33.3,84,183,Asymptomatic,False,0.6,False,Former,2.0,178,7.9,53.9,False,5119,57.1,0 +3094,48,Male,135,94,208,50,119,205,112,6.5,31.7,85,179,Typical Angina,True,2.3,False,Never,3.8,85,5.4,38.3,False,8726,58.2,1 +3095,34,Female,127,82,205,70,91,157,94,5.5,16.6,70,210,Typical Angina,True,1.5,True,Former,6.4,183,6.4,44.8,False,4613,64.9,0 +3096,55,Male,136,75,114,46,52,104,126,6.2,23.3,85,178,Typical Angina,False,4.3,False,Former,2.2,99,7.2,48.7,False,3627,48.2,0 +3097,61,Female,100,70,143,37,79,166,125,6.0,24.6,90,187,Asymptomatic,False,0.4,False,Never,6.9,138,4.5,25.5,False,5360,50.3,0 +3098,47,Male,108,68,208,64,108,209,134,6.4,19.7,87,165,Non-Anginal Pain,False,0.4,False,Never,9.2,182,7.3,39.0,True,7748,84.5,0 +3099,59,Female,129,81,246,62,126,173,117,5.9,28.8,85,138,Asymptomatic,False,0.9,True,Current,2.9,187,4.1,34.5,True,8055,39.6,1 +3100,63,Male,142,88,240,61,110,314,118,5.9,34.0,90,183,Asymptomatic,False,0.6,False,Former,26.5,112,7.3,49.6,False,4443,72.2,0 +3101,44,Female,137,95,201,58,120,116,115,5.8,24.6,86,168,Asymptomatic,False,4.3,True,Former,2.7,94,4.7,77.0,False,3997,65.7,1 +3102,65,Male,160,100,230,30,147,292,109,5.4,26.2,76,139,Atypical Angina,False,3.7,True,Current,10.9,96,6.9,26.8,False,5815,31.5,1 +3103,60,Male,145,89,183,35,100,209,102,5.5,27.1,97,134,Non-Anginal Pain,False,0.6,False,Never,7.6,0,6.7,65.2,False,2806,54.7,0 +3104,55,Female,124,71,206,90,94,160,84,5.1,22.8,68,178,Asymptomatic,False,1.4,False,Never,6.4,193,5.1,51.0,True,7265,62.0,0 +3105,64,Female,130,65,164,69,58,139,122,5.6,22.1,79,153,Atypical Angina,True,0.1,False,Never,0.7,158,7.9,16.4,True,7997,65.2,0 +3106,58,Male,136,92,188,53,85,193,127,6.2,26.3,85,193,Non-Anginal Pain,True,1.6,False,Never,7.8,138,7.9,53.1,True,7239,61.8,0 +3107,44,Male,132,81,187,53,107,138,140,6.2,28.1,76,168,Atypical Angina,False,2.9,True,Former,8.2,173,7.0,60.2,False,5523,61.5,1 +3108,45,Male,112,74,174,56,103,115,117,5.3,20.0,75,193,Asymptomatic,False,0.6,True,Never,7.4,230,6.9,38.7,True,7528,73.5,0 +3109,57,Male,143,85,194,62,114,130,123,6.2,21.1,79,175,Non-Anginal Pain,False,0.3,False,Current,4.6,172,8.2,59.7,False,6209,64.7,0 +3110,68,Male,125,86,196,58,115,77,108,5.8,24.2,95,180,Asymptomatic,False,1.5,False,Never,11.7,170,6.5,55.1,False,3210,78.1,0 +3111,56,Female,119,68,212,63,130,150,129,6.4,16.6,56,161,Asymptomatic,False,1.4,False,Former,3.6,127,5.3,51.4,False,5324,67.7,0 +3112,49,Female,116,61,201,55,101,245,129,6.2,28.5,73,182,Non-Anginal Pain,False,0.4,True,Current,2.2,173,6.6,55.6,False,8814,60.2,0 +3113,54,Female,129,88,201,41,115,236,109,4.8,27.2,79,163,Asymptomatic,False,0.8,False,Current,7.6,158,5.0,52.7,True,8113,22.7,0 +3114,39,Male,111,79,191,60,110,106,106,5.2,22.0,79,179,Asymptomatic,False,0.3,False,Former,6.9,200,6.6,55.2,True,11259,81.0,0 +3115,69,Male,147,92,181,63,104,96,129,5.7,25.2,74,152,Atypical Angina,True,1.3,False,Current,3.5,190,9.9,34.5,False,2433,32.5,0 +3116,72,Male,131,77,210,32,123,224,116,5.5,25.8,92,131,Asymptomatic,True,1.1,False,Current,4.0,67,8.8,18.8,False,5529,47.9,1 +3117,75,Male,137,99,209,65,124,70,136,6.2,17.0,71,159,Non-Anginal Pain,False,0.4,False,Former,3.1,139,8.5,17.8,False,3311,50.0,0 +3118,65,Female,126,86,205,58,113,145,146,6.8,25.9,81,132,Asymptomatic,True,3.5,False,Former,1.8,129,6.7,37.2,True,8124,57.2,1 +3119,45,Female,121,81,175,74,89,91,122,5.9,27.8,71,173,Asymptomatic,False,0.4,False,Never,1.2,307,8.7,27.0,True,7504,62.0,0 +3120,52,Male,124,73,110,30,43,259,116,5.6,23.0,72,176,Asymptomatic,True,0.7,False,Never,18.2,84,7.4,42.8,False,6625,55.1,0 +3121,49,Female,118,76,191,78,97,77,150,6.9,27.7,82,179,Non-Anginal Pain,False,0.1,False,Current,3.3,87,8.2,68.6,False,4434,64.8,0 +3122,59,Female,121,84,156,65,56,162,118,6.0,26.7,82,157,Asymptomatic,False,1.2,True,Former,1.0,181,7.1,51.0,True,6163,57.9,0 +3123,71,Female,146,94,193,45,106,161,138,7.0,31.6,86,149,Atypical Angina,False,6.5,False,Never,5.3,0,6.9,56.2,False,4547,45.8,1 +3124,22,Male,114,79,161,34,100,187,118,6.1,28.9,72,199,Non-Anginal Pain,False,0.5,False,Never,5.9,182,7.4,66.1,False,6933,54.6,0 +3125,59,Male,120,79,183,65,80,171,125,6.3,24.9,67,158,Atypical Angina,False,0.0,False,Never,2.6,53,7.0,40.3,False,3920,41.6,0 +3126,57,Female,113,68,194,62,137,60,140,6.1,23.9,75,166,Atypical Angina,False,0.3,False,Never,2.0,201,7.0,25.7,True,7738,45.8,0 +3127,57,Male,111,74,166,52,98,127,87,4.7,23.9,86,182,Asymptomatic,False,0.1,True,Never,4.8,191,7.7,52.9,True,4918,59.6,0 +3128,62,Female,136,83,170,56,91,141,126,5.8,23.8,82,153,Non-Anginal Pain,False,0.2,False,Never,3.4,83,6.9,52.8,False,6831,38.8,0 +3129,42,Female,115,65,195,66,99,122,136,5.9,28.2,90,182,Asymptomatic,False,0.7,False,Never,0.9,97,5.7,80.8,False,3406,68.4,0 +3130,66,Male,139,75,203,62,117,98,89,5.1,24.1,86,157,Asymptomatic,True,4.2,True,Never,2.2,144,6.5,66.5,False,3749,67.9,1 +3131,58,Male,147,84,189,49,95,164,101,5.8,32.9,96,188,Asymptomatic,False,1.4,False,Never,6.7,180,7.3,44.1,True,7151,62.2,0 +3132,51,Male,129,91,242,46,153,218,118,5.7,30.5,88,155,Typical Angina,True,1.8,False,Never,6.6,196,7.1,42.5,True,6210,90.5,1 +3133,54,Male,121,76,185,67,88,147,107,5.3,26.6,65,165,Asymptomatic,False,0.5,False,Former,11.0,130,7.7,16.9,True,7266,52.7,0 +3134,48,Female,136,91,181,49,122,102,141,6.8,32.2,75,172,Asymptomatic,False,0.3,False,Never,8.1,66,3.8,8.1,False,9494,62.4,0 +3135,55,Female,148,88,162,50,67,196,117,5.4,21.2,87,163,Non-Anginal Pain,False,1.9,True,Never,6.1,77,9.0,40.1,False,6481,74.2,0 +3136,61,Male,134,86,194,42,129,165,160,6.4,34.0,75,152,Non-Anginal Pain,False,0.4,False,Former,8.5,166,4.6,49.0,False,5019,58.8,1 +3137,37,Male,124,80,197,34,117,229,110,5.4,37.6,78,173,Atypical Angina,False,0.7,False,Former,12.7,196,7.0,58.4,True,10019,81.9,0 +3138,49,Female,126,92,129,38,50,139,99,5.0,25.8,66,176,Atypical Angina,True,0.7,False,Never,5.7,168,7.3,79.0,False,6957,51.4,0 +3139,48,Female,147,89,183,49,119,105,106,5.4,32.1,81,175,Asymptomatic,False,1.0,False,Never,0.5,159,8.8,61.6,False,3864,47.1,0 +3140,53,Female,145,94,209,54,135,130,124,5.9,22.4,78,185,Non-Anginal Pain,False,0.3,False,Never,5.3,142,6.9,45.5,True,4939,34.8,0 +3141,50,Female,111,78,158,47,87,145,142,6.3,28.5,86,174,Asymptomatic,True,0.8,False,Never,4.4,181,5.9,55.9,True,8513,57.1,0 +3142,31,Male,115,66,171,51,86,202,97,5.6,16.3,74,188,Atypical Angina,False,1.0,False,Former,5.4,148,6.0,63.4,False,5100,51.3,0 +3143,60,Female,128,82,213,62,115,181,105,6.1,20.2,79,148,Atypical Angina,False,1.2,False,Former,3.6,147,7.2,62.3,False,4555,60.4,0 +3144,69,Male,133,81,168,30,117,122,107,5.3,25.5,88,129,Atypical Angina,True,2.5,True,Never,3.9,113,7.1,100.0,True,10646,67.1,1 +3145,45,Female,120,72,219,66,119,134,134,6.1,30.3,85,178,Asymptomatic,True,1.9,True,Never,26.0,192,6.1,29.6,False,2800,49.7,0 +3146,56,Female,155,89,188,58,100,156,82,4.7,28.5,82,165,Atypical Angina,False,1.4,True,Never,2.8,118,5.5,39.1,False,5503,64.3,0 +3147,45,Female,120,80,208,68,115,108,136,5.9,18.7,74,172,Asymptomatic,False,0.1,True,Never,2.1,204,5.9,40.5,False,5285,64.4,0 +3148,56,Male,147,93,292,76,180,148,60,4.0,34.7,82,168,Asymptomatic,False,2.0,False,Never,3.5,199,7.2,64.1,True,7842,57.6,0 +3149,51,Male,123,96,161,57,57,197,88,4.5,17.6,86,179,Asymptomatic,False,0.2,False,Never,7.5,130,5.9,83.1,False,6202,57.2,0 +3150,68,Female,150,89,237,44,142,229,136,6.2,32.3,83,117,Asymptomatic,True,0.1,False,Former,0.2,149,6.4,51.2,False,5673,38.6,1 +3151,46,Female,127,95,160,60,65,191,85,5.0,20.1,69,170,Typical Angina,False,1.2,True,Current,10.8,353,8.8,37.7,True,6656,54.1,0 +3152,62,Female,118,74,166,75,61,148,90,5.0,18.3,80,157,Non-Anginal Pain,False,0.4,False,Former,2.0,268,10.3,29.9,True,5097,72.6,0 +3153,44,Female,148,92,145,55,69,159,138,5.2,20.9,85,186,Asymptomatic,False,0.2,True,Former,3.2,172,8.8,71.7,False,6559,66.5,1 +3154,47,Female,132,79,176,60,85,138,75,4.0,21.5,74,196,Atypical Angina,False,0.8,False,Never,14.1,151,9.7,32.5,True,9141,57.2,0 +3155,55,Male,154,99,204,41,124,189,102,5.4,31.8,79,157,Typical Angina,True,1.9,False,Never,1.7,112,6.2,48.7,False,3197,62.9,1 +3156,33,Male,124,75,116,48,35,105,135,5.9,17.9,81,194,Non-Anginal Pain,False,0.5,False,Former,5.7,179,6.9,44.7,True,5340,70.9,0 +3157,42,Female,138,84,255,51,165,152,87,4.8,33.3,83,171,Non-Anginal Pain,False,0.7,False,Never,0.1,151,5.7,46.5,False,3962,60.4,0 +3158,64,Female,123,89,179,55,80,190,109,5.9,27.5,87,137,Typical Angina,True,0.1,True,Never,0.3,21,6.4,84.5,False,5081,72.9,1 +3159,45,Female,125,81,263,58,159,204,114,5.8,27.5,70,168,Non-Anginal Pain,False,0.4,False,Never,6.9,181,7.5,44.7,True,6345,57.8,0 +3160,36,Male,112,64,175,51,117,47,129,5.6,21.5,83,178,Non-Anginal Pain,True,0.2,False,Current,6.9,210,7.2,57.1,True,6222,55.2,1 +3161,35,Female,112,61,158,58,58,179,99,5.6,18.5,80,183,Non-Anginal Pain,False,1.9,False,Never,0.8,168,9.0,12.5,True,7786,42.2,0 +3162,55,Male,140,83,177,62,82,133,129,5.7,23.6,83,164,Non-Anginal Pain,False,0.4,False,Former,7.5,187,7.5,58.2,False,7569,59.6,0 +3163,46,Female,104,70,130,35,65,145,119,5.7,18.1,78,185,Atypical Angina,True,2.8,False,Never,1.4,120,8.7,66.7,True,7561,49.3,0 +3164,54,Female,112,80,229,57,155,118,130,5.9,21.8,90,137,Typical Angina,True,1.0,False,Never,6.2,18,6.2,38.5,False,6632,65.4,1 +3165,18,Male,111,79,175,68,86,131,107,5.6,28.5,78,198,Atypical Angina,False,1.1,False,Never,14.7,220,6.3,47.1,True,12423,68.1,0 +3166,43,Male,115,74,141,36,94,103,125,5.9,20.7,86,149,Typical Angina,False,1.2,False,Current,7.0,89,5.6,38.6,False,6977,40.8,1 +3167,43,Female,124,88,139,56,71,115,112,5.6,22.0,80,198,Typical Angina,False,0.6,False,Current,0.8,262,7.3,40.7,False,6921,43.2,0 +3168,63,Female,129,92,156,44,75,173,140,6.7,34.4,85,142,Atypical Angina,True,1.8,True,Former,4.0,121,7.4,60.7,False,8977,69.5,1 +3169,65,Female,144,103,215,60,123,111,110,5.9,23.7,73,142,Typical Angina,True,0.6,False,Former,3.6,82,5.9,47.7,False,5279,42.1,1 +3170,62,Female,128,86,210,62,123,184,130,5.9,28.7,82,174,Asymptomatic,False,0.1,True,Never,7.7,188,6.7,41.3,False,8268,50.5,0 +3171,27,Female,108,59,191,76,97,92,121,5.7,25.1,80,210,Atypical Angina,False,0.9,True,Never,0.8,182,8.2,48.4,True,8027,70.1,0 +3172,64,Male,136,81,193,46,130,101,94,4.9,24.4,92,157,Atypical Angina,False,0.5,False,Former,2.8,120,6.4,49.6,False,6085,56.4,1 +3173,69,Male,128,81,179,47,124,112,114,6.0,20.4,79,167,Asymptomatic,False,0.0,False,Current,2.1,97,9.1,59.3,True,4983,45.7,1 +3174,43,Male,117,73,197,53,117,186,145,6.5,25.6,79,153,Non-Anginal Pain,False,1.2,True,Never,4.9,66,5.7,55.6,False,5742,76.6,1 +3175,57,Male,121,87,233,68,121,186,92,5.0,28.2,93,177,Non-Anginal Pain,False,0.5,True,Never,11.4,113,7.6,44.0,False,7377,61.5,0 +3176,59,Male,119,74,176,57,102,111,124,6.2,21.0,82,142,Non-Anginal Pain,False,2.6,True,Never,1.9,141,6.6,50.7,False,4147,52.6,1 +3177,48,Female,112,66,203,70,111,148,105,5.1,21.9,81,176,Asymptomatic,False,0.6,False,Former,7.3,137,6.7,70.7,False,7556,49.2,0 +3178,55,Female,130,83,237,63,124,165,131,5.7,18.5,77,170,Atypical Angina,False,0.0,True,Former,3.6,122,8.9,48.9,False,7283,50.8,1 +3179,43,Male,128,70,195,69,83,152,118,5.5,22.5,75,180,Asymptomatic,True,0.6,False,Never,6.3,205,8.3,93.6,True,9359,98.1,0 +3180,55,Male,151,96,103,35,49,133,112,5.6,26.1,89,165,Asymptomatic,False,0.5,True,Former,4.5,110,7.8,39.0,False,2911,83.7,0 +3181,52,Male,137,87,198,52,114,208,130,6.5,28.2,76,145,Non-Anginal Pain,True,2.2,True,Former,8.3,180,6.8,24.3,True,4525,43.6,1 +3182,57,Male,130,79,221,53,122,214,116,5.0,33.1,62,174,Asymptomatic,False,0.8,False,Never,6.6,99,7.2,31.5,False,5798,56.1,0 +3183,78,Female,134,83,159,60,55,264,96,5.3,15.4,86,150,Typical Angina,True,1.0,True,Never,10.5,202,9.9,62.2,True,7411,67.5,1 +3184,40,Male,109,73,163,55,81,134,112,5.7,21.0,69,190,Asymptomatic,False,1.4,True,Never,7.1,245,6.4,48.9,True,8252,76.8,0 +3185,69,Female,128,83,245,56,141,244,104,5.7,25.7,88,139,Non-Anginal Pain,True,0.8,True,Current,3.9,132,9.1,60.3,True,7697,28.5,1 +3186,55,Female,127,81,140,61,59,110,85,5.0,22.3,66,177,Typical Angina,False,1.1,False,Never,2.2,129,7.3,68.3,False,3442,78.0,0 +3187,54,Female,148,103,184,38,118,210,103,5.7,26.3,87,177,Asymptomatic,False,0.9,False,Former,0.6,101,8.7,57.5,True,6668,52.0,0 +3188,26,Male,127,76,208,51,113,194,141,6.3,27.8,86,210,Atypical Angina,False,1.8,False,Never,1.6,113,6.7,62.4,False,7362,42.2,0 +3189,66,Male,137,87,201,33,136,188,125,6.1,28.5,77,120,Asymptomatic,True,0.4,True,Current,9.4,83,7.3,63.0,False,1992,57.2,1 +3190,38,Female,106,73,138,82,41,99,106,5.2,19.4,75,188,Asymptomatic,True,0.2,True,Never,4.0,175,5.8,57.0,False,7639,54.2,0 +3191,41,Female,102,70,237,64,131,193,123,5.3,25.6,97,169,Asymptomatic,False,1.6,False,Former,6.0,75,5.8,61.1,False,2303,51.8,1 +3192,50,Female,140,88,210,57,111,135,136,5.6,27.8,81,175,Typical Angina,False,0.6,False,Never,1.9,286,6.2,53.2,False,9010,93.8,0 +3193,49,Male,127,74,242,63,108,209,120,5.4,30.8,96,145,Atypical Angina,True,0.5,False,Former,4.5,163,8.1,41.3,True,4288,22.7,1 +3194,42,Female,103,66,146,44,78,122,110,5.9,26.3,70,181,Non-Anginal Pain,False,3.9,False,Never,7.3,145,7.6,32.6,True,8815,76.9,0 +3195,72,Female,141,103,199,39,135,118,97,5.0,30.1,75,137,Asymptomatic,False,1.1,False,Current,3.6,99,7.5,40.9,False,3989,47.7,0 +3196,62,Male,141,91,204,70,91,234,114,5.9,23.2,68,157,Asymptomatic,True,0.2,False,Never,1.5,105,6.7,43.2,False,4826,66.3,1 +3197,85,Male,130,87,198,68,96,140,100,5.8,20.9,85,112,Typical Angina,True,0.7,False,Never,2.3,61,7.0,43.3,False,3399,70.1,1 +3198,44,Male,117,83,236,65,108,268,117,5.5,27.8,77,167,Non-Anginal Pain,True,0.1,False,Current,11.0,100,8.0,24.9,False,6862,63.6,0 +3199,43,Female,133,88,179,53,75,273,162,7.1,23.7,96,183,Typical Angina,False,0.4,True,Never,2.5,151,7.9,41.4,True,4949,65.8,0 +3200,79,Female,124,74,173,63,103,63,136,6.5,19.4,81,144,Non-Anginal Pain,False,1.0,False,Never,4.4,165,7.3,25.5,False,4295,72.8,0 +3201,37,Female,121,67,167,77,64,120,122,5.8,22.8,88,203,Atypical Angina,False,0.4,False,Former,3.0,181,8.6,51.8,False,8326,61.6,0 +3202,57,Male,139,87,193,66,82,229,136,5.9,27.3,81,169,Non-Anginal Pain,False,2.5,False,Current,10.3,211,8.6,43.0,True,6899,55.5,0 +3203,50,Female,116,79,168,59,96,66,138,6.1,26.9,73,172,Asymptomatic,False,0.9,False,Current,2.0,106,6.0,37.4,True,6014,58.3,0 +3204,50,Female,115,72,178,52,95,183,90,4.5,21.0,61,170,Asymptomatic,False,1.9,True,Never,12.9,232,5.1,36.9,True,10197,75.8,0 +3205,35,Female,117,88,145,36,99,61,148,7.3,26.1,84,178,Atypical Angina,False,0.2,True,Never,1.9,102,5.7,51.8,False,3877,60.1,0 +3206,45,Male,115,75,203,54,108,171,159,6.5,20.3,108,181,Atypical Angina,False,0.7,False,Former,11.6,34,7.7,74.7,False,5360,48.6,0 +3207,79,Male,129,75,183,58,115,126,81,5.0,21.8,80,148,Typical Angina,False,1.1,False,Never,4.8,135,7.3,47.6,True,2905,74.4,0 +3208,56,Female,130,90,219,71,122,156,95,5.2,20.8,88,174,Asymptomatic,False,1.3,True,Former,2.0,239,7.0,68.8,True,11396,61.3,0 +3209,74,Male,121,69,245,73,122,209,122,6.1,22.3,83,139,Asymptomatic,True,3.1,False,Never,1.8,153,8.1,34.1,True,8041,57.9,1 +3210,46,Female,128,82,155,30,99,158,128,5.9,28.6,88,196,Non-Anginal Pain,False,0.9,False,Never,0.6,140,7.0,56.9,True,9061,43.6,0 +3211,56,Male,147,97,171,46,89,213,117,6.0,26.6,77,137,Non-Anginal Pain,False,0.8,False,Never,4.4,154,7.6,35.3,False,5048,58.3,1 +3212,62,Male,147,91,194,45,129,128,91,5.4,31.7,91,128,Asymptomatic,False,1.0,True,Former,2.1,172,6.1,58.1,True,5428,61.3,1 +3213,62,Male,134,79,176,40,111,154,106,5.4,25.7,89,148,Asymptomatic,False,0.6,True,Current,2.8,137,9.2,37.7,False,7258,57.6,1 +3214,52,Male,119,80,207,40,123,189,78,4.9,35.4,86,169,Asymptomatic,False,0.2,False,Current,5.3,186,7.6,69.2,False,4742,56.5,0 +3215,55,Female,134,95,194,37,133,179,124,6.0,30.1,90,150,Non-Anginal Pain,True,0.7,False,Current,4.4,66,6.3,29.8,False,2241,64.8,1 +3216,68,Female,152,101,108,50,52,102,144,5.9,25.9,76,182,Non-Anginal Pain,False,0.3,False,Former,0.7,93,7.7,70.2,False,3540,53.0,0 +3217,58,Female,133,71,231,89,101,154,138,6.4,29.2,85,166,Asymptomatic,False,1.0,False,Current,3.0,218,7.4,35.1,False,6464,64.4,1 +3218,31,Male,121,88,149,41,91,102,97,5.7,20.9,70,172,Atypical Angina,False,0.2,False,Current,6.1,240,8.5,49.4,True,7138,36.1,1 +3219,46,Male,108,67,209,61,99,225,136,6.0,26.6,90,169,Typical Angina,False,0.8,True,Former,3.3,133,8.7,36.8,False,6198,57.3,0 +3220,40,Female,108,68,208,59,107,169,128,6.5,24.5,78,182,Non-Anginal Pain,False,0.6,False,Never,8.9,92,7.6,52.4,True,7686,68.2,0 +3221,32,Male,132,88,128,49,72,115,123,5.8,24.1,86,162,Typical Angina,True,2.1,False,Never,9.8,200,9.5,41.1,False,8432,54.7,1 +3222,65,Male,122,74,221,55,151,90,125,5.5,20.2,68,154,Non-Anginal Pain,False,0.9,False,Never,6.5,135,6.3,31.0,False,5883,47.1,0 +3223,68,Female,161,109,254,55,166,137,132,6.3,28.4,85,137,Non-Anginal Pain,False,1.4,False,Former,1.4,3,6.4,68.8,False,1719,49.0,0 +3224,44,Female,111,72,195,74,104,86,146,6.5,25.1,93,157,Asymptomatic,False,1.7,False,Never,0.4,186,7.2,31.4,False,4490,68.3,0 +3225,50,Male,128,85,206,41,136,156,132,6.3,29.1,90,194,Atypical Angina,False,0.2,False,Never,2.7,57,6.8,53.1,False,7130,27.9,0 +3226,80,Female,134,92,251,73,159,139,163,6.2,27.9,80,127,Atypical Angina,True,2.7,False,Former,5.5,116,6.2,45.5,True,6280,86.7,1 +3227,52,Female,120,69,217,53,140,143,98,5.7,25.8,87,162,Asymptomatic,False,1.2,True,Current,2.7,202,7.6,32.2,False,3915,56.1,0 +3228,53,Female,117,63,154,41,78,184,108,4.9,26.4,80,159,Atypical Angina,False,0.5,False,Former,2.5,154,7.8,49.2,True,4655,69.9,0 +3229,58,Male,138,93,189,69,96,150,112,5.8,20.6,88,158,Asymptomatic,False,0.1,False,Former,10.3,120,6.5,40.9,False,4148,71.7,0 +3230,71,Male,124,68,195,49,129,75,113,5.5,28.6,73,121,Non-Anginal Pain,False,0.5,False,Former,5.6,161,7.7,31.5,True,7265,40.1,1 +3231,61,Male,123,80,199,61,118,159,109,5.5,21.3,85,176,Atypical Angina,False,0.7,True,Never,2.7,219,8.3,19.6,True,6102,81.3,0 +3232,68,Male,140,94,171,43,112,105,115,6.3,24.3,84,133,Typical Angina,True,2.5,True,Current,5.4,175,9.5,43.9,True,8642,49.4,1 +3233,42,Female,135,79,171,41,95,165,121,5.7,22.8,94,186,Atypical Angina,False,0.6,True,Current,0.4,177,7.3,32.2,False,7077,66.8,0 +3234,65,Female,152,103,193,65,85,133,148,6.9,31.7,68,176,Asymptomatic,False,1.3,True,Never,11.3,269,6.5,30.8,True,11053,67.4,0 +3235,53,Male,142,83,245,30,179,172,117,5.4,28.9,82,151,Asymptomatic,True,1.2,False,Never,2.3,172,7.6,56.9,True,9675,52.7,1 +3236,44,Male,133,84,223,54,129,98,109,5.2,27.2,89,163,Atypical Angina,False,0.3,False,Current,11.3,202,5.8,41.5,False,5195,56.8,1 +3237,61,Female,115,68,156,27,97,172,97,5.2,33.5,96,187,Asymptomatic,False,0.4,False,Current,9.5,86,8.8,51.7,False,8288,74.1,0 +3238,87,Female,168,104,247,54,112,359,141,6.3,31.1,67,101,Atypical Angina,False,0.4,False,Never,28.2,78,8.0,58.8,False,2007,76.3,1 +3239,57,Male,114,59,231,73,117,120,108,5.3,20.4,89,154,Atypical Angina,False,0.3,False,Never,11.5,156,7.0,33.4,True,8223,61.6,0 +3240,68,Female,146,101,210,75,102,163,147,6.6,22.9,71,138,Asymptomatic,False,1.0,True,Never,0.6,61,7.4,56.2,True,6233,55.3,0 +3241,51,Female,131,81,230,71,118,186,122,5.9,26.6,75,170,Asymptomatic,False,0.3,False,Never,3.2,287,7.7,28.3,True,9393,80.9,0 +3242,34,Female,117,70,212,70,117,135,133,6.3,19.8,83,177,Asymptomatic,False,2.2,True,Former,3.1,126,5.9,59.8,False,9093,76.6,0 +3243,61,Male,139,84,212,54,114,205,139,6.2,29.1,86,147,Atypical Angina,True,1.7,True,Former,7.8,87,7.1,83.3,False,6932,42.0,1 +3244,41,Female,140,90,203,69,111,186,162,6.7,27.1,80,198,Typical Angina,False,0.1,True,Never,0.8,211,7.0,28.4,True,11436,42.8,0 +3245,51,Male,117,75,238,43,149,207,108,6.0,29.1,75,135,Atypical Angina,True,0.2,False,Former,2.0,172,9.2,31.8,False,8323,37.5,1 +3246,80,Male,130,75,188,53,88,164,160,6.6,20.0,89,106,Non-Anginal Pain,False,0.3,True,Current,6.9,87,8.2,59.7,False,4175,73.3,1 +3247,31,Female,121,87,120,48,55,79,76,4.5,25.9,85,202,Non-Anginal Pain,False,2.2,False,Former,2.2,173,9.4,45.9,True,7360,71.3,0 +3248,59,Male,131,94,187,48,114,144,121,5.3,15.0,64,157,Atypical Angina,False,2.7,False,Current,4.8,172,8.3,28.7,True,9054,36.8,0 +3249,61,Female,126,79,308,63,189,260,106,5.7,32.3,80,153,Asymptomatic,True,0.9,True,Former,17.7,165,7.1,39.4,False,2717,21.9,1 +3250,58,Female,144,82,153,52,80,109,126,5.6,28.6,84,173,Asymptomatic,False,1.7,False,Never,11.0,57,7.7,87.9,False,6271,57.0,0 +3251,47,Female,118,68,187,61,100,153,111,5.1,25.1,68,198,Atypical Angina,False,0.8,True,Never,14.6,98,7.6,40.2,False,6608,69.3,0 +3252,57,Male,123,77,170,39,107,154,118,5.4,15.4,74,168,Asymptomatic,False,0.2,True,Never,6.1,80,5.6,68.2,True,3538,71.5,0 +3253,42,Male,134,84,179,70,85,121,84,4.9,24.4,79,160,Asymptomatic,False,1.2,False,Never,8.9,220,6.7,21.3,True,6324,62.1,0 +3254,74,Female,111,79,144,28,88,116,106,5.3,26.1,86,138,Asymptomatic,False,0.3,False,Never,2.1,108,5.8,46.8,False,4485,54.4,0 +3255,56,Female,129,87,174,66,91,61,114,5.8,24.8,87,160,Atypical Angina,False,1.5,True,Never,7.7,114,5.0,67.8,False,2336,64.9,0 +3256,71,Male,126,80,214,47,106,244,144,6.7,28.8,90,129,Asymptomatic,False,1.8,False,Never,5.2,172,6.3,44.8,True,8353,66.2,1 +3257,51,Female,120,73,152,36,75,181,128,5.4,18.2,80,191,Non-Anginal Pain,False,0.3,False,Never,4.3,29,8.0,33.0,False,2967,34.4,0 +3258,66,Male,140,94,189,64,87,149,140,6.2,25.8,75,173,Non-Anginal Pain,False,0.7,True,Never,2.8,150,6.0,57.0,True,7442,67.2,0 +3259,63,Female,125,92,157,39,89,170,115,5.0,24.1,76,154,Non-Anginal Pain,False,0.2,True,Former,0.0,99,5.9,45.1,True,8043,52.3,0 +3260,39,Male,139,99,110,60,35,151,94,5.1,25.8,84,210,Non-Anginal Pain,False,0.4,True,Never,1.6,209,7.3,57.8,False,5513,62.6,0 +3261,75,Male,132,92,191,64,86,132,124,5.8,24.4,75,151,Asymptomatic,False,1.4,False,Never,2.1,261,5.0,44.5,False,5726,52.0,0 +3262,89,Male,139,85,183,52,118,82,140,6.6,24.3,79,147,Asymptomatic,True,0.5,False,Current,3.2,52,5.7,66.0,False,593,37.3,1 +3263,68,Male,132,92,184,48,106,146,173,7.3,20.3,81,131,Asymptomatic,True,0.6,False,Current,7.5,174,6.2,60.2,False,4083,77.6,1 +3264,37,Female,140,95,175,60,79,161,121,6.1,27.7,80,157,Non-Anginal Pain,True,1.6,False,Former,20.4,138,6.0,31.2,True,9077,50.8,1 +3265,43,Male,133,82,201,80,85,158,123,6.4,25.3,78,204,Asymptomatic,False,0.7,False,Never,11.6,269,8.6,54.2,True,6461,77.9,0 +3266,25,Male,132,97,163,51,87,101,125,5.5,32.8,80,198,Non-Anginal Pain,False,0.1,False,Former,4.3,238,5.6,25.3,False,5424,79.1,0 +3267,44,Female,115,66,100,58,35,78,128,5.8,23.3,90,179,Asymptomatic,False,0.1,False,Never,2.2,133,5.4,57.5,True,8662,69.8,0 +3268,77,Female,142,86,234,75,131,125,124,5.5,24.2,89,133,Non-Anginal Pain,False,0.4,False,Former,0.2,210,7.6,50.7,True,8259,52.7,1 +3269,68,Male,135,86,158,37,90,192,106,5.7,24.5,85,161,Non-Anginal Pain,False,1.0,False,Never,2.2,22,8.3,62.4,False,3988,66.8,0 +3270,42,Male,123,77,209,65,91,217,101,5.5,21.8,99,168,Atypical Angina,False,2.1,False,Never,6.6,135,8.9,6.8,True,6471,47.1,0 +3271,38,Female,130,86,225,75,108,204,116,5.7,24.9,90,172,Asymptomatic,False,0.7,True,Never,0.0,97,7.8,25.9,False,5457,46.8,0 +3272,46,Female,126,78,216,67,114,158,103,5.0,26.6,78,170,Asymptomatic,False,0.1,True,Never,1.8,250,6.8,51.7,True,8847,53.9,0 +3273,68,Male,119,60,194,56,103,203,157,7.1,25.2,74,123,Asymptomatic,False,0.1,False,Current,3.5,159,6.9,52.1,False,1526,46.2,1 +3274,61,Female,140,95,199,43,127,146,116,5.6,24.8,86,151,Non-Anginal Pain,False,1.4,False,Never,2.1,107,6.9,54.8,False,7409,67.3,0 +3275,74,Female,132,85,241,78,135,200,117,6.4,24.3,84,123,Atypical Angina,False,4.3,True,Former,6.8,79,6.4,34.5,True,9474,43.7,1 +3276,46,Male,139,81,238,51,155,155,130,5.8,28.8,78,207,Asymptomatic,True,0.2,True,Never,10.5,144,6.3,43.5,False,5959,71.3,0 +3277,56,Female,135,70,168,65,74,137,114,5.2,25.2,83,145,Atypical Angina,True,2.2,True,Former,2.9,125,6.8,52.1,True,8971,73.6,1 +3278,45,Male,113,67,177,47,118,47,159,7.1,26.2,75,182,Asymptomatic,False,1.0,False,Never,3.6,149,7.2,27.5,False,7977,46.9,0 +3279,52,Female,110,70,173,53,104,136,104,5.4,20.0,78,173,Asymptomatic,False,1.7,False,Never,3.6,114,8.3,64.6,False,6640,47.0,0 +3280,50,Male,118,78,205,56,120,178,114,5.4,28.2,87,188,Asymptomatic,False,2.2,False,Never,7.6,105,6.3,35.4,False,2603,66.5,0 +3281,50,Male,128,84,154,50,86,104,92,5.0,23.0,93,183,Asymptomatic,False,0.3,False,Never,3.3,105,9.2,56.2,False,5593,80.1,0 +3282,62,Female,132,91,191,80,90,88,129,5.5,15.0,73,150,Atypical Angina,False,2.8,False,Never,2.0,98,6.0,68.5,False,4291,64.4,0 +3283,48,Female,142,92,219,59,112,213,132,6.3,24.0,82,182,Asymptomatic,True,1.0,False,Former,8.1,27,7.5,51.0,False,4983,34.3,0 +3284,52,Male,129,87,258,57,146,175,119,5.8,28.2,84,159,Asymptomatic,False,1.0,True,Never,4.1,158,5.7,40.5,False,2676,71.0,0 +3285,43,Female,116,62,120,66,54,35,89,4.6,19.9,82,185,Typical Angina,False,0.3,True,Never,2.2,197,5.4,63.1,True,11536,68.9,0 +3286,70,Female,136,96,230,57,132,207,152,6.2,34.1,75,130,Atypical Angina,False,0.4,True,Never,3.2,208,8.3,30.4,False,5707,75.3,1 +3287,77,Female,157,97,212,45,122,233,133,5.9,25.5,78,130,Typical Angina,False,3.8,False,Current,14.0,116,6.7,66.4,True,6818,50.8,1 +3288,80,Male,150,98,231,47,159,158,154,7.2,25.7,78,139,Asymptomatic,True,0.6,False,Never,1.7,162,7.7,55.3,True,8867,45.0,0 +3289,65,Female,163,102,217,49,121,241,169,7.2,34.3,83,141,Asymptomatic,True,4.9,False,Never,13.0,87,8.2,29.1,False,3700,49.7,1 +3290,54,Female,119,71,182,69,84,138,107,4.9,21.8,86,167,Asymptomatic,False,0.8,True,Never,0.8,68,7.8,49.6,False,3842,53.5,0 +3291,42,Female,136,88,129,43,50,170,142,6.5,22.8,71,162,Typical Angina,True,1.9,False,Never,8.7,178,7.9,39.5,False,5466,71.6,1 +3292,41,Male,136,83,205,44,152,75,130,5.7,26.8,96,166,Atypical Angina,True,4.4,True,Current,2.6,126,7.5,67.5,True,4393,48.0,1 +3293,53,Female,112,64,159,66,77,91,127,5.5,16.9,82,172,Atypical Angina,False,0.7,False,Never,9.3,300,7.5,14.3,True,11229,66.8,0 +3294,38,Male,151,97,224,49,129,207,88,5.0,27.5,63,186,Non-Anginal Pain,False,1.5,False,Never,5.4,110,9.2,70.2,False,3665,48.5,0 +3295,64,Male,138,77,181,54,116,116,119,5.1,28.8,82,132,Atypical Angina,False,1.6,False,Never,2.8,82,8.5,64.1,False,3131,85.9,1 +3296,58,Female,128,84,177,46,115,182,148,6.4,29.3,96,169,Asymptomatic,False,0.9,True,Never,16.0,128,6.9,49.4,False,7039,56.8,0 +3297,37,Female,114,58,165,56,76,235,115,5.6,26.1,76,190,Atypical Angina,False,0.5,True,Never,7.9,184,6.7,19.1,True,5211,69.1,0 +3298,52,Male,139,87,149,59,70,76,102,5.6,21.8,70,187,Atypical Angina,False,1.6,True,Former,3.5,307,5.9,23.7,True,9948,68.3,0 +3299,66,Female,137,86,168,39,83,205,118,5.9,28.9,90,165,Non-Anginal Pain,False,0.9,False,Never,1.3,20,6.4,54.2,False,3423,52.9,1 +3300,70,Female,120,69,173,48,117,88,84,5.1,20.8,84,141,Atypical Angina,False,0.6,True,Never,5.3,125,6.8,54.8,False,4352,47.6,0 +3301,57,Female,125,81,194,58,105,142,116,5.3,20.3,93,170,Asymptomatic,False,0.2,True,Never,0.9,52,7.4,61.7,False,5218,71.0,0 +3302,63,Male,133,84,133,32,66,173,133,5.8,22.7,97,149,Asymptomatic,False,0.7,False,Never,3.3,29,5.3,31.6,False,5183,44.6,0 +3303,59,Female,143,83,209,67,117,142,107,5.3,22.4,67,141,Asymptomatic,True,1.9,False,Never,3.8,271,3.8,51.2,False,4939,62.2,1 +3304,49,Male,118,60,151,23,89,184,109,5.7,28.0,84,184,Asymptomatic,False,2.0,False,Never,4.5,137,9.8,31.4,False,7956,57.7,0 +3305,57,Male,112,69,192,69,84,174,107,5.1,28.9,66,176,Non-Anginal Pain,False,0.6,False,Former,3.2,191,5.0,11.8,False,4069,61.9,0 +3306,56,Female,119,85,151,43,80,148,170,6.5,19.9,66,163,Asymptomatic,True,1.4,True,Never,2.7,243,7.0,32.5,False,4811,66.6,0 +3307,47,Male,116,75,124,37,72,126,112,5.4,24.4,86,190,Non-Anginal Pain,False,0.3,False,Current,1.8,67,7.2,53.0,False,4962,61.7,0 +3308,58,Female,134,90,217,71,113,90,86,5.3,20.6,78,168,Asymptomatic,False,1.1,False,Never,0.5,102,6.6,57.0,False,6863,52.3,0 +3309,54,Male,120,70,178,68,77,154,114,5.1,29.6,58,167,Non-Anginal Pain,False,1.1,False,Never,10.4,242,5.7,48.0,True,8064,67.2,0 +3310,60,Male,143,87,174,57,92,111,123,5.3,22.8,91,148,Non-Anginal Pain,True,1.2,True,Former,9.5,69,5.8,71.3,False,5732,51.3,1 +3311,55,Female,126,86,183,54,101,127,131,6.2,27.7,79,163,Atypical Angina,False,0.8,False,Never,3.7,144,7.5,20.6,False,1501,42.4,0 +3312,55,Male,133,80,250,48,155,168,117,5.5,26.9,80,142,Typical Angina,False,0.6,False,Current,3.8,148,7.0,43.8,True,10554,50.4,1 +3313,31,Female,105,63,210,49,124,172,122,5.4,24.9,62,177,Atypical Angina,False,0.1,True,Current,7.2,29,5.8,42.3,True,7920,23.9,0 +3314,85,Male,129,88,254,69,146,178,123,6.2,33.2,74,127,Atypical Angina,False,1.4,False,Never,5.8,208,8.1,24.2,False,6288,27.3,1 +3315,64,Female,120,77,214,61,124,125,94,5.6,19.0,84,137,Non-Anginal Pain,True,1.8,True,Never,2.8,118,7.0,50.4,False,5095,85.3,1 +3316,60,Female,116,75,216,50,138,184,124,6.0,28.7,93,163,Non-Anginal Pain,False,0.2,False,Current,6.4,107,8.0,51.2,False,959,60.7,0 +3317,78,Female,119,76,198,64,95,205,96,5.3,27.1,94,148,Asymptomatic,False,2.0,False,Former,3.9,146,8.1,59.4,False,4087,63.6,0 +3318,68,Male,123,66,207,62,88,301,111,5.1,29.8,79,175,Asymptomatic,False,1.2,True,Never,14.7,183,7.4,44.6,True,8729,79.7,0 +3319,61,Male,147,88,199,40,106,210,136,5.5,29.2,98,183,Non-Anginal Pain,False,0.2,False,Former,3.8,161,6.9,38.9,True,8481,55.7,0 +3320,63,Male,125,78,179,59,92,179,111,5.5,26.7,73,150,Typical Angina,False,1.2,False,Never,16.6,236,7.4,51.2,True,7635,72.4,0 +3321,76,Female,125,82,201,62,120,84,143,6.6,33.9,85,159,Atypical Angina,False,0.7,False,Never,1.3,238,7.3,18.9,False,8920,51.4,0 +3322,58,Female,141,97,270,58,162,164,116,5.7,22.1,95,139,Non-Anginal Pain,False,2.8,True,Current,1.6,138,5.5,38.5,True,9649,64.8,1 +3323,37,Male,107,67,210,42,136,179,115,5.2,26.2,78,169,Typical Angina,False,1.5,True,Never,3.8,112,7.1,43.2,True,8957,61.9,0 +3324,35,Female,115,75,199,41,106,233,116,6.0,26.4,87,177,Typical Angina,True,1.7,False,Former,13.4,222,9.1,34.7,True,8587,54.1,1 +3325,73,Female,126,83,207,68,102,186,82,4.7,19.9,88,150,Non-Anginal Pain,False,0.0,False,Never,6.9,15,6.2,76.1,False,2830,59.6,0 +3326,52,Male,113,65,177,55,93,147,90,4.3,20.5,83,182,Asymptomatic,False,0.4,False,Former,1.6,182,7.6,58.1,True,10261,48.0,0 +3327,62,Female,144,93,183,75,84,112,132,6.1,23.5,75,178,Atypical Angina,True,1.9,False,Never,10.2,146,4.7,33.3,True,9708,81.9,0 +3328,54,Male,117,58,180,42,121,77,131,5.6,21.7,91,166,Non-Anginal Pain,False,0.6,False,Never,6.1,139,6.0,44.4,True,7819,68.1,0 +3329,61,Male,135,91,223,46,161,111,126,6.2,28.5,87,135,Non-Anginal Pain,False,0.3,True,Never,2.7,108,7.0,21.1,False,3982,78.0,1 +3330,44,Male,147,90,149,39,79,161,90,5.6,28.8,94,150,Typical Angina,True,0.1,False,Current,9.2,53,6.3,46.2,False,1442,81.1,1 +3331,61,Male,141,91,166,33,103,194,140,6.1,31.2,86,143,Asymptomatic,False,0.5,False,Former,9.3,0,4.9,65.9,False,5750,45.8,1 +3332,25,Male,110,69,194,54,106,123,75,4.1,26.1,80,210,Asymptomatic,False,0.7,False,Never,6.8,182,6.6,21.6,False,7127,78.0,0 +3333,51,Female,135,87,187,52,112,189,116,6.0,23.1,69,173,Typical Angina,False,1.8,True,Former,4.2,129,5.7,85.4,True,9040,31.4,0 +3334,37,Female,98,82,189,76,66,167,103,5.4,30.4,83,191,Typical Angina,False,2.4,False,Former,6.1,168,6.3,44.8,False,5071,53.9,0 +3335,55,Male,139,93,125,70,42,127,144,6.1,22.9,70,176,Asymptomatic,True,1.9,True,Former,10.3,244,6.9,0.0,True,3931,47.1,0 +3336,56,Male,126,97,223,55,132,216,120,5.3,32.8,72,160,Typical Angina,False,0.9,False,Never,12.0,215,6.2,17.0,False,7647,72.8,1 +3337,53,Male,98,65,178,63,82,137,143,6.1,27.0,79,187,Atypical Angina,False,1.0,False,Current,8.2,296,7.4,48.3,True,7579,63.6,0 +3338,57,Male,140,93,133,57,48,148,118,5.7,30.4,79,170,Atypical Angina,False,0.5,False,Former,4.4,157,8.5,36.3,True,7745,43.2,0 +3339,32,Male,111,74,192,68,114,35,104,5.7,21.0,73,181,Typical Angina,False,0.8,False,Never,10.1,171,6.7,30.9,True,7766,61.6,0 +3340,41,Male,122,82,129,40,52,155,129,5.5,27.9,85,184,Typical Angina,False,1.0,False,Never,10.5,173,7.9,41.9,True,8478,39.5,0 +3341,52,Female,138,83,156,48,75,170,186,7.6,29.6,92,144,Non-Anginal Pain,False,0.9,False,Never,10.8,32,7.9,63.9,False,6261,46.5,1 +3342,60,Male,134,92,179,69,102,35,60,4.4,25.0,78,167,Non-Anginal Pain,False,1.2,False,Never,8.7,91,5.7,52.5,False,6143,77.7,0 +3343,58,Female,136,92,190,58,101,123,92,4.7,24.9,82,172,Asymptomatic,False,1.3,False,Former,8.9,121,7.5,55.5,False,5789,26.9,0 +3344,32,Male,107,68,214,72,88,210,172,6.7,20.9,82,198,Asymptomatic,False,0.6,False,Former,5.0,217,6.0,41.8,True,9439,48.2,0 +3345,71,Male,128,77,161,23,89,222,120,6.2,28.0,82,138,Asymptomatic,True,4.6,False,Never,2.8,75,6.4,63.8,False,6211,65.8,1 +3346,53,Female,130,83,184,52,113,74,96,5.4,32.8,83,175,Atypical Angina,False,0.3,False,Never,0.5,75,7.1,63.9,True,9003,64.1,0 +3347,75,Male,121,73,156,53,75,138,129,6.0,17.8,73,155,Asymptomatic,False,0.1,False,Never,4.0,112,6.0,11.6,True,5427,66.4,0 +3348,63,Female,154,92,224,52,134,208,128,6.0,32.2,73,146,Non-Anginal Pain,False,2.9,True,Current,2.3,139,6.6,48.9,True,7682,33.1,1 +3349,69,Male,152,103,210,60,104,211,145,6.7,29.4,104,136,Asymptomatic,False,2.3,True,Never,6.5,11,5.8,56.9,False,6807,51.2,1 +3350,61,Female,132,80,231,42,157,141,160,6.7,25.9,90,137,Non-Anginal Pain,False,0.4,False,Never,0.9,127,7.7,54.7,False,6552,39.3,1 +3351,48,Female,153,101,234,46,161,105,96,5.2,35.1,82,146,Non-Anginal Pain,True,1.4,True,Never,5.2,130,5.6,47.3,True,9513,56.3,1 +3352,51,Female,112,64,175,70,81,171,121,5.6,25.1,80,178,Asymptomatic,False,0.3,False,Former,6.3,214,6.3,61.9,True,8850,78.2,0 +3353,66,Male,139,82,243,62,144,202,154,6.2,29.5,81,128,Atypical Angina,True,0.8,True,Former,21.0,135,9.7,44.2,True,7688,36.1,1 +3354,50,Male,149,87,165,48,92,149,154,7.5,32.9,88,144,Asymptomatic,True,0.4,True,Never,16.5,62,5.5,35.0,False,4761,57.6,1 +3355,30,Female,118,73,211,53,113,198,85,5.1,34.8,77,183,Asymptomatic,False,0.8,False,Former,6.3,204,7.3,75.0,True,7838,57.1,0 +3356,54,Male,130,79,201,63,110,214,118,5.7,29.4,86,188,Asymptomatic,False,1.0,False,Former,11.5,62,6.3,13.9,True,10593,81.4,0 +3357,57,Male,129,74,176,66,102,57,141,6.6,23.0,85,152,Asymptomatic,False,0.6,True,Former,8.6,81,7.8,60.8,False,4867,71.4,1 +3358,60,Male,147,83,211,57,113,190,98,5.3,23.6,61,147,Non-Anginal Pain,True,0.5,False,Former,2.8,182,6.2,63.4,True,4735,67.7,1 +3359,63,Female,127,97,190,42,124,179,110,5.8,25.1,89,173,Non-Anginal Pain,True,0.8,False,Never,3.9,100,6.8,41.8,True,6618,59.4,1 +3360,80,Female,144,84,143,59,35,189,132,6.2,26.0,62,158,Asymptomatic,False,0.3,False,Never,4.2,180,7.5,33.0,False,3247,54.8,0 +3361,35,Female,129,76,140,47,70,127,96,4.9,23.3,83,209,Non-Anginal Pain,True,1.8,False,Former,2.6,104,8.2,58.5,True,7149,59.6,0 +3362,77,Male,149,98,170,56,105,99,159,6.4,29.1,69,144,Typical Angina,False,0.3,False,Never,2.1,170,7.6,38.9,True,10045,51.9,0 +3363,64,Female,118,78,179,58,100,82,111,5.2,17.0,77,167,Non-Anginal Pain,False,0.9,True,Current,3.1,239,5.0,16.0,True,9706,55.9,0 +3364,54,Female,145,93,217,65,119,154,114,5.9,31.3,84,182,Atypical Angina,False,0.4,False,Current,5.9,201,5.7,36.8,True,4860,52.1,0 +3365,37,Female,136,89,157,56,76,147,111,5.4,26.3,83,180,Asymptomatic,False,0.6,True,Never,0.1,152,7.2,42.8,False,2325,60.5,0 +3366,55,Female,123,67,157,43,87,153,103,5.5,23.0,88,166,Atypical Angina,False,0.4,True,Current,3.6,77,7.8,37.4,False,4670,72.9,0 +3367,62,Female,136,89,218,55,117,213,93,4.4,29.5,95,163,Typical Angina,True,0.5,True,Never,14.2,22,7.5,60.2,False,3420,67.5,1 +3368,54,Female,109,75,216,60,114,174,104,5.4,28.3,89,187,Asymptomatic,False,1.1,True,Former,1.6,70,7.7,22.3,False,1055,56.1,0 +3369,48,Male,127,94,184,41,104,257,164,7.3,27.9,84,163,Atypical Angina,True,0.3,False,Never,12.2,145,5.8,33.0,True,4419,61.0,1 +3370,46,Female,127,84,242,53,139,183,119,6.1,30.4,74,160,Asymptomatic,True,1.7,False,Never,6.3,181,5.1,67.2,True,4671,55.8,1 +3371,44,Male,123,78,180,38,116,122,128,6.2,29.4,85,137,Asymptomatic,True,2.0,False,Never,2.5,41,6.4,41.2,True,4163,26.3,1 +3372,63,Male,157,101,233,47,135,193,101,5.7,34.5,88,150,Non-Anginal Pain,False,2.1,True,Current,1.6,86,6.1,52.7,False,6484,48.1,1 +3373,62,Female,139,81,241,60,135,123,146,6.5,33.3,80,152,Asymptomatic,True,1.1,False,Current,12.7,171,6.1,68.3,True,5316,53.4,1 +3374,67,Male,115,77,232,65,143,138,105,5.1,18.4,86,182,Asymptomatic,False,0.1,True,Former,2.5,305,5.9,61.8,True,6828,66.9,0 +3375,44,Male,119,69,183,72,73,151,102,5.1,26.3,69,192,Asymptomatic,False,1.0,False,Never,9.0,259,6.3,55.9,True,7580,77.3,0 +3376,72,Male,135,87,190,46,116,102,125,5.8,23.4,91,149,Non-Anginal Pain,False,1.0,True,Never,6.9,97,6.4,43.3,False,3698,91.1,0 +3377,86,Male,123,80,218,66,121,158,106,6.1,24.2,89,154,Asymptomatic,False,0.1,False,Former,2.1,68,6.4,59.8,True,11122,53.0,0 +3378,55,Male,140,76,197,55,102,177,124,5.4,31.2,79,148,Asymptomatic,False,1.4,True,Former,2.1,201,6.6,61.4,True,6975,72.7,0 +3379,69,Male,132,93,197,68,105,35,97,5.5,17.8,93,177,Non-Anginal Pain,False,0.9,False,Never,4.5,214,6.1,64.0,True,10331,59.3,0 +3380,37,Female,119,61,196,73,112,90,60,4.1,26.5,86,179,Asymptomatic,False,0.5,False,Never,3.2,131,6.0,53.1,False,8508,81.2,0 +3381,85,Male,142,91,192,46,114,191,116,5.5,19.8,71,124,Atypical Angina,False,0.3,False,Never,5.3,171,6.5,77.6,False,3329,48.4,1 +3382,62,Male,144,85,154,42,81,170,113,5.1,21.3,71,154,Typical Angina,True,0.4,False,Never,7.3,83,7.8,46.4,False,5649,72.3,0 +3383,70,Male,145,82,221,58,133,133,152,6.2,34.1,95,141,Atypical Angina,True,1.4,False,Former,7.9,11,7.4,57.1,True,6128,30.3,1 +3384,58,Male,127,90,191,65,94,159,101,5.7,23.8,81,157,Non-Anginal Pain,False,0.5,True,Former,6.0,183,5.8,31.4,True,8214,61.0,0 +3385,34,Male,126,77,191,40,115,151,93,5.9,26.7,102,190,Asymptomatic,False,1.0,False,Former,10.1,119,7.1,38.1,True,7188,63.7,0 +3386,61,Male,124,80,203,52,122,166,155,6.8,24.5,84,158,Asymptomatic,False,0.0,False,Never,6.7,255,7.7,63.9,True,6399,67.4,0 +3387,54,Male,128,92,197,45,118,143,170,7.0,17.0,72,185,Asymptomatic,False,0.3,False,Never,7.5,149,8.6,72.9,True,8581,47.4,0 +3388,66,Male,131,89,130,56,61,77,123,5.4,25.3,82,158,Asymptomatic,False,0.9,True,Former,1.7,148,7.6,14.6,True,11420,76.7,0 +3389,43,Female,114,66,217,34,170,60,123,5.9,30.9,81,162,Asymptomatic,False,0.3,True,Never,0.1,158,7.5,48.1,False,6985,52.5,0 +3390,18,Female,121,83,193,57,96,173,72,5.1,23.5,76,210,Non-Anginal Pain,True,0.0,False,Never,1.6,220,6.6,57.2,True,7112,52.4,0 +3391,53,Male,121,76,185,27,124,150,123,6.1,38.0,81,162,Non-Anginal Pain,False,0.7,False,Current,12.0,189,7.7,38.8,True,8452,69.1,1 +3392,50,Male,92,57,248,61,161,202,130,5.7,19.7,82,168,Asymptomatic,False,1.4,False,Never,7.6,23,5.6,62.7,True,4303,61.1,0 +3393,64,Female,140,79,158,63,85,42,128,5.4,22.0,70,183,Typical Angina,False,1.8,True,Never,1.1,185,6.8,27.9,True,9392,83.2,0 +3394,43,Female,125,77,222,71,123,140,129,6.2,18.4,71,181,Asymptomatic,True,0.1,False,Current,8.6,212,8.4,31.3,True,5704,53.0,0 +3395,49,Male,92,63,195,43,130,128,127,6.3,24.6,79,183,Asymptomatic,False,0.4,False,Current,8.5,97,6.8,28.7,False,8420,60.3,0 +3396,49,Male,122,70,203,71,101,196,104,5.7,23.3,80,185,Asymptomatic,False,0.8,False,Former,6.4,156,7.7,41.6,True,6380,60.7,0 +3397,45,Male,122,78,142,56,74,136,75,4.7,23.4,80,193,Atypical Angina,False,0.3,False,Never,2.6,124,6.9,53.9,True,7725,72.2,0 +3398,61,Female,131,88,207,57,120,99,91,5.5,27.1,89,162,Asymptomatic,False,1.1,False,Current,6.9,112,6.6,51.5,True,9586,38.2,0 +3399,50,Male,127,87,165,49,84,185,148,6.2,25.6,91,158,Asymptomatic,False,1.3,False,Former,11.2,89,6.4,50.8,False,7007,76.2,0 +3400,48,Male,106,69,124,46,54,103,162,6.5,22.0,84,175,Non-Anginal Pain,False,0.2,False,Current,3.9,122,6.3,37.5,True,6035,72.3,0 +3401,45,Female,134,90,192,69,97,116,95,5.8,22.0,78,163,Non-Anginal Pain,False,1.3,False,Never,11.6,84,8.7,71.0,False,5611,47.1,0 +3402,50,Male,139,97,221,86,81,286,77,4.8,28.1,74,166,Asymptomatic,False,0.5,True,Former,11.0,271,6.7,69.6,True,9682,64.2,0 +3403,74,Female,156,113,233,40,134,206,164,7.3,28.6,82,118,Non-Anginal Pain,True,0.7,False,Never,6.1,152,4.7,60.2,False,6513,41.2,1 +3404,51,Male,132,87,199,60,108,151,163,7.5,21.8,65,165,Asymptomatic,True,1.5,True,Never,15.6,139,4.6,65.4,False,2446,66.7,1 +3405,46,Female,127,75,236,69,137,202,116,5.6,30.0,79,185,Atypical Angina,True,2.3,True,Never,9.6,102,8.2,60.3,False,7233,40.3,0 +3406,55,Male,151,90,157,55,94,94,144,6.6,24.5,77,158,Atypical Angina,False,1.8,False,Former,4.7,123,5.5,40.5,False,7698,71.2,1 +3407,64,Female,125,89,234,55,158,134,133,6.2,19.7,68,147,Atypical Angina,True,1.3,True,Current,0.9,121,7.0,64.7,False,3275,41.6,1 +3408,54,Male,134,77,227,63,125,174,103,5.3,23.2,70,181,Asymptomatic,True,1.7,True,Never,12.8,225,8.9,46.2,False,7196,63.0,0 +3409,60,Male,138,89,188,65,103,117,143,6.6,18.3,81,170,Asymptomatic,False,1.2,False,Never,2.7,119,3.4,30.4,False,4130,79.8,0 +3410,62,Female,144,97,187,60,102,182,99,4.8,18.2,74,134,Asymptomatic,False,4.8,False,Current,2.7,118,6.3,26.5,True,6158,67.7,0 +3411,64,Male,143,99,172,50,110,99,79,4.6,27.3,73,160,Non-Anginal Pain,False,1.6,False,Never,3.5,168,6.5,49.3,True,5630,77.2,0 +3412,57,Female,154,107,181,54,99,177,157,7.1,33.5,80,175,Non-Anginal Pain,False,0.7,True,Never,0.1,210,6.3,59.6,True,9964,51.3,0 +3413,36,Male,141,89,190,48,104,184,132,6.7,28.6,94,194,Asymptomatic,True,0.8,False,Never,6.1,105,5.5,73.3,False,9095,36.9,1 +3414,53,Female,130,90,213,60,127,144,144,7.0,31.7,87,154,Atypical Angina,True,0.0,False,Current,13.1,175,7.1,63.3,False,5026,76.6,1 +3415,46,Female,115,65,178,56,85,154,117,5.4,28.4,80,185,Atypical Angina,False,0.6,False,Never,5.6,248,6.9,35.9,True,6538,63.2,0 +3416,64,Male,137,89,165,55,103,96,104,6.1,23.2,88,165,Asymptomatic,False,0.6,False,Current,7.9,46,6.6,48.7,False,5638,47.0,0 +3417,71,Male,139,83,200,52,110,186,102,4.9,25.1,87,137,Atypical Angina,False,0.3,True,Never,3.0,119,7.0,49.9,True,4213,70.5,0 +3418,49,Female,128,80,243,47,143,218,100,5.0,28.8,81,152,Atypical Angina,False,2.3,False,Current,4.6,169,5.8,47.9,True,7845,44.8,1 +3419,64,Female,133,91,159,52,90,99,147,6.4,21.5,76,145,Asymptomatic,False,0.3,False,Former,1.0,43,7.4,51.3,False,5387,59.6,0 +3420,59,Male,124,84,236,71,134,107,115,6.1,26.6,82,154,Asymptomatic,False,0.0,False,Never,1.7,109,6.0,44.7,False,1644,60.5,0 +3421,51,Male,111,81,199,42,92,260,117,6.1,26.9,78,158,Typical Angina,False,1.3,False,Never,12.3,53,7.6,30.6,False,5317,60.5,1 +3422,72,Female,149,90,206,69,101,207,118,6.4,31.3,89,135,Asymptomatic,False,0.6,False,Never,24.4,130,6.8,31.2,True,7543,51.4,0 +3423,48,Female,120,79,169,75,68,155,117,6.0,18.1,84,166,Asymptomatic,False,0.4,True,Never,9.7,108,7.2,15.5,False,4245,71.9,0 +3424,45,Male,104,59,183,49,76,235,88,5.1,22.9,83,182,Asymptomatic,False,0.4,False,Never,12.5,108,8.0,36.8,True,8045,68.9,0 +3425,43,Male,114,74,147,40,93,131,133,6.0,21.3,71,172,Non-Anginal Pain,False,0.6,True,Never,2.1,157,7.3,38.7,False,7106,77.8,0 +3426,68,Male,151,80,223,33,150,182,103,5.9,20.6,88,128,Non-Anginal Pain,True,0.7,False,Former,3.3,79,6.8,56.6,False,5697,52.9,1 +3427,44,Male,122,81,223,61,112,204,71,4.0,21.1,71,170,Asymptomatic,False,2.9,False,Former,2.7,189,6.4,41.4,True,7362,56.6,0 +3428,44,Male,104,64,137,37,96,54,123,5.9,16.2,83,173,Atypical Angina,True,4.9,False,Former,4.9,62,7.6,44.9,False,6866,52.8,1 +3429,68,Female,127,76,219,64,98,206,124,6.1,27.2,103,135,Asymptomatic,False,0.4,False,Current,3.9,57,6.3,52.2,True,6404,46.7,1 +3430,59,Female,128,87,227,67,137,125,120,5.9,22.5,78,161,Non-Anginal Pain,False,0.7,False,Former,1.6,158,6.3,23.4,False,4898,57.7,0 +3431,52,Female,118,78,192,58,102,92,121,5.7,23.3,91,180,Asymptomatic,False,0.7,True,Former,2.6,157,6.4,67.5,False,7892,76.3,0 +3432,43,Male,107,73,212,63,127,118,121,5.8,23.9,79,194,Asymptomatic,False,0.4,False,Current,3.6,120,5.5,45.6,True,6333,59.4,0 +3433,57,Male,126,76,166,51,85,183,117,6.0,19.9,79,170,Asymptomatic,False,0.8,False,Never,1.8,88,7.2,49.3,False,6123,43.0,0 +3434,40,Male,122,76,155,62,50,197,98,5.0,23.3,86,209,Asymptomatic,False,0.3,True,Never,4.5,131,6.9,42.6,False,3695,54.2,0 +3435,57,Female,126,88,214,75,108,126,123,6.3,25.8,76,161,Atypical Angina,False,0.1,False,Former,2.4,159,7.7,33.0,False,7471,55.8,0 +3436,56,Male,128,83,220,81,119,158,112,5.8,20.4,81,161,Asymptomatic,False,0.6,False,Current,5.4,281,7.4,60.7,True,11125,65.1,0 +3437,53,Male,138,72,126,20,62,156,130,5.9,22.9,76,157,Asymptomatic,False,1.3,True,Current,5.5,128,8.1,63.0,False,2279,65.1,1 +3438,56,Male,126,87,188,74,95,146,150,6.2,25.4,71,164,Non-Anginal Pain,False,0.2,False,Never,2.1,131,7.4,45.2,False,6816,62.1,0 +3439,62,Male,128,85,228,49,161,125,107,5.7,21.8,72,162,Asymptomatic,False,1.3,False,Former,2.8,176,6.1,64.8,True,6001,61.7,0 +3440,31,Male,97,61,206,75,92,129,87,4.8,22.5,78,193,Asymptomatic,False,0.0,False,Never,2.9,169,7.4,60.9,True,7760,47.7,0 +3441,40,Male,131,88,242,58,133,190,139,5.5,22.0,86,203,Asymptomatic,False,0.6,True,Never,3.5,195,7.0,42.0,True,6882,77.7,0 +3442,63,Male,140,97,203,68,101,233,94,5.4,27.3,82,150,Asymptomatic,True,0.9,False,Former,17.2,3,7.1,45.8,True,6666,93.1,1 +3443,52,Male,151,111,213,43,146,98,116,5.8,26.1,88,177,Non-Anginal Pain,False,0.3,False,Never,3.9,45,8.0,39.9,False,2961,71.1,0 +3444,65,Male,144,71,138,37,93,63,135,6.2,26.7,72,148,Non-Anginal Pain,False,1.9,True,Former,7.9,60,7.4,52.9,True,5464,52.5,1 +3445,76,Male,128,72,182,61,90,161,113,5.7,19.6,87,149,Atypical Angina,True,0.2,True,Never,2.0,253,6.6,33.4,True,9161,67.0,0 +3446,74,Male,145,103,259,53,171,176,149,7.1,26.0,78,141,Asymptomatic,False,0.1,False,Never,3.3,86,6.2,58.2,False,5065,31.1,0 +3447,67,Male,125,82,177,66,70,149,65,4.4,17.5,68,166,Atypical Angina,True,1.6,True,Former,13.5,222,5.2,36.5,True,7054,55.5,1 +3448,55,Female,126,79,188,69,78,190,117,5.8,23.4,88,149,Non-Anginal Pain,False,0.5,False,Former,1.6,80,7.2,44.0,False,6901,74.7,0 +3449,69,Female,137,94,152,52,84,123,115,6.1,28.3,85,131,Asymptomatic,False,2.3,True,Former,2.6,65,8.8,55.4,True,5327,66.3,1 +3450,46,Male,123,70,141,40,83,151,128,5.2,30.2,78,169,Non-Anginal Pain,False,0.6,False,Former,1.7,199,7.9,48.9,True,10565,69.0,0 +3451,57,Male,151,97,174,51,106,214,102,6.1,30.6,84,167,Asymptomatic,True,4.0,False,Current,28.1,118,6.6,45.7,True,7660,54.2,1 +3452,51,Male,150,91,180,44,104,160,104,5.5,32.1,79,152,Typical Angina,False,1.5,False,Current,2.0,126,8.2,24.7,False,3834,67.7,1 +3453,48,Female,134,87,141,33,70,200,127,6.6,35.8,80,189,Asymptomatic,True,1.3,True,Current,2.8,109,8.1,80.6,True,8927,52.9,0 +3454,45,Male,113,67,135,43,70,131,101,5.8,23.1,82,178,Asymptomatic,False,0.7,False,Former,6.8,121,8.8,21.9,False,6887,66.7,0 +3455,60,Male,126,75,212,48,125,222,117,5.8,25.9,72,157,Typical Angina,True,1.1,False,Never,5.1,162,7.9,35.9,True,5480,62.5,1 +3456,34,Female,121,77,183,42,120,144,110,5.6,29.6,89,167,Non-Anginal Pain,True,1.6,True,Current,2.1,138,5.0,73.5,False,5437,50.4,1 +3457,29,Female,132,70,250,58,123,231,141,6.5,37.6,92,175,Asymptomatic,False,2.7,True,Current,8.1,119,8.6,56.1,False,6976,46.2,1 +3458,67,Male,125,85,240,72,137,165,94,5.8,19.9,78,156,Typical Angina,False,0.6,False,Never,31.5,252,5.6,9.0,True,9008,47.8,0 +3459,59,Male,118,84,162,54,90,132,123,5.9,28.8,81,150,Non-Anginal Pain,False,0.6,False,Current,8.8,91,7.4,34.6,False,2109,62.4,0 +3460,65,Female,153,88,181,46,106,111,99,5.6,27.5,86,164,Non-Anginal Pain,False,0.6,False,Never,10.8,121,8.2,58.1,False,3935,56.3,0 +3461,53,Female,141,85,194,56,114,148,92,5.3,24.6,87,163,Typical Angina,True,0.4,False,Current,5.0,60,6.1,44.0,False,6299,47.3,1 +3462,60,Female,132,81,204,55,122,114,103,6.0,23.0,79,179,Typical Angina,False,0.7,True,Never,12.4,178,8.3,61.6,True,7096,100.0,0 +3463,48,Male,102,62,232,59,158,137,121,5.9,26.2,65,157,Typical Angina,False,0.9,False,Former,17.1,188,5.7,28.7,True,6033,82.0,1 +3464,47,Male,121,65,202,53,103,175,142,6.5,20.3,81,187,Asymptomatic,False,0.2,False,Never,6.2,190,7.8,37.5,True,7841,89.1,0 +3465,40,Male,103,64,155,74,47,179,126,5.6,27.9,95,193,Non-Anginal Pain,False,0.1,False,Never,9.0,135,7.8,40.0,False,9361,58.0,0 +3466,77,Male,140,77,175,68,94,73,136,6.1,25.0,62,163,Asymptomatic,False,0.8,False,Never,4.7,213,8.2,42.0,True,5870,44.0,0 +3467,42,Female,93,57,156,47,101,72,142,6.5,19.2,72,182,Asymptomatic,False,1.4,False,Never,4.3,177,6.6,16.2,False,6176,92.7,0 +3468,74,Male,137,95,207,76,89,222,113,5.6,26.5,63,171,Asymptomatic,True,0.9,False,Current,13.9,316,6.1,57.5,True,11644,45.6,0 +3469,38,Male,122,84,161,27,104,123,127,6.0,24.9,100,178,Asymptomatic,False,3.2,True,Current,1.7,49,7.2,40.4,False,4165,43.4,0 +3470,42,Female,111,59,196,67,94,130,72,4.5,23.4,68,201,Asymptomatic,False,0.5,False,Former,0.8,157,9.9,29.6,False,6528,47.8,0 +3471,70,Female,146,104,240,78,139,118,164,7.1,29.2,94,149,Asymptomatic,True,1.1,True,Never,0.4,115,5.3,43.8,False,653,56.2,1 +3472,62,Male,136,82,195,59,91,208,133,6.5,31.9,83,144,Atypical Angina,False,0.9,False,Former,3.0,99,3.7,54.4,True,11063,64.5,1 +3473,59,Female,117,81,223,72,102,206,132,5.3,23.0,65,158,Asymptomatic,True,0.0,True,Never,4.6,179,8.9,60.2,False,7145,49.1,0 +3474,42,Male,123,83,201,82,78,175,119,6.2,23.0,73,189,Atypical Angina,True,1.5,True,Never,4.2,92,6.2,27.4,False,3484,96.2,0 +3475,67,Male,129,82,194,60,110,147,139,6.4,22.2,76,165,Asymptomatic,False,1.7,False,Never,2.2,200,8.2,37.0,True,4694,69.5,0 +3476,43,Male,120,65,178,53,114,112,154,7.0,25.9,86,174,Non-Anginal Pain,True,2.8,False,Current,8.0,152,6.8,65.4,True,9760,58.5,1 +3477,58,Male,123,76,241,42,151,168,96,5.2,24.5,75,163,Asymptomatic,False,0.1,False,Former,9.3,117,6.8,21.3,True,10119,46.9,0 +3478,45,Male,106,74,161,47,100,85,113,5.7,22.0,80,177,Asymptomatic,False,0.9,False,Never,1.7,146,7.3,32.5,False,6410,60.1,0 +3479,74,Male,140,92,129,44,74,108,113,5.3,25.1,82,127,Asymptomatic,False,4.6,True,Current,12.8,235,7.1,75.1,True,4299,44.0,1 +3480,59,Male,132,76,198,31,132,177,148,7.0,32.7,103,146,Asymptomatic,False,4.5,True,Current,7.6,9,6.9,59.6,False,6019,51.7,1 +3481,71,Male,135,89,201,52,120,145,114,6.1,28.8,104,145,Non-Anginal Pain,False,1.4,True,Never,11.0,84,5.5,51.9,False,6597,53.5,0 +3482,52,Male,118,85,180,65,92,112,137,6.1,23.0,74,149,Typical Angina,False,2.1,True,Never,4.7,235,7.3,56.8,True,7148,51.0,1 +3483,45,Female,129,75,211,62,114,179,126,5.6,28.6,81,186,Non-Anginal Pain,False,0.3,False,Former,15.6,124,6.1,44.5,True,10706,55.6,0 +3484,36,Male,113,79,221,52,113,232,111,5.0,18.3,74,179,Asymptomatic,False,0.7,True,Never,14.0,236,7.1,51.2,True,8281,76.7,0 +3485,57,Male,108,73,171,45,102,120,152,6.2,31.3,96,155,Asymptomatic,True,1.6,False,Never,4.4,43,7.4,33.0,False,3252,57.5,0 +3486,69,Male,140,96,120,28,81,133,124,6.5,26.7,84,129,Atypical Angina,True,4.5,False,Former,5.5,0,8.8,41.8,False,1095,47.9,1 +3487,61,Male,119,73,251,69,140,219,120,5.6,24.4,79,153,Asymptomatic,True,0.1,True,Former,10.2,64,7.2,59.5,False,1256,62.8,1 +3488,45,Male,129,83,181,41,116,154,117,6.4,35.3,74,178,Asymptomatic,False,0.4,False,Never,6.8,186,7.3,66.8,True,8312,53.1,0 +3489,48,Male,131,75,199,65,88,153,79,4.3,22.9,72,167,Asymptomatic,False,0.3,True,Never,3.7,152,7.8,62.7,True,5267,49.4,0 +3490,48,Female,134,77,203,34,116,268,95,4.8,32.5,80,182,Atypical Angina,False,0.6,False,Never,1.8,109,7.6,62.6,False,6379,49.4,0 +3491,54,Male,139,87,162,59,69,150,114,5.4,24.8,77,186,Typical Angina,False,1.0,False,Never,2.3,87,6.8,28.8,False,8724,40.6,0 +3492,63,Male,118,80,203,49,103,199,115,5.9,21.0,71,149,Typical Angina,False,0.4,False,Never,1.8,211,6.8,36.4,False,5306,68.7,0 +3493,56,Male,120,80,118,49,49,194,130,5.6,19.7,75,152,Non-Anginal Pain,False,0.6,False,Former,10.9,191,7.5,32.2,False,3055,76.8,0 +3494,63,Female,103,63,196,61,119,132,141,6.4,29.0,73,123,Atypical Angina,True,2.6,True,Former,5.5,134,6.2,44.8,True,9330,50.7,1 +3495,60,Female,134,89,145,57,55,129,104,5.3,33.4,64,152,Non-Anginal Pain,False,1.0,False,Never,1.8,149,7.8,37.2,False,6842,67.0,0 +3496,41,Female,117,72,205,45,122,162,81,4.9,25.4,92,195,Non-Anginal Pain,False,1.6,True,Current,5.0,139,7.2,78.1,False,8080,76.2,0 +3497,55,Female,130,89,121,49,65,78,130,6.3,23.5,85,178,Non-Anginal Pain,False,1.1,False,Never,1.8,96,9.3,69.1,False,4589,66.7,0 +3498,41,Female,140,91,161,64,63,95,112,5.1,30.1,77,193,Asymptomatic,False,0.7,False,Never,1.7,69,7.2,75.4,False,4078,57.5,0 +3499,55,Female,129,76,195,51,91,262,104,5.5,26.9,75,131,Asymptomatic,False,1.2,True,Never,1.8,65,7.2,57.1,False,6237,45.9,1 +3500,60,Female,143,84,188,39,133,60,122,5.5,26.6,85,151,Asymptomatic,False,0.4,False,Current,4.8,114,6.9,64.0,True,10936,56.6,0 +3501,44,Female,129,74,206,70,97,159,146,6.6,24.5,82,150,Non-Anginal Pain,True,0.4,True,Current,1.8,134,5.5,45.2,False,6393,43.8,1 +3502,37,Male,97,67,191,76,110,57,92,5.3,23.4,82,200,Atypical Angina,False,0.5,False,Never,3.5,337,5.4,16.1,True,6880,63.7,0 +3503,57,Male,127,76,206,70,97,234,87,5.4,25.3,74,181,Asymptomatic,False,0.9,False,Never,7.1,141,7.0,42.4,True,7590,57.4,0 +3504,53,Male,97,56,242,58,155,170,163,7.0,27.9,85,161,Typical Angina,True,2.9,False,Current,2.4,147,9.8,59.8,False,5025,65.4,1 +3505,69,Male,135,79,170,39,108,151,126,6.0,29.8,86,145,Asymptomatic,True,3.0,False,Former,5.4,74,7.2,62.0,True,7950,69.1,0 +3506,46,Female,125,66,218,63,107,178,107,5.5,22.4,84,182,Typical Angina,False,0.5,False,Never,3.2,171,7.8,36.2,True,6369,48.7,0 +3507,75,Female,128,88,212,45,134,129,127,5.7,19.3,98,127,Atypical Angina,False,1.6,False,Current,3.3,72,6.8,58.8,False,6869,43.2,0 +3508,63,Female,126,87,174,36,111,128,140,6.2,25.8,86,143,Typical Angina,True,0.6,True,Current,3.8,117,7.3,39.4,False,1095,64.0,1 +3509,35,Male,102,61,177,78,96,92,60,4.2,15.0,70,183,Non-Anginal Pain,False,0.6,True,Former,2.6,150,7.8,53.5,False,6413,44.8,0 +3510,45,Male,131,89,174,42,93,138,80,4.5,24.1,79,183,Asymptomatic,False,1.4,False,Never,3.9,166,6.0,58.2,False,3976,77.3,0 +3511,54,Female,137,76,207,50,121,139,96,5.4,28.0,69,161,Atypical Angina,False,0.2,False,Never,1.0,70,6.6,31.5,False,2936,51.5,1 +3512,53,Male,135,82,185,46,119,134,125,5.9,32.3,93,162,Atypical Angina,True,2.4,False,Never,1.9,103,7.1,59.5,True,7460,54.1,1 +3513,43,Male,112,76,206,52,106,190,96,5.9,22.4,61,169,Typical Angina,False,0.2,False,Never,10.9,198,7.1,17.6,False,6236,69.3,0 +3514,31,Male,131,86,161,64,78,82,77,5.1,20.3,95,186,Asymptomatic,False,1.5,False,Never,2.9,105,6.7,39.2,True,5940,73.7,0 +3515,50,Male,126,83,202,50,148,78,165,7.0,30.3,82,160,Asymptomatic,False,0.4,False,Former,2.3,150,7.5,28.3,True,5340,47.8,0 +3516,51,Male,126,80,202,52,109,190,64,4.0,29.6,96,165,Non-Anginal Pain,True,0.3,False,Never,3.9,0,5.3,52.1,False,2902,39.3,1 +3517,61,Female,116,83,195,68,88,166,126,5.7,25.0,95,142,Atypical Angina,True,0.5,False,Never,0.3,178,7.5,38.6,False,6437,61.9,1 +3518,57,Male,126,81,178,67,100,70,93,5.3,24.1,82,137,Typical Angina,False,1.3,False,Never,4.6,180,6.2,42.2,False,3042,76.5,1 +3519,40,Male,117,77,198,58,106,117,119,5.9,18.5,73,157,Atypical Angina,False,0.1,True,Never,1.5,154,8.0,42.9,False,3140,32.2,1 +3520,64,Female,120,72,221,59,116,236,158,6.5,30.1,107,119,Asymptomatic,True,2.0,False,Former,1.7,66,5.9,54.9,False,6236,51.3,1 +3521,46,Female,130,82,119,60,44,141,81,4.9,17.5,76,180,Asymptomatic,False,0.9,False,Never,5.2,263,7.3,53.9,True,12114,81.8,0 +3522,66,Male,133,93,195,42,114,219,106,4.9,33.4,76,149,Asymptomatic,False,1.5,False,Never,5.9,86,7.3,34.7,False,3345,48.9,0 +3523,48,Female,126,72,167,63,83,149,103,4.9,24.4,71,170,Asymptomatic,False,1.0,True,Never,5.9,214,7.0,24.2,True,7076,61.9,0 +3524,47,Male,121,81,133,60,60,44,92,4.8,16.2,87,164,Asymptomatic,False,1.2,True,Never,2.2,227,6.5,59.2,True,4801,43.8,0 +3525,54,Male,147,94,157,51,103,57,148,5.9,19.9,83,166,Asymptomatic,False,0.3,False,Never,8.2,153,8.3,59.1,True,6882,57.6,0 +3526,64,Male,130,84,156,41,74,191,108,5.6,25.9,73,154,Typical Angina,False,0.3,False,Current,2.5,223,7.4,57.4,False,5289,45.0,0 +3527,57,Female,135,84,223,52,132,165,119,5.7,27.0,80,174,Asymptomatic,False,0.3,True,Never,4.8,144,7.6,56.8,True,8030,39.6,0 +3528,37,Male,127,75,213,41,140,148,168,6.6,27.7,87,163,Asymptomatic,False,0.1,False,Current,2.3,229,7.8,61.4,True,7093,59.2,1 +3529,67,Male,118,83,152,51,82,99,92,4.8,24.2,76,157,Asymptomatic,False,0.4,False,Former,21.4,122,8.4,42.2,True,9163,75.1,0 +3530,45,Male,118,71,176,46,83,232,85,4.9,24.3,72,175,Atypical Angina,False,1.6,False,Current,7.1,164,6.5,63.5,False,4090,51.5,0 +3531,35,Male,105,63,144,41,97,104,112,5.0,21.4,88,181,Asymptomatic,False,1.7,False,Current,2.1,127,6.3,50.3,True,9913,62.4,0 +3532,32,Male,116,63,208,67,112,165,102,4.7,31.4,80,181,Non-Anginal Pain,False,0.3,True,Former,3.1,227,6.5,46.3,True,7372,78.9,0 +3533,71,Male,135,84,190,49,115,182,144,6.0,23.8,65,127,Typical Angina,False,2.8,False,Former,12.5,185,6.9,44.0,True,6638,70.6,1 +3534,74,Male,164,97,216,49,127,232,113,5.5,28.5,74,157,Asymptomatic,True,2.3,False,Former,9.7,144,7.4,55.6,False,5136,76.3,1 +3535,47,Male,125,78,183,47,111,119,91,5.6,32.0,97,151,Asymptomatic,True,2.7,False,Never,3.3,43,6.2,46.1,False,4763,60.4,1 +3536,50,Male,130,72,144,72,48,161,123,5.8,25.2,90,186,Non-Anginal Pain,False,0.4,False,Never,4.6,138,8.4,63.7,True,9129,67.7,0 +3537,53,Female,154,89,192,67,98,227,123,5.6,26.4,65,161,Non-Anginal Pain,True,0.2,True,Never,3.8,201,7.1,59.5,False,5321,93.8,0 +3538,38,Female,136,84,212,67,103,189,93,4.4,16.0,75,176,Asymptomatic,False,0.5,False,Former,20.2,193,6.5,79.6,True,9635,37.6,0 +3539,56,Female,123,81,173,64,90,102,88,4.7,25.7,70,174,Atypical Angina,False,2.3,False,Never,3.3,123,6.0,68.2,False,3910,61.2,0 +3540,61,Female,109,70,169,59,73,176,122,6.0,21.4,84,160,Non-Anginal Pain,False,0.2,False,Never,0.8,104,5.0,46.2,False,6566,47.2,0 +3541,49,Female,138,81,178,45,121,71,111,5.6,26.1,71,154,Asymptomatic,True,1.8,False,Current,0.2,198,4.2,40.9,False,6547,54.2,1 +3542,57,Male,118,77,204,63,108,178,131,6.6,29.2,81,182,Asymptomatic,False,0.0,False,Never,4.5,120,7.6,32.6,True,1635,31.9,0 +3543,49,Male,129,76,137,39,67,187,95,5.3,26.8,66,171,Asymptomatic,False,0.6,False,Current,8.4,76,6.1,57.7,False,3209,56.3,0 +3544,67,Female,127,86,210,65,99,197,127,6.0,21.8,80,145,Typical Angina,False,1.5,False,Never,10.3,185,7.5,32.6,False,7638,64.2,0 +3545,42,Female,110,70,218,58,122,161,123,5.9,27.6,69,184,Asymptomatic,False,1.0,True,Former,3.5,206,8.1,82.4,True,10485,53.7,0 +3546,48,Male,129,80,151,47,90,105,174,7.7,24.6,71,191,Typical Angina,False,1.4,True,Never,2.8,55,4.3,52.2,False,2700,44.7,0 +3547,73,Female,136,80,225,31,162,140,133,6.3,28.4,101,122,Asymptomatic,False,0.8,False,Never,0.7,48,4.7,45.3,False,7341,61.0,1 +3548,56,Female,146,100,170,43,99,119,130,6.0,31.2,87,164,Asymptomatic,False,0.1,True,Former,3.2,163,5.7,52.2,True,7605,52.4,0 +3549,85,Male,137,81,166,51,83,233,140,6.1,24.8,85,139,Atypical Angina,False,5.0,False,Former,2.3,74,8.4,58.3,True,6794,84.5,1 +3550,64,Male,131,90,181,35,103,218,119,6.1,36.9,70,149,Asymptomatic,False,2.7,False,Never,2.4,101,7.8,51.2,True,4874,54.5,1 +3551,69,Female,143,97,191,33,122,154,147,6.2,27.0,86,175,Asymptomatic,False,0.2,False,Current,3.5,46,9.3,34.0,False,3031,32.0,0 +3552,62,Female,125,85,145,40,78,123,176,7.6,29.0,86,130,Typical Angina,False,4.5,False,Current,0.4,21,5.8,51.8,True,4820,46.6,1 +3553,44,Male,133,86,220,47,130,203,141,6.8,32.1,81,165,Atypical Angina,False,0.3,False,Former,3.2,157,4.3,29.9,False,5927,74.5,0 +3554,66,Female,149,103,165,71,52,127,116,5.8,28.6,88,136,Asymptomatic,False,0.8,True,Never,0.3,201,5.2,52.3,False,4925,92.7,0 +3555,41,Female,105,62,219,66,105,180,154,6.4,27.9,81,174,Asymptomatic,False,0.7,False,Former,1.4,166,5.6,63.7,True,10698,70.7,1 +3556,33,Female,134,74,198,82,76,156,126,6.3,33.4,68,209,Non-Anginal Pain,False,1.1,False,Never,2.3,275,5.4,13.9,False,6434,70.7,0 +3557,59,Male,127,82,143,40,102,107,131,6.2,29.0,94,151,Asymptomatic,False,1.9,False,Former,1.7,61,7.0,75.7,False,5948,42.1,1 +3558,67,Male,136,73,185,51,83,238,97,5.3,25.6,76,142,Atypical Angina,False,0.4,False,Former,6.8,185,7.4,24.2,False,7225,53.2,0 +3559,70,Male,142,94,177,37,99,152,137,6.1,27.2,91,131,Non-Anginal Pain,True,1.5,True,Former,8.7,73,7.0,60.8,False,8749,84.2,1 +3560,59,Female,119,82,288,46,184,236,116,5.6,23.2,84,169,Asymptomatic,False,0.2,True,Current,7.4,91,7.1,64.5,True,4831,51.4,0 +3561,53,Female,143,100,212,58,114,247,122,6.3,33.4,79,173,Non-Anginal Pain,False,0.8,False,Former,20.4,160,5.8,45.9,True,3351,87.0,0 +3562,52,Male,111,62,153,70,63,75,137,6.1,21.1,65,195,Asymptomatic,False,0.4,False,Never,2.5,268,6.6,18.9,True,6045,90.2,0 +3563,61,Male,121,78,198,49,106,194,116,5.1,24.3,85,176,Asymptomatic,False,1.6,True,Never,6.4,122,5.2,42.0,True,4911,51.4,0 +3564,67,Male,127,80,233,62,150,144,182,7.2,28.6,85,160,Asymptomatic,False,1.4,False,Former,6.0,30,7.6,47.1,False,5582,55.2,0 +3565,54,Male,114,72,212,56,131,146,77,4.6,22.0,75,170,Typical Angina,True,1.8,False,Never,3.5,79,7.3,74.1,True,5026,55.8,1 +3566,62,Male,121,74,188,46,100,190,99,5.1,25.2,69,174,Typical Angina,False,1.2,True,Never,5.0,304,6.0,61.0,True,8809,50.7,0 +3567,69,Male,133,83,159,58,71,134,88,5.0,22.1,67,135,Non-Anginal Pain,True,1.5,True,Never,10.2,175,7.3,60.9,True,8145,42.5,1 +3568,70,Female,165,98,211,55,114,195,143,5.6,29.4,71,144,Asymptomatic,False,0.2,False,Current,2.4,69,7.8,52.8,False,7021,66.9,0 +3569,69,Male,112,79,176,60,95,92,135,6.2,16.9,76,140,Non-Anginal Pain,False,1.2,False,Never,1.9,177,6.8,25.3,False,6937,53.2,1 +3570,65,Female,119,70,227,63,129,234,111,5.6,16.4,69,168,Non-Anginal Pain,False,0.1,True,Former,0.7,200,8.1,66.8,True,7968,67.6,0 +3571,77,Female,137,78,161,52,97,83,128,5.8,28.5,76,137,Non-Anginal Pain,False,1.9,True,Never,5.2,122,5.5,54.0,True,6923,66.3,0 +3572,43,Male,138,87,181,65,74,201,137,6.1,24.6,83,166,Non-Anginal Pain,True,0.1,True,Former,26.9,88,5.2,58.0,True,3562,73.0,1 +3573,76,Female,125,85,167,76,73,92,90,5.3,22.3,78,140,Asymptomatic,False,2.5,True,Former,4.5,201,6.8,34.7,True,5537,56.0,0 +3574,55,Female,115,78,219,56,142,95,119,6.4,23.4,81,171,Non-Anginal Pain,True,3.5,False,Current,0.4,225,6.8,32.4,True,6792,51.3,1 +3575,34,Female,141,99,118,54,42,96,115,6.2,32.3,83,195,Non-Anginal Pain,False,0.7,True,Never,0.5,97,7.3,37.0,True,6171,44.0,0 +3576,56,Male,130,86,226,51,157,124,100,5.7,28.8,79,176,Non-Anginal Pain,False,1.1,False,Current,6.4,121,8.0,42.0,False,5937,75.5,0 +3577,58,Female,117,68,199,67,101,120,114,6.2,19.9,82,170,Non-Anginal Pain,False,1.4,False,Never,2.8,241,6.5,36.1,False,7661,68.8,0 +3578,37,Male,102,67,196,31,110,229,97,5.3,23.1,82,163,Asymptomatic,True,1.5,True,Current,14.4,202,6.5,61.9,True,6778,41.8,1 +3579,54,Female,139,84,192,55,106,219,152,7.4,28.5,71,185,Asymptomatic,False,0.1,False,Never,10.9,216,5.3,51.8,False,9048,66.8,0 +3580,26,Male,110,63,185,40,112,193,115,5.5,26.4,79,210,Atypical Angina,False,2.0,True,Never,3.5,161,6.2,41.5,False,7081,58.0,0 +3581,76,Female,132,81,213,60,127,176,122,5.8,30.0,83,149,Asymptomatic,False,0.6,True,Former,7.9,175,5.9,67.7,False,4991,43.0,0 +3582,51,Female,125,70,176,67,76,154,149,7.1,18.6,81,183,Non-Anginal Pain,False,1.9,True,Never,1.2,103,6.5,28.8,False,6969,43.2,0 +3583,54,Male,116,81,183,32,115,224,141,6.4,31.2,78,152,Non-Anginal Pain,True,0.4,False,Never,5.1,167,6.7,30.9,False,3797,33.5,1 +3584,66,Female,148,89,237,51,123,212,120,5.9,24.2,91,127,Asymptomatic,True,3.8,False,Current,12.2,35,6.6,30.4,False,6531,41.3,1 +3585,54,Male,128,76,223,54,141,164,96,5.3,21.9,87,149,Atypical Angina,False,0.1,False,Former,3.8,169,7.0,62.4,True,6865,66.0,0 +3586,38,Female,136,91,166,73,74,79,85,5.0,25.7,88,185,Asymptomatic,True,0.1,False,Never,4.9,190,7.6,33.3,False,7169,60.9,0 +3587,29,Male,108,61,208,66,94,198,82,4.7,23.8,68,210,Asymptomatic,False,0.3,False,Never,3.5,290,6.3,52.4,True,10419,64.5,0 +3588,63,Male,149,95,181,54,85,217,124,6.1,27.8,82,144,Asymptomatic,False,0.6,False,Current,2.3,241,7.5,57.6,True,5962,56.8,1 +3589,64,Female,136,82,174,68,91,80,111,6.1,21.4,100,125,Asymptomatic,True,1.1,False,Current,1.1,86,5.9,75.1,False,6039,58.6,1 +3590,48,Female,117,70,140,60,73,74,75,4.4,18.2,74,183,Atypical Angina,False,0.4,False,Never,3.6,219,7.2,64.4,False,5651,65.4,0 +3591,28,Male,120,66,159,40,93,139,99,5.8,26.4,89,198,Atypical Angina,False,0.3,False,Current,13.9,98,7.9,42.9,False,7845,19.3,0 +3592,58,Male,139,100,204,49,120,208,162,7.1,35.4,71,147,Asymptomatic,False,0.4,False,Never,9.4,168,6.9,51.4,True,7990,60.9,0 +3593,54,Male,138,86,172,49,112,160,123,6.5,25.7,75,166,Typical Angina,True,1.1,False,Former,2.3,136,7.0,52.4,False,2972,77.5,1 +3594,62,Male,155,98,232,58,123,227,119,5.7,26.2,79,156,Asymptomatic,False,0.8,False,Former,9.6,187,7.5,52.3,True,9274,50.2,0 +3595,44,Male,97,51,212,57,125,141,78,4.4,19.9,87,168,Asymptomatic,False,0.3,False,Current,4.2,146,7.5,46.8,True,7024,46.7,0 +3596,27,Female,109,72,206,52,110,221,75,4.5,22.8,74,196,Typical Angina,False,0.3,True,Never,1.7,184,8.1,52.5,False,7469,22.6,0 +3597,47,Male,121,81,176,54,90,148,120,5.5,15.0,76,154,Asymptomatic,False,1.0,True,Never,3.2,165,6.7,54.9,True,7249,66.4,0 +3598,64,Female,119,71,249,68,142,153,107,5.7,31.7,87,156,Asymptomatic,False,0.5,False,Never,6.5,80,6.8,37.7,False,3450,69.1,0 +3599,68,Female,154,98,184,30,121,223,167,7.0,37.5,74,142,Asymptomatic,False,0.7,False,Never,0.1,98,7.4,71.4,False,7359,57.3,1 +3600,49,Male,129,80,149,38,81,128,117,5.8,24.6,86,148,Non-Anginal Pain,True,1.6,True,Current,2.8,204,6.6,40.5,True,6368,82.1,1 +3601,47,Male,96,64,192,70,90,172,111,5.7,20.7,80,176,Non-Anginal Pain,False,0.5,True,Never,2.2,152,7.1,61.3,True,8874,63.8,0 +3602,31,Female,132,89,162,58,89,155,111,5.6,31.4,88,183,Atypical Angina,False,0.3,False,Never,8.0,61,6.9,35.5,False,2525,36.0,0 +3603,69,Male,122,79,168,65,76,111,109,5.3,16.7,85,171,Asymptomatic,False,0.8,False,Never,3.9,178,6.3,35.0,True,9330,53.5,0 +3604,48,Male,127,72,242,45,157,148,117,5.6,27.4,74,185,Typical Angina,False,0.8,False,Never,6.9,189,6.6,41.7,False,3026,51.1,0 +3605,45,Female,118,50,242,66,148,108,114,5.7,22.4,68,172,Atypical Angina,False,0.5,False,Never,0.0,247,7.1,51.5,True,9989,65.6,0 +3606,42,Male,113,72,194,70,113,97,127,6.3,23.7,84,189,Asymptomatic,False,0.4,False,Former,5.5,127,9.1,32.8,True,9125,67.6,0 +3607,49,Female,135,88,152,66,65,114,120,5.6,18.6,77,193,Atypical Angina,True,0.6,False,Never,9.7,159,7.6,55.7,True,4512,73.2,0 +3608,59,Male,129,90,223,55,125,210,134,6.1,25.4,85,141,Non-Anginal Pain,False,0.7,False,Current,1.7,130,8.0,55.8,False,5224,54.5,1 +3609,49,Male,114,74,187,67,96,35,99,5.2,21.4,63,188,Atypical Angina,False,0.9,False,Never,3.2,251,6.4,18.7,False,3334,54.7,0 +3610,72,Female,133,78,221,64,124,179,135,6.4,29.2,90,127,Typical Angina,False,2.2,True,Never,9.8,0,7.7,46.5,False,4862,60.2,1 +3611,62,Male,123,73,205,45,123,221,102,4.9,23.0,83,184,Asymptomatic,True,1.6,False,Current,8.5,98,8.0,36.3,True,8506,49.2,0 +3612,59,Male,135,80,187,74,85,142,99,5.1,18.0,79,153,Asymptomatic,False,0.7,False,Former,6.8,197,6.8,26.7,False,7625,64.0,0 +3613,71,Female,138,95,236,88,114,155,153,7.2,25.9,85,140,Asymptomatic,False,1.8,True,Former,0.7,99,6.6,57.0,False,3477,72.3,0 +3614,38,Female,125,84,237,74,123,192,118,5.8,26.3,89,160,Asymptomatic,False,0.7,False,Current,9.8,210,8.2,36.1,False,3714,56.7,1 +3615,56,Male,128,93,128,63,35,170,126,5.5,26.6,85,161,Atypical Angina,False,1.5,True,Never,2.4,187,6.1,40.7,True,6755,82.6,0 +3616,64,Female,137,82,173,77,71,69,97,5.3,25.8,78,173,Asymptomatic,False,0.6,False,Never,6.5,184,6.8,30.7,True,7973,71.5,0 +3617,65,Female,133,80,133,48,79,42,82,5.2,25.4,87,158,Asymptomatic,True,1.4,False,Never,0.6,61,5.8,46.9,True,4823,54.6,0 +3618,48,Female,114,67,204,77,117,85,117,5.9,22.6,77,160,Asymptomatic,False,0.3,False,Former,10.0,83,7.4,30.8,False,6461,65.8,0 +3619,38,Female,117,64,213,66,125,117,69,4.7,24.8,74,210,Typical Angina,False,0.4,False,Never,0.3,201,8.2,32.2,False,8846,56.6,0 +3620,30,Female,139,90,165,36,87,169,90,5.1,19.9,84,181,Asymptomatic,False,0.4,False,Current,11.9,128,8.0,76.0,False,9722,42.6,0 +3621,60,Male,142,83,180,54,85,175,98,5.2,21.6,93,134,Asymptomatic,False,2.0,False,Never,10.0,96,6.7,67.8,False,8847,56.2,1 +3622,53,Male,135,86,168,52,67,163,85,5.5,23.3,78,167,Atypical Angina,False,0.6,False,Former,4.9,78,6.6,43.4,True,6997,53.5,0 +3623,52,Female,130,94,215,65,115,170,117,5.9,26.0,79,163,Atypical Angina,False,0.1,True,Former,5.2,44,5.9,23.8,False,6261,35.1,0 +3624,56,Male,108,71,143,35,85,136,127,6.3,22.1,94,154,Asymptomatic,False,0.5,False,Current,3.7,95,6.3,31.8,False,5862,73.0,0 +3625,53,Female,118,88,234,64,139,171,113,5.3,26.8,94,174,Asymptomatic,False,0.9,False,Never,0.5,140,7.9,29.2,False,3778,67.3,0 +3626,47,Male,107,75,154,55,87,97,110,5.2,25.4,82,168,Asymptomatic,False,1.1,False,Never,5.7,64,6.3,61.0,False,2309,70.7,0 +3627,64,Female,146,96,249,67,132,199,101,5.0,19.3,74,147,Atypical Angina,False,0.2,False,Never,10.7,163,5.8,57.1,True,7421,26.6,0 +3628,37,Female,102,54,109,47,44,131,79,4.1,19.5,73,193,Asymptomatic,False,0.9,False,Never,12.1,147,7.4,58.3,False,2180,69.8,0 +3629,39,Female,122,81,198,66,100,110,106,5.2,22.6,71,200,Atypical Angina,True,0.5,False,Former,2.3,228,6.9,55.7,True,6493,48.8,0 +3630,37,Male,126,90,178,37,104,149,118,5.9,27.9,94,179,Non-Anginal Pain,True,0.5,False,Former,1.5,107,5.2,82.2,False,5218,50.8,1 +3631,50,Male,112,82,110,39,71,89,137,6.1,21.5,76,164,Asymptomatic,False,0.0,False,Former,1.7,155,4.9,12.2,True,8656,42.9,0 +3632,62,Male,104,59,191,62,96,178,121,6.4,19.4,73,171,Typical Angina,True,0.9,False,Never,7.9,156,4.5,19.4,False,2986,66.9,1 +3633,44,Male,135,80,157,54,103,38,119,5.7,21.8,73,182,Atypical Angina,False,0.1,False,Former,1.7,222,6.6,78.1,True,12968,56.6,0 +3634,56,Male,107,63,194,57,100,137,153,6.7,25.9,76,167,Atypical Angina,True,1.6,True,Never,12.3,222,5.6,39.2,False,6891,92.4,1 +3635,66,Male,133,78,184,43,101,193,133,6.7,32.1,70,119,Typical Angina,False,1.1,True,Current,1.6,246,7.0,60.0,True,8453,60.6,1 +3636,77,Female,113,70,221,50,143,175,122,5.7,19.2,80,107,Asymptomatic,False,1.3,False,Never,3.8,79,7.7,42.4,False,2965,48.0,0 +3637,65,Female,148,93,169,56,93,179,125,5.9,25.1,94,150,Asymptomatic,False,1.7,False,Current,0.5,202,7.7,23.7,True,7749,55.7,1 +3638,48,Male,113,69,146,52,57,183,131,6.3,33.6,67,167,Atypical Angina,False,2.3,False,Never,3.4,120,6.0,55.7,False,3446,58.6,0 +3639,35,Male,127,81,174,56,99,149,137,6.8,26.4,84,191,Asymptomatic,False,1.2,False,Current,1.9,49,7.1,27.4,False,8841,38.6,0 +3640,22,Male,93,52,168,61,56,235,93,5.2,22.3,83,188,Non-Anginal Pain,False,1.0,True,Former,5.1,123,6.4,44.5,False,7411,64.8,0 +3641,47,Male,135,83,231,68,125,210,109,5.6,27.6,82,175,Asymptomatic,False,0.8,False,Never,6.0,153,7.8,66.7,False,6779,62.4,0 +3642,56,Female,118,58,190,54,122,105,102,5.3,20.1,75,152,Non-Anginal Pain,False,1.6,False,Never,1.9,91,4.2,54.4,False,3964,65.4,1 +3643,48,Female,117,75,198,65,89,135,116,5.7,24.7,75,149,Asymptomatic,False,0.3,False,Former,2.8,202,7.1,34.7,True,8989,67.3,0 +3644,79,Female,116,85,230,58,143,151,113,5.0,23.0,69,150,Asymptomatic,True,0.2,False,Current,5.8,179,7.6,53.0,True,7271,71.9,0 +3645,37,Male,131,68,90,32,35,82,142,6.2,25.3,82,209,Asymptomatic,False,1.5,True,Never,4.0,66,5.4,83.1,False,5723,74.4,0 +3646,46,Male,115,73,137,40,81,107,105,5.2,28.7,78,181,Non-Anginal Pain,False,0.3,False,Never,9.4,129,5.9,41.5,True,5465,52.9,0 +3647,24,Male,129,90,154,62,79,64,91,5.3,25.4,78,195,Asymptomatic,False,1.0,True,Never,2.3,208,7.0,46.9,True,5423,78.7,0 +3648,69,Female,129,86,149,45,68,158,104,5.3,22.2,68,141,Asymptomatic,False,1.0,False,Former,3.2,88,6.7,38.3,False,4090,68.8,0 +3649,46,Female,106,64,137,51,64,170,138,6.1,25.3,84,181,Non-Anginal Pain,True,1.1,False,Never,13.6,220,6.0,34.5,True,7661,67.3,0 +3650,31,Female,129,76,183,66,90,84,121,5.4,28.7,80,196,Asymptomatic,False,0.5,False,Never,12.5,159,5.8,65.3,True,9614,65.2,0 +3651,52,Female,137,87,194,55,88,175,137,6.6,25.0,84,161,Asymptomatic,True,1.2,False,Never,3.2,22,5.6,56.2,False,1574,80.9,0 +3652,73,Female,160,94,193,40,99,198,132,5.7,36.3,76,141,Asymptomatic,False,0.6,False,Former,3.3,95,6.5,49.9,False,4229,67.6,0 +3653,80,Female,137,78,140,47,62,172,163,7.0,23.6,79,130,Atypical Angina,False,0.1,False,Never,3.1,119,7.2,40.6,True,5994,77.8,1 +3654,51,Male,125,89,217,58,121,144,116,5.4,34.0,77,159,Atypical Angina,True,5.1,True,Current,4.9,154,6.1,48.7,True,6997,34.6,1 +3655,62,Female,144,89,143,64,78,35,117,6.2,23.3,91,147,Non-Anginal Pain,False,1.0,True,Never,3.1,122,5.6,41.5,False,4675,61.1,0 +3656,48,Female,116,88,210,59,115,153,132,5.7,21.7,89,196,Asymptomatic,True,0.4,False,Never,4.5,145,6.1,53.4,True,6752,66.8,0 +3657,51,Female,122,77,172,49,99,106,96,5.2,26.0,72,168,Atypical Angina,False,1.0,False,Never,0.8,195,6.6,63.3,True,9399,61.2,0 +3658,47,Male,148,88,192,58,93,107,91,4.5,23.1,70,185,Non-Anginal Pain,False,0.5,True,Never,4.7,268,7.1,63.9,True,9214,66.3,0 +3659,74,Male,133,74,157,24,107,158,139,6.7,23.0,92,147,Asymptomatic,False,0.5,False,Current,1.8,50,6.2,61.2,False,6473,37.8,1 +3660,45,Male,114,91,187,32,114,154,106,5.4,20.8,77,181,Asymptomatic,False,1.1,False,Never,2.6,166,6.7,45.5,False,6839,55.2,0 +3661,28,Male,131,81,161,43,83,200,111,5.7,28.4,84,209,Atypical Angina,False,2.3,False,Never,15.9,93,7.3,48.7,False,5127,38.3,0 +3662,39,Female,143,91,202,45,134,217,131,6.4,32.0,76,190,Atypical Angina,False,0.2,True,Current,3.8,153,8.4,49.7,False,5124,46.3,0 +3663,46,Female,112,71,278,74,166,171,149,6.7,26.9,90,185,Non-Anginal Pain,False,3.9,True,Never,3.5,199,9.1,64.4,False,3863,72.8,0 +3664,56,Male,128,84,244,36,154,208,91,5.2,29.3,84,136,Atypical Angina,False,1.2,True,Never,1.6,171,10.8,62.1,False,5835,56.8,1 +3665,47,Female,144,87,183,49,100,134,154,7.0,26.8,69,174,Atypical Angina,False,0.2,False,Former,4.2,231,5.9,18.5,False,6793,50.9,0 +3666,56,Female,108,73,167,62,85,105,115,5.6,20.0,94,161,Asymptomatic,False,0.7,False,Never,2.8,119,7.3,35.0,True,6880,68.1,0 +3667,57,Female,145,101,155,47,84,171,129,6.2,27.3,71,163,Atypical Angina,False,0.3,False,Former,5.5,116,7.6,43.5,False,4565,59.5,0 +3668,49,Male,122,72,171,53,78,246,117,5.8,19.8,83,182,Asymptomatic,True,6.0,False,Current,8.2,108,6.6,55.3,False,3658,62.1,1 +3669,63,Male,106,65,115,53,48,121,85,4.6,17.3,65,143,Non-Anginal Pain,False,0.2,True,Current,20.2,105,5.8,17.3,True,6462,63.3,0 +3670,42,Female,114,71,258,53,154,191,134,6.8,33.5,82,203,Asymptomatic,False,0.3,False,Former,0.8,98,8.3,42.4,False,4434,64.0,0 +3671,41,Male,122,70,154,58,82,125,133,5.7,25.6,75,164,Typical Angina,True,0.6,False,Never,5.6,192,7.8,51.9,True,6181,79.2,1 +3672,66,Female,156,93,227,60,136,95,123,5.8,35.0,81,165,Atypical Angina,True,0.7,False,Former,2.7,81,5.7,83.7,False,8793,90.4,0 +3673,55,Male,127,92,207,61,120,124,80,5.0,19.7,81,185,Non-Anginal Pain,False,2.0,False,Current,8.8,100,7.2,56.5,False,5268,84.5,0 +3674,18,Female,120,78,225,88,122,148,100,5.4,25.3,66,210,Asymptomatic,False,0.8,False,Former,8.3,190,7.5,43.3,True,12865,46.7,0 +3675,48,Male,124,100,191,60,122,96,79,5.0,24.6,73,180,Atypical Angina,False,1.0,True,Never,7.3,298,9.5,39.3,True,7428,65.6,0 +3676,61,Male,114,84,207,42,126,208,110,5.2,18.5,83,158,Asymptomatic,False,0.5,False,Current,6.1,212,5.7,56.6,True,5288,45.7,1 +3677,73,Female,172,100,277,81,165,197,113,5.5,31.5,76,145,Non-Anginal Pain,False,0.5,False,Former,3.2,117,5.9,59.4,False,6595,54.8,0 +3678,63,Female,118,76,164,55,91,100,139,6.4,19.2,80,149,Atypical Angina,True,0.8,True,Never,10.0,77,8.9,25.5,False,3111,36.1,1 +3679,58,Male,136,88,224,51,127,197,169,6.8,26.9,81,166,Asymptomatic,False,0.9,True,Never,3.7,87,6.5,33.8,False,5391,75.2,0 +3680,67,Male,116,87,167,68,80,67,73,4.0,15.0,77,158,Asymptomatic,False,1.1,False,Never,6.8,255,6.6,62.6,True,13419,94.3,0 +3681,67,Male,140,77,206,53,130,187,101,5.4,24.6,75,125,Asymptomatic,True,2.6,False,Former,4.8,244,4.3,30.3,True,10941,52.4,1 +3682,69,Male,154,95,200,39,146,54,95,5.2,28.6,75,108,Atypical Angina,False,2.4,False,Never,8.6,166,7.0,53.0,False,2258,43.0,1 +3683,39,Female,110,56,193,68,95,162,121,5.3,19.2,65,185,Non-Anginal Pain,False,1.0,True,Former,9.3,274,7.6,33.3,True,8602,67.4,0 +3684,53,Male,112,75,174,57,102,35,136,6.0,20.5,70,189,Asymptomatic,False,0.6,False,Never,7.7,167,6.8,48.7,True,4473,79.2,0 +3685,34,Male,125,75,226,55,125,192,117,5.8,26.1,92,174,Asymptomatic,True,0.1,True,Former,6.2,80,7.2,89.5,False,7133,50.7,1 +3686,68,Female,135,92,166,53,85,148,161,7.4,28.1,94,150,Atypical Angina,False,0.3,False,Never,4.4,55,6.6,41.7,True,5948,57.7,0 +3687,45,Male,103,70,147,62,66,115,123,5.9,19.0,97,185,Non-Anginal Pain,True,3.0,False,Never,4.6,196,7.1,3.1,False,2838,78.5,0 +3688,41,Male,108,71,165,70,78,112,103,5.1,22.1,71,190,Typical Angina,False,0.7,False,Never,10.9,72,4.9,22.3,False,3778,58.1,0 +3689,77,Male,125,80,225,59,132,184,135,6.3,31.8,73,129,Atypical Angina,False,0.4,False,Never,9.2,97,4.7,56.4,False,3177,48.7,1 +3690,40,Male,127,88,178,62,79,156,78,5.0,21.2,85,183,Asymptomatic,False,1.5,False,Never,2.4,209,7.9,48.3,True,10811,61.3,0 +3691,49,Female,126,79,231,42,157,108,119,5.7,29.3,92,169,Non-Anginal Pain,False,1.8,False,Current,1.5,145,7.8,73.8,False,5616,45.1,0 +3692,54,Female,138,94,178,29,111,168,133,6.3,32.3,76,143,Typical Angina,False,0.1,False,Current,4.2,17,6.4,72.3,False,3859,31.5,1 +3693,51,Male,124,68,249,44,157,159,156,7.0,31.7,81,164,Asymptomatic,True,3.5,False,Never,18.7,91,7.5,47.8,True,6344,69.6,1 +3694,68,Female,139,85,160,54,86,78,150,6.7,27.6,87,159,Typical Angina,False,0.2,False,Former,8.2,177,6.7,35.5,True,7171,73.9,0 +3695,62,Male,138,96,229,60,139,127,120,5.9,30.0,81,171,Non-Anginal Pain,False,0.7,False,Former,1.9,227,6.9,40.1,True,9014,76.3,0 +3696,41,Female,136,81,137,62,58,67,128,5.7,24.6,82,177,Asymptomatic,False,0.7,False,Never,6.1,199,6.4,57.3,False,4908,87.8,0 +3697,64,Male,132,75,174,54,105,116,102,5.5,29.5,83,151,Non-Anginal Pain,False,0.9,False,Never,10.1,30,8.0,51.5,False,1902,60.3,0 +3698,50,Female,106,67,212,69,111,112,111,5.2,17.2,74,160,Typical Angina,False,0.5,False,Former,5.1,91,6.6,31.6,False,8203,63.3,0 +3699,46,Female,110,60,210,58,130,145,86,4.7,21.1,86,178,Atypical Angina,False,0.2,False,Current,0.4,142,7.2,34.9,True,9501,63.2,0 +3700,61,Male,141,97,228,48,153,120,128,5.9,32.7,91,147,Asymptomatic,True,0.2,False,Never,1.6,93,6.6,32.3,False,7637,52.8,1 +3701,59,Male,156,98,190,26,99,317,79,5.0,36.5,84,146,Typical Angina,False,3.3,False,Never,9.4,72,6.5,43.7,False,1085,78.1,1 +3702,55,Female,103,61,231,64,121,194,136,6.1,25.8,84,145,Atypical Angina,True,1.8,False,Former,3.5,115,7.5,24.7,True,6478,42.0,1 +3703,43,Male,129,72,193,32,125,163,108,5.6,29.2,76,176,Asymptomatic,True,0.7,False,Never,1.8,117,7.7,45.0,False,6496,33.9,0 +3704,55,Female,122,81,167,79,60,146,142,6.3,21.4,75,190,Non-Anginal Pain,False,1.2,False,Never,2.8,136,5.6,46.4,True,6598,66.2,0 +3705,38,Male,116,76,225,57,124,240,104,5.3,26.6,56,176,Non-Anginal Pain,False,0.0,False,Current,12.2,181,7.2,39.0,True,5787,62.1,0 +3706,63,Male,139,97,212,55,101,224,141,6.8,32.7,100,156,Asymptomatic,False,1.4,False,Current,14.2,32,5.2,40.9,True,8751,38.8,0 +3707,50,Female,153,106,171,55,91,116,131,6.3,26.4,84,147,Asymptomatic,True,1.2,False,Former,12.1,129,6.9,41.1,True,6724,71.8,1 +3708,52,Male,106,65,240,61,155,100,105,5.8,22.0,72,161,Non-Anginal Pain,False,0.3,False,Never,1.5,253,6.9,45.3,True,7972,56.9,0 +3709,62,Male,135,74,180,68,88,122,160,6.5,26.8,91,163,Asymptomatic,True,0.7,False,Never,2.0,160,5.9,73.8,True,5282,53.3,1 +3710,51,Female,126,74,180,69,106,46,101,5.6,25.1,75,164,Asymptomatic,False,0.5,True,Never,4.9,177,6.5,34.1,True,8131,61.0,0 +3711,60,Female,128,78,172,51,96,203,128,5.7,23.4,69,144,Typical Angina,True,0.2,True,Former,12.1,151,6.7,66.0,True,6985,44.9,1 +3712,44,Female,125,81,177,64,92,60,95,5.0,15.0,92,161,Atypical Angina,False,1.0,False,Current,17.0,227,7.9,34.8,True,8689,59.3,1 +3713,57,Female,117,78,218,82,85,218,121,5.6,27.8,87,169,Asymptomatic,False,1.2,False,Former,2.3,112,6.5,51.4,True,2426,48.1,0 +3714,65,Male,146,94,229,67,122,230,148,6.0,25.6,74,170,Atypical Angina,False,0.2,False,Former,3.3,244,6.5,40.5,True,7444,63.8,0 +3715,30,Female,127,92,147,64,64,98,94,5.2,22.7,82,193,Asymptomatic,False,0.8,True,Former,4.4,213,4.9,3.0,True,7508,62.1,0 +3716,48,Female,135,91,232,48,158,165,96,5.1,24.4,72,175,Atypical Angina,False,1.0,False,Current,4.7,145,4.9,28.5,False,5646,63.2,0 +3717,55,Female,128,103,199,73,93,176,118,6.0,24.0,73,149,Asymptomatic,False,0.1,False,Never,2.2,85,6.8,73.3,False,4328,51.7,0 +3718,51,Male,134,89,199,42,136,145,114,5.4,23.8,74,163,Atypical Angina,False,0.1,False,Never,2.5,199,5.9,35.3,True,8559,78.1,0 +3719,59,Female,135,96,160,50,90,51,120,5.8,22.1,85,156,Non-Anginal Pain,False,0.0,False,Former,4.3,144,7.7,42.2,False,4577,50.9,0 +3720,68,Female,124,72,240,59,136,136,94,5.2,27.7,79,167,Asymptomatic,False,1.3,False,Never,0.7,1,6.6,47.4,False,3628,56.5,0 +3721,55,Male,129,90,189,36,89,254,151,6.3,26.1,79,149,Typical Angina,True,0.7,False,Current,9.2,167,6.2,35.7,True,6708,58.7,1 +3722,59,Female,132,87,168,62,65,191,121,5.9,15.2,71,162,Typical Angina,False,0.9,False,Never,4.5,198,5.9,48.4,True,4295,66.8,0 +3723,59,Male,136,83,224,71,127,133,103,5.9,22.8,81,169,Typical Angina,False,0.1,False,Former,1.6,107,7.4,42.5,False,9460,31.0,0 +3724,66,Male,137,82,209,43,123,155,119,5.7,24.4,78,155,Asymptomatic,True,1.4,False,Never,17.7,98,6.7,45.4,True,9210,30.7,0 +3725,63,Female,146,93,173,40,91,189,168,7.4,32.5,85,108,Asymptomatic,True,1.2,False,Never,4.9,84,7.9,46.7,True,5887,27.4,1 +3726,73,Female,169,109,162,81,54,158,92,5.0,23.9,84,147,Non-Anginal Pain,False,0.1,False,Never,9.2,174,7.2,47.8,False,6069,64.3,0 +3727,68,Female,136,80,216,65,123,111,125,5.9,26.4,83,119,Atypical Angina,True,0.4,False,Never,6.4,90,7.6,52.6,False,4841,70.3,1 +3728,46,Female,122,76,185,66,81,148,88,4.7,25.2,59,179,Asymptomatic,False,1.2,True,Never,2.5,220,4.7,51.9,True,6454,62.6,0 +3729,57,Female,147,99,230,55,141,206,129,6.4,25.8,84,169,Non-Anginal Pain,False,0.7,False,Never,0.8,0,8.5,53.8,False,5397,34.4,0 +3730,66,Male,147,86,176,35,93,184,142,6.8,23.8,87,132,Asymptomatic,True,3.0,False,Never,3.9,40,7.2,55.2,False,4972,62.6,1 +3731,55,Female,130,78,146,47,77,183,114,4.9,29.8,69,172,Non-Anginal Pain,False,0.5,False,Former,2.3,196,7.6,58.3,False,5188,72.4,0 +3732,18,Female,107,70,194,50,111,149,78,4.3,21.6,107,202,Asymptomatic,False,0.2,False,Current,3.8,27,6.1,39.4,False,3670,49.7,0 +3733,77,Female,151,99,201,54,105,192,135,6.1,31.8,90,115,Non-Anginal Pain,True,0.7,False,Never,11.7,75,6.7,82.6,False,3041,31.1,1 +3734,59,Male,130,86,165,54,90,57,110,5.2,16.2,63,171,Non-Anginal Pain,False,3.5,False,Current,7.2,216,9.0,28.9,True,7648,42.6,1 +3735,57,Male,129,86,208,49,116,217,116,6.0,30.3,77,138,Atypical Angina,False,1.8,False,Never,11.5,95,7.1,50.5,False,7167,82.9,1 +3736,58,Female,108,68,147,63,75,79,93,5.2,20.8,93,186,Non-Anginal Pain,False,0.8,False,Current,3.2,170,6.6,62.6,False,6617,59.1,0 +3737,43,Female,159,99,166,54,96,61,141,6.7,24.7,81,154,Atypical Angina,True,0.5,False,Former,9.4,38,7.1,60.3,False,5533,75.9,1 +3738,54,Male,127,71,222,55,157,72,102,5.3,19.3,77,174,Asymptomatic,False,0.7,False,Never,4.3,128,9.1,70.2,True,8592,61.2,0 +3739,49,Male,129,75,198,34,110,267,142,6.4,33.2,86,184,Asymptomatic,False,1.5,False,Never,2.5,129,7.9,49.9,True,8580,48.2,0 +3740,43,Female,118,69,151,69,54,134,146,5.9,20.5,82,176,Non-Anginal Pain,False,0.6,False,Former,15.3,154,6.0,58.5,False,5261,77.9,0 +3741,56,Female,122,68,201,64,98,214,131,6.1,21.1,67,187,Asymptomatic,False,0.0,False,Never,9.2,228,6.7,24.3,True,9638,78.8,0 +3742,59,Female,118,72,166,51,109,107,82,4.7,20.8,86,154,Typical Angina,False,1.7,False,Current,9.2,176,5.8,33.0,False,4637,40.0,1 +3743,68,Male,138,88,193,55,102,182,116,6.0,27.2,66,138,Asymptomatic,False,0.1,False,Former,4.6,188,8.0,15.0,False,4571,68.3,0 +3744,57,Female,143,99,185,67,75,162,94,4.9,23.9,78,148,Atypical Angina,False,0.2,True,Former,8.1,194,8.1,49.9,True,8852,60.2,0 +3745,52,Male,137,92,191,56,87,195,110,5.9,26.4,84,152,Asymptomatic,False,0.7,False,Current,4.2,190,7.7,50.3,True,3943,44.3,0 +3746,61,Male,135,91,148,46,84,132,121,5.8,28.7,77,179,Non-Anginal Pain,False,0.8,True,Former,10.5,132,5.8,34.2,True,7639,74.9,0 +3747,68,Female,135,102,159,53,74,165,102,4.9,27.9,75,147,Non-Anginal Pain,True,0.8,True,Former,1.9,93,7.2,35.4,False,1508,51.4,1 +3748,67,Male,130,82,173,39,114,143,110,5.1,21.8,87,122,Non-Anginal Pain,False,0.4,False,Never,6.2,29,6.3,59.6,True,5551,47.6,1 +3749,51,Female,118,64,191,52,93,173,149,6.6,27.2,87,180,Atypical Angina,False,0.2,False,Never,3.5,72,6.9,60.8,False,5140,66.0,0 +3750,55,Female,148,91,149,43,80,70,125,6.4,20.9,74,161,Non-Anginal Pain,False,0.4,True,Never,5.1,60,6.6,49.0,True,7190,62.1,0 +3751,50,Female,149,86,148,59,65,148,113,5.9,26.7,78,170,Atypical Angina,False,0.8,False,Never,4.6,152,5.8,77.9,False,8010,49.7,0 +3752,82,Male,146,95,192,75,91,108,124,6.2,25.4,73,159,Asymptomatic,False,0.9,False,Never,3.2,154,7.4,46.3,False,5037,79.5,0 +3753,67,Female,123,81,164,72,75,114,134,5.9,21.7,87,148,Non-Anginal Pain,False,1.0,False,Never,1.0,200,8.9,45.1,False,6672,86.7,0 +3754,70,Male,127,89,135,49,53,145,123,5.8,29.1,94,159,Atypical Angina,False,0.7,False,Former,7.6,52,5.8,41.7,True,6764,76.4,0 +3755,41,Female,124,79,173,55,90,174,110,5.7,27.2,73,167,Asymptomatic,False,2.4,True,Never,1.2,184,7.6,46.5,True,5331,55.7,0 +3756,59,Female,98,74,228,59,137,171,148,6.5,22.3,70,166,Non-Anginal Pain,True,0.2,False,Never,10.3,261,7.1,52.5,True,10917,48.3,0 +3757,72,Male,129,91,148,38,75,138,137,5.8,21.3,80,142,Typical Angina,False,2.0,False,Never,8.2,139,5.1,49.7,False,4999,40.9,1 +3758,38,Male,122,80,217,32,130,197,107,5.6,31.6,72,166,Typical Angina,True,1.8,False,Never,6.5,67,7.7,48.1,True,8949,44.6,1 +3759,53,Female,118,66,173,67,68,216,162,6.9,21.2,95,159,Non-Anginal Pain,True,0.2,False,Current,8.6,59,8.4,73.1,True,7106,51.7,0 +3760,29,Male,109,80,211,56,140,114,135,6.1,29.7,78,204,Asymptomatic,False,0.2,False,Former,1.7,253,5.5,19.2,False,7717,38.0,0 +3761,90,Male,144,93,165,28,94,133,141,6.4,28.8,81,93,Typical Angina,True,0.3,True,Former,12.4,44,7.1,70.3,False,500,26.4,1 +3762,57,Female,104,71,165,49,79,179,136,5.9,24.0,81,177,Atypical Angina,False,0.3,False,Former,2.4,290,4.3,51.6,False,8514,71.1,0 +3763,48,Male,133,80,141,23,105,125,115,5.2,28.2,88,143,Asymptomatic,False,0.2,False,Current,9.1,56,8.1,75.6,False,5759,73.0,1 +3764,66,Male,146,93,213,46,142,159,112,5.8,28.6,91,150,Asymptomatic,False,3.4,True,Current,4.1,164,7.0,48.9,False,6880,81.0,1 +3765,49,Male,130,84,188,58,104,137,139,6.3,22.7,76,165,Atypical Angina,False,1.7,False,Never,5.3,68,9.2,30.7,True,7926,83.5,0 +3766,63,Male,134,81,153,40,105,82,102,5.6,21.1,53,179,Non-Anginal Pain,False,0.4,False,Former,3.7,211,6.7,56.9,True,5426,58.7,0 +3767,48,Male,115,69,176,41,110,146,161,6.7,21.6,85,147,Asymptomatic,True,2.1,False,Current,6.5,153,8.7,71.0,False,5496,57.1,1 +3768,69,Male,129,85,162,67,83,83,142,6.1,27.3,68,148,Asymptomatic,False,0.4,False,Former,4.7,276,6.1,32.2,True,7674,60.0,0 +3769,46,Female,139,77,211,60,117,155,99,5.9,30.8,83,147,Typical Angina,True,1.7,True,Never,1.5,44,6.7,45.4,False,4096,32.4,1 +3770,56,Male,133,79,165,45,91,96,102,5.4,22.8,73,184,Atypical Angina,False,1.1,False,Never,16.3,187,8.7,41.4,False,3923,57.0,0 +3771,41,Female,112,72,227,67,135,160,145,6.1,20.8,86,200,Asymptomatic,False,0.8,False,Never,7.1,127,7.2,37.9,True,6054,44.6,0 +3772,56,Male,125,76,161,43,87,157,141,6.4,30.6,73,143,Non-Anginal Pain,True,0.9,False,Never,3.5,203,5.5,45.4,True,7722,63.3,1 +3773,53,Male,136,87,181,61,99,124,111,5.4,24.2,81,173,Asymptomatic,False,0.4,False,Never,2.6,140,5.6,62.8,True,4780,63.1,0 +3774,38,Male,120,74,151,53,67,185,129,5.8,24.7,81,203,Non-Anginal Pain,False,1.7,True,Never,2.4,177,8.3,29.7,True,5483,66.8,0 +3775,78,Female,163,107,167,56,77,233,122,5.8,31.6,82,119,Non-Anginal Pain,True,2.4,True,Current,8.5,103,8.7,52.7,False,3727,49.5,1 +3776,52,Female,138,93,189,62,74,167,130,5.6,25.1,85,175,Typical Angina,False,1.3,False,Never,2.8,80,8.9,63.5,True,5006,58.6,1 +3777,54,Female,117,78,255,53,166,132,138,6.9,26.2,77,159,Asymptomatic,True,0.1,False,Current,15.2,259,6.8,19.6,True,8343,40.5,1 +3778,66,Female,131,74,234,59,160,91,101,5.5,26.2,85,144,Non-Anginal Pain,True,1.6,False,Never,2.9,48,7.2,48.7,False,3611,39.5,1 +3779,42,Female,110,75,145,55,64,146,96,5.5,24.7,48,181,Asymptomatic,True,1.6,False,Never,2.3,200,6.6,22.7,False,6839,66.7,0 +3780,40,Female,137,88,235,57,140,204,80,4.7,28.3,77,179,Asymptomatic,False,0.8,False,Never,5.2,123,6.3,15.9,False,3192,61.4,0 +3781,46,Male,134,85,188,54,106,177,107,5.6,22.7,93,186,Atypical Angina,True,0.1,False,Former,5.1,148,6.7,49.6,True,10463,36.9,0 +3782,68,Male,135,84,197,62,107,112,102,5.2,30.8,64,135,Atypical Angina,True,1.6,True,Former,2.3,206,5.7,9.1,False,4232,67.0,1 +3783,42,Female,103,70,174,57,95,81,163,6.7,24.2,88,167,Non-Anginal Pain,False,0.4,False,Former,1.1,43,6.2,67.0,False,3442,62.6,0 +3784,88,Male,157,98,197,69,96,174,149,6.9,26.4,79,117,Atypical Angina,True,0.5,False,Never,1.8,91,5.3,48.7,True,8294,39.8,1 +3785,58,Male,103,62,193,68,111,61,111,5.4,24.1,79,170,Asymptomatic,False,0.5,False,Former,6.5,230,7.8,62.4,True,8464,66.9,0 +3786,59,Male,106,63,200,52,109,197,102,4.8,19.8,89,166,Non-Anginal Pain,False,1.1,False,Current,8.9,140,7.4,34.6,True,6800,52.9,0 +3787,61,Female,117,67,191,65,94,118,104,5.9,19.0,73,171,Asymptomatic,True,1.0,False,Never,3.9,156,6.5,60.4,True,4991,50.6,0 +3788,46,Male,107,61,236,39,132,207,143,6.7,27.7,77,146,Atypical Angina,True,0.1,False,Former,4.0,114,8.2,36.6,False,7442,13.1,1 +3789,54,Male,162,99,184,50,105,139,128,5.9,26.9,93,184,Asymptomatic,False,1.1,False,Never,13.2,60,5.9,71.9,True,4581,62.8,0 +3790,47,Female,105,85,236,72,124,157,113,5.8,16.5,70,199,Non-Anginal Pain,False,1.2,False,Former,2.3,198,7.2,55.5,True,8912,49.5,0 +3791,53,Male,123,78,119,57,50,132,107,5.1,22.6,85,159,Asymptomatic,False,0.2,False,Never,3.7,93,6.8,57.2,True,9004,68.6,0 +3792,51,Female,120,76,216,77,110,139,86,4.7,19.9,65,173,Non-Anginal Pain,False,1.2,False,Never,2.4,141,7.4,29.5,False,4102,65.1,0 +3793,73,Female,138,99,136,46,53,212,134,5.7,25.1,90,158,Typical Angina,False,0.1,False,Former,15.0,85,7.0,48.1,False,6444,65.3,0 +3794,57,Male,124,69,163,34,123,50,132,5.7,30.3,86,153,Non-Anginal Pain,True,3.2,True,Current,2.1,122,6.3,58.6,True,9265,85.5,1 +3795,55,Female,132,70,210,61,110,192,179,7.4,36.3,67,158,Asymptomatic,False,0.8,False,Never,6.1,126,9.2,35.3,False,4047,64.8,0 +3796,52,Female,137,94,161,57,82,158,121,6.0,31.9,84,187,Asymptomatic,False,0.2,True,Current,5.6,137,5.2,45.7,False,8050,52.6,0 +3797,45,Male,124,79,177,50,93,134,120,5.8,29.9,72,174,Non-Anginal Pain,False,1.8,False,Never,1.6,192,5.2,19.0,True,7945,70.7,1 +3798,43,Male,131,68,201,68,116,113,113,5.4,23.9,69,172,Non-Anginal Pain,False,0.7,True,Never,2.2,228,6.6,29.4,True,8441,60.9,0 +3799,52,Male,120,84,144,53,67,110,114,6.4,24.7,75,176,Non-Anginal Pain,False,2.3,False,Never,2.9,154,8.0,34.6,True,5179,61.0,0 +3800,71,Female,121,66,166,50,105,70,157,7.0,26.5,72,132,Asymptomatic,False,0.9,True,Current,0.4,176,7.2,43.2,True,8988,33.4,0 +3801,61,Female,118,73,218,73,136,151,145,6.9,29.4,72,137,Non-Anginal Pain,False,1.3,False,Never,9.4,72,7.3,42.6,False,5091,39.2,0 +3802,47,Male,143,85,166,36,88,222,111,6.1,40.2,83,160,Asymptomatic,True,1.6,True,Former,3.9,27,6.0,28.6,False,4271,54.8,0 +3803,44,Male,137,80,243,73,135,153,118,6.0,24.7,80,180,Asymptomatic,False,0.3,True,Current,23.9,200,7.1,69.9,True,5379,76.9,0 +3804,51,Female,140,93,198,48,109,201,104,5.6,25.6,88,165,Asymptomatic,False,1.0,False,Former,0.9,63,7.0,62.2,False,4154,60.3,0 +3805,68,Female,118,86,245,62,158,71,119,5.3,30.8,84,134,Non-Anginal Pain,True,3.9,True,Never,1.3,107,5.5,62.8,True,7372,60.4,1 +3806,67,Female,139,90,161,43,78,198,152,6.2,28.1,95,153,Asymptomatic,False,0.4,False,Current,0.4,150,5.4,32.4,False,3887,68.6,0 +3807,49,Male,158,111,113,55,39,119,144,6.6,26.3,77,170,Asymptomatic,False,0.4,True,Former,4.3,100,7.5,57.7,False,5374,92.0,0 +3808,47,Female,121,82,200,69,96,118,108,5.2,19.9,71,182,Atypical Angina,False,0.8,False,Never,0.2,231,5.8,60.3,True,9539,64.9,0 +3809,61,Female,131,77,200,43,137,184,80,4.6,28.4,95,154,Asymptomatic,False,0.2,False,Never,12.8,238,7.0,31.0,False,3499,64.7,0 +3810,45,Female,114,67,191,68,103,152,129,5.8,18.5,72,191,Atypical Angina,False,0.7,False,Never,2.7,191,8.9,49.1,True,8107,65.7,0 +3811,51,Male,118,74,200,33,151,144,131,6.3,27.4,93,169,Asymptomatic,True,0.0,True,Current,9.5,193,4.8,43.5,True,8993,59.8,1 +3812,75,Male,133,74,162,53,73,158,170,7.2,23.2,88,170,Typical Angina,False,1.6,False,Former,1.7,106,8.0,59.0,True,6996,57.5,0 +3813,46,Female,111,67,174,68,58,190,149,7.0,15.9,81,189,Asymptomatic,False,0.3,True,Former,17.0,238,6.9,35.9,False,6463,63.0,0 +3814,56,Female,122,70,205,62,128,89,155,6.6,28.6,84,174,Typical Angina,False,1.1,False,Current,2.2,16,6.3,59.6,False,4344,62.3,0 +3815,54,Male,143,81,131,55,67,35,153,6.7,20.2,71,176,Non-Anginal Pain,False,0.2,False,Never,9.3,204,6.5,1.6,True,10806,63.5,0 +3816,66,Female,126,68,211,62,105,173,105,6.3,30.3,75,167,Non-Anginal Pain,False,0.5,False,Never,12.9,89,7.2,50.6,True,12798,69.9,0 +3817,58,Male,164,101,232,68,159,37,133,6.1,25.2,76,168,Typical Angina,True,3.6,True,Never,6.0,143,7.2,53.5,True,6415,76.3,1 +3818,36,Male,145,89,216,54,123,146,119,6.1,26.8,100,197,Asymptomatic,False,1.1,False,Current,2.6,115,6.8,41.6,True,3899,50.7,0 +3819,41,Female,101,59,180,58,97,111,127,5.6,22.6,81,188,Asymptomatic,False,0.3,False,Never,0.3,165,7.4,46.8,False,8507,66.0,0 +3820,61,Male,138,81,235,34,152,208,115,5.4,32.9,85,146,Asymptomatic,True,0.7,False,Former,2.5,180,5.9,53.3,True,9378,42.7,1 +3821,54,Male,135,90,183,48,108,148,145,6.3,25.8,68,159,Asymptomatic,False,1.0,False,Never,2.1,105,6.8,58.6,False,4006,75.3,0 +3822,48,Female,127,87,182,34,132,147,139,6.2,32.3,94,139,Non-Anginal Pain,False,0.3,False,Never,1.6,76,6.0,59.4,False,4615,47.1,1 +3823,37,Female,111,87,168,71,77,71,125,5.8,20.9,75,195,Asymptomatic,False,0.6,False,Never,0.6,211,5.9,39.3,True,5947,57.4,0 +3824,58,Male,163,109,257,55,137,264,134,6.2,30.8,83,139,Atypical Angina,True,1.8,True,Never,4.0,97,7.1,32.5,False,4345,21.4,1 +3825,48,Male,135,83,238,67,126,144,184,7.5,29.5,73,178,Non-Anginal Pain,False,1.6,False,Current,2.5,105,8.1,39.3,False,5872,55.8,0 +3826,63,Female,133,74,187,40,115,142,125,5.7,26.7,69,185,Atypical Angina,False,0.0,False,Former,8.4,138,5.5,63.6,True,6125,60.2,0 +3827,58,Female,137,83,236,80,102,253,76,5.0,26.2,81,152,Typical Angina,True,2.3,False,Never,17.0,297,6.3,38.0,True,6317,51.8,0 +3828,43,Male,110,67,185,37,105,156,140,6.9,31.9,71,173,Atypical Angina,False,4.7,True,Never,2.5,67,5.4,12.5,False,9256,44.9,1 +3829,38,Female,114,67,205,69,100,151,60,4.0,19.1,77,184,Atypical Angina,False,0.6,False,Former,8.1,191,7.8,50.2,True,6961,52.7,0 +3830,47,Male,126,71,197,43,101,250,150,6.5,32.7,96,136,Atypical Angina,False,0.4,True,Never,2.8,56,7.1,38.0,False,3659,46.5,1 +3831,59,Female,128,77,190,61,130,35,85,5.4,20.7,74,179,Asymptomatic,False,2.2,False,Current,1.1,238,6.5,47.1,False,6065,44.1,0 +3832,63,Male,134,87,181,61,106,120,140,6.5,29.1,71,175,Non-Anginal Pain,False,0.3,True,Former,1.8,182,6.9,39.1,True,7589,77.1,0 +3833,29,Female,128,80,233,70,118,170,97,5.0,27.0,66,195,Asymptomatic,False,0.4,False,Former,13.6,163,5.2,54.7,False,7914,61.9,0 +3834,72,Male,126,97,150,49,73,176,143,6.4,23.2,85,140,Asymptomatic,True,2.5,True,Never,11.8,165,7.9,56.0,True,8299,84.3,1 +3835,57,Male,121,78,200,55,136,111,153,6.0,27.9,97,159,Atypical Angina,False,1.7,False,Current,7.0,1,5.6,22.2,True,6187,40.4,1 +3836,50,Male,111,82,199,57,128,125,102,5.4,21.0,69,171,Asymptomatic,False,1.8,False,Never,14.2,243,4.7,33.9,True,6798,39.7,0 +3837,29,Male,128,82,166,50,100,135,113,5.9,24.5,86,204,Non-Anginal Pain,False,1.0,False,Former,17.7,114,7.4,59.9,False,6344,58.3,0 +3838,41,Female,122,73,185,61,87,145,105,6.2,30.0,77,156,Asymptomatic,True,1.9,True,Current,11.0,117,5.3,26.2,False,4182,52.4,1 +3839,69,Female,140,85,182,55,101,129,114,5.4,24.5,80,158,Asymptomatic,True,1.0,False,Former,0.2,160,8.3,33.8,True,10796,48.5,0 +3840,55,Female,122,84,182,61,97,194,113,5.3,26.2,88,148,Typical Angina,False,0.6,False,Current,0.6,256,8.3,47.4,True,6513,35.5,1 +3841,55,Male,116,63,163,47,100,162,89,4.8,18.8,76,160,Asymptomatic,False,0.8,False,Never,3.2,232,7.1,19.5,True,3808,31.7,0 +3842,50,Female,144,98,137,18,109,125,129,5.2,27.9,82,160,Asymptomatic,True,5.1,False,Current,1.6,151,6.2,52.6,False,3181,63.0,1 +3843,48,Male,137,82,219,49,145,124,97,5.6,22.3,77,180,Asymptomatic,False,1.2,False,Never,4.2,184,5.5,36.5,False,10789,72.0,0 +3844,50,Female,152,113,297,67,158,271,113,5.6,24.5,76,165,Asymptomatic,False,0.8,False,Never,9.1,182,6.8,53.0,False,5721,58.8,0 +3845,65,Male,128,79,201,54,95,226,104,5.7,21.3,88,173,Non-Anginal Pain,False,0.2,False,Never,7.4,105,7.0,60.5,True,5962,78.4,0 +3846,65,Male,116,79,216,55,117,151,147,6.7,29.4,80,167,Atypical Angina,False,0.5,False,Current,2.6,108,5.7,73.3,True,10111,37.6,0 +3847,62,Male,128,78,171,64,70,202,107,6.0,22.1,78,171,Asymptomatic,False,0.2,False,Never,8.4,205,7.4,30.7,False,8860,68.1,0 +3848,51,Male,149,89,171,54,86,218,132,6.1,21.6,82,175,Atypical Angina,False,0.4,False,Current,7.7,145,8.0,50.8,True,9597,58.9,0 +3849,59,Female,115,74,191,65,126,55,100,5.1,24.2,75,171,Non-Anginal Pain,False,1.2,True,Never,2.5,220,5.8,71.7,True,8102,55.8,0 +3850,74,Male,144,94,182,67,91,88,124,5.8,27.6,82,128,Asymptomatic,False,1.9,False,Never,4.7,142,7.4,61.9,True,9421,79.5,1 +3851,65,Male,131,75,131,51,70,64,145,6.3,20.1,92,128,Typical Angina,True,0.3,False,Current,7.0,92,5.4,75.6,False,6788,62.3,1 +3852,72,Female,141,95,171,57,82,106,137,5.8,33.7,85,141,Asymptomatic,True,0.3,False,Never,1.5,101,7.5,36.9,False,3806,80.2,0 +3853,36,Female,95,53,213,63,128,182,77,4.3,23.8,68,183,Asymptomatic,False,0.4,False,Never,5.1,133,8.6,28.6,True,5998,40.1,0 +3854,29,Male,114,68,270,83,146,208,119,6.3,26.1,64,201,Typical Angina,False,0.6,False,Never,2.3,248,7.4,25.8,False,8335,62.2,0 +3855,65,Female,132,84,207,48,125,143,158,6.3,26.2,81,126,Atypical Angina,False,3.0,False,Never,5.1,16,7.8,50.6,False,4060,44.2,1 +3856,52,Male,134,85,200,47,121,149,87,4.5,19.1,63,175,Asymptomatic,False,0.3,False,Never,14.7,169,5.7,35.3,True,7509,61.0,0 +3857,18,Female,97,59,169,66,68,176,73,4.8,31.3,76,210,Asymptomatic,False,0.3,True,Former,0.2,81,8.0,57.2,True,6230,67.0,0 +3858,64,Male,140,83,167,49,95,179,130,6.0,25.6,79,150,Atypical Angina,True,3.4,False,Never,11.6,108,7.3,34.2,False,7242,67.9,1 +3859,69,Male,159,104,181,46,110,123,75,4.0,32.9,80,136,Asymptomatic,False,1.7,False,Never,1.6,167,5.4,37.9,False,2620,65.0,1 +3860,59,Female,103,61,140,51,85,35,141,6.6,21.3,76,143,Typical Angina,False,0.7,False,Never,7.4,63,7.5,35.4,True,6661,52.7,0 +3861,56,Female,144,84,220,46,138,108,134,5.7,28.9,76,171,Asymptomatic,False,0.3,True,Former,4.7,113,6.7,41.9,False,8082,66.6,0 +3862,35,Male,109,82,140,54,76,94,115,6.0,21.8,81,193,Non-Anginal Pain,False,0.4,True,Never,10.8,233,5.9,18.1,False,6457,81.8,0 +3863,68,Female,124,85,180,55,68,283,167,7.1,30.0,73,136,Non-Anginal Pain,True,3.8,True,Never,3.0,98,6.7,43.8,False,4843,39.9,1 +3864,87,Female,110,67,143,34,101,118,97,5.1,26.9,86,124,Non-Anginal Pain,False,0.5,True,Former,3.3,58,6.2,58.8,True,9968,74.4,0 +3865,88,Female,166,101,203,61,127,132,67,4.4,21.0,93,150,Asymptomatic,False,0.2,False,Former,5.5,137,6.3,57.6,True,4181,62.9,0 +3866,55,Female,107,70,229,71,128,104,158,6.9,23.3,80,168,Non-Anginal Pain,False,0.6,False,Never,9.9,179,8.2,49.4,False,9333,63.6,0 +3867,56,Female,135,85,187,59,102,125,97,4.7,24.6,85,187,Asymptomatic,False,0.4,False,Never,1.5,55,6.5,43.4,False,6972,39.4,0 +3868,65,Male,135,79,205,65,85,251,120,5.6,31.7,73,159,Atypical Angina,True,0.2,False,Never,7.0,172,7.0,18.6,True,6762,70.6,0 +3869,39,Female,112,75,177,66,109,106,89,5.3,20.3,69,196,Non-Anginal Pain,False,0.2,False,Never,5.9,282,7.8,19.8,True,9056,53.6,0 +3870,47,Female,129,67,217,67,103,170,127,5.9,27.4,86,166,Atypical Angina,False,0.1,False,Former,2.4,89,6.0,39.7,False,4231,55.8,0 +3871,64,Female,115,76,210,78,101,137,86,5.1,22.3,79,176,Asymptomatic,False,0.3,False,Never,6.2,147,7.3,48.7,False,7179,63.5,0 +3872,58,Female,130,87,220,48,155,153,158,7.5,29.7,92,152,Non-Anginal Pain,True,2.1,False,Former,1.3,61,8.1,35.9,False,4656,41.8,1 +3873,48,Male,116,78,160,73,82,98,94,5.0,17.0,81,185,Asymptomatic,False,0.2,False,Never,5.9,166,6.6,66.5,False,5406,54.9,0 +3874,53,Female,124,83,168,60,81,148,85,4.7,23.2,82,187,Atypical Angina,False,1.1,False,Never,6.2,60,6.3,51.9,False,2049,39.1,0 +3875,39,Male,100,72,184,51,121,110,147,6.8,23.5,83,174,Typical Angina,False,1.5,False,Current,3.7,100,8.4,60.9,True,8143,47.1,1 +3876,49,Male,112,77,135,48,77,56,100,5.0,22.5,80,180,Typical Angina,False,0.6,False,Never,3.4,173,8.1,50.7,True,6112,77.9,0 +3877,69,Male,154,93,231,54,131,209,154,7.2,35.7,76,128,Asymptomatic,False,1.4,False,Former,1.9,151,7.9,46.4,True,6070,49.5,1 +3878,46,Male,97,65,174,64,91,102,125,5.6,19.0,70,177,Non-Anginal Pain,False,0.3,False,Current,5.3,219,5.7,43.5,False,7742,67.9,0 +3879,45,Male,116,71,239,46,124,302,126,5.8,24.3,84,171,Non-Anginal Pain,False,0.1,False,Never,10.2,87,9.1,35.8,True,6572,68.1,0 +3880,49,Female,134,81,192,45,129,148,127,6.1,22.2,82,147,Asymptomatic,False,1.7,False,Never,6.8,160,5.3,59.7,True,5631,67.5,1 +3881,39,Female,116,67,191,50,117,118,74,4.5,31.4,82,202,Non-Anginal Pain,False,0.3,False,Never,1.8,208,8.5,60.9,True,9392,77.8,0 +3882,63,Male,125,82,130,39,62,124,79,4.8,21.5,81,166,Typical Angina,False,0.8,True,Current,2.5,106,8.3,50.9,False,6343,52.8,0 +3883,34,Female,127,80,246,63,128,178,123,4.8,31.6,93,160,Non-Anginal Pain,False,1.0,False,Never,0.6,205,6.9,32.1,False,3509,28.5,1 +3884,42,Male,141,81,237,66,124,188,112,5.6,17.4,88,201,Atypical Angina,False,4.7,False,Former,5.1,161,8.3,78.5,True,7789,59.0,0 +3885,58,Female,133,86,156,59,85,90,94,4.5,23.8,78,170,Non-Anginal Pain,False,0.2,True,Never,1.8,117,5.6,72.2,True,5000,72.4,0 +3886,28,Male,126,86,167,39,97,170,135,6.2,25.2,70,182,Typical Angina,False,1.7,False,Never,8.0,182,8.5,53.8,True,8266,73.8,1 +3887,74,Female,142,79,230,59,141,148,117,5.9,27.1,76,151,Non-Anginal Pain,False,1.1,False,Never,0.3,135,7.2,63.1,True,8620,68.7,0 +3888,72,Male,120,68,151,50,81,148,91,4.6,19.3,78,139,Asymptomatic,False,0.6,True,Never,6.0,97,7.1,44.8,True,6745,72.9,0 +3889,55,Female,128,81,205,66,109,136,79,4.6,28.0,84,130,Non-Anginal Pain,True,1.0,True,Former,2.8,67,6.5,66.0,False,4965,52.4,1 +3890,71,Male,145,86,180,35,113,155,144,5.8,31.5,78,121,Typical Angina,False,1.7,False,Current,2.2,45,5.5,51.5,False,2324,43.6,1 +3891,58,Male,141,86,152,59,62,105,114,6.1,29.8,73,171,Non-Anginal Pain,False,0.7,False,Current,2.4,217,6.7,69.3,False,2142,86.7,0 +3892,63,Male,130,79,131,42,80,42,103,4.7,32.0,73,166,Asymptomatic,False,0.9,False,Never,2.9,142,7.7,24.4,False,6564,62.6,0 +3893,70,Female,136,82,191,50,122,104,138,5.8,26.2,77,142,Typical Angina,True,0.3,False,Never,1.0,33,6.2,49.1,False,5918,76.8,1 +3894,84,Female,132,90,169,38,97,154,168,7.0,26.8,85,115,Asymptomatic,True,0.5,False,Current,6.5,130,8.4,59.5,True,6899,79.6,1 +3895,58,Female,124,82,206,61,103,209,102,5.1,27.1,75,150,Atypical Angina,False,0.5,False,Never,1.7,116,6.5,55.6,False,6947,39.9,0 +3896,86,Male,132,90,222,53,150,173,153,6.9,26.4,82,122,Non-Anginal Pain,True,3.2,True,Former,4.5,44,7.3,33.0,False,4345,28.4,1 +3897,70,Female,143,85,159,48,68,215,122,5.8,30.1,81,147,Asymptomatic,False,0.5,False,Former,0.2,73,6.3,31.2,False,3788,69.1,0 +3898,76,Male,126,75,181,34,114,182,158,6.7,28.1,87,124,Asymptomatic,True,3.3,False,Current,5.7,119,8.1,71.2,True,7901,41.0,1 +3899,56,Male,147,95,173,49,92,222,126,6.1,34.7,91,171,Non-Anginal Pain,False,0.1,False,Never,6.7,152,8.7,37.3,False,6556,70.4,0 +3900,60,Female,129,85,185,81,77,173,104,5.7,19.1,91,170,Asymptomatic,False,1.5,False,Former,0.8,96,7.0,63.7,False,3172,74.4,0 +3901,85,Female,155,99,211,41,152,123,162,6.8,36.0,88,93,Asymptomatic,True,1.1,False,Current,0.9,108,8.8,59.9,True,9843,50.4,1 +3902,47,Female,150,92,219,68,139,95,142,6.5,28.7,73,167,Asymptomatic,False,1.3,True,Current,2.0,100,7.6,30.9,False,6673,49.3,1 +3903,39,Female,120,78,204,58,120,124,118,5.6,24.5,83,189,Atypical Angina,False,1.2,False,Never,4.4,177,8.3,41.2,True,7142,82.3,0 +3904,85,Female,159,110,193,67,116,103,142,6.2,30.9,83,114,Non-Anginal Pain,True,0.2,False,Current,1.8,167,7.5,56.0,True,9288,63.7,1 +3905,28,Female,101,61,175,62,86,143,128,5.3,21.5,79,201,Atypical Angina,False,1.0,True,Never,0.2,205,9.4,54.6,True,8528,72.2,0 +3906,68,Male,135,95,179,51,101,112,91,4.7,19.9,71,155,Asymptomatic,False,1.2,False,Never,8.4,120,6.5,50.9,True,5671,72.6,0 +3907,46,Male,114,64,148,53,71,115,142,6.1,24.4,80,183,Non-Anginal Pain,False,1.0,True,Never,1.8,127,8.8,39.9,True,6321,63.6,0 +3908,52,Male,117,83,155,49,90,101,161,7.3,35.7,85,187,Asymptomatic,False,0.2,False,Never,5.9,159,7.5,54.8,False,10888,68.0,0 +3909,31,Female,122,72,217,59,119,143,138,5.6,24.9,73,195,Asymptomatic,False,0.3,False,Never,0.2,138,7.1,38.5,True,9513,24.8,0 +3910,52,Male,145,92,237,45,161,186,161,7.3,31.2,89,136,Typical Angina,True,2.4,True,Current,14.0,139,7.1,44.6,True,5676,65.8,1 +3911,37,Male,137,86,177,64,77,141,91,5.4,29.7,92,175,Typical Angina,False,1.7,False,Former,9.3,91,8.5,66.0,True,4514,68.0,0 +3912,54,Female,144,99,222,49,137,195,148,6.3,21.3,80,148,Non-Anginal Pain,False,6.5,False,Never,7.1,109,9.2,42.2,True,5345,39.4,1 +3913,60,Male,124,78,182,37,105,211,123,5.8,27.0,85,137,Typical Angina,True,0.6,False,Never,14.3,77,7.6,67.6,False,2271,38.1,1 +3914,35,Male,136,86,151,58,63,156,104,5.2,32.0,89,204,Non-Anginal Pain,False,0.4,False,Never,15.4,158,8.3,37.1,True,5345,82.8,0 +3915,67,Female,123,81,231,62,131,201,150,6.9,34.2,86,158,Asymptomatic,False,3.1,True,Current,9.0,166,6.5,42.0,True,3997,62.9,1 +3916,66,Male,131,84,255,63,178,93,113,5.8,26.3,89,154,Asymptomatic,False,0.6,False,Never,1.9,246,6.5,32.6,True,9153,89.1,0 +3917,26,Male,111,64,198,46,113,155,113,5.4,19.9,80,176,Asymptomatic,False,2.5,True,Current,10.5,208,6.8,54.7,True,10997,40.2,0 +3918,48,Female,113,70,120,42,39,162,159,7.1,22.8,91,158,Atypical Angina,False,0.4,False,Former,2.7,88,7.7,51.7,False,6197,62.6,0 +3919,44,Female,122,89,229,72,103,191,120,5.9,24.2,88,169,Non-Anginal Pain,False,0.8,False,Former,13.2,10,7.5,47.9,False,4209,46.8,0 +3920,90,Male,137,102,155,54,67,178,113,5.6,26.6,98,114,Non-Anginal Pain,False,3.8,False,Current,4.8,166,7.6,46.3,False,4521,47.8,1 +3921,54,Male,114,66,160,52,57,203,126,5.8,22.2,80,180,Asymptomatic,True,0.1,False,Never,1.8,146,8.0,40.0,False,4600,55.0,0 +3922,36,Male,108,66,107,42,52,121,153,6.2,26.2,90,147,Typical Angina,False,1.4,False,Former,2.5,197,5.7,45.5,True,7861,54.2,1 +3923,57,Female,129,66,162,50,86,115,131,6.2,25.3,86,140,Asymptomatic,True,0.1,True,Never,11.2,64,7.4,32.2,False,1748,64.8,1 +3924,37,Female,105,82,196,41,112,230,84,4.6,28.1,79,190,Typical Angina,False,0.2,True,Never,6.9,100,6.9,44.6,False,5339,59.6,0 +3925,44,Male,126,73,184,26,139,41,144,6.6,34.1,92,153,Typical Angina,True,0.7,False,Former,1.7,78,5.1,55.3,False,4974,43.0,1 +3926,72,Male,138,74,177,23,123,160,152,7.2,28.4,83,129,Atypical Angina,False,2.9,False,Current,3.4,93,8.3,35.5,True,7105,42.6,1 +3927,54,Male,136,88,110,53,35,96,70,4.6,21.4,88,145,Asymptomatic,False,2.3,False,Current,2.4,8,7.0,49.3,True,4303,63.9,0 +3928,56,Male,119,72,210,47,141,103,84,4.6,16.0,91,161,Asymptomatic,False,0.2,True,Former,1.5,304,8.6,0.5,True,8817,59.7,0 +3929,69,Male,120,79,174,43,122,64,125,5.4,24.4,82,130,Atypical Angina,False,1.2,False,Current,5.8,174,9.6,36.6,True,7204,66.4,1 +3930,81,Male,123,97,226,61,131,137,89,5.0,22.9,56,137,Non-Anginal Pain,False,1.1,False,Never,3.2,159,6.1,50.6,False,4142,64.5,0 +3931,59,Male,124,83,160,62,90,88,113,5.3,26.8,86,164,Non-Anginal Pain,False,1.1,True,Never,10.9,137,4.9,31.7,True,8994,61.2,0 +3932,40,Female,108,67,208,70,104,164,131,5.8,22.0,75,168,Atypical Angina,False,0.1,False,Current,5.5,197,6.9,52.3,True,7651,62.2,0 +3933,54,Male,125,90,217,66,104,206,118,4.9,23.5,72,168,Asymptomatic,False,0.0,False,Never,16.0,182,6.3,38.0,True,9695,61.0,0 +3934,59,Female,108,66,263,62,166,174,120,5.4,24.7,84,164,Asymptomatic,True,0.2,False,Former,9.8,91,8.8,42.3,False,3558,50.9,0 +3935,52,Male,130,91,151,67,49,163,139,6.2,24.6,87,148,Atypical Angina,True,3.3,True,Never,3.1,56,5.1,75.1,False,3802,71.8,1 +3936,63,Male,132,91,117,35,56,210,114,6.3,23.3,81,153,Non-Anginal Pain,True,0.2,True,Never,11.5,83,7.4,25.2,True,7080,54.3,1 +3937,45,Male,122,80,220,68,120,152,107,5.4,26.0,75,179,Asymptomatic,False,0.1,False,Current,5.5,233,8.6,35.8,True,8512,53.8,0 +3938,79,Male,125,77,185,57,84,195,137,6.6,28.1,90,159,Atypical Angina,True,0.6,False,Never,8.0,191,5.5,70.7,False,3789,37.5,0 +3939,61,Male,144,75,138,50,68,113,135,6.6,22.1,75,172,Typical Angina,False,0.2,True,Never,5.5,148,6.1,45.6,False,7236,68.0,0 +3940,33,Female,142,91,126,47,74,88,106,5.3,22.7,80,162,Asymptomatic,False,0.7,False,Never,4.5,79,6.0,75.9,False,4835,55.3,0 +3941,55,Male,109,70,153,41,98,102,114,6.1,22.8,101,142,Atypical Angina,True,0.5,False,Current,12.1,36,7.5,52.6,False,7165,67.7,1 +3942,64,Female,153,101,191,57,107,187,108,5.5,28.7,75,163,Asymptomatic,False,0.9,True,Never,2.8,37,6.5,67.2,False,7789,54.1,0 +3943,60,Male,133,80,242,48,154,157,120,5.8,25.0,102,164,Non-Anginal Pain,False,0.7,False,Current,5.5,208,7.4,50.5,False,5461,22.4,0 +3944,75,Female,126,82,192,64,109,98,131,6.1,19.5,95,139,Non-Anginal Pain,True,1.8,False,Never,1.7,261,8.9,58.4,True,6413,71.2,1 +3945,41,Male,126,78,160,68,79,82,89,5.3,27.3,100,176,Non-Anginal Pain,False,0.5,True,Never,3.3,165,6.9,64.7,False,5857,56.2,0 +3946,34,Female,110,75,173,51,87,187,137,6.3,26.9,73,178,Non-Anginal Pain,False,1.0,False,Former,2.3,206,5.9,62.2,False,6315,81.5,0 +3947,66,Male,105,66,175,43,103,153,143,6.7,23.8,74,151,Asymptomatic,False,1.1,False,Never,3.5,91,8.4,58.3,False,7691,42.9,0 +3948,49,Male,125,70,179,42,97,215,152,6.5,27.4,93,171,Atypical Angina,False,0.0,False,Former,8.8,26,5.1,33.7,False,500,65.9,0 +3949,49,Male,123,83,201,63,99,184,95,4.6,16.4,74,179,Atypical Angina,False,3.1,False,Never,10.8,252,6.0,40.6,False,6094,81.8,0 +3950,66,Female,128,73,181,52,76,238,125,6.8,21.3,79,161,Non-Anginal Pain,False,0.7,False,Former,16.0,53,5.8,48.3,False,3802,42.2,0 +3951,41,Male,108,73,217,70,115,164,85,5.0,27.2,84,162,Non-Anginal Pain,False,0.5,False,Never,9.6,130,6.6,55.7,True,9554,45.4,0 +3952,36,Female,132,86,207,90,88,176,91,4.5,23.9,89,188,Asymptomatic,False,0.7,False,Former,4.6,144,5.9,47.5,False,7493,35.3,0 +3953,39,Male,123,79,202,68,101,205,148,7.1,26.8,72,172,Non-Anginal Pain,False,0.3,False,Never,17.5,231,7.2,20.6,True,7689,85.3,0 +3954,64,Male,132,78,170,49,86,140,167,7.5,28.3,81,165,Asymptomatic,True,0.0,False,Former,7.0,130,9.7,32.1,False,6678,57.2,0 +3955,52,Male,133,95,154,57,53,185,103,5.8,23.2,76,156,Asymptomatic,False,0.7,False,Never,2.4,234,4.4,37.3,False,5240,58.7,0 +3956,44,Male,128,74,153,70,54,138,137,5.9,24.9,82,155,Typical Angina,False,1.0,False,Former,5.4,184,7.9,42.8,True,9141,67.2,0 +3957,26,Male,102,73,194,47,124,124,112,5.3,21.8,86,190,Asymptomatic,False,1.1,False,Former,2.4,113,6.8,54.4,True,8102,44.8,0 +3958,63,Female,101,72,214,72,109,134,85,5.1,17.6,62,144,Atypical Angina,False,1.0,False,Current,4.5,239,7.5,31.2,True,9292,42.4,0 +3959,40,Female,108,75,158,36,114,144,120,5.9,29.5,84,173,Asymptomatic,False,2.0,False,Current,3.5,68,6.2,48.7,False,8520,52.5,0 +3960,63,Female,130,89,153,69,69,35,121,6.1,17.9,81,157,Asymptomatic,False,1.5,False,Never,2.9,55,7.4,38.7,False,3288,62.6,0 +3961,48,Male,126,78,208,70,99,158,92,4.6,17.6,67,185,Asymptomatic,False,1.5,False,Never,7.8,176,5.3,33.4,True,3700,65.5,0 +3962,58,Male,124,78,172,53,89,128,140,7.0,20.0,82,163,Atypical Angina,False,0.5,False,Never,23.6,197,6.8,36.7,True,7837,78.9,0 +3963,45,Female,131,77,164,51,100,105,109,5.1,27.8,95,178,Asymptomatic,False,0.1,False,Former,7.7,55,6.0,48.2,False,500,81.8,0 +3964,59,Male,138,91,210,44,141,147,122,5.9,22.6,74,134,Atypical Angina,True,0.7,False,Never,3.4,89,7.3,72.5,False,1624,66.5,1 +3965,26,Female,118,74,191,53,113,147,104,5.4,26.3,78,184,Atypical Angina,True,1.0,False,Former,2.5,172,7.9,61.9,True,9992,51.6,1 +3966,44,Female,145,85,199,78,121,46,159,6.9,30.0,76,183,Atypical Angina,True,0.2,True,Never,3.4,200,5.5,33.1,False,4241,75.0,1 +3967,61,Male,128,77,188,64,84,221,133,6.8,32.2,85,158,Non-Anginal Pain,False,0.9,False,Never,2.4,122,7.2,42.6,True,6179,85.1,0 +3968,74,Female,144,90,232,62,140,141,104,5.2,23.5,79,156,Asymptomatic,False,1.0,False,Former,22.3,170,8.8,62.9,True,10323,50.9,0 +3969,60,Female,130,73,177,57,89,170,96,5.4,31.0,90,152,Asymptomatic,False,2.1,False,Never,1.9,120,8.2,52.5,False,4571,59.8,0 +3970,45,Male,132,84,236,55,150,170,100,5.3,27.9,76,192,Non-Anginal Pain,False,0.2,True,Never,2.6,118,8.5,54.1,True,5770,48.1,0 +3971,46,Male,125,77,225,50,133,185,142,6.6,31.3,73,173,Asymptomatic,True,1.2,False,Never,7.4,64,4.9,31.7,False,4773,61.6,1 +3972,55,Female,112,69,215,61,143,125,131,6.8,24.1,77,179,Asymptomatic,False,0.3,False,Never,1.5,92,7.1,47.8,False,5582,45.6,0 +3973,38,Female,130,77,212,34,140,202,114,4.7,31.2,76,168,Non-Anginal Pain,False,0.5,False,Never,4.5,219,6.8,35.2,True,8098,60.7,0 +3974,68,Female,123,81,154,52,75,129,84,5.0,23.7,80,160,Non-Anginal Pain,False,0.1,True,Former,6.2,152,7.1,55.5,True,6973,59.0,0 +3975,81,Male,150,93,151,50,92,44,132,6.3,27.6,84,137,Non-Anginal Pain,False,0.4,False,Former,7.3,70,7.0,72.1,False,3097,87.1,0 +3976,47,Female,125,88,159,51,95,77,132,6.1,27.6,81,195,Non-Anginal Pain,False,1.2,False,Never,2.5,182,8.1,47.5,True,5130,58.8,0 +3977,24,Male,117,63,228,55,143,135,96,4.6,25.4,99,193,Non-Anginal Pain,False,0.9,False,Never,3.2,115,4.6,36.7,False,5963,67.9,0 +3978,44,Male,108,66,207,60,129,112,108,6.0,19.2,95,163,Atypical Angina,False,0.2,False,Current,4.2,125,8.6,75.7,True,8975,56.5,0 +3979,51,Female,142,102,175,73,84,108,148,6.3,25.3,77,166,Asymptomatic,False,0.6,False,Never,11.9,135,8.3,49.0,True,9362,45.9,0 +3980,47,Female,136,77,158,56,103,90,124,5.8,17.8,89,189,Asymptomatic,False,0.7,False,Current,2.5,156,6.6,73.1,False,5058,83.9,0 +3981,71,Female,140,86,192,37,128,172,156,7.4,26.6,91,155,Atypical Angina,True,0.8,False,Current,1.6,138,6.9,45.1,True,7487,58.8,1 +3982,68,Male,127,82,169,68,73,116,105,4.6,29.4,74,128,Non-Anginal Pain,True,0.8,False,Never,8.2,168,6.2,58.7,True,9560,63.3,0 +3983,43,Male,124,72,155,34,90,145,102,6.0,20.5,73,172,Asymptomatic,True,1.2,False,Former,4.9,171,6.3,44.8,False,4720,44.9,0 +3984,70,Male,147,104,159,29,77,210,161,7.3,28.4,95,136,Asymptomatic,False,0.6,False,Current,3.8,234,6.4,93.8,True,8341,49.8,1 +3985,76,Female,137,82,195,60,80,233,133,5.8,23.9,75,156,Typical Angina,False,1.5,False,Never,15.1,147,5.9,50.3,True,7934,56.5,0 +3986,32,Female,101,70,166,53,79,164,119,4.7,27.6,81,183,Atypical Angina,False,0.4,False,Former,1.7,183,7.0,30.2,False,10844,78.6,0 +3987,51,Female,127,75,218,59,113,167,108,5.1,26.1,79,171,Atypical Angina,False,0.8,False,Former,6.2,199,5.7,40.9,False,7352,64.5,0 +3988,56,Female,101,77,104,49,35,184,85,4.8,17.3,75,168,Asymptomatic,True,1.7,False,Never,0.7,110,5.5,36.6,False,5095,63.6,0 +3989,73,Male,120,67,208,52,147,120,134,5.7,33.5,92,127,Asymptomatic,True,1.8,False,Never,1.9,156,6.7,43.2,False,7974,51.3,1 +3990,33,Male,98,53,217,68,122,174,102,5.4,22.0,81,193,Typical Angina,True,1.1,False,Never,16.1,214,8.3,43.1,False,6271,85.1,1 +3991,50,Female,137,80,166,62,71,163,109,5.7,31.8,65,154,Atypical Angina,True,0.6,False,Never,5.8,211,8.0,55.0,False,5102,68.4,0 +3992,45,Female,136,100,177,53,85,173,143,6.1,25.5,79,175,Typical Angina,True,0.7,True,Former,5.5,11,5.6,68.1,False,3225,87.2,0 +3993,42,Male,134,75,219,56,125,179,122,6.4,25.6,88,190,Typical Angina,False,2.4,False,Former,8.0,93,7.1,61.2,True,6252,54.6,0 +3994,51,Female,148,99,191,43,120,169,109,5.2,28.0,81,141,Asymptomatic,False,0.8,False,Never,7.2,71,7.2,52.6,True,8748,56.2,0 +3995,64,Male,138,74,181,57,102,84,114,6.1,19.8,76,149,Typical Angina,False,1.4,False,Never,3.4,138,6.1,26.0,True,8043,44.8,0 +3996,62,Female,126,72,131,50,76,48,97,5.7,19.1,69,161,Asymptomatic,True,0.4,False,Never,2.6,113,8.6,54.3,False,2532,90.0,0 +3997,72,Male,122,72,194,49,118,116,113,5.6,26.3,87,158,Asymptomatic,False,0.8,False,Current,5.2,135,5.4,27.4,False,7774,59.4,0 +3998,47,Male,138,81,183,42,104,183,117,5.5,30.7,65,197,Non-Anginal Pain,False,1.5,False,Current,2.7,243,6.1,42.5,True,7384,47.4,0 +3999,56,Male,137,81,195,53,108,209,145,7.0,28.8,76,144,Atypical Angina,False,0.2,False,Never,1.6,163,7.9,29.8,False,7259,64.8,1 +4000,61,Female,122,71,215,56,141,158,138,6.3,27.5,90,158,Asymptomatic,False,1.6,True,Former,3.6,98,5.3,42.7,True,6853,46.4,0 +4001,73,Female,146,86,200,47,118,144,161,7.1,30.3,78,126,Non-Anginal Pain,True,4.7,False,Never,2.2,0,6.5,36.4,False,3521,54.0,1 +4002,42,Male,105,61,137,47,83,113,118,5.8,22.7,88,178,Typical Angina,False,0.9,True,Former,3.7,152,6.2,53.5,True,9267,76.4,0 +4003,54,Male,118,69,157,56,70,179,146,6.0,23.6,77,168,Atypical Angina,True,0.0,True,Former,3.0,76,6.1,9.3,False,4024,61.7,1 +4004,41,Male,124,73,179,67,81,133,110,5.6,26.2,74,190,Asymptomatic,True,1.3,False,Never,9.4,227,7.2,41.2,True,4538,72.9,0 +4005,59,Female,114,82,205,42,123,181,113,5.8,29.7,77,151,Asymptomatic,False,0.8,True,Current,5.1,207,7.9,14.0,True,8825,52.0,0 +4006,33,Female,115,63,209,66,113,136,127,5.3,24.3,90,193,Asymptomatic,False,1.6,True,Current,5.4,123,7.6,48.3,True,7131,46.8,0 +4007,38,Female,115,71,201,50,115,181,94,5.2,27.1,91,189,Non-Anginal Pain,False,1.0,False,Never,3.6,169,6.7,35.0,False,7070,37.5,0 +4008,54,Male,144,96,208,67,123,110,125,5.7,19.6,84,158,Non-Anginal Pain,False,0.5,False,Former,7.1,169,6.7,46.7,True,3671,58.4,0 +4009,39,Male,115,88,176,43,92,126,101,5.1,28.5,81,184,Asymptomatic,False,0.8,True,Never,4.0,141,8.7,64.7,False,3763,74.3,0 +4010,58,Male,140,88,168,52,94,162,115,5.2,20.9,85,165,Asymptomatic,False,0.1,False,Former,2.8,93,6.2,67.7,True,5085,41.4,0 +4011,43,Male,118,75,158,68,56,192,131,5.6,19.9,91,197,Asymptomatic,False,0.2,False,Never,16.5,93,7.8,58.2,False,6754,79.5,0 +4012,23,Male,107,67,152,63,48,135,94,4.8,20.8,81,210,Non-Anginal Pain,False,0.8,False,Never,1.9,223,7.0,50.4,True,10393,95.7,0 +4013,44,Male,113,71,187,52,117,124,125,5.5,25.9,87,170,Asymptomatic,False,0.2,True,Former,12.7,157,6.2,59.1,True,8369,42.3,0 +4014,68,Female,137,90,234,66,138,194,115,5.7,20.5,85,162,Asymptomatic,False,0.6,False,Never,3.7,186,8.3,36.1,False,5279,51.9,0 +4015,59,Male,132,83,163,83,67,74,118,5.3,23.5,59,179,Asymptomatic,False,0.0,False,Former,2.0,281,8.3,49.4,False,6448,76.0,0 +4016,61,Female,156,110,173,68,76,124,144,6.4,25.2,83,184,Non-Anginal Pain,False,0.2,False,Never,4.2,165,4.8,36.3,True,7809,54.8,0 +4017,18,Female,97,51,223,77,100,246,117,5.6,24.5,80,210,Non-Anginal Pain,False,0.3,False,Never,2.8,228,7.6,54.8,False,4836,45.7,0 +4018,47,Male,137,95,127,30,88,62,101,5.5,24.4,91,197,Non-Anginal Pain,False,2.1,True,Never,4.6,115,7.1,61.5,False,5755,70.0,1 +4019,62,Female,117,78,191,40,107,166,74,4.1,21.8,95,172,Non-Anginal Pain,False,0.9,False,Never,6.7,147,5.9,45.9,False,4661,42.2,0 +4020,51,Male,130,95,186,61,80,157,117,6.3,17.4,81,170,Atypical Angina,False,0.5,False,Never,6.4,100,8.3,45.1,True,6192,57.0,0 +4021,65,Female,129,71,147,62,61,120,76,5.1,15.0,79,153,Typical Angina,False,0.1,True,Former,14.6,87,5.4,44.9,False,7618,73.1,0 +4022,61,Male,111,77,136,63,36,135,89,5.1,20.4,73,165,Asymptomatic,False,0.5,False,Never,5.6,154,5.4,42.5,False,2341,75.3,0 +4023,47,Male,107,51,147,64,60,120,97,5.3,19.2,74,160,Asymptomatic,False,1.0,False,Never,6.1,278,7.2,61.9,True,8235,72.6,0 +4024,67,Female,160,104,128,51,72,71,97,4.9,24.8,80,162,Asymptomatic,False,0.4,False,Never,4.9,35,6.5,62.5,False,2192,60.8,0 +4025,74,Female,110,76,251,42,175,194,145,6.4,22.3,74,126,Asymptomatic,True,1.3,False,Never,4.0,99,6.7,72.4,False,4425,36.7,1 +4026,64,Male,142,95,276,72,151,252,143,6.8,27.5,76,101,Non-Anginal Pain,False,1.8,False,Never,7.4,100,7.1,88.4,True,5826,81.5,1 +4027,63,Male,140,82,194,65,100,184,83,5.1,21.1,76,142,Asymptomatic,True,0.3,False,Never,3.2,95,7.7,46.8,True,7237,47.6,0 +4028,38,Female,123,77,210,59,119,148,152,6.5,24.2,88,188,Non-Anginal Pain,True,0.4,False,Current,0.4,113,8.6,74.5,False,6193,35.9,0 +4029,56,Female,139,91,225,54,129,183,128,6.0,32.6,77,160,Non-Anginal Pain,False,0.9,False,Never,0.7,135,7.0,31.7,False,7484,56.8,0 +4030,58,Female,127,80,185,48,106,143,108,5.4,27.2,65,197,Asymptomatic,False,0.6,False,Never,5.4,199,7.0,58.8,True,5994,49.9,0 +4031,41,Female,135,78,225,67,120,182,150,6.3,20.2,88,205,Typical Angina,False,3.3,False,Former,2.2,129,5.8,44.3,False,7056,53.5,0 +4032,50,Female,140,89,217,51,149,120,102,5.4,27.4,87,159,Non-Anginal Pain,True,0.4,False,Current,5.3,161,5.3,54.2,False,8389,55.2,1 +4033,45,Male,126,68,234,66,125,145,130,5.4,29.7,96,192,Non-Anginal Pain,False,1.7,False,Never,4.2,105,5.7,45.0,False,3813,65.6,0 +4034,70,Female,146,96,240,75,110,208,130,5.9,31.5,84,147,Typical Angina,False,0.5,False,Former,1.5,206,6.8,45.1,False,6657,59.3,1 +4035,41,Male,124,86,203,62,90,249,85,5.0,20.4,91,193,Asymptomatic,False,0.7,True,Current,26.0,155,6.4,23.5,False,7335,35.3,0 +4036,57,Female,136,71,186,47,99,168,84,5.0,31.3,79,144,Non-Anginal Pain,False,0.1,False,Never,0.1,149,7.3,34.8,True,5853,72.4,0 +4037,53,Female,113,60,182,51,109,122,95,4.6,23.0,75,179,Non-Anginal Pain,False,0.3,True,Never,2.0,230,7.9,19.1,True,5805,66.3,0 +4038,61,Female,103,58,220,85,116,133,86,4.9,19.5,75,155,Non-Anginal Pain,False,2.5,False,Never,6.0,135,6.7,39.3,True,8041,64.1,0 +4039,53,Male,161,105,223,47,145,139,133,6.4,24.3,89,152,Asymptomatic,True,2.5,False,Current,2.4,33,7.1,69.6,False,6841,66.4,1 +4040,42,Female,140,86,230,48,135,225,122,5.7,32.6,93,178,Non-Anginal Pain,False,0.2,False,Former,15.1,67,7.2,33.4,False,4469,63.8,0 +4041,57,Male,144,92,219,57,137,116,158,7.0,20.9,81,153,Non-Anginal Pain,True,0.5,True,Never,4.3,67,8.5,52.5,True,7246,45.8,1 +4042,80,Male,144,86,156,33,102,107,114,5.9,21.3,85,137,Non-Anginal Pain,True,3.7,False,Never,2.9,92,5.4,63.9,False,1232,67.1,1 +4043,60,Male,139,94,208,72,96,199,130,6.1,31.2,76,130,Non-Anginal Pain,True,2.5,True,Former,7.3,136,8.7,64.6,False,4926,28.8,1 +4044,68,Male,149,96,169,70,73,117,112,5.9,21.5,62,166,Asymptomatic,False,0.5,False,Never,6.9,241,6.0,42.5,True,7804,66.5,0 +4045,33,Male,119,76,192,61,106,142,122,6.1,31.8,83,194,Typical Angina,False,0.3,False,Former,3.3,131,5.8,21.0,False,3037,63.7,0 +4046,78,Female,141,88,193,57,108,174,154,6.6,29.0,99,104,Asymptomatic,False,2.7,False,Never,4.9,57,7.3,57.2,True,5477,40.1,1 +4047,70,Male,126,91,157,65,62,106,101,5.6,16.2,66,167,Asymptomatic,False,0.2,False,Never,6.1,259,7.1,43.8,True,7334,76.9,0 +4048,53,Female,133,77,198,74,103,139,133,6.0,17.6,75,177,Asymptomatic,True,1.1,False,Never,13.8,228,7.9,34.2,True,6327,55.6,0 +4049,63,Male,134,85,166,43,91,168,105,5.0,22.3,83,106,Typical Angina,True,0.4,True,Never,8.7,133,6.7,69.5,True,6993,66.7,1 +4050,77,Female,148,101,213,49,127,128,163,6.6,38.2,72,125,Typical Angina,False,1.2,True,Former,1.0,147,4.2,25.3,True,4489,65.6,1 +4051,53,Male,122,71,174,70,81,98,85,4.5,15.0,80,180,Asymptomatic,False,0.6,True,Never,3.0,83,6.1,53.9,True,5039,58.2,0 +4052,40,Female,119,69,184,49,105,118,109,5.5,18.1,84,187,Non-Anginal Pain,False,0.7,True,Current,1.7,258,4.6,44.3,False,6763,47.8,0 +4053,65,Male,145,83,210,53,119,184,153,6.6,31.6,87,127,Typical Angina,False,2.3,False,Former,4.8,0,7.3,44.5,False,4208,77.1,1 +4054,51,Male,134,87,233,66,128,204,138,6.4,29.6,92,143,Typical Angina,False,0.5,False,Former,5.4,209,5.9,38.3,False,3547,26.4,1 +4055,61,Female,148,102,176,47,128,122,109,5.9,33.8,71,155,Asymptomatic,False,0.2,True,Never,0.6,114,7.6,36.2,True,8246,36.1,0 +4056,50,Male,115,73,158,46,101,70,136,6.6,24.0,87,138,Typical Angina,False,0.1,False,Former,9.7,98,5.6,67.4,False,3163,53.3,1 +4057,34,Female,128,83,129,46,62,119,102,5.2,26.7,91,192,Asymptomatic,False,1.0,False,Never,4.4,55,8.4,75.7,True,7326,46.6,0 +4058,48,Female,123,79,162,44,82,122,136,6.1,19.8,92,146,Typical Angina,True,0.1,False,Current,1.9,139,8.8,46.8,False,5167,55.1,1 +4059,61,Male,109,55,256,64,156,191,86,5.8,23.6,76,162,Typical Angina,True,0.4,False,Never,6.1,255,6.9,71.9,True,9065,48.5,0 +4060,39,Male,111,66,164,49,98,98,115,5.5,26.4,87,155,Asymptomatic,True,1.8,False,Current,4.7,100,6.8,54.7,False,3033,67.5,1 +4061,75,Male,125,66,125,32,66,96,130,6.2,27.2,90,112,Asymptomatic,False,5.9,False,Never,7.5,31,6.5,12.8,False,4320,68.3,1 +4062,27,Female,99,67,178,63,94,121,126,6.4,21.0,92,191,Non-Anginal Pain,False,0.6,True,Never,1.5,195,7.6,45.6,True,9095,58.3,0 +4063,42,Female,115,78,209,63,110,178,115,5.5,21.8,71,191,Non-Anginal Pain,False,2.3,False,Never,16.9,232,8.5,72.0,True,9797,44.2,0 +4064,57,Female,119,53,207,58,104,218,117,6.2,21.3,77,177,Asymptomatic,False,2.4,True,Current,0.8,203,8.1,44.8,True,7632,59.4,0 +4065,56,Female,139,75,212,61,117,140,157,7.0,31.8,87,185,Atypical Angina,False,0.3,False,Former,9.4,27,5.9,38.3,False,4881,64.9,0 +4066,64,Female,116,80,165,47,97,81,87,4.8,20.7,94,194,Non-Anginal Pain,False,2.2,True,Never,0.7,152,6.1,56.8,False,6460,62.1,0 +4067,56,Male,129,89,243,68,148,181,123,6.2,28.8,89,149,Atypical Angina,True,0.8,True,Never,4.3,215,7.3,60.5,True,5731,40.4,0 +4068,75,Male,105,76,210,64,106,227,119,5.5,27.8,83,136,Non-Anginal Pain,True,0.2,False,Former,2.0,145,4.4,40.8,True,6146,52.8,1 +4069,48,Female,114,76,193,62,105,154,110,5.7,20.8,78,174,Atypical Angina,False,0.9,False,Never,4.6,224,7.8,32.7,True,9067,46.5,0 +4070,62,Female,119,72,148,64,47,139,113,5.8,24.8,85,165,Typical Angina,True,2.7,False,Former,1.8,179,6.2,50.2,False,6185,70.1,0 +4071,45,Male,106,57,196,51,131,107,109,5.7,27.0,73,185,Asymptomatic,False,0.7,False,Never,3.2,88,8.0,56.0,False,5097,62.6,0 +4072,69,Female,148,101,212,52,113,174,104,5.6,26.3,92,140,Non-Anginal Pain,False,3.5,True,Current,0.3,93,9.1,70.9,True,7052,53.5,1 +4073,51,Female,129,92,199,67,107,144,103,5.2,28.1,71,155,Asymptomatic,False,0.4,True,Current,8.7,226,6.6,35.5,True,7856,33.2,0 +4074,50,Female,123,81,209,50,126,171,138,5.9,29.7,85,163,Asymptomatic,False,0.7,False,Never,1.8,140,6.7,44.2,False,4687,50.2,0 +4075,54,Male,141,87,188,57,114,145,135,6.4,31.5,82,140,Typical Angina,False,1.2,False,Never,1.7,86,8.1,47.7,False,3656,89.9,1 +4076,42,Female,146,95,188,63,74,238,116,6.2,27.2,78,191,Atypical Angina,False,0.3,False,Never,17.4,173,6.0,60.8,True,6661,63.8,0 +4077,49,Female,127,75,184,20,108,264,93,5.4,22.8,69,172,Non-Anginal Pain,False,0.2,False,Never,22.1,145,6.8,50.6,True,1699,27.0,0 +4078,33,Male,116,70,156,51,54,237,135,6.6,29.7,86,189,Asymptomatic,False,0.2,True,Never,7.9,92,6.3,44.4,False,5134,76.6,0 +4079,50,Male,116,60,112,25,84,93,125,6.6,22.3,86,172,Atypical Angina,True,1.7,False,Never,2.0,76,5.6,45.0,False,4197,70.1,0 +4080,53,Male,129,65,250,66,148,132,107,6.4,30.4,83,150,Asymptomatic,False,0.3,False,Former,3.9,140,6.1,74.6,False,6449,76.9,0 +4081,62,Female,146,79,191,47,121,93,173,7.0,31.1,90,144,Asymptomatic,False,0.3,False,Never,1.4,0,8.1,52.5,False,2429,52.4,0 +4082,48,Female,129,84,169,46,89,114,83,4.9,23.4,67,172,Atypical Angina,False,0.3,False,Former,2.6,181,7.5,46.2,True,6586,69.1,0 +4083,37,Female,120,71,182,52,93,179,92,5.3,18.1,92,210,Asymptomatic,False,0.6,True,Never,6.8,96,7.0,33.9,False,5312,56.1,0 +4084,53,Male,129,66,209,55,116,159,147,7.0,27.6,80,185,Non-Anginal Pain,False,0.4,False,Never,6.5,140,6.8,52.6,True,8971,76.6,0 +4085,46,Female,144,84,153,79,45,168,132,6.0,26.2,81,177,Typical Angina,True,1.7,True,Never,15.0,51,7.7,67.2,False,3910,59.3,1 +4086,42,Male,126,78,206,65,85,240,93,4.6,27.6,65,150,Atypical Angina,False,0.5,True,Never,2.6,106,9.5,47.6,True,6245,37.3,1 +4087,77,Female,142,86,270,49,178,208,128,6.0,20.9,83,114,Asymptomatic,False,3.0,False,Never,1.5,139,4.9,25.3,False,2464,52.1,1 +4088,51,Female,116,73,206,68,96,187,128,6.3,30.4,88,181,Asymptomatic,False,0.1,False,Former,0.8,133,5.6,61.0,False,4141,69.7,0 +4089,90,Female,170,116,176,67,82,159,128,5.9,23.1,83,138,Asymptomatic,False,0.9,True,Never,7.1,116,4.8,59.4,False,6440,61.3,0 +4090,49,Female,123,82,109,48,42,135,103,5.5,26.4,73,162,Non-Anginal Pain,False,0.1,True,Never,0.4,98,7.9,39.5,True,4170,58.2,0 +4091,40,Female,111,83,221,71,129,111,162,6.6,24.5,84,191,Asymptomatic,False,0.4,False,Never,0.1,182,8.1,3.6,True,6799,65.6,0 +4092,51,Male,143,103,196,54,119,135,116,5.6,28.9,86,173,Non-Anginal Pain,False,1.0,False,Never,2.6,87,5.4,63.3,False,6839,66.5,0 +4093,43,Female,100,53,193,82,87,112,114,5.4,22.8,72,192,Asymptomatic,False,0.6,False,Never,0.6,231,8.9,44.9,True,7449,62.0,0 +4094,64,Female,158,104,118,50,56,93,129,6.0,28.2,94,164,Non-Anginal Pain,False,0.1,True,Former,7.6,116,8.6,56.7,False,4139,62.6,0 +4095,47,Male,120,83,126,43,60,35,96,4.8,25.4,66,186,Asymptomatic,False,0.7,True,Never,2.5,145,7.9,82.2,False,6028,93.6,0 +4096,54,Female,128,88,202,67,130,35,80,4.5,27.1,72,166,Non-Anginal Pain,False,1.0,False,Former,8.4,59,5.7,24.9,False,2420,49.5,0 +4097,65,Male,147,99,201,47,127,88,125,6.3,19.2,81,159,Asymptomatic,False,1.1,True,Current,2.7,38,7.8,52.4,True,3875,58.3,0 +4098,53,Female,114,76,165,50,94,126,122,6.1,19.4,95,170,Asymptomatic,True,0.9,False,Current,7.3,63,6.6,55.0,False,5871,54.6,0 +4099,57,Male,139,95,183,23,109,283,117,6.1,24.6,95,147,Asymptomatic,True,0.1,False,Current,25.7,60,7.2,67.2,False,4898,56.1,1 +4100,46,Female,152,97,238,69,138,131,100,4.8,28.9,87,148,Typical Angina,False,2.1,False,Former,0.1,180,6.1,35.0,True,8986,78.9,1 +4101,66,Male,135,81,177,32,111,150,120,5.6,30.0,101,135,Asymptomatic,False,0.1,False,Current,5.8,79,6.9,29.1,True,6355,55.2,0 +4102,76,Female,144,101,215,49,131,186,97,5.0,29.7,79,125,Typical Angina,True,0.2,False,Never,3.7,69,4.9,41.1,False,3695,33.8,1 +4103,52,Female,129,84,123,28,91,76,119,5.2,20.4,70,160,Asymptomatic,False,0.4,False,Never,14.2,93,7.6,41.7,False,1052,74.8,0 +4104,42,Female,107,71,156,58,80,125,107,5.6,22.4,80,172,Asymptomatic,False,0.4,True,Current,0.1,229,6.9,34.5,False,5879,46.6,0 +4105,56,Female,112,76,179,48,90,196,126,6.3,25.4,87,153,Typical Angina,False,0.8,True,Former,3.6,177,7.2,49.1,True,6429,51.6,1 +4106,77,Male,139,83,168,58,87,167,113,5.3,23.9,66,146,Atypical Angina,True,0.8,True,Never,3.7,173,5.7,62.8,False,5286,80.6,0 +4107,52,Female,147,98,196,59,93,270,101,5.6,22.2,63,177,Asymptomatic,False,0.3,False,Never,25.2,195,9.2,46.3,True,7859,52.1,0 +4108,74,Male,140,97,223,72,101,214,140,6.3,17.9,79,131,Asymptomatic,True,1.2,False,Current,25.0,153,7.2,33.6,True,4257,53.0,1 +4109,43,Male,126,82,167,63,63,167,144,6.3,28.4,91,181,Atypical Angina,False,1.1,True,Former,1.8,119,8.9,52.6,True,5424,67.1,0 +4110,52,Female,138,78,211,66,100,186,131,6.2,26.9,69,179,Asymptomatic,False,0.1,False,Never,7.7,160,7.3,44.8,True,7852,54.1,0 +4111,68,Male,129,76,219,38,137,192,113,5.8,23.8,84,138,Atypical Angina,False,0.9,False,Never,10.0,140,7.9,70.7,True,9193,56.1,1 +4112,58,Female,134,89,160,51,95,70,97,5.1,26.4,87,155,Typical Angina,False,1.0,False,Never,1.3,122,7.4,48.1,False,3004,62.9,0 +4113,49,Male,126,75,224,82,111,166,160,6.7,29.0,77,161,Non-Anginal Pain,True,0.9,False,Former,5.6,63,6.2,67.6,False,6143,58.2,0 +4114,77,Female,133,74,215,61,112,122,95,5.0,22.4,85,141,Asymptomatic,False,0.1,False,Never,4.6,43,6.3,42.8,True,7189,52.8,0 +4115,54,Female,128,80,213,62,134,91,113,5.5,28.7,64,162,Asymptomatic,False,0.2,True,Never,1.6,158,6.2,32.5,False,6829,80.9,0 +4116,56,Male,137,89,241,53,142,182,104,5.2,27.2,97,153,Asymptomatic,True,1.1,False,Never,9.4,113,8.4,38.0,False,4390,44.6,1 +4117,51,Male,124,83,224,40,160,206,134,6.0,31.3,97,148,Non-Anginal Pain,False,2.7,True,Current,8.3,86,6.4,66.4,True,4451,20.5,1 +4118,43,Male,162,93,267,64,184,121,90,5.6,28.8,82,154,Asymptomatic,False,0.2,True,Current,8.6,93,8.7,56.6,False,8199,71.8,1 +4119,57,Male,114,81,234,62,112,218,97,4.8,26.6,77,180,Asymptomatic,False,0.3,False,Never,4.0,135,6.9,59.3,False,5042,64.5,0 +4120,71,Female,140,78,189,56,117,155,171,7.3,27.3,94,119,Asymptomatic,True,1.2,False,Never,4.6,102,6.9,64.8,False,4362,48.2,1 +4121,53,Female,140,68,182,54,94,148,132,6.4,36.6,92,161,Non-Anginal Pain,False,1.5,False,Former,0.5,50,6.8,70.3,False,7438,79.1,0 +4122,71,Male,114,72,236,64,138,149,136,6.2,17.6,85,144,Asymptomatic,False,0.6,False,Current,3.9,195,8.0,29.2,False,5981,39.0,1 +4123,43,Female,109,68,174,86,43,155,143,6.9,23.9,70,179,Asymptomatic,False,0.2,False,Former,7.3,282,5.5,27.1,False,9975,84.2,0 +4124,57,Female,118,81,194,64,109,114,85,4.9,20.1,92,158,Atypical Angina,False,0.8,False,Current,0.2,133,4.5,38.6,False,4145,49.5,0 +4125,63,Female,128,76,182,51,101,133,163,7.2,22.8,67,127,Asymptomatic,False,0.8,False,Never,4.6,158,7.2,36.9,True,4863,75.4,0 +4126,61,Female,130,88,208,44,135,174,119,5.7,27.1,92,147,Asymptomatic,True,2.0,False,Never,1.5,91,6.9,20.9,False,6226,48.9,1 +4127,52,Male,143,90,190,77,94,125,126,5.7,20.4,83,147,Asymptomatic,True,1.6,False,Never,7.3,133,7.5,61.6,False,7074,47.8,1 +4128,29,Male,108,72,226,39,146,217,126,5.8,21.3,88,173,Asymptomatic,True,5.7,True,Never,11.4,105,5.8,56.8,False,2768,52.0,1 +4129,52,Female,134,88,248,58,148,199,134,5.5,24.6,88,156,Asymptomatic,False,1.8,True,Never,0.7,19,6.4,52.9,False,3423,46.4,0 +4130,66,Male,141,97,242,59,145,152,133,6.6,25.7,89,124,Typical Angina,False,1.5,False,Former,6.9,2,7.9,56.8,True,8278,30.8,1 +4131,63,Female,151,111,196,61,105,138,156,6.7,29.6,79,171,Atypical Angina,False,1.4,False,Former,1.7,0,8.6,54.4,False,4187,45.6,0 +4132,53,Female,134,76,210,55,119,164,137,6.1,23.4,78,169,Typical Angina,False,0.2,False,Former,7.5,125,8.5,43.4,True,7856,75.2,0 +4133,72,Male,131,88,207,69,113,176,152,6.8,32.9,89,140,Asymptomatic,True,0.5,False,Former,2.3,144,5.0,61.4,True,1926,81.4,1 +4134,40,Male,118,59,138,42,79,114,141,5.9,28.7,75,193,Asymptomatic,False,1.1,False,Current,2.4,137,6.0,64.4,False,7705,79.3,0 +4135,60,Female,135,86,219,48,148,162,127,6.2,22.0,86,166,Non-Anginal Pain,True,1.3,False,Former,3.8,153,6.3,36.4,False,3123,51.6,1 +4136,76,Male,143,94,185,42,117,136,126,6.3,24.7,73,117,Atypical Angina,False,4.4,False,Current,12.2,104,8.6,44.4,False,2500,76.1,1 +4137,75,Female,122,87,156,69,69,117,153,6.7,30.9,88,155,Typical Angina,False,1.4,False,Never,0.5,112,6.3,19.3,True,11312,48.3,0 +4138,80,Male,153,91,195,66,122,64,117,5.4,34.5,81,122,Non-Anginal Pain,False,0.4,True,Never,8.5,131,6.4,24.0,True,9269,72.2,1 +4139,38,Male,103,73,236,62,129,168,153,6.9,25.5,92,193,Non-Anginal Pain,False,0.1,False,Never,6.4,115,8.3,64.1,False,1358,78.7,0 +4140,49,Male,124,65,173,56,80,136,126,6.7,27.8,74,171,Typical Angina,False,0.5,True,Former,7.1,120,6.7,61.7,True,9966,38.0,0 +4141,56,Male,127,72,151,31,97,139,116,5.6,30.9,82,151,Asymptomatic,False,1.5,False,Never,7.7,144,5.6,42.8,True,4016,59.1,1 +4142,65,Male,112,76,139,58,81,55,113,6.4,20.8,81,130,Non-Anginal Pain,False,1.4,False,Former,5.6,52,5.6,56.3,False,4767,67.5,0 +4143,39,Male,121,80,132,79,38,100,115,5.2,21.5,66,197,Non-Anginal Pain,True,0.6,False,Former,5.7,156,6.4,43.7,False,5613,63.8,0 +4144,58,Male,129,92,167,39,88,150,120,5.8,23.6,62,150,Asymptomatic,True,1.2,False,Never,3.8,79,5.8,56.6,False,7263,49.9,1 +4145,44,Male,139,85,192,47,107,146,123,6.1,33.4,89,145,Typical Angina,False,3.2,True,Former,2.3,58,6.4,50.3,False,5073,66.9,1 +4146,53,Female,132,85,212,88,112,86,155,6.9,19.3,72,162,Atypical Angina,True,0.3,False,Former,5.7,178,6.9,54.1,True,10273,59.8,1 +4147,33,Female,101,54,170,73,68,196,131,5.8,18.4,70,171,Asymptomatic,False,0.1,True,Never,0.7,167,6.3,56.1,True,9081,52.5,0 +4148,63,Female,132,86,204,79,90,152,141,6.6,25.6,85,130,Typical Angina,False,2.6,False,Never,5.9,95,5.4,46.7,True,7231,49.4,1 +4149,29,Male,120,67,216,71,101,179,125,5.8,18.8,96,169,Typical Angina,True,1.0,True,Former,12.1,205,7.8,62.7,False,5849,29.4,0 +4150,59,Male,139,91,210,48,134,123,105,6.1,22.1,98,158,Asymptomatic,True,0.3,True,Former,6.5,64,7.1,55.7,False,2241,50.1,1 +4151,38,Female,129,66,181,37,113,137,143,6.2,28.1,88,185,Asymptomatic,False,0.4,False,Never,1.5,132,9.3,26.6,False,2498,73.1,0 +4152,44,Female,129,76,245,59,139,204,162,7.2,30.2,69,165,Atypical Angina,False,2.4,False,Former,3.9,122,7.5,62.5,False,5847,52.9,0 +4153,62,Male,149,86,190,53,131,98,122,6.0,26.9,78,147,Asymptomatic,False,0.2,False,Current,11.8,169,7.1,44.4,False,4699,54.8,0 +4154,58,Male,130,73,183,53,113,95,131,6.3,21.2,74,162,Asymptomatic,True,4.8,True,Never,1.5,42,5.2,33.3,False,6682,85.1,1 +4155,38,Male,124,92,138,46,72,154,118,5.6,15.3,68,188,Asymptomatic,False,0.4,False,Current,1.6,133,7.6,50.8,False,5590,43.5,0 +4156,23,Female,102,74,175,54,81,198,85,5.1,25.6,68,203,Non-Anginal Pain,False,1.3,True,Never,5.2,214,7.0,61.9,True,6861,72.2,0 +4157,57,Male,135,86,162,77,53,195,142,6.8,22.1,90,131,Typical Angina,True,1.7,False,Never,7.9,141,5.6,78.7,False,4345,51.3,1 +4158,57,Male,118,82,212,52,121,152,115,5.8,28.0,99,158,Typical Angina,True,2.5,False,Former,6.5,39,7.6,39.6,True,6380,58.7,1 +4159,34,Female,131,74,216,66,139,102,107,5.6,24.7,88,192,Non-Anginal Pain,False,0.9,False,Former,2.8,111,7.6,31.5,False,10201,81.8,0 +4160,78,Male,144,100,182,68,92,111,127,5.2,26.2,76,155,Asymptomatic,False,0.9,True,Never,5.7,160,4.8,35.4,True,7760,41.5,0 +4161,66,Female,136,79,168,55,71,186,110,5.3,34.0,94,144,Asymptomatic,False,1.2,True,Never,4.0,0,5.7,57.1,True,7101,69.9,0 +4162,35,Female,118,66,184,60,98,169,88,4.6,25.5,73,204,Non-Anginal Pain,True,0.3,True,Former,0.1,217,7.1,23.3,True,7460,85.2,0 +4163,66,Female,115,74,183,45,119,103,99,5.6,19.7,88,143,Non-Anginal Pain,False,1.1,True,Current,3.5,69,5.7,40.8,False,4349,44.0,0 +4164,36,Male,128,63,159,54,84,104,145,6.7,33.2,80,198,Asymptomatic,False,0.9,False,Former,2.5,54,5.5,22.2,False,3172,66.2,0 +4165,75,Male,155,89,215,55,152,64,97,5.9,21.1,75,124,Atypical Angina,True,1.2,False,Current,1.7,258,6.5,85.7,False,4687,50.6,1 +4166,76,Female,123,69,160,48,104,73,119,5.6,29.0,77,137,Asymptomatic,True,0.3,False,Former,5.3,193,7.0,39.0,True,2893,84.4,0 +4167,77,Male,131,76,256,57,175,74,153,6.9,22.5,74,146,Asymptomatic,True,4.4,True,Former,2.4,217,9.7,45.3,True,4726,57.3,1 +4168,38,Male,126,81,157,35,98,133,109,5.5,25.4,79,197,Atypical Angina,False,0.2,False,Former,3.2,187,7.5,37.8,False,1254,73.1,0 +4169,50,Male,132,89,193,72,101,171,121,5.6,24.6,78,198,Atypical Angina,False,0.9,False,Former,4.9,229,6.6,43.9,False,8005,57.5,0 +4170,37,Female,126,79,168,53,82,144,86,4.8,22.9,65,175,Atypical Angina,False,0.6,False,Former,5.3,200,5.7,51.5,True,8990,51.0,0 +4171,41,Male,119,65,152,33,117,165,112,5.4,24.1,89,172,Non-Anginal Pain,False,0.2,False,Never,15.0,49,7.5,10.1,False,5775,63.2,0 +4172,81,Female,153,96,228,54,122,230,126,6.2,25.9,83,133,Asymptomatic,False,0.6,True,Never,3.7,194,6.8,40.3,True,4471,52.1,0 +4173,56,Female,146,107,149,65,68,88,103,5.5,19.2,76,174,Atypical Angina,False,0.8,False,Never,11.6,178,9.0,46.6,True,9061,62.5,0 +4174,51,Male,118,71,204,39,133,187,119,5.7,28.3,72,158,Asymptomatic,True,0.9,True,Current,5.6,97,9.4,43.0,True,5869,29.7,1 +4175,52,Male,136,90,198,27,127,213,129,6.3,31.3,89,143,Asymptomatic,False,1.3,False,Current,11.0,89,6.4,53.9,True,9585,75.5,1 +4176,43,Male,140,96,171,34,100,182,174,7.4,42.3,94,165,Non-Anginal Pain,True,2.6,False,Never,4.5,24,6.4,46.7,False,7019,32.9,1 +4177,47,Female,129,83,188,60,90,196,98,5.4,24.5,76,183,Asymptomatic,False,1.5,False,Never,12.3,238,8.1,48.7,True,5781,48.1,0 +4178,61,Male,147,90,196,54,92,212,117,5.3,24.6,86,189,Non-Anginal Pain,True,1.9,False,Never,10.0,175,5.6,52.6,True,5220,67.5,0 +4179,50,Female,102,56,189,64,104,69,104,5.1,29.2,93,155,Atypical Angina,False,0.7,False,Former,9.8,129,5.9,48.2,False,3320,53.7,1 +4180,49,Female,118,73,168,58,85,107,67,4.2,23.9,77,168,Asymptomatic,True,1.1,False,Never,5.3,155,7.6,23.8,False,3096,75.4,0 +4181,52,Female,131,72,174,61,89,58,121,5.8,23.2,75,177,Asymptomatic,False,0.7,False,Never,17.9,173,5.5,41.5,False,6448,56.1,0 +4182,55,Male,121,80,130,43,74,109,105,5.4,17.8,79,170,Asymptomatic,True,0.4,False,Never,7.1,138,5.1,57.5,True,3636,79.4,0 +4183,52,Female,127,74,218,46,135,127,101,5.4,27.6,92,189,Non-Anginal Pain,False,1.8,True,Never,2.7,84,6.7,45.0,False,4417,40.7,0 +4184,48,Female,128,88,240,72,134,122,113,5.8,21.4,76,176,Asymptomatic,False,0.1,False,Never,0.4,170,8.0,55.1,False,4550,59.4,0 +4185,48,Female,117,85,217,69,116,137,101,5.2,19.5,93,184,Asymptomatic,False,0.6,False,Never,0.8,93,7.3,85.2,False,2411,81.0,0 +4186,60,Male,133,95,216,69,119,169,86,5.0,22.3,66,174,Asymptomatic,False,0.0,False,Current,3.9,263,7.0,39.0,True,8193,52.7,0 +4187,50,Male,122,71,229,56,131,170,116,5.4,20.8,69,181,Non-Anginal Pain,False,0.2,False,Current,8.9,190,7.4,38.5,True,9154,63.3,0 +4188,51,Male,154,109,211,54,122,202,134,6.4,34.0,82,187,Non-Anginal Pain,False,1.4,True,Never,4.2,75,6.1,61.9,False,4796,61.6,1 +4189,45,Male,147,104,224,86,97,198,120,5.5,28.5,90,190,Asymptomatic,False,1.0,False,Never,5.6,176,4.3,47.2,False,7086,66.1,0 +4190,53,Male,122,78,200,50,114,160,96,4.9,24.6,87,185,Atypical Angina,False,1.1,False,Never,2.2,200,5.5,45.7,True,9893,47.8,0 +4191,61,Male,123,84,189,45,121,168,155,6.5,22.4,80,180,Typical Angina,False,0.1,False,Never,14.8,129,8.4,42.0,False,4369,66.4,0 +4192,30,Female,131,89,162,55,76,163,162,6.6,26.4,74,191,Asymptomatic,False,0.3,False,Never,2.3,130,8.2,55.3,True,10377,62.5,0 +4193,57,Female,141,97,219,38,144,195,113,5.5,38.0,94,161,Asymptomatic,True,1.8,False,Current,1.3,0,7.4,61.3,False,6957,67.6,1 +4194,62,Female,121,83,210,60,99,237,135,5.7,23.7,93,163,Asymptomatic,False,0.5,False,Never,8.1,68,6.7,76.4,False,5395,79.9,0 +4195,54,Male,126,79,145,47,81,91,112,5.6,24.1,80,161,Non-Anginal Pain,False,1.6,False,Never,9.5,95,8.4,77.1,False,8321,46.8,1 +4196,46,Female,112,75,162,55,107,53,122,6.1,33.1,89,188,Asymptomatic,False,1.6,False,Never,1.9,46,6.8,50.4,True,6578,50.3,0 +4197,67,Female,139,74,231,46,152,180,144,6.8,22.6,82,156,Typical Angina,False,1.8,False,Never,8.1,172,6.3,40.2,True,8969,34.0,1 +4198,67,Female,137,88,188,40,109,211,138,6.5,24.8,80,152,Non-Anginal Pain,False,0.7,False,Never,3.7,126,5.7,66.1,True,8845,56.5,1 +4199,42,Male,87,57,158,40,107,89,89,4.6,21.2,72,188,Typical Angina,False,0.2,True,Current,3.7,318,8.8,29.7,True,8748,53.0,0 +4200,60,Female,157,98,199,62,102,223,136,6.0,22.6,76,152,Non-Anginal Pain,False,0.4,False,Former,13.3,165,6.7,42.3,False,5545,43.9,0 +4201,57,Female,111,68,225,38,136,243,143,6.5,33.5,85,148,Atypical Angina,False,3.1,False,Never,5.8,57,7.3,63.6,False,6275,47.9,1 +4202,27,Male,100,60,163,45,77,241,105,5.6,27.0,91,205,Typical Angina,False,0.7,True,Never,10.5,85,5.1,48.7,False,3278,65.8,0 +4203,58,Male,131,79,134,48,66,71,122,5.8,16.8,78,167,Atypical Angina,True,1.0,False,Former,2.9,177,5.8,69.9,False,6917,83.1,0 +4204,36,Male,124,73,166,49,90,165,78,4.7,22.6,61,206,Non-Anginal Pain,False,0.8,False,Never,15.1,124,8.9,57.3,False,5034,61.6,0 +4205,54,Female,145,91,198,66,98,156,85,4.6,21.2,71,185,Asymptomatic,False,1.5,True,Never,7.1,133,5.8,81.5,False,5112,47.6,0 +4206,35,Female,129,69,181,62,93,145,129,5.9,21.3,81,186,Typical Angina,False,1.6,False,Never,1.3,113,7.4,65.3,False,4193,58.1,1 +4207,61,Male,130,86,221,39,132,202,90,5.1,25.6,81,155,Atypical Angina,True,1.4,False,Current,8.5,204,6.5,31.6,True,6814,43.3,1 +4208,85,Male,117,61,194,38,128,94,62,4.0,25.6,79,126,Asymptomatic,False,1.7,False,Never,2.4,72,6.5,38.9,True,5193,57.8,0 +4209,46,Female,101,75,156,38,106,73,91,4.8,21.6,76,169,Asymptomatic,False,1.2,False,Never,2.1,167,7.8,35.5,False,6024,54.9,0 +4210,42,Female,123,66,210,55,125,102,100,5.2,22.1,82,196,Atypical Angina,False,1.0,True,Never,0.4,233,4.2,63.1,True,5406,47.3,0 +4211,33,Female,118,77,232,86,120,136,118,5.7,29.9,77,202,Asymptomatic,False,0.9,False,Former,22.3,212,6.0,25.7,True,10337,79.6,0 +4212,41,Male,127,84,242,53,152,147,133,6.0,25.0,66,161,Non-Anginal Pain,False,1.3,True,Never,4.2,170,6.2,14.6,False,5876,38.0,1 +4213,68,Male,141,102,235,53,159,97,123,5.9,29.5,74,154,Atypical Angina,False,0.7,False,Former,3.9,162,8.1,63.2,False,4226,64.8,1 +4214,55,Male,123,84,182,60,77,208,162,6.5,28.1,74,177,Non-Anginal Pain,True,0.1,False,Former,9.4,211,6.7,28.5,True,9569,68.5,0 +4215,31,Male,124,82,222,52,143,157,108,5.4,21.5,79,210,Non-Anginal Pain,False,0.1,False,Former,2.4,160,4.4,65.8,False,7956,63.3,0 +4216,51,Male,125,78,213,48,136,170,117,5.9,31.2,84,168,Asymptomatic,False,3.6,True,Never,4.1,136,8.0,37.0,True,6702,63.7,0 +4217,49,Female,132,96,158,56,46,196,73,5.1,26.9,84,160,Asymptomatic,False,0.1,True,Never,5.0,91,7.4,28.1,False,3637,62.6,0 +4218,62,Male,126,84,173,47,109,110,111,5.1,17.0,54,168,Typical Angina,False,0.5,False,Never,6.0,237,5.0,34.9,True,10964,55.3,0 +4219,47,Male,119,69,170,53,85,88,117,5.2,24.0,72,169,Atypical Angina,False,2.2,False,Never,9.6,134,6.2,31.1,True,9294,80.6,1 +4220,59,Male,148,86,144,52,68,141,111,5.5,33.7,71,161,Asymptomatic,False,0.1,False,Never,11.4,164,5.8,59.2,True,6838,71.0,1 +4221,53,Male,147,93,237,52,139,210,152,6.0,34.8,89,167,Typical Angina,True,1.5,True,Never,4.2,130,6.0,58.1,False,4451,59.4,1 +4222,32,Female,134,89,168,50,98,110,143,6.4,25.5,74,190,Non-Anginal Pain,True,1.0,True,Never,1.8,61,7.8,57.0,False,6981,64.6,0 +4223,40,Male,126,92,186,27,126,155,84,4.7,24.9,84,175,Atypical Angina,False,1.4,False,Never,14.4,87,5.7,68.1,False,5131,37.4,1 +4224,71,Male,131,87,171,51,93,123,95,5.0,23.3,69,160,Non-Anginal Pain,False,1.4,False,Never,8.4,35,6.5,31.7,False,3117,48.4,0 +4225,59,Male,111,71,227,41,134,226,125,5.9,26.8,83,181,Asymptomatic,False,0.3,False,Never,5.9,146,6.9,26.5,True,8317,59.2,0 +4226,56,Male,138,70,125,46,63,74,103,5.0,18.6,86,178,Asymptomatic,False,0.3,False,Former,5.2,4,8.0,43.9,False,4052,74.2,0 +4227,54,Female,147,96,159,42,88,100,118,6.2,28.0,84,183,Atypical Angina,False,0.8,False,Never,0.1,133,6.7,43.9,True,6232,58.7,0 +4228,33,Female,95,58,173,59,88,107,134,5.5,25.5,83,190,Asymptomatic,False,1.1,True,Former,4.8,158,7.2,27.0,True,8392,62.6,0 +4229,50,Male,140,78,190,57,99,192,131,6.9,24.1,103,171,Non-Anginal Pain,False,1.0,False,Current,6.5,68,8.0,70.3,False,7017,47.6,0 +4230,60,Male,117,64,147,50,69,35,110,5.3,22.1,81,177,Asymptomatic,False,0.2,False,Never,4.7,214,9.0,36.9,True,7684,81.2,0 +4231,64,Male,144,95,144,38,84,163,101,5.1,22.2,82,156,Asymptomatic,False,1.3,False,Former,2.5,48,7.3,40.0,False,849,56.0,0 +4232,68,Male,117,82,189,61,99,159,148,6.6,24.0,91,147,Asymptomatic,False,1.4,False,Former,5.2,206,8.9,43.8,True,6643,76.6,0 +4233,59,Female,130,82,139,47,71,93,117,5.7,20.5,66,161,Non-Anginal Pain,False,1.9,False,Never,4.7,125,8.6,38.9,False,5353,61.8,0 +4234,62,Male,112,71,152,67,97,40,102,5.3,20.5,90,155,Non-Anginal Pain,True,2.0,False,Never,2.3,170,7.0,23.2,True,6816,59.2,0 +4235,47,Female,131,79,192,50,92,212,120,5.9,24.3,86,197,Atypical Angina,False,0.1,True,Never,6.3,98,7.1,27.6,False,4268,43.5,0 +4236,73,Male,139,85,155,31,109,91,130,5.9,27.3,106,131,Asymptomatic,False,0.3,False,Never,6.2,101,8.1,46.8,False,6129,47.8,0 +4237,42,Female,108,80,137,73,53,61,122,5.8,26.7,85,181,Asymptomatic,False,0.8,False,Never,1.2,103,7.3,43.2,True,6357,59.9,0 +4238,59,Female,114,64,200,60,99,154,118,6.4,23.9,87,162,Non-Anginal Pain,False,1.8,False,Never,6.1,79,6.5,68.5,False,4442,63.2,0 +4239,51,Female,124,76,189,71,94,185,130,6.4,25.3,88,148,Asymptomatic,False,0.0,False,Never,5.8,130,6.9,37.7,False,4271,47.0,0 +4240,71,Male,147,81,157,56,69,143,134,6.4,31.4,71,153,Typical Angina,False,0.8,False,Never,3.6,158,5.7,26.2,True,8407,100.0,0 +4241,53,Male,132,80,236,52,137,208,89,4.7,29.3,90,148,Asymptomatic,False,1.3,False,Never,10.1,82,8.1,59.5,False,2943,43.4,1 +4242,64,Male,157,107,238,78,157,111,77,4.9,23.2,85,154,Asymptomatic,False,1.2,True,Never,16.6,103,6.7,70.7,False,5886,49.0,0 +4243,45,Male,103,70,149,49,59,251,136,5.9,26.5,72,163,Asymptomatic,False,0.5,False,Never,3.1,108,8.1,48.3,False,3726,54.3,0 +4244,70,Female,133,95,225,51,120,194,131,5.6,24.8,91,142,Asymptomatic,False,0.8,False,Current,0.7,142,8.7,60.7,True,6352,55.2,1 +4245,67,Male,150,97,209,50,115,254,135,5.8,28.7,84,138,Asymptomatic,True,1.0,False,Former,2.6,135,6.0,63.2,True,7152,53.5,1 +4246,75,Male,136,87,190,53,100,148,107,5.5,21.2,85,159,Non-Anginal Pain,False,0.1,False,Current,4.1,20,6.0,62.8,False,3116,59.2,0 +4247,51,Male,132,88,123,36,49,168,99,5.2,28.9,90,172,Non-Anginal Pain,False,0.1,True,Never,4.2,155,8.3,58.8,False,6141,61.4,0 +4248,66,Male,131,88,227,53,123,216,138,6.2,24.4,77,127,Typical Angina,False,1.2,False,Former,17.2,68,5.3,48.2,False,6898,52.0,1 +4249,64,Female,130,80,171,50,87,176,132,6.1,19.8,72,137,Atypical Angina,False,3.6,False,Current,3.0,187,7.6,45.2,True,5897,80.2,1 +4250,70,Female,125,83,168,28,117,88,94,5.1,19.7,92,128,Non-Anginal Pain,True,1.0,False,Current,10.0,36,7.3,65.2,False,4938,61.8,1 +4251,64,Male,127,84,178,58,104,125,130,6.2,24.5,67,155,Asymptomatic,False,1.1,False,Never,7.6,229,7.9,58.1,True,7155,76.9,0 +4252,57,Female,145,91,205,53,140,65,121,6.3,25.0,93,160,Asymptomatic,False,0.5,False,Never,3.3,63,8.1,73.3,False,5339,66.7,0 +4253,70,Female,132,93,140,65,63,55,148,7.0,16.9,77,136,Asymptomatic,False,0.5,True,Former,2.4,141,7.1,29.0,True,10413,34.1,0 +4254,20,Male,134,86,151,62,91,73,94,5.0,26.2,81,195,Asymptomatic,False,1.2,True,Never,8.9,132,6.8,72.5,False,6169,58.6,0 +4255,51,Male,114,64,172,51,97,78,108,5.6,19.8,83,159,Non-Anginal Pain,True,3.1,False,Never,5.0,62,8.9,35.2,True,4808,39.3,1 +4256,44,Female,138,88,183,60,117,52,116,5.2,30.9,78,186,Typical Angina,False,0.9,False,Former,1.1,234,5.1,49.7,False,7120,84.4,0 +4257,70,Female,126,86,198,58,117,164,123,6.3,29.6,87,139,Non-Anginal Pain,False,0.2,False,Never,0.1,124,8.5,53.3,True,9435,73.2,0 +4258,52,Female,112,58,162,87,43,138,75,4.3,18.6,71,188,Typical Angina,False,1.2,False,Never,0.3,254,6.2,23.8,False,8179,100.0,0 +4259,65,Female,115,63,255,67,118,247,127,5.5,30.6,78,140,Atypical Angina,False,0.2,False,Never,0.7,164,5.9,30.5,False,4794,55.7,1 +4260,57,Female,139,95,210,62,112,195,126,6.3,27.0,73,141,Typical Angina,True,0.6,False,Former,7.5,176,6.1,63.5,False,4300,48.5,1 +4261,69,Male,143,100,124,49,56,157,119,5.6,25.4,82,138,Non-Anginal Pain,False,1.7,False,Never,11.0,5,8.7,72.0,True,5146,59.3,0 +4262,66,Male,127,89,215,49,124,176,120,5.6,17.6,69,139,Typical Angina,True,0.3,False,Never,9.8,156,7.8,51.3,False,2422,25.0,1 +4263,55,Male,140,95,218,79,109,143,142,7.4,32.7,77,149,Non-Anginal Pain,True,1.9,True,Never,1.6,61,5.9,87.4,True,6639,49.1,1 +4264,62,Female,120,65,275,47,175,253,89,5.6,28.4,79,152,Atypical Angina,False,5.2,False,Current,7.7,171,8.2,59.0,True,6018,38.3,1 +4265,55,Female,131,76,215,75,105,157,135,6.2,31.5,92,142,Typical Angina,False,2.0,False,Never,3.6,92,4.7,37.3,False,7685,70.6,1 +4266,49,Female,122,91,215,53,113,244,128,5.8,22.0,88,166,Asymptomatic,True,0.8,False,Never,1.9,100,6.3,38.6,False,5561,35.7,1 +4267,62,Female,155,93,173,48,91,168,84,5.1,24.7,82,140,Typical Angina,False,0.7,False,Never,6.9,58,8.3,34.5,False,4360,69.9,0 +4268,75,Male,157,94,174,45,107,143,100,5.4,31.0,82,136,Asymptomatic,False,1.0,False,Never,6.2,150,5.8,66.7,True,8703,51.7,1 +4269,66,Male,112,68,155,56,78,125,118,5.9,21.6,85,157,Asymptomatic,False,0.6,False,Former,9.8,59,6.3,50.4,False,2501,82.8,0 +4270,45,Female,144,93,172,57,77,165,184,7.2,36.0,86,200,Non-Anginal Pain,False,1.6,True,Current,3.3,89,6.5,48.9,False,5380,74.7,0 +4271,66,Female,130,91,190,54,108,131,171,6.8,23.8,76,141,Atypical Angina,False,1.4,False,Never,0.3,107,6.4,44.7,True,6634,71.8,0 +4272,45,Male,139,78,187,65,87,190,139,6.0,22.7,77,187,Asymptomatic,False,0.7,False,Former,7.8,177,6.3,27.0,False,6842,63.9,0 +4273,18,Male,133,80,208,68,129,162,117,5.5,27.0,71,205,Non-Anginal Pain,False,0.9,True,Never,6.9,171,6.4,52.3,False,6460,83.3,0 +4274,43,Female,124,70,155,73,69,126,104,5.2,21.3,56,194,Atypical Angina,False,0.8,True,Never,6.8,283,7.9,51.4,True,6558,75.7,0 +4275,57,Male,129,96,204,57,119,106,82,5.1,20.0,84,159,Asymptomatic,False,1.8,False,Current,3.0,190,8.9,61.1,True,10730,39.2,0 +4276,36,Female,137,95,164,29,86,162,145,5.8,28.7,89,171,Non-Anginal Pain,False,0.3,False,Former,18.0,142,7.1,49.9,True,7339,63.0,0 +4277,57,Female,142,91,189,29,128,98,139,6.2,35.8,72,166,Asymptomatic,False,2.5,True,Former,1.6,164,7.8,51.3,True,7159,65.1,1 +4278,70,Male,144,87,186,71,99,94,107,5.7,19.6,79,132,Non-Anginal Pain,False,0.1,False,Never,1.6,189,5.4,63.4,False,2811,67.9,1 +4279,54,Female,133,92,209,81,108,136,113,5.4,18.6,80,172,Typical Angina,False,0.6,False,Never,1.7,194,6.0,50.0,True,10693,69.1,0 +4280,61,Male,120,81,153,37,91,88,118,5.9,24.8,86,154,Asymptomatic,False,0.9,False,Current,4.8,0,7.9,60.5,False,5583,54.0,0 +4281,51,Male,125,82,227,62,136,179,81,5.0,19.6,96,156,Atypical Angina,False,1.5,False,Never,10.2,83,7.9,54.4,False,6005,41.0,0 +4282,24,Male,103,64,221,65,129,168,129,5.9,28.6,87,207,Asymptomatic,False,2.0,False,Current,6.0,212,4.8,39.0,True,9786,62.0,0 +4283,58,Female,106,60,223,57,130,191,163,6.8,24.0,81,170,Typical Angina,False,1.0,False,Never,1.8,144,6.2,27.8,True,6054,60.0,0 +4284,45,Male,114,75,195,35,115,202,137,6.1,21.6,89,167,Non-Anginal Pain,True,2.1,False,Never,19.3,115,7.5,41.8,True,7020,35.8,1 +4285,59,Male,125,72,196,63,110,125,131,6.7,31.0,94,161,Non-Anginal Pain,False,0.1,False,Never,4.3,97,7.2,70.1,True,5510,69.7,0 +4286,29,Male,135,80,168,40,74,232,95,4.8,24.3,66,182,Non-Anginal Pain,False,0.6,False,Never,28.4,141,6.7,31.9,False,9040,68.1,0 +4287,57,Male,153,99,215,47,150,120,151,6.4,33.8,87,148,Asymptomatic,False,1.3,False,Former,8.7,81,9.5,39.1,False,5269,59.9,1 +4288,62,Female,122,68,221,34,142,176,153,6.2,26.5,76,169,Typical Angina,True,2.0,True,Current,3.6,68,6.7,57.3,False,5689,60.3,1 +4289,73,Male,148,79,131,52,53,111,119,5.5,27.8,89,163,Asymptomatic,False,1.4,True,Never,3.6,108,7.5,54.1,False,5790,54.8,0 +4290,58,Male,140,90,149,43,100,120,121,5.5,26.6,73,163,Asymptomatic,True,0.8,True,Never,3.0,131,6.9,50.1,False,4385,43.5,0 +4291,38,Female,127,77,190,76,76,188,105,5.5,23.5,73,210,Asymptomatic,False,0.6,True,Never,4.5,256,6.3,49.6,True,9508,64.0,0 +4292,55,Male,132,80,140,50,73,139,127,6.0,25.1,89,162,Atypical Angina,False,1.6,False,Never,8.1,127,6.8,65.6,False,8440,40.9,0 +4293,30,Female,121,84,218,47,139,191,72,4.5,32.9,78,185,Non-Anginal Pain,False,1.1,False,Never,0.8,154,8.5,53.0,False,6097,25.9,0 +4294,30,Female,114,78,200,61,101,229,128,5.5,24.8,69,198,Atypical Angina,False,0.5,True,Current,2.9,189,8.3,48.6,True,6430,52.6,0 +4295,58,Male,136,81,206,55,126,140,118,5.7,28.1,78,163,Atypical Angina,True,1.1,False,Never,17.2,101,9.1,63.9,False,3688,52.8,1 +4296,62,Male,134,78,191,60,108,124,156,7.3,34.8,72,154,Asymptomatic,False,0.5,False,Never,3.0,114,7.7,37.9,False,2893,60.1,0 +4297,58,Male,121,77,257,41,161,272,113,5.7,30.9,83,142,Atypical Angina,False,0.4,False,Former,8.9,0,5.6,32.3,False,4339,31.2,1 +4298,71,Male,125,78,185,41,121,155,154,7.0,27.4,74,139,Non-Anginal Pain,True,3.1,False,Former,11.6,192,9.1,35.3,False,4404,66.0,1 +4299,65,Female,122,81,214,68,122,101,105,5.1,23.1,78,140,Atypical Angina,True,2.6,False,Never,3.9,284,7.1,31.1,True,5036,100.0,1 +4300,62,Male,136,91,216,47,120,237,112,5.7,23.2,76,155,Atypical Angina,False,0.2,False,Former,4.8,37,7.2,38.8,True,10241,41.5,0 +4301,34,Male,138,80,205,39,144,85,123,5.4,29.7,84,210,Non-Anginal Pain,False,0.6,False,Former,8.6,220,5.2,38.4,True,10480,48.0,0 +4302,46,Male,113,71,206,57,110,196,130,6.4,23.7,91,171,Atypical Angina,False,0.3,True,Never,7.0,62,8.1,83.4,False,2809,56.1,0 +4303,57,Male,134,84,176,43,126,53,145,6.4,25.3,92,143,Asymptomatic,True,1.3,True,Never,3.3,51,7.1,52.1,False,6237,41.8,1 +4304,36,Female,112,68,184,58,101,151,130,6.1,21.2,63,203,Non-Anginal Pain,False,0.2,False,Former,3.0,104,7.0,19.2,False,2537,73.1,0 +4305,39,Female,102,55,185,65,105,114,144,6.4,26.9,93,180,Non-Anginal Pain,True,0.4,False,Former,11.5,84,7.1,19.8,True,9553,43.6,0 +4306,35,Male,92,59,192,51,104,148,79,4.6,20.8,69,187,Non-Anginal Pain,False,0.3,False,Never,6.9,152,7.0,27.5,False,6960,24.4,0 +4307,46,Female,100,57,189,70,114,101,106,5.2,20.4,68,154,Typical Angina,False,0.4,True,Never,0.1,106,7.2,33.4,False,3752,77.3,0 +4308,57,Female,130,83,154,52,99,35,163,6.8,24.1,76,162,Atypical Angina,False,1.0,True,Never,0.3,100,7.5,61.1,False,1801,78.3,0 +4309,70,Female,133,88,185,50,121,112,110,5.3,27.7,93,132,Atypical Angina,False,0.6,False,Current,0.6,172,6.8,71.3,True,6443,60.1,1 +4310,55,Male,121,75,141,40,83,151,118,5.6,20.0,89,162,Asymptomatic,False,4.1,False,Former,7.2,110,7.1,39.2,True,7627,57.7,1 +4311,50,Male,127,81,210,71,96,179,109,5.2,31.6,78,190,Typical Angina,True,1.6,True,Never,3.2,202,6.8,34.5,True,5377,77.8,0 +4312,41,Male,128,86,158,59,71,218,114,6.0,19.8,83,179,Asymptomatic,False,0.1,True,Never,7.7,161,5.2,28.4,True,10245,72.1,0 +4313,72,Male,134,104,193,42,101,240,154,7.0,26.1,75,144,Typical Angina,False,0.2,False,Never,16.8,200,9.4,62.7,True,6945,35.0,0 +4314,58,Female,120,98,187,55,100,179,60,4.1,24.5,74,144,Asymptomatic,False,0.2,False,Never,10.2,57,6.9,55.5,False,5821,45.3,0 +4315,64,Female,120,72,187,82,75,146,85,4.6,22.1,91,152,Asymptomatic,False,0.3,False,Never,25.7,84,8.6,51.1,False,3055,78.3,0 +4316,41,Male,111,66,173,75,62,214,88,4.8,15.0,76,194,Atypical Angina,False,2.8,False,Never,9.2,317,8.5,35.9,True,8241,78.1,0 +4317,38,Female,126,72,163,46,89,135,138,6.5,31.1,81,164,Atypical Angina,False,1.1,True,Former,2.1,136,7.9,46.9,False,2679,81.0,0 +4318,58,Male,88,58,128,53,40,167,112,5.4,22.1,74,161,Asymptomatic,False,0.6,True,Never,3.3,151,8.6,28.3,False,5001,96.2,0 +4319,56,Female,108,59,197,64,105,155,152,6.3,27.6,85,175,Atypical Angina,False,0.5,False,Never,6.4,270,6.4,62.5,True,8461,68.2,0 +4320,71,Female,118,69,241,50,162,164,121,6.3,23.6,90,152,Asymptomatic,True,1.3,True,Former,0.2,100,7.3,50.7,False,5789,46.5,1 +4321,46,Female,124,69,180,76,90,125,99,5.1,23.1,93,180,Asymptomatic,False,0.3,True,Former,11.3,125,6.1,50.3,False,7678,51.6,0 +4322,52,Male,137,92,217,51,125,182,142,6.2,24.3,98,179,Typical Angina,False,0.5,False,Never,3.7,177,7.7,44.9,True,9884,50.1,0 +4323,48,Male,131,81,163,52,90,139,107,5.1,28.7,65,169,Asymptomatic,False,0.3,True,Former,2.0,126,6.6,34.9,False,7135,50.1,0 +4324,68,Male,149,94,218,46,146,149,136,6.4,26.4,84,129,Asymptomatic,True,0.4,False,Current,3.2,94,6.4,49.3,False,500,37.4,1 +4325,44,Male,125,77,225,40,126,258,157,7.4,27.0,83,169,Atypical Angina,True,0.2,True,Never,5.1,146,3.2,38.3,False,4834,57.6,1 +4326,65,Female,146,88,255,61,183,82,115,5.7,26.4,95,142,Typical Angina,True,2.1,False,Former,8.8,178,8.4,51.2,True,7147,95.2,1 +4327,54,Female,116,74,245,75,117,227,156,6.2,29.8,72,175,Atypical Angina,True,0.4,False,Never,6.8,263,8.3,42.0,True,5950,41.3,1 +4328,62,Male,135,67,200,51,109,183,126,6.4,31.1,75,133,Typical Angina,False,1.9,False,Never,4.0,0,7.4,65.4,False,4198,65.9,1 +4329,72,Female,116,59,157,48,83,165,123,5.8,24.4,73,163,Asymptomatic,True,0.9,False,Never,1.0,188,9.1,42.1,True,10048,59.6,0 +4330,61,Female,137,77,244,70,137,168,132,6.1,30.1,70,157,Asymptomatic,False,0.9,False,Never,4.7,78,8.6,30.6,False,4806,75.6,1 +4331,80,Female,117,78,170,45,92,166,154,6.9,24.0,78,163,Asymptomatic,False,0.2,False,Never,7.6,139,5.9,47.6,False,8058,66.3,0 +4332,59,Female,123,77,225,56,128,189,125,5.4,22.8,96,163,Typical Angina,False,2.9,False,Former,2.5,190,8.0,63.8,True,8100,48.8,0 +4333,31,Female,137,90,205,44,131,176,146,6.7,25.8,84,178,Asymptomatic,False,0.6,False,Former,10.3,24,5.8,60.5,False,4907,49.3,1 +4334,60,Male,120,66,145,43,85,135,155,6.7,23.1,86,146,Typical Angina,True,1.5,False,Current,8.0,80,7.4,34.3,False,1252,72.3,1 +4335,52,Male,114,66,213,74,111,173,146,6.1,17.9,75,184,Non-Anginal Pain,False,0.8,True,Former,9.8,183,8.5,64.4,False,5591,76.4,0 +4336,43,Male,115,70,194,61,114,117,104,5.5,19.4,78,189,Non-Anginal Pain,False,0.3,False,Never,6.9,122,8.9,13.5,True,8414,62.6,0 +4337,52,Male,125,82,111,56,35,124,89,4.9,21.5,83,183,Atypical Angina,False,0.5,True,Former,2.4,238,6.5,47.4,True,8651,84.6,0 +4338,43,Male,121,78,155,50,84,179,152,7.0,27.1,76,193,Asymptomatic,False,0.3,False,Never,2.7,111,8.1,63.2,False,4066,64.5,0 +4339,60,Female,146,89,191,53,118,158,148,6.4,28.7,90,183,Atypical Angina,False,0.2,False,Never,0.9,64,6.3,48.3,True,6296,55.2,0 +4340,58,Female,146,96,190,57,79,227,147,6.2,31.9,87,182,Atypical Angina,False,0.8,False,Never,13.7,92,8.0,50.5,False,4385,71.9,0 +4341,66,Male,137,84,199,49,137,134,130,5.1,25.1,98,140,Asymptomatic,False,1.3,False,Never,5.3,13,5.5,56.1,False,4769,44.2,1 +4342,63,Female,106,60,265,78,166,91,148,6.5,22.7,75,181,Atypical Angina,False,0.4,False,Never,9.6,240,7.5,61.0,True,8437,56.5,0 +4343,63,Female,149,82,236,57,147,178,130,6.4,25.7,85,144,Atypical Angina,True,3.8,False,Never,6.0,124,5.9,46.4,False,8682,47.4,1 +4344,36,Male,105,65,200,68,121,35,92,4.7,17.8,75,198,Atypical Angina,True,0.1,True,Former,13.3,107,7.1,19.0,False,6630,75.9,0 +4345,51,Female,121,65,209,41,130,173,94,5.0,27.5,75,188,Asymptomatic,True,0.1,False,Current,2.6,151,8.0,68.1,False,7378,55.7,0 +4346,29,Male,121,78,205,50,116,184,106,5.7,27.6,75,191,Asymptomatic,False,0.4,False,Former,23.8,197,6.5,58.9,True,8992,80.4,0 +4347,62,Female,123,74,209,63,128,114,118,5.0,22.4,73,151,Atypical Angina,False,1.1,True,Never,6.7,110,5.7,66.5,False,2268,60.2,0 +4348,54,Male,140,80,153,58,53,157,82,5.2,23.2,86,189,Asymptomatic,False,0.8,True,Never,11.3,85,6.3,58.1,True,7993,54.2,0 +4349,58,Female,155,99,161,65,95,54,126,5.6,23.5,76,153,Asymptomatic,False,2.0,True,Never,7.2,174,6.6,45.1,False,7331,59.2,1 +4350,53,Female,144,98,218,58,153,57,116,5.2,24.8,82,178,Asymptomatic,False,1.5,False,Current,0.8,159,7.8,24.3,True,10814,65.8,0 +4351,58,Female,132,75,210,67,91,196,145,6.3,15.9,79,150,Non-Anginal Pain,False,0.6,False,Former,1.1,211,8.5,62.7,False,5484,50.8,0 +4352,28,Female,104,55,133,66,54,71,115,5.9,25.6,94,204,Atypical Angina,True,0.9,False,Former,1.1,20,6.8,36.2,True,3257,72.2,0 +4353,59,Male,123,65,221,44,142,137,144,6.5,22.8,79,133,Asymptomatic,False,1.6,False,Never,2.5,25,3.4,49.9,False,2701,50.2,1 +4354,77,Female,111,79,195,60,99,164,138,6.7,16.2,89,136,Asymptomatic,False,1.2,False,Former,0.8,57,7.7,68.6,False,4137,69.6,0 +4355,59,Female,121,77,216,65,94,247,123,6.0,22.9,95,185,Asymptomatic,False,0.1,False,Never,12.7,264,9.2,57.3,True,9251,58.0,0 +4356,48,Female,114,70,200,72,100,143,99,5.7,22.9,87,185,Non-Anginal Pain,False,0.4,False,Never,7.6,223,6.8,59.3,False,4496,63.2,0 +4357,72,Male,142,93,162,41,79,207,85,4.8,23.8,72,143,Atypical Angina,False,1.2,False,Never,3.2,177,7.2,65.8,True,8249,48.4,0 +4358,59,Female,135,91,174,70,71,168,119,5.9,25.2,76,181,Asymptomatic,False,0.7,False,Former,0.0,231,6.8,55.2,True,7260,52.4,0 +4359,59,Female,129,85,236,61,141,169,174,7.4,31.5,85,165,Asymptomatic,False,0.7,False,Current,2.9,27,7.4,45.0,False,4098,68.0,0 +4360,80,Female,132,92,210,74,124,114,117,5.5,28.5,76,134,Asymptomatic,False,0.1,False,Never,3.8,85,6.6,43.0,False,3467,60.0,0 +4361,60,Male,125,92,97,48,49,54,141,6.1,28.1,82,177,Non-Anginal Pain,False,0.4,False,Never,6.7,9,7.7,45.1,False,1505,57.7,0 +4362,46,Female,123,86,216,47,126,257,114,5.1,22.4,83,157,Asymptomatic,False,3.1,False,Current,16.4,217,8.8,45.0,True,8659,42.0,1 +4363,43,Male,130,90,174,41,100,103,78,4.6,24.4,77,176,Atypical Angina,False,0.2,False,Former,8.5,49,9.1,30.2,False,5192,66.9,0 +4364,69,Female,158,100,203,26,144,198,116,5.6,32.5,92,129,Asymptomatic,False,1.1,False,Current,3.6,91,7.3,42.4,True,5479,64.8,1 +4365,33,Female,117,80,166,43,79,168,153,5.9,28.2,71,193,Asymptomatic,False,0.1,True,Never,0.8,79,8.6,42.7,False,5218,60.5,0 +4366,48,Female,123,68,161,51,93,113,118,5.9,23.2,79,181,Asymptomatic,False,0.5,False,Never,1.8,89,8.5,47.1,True,4791,58.9,0 +4367,45,Male,130,74,196,67,127,48,67,4.1,23.8,82,166,Atypical Angina,False,0.2,True,Never,5.0,32,7.6,45.9,False,8488,77.9,0 +4368,67,Male,99,68,221,67,109,198,106,5.4,26.4,68,158,Typical Angina,False,0.1,True,Never,9.1,173,5.7,31.9,True,9331,90.2,1 +4369,51,Male,134,86,146,34,81,156,110,5.5,23.7,85,140,Asymptomatic,True,0.8,False,Never,9.8,69,6.2,44.2,True,7846,50.7,1 +4370,56,Male,120,81,177,64,82,130,119,5.2,23.6,79,170,Asymptomatic,False,0.0,False,Former,2.3,148,8.0,48.8,True,7178,91.6,0 +4371,30,Male,107,67,191,49,99,114,107,5.7,28.9,87,203,Non-Anginal Pain,False,0.9,False,Former,6.6,150,5.3,35.1,False,4619,59.1,0 +4372,47,Male,134,75,196,54,104,206,72,4.9,24.3,84,178,Asymptomatic,False,0.5,False,Never,2.4,94,8.8,56.1,False,4536,62.9,0 +4373,54,Female,125,98,187,51,102,155,147,6.0,20.7,79,171,Asymptomatic,False,0.3,False,Current,8.5,137,6.7,54.1,True,3503,69.7,0 +4374,53,Male,132,89,198,53,94,257,127,5.7,28.8,76,152,Non-Anginal Pain,False,0.7,False,Former,8.1,205,7.3,36.3,False,6119,79.2,0 +4375,54,Female,150,92,246,63,112,326,122,5.9,25.1,76,151,Asymptomatic,False,1.8,False,Former,23.0,203,5.7,36.3,True,8183,61.5,1 +4376,62,Female,139,96,192,57,105,152,134,5.5,25.1,88,171,Non-Anginal Pain,False,0.3,False,Never,1.0,128,5.8,56.6,False,6190,33.0,0 +4377,57,Female,122,76,215,61,120,141,127,6.1,21.1,80,163,Asymptomatic,False,0.9,False,Never,3.8,46,5.5,43.6,False,7098,71.5,0 +4378,71,Male,121,78,199,66,103,126,111,5.8,24.4,83,162,Asymptomatic,False,0.3,False,Never,4.4,152,6.0,34.4,False,5185,49.9,0 +4379,47,Male,94,58,196,45,121,169,121,5.8,29.2,83,154,Asymptomatic,True,1.1,True,Current,3.7,139,8.5,0.0,False,3476,98.1,1 +4380,52,Male,104,68,197,56,87,278,95,5.2,20.9,82,169,Non-Anginal Pain,False,0.7,False,Never,13.0,122,6.5,68.9,False,3515,53.5,0 +4381,48,Female,116,75,172,58,105,44,110,6.1,20.9,85,186,Asymptomatic,False,0.8,False,Never,0.5,255,7.3,55.2,True,8469,76.1,0 +4382,74,Female,123,80,214,71,120,96,105,5.1,19.3,67,135,Atypical Angina,False,0.2,False,Never,9.8,53,6.5,56.0,False,6244,69.7,0 +4383,71,Female,136,91,187,67,89,168,90,4.9,20.4,81,128,Non-Anginal Pain,False,0.1,False,Former,0.4,90,8.6,45.9,False,3259,59.5,0 +4384,37,Female,111,69,186,43,117,109,119,5.9,27.2,87,197,Asymptomatic,False,0.7,False,Former,10.4,121,7.8,37.4,False,9238,48.6,0 +4385,37,Male,124,98,183,67,61,243,138,6.1,23.4,74,180,Non-Anginal Pain,False,0.8,True,Former,9.4,280,7.5,37.9,True,6053,81.5,0 +4386,66,Female,120,65,174,59,87,167,132,6.5,30.2,86,137,Asymptomatic,False,2.1,False,Never,0.4,84,6.4,20.3,False,2265,54.2,1 +4387,67,Female,117,82,214,55,139,93,117,6.0,23.4,70,174,Asymptomatic,False,1.3,False,Former,2.2,271,6.5,36.6,True,7959,34.7,0 +4388,61,Female,139,92,185,60,96,135,153,6.8,26.0,86,145,Asymptomatic,True,2.5,False,Former,2.0,101,5.2,51.5,False,4834,57.4,1 +4389,35,Male,124,86,198,39,109,203,118,5.9,31.0,82,210,Asymptomatic,False,2.0,False,Former,26.4,173,7.1,46.3,False,9243,55.4,0 +4390,47,Male,124,80,111,55,56,81,138,6.3,26.8,73,171,Non-Anginal Pain,False,0.3,False,Never,1.7,72,5.1,37.9,True,4780,60.8,0 +4391,46,Male,124,74,204,51,116,105,172,6.9,27.8,86,146,Atypical Angina,False,0.7,False,Never,2.5,140,6.1,61.9,False,3790,66.3,1 +4392,51,Male,152,101,252,59,167,148,125,6.3,27.2,85,185,Asymptomatic,True,2.2,False,Never,12.8,155,6.9,31.2,True,5510,56.9,1 +4393,52,Female,116,79,260,68,161,156,129,5.6,21.5,75,162,Asymptomatic,False,0.4,True,Never,4.7,159,6.5,88.2,True,7693,88.1,0 +4394,33,Male,121,82,200,66,103,165,108,5.8,31.0,81,176,Asymptomatic,False,0.3,False,Never,3.6,119,7.5,72.8,True,8303,29.8,0 +4395,45,Male,124,68,139,54,62,123,176,7.5,28.9,79,175,Non-Anginal Pain,False,1.5,False,Former,12.6,208,7.7,63.8,False,4261,93.5,0 +4396,47,Female,131,85,202,47,136,110,86,4.5,21.5,87,186,Asymptomatic,False,0.1,False,Never,0.7,151,7.0,67.3,False,5637,54.9,0 +4397,27,Male,116,73,170,59,89,127,67,4.0,19.3,67,208,Atypical Angina,False,1.6,False,Former,9.9,236,7.4,41.6,False,5569,54.7,0 +4398,76,Female,158,91,208,57,130,110,164,7.5,32.5,85,135,Non-Anginal Pain,True,1.6,False,Never,8.4,79,7.8,50.0,False,5310,52.6,1 +4399,76,Male,135,84,223,63,141,72,172,7.0,24.1,75,141,Asymptomatic,False,0.4,False,Never,5.0,223,6.3,33.2,True,5176,86.0,0 +4400,43,Female,110,60,215,57,124,142,116,6.1,21.8,81,157,Asymptomatic,False,1.2,True,Never,3.2,116,7.1,57.5,False,6799,52.2,1 +4401,47,Female,105,73,181,51,115,103,118,6.3,27.0,83,193,Asymptomatic,False,0.0,False,Never,0.1,212,9.2,56.5,True,6953,69.1,0 +4402,47,Female,108,73,178,64,96,109,125,5.9,21.8,83,189,Asymptomatic,False,0.1,False,Current,8.5,235,5.9,55.3,True,7685,63.3,0 +4403,44,Female,131,87,219,50,141,193,140,6.4,28.8,83,156,Asymptomatic,True,3.1,False,Former,7.2,144,7.2,61.0,True,5740,47.9,1 +4404,61,Male,126,89,153,34,86,162,151,6.6,29.2,82,165,Asymptomatic,False,1.2,True,Never,3.0,172,6.4,62.0,False,7256,51.0,1 +4405,40,Female,157,93,180,61,88,145,110,5.2,31.2,85,195,Asymptomatic,False,0.6,True,Never,2.5,220,7.0,41.2,True,6764,56.0,0 +4406,66,Female,144,92,191,68,95,125,143,6.5,23.4,80,156,Asymptomatic,False,0.8,False,Never,7.5,142,6.9,47.7,False,5775,71.0,0 +4407,62,Female,123,72,167,54,99,102,99,5.4,23.0,77,173,Asymptomatic,False,1.1,False,Former,6.8,122,6.4,34.8,True,5053,46.9,0 +4408,54,Male,117,77,140,53,64,74,75,4.7,21.8,68,167,Atypical Angina,False,0.1,False,Never,3.3,156,5.1,44.7,False,5035,69.9,0 +4409,79,Male,121,76,180,42,105,163,112,5.9,24.5,71,165,Non-Anginal Pain,False,3.0,False,Current,3.0,179,6.9,11.9,False,2445,50.3,0 +4410,65,Female,128,76,122,43,35,157,114,5.5,26.1,69,158,Asymptomatic,False,1.0,False,Never,0.2,138,8.5,59.3,False,2344,79.2,0 +4411,49,Male,137,89,191,59,88,194,142,6.2,24.8,97,164,Asymptomatic,False,2.0,False,Never,3.2,113,8.1,34.8,True,8142,33.7,0 +4412,51,Female,136,80,254,70,126,224,111,5.7,32.9,85,181,Non-Anginal Pain,False,0.5,False,Never,0.4,212,5.9,50.7,False,4104,63.9,0 +4413,69,Male,137,87,152,38,102,82,126,5.7,22.8,99,130,Non-Anginal Pain,True,0.2,True,Never,9.6,0,7.4,64.6,True,1596,43.4,1 +4414,44,Male,131,91,180,54,115,133,142,6.6,30.5,78,166,Atypical Angina,False,0.4,True,Never,3.8,251,7.3,58.9,True,9629,64.7,0 +4415,40,Male,120,88,208,57,117,166,106,6.1,23.1,76,201,Non-Anginal Pain,True,2.5,True,Former,1.8,183,7.1,31.6,False,8177,86.6,0 +4416,65,Male,146,89,153,49,93,98,102,4.7,17.0,67,150,Asymptomatic,False,0.1,False,Never,12.6,142,6.8,38.2,False,2651,54.9,0 +4417,64,Female,132,76,194,71,75,213,112,5.0,19.5,60,158,Asymptomatic,False,1.7,True,Never,28.6,179,9.0,14.4,False,6109,75.1,0 +4418,45,Male,147,100,217,42,153,162,113,5.9,29.1,87,161,Typical Angina,True,1.0,True,Never,15.2,114,5.0,51.0,False,4845,49.6,1 +4419,79,Male,133,93,175,39,110,101,110,4.7,18.2,85,141,Asymptomatic,False,2.9,True,Current,6.3,222,5.6,50.7,True,9939,70.2,1 +4420,49,Female,153,108,169,74,66,251,115,5.8,27.7,82,164,Asymptomatic,False,0.1,True,Never,13.2,195,5.9,36.9,True,6711,43.3,0 +4421,68,Female,144,84,190,58,95,159,172,7.7,29.7,78,125,Asymptomatic,False,0.4,False,Former,6.9,94,8.6,59.0,False,6670,63.4,1 +4422,60,Male,137,72,202,44,129,137,98,5.1,29.9,73,168,Non-Anginal Pain,True,1.4,False,Current,4.2,56,7.0,63.3,False,4199,72.6,0 +4423,44,Female,123,71,182,34,123,130,137,6.4,27.5,71,183,Asymptomatic,False,0.2,False,Current,0.5,302,6.9,18.3,True,11283,73.7,0 +4424,53,Female,135,82,165,44,90,108,102,5.0,22.7,71,179,Non-Anginal Pain,False,0.9,False,Never,2.3,101,7.9,21.7,False,4130,31.8,0 +4425,22,Female,115,69,141,76,49,95,149,7.0,21.1,76,203,Asymptomatic,True,1.4,True,Never,7.2,271,5.6,24.6,True,10355,76.3,0 +4426,67,Male,133,82,139,47,62,154,145,6.8,22.2,85,157,Asymptomatic,False,0.7,False,Never,6.0,99,8.6,68.7,True,6985,77.4,0 +4427,55,Female,113,81,213,55,117,227,108,5.4,28.3,102,132,Non-Anginal Pain,False,1.0,False,Former,6.5,172,7.4,53.9,False,8029,52.6,1 +4428,67,Female,135,83,201,51,114,126,130,5.8,17.5,87,153,Asymptomatic,False,2.0,False,Former,4.8,205,4.4,48.2,True,8762,59.2,0 +4429,44,Male,124,78,166,30,119,71,88,5.2,26.8,85,162,Asymptomatic,False,0.6,True,Current,2.0,217,7.8,47.5,True,6489,54.6,1 +4430,52,Male,113,68,130,49,60,94,143,6.0,24.9,79,167,Asymptomatic,False,0.6,True,Former,1.7,145,7.0,49.4,False,5979,72.6,0 +4431,36,Male,129,80,192,54,107,72,88,4.3,23.1,64,189,Asymptomatic,False,0.3,False,Current,1.7,159,7.6,51.9,False,4618,61.3,0 +4432,45,Female,148,95,192,59,102,198,120,5.6,28.4,79,192,Atypical Angina,False,0.3,False,Former,9.1,190,7.1,48.3,False,6419,70.0,0 +4433,64,Male,129,86,209,49,153,109,149,6.7,22.0,99,142,Atypical Angina,True,1.0,True,Current,9.1,160,6.0,62.1,True,8350,67.7,1 +4434,61,Female,110,60,198,56,123,166,131,5.7,22.0,76,182,Asymptomatic,True,0.4,False,Former,0.4,161,7.2,55.2,False,6484,62.8,0 +4435,72,Female,133,77,164,35,114,95,135,6.3,28.4,71,141,Non-Anginal Pain,False,0.2,False,Former,6.2,183,7.8,45.8,False,3974,63.1,1 +4436,68,Female,124,86,219,59,136,104,116,5.8,27.1,77,161,Non-Anginal Pain,False,1.0,False,Former,0.0,180,6.4,42.0,True,4299,55.3,0 +4437,57,Female,125,85,197,56,128,124,72,4.4,25.5,86,167,Asymptomatic,False,0.1,False,Current,2.3,134,6.8,62.5,False,6884,70.2,0 +4438,22,Male,119,77,113,56,35,71,114,5.7,25.0,80,206,Non-Anginal Pain,False,1.7,True,Never,2.9,203,6.6,71.4,False,3638,73.4,0 +4439,73,Male,145,89,181,38,118,93,121,5.7,20.2,91,122,Typical Angina,False,0.8,True,Current,5.4,46,7.4,72.1,False,4391,62.2,1 +4440,57,Male,123,76,192,32,135,136,96,5.3,25.3,89,133,Non-Anginal Pain,False,1.1,False,Never,6.4,91,6.8,26.1,False,4090,33.3,1 +4441,90,Female,128,85,234,77,109,206,139,6.3,18.9,70,133,Asymptomatic,False,0.2,True,Never,11.1,92,8.0,30.2,False,2896,48.4,0 +4442,79,Female,137,86,134,58,61,128,140,6.7,28.2,91,125,Asymptomatic,False,0.4,False,Never,0.5,0,5.3,74.0,False,5298,93.0,0 +4443,63,Male,131,82,184,46,100,202,119,5.8,19.8,64,140,Asymptomatic,False,1.1,False,Never,2.1,169,8.8,50.7,True,3689,78.0,1 +4444,58,Female,142,93,256,79,136,185,117,5.7,32.5,89,173,Non-Anginal Pain,True,1.0,False,Current,9.5,102,7.2,79.5,False,6873,51.1,1 +4445,51,Female,124,84,153,48,93,99,124,5.9,15.0,73,148,Asymptomatic,False,0.4,False,Former,0.1,97,7.9,45.4,False,5605,41.5,0 +4446,40,Male,96,67,181,51,110,107,117,6.1,22.9,91,182,Asymptomatic,False,0.9,True,Never,7.1,172,7.2,58.2,True,9221,57.4,0 +4447,46,Female,136,87,163,74,70,92,94,5.1,21.7,74,210,Atypical Angina,False,1.3,False,Former,4.0,269,7.4,73.2,False,7372,67.0,0 +4448,54,Male,116,82,189,62,105,111,138,6.2,30.2,83,147,Asymptomatic,False,0.6,False,Former,1.6,21,6.3,49.4,False,3667,64.4,0 +4449,41,Male,122,84,143,60,65,157,140,6.3,26.0,92,194,Asymptomatic,False,0.4,True,Never,3.0,218,7.2,48.9,False,8987,72.4,0 +4450,51,Male,120,81,207,72,89,143,120,5.3,18.8,83,165,Asymptomatic,False,2.4,True,Current,5.8,134,9.3,67.1,True,5301,63.9,1 +4451,68,Male,118,81,175,46,91,114,120,5.9,24.4,77,161,Typical Angina,True,0.8,False,Never,6.2,134,6.8,62.7,False,2123,77.5,1 +4452,41,Female,124,78,109,47,38,103,125,5.7,18.3,84,188,Non-Anginal Pain,True,0.1,False,Current,5.5,119,6.5,46.5,False,7249,48.5,0 +4453,52,Male,145,88,193,47,124,128,133,5.7,32.2,84,160,Asymptomatic,False,0.3,False,Never,7.3,0,6.3,44.4,False,2230,46.9,1 +4454,50,Female,134,85,145,42,79,131,100,5.5,25.4,71,161,Typical Angina,False,1.5,True,Former,0.1,185,7.9,61.8,False,8896,69.1,0 +4455,56,Male,137,85,144,42,67,149,98,5.3,16.7,64,179,Typical Angina,False,0.2,False,Never,1.8,208,7.6,43.1,True,7693,57.4,0 +4456,42,Male,124,74,156,43,61,213,141,6.7,30.1,85,157,Non-Anginal Pain,False,5.4,False,Former,3.3,88,7.3,44.0,False,6187,74.0,1 +4457,49,Female,139,85,188,61,90,225,152,6.4,27.2,79,162,Asymptomatic,False,0.2,True,Never,0.5,129,7.3,76.5,False,5140,62.1,0 +4458,24,Female,105,66,212,65,123,114,87,4.6,21.5,85,180,Asymptomatic,True,0.4,False,Never,4.0,90,6.4,64.7,False,5843,38.2,0 +4459,52,Female,128,80,222,65,128,184,60,4.3,25.1,67,187,Asymptomatic,True,0.9,True,Never,0.0,213,7.1,31.1,True,8882,53.1,0 +4460,63,Female,138,80,176,48,105,143,115,6.0,21.5,88,163,Asymptomatic,False,0.2,False,Never,1.3,0,6.9,52.5,False,5552,50.4,0 +4461,63,Male,145,95,190,52,112,108,101,5.5,21.2,82,160,Non-Anginal Pain,True,0.7,False,Current,3.4,88,6.1,77.9,False,5132,53.0,1 +4462,69,Female,134,85,222,56,126,158,132,5.7,26.6,81,153,Asymptomatic,True,0.3,True,Former,6.6,128,8.5,57.2,True,7211,48.5,1 +4463,41,Female,132,82,203,42,115,153,83,5.3,21.3,87,168,Atypical Angina,False,0.4,False,Former,9.7,133,4.4,74.4,True,7767,41.4,1 +4464,58,Female,133,77,168,82,63,81,106,5.3,26.7,77,176,Asymptomatic,False,0.2,False,Former,4.2,228,4.4,24.6,True,5614,62.9,0 +4465,56,Female,136,109,270,49,181,167,116,6.2,25.3,83,161,Atypical Angina,False,0.1,False,Current,3.0,165,6.7,60.7,False,6848,37.5,1 +4466,51,Male,141,86,165,32,90,252,153,6.8,27.5,80,177,Asymptomatic,False,1.1,False,Never,6.9,286,8.1,46.6,True,12513,51.0,0 +4467,59,Female,117,78,171,48,99,117,128,5.7,18.4,80,148,Asymptomatic,False,0.5,True,Former,1.8,191,6.2,76.6,False,7479,61.3,0 +4468,55,Female,118,73,218,77,107,152,112,6.0,26.8,74,172,Atypical Angina,False,0.1,True,Never,5.9,216,6.1,40.2,False,9131,54.1,0 +4469,42,Male,132,78,148,62,48,145,84,4.9,27.2,88,178,Asymptomatic,False,0.2,False,Never,8.6,258,7.5,52.4,True,9072,68.1,0 +4470,76,Male,130,74,221,51,129,182,93,5.2,21.2,83,124,Non-Anginal Pain,False,0.1,True,Former,5.0,135,7.3,41.4,True,6542,88.1,1 +4471,75,Female,141,103,191,80,90,122,130,5.8,19.6,73,167,Non-Anginal Pain,False,3.1,False,Former,0.8,180,7.1,34.6,True,4953,45.7,0 +4472,39,Female,116,69,203,66,132,71,149,6.0,23.4,75,171,Typical Angina,False,0.5,False,Former,2.8,240,5.6,45.1,False,6486,67.1,0 +4473,62,Female,124,82,167,63,85,145,99,5.1,25.1,89,153,Atypical Angina,False,0.5,False,Never,2.0,111,5.0,71.5,False,5153,67.8,0 +4474,46,Female,125,71,179,75,91,176,116,5.7,27.5,63,157,Atypical Angina,False,1.0,False,Never,1.6,196,4.4,46.9,True,6194,73.1,0 +4475,65,Female,96,68,208,83,99,179,109,4.9,27.5,92,149,Asymptomatic,False,1.1,False,Never,6.3,92,6.9,20.4,True,7684,68.9,0 +4476,44,Male,134,79,268,56,170,204,114,5.9,21.6,78,191,Atypical Angina,False,0.4,False,Never,21.1,109,6.4,52.5,False,4429,80.7,0 +4477,39,Female,119,75,191,79,110,107,121,5.6,23.8,70,167,Atypical Angina,False,0.4,False,Never,2.1,151,6.8,28.1,False,6309,59.3,0 +4478,61,Female,142,83,182,49,110,107,100,5.5,33.6,85,151,Typical Angina,False,1.1,True,Never,2.7,45,6.4,89.3,False,4524,28.0,0 +4479,48,Female,131,81,203,50,129,133,144,6.4,29.1,79,177,Atypical Angina,False,0.1,False,Never,17.1,134,6.9,56.2,False,3142,71.3,0 +4480,58,Female,127,72,191,61,107,169,155,6.7,21.1,75,152,Atypical Angina,True,0.3,True,Former,3.9,195,6.2,40.7,True,6682,52.4,1 +4481,49,Male,107,53,155,37,93,137,156,6.4,25.9,87,149,Atypical Angina,False,3.0,False,Never,5.1,0,5.8,41.7,False,6769,32.4,1 +4482,40,Female,141,93,196,55,106,141,100,4.7,29.2,81,197,Non-Anginal Pain,False,0.1,False,Never,15.8,115,6.8,62.1,False,5859,54.5,0 +4483,21,Male,97,56,143,61,35,221,90,5.0,21.7,75,204,Typical Angina,False,0.3,False,Never,7.1,157,7.3,41.4,True,13832,42.2,0 +4484,67,Male,123,78,156,56,66,165,123,6.0,31.0,96,161,Asymptomatic,False,0.4,False,Never,2.2,189,7.5,49.4,False,6841,48.4,0 +4485,59,Female,121,84,172,47,99,129,97,4.9,26.5,71,164,Atypical Angina,False,0.5,False,Former,2.2,187,7.4,31.2,False,6076,78.1,0 +4486,26,Male,112,74,198,66,105,123,103,5.2,26.5,83,195,Asymptomatic,False,0.8,False,Former,8.4,174,6.1,62.4,False,7603,71.7,0 +4487,40,Male,108,58,176,55,94,130,119,5.8,30.4,79,187,Asymptomatic,False,0.6,False,Never,3.0,243,7.7,38.4,True,8498,63.5,0 +4488,51,Female,147,104,191,51,126,138,115,5.7,28.0,102,187,Non-Anginal Pain,False,2.0,False,Current,12.7,85,5.7,76.7,False,3904,48.6,1 +4489,71,Female,150,110,221,34,135,228,133,6.2,27.4,102,125,Asymptomatic,False,1.9,False,Current,2.7,75,9.1,29.1,True,4687,36.0,1 +4490,63,Male,142,90,228,51,135,154,121,6.0,25.2,80,122,Asymptomatic,False,1.8,False,Current,1.6,50,7.5,60.2,False,3625,70.9,1 +4491,65,Female,137,88,187,54,112,122,119,5.5,26.2,75,142,Typical Angina,False,2.5,False,Former,11.6,49,6.1,51.1,False,4685,53.3,1 +4492,59,Female,127,78,262,35,188,181,102,5.6,27.6,72,169,Atypical Angina,True,0.7,False,Current,0.2,207,7.2,30.1,True,9328,54.9,1 +4493,54,Female,123,77,153,62,68,148,124,6.1,29.8,91,178,Non-Anginal Pain,False,0.2,False,Never,9.4,172,5.5,81.8,False,8368,93.7,0 +4494,56,Male,133,83,219,57,147,90,130,5.7,20.8,83,142,Non-Anginal Pain,False,1.6,False,Never,2.9,167,8.3,30.4,True,7429,57.4,1 +4495,60,Female,123,81,167,64,85,157,119,5.6,22.9,76,168,Typical Angina,False,0.6,False,Current,1.3,180,7.5,47.0,False,5735,47.5,0 +4496,46,Male,136,88,176,53,108,121,84,5.2,29.2,83,190,Typical Angina,False,0.5,True,Never,3.5,259,6.6,49.6,True,5458,79.4,0 +4497,27,Male,118,68,206,51,125,166,135,6.4,29.7,78,210,Typical Angina,False,1.0,False,Former,6.9,168,8.0,61.0,False,5693,85.7,0 +4498,59,Female,149,87,203,53,131,90,150,6.6,30.2,74,167,Non-Anginal Pain,True,1.0,False,Former,0.1,159,7.4,57.7,False,3528,74.8,0 +4499,52,Female,144,82,218,77,119,130,118,5.5,29.2,88,190,Non-Anginal Pain,False,1.0,False,Never,2.5,208,7.4,36.1,False,4350,68.7,0 +4500,35,Female,116,68,159,59,87,70,125,5.9,21.9,79,192,Atypical Angina,True,1.2,False,Never,1.2,164,8.2,54.1,False,5544,56.9,0 +4501,51,Female,113,57,151,46,77,76,108,5.8,24.7,76,185,Asymptomatic,False,0.2,True,Never,2.1,182,6.7,52.9,False,5048,59.8,0 +4502,69,Female,141,88,192,64,91,115,153,6.3,26.1,68,160,Atypical Angina,False,0.6,False,Never,1.0,191,5.6,58.6,False,6358,62.0,0 +4503,42,Male,143,91,194,47,118,176,148,7.0,26.8,72,163,Asymptomatic,False,0.8,False,Never,5.3,185,6.3,49.4,True,5357,56.6,0 +4504,50,Male,149,92,170,47,88,188,144,6.2,25.8,91,193,Asymptomatic,False,1.9,True,Never,5.8,113,9.1,23.1,True,7323,51.1,0 +4505,48,Female,137,69,209,51,120,145,117,5.7,28.6,64,158,Atypical Angina,True,4.6,False,Former,0.9,102,7.6,50.2,False,5256,65.1,1 +4506,43,Male,128,74,204,78,111,111,123,6.3,23.4,78,165,Asymptomatic,False,0.4,False,Never,11.0,110,6.3,45.7,False,5673,77.1,0 +4507,45,Male,107,78,139,56,62,158,116,5.8,24.1,87,187,Atypical Angina,False,0.4,False,Former,3.1,72,6.7,61.0,True,6158,51.9,0 +4508,51,Male,128,75,212,50,122,173,112,5.5,21.4,80,192,Asymptomatic,False,0.3,True,Never,4.2,166,5.9,34.3,False,1658,77.1,0 +4509,65,Male,115,68,277,73,186,122,156,6.2,24.7,74,144,Asymptomatic,False,0.1,False,Never,2.6,242,8.7,62.6,True,8857,85.9,1 +4510,55,Male,136,88,186,44,114,131,120,5.8,25.5,75,149,Non-Anginal Pain,False,0.5,False,Never,7.6,79,7.6,48.7,False,2365,65.4,0 +4511,65,Female,148,86,166,47,89,147,107,5.9,22.6,87,160,Atypical Angina,False,0.6,False,Never,0.8,123,7.6,96.3,True,4289,34.9,0 +4512,51,Male,120,76,151,63,55,173,119,5.9,29.8,89,160,Asymptomatic,False,0.3,False,Never,2.7,84,6.5,39.0,True,7524,64.1,0 +4513,55,Female,131,78,205,60,116,116,108,5.5,24.7,100,192,Asymptomatic,False,0.1,False,Never,1.9,103,8.4,74.4,True,4391,61.0,0 +4514,34,Female,112,73,161,63,81,137,113,5.9,20.5,69,205,Non-Anginal Pain,False,0.2,False,Never,7.8,206,8.4,44.3,False,8386,65.7,0 +4515,60,Female,140,85,288,61,201,135,84,5.1,22.4,82,172,Atypical Angina,False,0.2,False,Current,11.3,141,7.1,60.4,True,7035,41.1,0 +4516,66,Male,127,91,161,42,81,147,106,5.3,23.9,79,182,Typical Angina,True,2.0,False,Never,3.2,173,8.1,54.3,False,6027,63.9,0 +4517,55,Female,125,71,188,69,73,223,121,5.4,26.4,73,161,Atypical Angina,False,2.8,False,Never,16.7,307,6.6,53.5,True,9941,69.8,0 +4518,67,Male,124,76,236,54,146,183,140,6.4,25.2,74,148,Asymptomatic,False,2.2,True,Never,3.0,4,9.4,21.1,False,5403,80.4,1 +4519,69,Female,132,92,171,59,99,53,142,6.6,17.9,91,157,Atypical Angina,False,0.7,False,Never,1.1,152,6.4,61.4,False,5899,48.2,0 +4520,56,Male,113,81,160,64,60,173,125,6.2,16.3,80,168,Non-Anginal Pain,True,2.1,False,Never,2.4,124,9.1,8.7,True,4264,58.3,0 +4521,60,Male,141,87,246,48,152,252,117,6.0,35.4,86,133,Asymptomatic,True,0.6,False,Never,7.8,57,9.0,21.8,True,7680,32.9,1 +4522,79,Male,148,89,200,42,139,123,104,6.2,25.1,77,157,Asymptomatic,False,0.1,False,Never,11.7,66,7.3,53.5,True,5201,46.4,0 +4523,44,Female,130,87,256,55,141,266,103,5.8,25.2,77,177,Asymptomatic,True,1.5,False,Former,38.0,18,6.8,57.0,False,5606,51.3,1 +4524,59,Male,129,82,169,59,94,110,142,6.5,24.9,77,161,Asymptomatic,False,1.6,False,Never,7.0,36,6.4,26.3,False,2706,59.5,0 +4525,78,Male,124,70,184,47,92,231,145,6.9,22.9,92,156,Asymptomatic,False,0.1,False,Current,12.3,97,6.3,35.1,False,4430,46.9,0 +4526,46,Female,110,74,233,77,115,197,113,5.5,22.0,77,182,Non-Anginal Pain,False,1.6,True,Former,14.5,92,7.1,45.3,True,8265,35.6,0 +4527,79,Female,132,90,195,84,85,96,127,6.1,23.3,81,165,Non-Anginal Pain,False,1.0,False,Never,3.7,201,6.7,41.7,True,7394,70.7,0 +4528,56,Male,129,79,186,63,94,152,114,6.0,25.2,65,158,Asymptomatic,True,1.6,True,Former,13.8,248,6.9,15.9,True,9139,48.7,1 +4529,46,Female,116,67,189,69,90,129,95,4.9,20.6,72,201,Typical Angina,False,0.1,False,Former,4.6,144,7.1,25.0,True,9336,52.8,0 +4530,62,Female,137,82,187,34,120,162,91,4.7,20.6,79,156,Atypical Angina,False,0.2,False,Former,0.3,228,7.1,53.0,False,7537,55.3,0 +4531,65,Female,113,66,142,76,36,102,102,5.5,22.1,80,147,Non-Anginal Pain,False,0.6,False,Never,8.4,169,6.3,26.0,False,2566,86.3,0 +4532,49,Female,125,83,177,62,101,62,124,6.3,19.6,71,169,Atypical Angina,False,1.1,False,Never,3.9,223,7.6,69.5,False,10824,47.4,0 +4533,58,Male,129,90,189,40,105,185,131,5.9,28.8,78,167,Asymptomatic,False,2.6,False,Never,9.4,160,4.8,20.3,False,4196,27.7,1 +4534,50,Female,152,99,233,73,135,106,68,4.6,23.3,70,169,Asymptomatic,False,0.2,True,Current,12.7,183,7.8,59.9,True,8944,31.9,0 +4535,48,Male,126,68,205,58,122,135,94,5.5,21.1,74,167,Typical Angina,True,2.5,True,Never,2.4,136,7.7,48.1,False,7399,50.1,1 +4536,60,Male,132,79,213,48,131,190,136,5.9,26.3,84,154,Asymptomatic,False,3.6,False,Never,2.7,162,9.2,45.6,True,7709,61.5,0 +4537,67,Female,121,78,161,67,63,168,119,6.0,22.3,88,163,Asymptomatic,False,1.2,False,Never,0.6,166,6.7,47.6,False,5402,67.5,0 +4538,44,Female,117,83,165,77,61,118,85,4.9,18.2,81,177,Typical Angina,False,0.1,False,Never,5.6,190,5.7,49.0,True,6259,45.5,0 +4539,53,Male,134,89,225,47,133,202,92,5.5,32.6,78,165,Non-Anginal Pain,False,0.5,False,Current,3.9,217,7.0,19.7,True,7923,79.5,0 +4540,81,Male,122,69,175,64,101,106,93,4.8,15.8,78,135,Asymptomatic,False,0.2,False,Never,5.0,221,5.3,44.1,True,8402,74.0,0 +4541,62,Female,148,74,184,60,70,260,147,7.0,31.9,76,148,Typical Angina,True,0.7,False,Former,5.2,100,6.6,71.1,False,5022,74.5,1 +4542,36,Male,123,72,130,50,52,180,115,5.8,21.4,76,207,Asymptomatic,False,1.4,False,Never,6.9,118,8.6,44.7,False,7464,59.5,0 +4543,65,Female,137,79,200,33,130,236,168,6.8,22.8,106,116,Atypical Angina,True,1.9,False,Never,2.2,91,7.0,66.7,False,4748,37.0,1 +4544,40,Male,122,87,144,40,82,131,97,4.8,20.6,85,169,Atypical Angina,False,0.4,False,Never,12.8,134,7.0,60.1,True,7647,31.2,1 +4545,35,Male,118,81,227,80,102,221,129,6.1,27.6,87,210,Asymptomatic,False,0.5,False,Never,5.6,276,7.2,69.3,True,11543,53.7,0 +4546,54,Male,134,88,191,52,84,268,107,5.3,28.0,80,150,Atypical Angina,True,0.5,False,Never,2.0,169,7.9,51.9,False,6501,65.8,1 +4547,73,Female,130,89,180,70,65,190,104,5.7,22.0,87,149,Asymptomatic,False,0.0,False,Current,1.1,146,5.3,50.9,False,3966,43.9,0 +4548,67,Male,128,72,171,38,113,123,142,6.7,30.7,81,151,Asymptomatic,False,0.7,False,Former,3.8,84,7.2,36.9,False,2000,56.0,1 +4549,73,Male,138,87,152,54,65,184,119,5.7,23.6,80,125,Non-Anginal Pain,True,3.2,False,Former,3.4,197,5.7,85.4,False,6461,82.4,1 +4550,65,Male,128,88,194,49,131,69,83,4.3,27.0,93,147,Atypical Angina,True,0.4,True,Current,3.6,211,6.2,52.9,True,8635,61.9,1 +4551,50,Male,125,82,155,42,97,147,111,5.8,28.9,80,175,Asymptomatic,False,1.8,False,Never,11.7,175,7.5,26.9,True,5724,61.7,1 +4552,61,Female,114,65,238,56,145,172,106,5.3,32.3,60,177,Asymptomatic,False,3.5,True,Never,6.7,181,6.3,28.3,True,8407,61.8,0 +4553,78,Female,117,79,206,51,133,106,104,5.2,21.7,76,148,Typical Angina,True,1.4,False,Never,0.9,292,7.5,67.5,True,7627,77.7,0 +4554,81,Female,146,91,200,63,111,147,97,5.8,26.7,76,123,Typical Angina,True,1.1,False,Never,3.7,254,6.3,23.2,True,5436,75.5,1 +4555,35,Female,127,76,195,56,119,144,157,6.3,30.9,86,176,Asymptomatic,True,0.1,False,Never,2.5,21,4.8,30.7,False,4035,50.7,0 +4556,59,Female,128,76,224,78,106,135,100,5.3,21.2,74,164,Non-Anginal Pain,False,1.4,False,Never,0.6,198,7.3,70.6,False,3465,43.8,0 +4557,46,Female,109,60,202,62,105,125,101,5.2,20.2,88,176,Asymptomatic,False,0.5,True,Current,12.6,244,6.4,63.9,False,10826,72.5,0 +4558,67,Female,139,81,193,59,100,147,107,5.4,18.2,85,163,Asymptomatic,False,1.8,False,Never,12.4,176,6.0,30.3,True,6269,47.5,0 +4559,64,Male,133,78,176,45,90,198,132,6.1,28.8,88,145,Asymptomatic,True,1.8,True,Former,3.2,0,7.8,58.1,False,7181,51.3,1 +4560,55,Female,132,80,179,43,95,165,118,5.8,22.2,82,157,Non-Anginal Pain,True,3.4,True,Never,1.0,96,8.0,42.6,False,3372,77.8,1 +4561,46,Male,131,78,166,40,107,116,115,5.6,30.2,92,159,Non-Anginal Pain,True,1.7,False,Never,5.2,12,4.8,53.2,False,5189,79.7,1 +4562,60,Male,125,85,167,47,98,142,132,5.7,19.0,65,171,Atypical Angina,False,0.3,False,Never,5.4,129,6.4,36.0,True,5319,49.9,0 +4563,54,Female,131,83,154,54,83,115,99,5.0,26.0,65,169,Asymptomatic,True,0.1,False,Never,1.5,99,7.5,54.5,False,4244,85.6,0 +4564,57,Female,127,82,161,72,55,136,124,5.7,26.4,79,165,Asymptomatic,False,0.7,True,Former,0.4,238,7.0,57.1,True,7351,57.3,0 +4565,53,Female,129,88,205,70,103,168,109,4.8,20.8,73,192,Atypical Angina,False,2.1,False,Former,10.8,131,7.6,47.4,True,6969,87.7,0 +4566,59,Male,130,83,181,56,76,243,77,4.7,22.6,75,149,Non-Anginal Pain,False,2.6,False,Never,15.9,137,9.1,67.5,True,6810,65.5,0 +4567,55,Male,105,65,184,56,101,114,127,6.1,28.3,83,153,Asymptomatic,False,0.1,False,Current,9.0,189,9.2,41.1,True,6408,58.5,0 +4568,65,Male,105,78,156,66,70,130,103,5.5,21.7,74,151,Non-Anginal Pain,False,0.2,False,Former,4.8,170,9.2,35.4,True,10443,75.2,0 +4569,19,Male,124,80,121,52,56,68,129,6.2,21.5,77,184,Non-Anginal Pain,False,2.1,False,Former,8.8,77,7.0,61.3,False,6627,79.3,0 +4570,52,Male,125,72,151,54,61,95,139,6.0,29.3,83,164,Atypical Angina,False,0.3,False,Former,3.4,118,6.5,41.4,False,2709,62.1,0 +4571,49,Female,117,65,153,58,71,124,113,5.4,20.1,65,164,Atypical Angina,False,0.5,True,Current,19.5,149,7.7,16.3,False,4440,56.1,0 +4572,59,Male,118,73,161,53,80,133,138,6.6,30.4,89,164,Asymptomatic,False,0.6,False,Never,1.7,36,8.3,36.5,True,3624,73.6,0 +4573,66,Female,142,85,194,60,89,196,145,7.0,24.6,78,139,Asymptomatic,False,2.1,False,Never,0.0,36,6.0,39.7,False,4395,63.3,1 +4574,58,Female,111,80,165,74,80,94,138,6.6,27.3,86,171,Asymptomatic,True,0.3,False,Former,0.2,205,6.1,5.6,True,6065,62.3,0 +4575,56,Male,113,70,132,38,62,87,86,5.0,26.7,71,151,Typical Angina,False,1.6,True,Current,3.7,238,6.1,56.2,True,7169,100.0,0 +4576,49,Male,141,90,199,71,104,177,124,5.7,25.4,63,172,Asymptomatic,False,0.1,True,Former,1.9,131,7.8,68.9,False,4911,47.2,0 +4577,64,Female,125,74,180,39,122,116,132,6.6,20.4,87,141,Typical Angina,True,0.3,False,Former,1.2,77,5.6,62.9,False,4115,49.8,1 +4578,79,Male,140,79,163,60,90,70,140,6.5,23.2,79,155,Asymptomatic,True,1.9,False,Former,4.3,118,8.5,41.1,False,6524,54.7,0 +4579,60,Female,144,95,173,45,88,224,88,5.4,33.5,93,161,Asymptomatic,False,0.3,False,Current,15.7,114,7.5,73.0,True,7278,31.4,0 +4580,58,Female,127,83,145,71,43,177,163,7.0,21.6,96,160,Atypical Angina,False,0.5,False,Never,6.1,0,6.7,39.2,False,4838,74.7,0 +4581,60,Female,121,74,127,42,69,123,119,5.6,23.6,92,145,Asymptomatic,False,1.3,False,Never,6.9,80,5.8,67.6,True,7695,82.5,0 +4582,48,Male,117,85,169,54,84,151,66,4.0,27.0,80,197,Asymptomatic,False,0.5,False,Never,1.9,246,5.7,25.1,False,7859,64.7,0 +4583,45,Male,112,79,159,38,95,131,127,5.7,29.1,73,194,Asymptomatic,False,0.1,False,Never,5.4,91,6.8,62.8,False,5065,45.2,0 +4584,44,Female,136,81,174,80,80,131,116,5.7,23.7,72,177,Typical Angina,False,0.9,False,Never,4.9,269,6.8,45.6,True,8041,69.0,0 +4585,57,Male,131,89,106,34,64,122,102,4.9,24.2,84,177,Asymptomatic,True,0.9,False,Current,3.2,109,6.8,55.8,False,5916,53.6,0 +4586,64,Female,122,82,185,67,95,125,152,6.7,29.7,93,133,Asymptomatic,True,2.0,False,Never,0.5,183,6.3,39.0,False,3802,57.4,1 +4587,58,Male,128,83,232,56,156,134,123,5.5,27.9,102,160,Asymptomatic,False,1.3,True,Current,2.5,202,7.2,27.3,True,6352,52.3,1 +4588,51,Female,122,94,172,63,82,165,94,5.1,28.0,78,166,Non-Anginal Pain,False,0.8,False,Never,0.7,125,5.3,29.9,True,8767,61.4,0 +4589,63,Female,95,68,184,50,130,119,129,5.7,25.4,86,152,Asymptomatic,False,1.5,True,Current,0.3,191,5.0,42.3,True,5975,44.6,1 +4590,50,Male,120,78,166,56,70,156,133,5.7,24.0,78,169,Non-Anginal Pain,True,0.4,False,Never,2.7,178,9.3,37.9,True,7150,48.7,0 +4591,59,Female,116,76,208,53,97,279,136,6.6,30.1,87,166,Non-Anginal Pain,False,0.1,True,Never,8.8,103,7.2,55.1,False,5424,46.2,0 +4592,48,Female,114,75,197,67,107,108,62,4.3,15.0,79,187,Asymptomatic,False,0.6,False,Never,5.0,225,8.1,56.5,True,9921,66.8,0 +4593,59,Male,138,85,169,59,69,188,125,5.8,26.1,75,174,Non-Anginal Pain,True,1.7,False,Former,4.6,77,7.5,55.0,False,7122,57.8,0 +4594,43,Female,117,80,174,43,110,127,172,7.3,24.7,87,165,Asymptomatic,False,1.2,True,Never,10.9,183,7.0,39.3,False,7575,41.5,0 +4595,34,Female,114,77,164,75,74,105,126,5.9,30.1,75,188,Non-Anginal Pain,True,1.7,False,Never,0.3,191,7.5,65.3,True,8284,90.9,0 +4596,61,Female,140,89,112,23,64,223,105,5.3,22.3,75,138,Asymptomatic,False,1.9,False,Current,18.0,132,7.3,47.2,False,5563,33.0,1 +4597,73,Male,142,88,186,41,135,68,165,7.2,29.6,90,124,Asymptomatic,True,0.7,False,Current,2.0,92,8.1,71.4,True,8784,46.1,1 +4598,49,Male,126,75,235,45,153,235,109,5.2,28.9,85,194,Non-Anginal Pain,False,0.1,True,Never,3.2,163,7.5,19.4,False,6504,80.0,0 +4599,22,Male,121,71,170,55,102,134,148,6.6,28.9,77,199,Asymptomatic,True,2.2,False,Never,2.4,201,8.5,73.9,True,8793,76.0,0 +4600,69,Female,140,89,174,44,106,205,94,5.6,28.3,83,138,Atypical Angina,True,1.8,False,Never,12.0,67,7.7,13.6,False,7101,42.8,0 +4601,56,Male,153,105,193,43,132,163,132,6.3,32.5,85,173,Non-Anginal Pain,False,0.2,False,Never,2.4,198,9.6,67.8,True,9054,57.5,0 +4602,85,Female,130,89,231,60,142,172,145,7.1,26.4,86,128,Asymptomatic,True,1.5,True,Never,3.7,167,6.4,58.8,True,1089,57.4,1 +4603,73,Female,143,87,169,58,100,105,143,6.1,27.2,86,127,Atypical Angina,True,2.0,True,Never,2.1,110,8.9,65.2,False,4238,76.3,1 +4604,48,Male,138,86,146,47,74,157,93,4.8,26.9,75,185,Asymptomatic,False,0.2,False,Never,13.6,81,6.9,40.6,False,3119,50.7,0 +4605,54,Female,129,66,173,46,87,223,106,5.7,32.9,94,130,Typical Angina,False,0.2,False,Current,4.5,140,4.7,51.6,False,5854,49.5,1 +4606,61,Male,106,65,132,51,65,148,94,5.1,24.1,82,172,Non-Anginal Pain,False,3.1,False,Former,2.0,260,6.9,49.2,True,7526,56.1,0 +4607,47,Female,114,69,206,44,120,173,166,7.0,30.6,100,176,Atypical Angina,False,0.1,True,Former,0.3,56,6.0,59.5,False,6123,37.1,0 +4608,75,Female,136,81,221,65,102,193,121,5.5,23.4,94,158,Asymptomatic,False,1.1,False,Former,3.1,154,8.0,45.8,False,3564,85.3,0 +4609,63,Female,135,97,215,82,119,85,84,4.7,18.5,69,166,Asymptomatic,False,1.8,False,Never,1.0,162,7.2,27.4,True,6207,59.6,0 +4610,45,Female,119,65,102,56,42,83,89,5.2,19.9,96,189,Typical Angina,False,0.1,False,Former,6.6,103,9.0,54.7,False,7994,61.7,0 +4611,72,Female,142,82,210,70,111,151,91,5.3,20.2,93,148,Asymptomatic,False,3.1,False,Current,2.9,53,8.0,38.8,False,6547,55.8,0 +4612,38,Male,120,75,144,39,81,126,160,7.0,27.5,83,175,Asymptomatic,False,1.9,False,Current,2.6,32,5.2,59.3,False,7830,54.5,0 +4613,62,Female,118,79,166,34,123,76,106,5.2,22.2,79,157,Atypical Angina,False,0.5,False,Former,5.3,196,8.8,48.6,True,8001,60.1,0 +4614,38,Male,112,78,206,64,119,109,105,5.1,15.0,59,184,Asymptomatic,False,0.5,False,Never,5.8,131,7.3,47.2,True,4061,57.9,0 +4615,68,Male,147,94,193,58,107,164,134,6.6,27.2,86,144,Asymptomatic,True,0.8,True,Never,7.0,150,8.5,59.0,True,8410,42.5,1 +4616,44,Female,133,83,221,57,102,242,128,6.1,30.6,74,176,Non-Anginal Pain,False,0.7,True,Never,22.8,166,8.6,50.8,False,4941,76.3,0 +4617,48,Female,124,69,183,53,113,161,141,6.3,21.0,67,173,Asymptomatic,False,0.7,True,Former,4.2,151,9.2,42.8,False,3915,60.0,0 +4618,59,Female,130,96,230,57,154,135,157,7.3,23.1,72,138,Non-Anginal Pain,False,0.3,False,Never,8.6,13,7.0,56.5,False,3689,67.3,1 +4619,59,Male,109,72,157,54,62,149,178,6.8,29.4,69,175,Atypical Angina,True,1.1,False,Never,1.9,225,6.2,62.4,True,9027,75.8,0 +4620,59,Female,121,74,172,53,83,168,101,5.2,29.6,109,176,Non-Anginal Pain,False,1.3,False,Never,0.1,105,6.9,35.1,True,7694,45.3,0 +4621,56,Male,135,61,147,19,90,184,193,8.6,29.1,87,156,Typical Angina,False,2.6,False,Never,2.6,30,6.7,74.9,True,7013,38.3,1 +4622,42,Male,112,69,123,70,47,35,107,5.6,18.8,72,180,Non-Anginal Pain,False,0.2,False,Never,16.5,340,6.7,57.3,True,8422,61.2,0 +4623,52,Male,125,82,149,40,101,101,133,6.1,21.1,70,170,Asymptomatic,False,0.4,False,Never,3.1,152,7.2,31.6,True,5629,58.9,0 +4624,55,Female,137,92,228,59,105,246,117,5.3,30.3,80,167,Non-Anginal Pain,False,2.2,False,Never,7.9,106,8.6,56.1,True,7312,51.4,0 +4625,59,Male,127,81,200,57,129,105,123,5.5,19.9,83,180,Atypical Angina,False,0.7,True,Current,6.9,177,7.0,67.3,False,4560,80.6,0 +4626,47,Male,133,85,121,63,37,172,115,5.3,23.7,76,159,Asymptomatic,True,0.3,False,Never,7.8,124,7.6,43.9,False,7328,66.7,0 +4627,64,Male,135,84,213,56,115,190,124,5.8,29.9,89,151,Typical Angina,True,0.1,False,Current,7.4,53,7.8,43.5,True,8436,63.0,1 +4628,49,Female,125,86,216,67,100,202,134,6.1,28.3,86,189,Non-Anginal Pain,False,0.5,False,Former,3.9,123,6.6,69.8,False,7505,57.1,0 +4629,46,Male,131,70,250,57,171,139,124,5.2,29.4,83,169,Non-Anginal Pain,True,1.6,True,Never,10.1,103,6.8,59.4,False,5357,72.3,1 +4630,42,Female,111,73,136,40,75,89,131,6.1,21.1,82,189,Asymptomatic,False,0.6,False,Former,3.3,150,7.4,49.9,True,7831,64.6,0 +4631,42,Female,132,84,229,68,123,169,125,6.1,28.4,81,173,Non-Anginal Pain,True,1.2,False,Never,1.7,9,5.2,57.9,False,3362,42.9,0 +4632,41,Female,130,89,167,42,94,148,126,6.3,21.7,84,192,Asymptomatic,False,0.7,True,Never,6.4,121,8.1,56.3,True,8078,31.4,0 +4633,46,Male,136,91,173,43,94,148,123,6.0,27.1,73,205,Typical Angina,False,0.5,True,Former,1.7,156,8.2,43.8,True,7324,65.9,0 +4634,73,Female,118,81,171,41,94,167,144,6.8,26.3,80,158,Asymptomatic,False,0.6,False,Never,1.6,130,8.1,39.3,False,3801,59.9,0 +4635,54,Male,115,59,173,43,114,119,141,6.6,22.1,81,143,Non-Anginal Pain,True,0.8,True,Never,5.5,133,7.1,37.0,False,6023,62.5,1 +4636,77,Male,132,84,161,38,112,87,109,5.8,27.3,78,144,Asymptomatic,False,0.5,True,Never,9.9,48,7.0,62.1,False,3652,69.3,0 +4637,31,Female,121,79,248,77,128,165,119,5.7,24.1,75,196,Atypical Angina,False,1.2,False,Never,0.5,283,5.3,39.3,True,6333,47.5,0 +4638,65,Male,98,62,214,61,124,127,104,5.7,25.8,77,153,Asymptomatic,False,0.4,False,Never,4.9,125,8.7,70.7,False,6512,67.1,0 +4639,63,Female,131,91,177,67,94,121,136,6.3,25.8,70,166,Atypical Angina,False,0.6,False,Never,1.4,106,8.1,46.4,False,3633,55.2,0 +4640,32,Female,114,79,187,75,78,151,125,6.1,28.3,67,184,Asymptomatic,False,0.6,True,Former,2.1,242,6.0,41.0,False,5567,54.5,0 +4641,56,Male,160,99,194,39,116,215,143,6.6,28.7,82,149,Asymptomatic,False,0.2,False,Former,2.8,0,6.7,22.5,False,4889,49.6,0 +4642,57,Male,118,69,150,34,111,35,157,6.4,20.3,72,161,Typical Angina,True,0.7,False,Never,3.3,89,4.9,51.3,False,4220,64.3,1 +4643,59,Male,122,88,210,63,127,157,125,6.1,30.4,86,164,Asymptomatic,False,0.1,False,Never,3.7,179,5.9,53.3,False,5169,56.0,0 +4644,46,Female,99,65,161,46,80,192,135,6.2,19.7,63,197,Asymptomatic,False,0.2,False,Former,0.7,258,6.2,51.7,True,8718,81.6,0 +4645,60,Female,127,90,192,78,85,147,99,5.0,23.4,73,164,Atypical Angina,False,0.8,False,Never,2.6,182,7.4,64.0,False,8076,75.9,0 +4646,67,Female,155,109,143,27,90,148,114,5.6,22.3,90,142,Typical Angina,False,1.0,False,Never,6.1,95,7.9,89.0,False,5904,51.8,1 +4647,41,Male,126,78,206,73,100,181,104,5.7,17.6,77,185,Typical Angina,False,1.2,False,Current,15.9,211,7.2,49.5,True,8084,82.1,0 +4648,49,Male,120,71,211,54,139,113,114,5.6,27.3,65,185,Asymptomatic,False,1.1,True,Never,6.8,269,8.0,30.1,True,8556,72.4,0 +4649,62,Male,157,98,216,45,118,251,125,5.7,25.3,75,128,Asymptomatic,False,1.2,False,Never,6.3,157,7.4,21.5,False,4626,58.9,1 +4650,42,Female,116,72,178,47,97,140,69,4.0,23.3,87,170,Asymptomatic,False,0.4,True,Former,0.4,142,6.4,82.2,True,7913,57.6,0 +4651,65,Male,138,93,196,48,115,151,123,5.4,30.1,86,146,Atypical Angina,True,1.0,False,Current,14.9,164,7.5,27.3,False,5962,34.8,1 +4652,54,Female,116,71,230,60,137,161,131,5.4,22.8,70,184,Asymptomatic,False,1.7,False,Never,2.5,106,8.5,26.8,False,7039,52.5,0 +4653,66,Male,130,89,193,59,87,255,145,6.7,26.6,78,137,Atypical Angina,True,1.6,False,Never,14.8,79,8.1,45.7,True,8854,49.3,1 +4654,18,Female,94,58,174,56,74,229,126,5.8,26.9,64,209,Asymptomatic,False,0.4,True,Former,5.3,177,7.8,21.9,False,7217,86.3,0 +4655,67,Female,126,71,188,58,90,140,123,6.2,27.0,86,136,Typical Angina,False,1.1,True,Former,2.8,170,6.7,21.7,True,3386,63.9,1 +4656,61,Female,142,76,183,54,81,185,121,5.5,22.5,77,180,Asymptomatic,True,0.9,False,Never,8.1,88,7.5,79.8,True,7988,69.0,0 +4657,63,Female,134,76,163,41,102,131,103,5.1,24.7,73,162,Asymptomatic,False,1.1,False,Never,5.8,167,8.9,69.7,False,6087,71.3,0 +4658,45,Male,119,73,117,34,74,123,127,6.2,24.5,76,170,Asymptomatic,False,0.4,False,Former,13.6,49,6.9,40.4,False,5520,63.4,0 +4659,76,Male,139,91,253,77,163,165,131,6.2,27.7,75,136,Asymptomatic,False,0.8,True,Never,1.6,76,8.2,22.0,False,2447,53.2,0 +4660,44,Male,109,63,167,38,92,150,115,5.2,27.8,83,179,Asymptomatic,False,0.3,True,Never,1.9,120,7.8,48.8,False,5671,63.9,0 +4661,66,Male,129,72,196,49,116,140,148,6.2,25.4,73,121,Non-Anginal Pain,False,2.2,True,Current,21.9,123,6.7,55.1,True,3909,54.1,1 +4662,53,Female,127,76,170,55,77,237,94,4.9,24.4,75,179,Asymptomatic,False,0.9,False,Never,5.7,129,5.7,49.4,True,8006,28.8,0 +4663,29,Female,86,50,184,55,112,114,92,4.6,21.9,77,194,Asymptomatic,False,0.6,False,Never,14.4,155,7.3,12.0,False,5927,78.1,0 +4664,63,Female,126,74,191,53,117,106,133,6.0,22.2,72,172,Atypical Angina,False,2.1,False,Former,11.0,164,5.3,50.0,True,6480,23.0,0 +4665,55,Male,106,63,156,54,87,60,101,5.5,22.6,73,145,Atypical Angina,False,0.2,False,Never,6.2,172,8.6,53.8,True,8137,61.0,0 +4666,44,Female,126,88,184,69,102,77,91,5.0,21.7,66,164,Atypical Angina,False,1.5,False,Former,0.3,69,9.1,25.8,False,7276,77.9,0 +4667,52,Male,121,65,147,49,81,132,103,5.4,24.4,84,164,Asymptomatic,False,1.5,False,Former,5.0,121,7.0,59.1,True,5430,48.6,0 +4668,90,Male,135,74,169,51,82,122,111,4.9,18.2,89,113,Asymptomatic,False,1.2,False,Never,11.0,81,5.2,45.1,False,3874,70.7,1 +4669,45,Male,132,86,217,56,139,93,137,6.1,25.7,91,197,Asymptomatic,False,1.3,False,Never,1.8,100,7.7,60.4,False,6728,42.3,0 +4670,67,Male,149,95,177,55,109,91,131,6.3,31.1,90,140,Asymptomatic,True,1.2,True,Former,2.9,171,6.2,83.6,True,6752,70.1,1 +4671,52,Female,113,67,161,50,71,210,127,5.7,24.3,78,155,Asymptomatic,True,4.8,False,Current,6.7,235,6.9,35.2,True,8858,45.2,1 +4672,57,Male,127,72,217,66,111,179,117,5.4,30.9,71,154,Asymptomatic,True,1.4,False,Never,3.0,273,8.1,47.3,False,7792,41.0,1 +4673,67,Male,142,94,146,67,73,60,153,7.4,15.8,64,121,Asymptomatic,False,3.0,True,Never,5.7,132,6.9,66.6,False,7347,59.6,1 +4674,66,Male,141,86,235,55,143,158,133,6.5,30.5,93,151,Asymptomatic,True,2.9,False,Never,12.3,0,7.8,51.9,False,2499,51.2,1 +4675,60,Female,128,77,237,48,140,198,97,5.2,25.5,96,178,Asymptomatic,False,0.5,False,Never,1.1,125,7.9,42.1,False,4420,56.0,0 +4676,41,Female,137,83,232,69,103,200,116,6.2,24.7,80,188,Asymptomatic,False,0.7,False,Former,1.5,104,7.6,26.7,False,5282,71.3,0 +4677,58,Male,118,70,204,35,136,133,85,4.9,30.1,87,136,Typical Angina,True,4.3,True,Never,5.4,109,8.8,34.9,False,2638,56.1,1 +4678,57,Female,131,90,191,59,118,118,101,5.0,22.3,84,168,Asymptomatic,False,0.5,False,Never,2.8,213,6.0,33.2,False,5092,56.6,0 +4679,46,Female,129,83,194,77,87,122,148,6.0,25.9,77,152,Asymptomatic,False,0.1,False,Never,13.1,86,7.2,48.3,False,3673,73.7,0 +4680,40,Female,110,67,183,59,100,120,146,6.0,30.5,63,194,Non-Anginal Pain,False,1.4,False,Never,1.0,273,7.3,2.4,True,8784,94.3,0 +4681,70,Male,123,77,168,40,104,99,112,5.8,25.7,88,145,Atypical Angina,False,1.2,False,Current,1.6,126,7.8,62.4,True,9828,42.7,0 +4682,39,Male,111,70,199,31,148,136,123,5.4,31.1,78,151,Asymptomatic,True,0.1,True,Current,2.0,108,7.0,13.0,False,4473,24.0,1 +4683,63,Female,115,77,123,50,64,72,119,5.6,21.6,63,188,Asymptomatic,False,1.5,False,Former,4.5,194,6.7,63.3,True,4936,74.9,0 +4684,44,Female,137,78,193,54,104,162,148,6.5,24.7,85,180,Asymptomatic,False,0.2,False,Current,2.5,86,6.8,32.4,False,3170,58.3,0 +4685,63,Male,150,90,204,49,101,250,103,5.3,26.0,91,154,Asymptomatic,False,0.8,False,Never,6.7,0,7.6,49.5,True,4693,37.8,0 +4686,29,Female,110,75,180,54,104,72,101,5.4,22.0,80,192,Asymptomatic,True,1.0,False,Former,0.9,189,6.2,43.2,False,4719,50.0,0 +4687,66,Female,122,80,138,50,75,95,104,5.1,16.8,81,164,Asymptomatic,False,0.1,False,Current,4.3,205,7.5,38.0,True,9654,51.3,0 +4688,50,Female,138,82,225,51,135,133,150,6.9,29.0,92,171,Asymptomatic,False,2.6,False,Never,1.4,119,7.3,41.1,True,8465,58.3,0 +4689,42,Female,123,74,179,60,85,199,113,5.2,24.9,85,178,Asymptomatic,True,0.2,True,Never,0.4,172,6.0,37.5,False,6639,38.9,0 +4690,80,Female,129,91,169,50,90,113,127,6.2,17.8,75,128,Asymptomatic,True,0.0,False,Former,3.2,218,6.5,57.9,False,3458,87.1,0 +4691,54,Female,128,84,187,57,110,64,128,5.7,23.9,86,173,Atypical Angina,False,2.7,False,Never,3.6,189,7.9,56.7,True,8594,61.7,0 +4692,57,Male,117,69,173,52,87,143,142,6.7,30.6,79,159,Non-Anginal Pain,True,2.0,False,Never,1.8,195,6.7,0.0,False,500,40.5,1 +4693,56,Female,127,84,180,33,106,184,81,5.1,24.2,87,159,Non-Anginal Pain,True,0.3,False,Current,5.3,143,6.9,40.8,False,4084,30.2,0 +4694,64,Male,151,112,176,68,87,136,139,6.2,28.2,86,141,Atypical Angina,True,1.9,False,Never,4.3,122,5.4,67.6,True,4640,78.7,0 +4695,47,Male,156,87,150,34,81,181,86,5.0,31.7,71,163,Non-Anginal Pain,False,0.1,False,Former,7.9,135,6.4,69.3,False,6031,54.7,0 +4696,75,Female,123,97,217,49,124,210,149,6.5,27.4,71,140,Asymptomatic,False,0.1,True,Never,3.4,128,6.9,71.3,True,7041,24.6,0 +4697,44,Female,108,69,221,63,122,201,85,4.4,22.4,83,193,Typical Angina,False,0.1,True,Never,0.6,146,6.5,50.1,False,5570,42.1,0 +4698,47,Female,126,85,189,71,94,100,108,5.4,26.4,75,181,Asymptomatic,False,0.1,False,Former,6.2,244,8.1,36.7,False,9784,78.3,0 +4699,57,Male,129,80,161,36,105,155,106,5.5,21.4,62,160,Atypical Angina,False,0.9,False,Never,10.0,222,5.9,42.3,False,4764,58.5,0 +4700,82,Female,115,80,230,44,142,169,117,5.8,26.3,93,153,Non-Anginal Pain,False,0.3,False,Never,0.1,199,7.8,42.1,False,6095,63.0,0 +4701,48,Female,134,77,189,54,100,178,122,5.5,22.5,84,152,Asymptomatic,False,0.7,False,Never,5.9,126,6.6,47.4,False,4890,21.6,0 +4702,59,Male,148,96,175,33,105,213,118,5.5,32.8,75,160,Asymptomatic,False,0.2,True,Former,4.8,109,6.5,37.3,False,6893,67.9,0 +4703,48,Male,103,66,195,42,117,153,60,4.0,20.8,87,187,Non-Anginal Pain,False,0.1,False,Never,3.1,220,7.7,40.8,True,6333,57.0,0 +4704,44,Male,111,67,176,50,109,69,105,5.5,23.2,80,193,Asymptomatic,False,0.5,True,Never,2.2,176,5.9,64.2,False,6497,61.9,0 +4705,58,Female,127,76,163,65,94,83,108,5.4,15.7,78,161,Non-Anginal Pain,False,1.7,False,Never,0.6,134,6.7,36.1,True,8422,45.5,0 +4706,73,Female,150,96,210,84,105,122,111,5.5,26.3,82,152,Asymptomatic,False,1.1,True,Never,0.8,234,7.3,49.8,True,7092,71.6,0 +4707,37,Female,109,65,144,40,75,117,100,5.5,21.2,75,136,Non-Anginal Pain,True,3.1,False,Never,4.0,79,5.8,59.4,False,6134,63.0,1 +4708,57,Male,136,97,177,45,87,195,112,5.4,30.3,73,142,Atypical Angina,True,3.1,True,Never,9.4,95,7.1,30.9,True,6672,81.4,1 +4709,61,Female,144,97,195,36,119,202,125,6.4,33.6,66,130,Non-Anginal Pain,True,1.3,True,Current,16.2,112,9.0,33.2,True,5075,49.5,1 +4710,51,Male,119,60,154,23,94,192,131,6.0,23.8,86,165,Non-Anginal Pain,True,1.4,True,Current,14.2,0,6.3,59.3,False,3036,44.4,0 +4711,50,Male,142,86,116,60,35,144,93,4.9,18.7,73,175,Asymptomatic,False,0.8,True,Never,20.2,250,5.4,56.1,False,8600,74.2,0 +4712,44,Female,107,79,204,68,90,169,126,6.0,21.8,78,193,Atypical Angina,False,1.5,False,Never,4.2,98,6.5,58.2,False,9498,52.8,0 +4713,49,Male,133,93,232,68,141,179,154,6.6,34.5,86,180,Asymptomatic,False,1.7,False,Never,1.8,156,4.4,19.6,False,6989,52.1,1 +4714,47,Male,138,72,175,56,110,132,153,6.1,22.3,81,196,Asymptomatic,True,0.9,False,Former,1.8,182,7.9,75.5,True,7993,46.5,1 +4715,66,Female,141,93,168,58,82,191,140,6.5,19.5,87,133,Asymptomatic,False,0.3,False,Never,5.8,42,6.7,54.0,False,6049,42.1,0 +4716,46,Female,137,85,182,96,70,106,104,5.5,26.7,76,160,Non-Anginal Pain,False,0.9,True,Never,12.3,207,6.9,71.6,False,4897,72.5,0 +4717,58,Female,106,69,161,55,75,182,138,6.1,22.8,84,177,Atypical Angina,False,0.9,False,Never,12.5,228,6.3,54.6,True,7327,56.5,0 +4718,71,Male,157,88,160,59,94,61,144,6.8,22.2,89,112,Asymptomatic,True,0.7,True,Never,1.6,106,7.8,58.4,True,2110,59.8,1 +4719,41,Female,131,88,204,62,126,48,119,6.0,24.0,72,182,Non-Anginal Pain,False,0.4,False,Former,11.2,198,7.6,17.3,True,6915,50.8,0 +4720,42,Female,117,72,186,22,136,132,114,5.6,25.0,84,167,Atypical Angina,False,3.5,False,Former,4.5,85,6.1,53.6,False,4383,47.0,1 +4721,55,Female,129,83,145,36,83,164,168,6.6,19.6,99,164,Asymptomatic,False,0.9,False,Former,5.1,38,7.5,66.6,False,9107,45.0,0 +4722,47,Female,107,73,193,44,97,206,134,6.3,25.2,83,159,Asymptomatic,False,0.4,False,Former,4.0,13,6.7,61.7,False,6771,47.0,1 +4723,67,Female,131,74,223,65,122,196,86,4.9,28.1,70,127,Asymptomatic,False,0.8,False,Never,7.0,161,7.4,63.5,False,3542,51.6,1 +4724,64,Male,146,88,233,58,131,206,117,5.5,23.7,73,124,Typical Angina,False,1.4,False,Never,21.0,221,6.5,61.7,True,8134,55.3,1 +4725,58,Female,130,90,167,53,78,205,118,6.2,29.3,81,165,Asymptomatic,False,0.5,False,Never,6.6,27,6.0,43.5,True,8071,49.3,0 +4726,70,Male,122,94,192,54,98,228,103,5.7,22.9,75,158,Non-Anginal Pain,False,0.5,False,Never,6.4,217,8.0,50.8,True,11429,68.8,0 +4727,50,Male,121,80,182,60,93,169,143,5.8,25.4,91,181,Non-Anginal Pain,False,0.6,False,Former,7.1,240,5.6,82.5,True,8632,64.1,0 +4728,56,Male,104,67,190,56,91,197,93,5.4,25.5,87,162,Non-Anginal Pain,False,0.2,False,Former,3.5,180,7.6,48.4,True,8673,62.6,0 +4729,70,Male,132,97,266,61,170,185,124,5.9,32.4,98,139,Atypical Angina,True,0.4,False,Never,2.0,143,6.0,40.4,True,5378,46.3,1 +4730,86,Female,138,89,276,57,169,231,123,6.3,26.9,83,136,Typical Angina,True,3.4,False,Never,5.4,238,8.0,52.0,True,8362,54.3,1 +4731,49,Male,118,79,163,50,79,155,148,6.7,20.7,71,186,Atypical Angina,False,0.6,False,Never,10.2,228,4.8,49.3,True,7438,57.3,0 +4732,50,Male,144,92,232,52,140,210,122,5.4,25.5,71,168,Asymptomatic,False,0.8,True,Former,22.5,198,6.2,37.2,True,8333,88.6,0 +4733,75,Male,115,55,175,57,82,179,90,4.5,22.8,91,137,Typical Angina,False,2.5,False,Former,4.7,217,7.0,40.6,True,9481,98.1,0 +4734,55,Female,133,72,165,46,87,127,140,6.3,21.5,87,194,Atypical Angina,True,0.2,False,Current,1.6,132,8.1,26.5,True,9387,34.2,0 +4735,36,Male,119,83,186,44,122,139,122,5.4,36.7,70,189,Asymptomatic,False,0.6,False,Former,3.3,190,5.4,39.9,False,5251,50.8,0 +4736,60,Male,149,97,227,71,102,325,157,6.7,33.5,78,158,Asymptomatic,False,0.5,True,Never,5.4,146,6.9,73.4,False,4770,38.8,0 +4737,55,Female,141,87,222,58,127,137,70,4.4,26.2,72,166,Non-Anginal Pain,False,0.2,True,Former,0.2,180,7.5,60.9,False,8028,58.6,0 +4738,57,Female,114,65,175,56,115,77,114,5.8,28.4,81,158,Non-Anginal Pain,False,0.3,False,Never,2.3,140,6.8,38.5,False,6897,44.1,0 +4739,67,Male,113,70,215,60,109,207,141,6.8,23.6,63,162,Atypical Angina,False,1.5,True,Never,2.0,223,6.9,47.4,True,8047,56.5,0 +4740,48,Male,126,89,165,67,60,172,112,5.6,21.9,78,187,Atypical Angina,True,1.2,False,Former,13.1,171,8.0,34.1,True,5860,74.7,1 +4741,47,Female,136,84,243,75,131,189,135,5.9,25.3,74,170,Non-Anginal Pain,False,0.5,True,Former,3.2,269,6.0,48.3,True,7566,54.1,0 +4742,45,Female,120,66,149,46,87,125,94,5.0,25.4,65,181,Non-Anginal Pain,False,0.5,False,Former,6.9,223,8.3,50.6,True,4995,55.6,0 +4743,71,Male,133,92,190,56,115,106,111,5.7,18.2,80,146,Asymptomatic,False,0.8,False,Never,1.8,67,5.9,41.1,False,6555,65.0,0 +4744,59,Male,142,106,161,33,93,177,116,5.9,32.0,84,134,Asymptomatic,False,0.1,False,Never,7.0,0,6.0,57.2,False,3479,79.8,1 +4745,21,Male,97,66,130,47,59,110,75,4.4,22.8,97,186,Non-Anginal Pain,False,0.6,False,Current,1.5,232,5.4,56.0,True,7534,61.4,0 +4746,67,Female,127,84,180,50,111,81,109,5.7,25.4,68,144,Asymptomatic,False,1.4,False,Never,5.7,114,8.4,48.8,False,1251,74.9,0 +4747,60,Female,122,80,239,73,140,144,125,6.1,25.9,86,172,Asymptomatic,False,0.1,False,Former,2.8,81,7.3,63.8,False,7281,26.7,0 +4748,18,Male,131,83,107,44,46,98,116,5.9,26.0,96,210,Asymptomatic,False,0.2,False,Current,1.6,33,6.7,90.1,False,5432,68.8,0 +4749,76,Female,125,76,202,56,106,167,143,6.5,27.2,77,147,Asymptomatic,False,0.6,True,Never,1.2,140,7.5,43.9,False,1513,81.7,0 +4750,79,Female,142,99,228,35,147,217,107,5.5,28.2,71,147,Non-Anginal Pain,False,1.0,False,Never,1.1,169,4.4,54.6,False,5643,68.9,0 +4751,56,Female,147,83,160,50,70,240,144,5.9,32.1,80,153,Asymptomatic,True,0.6,True,Former,1.4,269,8.2,61.9,True,8062,69.4,1 +4752,63,Female,118,81,135,33,82,155,140,7.1,25.4,83,155,Non-Anginal Pain,False,0.9,False,Never,3.5,74,6.9,44.8,False,7135,74.0,0 +4753,49,Male,127,77,218,52,140,119,79,5.1,16.2,63,173,Asymptomatic,True,0.5,False,Never,9.9,136,6.6,67.2,True,7075,51.8,1 +4754,48,Male,115,73,206,67,116,66,153,6.4,22.8,71,147,Typical Angina,True,0.8,False,Never,2.2,176,8.3,21.6,True,6955,68.9,1 +4755,70,Male,148,96,189,51,99,103,159,7.0,32.5,68,131,Asymptomatic,False,0.9,True,Never,9.1,219,8.3,24.8,True,8067,54.5,1 +4756,49,Female,122,84,174,23,111,182,99,5.3,33.1,77,145,Non-Anginal Pain,True,5.8,False,Never,9.9,103,6.6,64.3,False,8623,53.3,1 +4757,48,Male,89,57,189,44,114,146,139,6.5,32.0,83,189,Asymptomatic,False,0.6,False,Never,3.8,247,4.9,37.3,True,9705,53.4,0 +4758,61,Female,126,69,195,68,93,206,85,4.6,28.4,86,146,Asymptomatic,False,1.0,False,Never,0.5,119,6.0,48.5,False,6179,48.5,0 +4759,36,Male,122,76,152,60,74,35,122,5.8,21.2,74,182,Non-Anginal Pain,False,0.6,True,Never,1.8,124,4.6,16.6,False,5619,53.0,0 +4760,49,Female,121,85,149,54,55,198,96,4.8,17.9,61,158,Asymptomatic,True,0.9,True,Former,1.1,157,7.6,56.2,True,7959,93.7,1 +4761,65,Female,147,95,223,69,111,197,151,6.5,26.9,72,151,Atypical Angina,False,1.3,False,Never,0.8,270,7.8,16.4,True,8345,54.0,1 +4762,31,Female,130,81,187,47,117,160,118,5.9,36.1,81,176,Non-Anginal Pain,False,0.3,True,Never,3.8,212,8.8,68.0,False,8167,76.9,0 +4763,52,Female,127,79,178,37,114,186,118,5.8,26.3,98,177,Typical Angina,False,0.5,False,Former,7.7,105,5.4,3.7,False,7526,45.4,1 +4764,49,Male,146,81,197,49,132,110,101,5.1,26.2,85,154,Asymptomatic,False,0.4,False,Never,2.6,154,7.1,38.7,True,6581,56.6,0 +4765,44,Male,148,77,203,56,140,94,96,5.1,23.1,94,182,Asymptomatic,False,0.4,True,Former,1.9,0,7.5,47.8,False,3019,58.4,0 +4766,38,Female,117,86,118,45,64,97,86,4.8,27.5,83,189,Asymptomatic,False,0.8,True,Never,0.4,223,7.3,68.7,False,2576,73.8,0 +4767,42,Female,131,95,224,49,135,186,116,6.3,23.6,84,194,Asymptomatic,False,0.3,False,Former,4.7,73,9.7,58.8,True,10519,69.1,0 +4768,45,Female,137,84,226,56,145,122,112,5.7,23.4,94,195,Asymptomatic,False,0.4,False,Current,8.0,145,5.3,57.3,False,6251,51.0,0 +4769,43,Female,146,102,120,36,72,116,135,7.0,29.1,70,171,Asymptomatic,False,1.3,False,Never,16.1,48,8.1,66.4,False,7700,72.6,0 +4770,50,Male,137,85,192,31,117,254,123,6.0,37.2,79,158,Typical Angina,True,0.8,True,Former,6.4,176,8.0,53.0,False,7389,31.4,1 +4771,48,Female,149,90,174,49,80,201,150,6.9,29.5,74,166,Non-Anginal Pain,True,1.2,False,Current,0.9,185,7.3,53.9,True,4392,33.2,0 +4772,40,Male,126,78,184,55,98,208,119,5.7,29.4,83,172,Non-Anginal Pain,False,2.2,False,Never,16.2,118,8.3,57.6,False,9085,42.3,0 +4773,58,Male,105,79,176,41,106,123,125,6.0,29.9,74,157,Asymptomatic,False,0.3,False,Current,2.0,164,7.2,16.7,False,6286,60.4,0 +4774,57,Male,143,89,151,52,66,129,110,5.6,25.4,86,162,Atypical Angina,False,1.9,False,Never,3.3,238,5.9,57.8,True,7694,75.1,0 +4775,36,Female,109,74,157,46,76,171,86,4.5,20.3,85,210,Asymptomatic,False,2.2,False,Former,2.3,244,7.4,49.8,True,3416,87.8,0 +4776,67,Female,138,93,175,31,87,231,130,6.3,28.8,75,143,Asymptomatic,False,6.5,False,Never,13.5,43,6.9,44.5,False,3760,47.7,1 +4777,51,Male,128,77,185,40,111,183,106,5.1,28.2,87,157,Atypical Angina,False,2.4,False,Never,1.8,98,7.8,51.8,True,5477,82.0,0 +4778,61,Female,99,69,243,82,111,243,110,6.1,24.5,71,148,Asymptomatic,False,0.4,False,Never,1.6,101,7.1,30.6,False,6134,78.3,0 +4779,44,Male,146,82,183,60,95,139,127,5.7,28.7,58,180,Asymptomatic,False,0.7,True,Former,2.4,256,4.8,60.8,False,6115,40.2,0 +4780,40,Male,126,84,195,43,112,164,152,6.6,28.1,79,178,Atypical Angina,False,2.2,False,Former,2.2,72,6.9,36.7,False,5789,48.6,0 +4781,54,Male,130,80,222,58,115,195,147,6.5,26.9,74,175,Asymptomatic,True,0.5,False,Former,8.0,182,5.9,58.8,False,3457,40.6,1 +4782,41,Female,121,71,175,69,79,95,102,5.5,28.3,80,210,Asymptomatic,False,1.7,False,Current,2.2,221,6.2,54.5,False,5587,85.0,0 +4783,67,Male,127,77,176,56,99,84,121,5.5,18.8,76,157,Asymptomatic,False,1.1,False,Former,4.3,150,7.7,34.1,True,8954,61.7,0 +4784,81,Female,139,86,180,42,94,161,104,5.3,21.6,84,129,Non-Anginal Pain,True,0.8,True,Current,0.4,190,6.9,39.1,True,8593,53.7,1 +4785,64,Male,133,81,187,41,124,85,101,4.9,20.6,83,157,Asymptomatic,False,2.0,False,Former,2.5,70,8.7,43.6,False,6539,62.0,0 +4786,54,Female,140,96,191,62,104,124,138,6.3,17.5,80,191,Atypical Angina,False,0.1,False,Never,0.4,111,8.3,51.0,True,8965,52.1,0 +4787,49,Female,134,76,212,58,116,177,142,6.0,23.3,81,184,Asymptomatic,False,0.2,False,Never,10.4,133,8.6,43.4,True,3479,74.9,0 +4788,43,Male,147,100,192,63,89,179,103,6.0,20.0,88,169,Atypical Angina,True,0.1,False,Current,1.6,169,9.5,25.2,False,3085,57.8,0 +4789,51,Female,125,79,202,43,124,232,86,5.0,35.8,89,133,Typical Angina,True,2.2,False,Never,18.2,28,7.5,70.8,False,1064,71.4,1 +4790,43,Female,119,76,187,68,82,141,157,6.7,26.0,82,195,Asymptomatic,False,0.3,False,Former,0.4,96,6.9,57.8,False,4584,65.6,0 +4791,46,Female,131,81,204,69,96,184,123,6.3,23.2,84,197,Asymptomatic,False,3.2,False,Never,2.7,249,7.3,56.3,True,8958,62.7,0 +4792,71,Male,105,69,233,47,140,215,170,6.9,26.7,69,140,Non-Anginal Pain,True,1.4,False,Never,3.2,93,6.4,32.6,True,6923,37.9,1 +4793,49,Female,146,95,222,61,116,176,82,4.4,26.2,72,176,Non-Anginal Pain,False,0.5,True,Never,11.1,191,7.0,51.5,True,9169,52.4,0 +4794,64,Male,118,85,170,47,110,74,80,5.2,28.8,92,194,Asymptomatic,False,0.2,False,Never,6.4,153,7.3,54.5,True,8607,79.2,0 +4795,67,Male,140,91,179,34,121,112,156,6.5,29.3,92,131,Non-Anginal Pain,False,2.9,True,Current,6.0,50,7.0,83.5,False,5647,49.6,1 +4796,56,Male,124,84,162,57,84,121,85,4.6,22.9,67,171,Asymptomatic,False,0.6,True,Current,2.4,64,6.6,42.3,False,6167,55.6,0 +4797,59,Female,109,54,240,69,139,135,150,6.6,25.4,85,171,Atypical Angina,False,2.1,True,Never,1.5,142,10.0,55.9,False,6685,62.1,0 +4798,56,Male,120,70,208,68,94,164,96,5.0,23.6,66,153,Atypical Angina,False,1.0,False,Never,3.9,178,6.5,44.7,False,5985,96.4,0 +4799,43,Male,143,94,205,77,101,223,141,5.5,26.5,87,203,Asymptomatic,False,0.5,False,Never,1.9,259,5.9,66.8,True,6022,52.5,0 +4800,51,Female,134,89,168,38,127,100,155,7.3,29.7,87,157,Non-Anginal Pain,True,0.2,False,Current,1.3,25,7.7,46.0,False,6370,43.8,1 +4801,63,Female,119,80,167,63,89,124,111,5.6,18.6,94,155,Atypical Angina,False,1.7,False,Current,14.2,104,7.0,48.3,False,9596,81.7,0 +4802,37,Male,118,75,116,50,52,59,148,6.6,21.8,92,175,Non-Anginal Pain,False,1.0,False,Current,3.1,46,8.2,37.0,False,7582,59.4,0 +4803,48,Female,124,77,249,82,129,120,85,4.3,21.2,91,164,Typical Angina,False,2.0,False,Former,14.7,189,7.2,55.2,False,3043,72.8,0 +4804,59,Male,150,97,222,46,126,229,133,5.9,28.9,74,184,Asymptomatic,False,1.3,False,Never,10.0,201,8.5,58.6,True,10574,47.3,0 +4805,61,Male,135,84,188,66,68,247,128,5.8,28.7,86,145,Non-Anginal Pain,True,0.2,False,Never,3.3,241,7.5,44.4,True,4260,85.7,1 +4806,55,Male,124,72,181,63,85,109,84,4.4,26.2,84,157,Atypical Angina,False,0.7,False,Never,2.0,182,7.5,51.2,True,8783,61.7,0 +4807,50,Female,111,73,181,68,93,140,101,5.5,18.8,76,171,Asymptomatic,False,0.7,False,Never,6.5,214,7.3,51.7,True,8134,62.0,0 +4808,59,Male,135,85,214,41,145,123,121,5.7,32.5,82,156,Asymptomatic,True,0.4,False,Never,1.6,196,5.6,57.9,True,8525,53.5,1 +4809,58,Male,124,68,137,66,64,63,124,6.4,18.0,73,162,Non-Anginal Pain,False,0.4,False,Never,9.7,211,7.5,0.0,True,5733,60.7,0 +4810,55,Male,98,56,218,58,132,122,110,5.1,25.4,83,171,Asymptomatic,True,0.7,False,Never,7.1,111,6.7,2.8,False,3301,60.6,0 +4811,55,Female,137,95,149,56,74,122,75,5.1,27.9,88,141,Typical Angina,True,0.8,True,Current,3.8,97,6.7,54.1,False,1614,53.1,1 +4812,58,Male,104,73,200,56,102,158,135,6.0,23.1,90,132,Asymptomatic,True,1.9,False,Never,4.2,58,8.4,39.7,False,2704,31.5,1 +4813,46,Male,109,63,199,60,92,206,141,6.3,34.6,76,189,Non-Anginal Pain,False,0.3,False,Never,7.9,114,7.1,62.6,False,4471,65.9,0 +4814,67,Male,140,82,165,53,85,131,100,5.1,29.1,86,147,Asymptomatic,False,0.8,False,Former,8.1,114,6.5,50.9,False,7183,53.8,0 +4815,71,Male,175,107,206,39,147,88,134,6.3,34.1,90,132,Atypical Angina,False,2.1,False,Current,2.8,13,5.7,91.5,False,2212,32.7,1 +4816,51,Female,118,61,129,41,73,71,118,5.6,23.8,70,189,Non-Anginal Pain,False,0.7,False,Current,2.9,176,6.0,24.6,True,6630,62.6,0 +4817,24,Female,101,70,161,86,57,90,131,5.5,15.0,75,206,Asymptomatic,False,0.9,False,Never,2.5,138,7.4,33.1,True,7401,57.0,0 +4818,39,Male,120,75,207,68,93,209,85,4.3,24.8,85,181,Non-Anginal Pain,False,0.3,True,Never,7.9,140,7.4,38.8,False,3949,64.3,0 +4819,63,Male,133,82,202,52,132,132,119,5.7,19.9,86,147,Typical Angina,False,0.4,True,Never,1.6,172,7.6,38.1,False,6434,73.5,1 +4820,41,Female,124,74,216,58,134,144,125,5.9,17.0,83,184,Typical Angina,False,0.4,False,Current,9.5,126,6.1,38.8,False,7468,41.9,0 +4821,60,Female,136,90,191,31,113,165,123,6.3,24.6,79,139,Asymptomatic,False,1.7,True,Never,9.1,42,6.1,59.2,False,5626,30.0,1 +4822,38,Male,113,72,177,53,108,105,129,6.2,19.0,73,182,Non-Anginal Pain,False,0.6,True,Current,8.8,192,7.1,30.3,False,6726,56.2,0 +4823,61,Male,132,84,220,64,120,177,129,5.7,25.1,86,152,Typical Angina,False,0.9,False,Never,2.7,60,6.4,50.8,True,5475,71.3,0 +4824,56,Male,118,67,149,66,62,79,111,5.4,15.0,71,173,Asymptomatic,False,0.2,True,Never,2.4,272,5.9,33.7,False,6026,66.9,0 +4825,54,Female,101,65,243,71,149,131,96,5.0,20.5,80,187,Asymptomatic,False,0.6,False,Former,0.6,177,7.4,63.0,True,8429,56.0,0 +4826,49,Male,126,72,135,38,68,116,138,6.1,23.3,79,161,Asymptomatic,False,1.2,True,Never,3.3,114,8.2,38.3,True,8088,53.3,0 +4827,59,Male,111,70,159,47,86,140,159,6.7,28.4,80,153,Atypical Angina,False,0.7,False,Never,1.7,64,6.9,22.2,False,4455,64.1,0 +4828,39,Male,118,79,155,58,99,96,96,4.8,20.4,83,175,Asymptomatic,False,0.3,False,Former,2.2,148,7.2,55.1,True,5740,76.9,0 +4829,58,Male,142,88,147,66,71,75,155,6.3,28.1,71,173,Asymptomatic,False,0.5,False,Never,5.5,292,8.7,72.3,True,7565,70.9,0 +4830,51,Male,135,96,167,54,87,164,124,6.2,22.5,57,182,Asymptomatic,False,0.1,False,Never,9.4,123,6.6,44.2,True,9049,69.9,0 +4831,75,Male,146,88,170,49,84,173,138,6.5,30.8,89,139,Typical Angina,True,1.9,False,Former,7.9,1,7.0,54.4,False,3605,51.1,1 +4832,28,Female,102,66,158,52,87,115,98,5.3,23.5,69,197,Atypical Angina,False,0.7,False,Never,6.8,200,7.4,57.1,True,9102,58.6,0 +4833,56,Female,149,91,201,81,88,141,103,5.0,25.7,77,150,Atypical Angina,False,1.5,False,Former,9.1,166,6.1,97.5,True,4969,63.7,0 +4834,45,Male,146,102,135,35,81,165,113,5.6,29.8,88,157,Non-Anginal Pain,True,1.9,True,Never,7.4,92,7.4,81.2,False,5397,62.1,1 +4835,60,Female,132,88,231,61,147,158,109,5.8,24.9,74,165,Non-Anginal Pain,False,0.7,False,Never,15.1,148,7.1,48.2,True,5485,65.6,0 +4836,66,Female,150,102,194,55,99,192,122,5.5,26.3,85,145,Asymptomatic,False,0.5,True,Former,9.8,131,7.2,55.2,True,5838,65.2,0 +4837,36,Female,135,98,213,77,119,136,130,6.6,27.9,87,167,Asymptomatic,False,1.0,True,Never,4.5,170,6.7,36.1,True,6624,53.3,0 +4838,72,Male,132,80,195,75,101,79,115,5.6,25.3,78,153,Non-Anginal Pain,False,0.4,False,Former,2.9,133,8.1,44.1,True,5809,55.3,0 +4839,48,Male,155,99,218,45,118,275,125,6.3,29.8,87,137,Asymptomatic,False,1.0,False,Current,12.1,67,7.3,65.1,False,3585,28.7,1 +4840,51,Female,120,68,172,60,79,225,104,5.6,28.0,81,177,Asymptomatic,False,1.3,True,Never,4.4,191,6.2,60.0,False,5530,63.2,1 +4841,45,Male,118,75,225,36,155,159,154,7.0,26.5,75,174,Non-Anginal Pain,False,0.8,False,Current,8.7,82,5.8,1.9,False,3707,36.5,0 +4842,24,Female,116,81,153,80,74,62,88,4.7,18.9,72,195,Asymptomatic,False,0.2,False,Never,1.2,241,5.7,55.6,True,9382,95.2,0 +4843,47,Male,129,76,241,52,140,242,148,6.3,30.6,100,147,Non-Anginal Pain,False,1.3,False,Former,5.3,128,8.1,57.3,False,3609,58.5,1 +4844,37,Female,132,91,183,50,100,198,71,4.5,22.3,79,186,Atypical Angina,False,0.4,False,Former,4.6,156,7.5,47.6,False,6765,56.9,0 +4845,32,Male,124,76,162,51,86,168,106,5.2,23.6,83,202,Asymptomatic,False,1.1,False,Never,10.4,137,6.5,66.8,False,7821,34.4,0 +4846,69,Female,144,103,196,46,123,141,114,5.4,29.5,85,99,Typical Angina,True,1.0,False,Never,3.0,75,6.3,45.7,False,6632,25.9,1 +4847,68,Female,160,112,158,60,75,124,79,5.0,19.7,75,164,Asymptomatic,False,0.2,False,Never,2.1,0,9.5,56.6,False,5890,61.3,0 +4848,58,Male,135,78,195,40,102,205,114,5.3,30.5,83,148,Asymptomatic,True,0.4,False,Current,3.6,158,7.4,43.5,True,9409,46.9,1 +4849,41,Male,122,82,151,63,41,223,122,5.9,17.5,73,210,Atypical Angina,False,1.8,False,Never,4.3,212,6.5,28.8,True,6142,71.6,0 +4850,68,Female,143,101,183,43,114,154,103,5.2,31.4,69,122,Typical Angina,True,2.8,False,Former,0.7,204,7.5,48.5,True,6644,42.5,1 +4851,55,Male,137,88,248,42,162,245,173,7.7,31.6,84,165,Asymptomatic,True,0.8,True,Never,6.2,0,9.2,61.0,False,4783,44.2,1 +4852,50,Male,135,79,173,47,116,135,131,6.1,26.2,81,134,Atypical Angina,True,0.3,False,Never,8.9,111,5.8,32.4,True,8139,53.6,1 +4853,43,Female,116,71,187,74,99,132,72,4.5,17.4,72,177,Atypical Angina,False,1.7,True,Former,0.0,157,6.9,67.2,False,6146,68.6,0 +4854,55,Female,145,88,227,61,120,152,155,7.0,29.6,85,158,Asymptomatic,False,2.2,False,Former,2.5,40,7.1,28.9,False,3612,61.9,1 +4855,51,Male,136,66,214,42,124,234,109,5.6,21.3,89,148,Atypical Angina,True,4.6,False,Former,8.1,114,7.7,55.8,False,4649,43.8,1 +4856,49,Female,129,70,221,49,133,207,114,5.6,23.3,86,143,Typical Angina,False,2.7,False,Current,0.5,156,6.7,54.3,True,8317,33.3,1 +4857,49,Female,131,78,203,65,96,199,112,5.5,19.3,74,181,Non-Anginal Pain,False,0.3,False,Never,10.3,278,7.6,37.8,True,5782,48.7,0 +4858,62,Male,122,77,191,51,114,153,111,5.3,19.0,85,151,Typical Angina,False,1.6,False,Never,3.1,132,7.6,36.5,False,7192,99.3,0 +4859,61,Female,133,79,222,56,140,150,122,5.7,21.0,77,190,Asymptomatic,False,0.9,False,Never,0.8,182,6.2,61.4,False,4480,61.5,0 +4860,71,Male,134,83,119,49,48,132,150,6.6,28.0,69,154,Non-Anginal Pain,False,2.1,True,Former,6.5,153,5.0,86.7,False,3712,63.6,0 +4861,50,Male,132,75,154,56,71,174,104,5.5,30.6,85,177,Asymptomatic,True,2.6,True,Never,3.5,209,6.0,37.3,True,8055,63.2,0 +4862,38,Female,131,89,194,58,103,190,139,5.8,23.7,78,188,Non-Anginal Pain,True,0.5,False,Never,1.4,203,7.9,62.0,True,5332,42.2,0 +4863,56,Male,162,97,200,38,123,150,93,4.8,29.9,74,156,Asymptomatic,False,1.3,False,Current,9.5,69,7.9,33.1,False,7525,66.6,1 +4864,32,Male,114,72,207,30,156,178,96,5.7,33.5,74,189,Asymptomatic,False,0.3,True,Never,2.2,72,6.0,59.7,False,7776,33.4,0 +4865,42,Female,130,77,226,64,113,200,115,6.1,29.4,73,155,Asymptomatic,False,1.3,False,Never,7.8,214,5.2,37.5,True,6103,59.6,0 +4866,67,Female,145,99,196,65,111,71,155,6.6,23.5,97,137,Atypical Angina,True,1.6,True,Never,3.2,111,4.7,31.7,False,3218,81.5,1 +4867,75,Female,155,94,222,71,108,128,137,6.8,24.4,83,185,Asymptomatic,False,0.0,False,Current,3.2,111,7.7,43.9,True,3857,46.7,0 +4868,60,Male,138,89,171,56,103,45,116,5.7,20.6,62,168,Typical Angina,False,0.2,False,Never,3.7,150,6.4,62.7,True,7212,81.7,0 +4869,56,Male,114,72,138,55,67,72,105,5.0,15.2,91,168,Asymptomatic,False,0.0,False,Never,4.8,133,6.8,63.0,True,5911,61.0,0 +4870,50,Male,126,69,153,41,97,60,112,5.4,24.9,57,177,Asymptomatic,False,0.9,True,Former,3.2,197,7.6,56.6,True,8490,49.8,0 +4871,55,Male,114,74,148,60,65,110,87,5.2,22.5,88,182,Asymptomatic,False,1.4,False,Former,10.3,111,7.8,44.2,True,7027,66.6,0 +4872,54,Male,147,86,220,60,118,212,167,7.0,30.3,89,152,Asymptomatic,True,2.1,False,Current,7.7,170,8.0,31.4,False,7002,50.5,1 +4873,58,Female,141,94,203,49,112,170,131,6.4,28.0,89,148,Non-Anginal Pain,False,1.3,False,Never,4.9,13,9.6,43.5,False,6555,31.2,1 +4874,44,Female,117,63,170,57,76,160,96,5.2,20.7,74,182,Asymptomatic,False,0.3,False,Never,4.6,142,9.7,57.1,True,8664,59.5,0 +4875,56,Female,129,81,184,57,96,127,105,6.2,23.5,74,165,Non-Anginal Pain,False,0.4,True,Never,7.7,222,7.2,40.9,True,6257,83.8,0 +4876,36,Female,125,84,211,50,125,151,131,6.8,32.3,74,169,Non-Anginal Pain,False,0.1,False,Former,1.2,195,9.1,61.6,True,8320,96.9,0 +4877,33,Male,140,84,177,53,95,175,123,6.3,27.3,78,189,Asymptomatic,False,0.4,False,Never,7.5,165,6.6,39.6,True,9574,43.3,0 +4878,68,Male,130,75,212,48,124,241,101,5.2,25.2,72,128,Asymptomatic,True,1.4,False,Never,17.6,40,9.6,24.7,True,7496,36.2,1 +4879,90,Female,130,84,168,43,89,159,121,6.4,29.7,92,129,Typical Angina,True,0.4,True,Former,1.8,110,6.9,48.0,True,5245,63.2,1 +4880,56,Female,112,56,217,73,103,198,152,6.3,26.7,71,166,Non-Anginal Pain,False,0.0,False,Former,1.3,192,6.2,51.7,True,7777,68.6,0 +4881,54,Female,115,76,186,61,91,174,64,4.6,17.8,72,181,Asymptomatic,False,0.2,False,Former,0.1,280,8.9,21.9,True,7025,69.8,0 +4882,71,Female,119,103,230,68,136,129,146,6.0,18.8,82,145,Asymptomatic,False,0.2,True,Never,2.8,76,6.6,30.6,False,5188,54.7,0 +4883,37,Male,117,82,188,72,92,109,110,5.6,22.7,88,200,Atypical Angina,False,1.6,True,Never,19.1,172,7.0,65.2,True,8243,89.2,0 +4884,33,Male,118,72,203,69,100,173,75,4.8,23.8,82,210,Atypical Angina,False,0.2,False,Current,1.7,161,6.1,53.1,True,8180,38.4,0 +4885,63,Female,155,107,242,59,148,167,90,5.6,33.8,91,154,Atypical Angina,True,1.8,False,Former,0.6,132,8.1,73.1,False,5426,40.4,1 +4886,72,Male,134,90,146,65,59,62,113,5.6,20.8,75,142,Typical Angina,False,0.9,False,Never,4.3,72,8.3,64.6,False,8078,65.7,0 +4887,62,Male,123,73,197,42,93,248,124,6.2,29.5,80,166,Asymptomatic,False,0.3,False,Former,12.5,61,5.8,31.9,False,2936,44.2,0 +4888,51,Female,120,64,185,49,101,179,105,5.4,28.1,81,157,Asymptomatic,False,0.8,True,Never,0.8,139,8.2,39.4,False,5760,66.8,0 +4889,77,Male,152,89,145,48,95,35,94,5.1,22.3,85,121,Typical Angina,True,4.1,False,Former,5.5,157,6.6,43.9,True,6885,56.8,1 +4890,47,Female,117,75,167,58,81,173,123,5.6,19.8,73,184,Atypical Angina,False,2.5,False,Former,13.0,158,7.0,42.1,True,7950,62.2,0 +4891,52,Male,135,84,197,49,94,221,127,6.4,29.1,79,174,Non-Anginal Pain,False,2.3,False,Former,1.6,0,6.7,57.7,False,2614,52.2,1 +4892,48,Female,127,86,201,55,122,101,105,6.0,26.0,87,158,Asymptomatic,False,1.5,False,Current,2.2,86,7.2,46.7,False,5720,33.2,1 +4893,38,Female,114,87,154,75,58,112,137,6.1,29.0,84,188,Asymptomatic,False,0.9,False,Never,0.2,165,7.3,50.3,False,6046,75.6,0 +4894,51,Female,113,68,139,55,59,174,101,5.2,21.3,69,190,Asymptomatic,False,1.8,True,Never,9.1,156,6.8,3.2,False,6418,75.0,0 +4895,52,Female,124,83,201,53,127,88,129,6.3,21.2,78,167,Atypical Angina,False,1.5,True,Current,1.9,171,7.4,65.5,True,8245,54.7,0 +4896,52,Female,113,73,182,52,104,191,115,5.4,21.1,100,181,Non-Anginal Pain,False,0.9,True,Current,10.8,201,7.4,44.9,True,7033,70.7,0 +4897,61,Male,131,88,151,53,67,171,145,6.5,26.2,69,140,Asymptomatic,False,0.1,False,Never,14.8,92,8.1,58.6,False,1759,46.9,0 +4898,46,Female,119,63,170,52,102,114,111,6.0,21.6,78,187,Asymptomatic,True,0.4,False,Never,1.6,206,8.3,37.8,True,9173,62.1,0 +4899,70,Female,125,85,225,78,135,131,123,5.7,27.1,81,135,Non-Anginal Pain,False,0.4,True,Never,8.1,189,6.1,17.2,True,3583,69.5,0 +4900,50,Female,121,89,240,62,136,241,119,5.2,22.9,82,160,Asymptomatic,False,1.9,False,Former,1.1,46,6.9,48.8,False,8884,47.0,0 +4901,40,Male,109,72,156,63,79,159,76,4.5,29.2,82,187,Non-Anginal Pain,False,0.7,False,Never,7.9,135,6.8,59.1,False,4003,69.3,0 +4902,39,Female,126,81,239,56,123,253,114,5.5,30.7,90,179,Non-Anginal Pain,False,2.0,False,Former,4.9,74,6.4,36.6,False,5917,49.9,0 +4903,48,Male,143,79,161,18,99,195,144,6.7,27.4,84,167,Asymptomatic,False,0.2,False,Former,2.1,91,5.0,55.7,False,3618,58.0,0 +4904,51,Female,134,94,187,70,108,107,101,5.0,19.9,80,158,Non-Anginal Pain,False,0.3,False,Never,8.7,153,5.6,70.2,False,6289,74.4,0 +4905,59,Female,125,73,210,61,129,119,114,6.0,22.5,72,156,Asymptomatic,False,0.2,False,Never,1.6,168,8.4,46.9,True,5706,60.9,0 +4906,56,Male,135,86,252,67,147,183,153,6.7,27.2,81,150,Non-Anginal Pain,False,0.7,True,Current,2.0,131,8.7,44.1,True,6541,49.3,1 +4907,68,Male,162,106,206,61,104,200,139,6.5,32.6,85,137,Atypical Angina,False,0.1,False,Former,3.1,138,8.6,51.8,False,4287,76.8,1 +4908,48,Female,136,83,190,39,93,266,113,6.3,23.3,85,195,Non-Anginal Pain,False,1.5,False,Former,13.8,133,6.7,36.2,True,3610,49.9,0 +4909,63,Male,120,76,160,51,83,99,109,5.5,20.1,96,158,Asymptomatic,False,2.4,True,Never,4.2,33,7.0,29.7,False,6118,65.7,0 +4910,55,Female,133,94,134,37,84,35,107,5.6,23.3,75,181,Non-Anginal Pain,False,0.9,False,Current,3.5,171,6.5,27.8,False,6330,58.4,0 +4911,62,Male,125,83,201,42,135,176,98,5.4,31.9,92,143,Asymptomatic,False,0.7,False,Never,3.0,99,7.5,69.5,True,4679,70.0,1 +4912,45,Female,111,54,245,68,152,145,117,6.1,26.1,76,182,Atypical Angina,True,0.2,True,Current,1.9,186,8.1,20.8,True,10019,58.0,1 +4913,65,Male,117,75,186,51,116,89,101,5.0,21.5,91,164,Atypical Angina,False,0.3,False,Current,12.2,141,7.8,72.5,True,6749,56.6,0 +4914,41,Female,110,75,139,53,63,164,156,7.0,23.9,72,187,Atypical Angina,False,0.3,False,Former,3.3,214,4.3,42.6,True,5811,45.4,0 +4915,83,Male,123,82,231,34,157,168,167,7.1,28.6,79,105,Atypical Angina,False,0.1,False,Current,4.9,117,6.1,44.8,False,8537,56.6,1 +4916,34,Male,125,84,144,39,90,79,119,5.8,25.1,65,188,Asymptomatic,False,1.4,True,Never,2.8,173,6.3,47.5,False,3272,67.0,0 +4917,48,Male,123,82,176,73,89,123,119,6.0,22.6,65,170,Typical Angina,False,0.5,True,Never,2.9,242,7.1,48.6,True,8195,80.6,0 +4918,53,Male,129,83,201,52,103,183,108,5.0,22.1,72,168,Atypical Angina,False,0.8,False,Never,3.0,134,6.7,63.0,False,3862,63.0,0 +4919,74,Female,142,106,213,58,119,226,110,5.5,27.6,82,120,Asymptomatic,True,0.8,False,Never,10.9,119,6.0,34.4,False,4050,48.9,1 +4920,76,Female,143,87,197,68,98,176,116,6.1,17.7,72,142,Asymptomatic,False,0.4,False,Never,23.6,261,7.6,42.6,False,3678,49.3,0 +4921,41,Female,115,62,186,57,92,126,123,6.2,24.8,83,171,Non-Anginal Pain,False,0.4,False,Former,13.1,86,6.7,47.3,False,5902,44.2,1 +4922,70,Female,165,95,229,65,120,182,153,7.0,35.2,102,126,Non-Anginal Pain,False,0.5,False,Never,1.5,105,5.4,62.9,False,5306,40.1,1 +4923,35,Female,131,77,190,69,81,183,106,6.1,27.9,87,199,Non-Anginal Pain,False,1.1,False,Former,7.4,176,7.8,84.0,False,6416,73.2,0 +4924,78,Male,140,91,206,64,95,212,152,6.9,26.1,70,153,Asymptomatic,False,0.6,False,Never,9.7,117,7.5,58.2,True,3822,51.6,0 +4925,48,Female,128,83,163,58,70,203,127,5.8,28.0,80,150,Asymptomatic,False,0.7,True,Current,9.3,188,8.7,27.7,False,6025,59.6,1 +4926,61,Female,148,98,222,53,134,171,150,6.5,25.3,81,144,Non-Anginal Pain,False,0.8,True,Never,11.9,0,6.5,50.3,True,7708,69.4,1 +4927,57,Female,142,96,197,58,128,144,155,7.7,34.1,76,154,Typical Angina,False,1.8,False,Former,4.8,111,7.9,47.9,False,5535,53.9,1 +4928,43,Female,113,73,186,57,98,121,126,5.9,28.7,83,189,Typical Angina,False,1.7,False,Former,4.0,98,7.2,39.7,False,5264,61.5,0 +4929,55,Male,121,82,198,43,132,149,132,6.1,31.8,95,150,Asymptomatic,True,1.6,True,Current,2.0,10,5.5,41.6,False,6189,51.2,1 +4930,59,Male,130,87,184,41,136,37,94,5.0,27.1,85,160,Atypical Angina,False,1.0,False,Former,4.1,206,6.4,68.2,False,4879,73.3,0 +4931,39,Male,116,83,154,41,85,93,135,5.7,22.7,78,194,Atypical Angina,False,0.4,True,Former,2.9,143,8.0,52.1,True,7798,74.1,0 +4932,59,Male,128,78,182,40,101,183,93,4.8,21.5,86,170,Asymptomatic,False,0.2,False,Never,7.7,309,5.8,40.5,True,8789,63.0,0 +4933,52,Female,136,80,255,79,147,125,143,6.3,25.7,96,159,Typical Angina,False,0.4,False,Current,2.1,129,7.8,45.9,True,8347,47.5,0 +4934,44,Female,124,77,190,66,89,90,108,5.7,19.2,81,191,Asymptomatic,False,0.6,False,Never,7.8,91,5.6,44.1,True,7229,68.6,0 +4935,68,Male,123,81,200,66,89,152,152,6.4,29.0,78,147,Asymptomatic,False,0.9,False,Former,3.0,67,5.9,51.9,True,3451,87.5,0 +4936,45,Female,97,55,144,70,68,69,95,4.4,15.0,71,179,Non-Anginal Pain,False,0.4,True,Never,2.2,152,6.6,56.5,True,7860,81.3,0 +4937,33,Male,122,80,168,42,89,180,71,4.9,30.1,89,187,Asymptomatic,False,0.4,False,Never,12.1,133,8.2,68.4,True,7198,46.4,0 +4938,63,Male,138,83,213,53,108,178,101,5.4,31.7,88,145,Atypical Angina,True,1.0,False,Never,6.7,40,4.9,62.2,False,5736,65.6,1 +4939,41,Male,116,63,145,56,74,46,93,5.5,20.1,73,192,Non-Anginal Pain,False,0.4,True,Never,7.4,206,8.5,50.5,True,5994,59.4,0 +4940,55,Male,134,83,199,77,93,162,102,5.5,23.6,94,162,Asymptomatic,False,1.5,False,Never,9.5,185,6.9,51.0,True,5877,59.3,0 +4941,42,Male,117,77,209,63,122,139,85,4.8,26.4,68,181,Non-Anginal Pain,False,2.0,True,Former,3.5,217,6.1,43.8,True,9897,59.0,0 +4942,71,Male,156,109,165,42,95,181,137,6.0,30.5,87,135,Asymptomatic,False,0.2,False,Never,31.3,30,6.1,45.1,False,3212,30.7,1 +4943,56,Female,147,88,172,55,88,123,157,6.9,37.8,78,164,Asymptomatic,False,1.3,True,Never,2.8,184,7.6,18.1,False,9705,58.7,0 +4944,63,Male,112,82,190,54,113,158,130,6.1,21.7,87,128,Asymptomatic,True,1.4,True,Never,9.1,103,7.0,48.3,True,9510,51.4,1 +4945,46,Male,116,72,163,57,86,132,145,6.4,32.7,93,148,Non-Anginal Pain,False,3.9,False,Never,2.3,92,7.1,64.8,True,7066,60.1,1 +4946,42,Female,141,86,211,52,107,245,78,4.9,32.8,104,177,Atypical Angina,False,0.2,False,Former,17.9,85,6.7,75.1,False,5592,56.2,0 +4947,53,Female,140,79,184,65,93,120,103,5.1,20.2,77,160,Typical Angina,False,0.0,False,Never,2.5,111,5.9,34.9,False,2630,54.2,0 +4948,62,Male,126,80,193,73,117,63,105,4.7,16.8,83,127,Atypical Angina,True,1.9,True,Never,4.6,205,5.4,23.4,False,3049,61.8,1 +4949,62,Male,138,86,206,44,129,157,136,5.8,30.9,89,137,Typical Angina,False,2.6,True,Current,3.4,93,6.4,40.3,False,6536,52.7,0 +4950,74,Female,138,73,183,76,68,141,82,4.9,19.4,87,146,Atypical Angina,True,0.1,False,Former,0.9,86,8.2,62.0,True,7902,76.6,0 +4951,58,Female,147,85,190,44,119,186,135,6.3,28.7,80,144,Non-Anginal Pain,True,1.2,False,Current,9.6,156,7.7,49.1,False,5013,64.3,1 +4952,75,Male,149,86,191,34,124,164,132,5.8,33.2,79,131,Non-Anginal Pain,True,0.9,False,Never,6.6,150,7.2,46.3,True,7273,51.1,1 +4953,40,Female,108,73,151,71,68,81,132,6.1,26.7,81,201,Asymptomatic,False,2.0,False,Current,0.3,200,7.4,56.9,True,10070,60.0,0 +4954,50,Male,115,79,180,70,92,124,96,5.1,25.6,77,181,Non-Anginal Pain,False,1.3,True,Never,5.3,179,7.4,44.2,True,6375,57.5,0 +4955,41,Male,109,67,162,39,93,186,99,5.2,26.2,74,178,Asymptomatic,False,0.6,False,Never,4.6,216,5.6,41.2,True,8900,42.8,0 +4956,56,Female,109,63,191,60,101,67,113,5.4,23.0,74,170,Non-Anginal Pain,False,1.0,False,Never,4.4,236,6.2,25.1,False,7554,64.8,0 +4957,42,Female,152,74,237,59,142,200,118,6.3,28.2,75,201,Asymptomatic,False,0.4,False,Current,8.4,135,7.2,52.1,True,6821,51.9,0 +4958,61,Male,114,73,197,49,91,209,89,4.8,22.9,76,169,Atypical Angina,True,1.2,False,Former,9.7,101,5.9,43.9,False,5213,59.2,1 +4959,54,Male,123,87,183,51,109,125,98,5.2,23.2,90,179,Non-Anginal Pain,False,0.7,False,Former,3.2,158,7.6,71.0,False,2794,64.3,0 +4960,57,Male,139,84,146,57,49,190,135,6.0,28.9,88,165,Atypical Angina,True,1.2,False,Former,11.0,188,7.8,51.1,False,6936,47.7,0 +4961,58,Male,122,76,209,48,135,133,119,5.4,19.0,78,157,Asymptomatic,False,0.6,False,Former,3.5,152,7.8,65.1,False,4594,63.3,0 +4962,50,Male,136,73,127,40,55,100,116,5.7,26.8,73,184,Non-Anginal Pain,False,0.8,False,Never,5.2,97,5.7,34.3,True,8257,78.3,0 +4963,68,Male,119,62,123,65,35,112,115,5.4,16.6,73,168,Atypical Angina,False,0.3,True,Never,4.7,238,6.6,57.1,True,6104,57.8,0 +4964,81,Female,153,98,208,68,122,124,134,5.9,22.3,69,125,Asymptomatic,False,0.4,False,Never,0.4,31,8.0,50.0,True,6960,67.5,0 +4965,61,Female,157,95,158,64,58,218,81,5.0,21.9,80,164,Asymptomatic,False,0.7,True,Former,2.2,167,7.0,42.3,True,3363,48.1,0 +4966,57,Male,132,88,180,58,109,122,127,5.9,26.6,85,173,Asymptomatic,False,0.6,False,Never,10.4,22,4.9,47.9,False,5412,70.3,0 +4967,61,Male,129,79,176,57,93,132,116,5.8,26.5,79,164,Asymptomatic,False,0.8,False,Never,14.7,190,6.8,54.3,False,6426,65.4,0 +4968,47,Female,127,79,222,55,130,209,94,5.6,23.9,75,178,Typical Angina,False,2.0,False,Never,3.8,218,7.8,42.2,True,8255,35.3,1 +4969,43,Male,125,78,151,68,42,206,121,5.6,18.5,73,163,Asymptomatic,False,1.3,False,Never,7.6,121,6.2,64.4,False,6733,42.4,0 +4970,46,Female,120,65,201,56,114,111,122,6.0,21.3,91,181,Non-Anginal Pain,False,0.0,False,Former,0.7,86,9.1,49.8,False,8843,57.6,0 +4971,60,Female,131,71,200,45,117,252,124,6.6,21.3,74,136,Atypical Angina,True,0.8,False,Current,4.3,134,6.6,37.4,True,8487,27.6,1 +4972,58,Male,131,79,161,49,67,178,137,6.5,30.3,88,156,Asymptomatic,False,0.7,False,Former,4.1,115,6.7,48.1,False,3343,48.6,0 +4973,75,Male,131,90,206,47,109,252,119,5.3,24.8,98,132,Non-Anginal Pain,False,1.5,False,Never,3.0,122,7.7,41.5,False,3623,54.8,1 +4974,36,Female,115,88,198,54,110,141,94,5.2,25.5,88,199,Asymptomatic,True,0.3,False,Never,9.1,239,6.8,87.4,False,9668,58.7,0 +4975,61,Male,127,77,252,78,132,157,101,4.9,18.4,69,172,Typical Angina,False,0.1,False,Never,5.4,283,8.3,44.8,True,8349,76.1,0 +4976,72,Male,131,83,259,82,142,166,112,5.7,25.2,88,155,Asymptomatic,True,0.7,False,Current,11.5,230,6.3,40.3,True,8890,60.5,0 +4977,39,Male,127,76,160,60,96,112,73,4.6,15.5,81,210,Asymptomatic,False,0.2,False,Former,2.0,90,6.9,47.6,False,4168,48.5,0 +4978,66,Male,138,81,209,59,129,123,129,6.6,33.8,70,172,Non-Anginal Pain,False,0.5,False,Never,15.8,152,7.1,69.5,True,7141,59.5,0 +4979,62,Male,150,91,183,36,118,189,93,5.1,29.1,97,159,Atypical Angina,True,0.7,True,Never,7.6,94,8.4,41.5,False,3935,48.0,1 +4980,55,Male,134,85,182,73,99,153,141,6.3,24.0,94,157,Typical Angina,True,0.5,True,Never,6.9,202,6.7,56.1,True,8068,53.6,1 +4981,34,Female,125,74,214,44,130,168,131,6.5,27.2,76,192,Asymptomatic,False,2.0,False,Current,4.4,120,8.7,7.4,False,5571,39.5,0 +4982,45,Male,132,103,190,54,97,180,112,6.2,25.0,67,170,Atypical Angina,False,0.9,False,Never,2.0,170,7.6,78.6,False,3834,47.0,0 +4983,65,Male,118,68,160,61,71,135,111,5.6,18.2,87,170,Non-Anginal Pain,False,0.6,False,Former,2.6,86,8.6,52.3,False,6175,30.5,0 +4984,67,Female,136,77,202,70,88,145,122,5.9,21.2,89,152,Non-Anginal Pain,False,0.6,False,Current,3.5,101,5.8,55.8,True,6282,66.8,0 +4985,53,Male,116,69,120,68,35,154,109,5.9,19.4,78,180,Asymptomatic,False,0.8,False,Former,2.0,224,5.5,67.0,False,6941,47.6,0 +4986,51,Male,107,65,215,47,149,151,117,6.5,19.8,97,169,Asymptomatic,False,0.7,False,Current,3.5,41,8.7,47.5,False,3502,43.7,0 +4987,71,Female,134,83,215,56,118,192,186,7.3,34.3,101,150,Asymptomatic,False,1.8,False,Current,0.9,54,7.9,57.2,False,733,33.1,1 +4988,57,Female,125,78,197,43,129,149,65,4.4,21.1,65,161,Typical Angina,False,1.6,True,Former,8.0,88,5.7,53.2,True,9972,62.3,1 +4989,62,Male,125,76,146,47,81,95,87,5.2,16.1,83,156,Non-Anginal Pain,True,0.6,False,Current,2.3,187,9.0,56.1,False,7133,72.4,1 +4990,64,Male,145,97,172,90,53,147,116,5.7,29.7,77,153,Asymptomatic,False,0.4,False,Former,13.0,251,7.4,23.7,True,6647,76.9,0 +4991,31,Female,127,80,197,61,102,153,105,6.0,22.7,75,182,Asymptomatic,False,1.6,False,Former,4.8,129,6.9,61.2,False,4772,85.5,0 +4992,90,Male,144,85,218,44,130,233,188,7.7,27.2,92,122,Typical Angina,False,0.5,False,Never,15.9,12,8.0,62.6,False,916,47.1,1 +4993,62,Female,148,97,176,67,90,125,147,6.7,28.1,89,160,Atypical Angina,False,0.6,True,Never,0.6,113,5.1,42.4,False,7454,64.4,0 +4994,79,Male,134,92,190,46,102,115,119,5.5,26.2,78,118,Non-Anginal Pain,True,1.1,False,Never,3.8,0,4.0,55.9,False,7839,60.0,1 +4995,45,Male,125,70,216,55,114,229,100,5.1,23.7,81,179,Non-Anginal Pain,False,0.3,False,Never,4.9,233,7.4,42.6,True,10121,44.9,0 +4996,34,Female,131,84,217,57,124,131,124,5.6,25.4,85,191,Asymptomatic,False,0.3,True,Former,2.0,102,9.7,42.5,True,6802,68.3,0 +4997,62,Male,133,61,153,54,78,177,157,6.7,23.6,77,164,Atypical Angina,False,0.2,False,Former,3.7,186,7.4,50.4,True,9803,48.7,0 +4998,34,Female,123,92,173,53,84,173,99,5.1,26.9,74,188,Asymptomatic,False,0.5,False,Never,4.7,168,5.6,28.7,True,10009,70.1,0 +4999,46,Male,136,88,188,49,103,173,93,5.0,31.9,81,187,Non-Anginal Pain,False,0.2,True,Never,8.5,70,6.6,51.4,True,6114,56.3,0 +5000,54,Female,143,95,192,72,86,207,109,5.9,20.3,75,171,Non-Anginal Pain,False,0.3,False,Never,0.5,211,7.3,62.7,False,7907,59.2,0 +5001,38,Female,111,71,180,64,95,123,117,5.6,20.9,79,175,Non-Anginal Pain,False,1.0,True,Never,0.9,207,7.9,3.8,True,5715,59.6,0 +5002,56,Male,128,75,144,43,80,170,85,4.5,28.9,69,170,Non-Anginal Pain,False,0.3,False,Never,4.9,100,7.3,24.9,False,4762,70.4,0 +5003,54,Female,124,77,305,73,177,245,137,6.4,24.1,73,173,Asymptomatic,False,0.7,False,Never,3.7,232,7.7,18.8,True,6576,77.4,0 +5004,51,Male,135,96,159,61,82,100,101,5.3,20.9,76,178,Asymptomatic,False,0.1,True,Former,6.0,159,6.0,54.8,True,9375,83.0,0 +5005,48,Male,116,70,157,55,81,96,112,5.2,24.7,65,158,Atypical Angina,False,0.4,False,Current,1.6,222,7.7,42.2,True,8518,69.4,0 +5006,72,Female,130,80,187,50,109,172,163,7.4,27.8,87,146,Asymptomatic,True,0.3,True,Never,4.7,93,5.4,34.0,True,8440,69.0,1 +5007,55,Male,135,85,210,55,129,163,131,5.9,28.4,84,170,Asymptomatic,False,0.1,True,Former,8.7,203,8.7,85.0,True,6982,53.3,0 +5008,57,Male,142,81,227,55,143,130,105,5.5,23.3,73,166,Asymptomatic,False,0.5,False,Never,12.8,187,7.4,45.9,True,7017,63.5,0 +5009,60,Female,149,89,168,55,95,120,125,5.1,26.6,89,161,Asymptomatic,False,0.2,False,Never,6.1,122,6.3,26.9,True,6188,42.3,0 +5010,45,Male,109,76,228,71,105,194,99,5.3,27.7,68,154,Asymptomatic,True,0.1,False,Current,2.5,164,7.0,68.9,True,4876,44.8,1 +5011,51,Male,125,77,125,44,66,54,104,5.4,18.9,66,184,Typical Angina,False,1.9,False,Never,2.0,192,7.9,40.6,True,6824,70.8,0 +5012,84,Male,143,90,179,44,95,175,104,5.3,25.6,67,131,Atypical Angina,True,1.1,True,Never,6.1,105,8.2,36.3,False,6416,8.1,1 +5013,46,Male,130,86,167,52,93,148,137,6.2,28.1,82,172,Asymptomatic,True,0.1,False,Current,10.5,86,7.8,74.3,False,5083,48.4,1 +5014,75,Male,124,85,199,54,118,152,97,5.1,18.4,95,132,Atypical Angina,False,4.7,True,Never,4.3,155,7.1,32.1,True,7053,68.9,1 +5015,32,Female,138,86,223,42,137,211,136,6.2,30.5,91,180,Asymptomatic,False,0.2,False,Former,18.4,54,6.2,71.3,False,5411,31.5,1 +5016,57,Male,132,82,156,63,97,35,107,5.2,21.6,79,167,Non-Anginal Pain,False,0.6,False,Never,5.4,233,6.7,53.0,False,4959,83.2,0 +5017,48,Male,131,83,177,46,99,89,115,5.1,29.9,90,179,Asymptomatic,False,1.0,True,Current,8.2,94,8.3,38.7,False,6835,48.1,0 +5018,58,Female,107,61,212,74,97,184,96,5.2,27.2,100,154,Non-Anginal Pain,False,0.7,False,Current,5.3,115,6.9,48.7,True,7862,32.8,0 +5019,63,Male,144,95,110,49,36,122,135,6.8,20.3,83,132,Asymptomatic,False,1.4,False,Never,2.3,103,6.5,35.2,False,7551,82.1,1 +5020,62,Male,121,77,124,33,60,133,116,5.7,22.8,87,157,Atypical Angina,True,0.8,False,Never,6.9,136,9.0,39.6,False,5124,61.8,0 +5021,44,Female,133,83,149,33,101,113,97,4.8,24.4,70,183,Asymptomatic,False,0.5,True,Never,4.9,178,7.8,57.7,False,2844,59.4,0 +5022,41,Female,127,62,178,76,88,110,92,5.2,23.0,89,183,Asymptomatic,False,0.9,False,Former,1.9,210,7.4,63.3,True,5582,43.8,0 +5023,61,Male,126,78,177,54,100,108,98,4.8,17.5,73,145,Non-Anginal Pain,False,1.5,True,Former,9.5,190,8.8,45.2,False,5914,75.2,0 +5024,70,Male,110,81,204,62,113,124,123,5.7,24.6,67,133,Atypical Angina,False,0.5,False,Former,4.2,265,7.0,66.1,False,7834,68.8,0 +5025,62,Male,123,70,163,57,81,166,132,6.7,27.3,88,141,Asymptomatic,False,1.0,False,Never,2.6,105,6.8,49.3,True,6191,71.5,1 +5026,73,Female,126,82,249,58,149,230,152,6.8,20.9,80,153,Typical Angina,False,1.9,False,Former,6.5,215,7.2,43.8,False,6989,57.4,1 +5027,46,Male,121,80,207,44,128,185,141,6.8,22.6,73,157,Asymptomatic,True,0.6,False,Never,5.3,111,6.8,23.6,True,6472,47.2,1 +5028,42,Male,117,74,193,49,126,67,121,5.8,18.1,83,184,Asymptomatic,False,0.1,False,Current,2.0,142,6.8,48.9,False,9237,57.5,0 +5029,49,Female,120,77,120,39,53,194,121,6.2,32.2,76,182,Atypical Angina,False,0.8,False,Never,0.3,100,7.3,50.0,False,3780,68.7,0 +5030,67,Female,141,85,211,80,99,109,147,7.1,29.0,86,179,Asymptomatic,False,1.0,False,Never,1.8,229,8.5,65.2,False,2932,81.3,0 +5031,50,Male,123,85,197,47,121,191,104,5.2,27.0,78,170,Asymptomatic,False,0.4,False,Never,6.1,244,6.9,58.7,False,7056,75.8,0 +5032,40,Male,125,80,190,52,104,189,108,5.6,39.3,92,191,Asymptomatic,False,0.7,False,Never,5.8,148,7.7,53.9,True,8297,69.7,0 +5033,65,Male,112,81,185,40,118,117,106,5.4,26.8,84,150,Asymptomatic,False,0.7,False,Never,5.5,115,6.3,46.6,True,5054,55.9,0 +5034,47,Male,135,74,165,46,74,131,144,5.8,21.7,79,176,Asymptomatic,True,0.8,False,Never,5.8,182,8.7,60.9,True,10886,78.8,0 +5035,45,Female,146,82,233,62,128,195,107,5.8,27.0,75,169,Asymptomatic,False,1.0,True,Former,7.0,250,5.4,45.1,True,6190,78.8,0 +5036,37,Male,102,62,93,44,40,55,93,4.7,17.4,81,184,Non-Anginal Pain,False,0.7,True,Never,3.4,175,7.3,34.1,False,4554,78.8,0 +5037,61,Male,116,86,141,55,41,157,126,6.2,17.9,97,150,Asymptomatic,True,0.2,True,Never,6.7,196,7.6,81.6,True,8614,96.8,1 +5038,56,Female,116,81,233,50,140,176,141,6.6,29.2,89,122,Asymptomatic,False,1.1,False,Former,7.9,51,7.1,33.1,False,4006,27.9,1 +5039,66,Male,127,84,211,67,128,148,135,5.9,22.4,79,169,Asymptomatic,False,1.4,True,Never,3.3,198,6.1,48.1,False,5922,56.0,0 +5040,49,Female,124,75,147,49,81,145,115,5.3,15.0,80,177,Asymptomatic,False,1.5,False,Never,6.9,130,7.8,28.4,False,7412,79.5,0 +5041,57,Male,139,82,201,58,101,172,177,7.0,24.1,83,158,Asymptomatic,False,0.3,False,Never,6.7,97,6.0,62.2,False,4173,57.0,0 +5042,70,Female,114,70,158,53,75,174,119,5.8,30.4,92,123,Asymptomatic,False,1.1,False,Never,3.8,45,6.8,71.0,False,3193,43.8,1 +5043,42,Female,128,74,228,55,116,190,110,5.4,30.7,87,147,Non-Anginal Pain,False,1.2,True,Never,1.4,39,6.6,51.0,True,6907,41.4,0 +5044,79,Female,131,84,156,48,96,87,142,6.1,20.2,75,131,Asymptomatic,False,0.1,True,Never,0.2,175,7.2,51.1,True,7066,75.9,0 +5045,57,Female,146,96,153,37,89,123,131,6.4,28.0,75,155,Asymptomatic,False,4.2,True,Current,3.4,59,8.2,69.1,True,5908,79.6,1 +5046,52,Male,139,103,199,52,117,119,113,5.6,26.1,78,160,Asymptomatic,False,0.6,False,Former,3.0,156,7.7,36.3,True,6097,70.8,0 +5047,61,Female,127,83,264,59,175,144,144,6.4,31.2,81,162,Atypical Angina,False,0.5,False,Current,5.8,222,7.4,22.2,True,9017,43.5,0 +5048,58,Male,122,76,169,61,84,173,109,5.8,25.5,86,156,Non-Anginal Pain,True,0.4,False,Never,5.4,128,7.3,44.0,True,5541,72.3,0 +5049,50,Male,118,66,213,63,112,180,94,4.9,30.3,70,176,Asymptomatic,False,1.3,False,Former,11.1,196,7.1,26.5,True,6639,60.9,0 +5050,56,Female,131,75,256,74,137,240,129,6.6,30.8,75,172,Non-Anginal Pain,False,0.5,False,Never,4.1,136,8.1,57.3,True,7295,63.2,0 +5051,64,Female,143,81,262,74,157,107,124,5.9,23.1,65,155,Atypical Angina,True,1.6,True,Never,4.9,103,9.2,53.8,False,1674,63.9,1 +5052,76,Male,151,97,234,22,191,158,118,5.7,25.5,84,132,Non-Anginal Pain,True,1.8,False,Current,9.2,91,6.8,62.5,True,8030,41.5,1 +5053,70,Female,161,95,202,48,118,136,127,6.4,30.9,79,136,Atypical Angina,False,2.0,True,Never,2.1,87,5.5,42.2,False,2888,58.4,1 +5054,72,Male,147,81,225,39,132,198,108,6.0,24.9,77,146,Asymptomatic,False,0.8,False,Former,5.0,158,7.9,74.0,True,6336,34.4,1 +5055,65,Female,143,86,159,51,83,132,86,5.0,24.8,85,150,Non-Anginal Pain,False,1.0,False,Never,0.7,146,4.8,29.8,True,10193,44.0,0 +5056,56,Female,142,84,181,49,113,156,133,6.7,30.3,93,135,Non-Anginal Pain,True,0.5,False,Current,6.6,127,8.0,55.7,False,3183,55.9,1 +5057,42,Female,136,85,171,74,88,90,78,4.0,25.5,96,169,Non-Anginal Pain,False,1.0,False,Former,0.4,221,7.0,52.3,True,7171,86.6,0 +5058,52,Female,92,50,199,63,112,108,125,5.5,19.0,70,172,Asymptomatic,False,1.9,True,Never,6.9,263,6.0,36.7,True,10399,84.7,0 +5059,46,Female,146,89,185,37,95,227,97,5.4,25.4,90,160,Asymptomatic,False,0.9,False,Never,7.2,35,4.4,59.6,True,7560,52.6,0 +5060,64,Male,114,72,164,65,55,181,90,5.2,23.9,79,173,Asymptomatic,False,1.0,True,Former,8.7,192,8.1,63.0,True,7485,80.3,0 +5061,24,Female,134,97,166,49,85,157,121,5.7,31.8,85,192,Asymptomatic,False,0.7,False,Never,2.5,54,6.5,44.6,False,5075,48.7,0 +5062,50,Male,152,87,128,63,53,86,110,5.0,28.4,89,158,Asymptomatic,False,0.2,False,Never,2.4,81,7.3,52.5,True,5888,89.1,0 +5063,61,Female,129,90,154,59,59,196,147,6.1,25.4,92,153,Typical Angina,False,0.3,True,Current,0.2,149,4.4,32.7,True,6144,69.5,0 +5064,59,Male,136,80,258,78,130,160,149,7.0,22.5,82,149,Non-Anginal Pain,False,1.6,False,Former,3.2,114,7.0,28.6,False,6310,36.5,0 +5065,60,Male,112,75,197,41,109,252,116,5.6,28.7,80,142,Asymptomatic,True,2.0,False,Current,17.9,198,7.4,20.6,True,8481,64.8,1 +5066,59,Male,124,76,188,55,127,114,133,5.7,26.4,76,173,Typical Angina,False,0.6,False,Current,3.1,76,7.3,60.6,False,5815,52.6,0 +5067,37,Male,116,67,163,54,67,196,107,6.1,27.0,83,191,Asymptomatic,False,1.6,False,Former,3.9,0,5.3,39.5,False,8698,25.2,0 +5068,72,Male,131,80,166,33,88,250,128,5.9,33.8,91,133,Typical Angina,True,0.7,True,Current,8.8,81,6.7,50.4,True,9066,52.4,1 +5069,66,Female,143,91,191,44,105,183,115,5.9,26.4,75,109,Non-Anginal Pain,True,6.5,False,Never,9.2,46,5.2,39.2,False,4782,70.6,1 +5070,71,Male,129,82,194,48,127,192,86,4.9,30.7,75,145,Asymptomatic,False,1.2,False,Never,15.5,80,8.8,53.1,True,8260,28.3,1 +5071,58,Male,128,79,177,50,90,160,117,5.5,27.9,89,168,Non-Anginal Pain,False,1.4,False,Never,3.7,146,6.3,73.0,True,5178,75.3,0 +5072,50,Male,113,76,184,64,103,105,119,5.7,18.9,89,178,Atypical Angina,True,0.3,False,Former,6.7,156,7.2,79.0,False,5712,85.7,0 +5073,66,Female,123,71,207,64,111,155,89,5.2,24.2,92,136,Asymptomatic,False,3.6,True,Former,3.5,106,5.6,38.0,False,7709,65.7,1 +5074,47,Male,134,86,193,42,125,121,85,4.7,19.4,75,139,Atypical Angina,True,3.8,False,Never,2.0,111,7.2,56.4,False,3037,56.8,1 +5075,41,Female,139,82,199,63,93,190,124,5.6,28.6,78,174,Non-Anginal Pain,False,0.2,False,Never,4.0,117,7.9,50.2,False,6813,71.1,0 +5076,30,Male,101,59,213,48,151,119,143,6.8,24.2,83,169,Asymptomatic,False,2.2,False,Current,4.3,203,8.9,37.4,True,9497,65.6,1 +5077,44,Male,146,88,228,46,148,165,149,6.0,30.5,97,163,Asymptomatic,False,0.2,False,Former,16.3,87,6.9,75.4,False,4301,46.3,1 +5078,52,Female,116,73,118,55,56,77,153,7.3,25.7,71,186,Asymptomatic,False,0.8,False,Current,2.5,119,7.5,65.3,True,5866,61.0,0 +5079,35,Male,118,95,139,59,71,35,129,6.3,20.9,83,184,Asymptomatic,False,0.6,True,Never,1.7,146,5.8,58.7,True,6071,64.6,0 +5080,32,Male,118,72,200,57,103,186,91,5.3,26.3,81,178,Asymptomatic,False,0.7,False,Former,3.3,106,6.6,50.7,False,2758,54.2,0 +5081,46,Female,128,101,219,56,127,163,97,5.4,33.3,90,171,Non-Anginal Pain,False,0.4,False,Never,0.1,185,6.5,18.8,True,7730,45.5,0 +5082,67,Female,146,80,183,52,99,192,121,5.5,16.9,71,155,Asymptomatic,False,0.3,False,Former,7.5,23,6.8,57.9,False,2762,55.4,0 +5083,50,Male,133,95,161,48,87,134,106,5.2,28.9,69,152,Non-Anginal Pain,False,1.0,False,Never,2.1,24,6.8,70.0,False,1053,57.1,1 +5084,58,Male,126,82,138,51,60,158,121,5.6,26.2,88,144,Asymptomatic,False,2.0,False,Never,2.4,203,6.8,54.4,True,6569,62.9,0 +5085,40,Male,153,99,163,48,86,102,110,6.0,24.7,67,174,Non-Anginal Pain,False,0.2,True,Never,7.6,70,7.2,56.5,False,5709,67.7,0 +5086,56,Male,122,78,183,67,80,122,142,6.3,20.8,68,160,Asymptomatic,True,0.2,False,Never,2.3,198,7.0,32.3,False,6683,78.6,0 +5087,61,Male,124,90,232,49,142,198,127,6.5,26.7,80,143,Typical Angina,True,2.0,True,Current,9.9,112,7.5,41.5,True,6016,74.3,1 +5088,37,Male,132,70,221,71,116,113,119,5.9,28.6,85,184,Non-Anginal Pain,False,0.4,False,Never,1.7,119,5.0,36.3,True,5090,65.2,0 +5089,47,Male,120,77,195,63,118,113,139,6.5,19.8,83,188,Asymptomatic,True,0.7,False,Current,4.3,221,6.3,59.6,False,5520,36.7,0 +5090,49,Male,129,93,227,56,121,177,138,6.7,24.8,73,169,Non-Anginal Pain,False,0.4,False,Never,6.7,134,6.6,21.4,False,7041,44.0,0 +5091,59,Male,134,89,170,49,96,150,138,6.8,27.9,84,170,Asymptomatic,False,0.3,False,Current,2.5,74,8.6,41.8,False,2772,74.4,0 +5092,46,Female,146,89,193,51,119,130,145,6.7,33.0,101,172,Atypical Angina,True,1.5,False,Never,16.8,96,5.9,64.6,False,4640,42.9,1 +5093,32,Male,90,63,127,58,69,75,80,4.4,15.0,74,188,Asymptomatic,False,0.9,False,Former,2.7,264,8.0,66.0,True,9744,78.6,0 +5094,47,Male,111,69,189,26,132,134,156,6.7,28.9,74,156,Asymptomatic,False,0.3,False,Current,8.0,121,6.6,50.3,True,5087,42.1,1 +5095,72,Female,140,94,173,58,82,180,101,5.4,31.8,87,142,Asymptomatic,False,1.1,False,Never,0.0,3,5.1,41.3,False,829,53.2,1 +5096,71,Male,139,94,195,44,107,153,92,5.4,26.3,80,156,Atypical Angina,False,0.6,False,Never,6.8,164,5.5,58.0,False,4700,51.6,0 +5097,47,Female,123,64,183,45,118,154,102,6.0,29.3,85,173,Asymptomatic,True,1.0,True,Never,1.0,51,7.6,70.9,True,6177,53.2,1 +5098,43,Male,100,70,198,26,116,190,117,5.4,23.8,77,192,Non-Anginal Pain,False,0.5,True,Never,12.2,113,6.1,36.2,True,8392,43.4,0 +5099,41,Female,116,79,138,46,68,214,166,7.0,28.9,75,180,Asymptomatic,True,0.7,False,Never,2.4,166,5.6,35.6,True,9447,75.1,0 +5100,49,Female,117,68,162,32,84,189,165,7.0,27.1,83,167,Asymptomatic,False,1.6,False,Former,4.3,12,8.2,51.2,False,2968,36.7,1 +5101,56,Male,120,75,149,22,116,72,148,7.3,23.0,96,132,Typical Angina,False,0.9,False,Current,9.6,40,6.8,71.8,True,5034,51.7,1 +5102,64,Male,117,68,159,59,66,180,120,5.7,24.0,78,152,Non-Anginal Pain,False,0.3,False,Never,3.5,205,6.7,56.5,True,6807,74.1,0 +5103,76,Female,114,61,212,66,114,159,132,6.1,26.6,81,123,Atypical Angina,False,1.6,False,Never,0.6,90,7.6,53.7,False,3341,44.0,1 +5104,52,Male,138,87,186,41,105,180,128,5.9,28.0,81,155,Non-Anginal Pain,False,0.9,True,Never,18.1,171,7.4,49.7,False,3734,75.1,1 +5105,77,Male,138,97,205,55,125,110,123,5.9,24.8,90,144,Asymptomatic,True,0.8,False,Never,6.7,68,5.1,70.1,True,4786,58.6,1 +5106,68,Female,128,88,164,45,106,85,152,6.8,25.7,94,143,Asymptomatic,True,1.4,False,Former,3.3,94,8.4,48.7,True,7314,45.9,1 +5107,51,Male,141,79,110,32,52,89,116,5.5,26.7,73,158,Typical Angina,False,1.1,False,Former,1.8,123,7.7,53.6,False,3996,71.1,0 +5108,36,Female,123,89,163,59,81,152,128,6.0,25.4,87,183,Non-Anginal Pain,False,0.3,False,Never,0.7,156,7.9,77.9,False,4024,59.0,0 +5109,53,Male,142,90,152,65,61,126,110,5.8,27.9,95,171,Asymptomatic,False,0.7,False,Former,8.3,135,7.5,44.0,False,7761,60.5,0 +5110,75,Female,146,85,152,65,56,139,161,6.7,21.5,63,144,Asymptomatic,False,0.8,False,Never,8.2,229,9.4,46.0,True,9047,65.7,0 +5111,52,Male,142,74,140,46,65,150,60,4.4,24.8,87,146,Atypical Angina,True,3.0,False,Never,4.6,47,7.1,65.3,False,4164,58.5,1 +5112,77,Male,137,82,182,58,112,72,107,6.0,22.5,88,111,Asymptomatic,True,0.6,False,Former,2.2,100,7.5,53.0,True,4559,37.4,1 +5113,40,Male,133,84,152,45,63,224,101,5.0,24.1,72,159,Asymptomatic,False,2.5,True,Never,25.2,167,5.7,48.0,False,5193,50.8,0 +5114,78,Male,136,98,212,49,123,151,135,6.0,21.8,62,121,Asymptomatic,True,1.4,False,Never,5.0,0,9.0,29.7,False,4302,64.7,1 +5115,48,Male,104,72,186,51,92,207,104,5.4,29.7,89,163,Asymptomatic,False,1.5,False,Former,7.1,90,7.9,49.3,True,7760,76.5,0 +5116,42,Male,123,81,132,56,56,109,124,5.6,15.5,85,169,Asymptomatic,False,0.4,True,Former,3.7,114,8.2,34.1,False,5439,60.3,0 +5117,48,Male,107,85,130,40,80,35,110,5.8,17.9,91,181,Asymptomatic,False,0.8,False,Never,3.6,149,8.3,45.7,True,8608,46.9,0 +5118,47,Female,138,87,229,65,136,125,100,6.1,17.8,73,169,Non-Anginal Pain,False,0.3,False,Never,5.0,116,8.5,58.2,False,3920,65.4,0 +5119,34,Male,128,77,168,63,72,124,118,5.6,30.7,81,164,Atypical Angina,False,3.0,True,Current,19.1,132,6.0,43.9,False,5591,79.0,1 +5120,43,Male,111,69,174,41,106,190,105,5.7,31.3,93,186,Asymptomatic,False,0.3,False,Never,12.3,115,9.1,44.9,False,4293,81.4,0 +5121,24,Female,120,74,151,60,77,140,98,5.0,20.4,80,199,Asymptomatic,True,1.7,False,Current,2.4,280,5.1,45.9,True,10314,84.9,0 +5122,70,Female,130,84,177,65,75,182,114,5.9,23.3,66,166,Asymptomatic,True,0.7,True,Never,3.8,206,6.2,29.7,True,6938,50.3,0 +5123,62,Male,128,85,237,67,108,203,104,4.9,21.2,91,147,Asymptomatic,False,2.4,False,Never,4.3,209,7.7,44.9,True,5743,65.9,1 +5124,47,Male,141,85,242,47,152,243,129,6.4,32.1,101,154,Asymptomatic,False,1.7,True,Never,3.3,54,8.7,45.1,True,4089,53.3,1 +5125,44,Female,102,75,227,54,133,182,147,6.8,26.0,64,188,Typical Angina,False,1.2,True,Never,12.2,107,7.4,20.8,False,6449,48.6,0 +5126,72,Female,138,86,225,56,135,103,151,7.0,19.2,64,151,Asymptomatic,False,0.7,False,Never,5.0,159,5.8,45.6,False,7385,55.3,0 +5127,41,Male,94,57,161,56,75,177,131,5.8,21.1,76,187,Asymptomatic,False,0.5,False,Never,2.6,151,7.8,59.3,False,7550,50.9,0 +5128,66,Male,135,79,136,43,52,181,130,6.1,29.6,87,165,Asymptomatic,False,1.6,True,Never,2.5,130,9.4,60.4,True,5354,65.1,0 +5129,71,Male,133,86,178,46,113,128,141,6.5,26.2,95,127,Asymptomatic,True,2.6,False,Current,6.1,83,5.3,28.9,True,7037,76.2,1 +5130,64,Male,141,95,218,67,116,177,131,5.9,23.6,92,127,Typical Angina,True,6.5,False,Never,2.0,155,6.3,47.6,False,4123,74.8,1 +5131,54,Female,124,72,192,72,88,161,94,4.7,17.5,83,167,Atypical Angina,False,2.4,False,Former,7.8,133,7.6,63.7,True,3981,65.4,0 +5132,63,Female,147,95,168,56,84,132,134,6.1,29.7,77,155,Asymptomatic,False,0.7,False,Former,3.1,133,7.5,73.7,True,6246,65.2,0 +5133,53,Female,127,84,180,49,86,190,169,6.9,26.8,78,175,Asymptomatic,False,0.3,False,Former,0.2,137,7.3,42.2,True,3578,27.9,0 +5134,69,Male,146,86,177,69,90,71,144,6.4,24.7,82,175,Asymptomatic,False,0.6,True,Never,5.3,102,5.8,72.4,True,7366,75.0,0 +5135,46,Female,133,70,190,59,109,102,137,6.7,25.1,86,139,Typical Angina,True,1.2,False,Current,1.2,65,7.4,79.3,False,5855,46.2,1 +5136,79,Male,147,101,139,50,58,132,139,6.4,23.5,96,136,Non-Anginal Pain,False,0.8,False,Former,8.1,26,6.4,60.0,False,4003,67.0,0 +5137,65,Male,119,73,210,40,121,223,125,5.1,32.7,81,164,Non-Anginal Pain,False,1.1,False,Current,2.6,107,8.3,75.5,True,7008,58.3,0 +5138,53,Male,122,78,167,33,81,263,135,6.3,29.1,101,158,Typical Angina,False,4.9,True,Former,10.5,66,8.6,45.8,True,8476,43.4,1 +5139,70,Male,142,85,239,63,148,120,134,5.7,22.8,99,140,Asymptomatic,False,0.1,False,Former,5.9,106,6.5,49.1,True,8185,62.7,1 +5140,68,Female,143,104,176,63,92,142,92,5.2,37.6,87,176,Non-Anginal Pain,True,0.1,False,Never,5.5,133,5.5,61.1,False,7245,41.6,0 +5141,50,Male,138,81,150,37,92,85,156,7.1,17.6,78,159,Typical Angina,False,2.1,False,Never,2.5,107,6.6,29.8,False,7108,72.9,1 +5142,40,Male,126,83,150,34,81,175,121,6.2,32.2,77,177,Typical Angina,False,0.0,True,Never,3.8,167,8.3,40.0,True,8397,100.0,0 +5143,38,Male,116,74,203,73,113,145,103,4.8,28.5,73,182,Asymptomatic,True,2.2,False,Never,4.8,222,6.8,53.9,True,7974,64.1,1 +5144,45,Female,96,60,171,70,84,93,103,5.6,15.9,77,183,Atypical Angina,False,0.1,False,Never,0.3,227,7.5,43.5,True,7540,82.8,0 +5145,51,Male,136,85,219,57,128,162,104,5.9,23.3,77,175,Non-Anginal Pain,False,1.0,False,Never,14.9,186,7.4,57.8,False,5040,55.2,0 +5146,52,Female,111,64,193,71,78,245,100,5.5,20.3,79,149,Asymptomatic,False,1.7,False,Never,6.6,144,8.2,53.5,False,4823,62.6,0 +5147,85,Male,161,83,227,66,128,157,125,5.7,28.2,84,134,Asymptomatic,True,0.4,False,Never,5.7,86,8.5,32.6,False,4099,84.3,0 +5148,54,Male,140,83,168,57,79,125,147,6.7,26.9,88,148,Asymptomatic,False,0.7,False,Former,3.5,110,8.6,22.7,False,7423,42.6,0 +5149,56,Female,126,67,173,57,87,151,151,6.6,25.8,89,139,Non-Anginal Pain,False,1.6,True,Current,10.7,53,6.3,48.8,True,7362,60.0,1 +5150,47,Female,146,88,215,61,107,237,128,6.0,31.8,81,179,Asymptomatic,False,0.4,False,Former,1.0,101,6.6,56.6,False,4675,57.9,0 +5151,73,Male,143,91,156,58,80,85,102,5.1,17.2,80,150,Non-Anginal Pain,True,3.1,True,Former,2.0,174,6.5,55.8,False,6091,76.7,1 +5152,36,Male,107,55,146,41,94,122,76,4.4,23.5,83,198,Non-Anginal Pain,False,0.4,False,Former,2.5,83,5.6,59.3,False,2821,78.1,0 +5153,58,Female,119,84,201,66,105,164,116,5.3,22.7,87,154,Asymptomatic,False,1.5,True,Former,6.0,33,7.5,83.2,False,1857,59.0,0 +5154,54,Male,132,71,159,64,80,191,174,7.7,30.6,72,164,Asymptomatic,False,2.4,False,Never,2.6,98,6.0,60.0,False,5498,62.1,0 +5155,53,Male,127,78,117,32,56,145,139,6.0,27.1,90,166,Asymptomatic,False,3.3,True,Never,2.0,9,7.2,35.7,False,3506,61.7,0 +5156,55,Male,128,86,210,55,116,204,130,6.4,23.6,71,168,Typical Angina,False,0.3,False,Never,12.8,199,6.5,44.3,False,4572,74.1,0 +5157,48,Male,108,65,170,58,79,137,152,6.9,19.9,70,153,Asymptomatic,False,0.7,False,Never,4.0,238,8.1,34.1,True,9542,51.7,0 +5158,41,Male,116,74,154,27,82,132,117,6.0,33.4,85,197,Asymptomatic,False,0.7,False,Former,1.7,105,7.4,64.9,False,9180,73.3,0 +5159,68,Male,148,110,177,40,111,137,88,5.1,28.9,83,139,Atypical Angina,False,0.1,False,Never,3.6,76,6.9,27.2,False,3818,62.9,0 +5160,72,Male,128,75,228,46,135,139,123,5.6,25.5,84,117,Atypical Angina,True,1.3,False,Former,3.9,15,5.8,31.4,False,3384,55.5,1 +5161,63,Male,146,99,161,56,84,102,70,4.8,21.6,84,167,Atypical Angina,False,0.5,False,Never,3.8,79,6.0,81.7,True,6547,48.5,0 +5162,71,Female,142,89,167,71,68,139,148,6.4,23.2,97,152,Asymptomatic,False,0.2,False,Never,2.9,96,7.5,73.8,False,4436,87.7,0 +5163,57,Female,124,73,201,63,105,138,100,5.4,21.5,63,180,Typical Angina,False,2.9,True,Never,3.1,231,7.1,19.8,True,8584,71.6,0 +5164,26,Male,103,66,190,40,113,166,146,6.5,29.9,78,210,Asymptomatic,False,0.0,False,Never,5.3,214,6.7,50.7,True,7564,76.0,0 +5165,42,Male,128,71,161,56,95,129,140,6.4,28.3,82,173,Atypical Angina,False,2.1,False,Former,1.7,203,7.6,46.3,False,7158,51.4,0 +5166,61,Male,129,82,249,50,155,198,106,5.3,29.5,82,187,Non-Anginal Pain,False,0.9,False,Never,18.3,173,6.1,81.4,False,4798,53.1,0 +5167,25,Male,116,72,188,44,116,177,154,6.9,29.5,89,198,Atypical Angina,False,0.8,False,Current,15.8,87,8.9,46.2,False,4163,49.1,0 +5168,57,Male,142,83,181,55,93,164,127,6.5,20.5,76,182,Non-Anginal Pain,True,1.6,False,Current,4.8,263,7.3,46.0,True,9856,61.3,0 +5169,59,Male,147,92,175,66,78,189,156,7.0,20.0,91,149,Non-Anginal Pain,False,0.6,True,Current,1.7,76,6.6,49.8,False,4082,39.6,1 +5170,59,Male,139,93,155,35,109,158,125,6.3,29.6,87,140,Asymptomatic,False,2.1,False,Former,4.3,32,5.7,45.4,False,2229,63.9,1 +5171,41,Male,133,87,208,53,125,203,135,5.6,35.0,87,180,Asymptomatic,False,0.2,False,Never,5.0,107,6.6,75.8,True,5567,48.9,0 +5172,50,Female,126,89,200,34,122,160,104,5.5,25.8,75,154,Asymptomatic,False,2.2,False,Never,7.6,77,5.3,57.4,False,6418,61.6,1 +5173,50,Male,100,57,129,54,60,96,116,5.6,18.2,76,188,Asymptomatic,False,1.3,False,Current,8.4,236,6.6,34.2,False,4697,80.1,0 +5174,58,Female,130,74,200,31,142,136,145,6.6,25.8,77,146,Atypical Angina,False,0.7,False,Former,0.9,61,6.3,37.2,True,5626,77.3,1 +5175,51,Male,133,75,176,43,110,213,100,5.2,33.8,88,172,Asymptomatic,True,0.8,False,Never,5.5,114,5.3,44.2,False,9475,51.6,1 +5176,32,Female,117,76,180,59,88,136,75,4.2,23.5,83,188,Non-Anginal Pain,False,1.2,True,Never,1.0,64,7.2,48.5,False,4775,78.3,0 +5177,85,Male,139,84,170,59,79,153,154,6.9,27.9,88,133,Asymptomatic,False,0.5,False,Never,2.0,40,8.0,68.5,True,2615,68.6,1 +5178,59,Male,129,88,241,62,139,197,99,5.8,23.8,79,161,Atypical Angina,True,0.2,True,Former,14.8,113,8.8,32.9,False,5917,63.9,0 +5179,52,Male,137,76,194,71,88,152,134,6.4,30.1,73,185,Atypical Angina,True,1.1,False,Never,5.2,132,7.9,29.5,False,6715,56.6,1 +5180,48,Female,102,50,188,69,88,117,92,5.0,15.0,66,163,Asymptomatic,False,0.1,False,Never,0.3,38,5.2,42.7,False,1942,66.1,0 +5181,65,Male,106,64,214,77,93,155,123,6.2,18.8,72,172,Asymptomatic,True,0.6,False,Never,11.5,167,6.9,42.9,True,3769,75.0,0 +5182,58,Male,117,96,184,53,105,133,118,6.0,22.1,76,168,Asymptomatic,False,0.5,False,Never,3.4,130,9.7,42.7,False,3466,68.1,1 +5183,60,Female,134,82,261,83,136,167,86,5.3,21.7,89,134,Non-Anginal Pain,True,0.2,False,Former,18.2,132,6.0,51.3,False,5533,51.0,0 +5184,35,Male,105,66,206,67,103,184,144,6.5,24.1,85,148,Atypical Angina,True,0.9,False,Never,3.9,104,7.8,71.4,True,7096,100.0,1 +5185,28,Female,125,78,183,64,93,169,104,5.3,31.0,86,185,Non-Anginal Pain,False,0.7,True,Former,2.4,171,8.0,58.0,False,8040,56.1,0 +5186,72,Female,138,94,170,46,99,195,185,7.7,22.5,71,134,Asymptomatic,False,0.3,False,Never,4.4,164,5.7,62.7,False,7549,58.9,1 +5187,58,Male,115,65,162,57,77,178,74,4.1,21.8,78,166,Typical Angina,False,2.0,False,Never,11.4,84,6.7,27.9,True,6800,74.7,0 +5188,58,Female,145,85,173,48,89,191,88,5.5,27.1,79,177,Non-Anginal Pain,False,1.3,False,Former,18.6,86,8.4,63.2,False,5698,71.8,0 +5189,70,Female,146,91,191,68,93,201,108,5.7,15.1,82,145,Typical Angina,False,0.8,False,Never,9.8,130,7.8,57.3,True,8016,56.0,0 +5190,50,Female,141,83,221,66,121,161,68,4.5,23.3,70,180,Asymptomatic,False,0.5,False,Never,5.4,214,7.8,45.7,True,5220,53.0,0 +5191,61,Female,134,87,201,68,114,136,136,6.3,28.9,76,171,Non-Anginal Pain,False,0.2,False,Never,17.6,130,6.6,39.1,True,6905,55.0,0 +5192,32,Male,133,85,162,42,94,112,142,6.5,22.4,82,175,Non-Anginal Pain,True,3.7,False,Current,5.9,79,7.2,73.2,False,3499,58.1,1 +5193,54,Female,125,76,158,58,90,87,122,5.7,18.8,93,159,Atypical Angina,False,0.2,False,Never,9.0,70,7.5,21.8,True,6949,67.6,0 +5194,54,Female,122,80,210,62,109,177,139,6.4,27.9,80,154,Asymptomatic,False,2.7,False,Never,2.1,170,8.5,58.5,False,6028,52.4,0 +5195,68,Male,130,86,190,69,80,143,131,6.5,30.0,94,141,Non-Anginal Pain,True,1.7,False,Former,5.6,124,7.7,39.4,True,9594,51.3,1 +5196,49,Male,119,84,216,50,148,132,120,6.0,15.0,87,149,Typical Angina,True,0.3,False,Current,4.7,199,4.7,56.6,True,6944,78.9,1 +5197,82,Female,146,83,199,61,118,169,117,5.7,29.4,85,134,Asymptomatic,False,0.3,True,Never,5.8,140,6.2,38.7,True,7594,67.4,1 +5198,22,Male,100,63,177,63,91,49,128,6.0,26.6,100,177,Asymptomatic,False,0.1,False,Never,2.9,128,7.2,60.6,True,7105,67.4,0 +5199,69,Female,144,97,199,44,122,147,104,5.3,26.7,77,121,Typical Angina,True,2.3,True,Never,0.0,50,6.7,69.8,True,7382,47.8,1 +5200,32,Female,105,84,243,65,148,154,92,5.3,28.7,81,171,Non-Anginal Pain,True,0.6,False,Former,1.9,127,6.6,48.2,False,1756,76.2,0 +5201,68,Male,170,99,225,47,152,137,139,6.4,24.3,82,138,Asymptomatic,True,0.9,False,Never,9.9,52,7.9,66.0,False,2768,49.1,1 +5202,65,Male,135,87,166,51,95,108,88,4.0,20.8,76,170,Non-Anginal Pain,False,0.0,False,Never,2.8,75,6.7,52.6,True,5182,42.4,0 +5203,46,Female,129,77,197,54,118,192,89,5.5,27.9,86,168,Atypical Angina,False,0.5,False,Never,1.2,94,8.3,22.2,False,4408,73.3,0 +5204,50,Male,116,75,175,65,87,189,162,6.8,26.2,91,163,Asymptomatic,False,0.5,False,Never,6.4,123,8.5,35.0,True,5082,66.8,0 +5205,51,Female,114,65,128,69,40,136,137,6.8,21.4,85,146,Atypical Angina,False,1.6,False,Never,0.1,100,6.3,30.7,False,5300,72.8,0 +5206,65,Female,124,82,242,85,121,193,97,5.0,15.0,81,153,Typical Angina,False,0.3,False,Former,30.3,179,7.3,54.1,True,9490,64.9,0 +5207,48,Female,128,86,182,53,105,149,94,5.3,23.9,68,173,Non-Anginal Pain,False,0.4,True,Never,1.7,170,7.1,59.7,True,6137,54.0,0 +5208,59,Female,121,76,220,63,128,130,138,6.4,22.9,101,162,Atypical Angina,False,0.5,False,Never,1.6,116,7.3,58.4,True,8068,55.3,0 +5209,56,Male,123,85,202,70,91,170,118,5.4,29.4,81,180,Non-Anginal Pain,False,0.3,False,Former,2.5,168,8.2,24.6,False,5445,38.7,0 +5210,63,Male,137,91,232,40,146,208,119,5.7,26.8,84,130,Atypical Angina,False,0.2,False,Former,11.4,62,5.8,55.3,False,3158,69.3,1 +5211,57,Female,122,86,148,47,64,121,99,5.5,31.8,83,162,Atypical Angina,False,1.0,False,Never,2.9,93,4.7,48.6,False,4169,50.3,0 +5212,61,Female,132,88,227,88,108,150,102,5.5,22.3,74,157,Asymptomatic,False,1.1,False,Never,9.4,186,6.9,27.5,True,5153,49.5,0 +5213,65,Female,134,89,207,72,106,160,106,5.1,23.8,77,166,Asymptomatic,False,0.3,False,Never,17.4,127,6.4,52.5,False,2158,38.7,0 +5214,64,Female,122,66,169,35,100,210,99,5.2,26.3,62,153,Asymptomatic,False,0.4,False,Never,7.8,179,6.6,34.5,True,8994,63.4,0 +5215,64,Male,140,85,210,43,150,132,87,4.7,28.5,75,113,Asymptomatic,False,2.5,False,Former,7.6,16,5.2,47.4,False,2239,51.8,1 +5216,53,Female,114,67,206,95,100,35,111,5.5,21.4,91,169,Asymptomatic,False,0.5,True,Never,2.1,107,8.7,56.7,False,2126,64.0,0 +5217,54,Female,140,96,143,53,74,98,111,5.9,25.8,76,184,Asymptomatic,False,0.5,False,Never,2.3,151,4.7,6.1,True,7398,67.8,0 +5218,45,Male,129,69,165,55,113,91,127,5.9,24.0,70,142,Typical Angina,True,0.7,True,Former,10.4,131,6.6,32.2,True,5414,63.8,1 +5219,63,Male,144,84,156,27,106,105,130,6.9,34.8,95,165,Asymptomatic,False,0.3,False,Current,3.7,104,6.5,33.0,False,3559,67.0,1 +5220,43,Male,116,72,150,35,78,193,117,6.1,24.5,78,179,Atypical Angina,False,0.2,False,Current,8.1,132,6.5,88.0,False,5814,33.5,0 +5221,52,Male,133,92,209,53,141,96,116,5.6,23.3,86,164,Asymptomatic,True,0.3,False,Former,4.6,127,5.6,54.4,False,4764,44.0,1 +5222,54,Male,140,95,130,45,70,94,97,5.3,18.9,86,147,Asymptomatic,False,0.4,False,Never,2.5,0,4.9,51.1,False,3094,80.2,0 +5223,62,Female,110,82,225,54,110,244,156,6.4,34.4,85,146,Asymptomatic,False,1.2,True,Never,1.4,75,6.9,67.1,False,3516,70.7,1 +5224,61,Female,132,108,216,65,119,102,128,6.1,29.7,75,182,Asymptomatic,False,0.3,False,Never,0.1,155,7.7,46.9,False,4730,62.0,0 +5225,64,Female,96,61,213,67,118,128,158,6.6,20.9,73,175,Asymptomatic,False,0.3,False,Never,21.8,284,6.1,12.9,True,9788,67.5,0 +5226,58,Female,143,87,221,65,118,182,88,4.8,27.4,64,145,Typical Angina,True,0.8,True,Never,6.9,136,8.4,51.1,True,4446,95.3,1 +5227,38,Male,108,67,156,45,78,186,105,5.4,27.8,82,178,Asymptomatic,False,1.1,False,Never,7.0,60,7.3,52.4,False,3643,54.5,0 +5228,49,Male,115,76,127,36,79,81,99,5.2,23.5,82,170,Non-Anginal Pain,False,0.3,False,Never,7.1,107,8.2,58.0,False,5443,63.0,0 +5229,57,Female,120,74,185,81,87,89,81,4.8,23.3,76,159,Asymptomatic,False,0.4,False,Never,3.8,146,8.4,35.6,True,6159,68.7,0 +5230,60,Male,119,77,165,44,85,196,162,6.8,23.8,100,155,Atypical Angina,False,3.2,False,Former,2.0,127,7.4,40.5,False,7560,78.6,1 +5231,45,Male,121,72,224,66,114,142,129,6.2,18.5,80,183,Non-Anginal Pain,False,6.5,False,Former,1.7,43,9.3,26.6,True,5951,83.3,1 +5232,47,Male,120,66,218,50,149,119,118,6.0,24.0,82,167,Asymptomatic,True,2.6,True,Former,3.2,115,6.3,32.4,False,4585,38.9,1 +5233,54,Male,123,77,211,62,104,192,139,6.2,27.1,83,174,Typical Angina,False,3.0,False,Never,9.3,141,6.1,36.8,False,3848,53.5,1 +5234,40,Male,128,76,186,66,90,142,121,6.0,26.0,77,184,Typical Angina,False,6.5,True,Never,8.5,162,7.8,67.4,True,6761,82.8,1 +5235,53,Male,131,95,224,40,144,167,86,5.0,33.7,93,162,Non-Anginal Pain,False,3.9,False,Never,6.0,84,6.4,69.6,False,2079,87.2,1 +5236,69,Male,124,78,170,34,100,156,127,6.0,28.9,78,143,Asymptomatic,False,0.4,False,Never,15.6,118,6.2,53.3,True,8685,64.7,1 +5237,39,Male,118,75,185,51,105,160,150,6.3,21.8,87,185,Non-Anginal Pain,False,0.6,False,Former,1.7,182,5.6,29.0,False,6493,65.0,0 +5238,38,Male,96,74,196,50,108,159,72,4.5,15.0,80,178,Asymptomatic,False,0.3,False,Never,11.3,73,8.8,39.1,True,5130,64.7,0 +5239,68,Female,145,77,136,53,71,36,151,6.8,26.6,77,141,Asymptomatic,False,0.3,True,Never,3.8,156,6.3,57.2,False,7639,71.7,0 +5240,53,Female,139,88,185,47,116,115,134,6.2,26.2,81,165,Asymptomatic,True,1.6,False,Former,0.4,176,6.0,56.9,True,7954,38.3,0 +5241,75,Female,135,83,274,51,175,249,133,6.0,32.8,77,171,Asymptomatic,False,0.0,True,Former,5.5,25,7.5,69.0,False,3278,37.7,0 +5242,38,Female,122,79,227,59,157,118,80,5.0,20.1,65,194,Atypical Angina,False,0.2,False,Current,1.4,244,7.9,57.1,True,7369,35.0,0 +5243,68,Male,132,73,172,43,122,80,126,6.2,29.4,79,137,Asymptomatic,True,0.4,False,Former,1.6,92,6.4,62.9,True,4500,59.4,1 +5244,59,Female,129,89,181,63,90,112,145,6.6,25.2,91,194,Non-Anginal Pain,False,1.2,True,Former,0.9,73,5.7,51.5,False,4995,71.7,0 +5245,40,Male,117,76,150,68,59,121,88,4.3,23.0,76,195,Asymptomatic,False,1.3,False,Never,3.4,238,7.6,42.2,False,8193,75.3,0 +5246,60,Male,110,68,141,51,74,60,99,5.4,16.7,64,150,Asymptomatic,False,0.3,True,Never,4.6,160,8.2,47.0,True,4883,100.0,0 +5247,83,Male,117,75,160,68,71,83,99,5.5,24.6,87,126,Asymptomatic,False,0.5,False,Former,1.6,136,8.8,30.2,True,6841,92.4,0 +5248,66,Male,124,75,195,46,127,113,160,7.6,26.8,77,141,Atypical Angina,False,2.2,False,Former,10.6,93,6.2,59.2,False,6857,49.6,1 +5249,58,Male,134,77,263,35,160,287,126,6.4,33.8,91,140,Asymptomatic,False,2.1,False,Former,4.7,118,7.9,51.6,True,6542,40.0,1 +5250,51,Female,119,85,188,72,92,111,74,4.4,17.4,77,160,Non-Anginal Pain,False,1.2,True,Never,0.3,210,6.6,40.8,True,8025,42.9,0 +5251,38,Female,131,91,189,40,105,183,109,5.8,27.1,87,183,Atypical Angina,False,1.0,True,Current,13.4,110,6.0,54.5,False,3092,35.1,1 +5252,38,Female,118,86,257,58,148,247,131,6.0,28.4,86,161,Non-Anginal Pain,True,2.3,True,Current,15.7,74,6.8,62.0,False,7075,53.9,1 +5253,50,Female,150,99,121,44,49,148,106,5.3,28.2,81,175,Asymptomatic,False,1.5,False,Never,3.6,116,8.0,58.0,False,500,77.9,0 +5254,67,Female,151,105,233,63,142,140,149,6.7,26.3,83,137,Asymptomatic,True,0.5,False,Never,5.4,89,8.0,81.1,False,1290,52.9,1 +5255,53,Female,111,94,164,50,99,89,145,6.5,21.9,72,173,Asymptomatic,False,0.3,False,Never,3.2,70,7.8,32.8,False,3882,54.4,0 +5256,76,Female,160,106,228,38,143,215,107,5.7,30.7,94,111,Asymptomatic,True,0.8,False,Former,10.3,61,6.0,81.6,False,7343,38.4,1 +5257,43,Female,120,69,194,64,107,115,134,6.8,27.4,99,185,Asymptomatic,False,0.5,False,Never,0.8,131,7.2,50.7,False,6497,61.5,0 +5258,41,Female,119,53,154,58,64,186,104,5.8,22.1,90,176,Asymptomatic,False,1.3,True,Current,6.1,119,7.0,71.0,False,5537,70.4,0 +5259,56,Male,131,76,160,66,84,59,94,4.6,23.8,85,189,Asymptomatic,False,1.1,False,Former,5.0,190,3.8,57.6,False,7878,67.3,0 +5260,54,Female,115,68,206,68,99,209,111,5.5,21.8,79,186,Asymptomatic,False,0.7,True,Never,7.6,178,7.7,22.8,False,10409,55.1,0 +5261,75,Male,138,89,184,57,88,227,162,6.9,24.2,88,148,Atypical Angina,False,0.9,True,Never,7.1,151,7.8,62.0,False,5194,73.3,0 +5262,64,Male,136,93,202,50,136,118,119,5.5,25.1,78,140,Non-Anginal Pain,True,0.8,False,Never,3.3,151,7.7,33.6,False,7556,52.6,1 +5263,56,Male,130,90,183,45,95,163,116,5.3,30.7,83,180,Non-Anginal Pain,False,2.4,False,Never,14.1,141,7.7,46.2,True,8891,63.1,0 +5264,45,Female,123,83,194,41,118,157,99,5.2,21.8,84,177,Asymptomatic,False,0.3,False,Former,8.1,97,6.4,23.1,False,5861,54.7,1 +5265,64,Female,128,91,233,66,140,115,125,5.7,26.0,66,149,Asymptomatic,False,0.2,False,Never,0.1,133,5.4,46.9,False,6430,79.5,0 +5266,86,Male,144,68,206,67,108,100,141,6.1,33.7,78,122,Atypical Angina,False,0.1,True,Never,3.6,141,6.8,50.4,True,7456,77.0,1 +5267,57,Male,131,81,183,54,101,160,172,6.6,30.6,71,154,Atypical Angina,False,0.3,False,Current,4.0,162,6.5,40.7,True,6367,55.8,1 +5268,39,Female,101,63,246,69,138,139,134,6.0,22.0,77,184,Atypical Angina,True,0.1,False,Never,1.4,158,7.6,48.3,True,5737,70.6,0 +5269,35,Male,132,73,200,39,116,142,102,5.6,24.0,76,199,Asymptomatic,True,0.2,False,Former,2.0,102,9.2,65.3,False,5171,61.7,0 +5270,51,Male,130,78,197,47,105,222,100,5.5,21.4,93,158,Non-Anginal Pain,False,0.3,False,Current,10.3,71,7.8,29.9,True,9124,30.9,1 +5271,58,Male,122,74,267,48,149,292,118,5.9,26.6,86,187,Non-Anginal Pain,False,0.1,False,Never,18.4,172,8.5,37.1,True,6358,65.7,0 +5272,46,Male,134,87,163,52,82,136,123,6.2,20.3,61,185,Asymptomatic,False,0.5,False,Former,7.8,160,6.6,55.9,True,5839,56.4,0 +5273,50,Male,121,91,181,59,82,214,134,6.9,22.5,71,168,Typical Angina,False,0.7,False,Never,7.3,138,5.2,40.0,False,9427,36.8,0 +5274,49,Female,119,63,150,61,65,139,87,5.0,15.6,70,167,Non-Anginal Pain,False,0.2,False,Former,2.4,213,7.2,33.3,False,4444,73.7,0 +5275,72,Female,145,93,189,67,117,120,131,5.6,20.7,85,158,Atypical Angina,False,0.3,True,Never,3.2,151,7.1,58.1,True,9017,67.0,0 +5276,39,Male,107,69,202,67,101,114,79,5.0,16.6,70,177,Asymptomatic,False,1.0,False,Never,3.0,189,7.1,24.6,True,7041,58.5,0 +5277,49,Female,111,82,204,73,82,206,112,5.5,28.6,87,149,Typical Angina,True,0.2,False,Former,4.0,174,4.5,26.3,False,6666,73.9,0 +5278,69,Female,108,77,214,56,126,170,138,6.5,23.1,67,165,Atypical Angina,False,5.0,False,Never,1.2,55,6.9,40.8,False,500,70.1,1 +5279,75,Male,125,78,230,41,138,182,122,5.8,24.6,84,144,Non-Anginal Pain,False,1.3,False,Never,5.6,177,7.1,52.6,True,8266,50.4,0 +5280,48,Male,151,91,167,42,95,134,88,4.7,31.9,79,170,Non-Anginal Pain,False,1.2,True,Never,2.3,131,6.7,38.0,False,8497,52.8,0 +5281,53,Male,116,70,237,75,133,136,104,5.4,25.5,75,165,Asymptomatic,False,0.5,True,Former,12.3,148,6.6,63.2,True,7547,62.1,0 +5282,80,Male,136,98,215,23,136,254,152,7.2,34.9,83,104,Typical Angina,False,0.9,False,Never,2.9,31,5.5,60.1,False,1657,66.2,1 +5283,72,Male,140,97,180,46,103,151,125,6.1,27.7,77,141,Asymptomatic,True,0.0,False,Former,11.9,115,5.4,76.3,False,6678,32.3,1 +5284,45,Female,117,88,202,67,87,213,144,6.5,24.0,72,187,Asymptomatic,False,2.8,True,Never,5.4,316,8.0,40.9,True,8212,76.1,0 +5285,43,Female,117,77,209,60,93,222,102,5.8,25.6,84,187,Typical Angina,False,0.4,False,Never,1.8,163,7.4,34.4,True,7882,35.5,0 +5286,57,Male,139,78,188,45,122,71,87,4.9,23.4,75,171,Asymptomatic,False,0.4,False,Never,3.7,55,6.3,76.4,False,6954,90.8,0 +5287,44,Female,143,86,181,68,95,118,153,6.9,28.1,83,162,Typical Angina,False,0.6,False,Current,8.2,196,8.0,63.0,False,7221,74.3,1 +5288,50,Female,127,94,212,78,101,213,89,4.8,19.5,80,171,Non-Anginal Pain,False,0.3,False,Former,3.1,141,3.9,33.9,False,5506,73.4,0 +5289,60,Female,150,101,161,71,58,144,83,4.7,26.9,76,162,Typical Angina,True,0.1,True,Former,11.3,99,6.7,65.8,False,3189,59.7,0 +5290,35,Male,130,86,206,45,120,165,107,5.5,15.0,79,176,Asymptomatic,True,0.3,False,Never,22.1,179,6.2,70.6,True,7825,64.9,1 +5291,59,Female,128,83,157,45,88,122,127,5.9,27.5,92,168,Typical Angina,False,1.5,False,Former,11.9,117,8.5,17.5,False,6057,70.8,0 +5292,62,Male,136,80,157,54,70,128,132,6.5,38.1,89,179,Non-Anginal Pain,False,1.4,False,Never,7.1,147,7.4,53.0,False,5836,52.5,0 +5293,53,Male,128,80,172,46,91,170,131,6.4,27.4,74,166,Asymptomatic,False,0.2,True,Never,1.8,163,10.1,45.7,True,6966,61.3,0 +5294,66,Male,132,87,132,34,95,42,67,4.0,21.3,89,181,Non-Anginal Pain,True,0.6,False,Never,7.3,200,7.7,42.1,False,3876,48.0,0 +5295,48,Female,124,76,209,65,118,127,141,6.3,27.9,94,175,Asymptomatic,False,0.2,True,Never,7.4,51,5.9,57.5,False,5539,46.3,1 +5296,52,Male,139,90,128,51,50,118,156,6.7,26.2,80,172,Asymptomatic,True,1.2,True,Never,9.2,168,5.8,59.9,False,7173,90.9,0 +5297,33,Female,118,86,136,58,70,51,171,7.5,16.7,86,203,Asymptomatic,False,0.7,False,Never,9.5,171,8.7,39.4,False,7674,64.4,0 +5298,18,Female,105,70,172,55,104,147,92,4.6,34.5,71,210,Typical Angina,False,0.1,True,Never,1.6,263,6.8,26.0,True,6625,59.2,0 +5299,41,Female,137,85,214,73,111,163,113,5.9,25.9,54,188,Typical Angina,False,0.5,False,Never,11.2,196,6.6,38.4,False,7083,84.6,0 +5300,54,Female,134,80,157,44,76,193,148,6.4,25.8,88,151,Asymptomatic,False,1.8,False,Never,1.8,133,4.7,49.8,True,7091,68.5,0 +5301,55,Female,119,75,174,67,60,261,136,6.2,27.7,61,161,Non-Anginal Pain,False,0.1,True,Former,3.5,160,7.2,82.4,False,2202,68.3,0 +5302,51,Female,119,79,123,59,50,85,119,5.2,28.8,64,175,Typical Angina,False,0.7,False,Former,8.8,82,7.4,44.4,False,2982,78.6,0 +5303,51,Male,114,82,202,28,138,200,134,5.9,27.2,90,175,Non-Anginal Pain,False,1.2,True,Never,1.7,71,5.5,51.4,False,853,63.9,0 +5304,54,Female,147,96,143,57,57,126,131,5.2,29.7,95,186,Atypical Angina,False,1.1,False,Never,5.2,114,6.8,53.5,False,5960,59.3,0 +5305,56,Female,123,90,171,70,83,123,129,6.2,22.6,77,158,Non-Anginal Pain,False,0.6,False,Never,7.3,99,4.9,34.4,False,5433,68.8,0 +5306,45,Female,122,80,147,67,67,80,96,5.3,21.2,68,183,Atypical Angina,False,0.8,False,Never,4.2,138,7.5,24.5,True,7900,64.8,0 +5307,35,Male,114,81,183,59,109,35,114,5.9,18.2,80,190,Non-Anginal Pain,False,0.4,True,Never,10.6,152,7.6,53.6,False,5498,53.8,0 +5308,63,Male,119,75,215,67,95,192,129,6.6,26.5,74,177,Non-Anginal Pain,True,0.5,False,Never,2.5,214,8.8,20.8,True,8651,79.3,0 +5309,38,Male,104,80,151,43,88,163,132,5.5,25.8,79,180,Asymptomatic,False,0.6,True,Former,5.6,185,7.7,16.6,True,9526,76.5,0 +5310,74,Male,130,83,187,49,120,138,103,5.5,32.2,79,145,Asymptomatic,False,0.5,False,Never,2.9,99,7.9,53.1,True,3583,63.3,0 +5311,41,Female,120,85,176,75,84,131,110,5.7,25.0,73,184,Atypical Angina,False,0.3,False,Never,6.6,177,7.7,13.2,False,7150,69.7,0 +5312,50,Male,146,91,150,64,60,137,122,5.5,30.3,68,168,Non-Anginal Pain,False,0.0,False,Never,3.6,152,7.6,40.8,True,4944,79.8,0 +5313,67,Male,137,88,183,45,128,61,133,6.3,32.2,88,179,Non-Anginal Pain,True,2.3,False,Former,4.8,28,7.1,49.2,False,5764,59.7,0 +5314,49,Male,105,62,221,71,125,155,81,4.9,26.4,68,180,Asymptomatic,False,0.1,False,Never,11.9,147,4.7,7.2,True,9060,74.6,0 +5315,39,Male,125,72,165,36,108,103,76,4.6,19.5,63,208,Asymptomatic,False,0.3,True,Former,2.7,140,5.2,35.8,False,5134,70.7,0 +5316,52,Male,128,81,177,49,88,181,122,5.9,24.7,83,156,Typical Angina,False,0.3,True,Never,1.8,143,8.5,55.8,True,6312,84.2,1 +5317,66,Male,148,94,190,61,88,203,67,4.3,20.5,78,151,Asymptomatic,True,1.0,True,Former,15.9,191,6.7,61.8,True,8299,48.4,1 +5318,54,Female,122,69,220,60,143,130,100,6.1,24.4,77,193,Non-Anginal Pain,False,1.0,False,Former,15.4,201,6.4,40.7,True,7874,50.1,0 +5319,52,Male,115,77,146,58,92,38,114,5.8,22.9,86,178,Typical Angina,False,1.1,True,Former,2.6,81,5.7,46.6,False,4161,64.4,0 +5320,53,Female,123,87,172,56,88,153,123,5.4,31.6,87,163,Asymptomatic,False,0.1,False,Current,11.9,230,6.8,23.8,True,9122,79.8,0 +5321,71,Male,143,97,217,37,140,211,103,5.4,27.9,84,132,Non-Anginal Pain,False,0.1,False,Current,6.0,145,4.8,72.4,False,2544,46.2,1 +5322,38,Male,113,61,114,18,58,219,147,6.0,29.7,74,165,Non-Anginal Pain,False,0.2,True,Former,3.6,176,6.7,43.3,True,7631,43.0,0 +5323,58,Female,122,69,142,38,76,160,101,6.2,25.1,80,182,Atypical Angina,False,1.3,True,Never,3.0,163,7.2,41.9,True,7682,51.9,0 +5324,85,Male,137,87,191,61,120,70,81,4.8,25.3,70,132,Asymptomatic,False,0.8,False,Never,2.7,200,6.7,32.2,True,7135,76.2,0 +5325,55,Male,104,70,185,48,115,89,101,5.3,23.4,82,170,Asymptomatic,False,1.8,False,Former,3.7,198,7.1,20.6,False,4290,74.2,0 +5326,65,Male,139,94,131,44,62,174,87,5.5,20.9,79,123,Atypical Angina,False,0.6,False,Current,5.0,60,7.0,79.1,True,5091,57.8,1 +5327,46,Male,126,70,182,45,106,153,117,5.3,25.7,59,174,Asymptomatic,False,0.6,False,Never,14.4,93,5.9,18.3,False,6384,51.5,0 +5328,48,Male,123,77,185,61,111,136,86,4.9,24.2,81,160,Atypical Angina,True,0.3,False,Never,11.2,214,6.7,57.5,True,9382,58.3,0 +5329,56,Female,134,83,141,46,64,167,121,5.9,26.6,76,157,Asymptomatic,False,0.3,False,Never,2.2,88,8.6,66.7,False,4976,42.3,0 +5330,54,Female,134,68,248,73,143,160,122,5.4,23.9,67,167,Asymptomatic,False,0.7,False,Never,15.4,80,8.1,32.8,False,5370,35.0,0 +5331,42,Male,119,79,181,63,64,227,87,4.6,21.5,80,185,Asymptomatic,False,0.9,False,Current,2.0,156,6.6,32.1,False,6163,67.1,0 +5332,65,Female,119,83,215,50,143,117,124,5.4,22.9,67,162,Non-Anginal Pain,False,0.6,False,Current,3.6,179,7.1,20.2,False,4317,41.7,0 +5333,49,Female,144,92,174,49,88,166,141,6.4,25.6,82,184,Non-Anginal Pain,False,0.6,False,Never,5.3,192,10.4,53.1,False,6426,39.4,0 +5334,64,Male,119,74,172,53,107,56,126,5.8,29.4,86,155,Typical Angina,False,0.3,False,Never,4.9,251,7.7,39.3,True,4791,57.5,0 +5335,54,Male,122,75,114,31,62,103,99,5.1,23.6,72,171,Typical Angina,False,1.0,False,Former,5.9,160,8.4,78.8,True,7984,45.0,0 +5336,73,Male,139,81,171,53,86,107,88,4.5,22.1,88,172,Asymptomatic,True,0.2,False,Former,3.9,98,6.8,34.4,False,3330,63.3,0 +5337,53,Female,135,90,162,45,88,170,159,7.2,30.0,78,165,Typical Angina,False,0.4,False,Former,9.1,37,6.8,46.5,False,3021,35.4,0 +5338,44,Male,121,68,193,50,104,181,96,5.1,23.4,76,194,Asymptomatic,True,0.4,False,Current,10.0,205,7.0,42.0,True,8002,29.1,0 +5339,69,Female,128,76,110,56,39,119,71,4.3,23.4,68,163,Asymptomatic,False,0.8,False,Former,1.6,187,6.8,35.7,True,7277,82.0,0 +5340,37,Male,114,55,147,34,96,106,72,4.6,27.1,88,190,Asymptomatic,False,1.8,False,Never,4.9,127,8.1,45.3,False,5943,67.8,0 +5341,50,Female,131,87,196,65,72,278,100,5.1,32.1,89,165,Asymptomatic,False,0.9,False,Former,9.6,11,6.8,47.8,False,764,40.1,0 +5342,51,Male,127,91,228,49,121,253,168,7.0,37.8,71,141,Asymptomatic,False,0.4,False,Former,2.2,84,6.9,57.1,False,2538,73.2,0 +5343,68,Male,138,97,214,66,134,81,82,4.8,15.0,71,141,Asymptomatic,True,0.6,False,Former,2.0,152,5.3,54.0,True,6866,68.5,1 +5344,61,Male,139,90,180,36,112,123,109,5.5,15.0,80,187,Non-Anginal Pain,False,1.1,False,Former,8.9,169,6.5,27.2,False,6550,82.4,0 +5345,57,Male,132,96,223,67,122,181,91,5.0,23.1,82,162,Non-Anginal Pain,True,0.9,True,Never,4.2,163,6.6,43.1,False,1517,32.1,1 +5346,76,Male,137,90,156,21,95,231,143,6.8,26.2,74,120,Typical Angina,True,0.9,False,Never,8.7,163,7.1,16.7,False,3637,49.4,1 +5347,56,Female,139,95,146,71,56,184,117,5.9,23.8,83,158,Non-Anginal Pain,False,1.5,True,Current,3.2,55,5.2,45.3,False,6051,62.9,0 +5348,37,Male,107,62,158,40,85,134,100,5.4,26.2,86,189,Non-Anginal Pain,False,0.2,True,Never,20.1,103,5.8,53.6,True,10845,52.0,0 +5349,40,Male,134,94,193,50,123,186,117,5.1,29.7,83,195,Typical Angina,False,1.1,False,Never,3.5,109,6.6,42.9,False,4613,50.8,0 +5350,36,Female,130,79,218,91,97,120,109,5.4,24.6,68,162,Asymptomatic,False,1.2,False,Former,14.2,165,6.3,42.6,False,7818,55.8,0 +5351,54,Male,131,74,202,57,141,72,175,7.1,25.1,83,161,Typical Angina,False,3.6,False,Never,2.5,177,7.4,48.0,False,4128,70.1,1 +5352,53,Female,136,98,113,50,56,78,94,5.2,22.0,73,166,Non-Anginal Pain,False,0.4,True,Never,2.8,104,7.8,61.1,True,5711,72.6,0 +5353,59,Male,128,82,176,57,78,192,116,6.1,29.7,88,140,Atypical Angina,True,1.4,True,Current,9.9,167,6.4,35.5,True,5658,56.7,1 +5354,57,Male,139,85,206,52,122,130,98,4.6,24.9,80,146,Atypical Angina,True,1.3,False,Never,9.9,210,6.4,42.2,True,5300,79.2,1 +5355,57,Female,124,74,192,79,82,114,113,5.2,21.3,79,178,Asymptomatic,False,1.1,False,Never,1.0,182,7.1,21.6,False,3892,49.1,0 +5356,76,Male,146,100,215,57,111,285,109,5.3,30.1,93,121,Typical Angina,False,0.7,True,Former,8.5,156,5.6,58.3,False,2151,35.8,1 +5357,58,Male,116,64,108,19,59,156,162,6.6,24.2,83,142,Non-Anginal Pain,True,2.4,False,Former,3.6,0,5.7,50.6,False,3859,41.4,1 +5358,43,Male,112,58,164,45,82,134,113,5.4,20.5,75,201,Asymptomatic,False,0.1,False,Current,5.9,123,4.9,44.3,False,7327,95.0,0 +5359,48,Male,118,80,154,46,81,151,157,7.3,22.9,77,165,Atypical Angina,False,2.5,True,Former,6.9,28,6.7,56.7,True,8158,45.2,1 +5360,48,Female,128,85,229,56,138,170,113,5.8,33.3,95,176,Asymptomatic,False,0.1,False,Current,0.1,171,7.5,46.9,True,4815,32.3,0 +5361,53,Female,130,73,207,43,128,114,100,4.9,24.0,69,172,Asymptomatic,False,0.6,False,Current,2.0,187,5.9,52.6,True,8281,38.0,0 +5362,35,Male,130,83,214,58,94,281,134,6.2,27.9,84,201,Typical Angina,False,0.5,True,Current,8.8,239,7.8,20.9,True,11610,60.1,0 +5363,68,Male,141,85,194,59,113,166,146,6.4,30.7,92,120,Typical Angina,True,3.5,False,Former,5.5,73,5.5,39.7,False,6052,66.8,1 +5364,38,Male,121,73,170,42,122,106,119,5.8,18.8,83,195,Non-Anginal Pain,False,0.9,False,Current,2.9,166,7.3,52.6,True,10654,60.1,0 +5365,61,Male,140,99,211,64,115,125,96,5.1,21.6,93,140,Atypical Angina,False,0.3,False,Former,9.7,113,8.1,70.5,True,8525,34.2,1 +5366,65,Male,122,79,188,42,105,247,117,5.5,19.5,76,151,Asymptomatic,True,1.0,False,Never,3.2,114,7.2,24.6,False,4959,41.9,0 +5367,63,Female,132,79,156,58,66,204,110,5.6,27.7,83,155,Atypical Angina,False,1.8,False,Never,3.5,102,7.7,47.1,True,5957,59.2,0 +5368,57,Female,123,79,221,35,148,213,70,4.5,28.7,103,137,Asymptomatic,False,1.2,True,Current,1.0,113,5.4,57.3,True,6510,43.4,0 +5369,55,Male,124,83,206,45,110,234,117,5.2,30.9,84,163,Typical Angina,False,3.0,False,Current,6.3,47,7.6,23.8,False,1549,42.6,1 +5370,75,Male,122,72,181,50,88,194,124,6.5,24.8,77,139,Atypical Angina,False,0.8,False,Never,20.9,148,7.7,50.7,False,3724,77.9,0 +5371,64,Male,127,93,197,43,103,198,146,6.9,27.9,93,138,Non-Anginal Pain,True,1.5,False,Never,2.1,152,7.8,60.7,True,7948,51.0,1 +5372,37,Male,123,97,141,64,61,164,138,6.2,26.7,79,190,Atypical Angina,False,0.8,True,Current,3.2,240,6.4,35.0,True,5366,73.6,0 +5373,62,Male,115,74,158,55,65,180,137,6.6,24.8,77,135,Non-Anginal Pain,False,0.4,False,Never,1.9,159,5.8,46.5,True,8051,53.7,0 +5374,40,Female,98,66,148,77,57,35,77,4.5,22.9,76,183,Non-Anginal Pain,False,0.7,False,Never,0.5,116,7.5,75.8,False,5202,81.6,0 +5375,65,Male,121,77,194,33,146,134,142,6.9,26.8,75,138,Asymptomatic,True,1.5,True,Former,2.8,97,7.5,89.4,True,6711,52.8,1 +5376,65,Female,136,84,192,66,88,144,129,5.6,28.6,76,175,Atypical Angina,True,0.2,False,Current,1.4,148,6.1,66.8,False,6146,66.9,0 +5377,88,Male,144,94,186,35,101,200,156,7.2,31.7,90,134,Asymptomatic,False,0.9,False,Former,9.8,90,8.9,40.3,True,4693,67.9,1 +5378,57,Female,124,58,199,51,122,172,139,6.8,37.2,78,148,Non-Anginal Pain,False,2.0,False,Never,3.2,51,5.9,80.4,False,5596,42.0,1 +5379,52,Female,104,50,143,49,54,239,81,4.7,23.0,78,172,Atypical Angina,False,0.6,False,Former,3.3,180,7.6,69.1,False,4405,37.0,0 +5380,51,Female,132,80,234,61,122,219,117,5.8,27.8,72,160,Asymptomatic,False,0.3,True,Former,0.1,109,6.6,45.4,False,6726,55.6,0 +5381,63,Female,132,85,94,32,44,179,125,6.5,29.4,76,119,Non-Anginal Pain,False,0.7,False,Never,5.6,147,6.1,40.5,True,5232,24.7,0 +5382,61,Male,124,73,144,42,87,87,96,4.9,15.8,85,180,Asymptomatic,True,2.0,False,Current,3.0,99,5.9,63.7,False,10548,60.3,0 +5383,61,Female,128,79,175,53,104,146,124,5.5,22.8,77,181,Typical Angina,False,0.8,True,Former,10.6,137,7.1,73.5,True,6117,53.4,0 +5384,71,Male,168,108,166,82,57,107,116,6.0,22.3,84,139,Asymptomatic,False,1.1,False,Never,20.3,157,5.2,78.7,False,7815,95.2,0 +5385,62,Female,128,83,202,56,114,184,95,5.3,25.7,83,170,Typical Angina,False,2.6,False,Current,13.0,253,5.5,67.3,True,10245,59.6,0 +5386,36,Female,125,80,242,52,148,204,129,6.4,35.1,85,176,Non-Anginal Pain,False,0.2,False,Current,0.4,109,6.5,44.7,False,7404,44.0,0 +5387,49,Female,130,80,160,61,77,130,112,5.7,24.3,83,180,Asymptomatic,False,0.9,False,Never,0.9,109,7.7,32.2,False,2974,64.6,0 +5388,56,Female,130,77,175,69,83,127,88,5.3,27.3,61,172,Asymptomatic,False,1.5,False,Never,8.3,228,8.0,43.7,False,7893,56.3,0 +5389,61,Female,130,92,210,49,130,139,148,6.7,28.6,85,142,Atypical Angina,True,1.1,False,Never,1.0,141,7.1,59.2,True,4126,60.8,1 +5390,40,Male,106,53,217,56,138,56,60,4.1,15.0,71,181,Atypical Angina,False,1.1,False,Former,6.9,190,6.4,37.3,True,5862,90.4,0 +5391,69,Female,129,86,162,54,86,139,69,4.3,21.1,86,144,Asymptomatic,False,0.7,False,Never,1.4,140,5.0,33.4,True,8792,66.0,0 +5392,50,Male,128,78,196,60,85,202,123,5.1,24.0,88,149,Non-Anginal Pain,False,2.0,False,Never,12.0,225,6.8,39.0,True,7094,54.3,0 +5393,67,Male,135,91,174,54,90,157,201,8.3,29.2,78,156,Typical Angina,False,3.4,False,Never,4.6,4,5.4,100.0,False,2287,59.4,1 +5394,66,Female,123,88,218,49,135,123,126,5.4,28.6,85,152,Atypical Angina,False,0.4,True,Never,0.6,108,6.1,38.8,False,2797,57.2,0 +5395,46,Female,139,83,198,39,113,207,143,6.4,24.7,84,173,Atypical Angina,False,2.6,True,Former,4.1,191,7.1,45.1,True,6442,78.5,1 +5396,64,Male,132,84,171,48,85,263,118,6.4,24.8,96,129,Asymptomatic,True,3.1,False,Current,18.2,118,9.0,63.7,True,5460,48.3,1 +5397,70,Male,135,83,175,35,102,195,127,6.1,29.6,76,135,Typical Angina,True,0.3,True,Current,4.4,94,6.1,61.6,False,5048,33.6,1 +5398,57,Female,132,85,185,42,97,213,172,7.9,37.5,94,139,Asymptomatic,False,1.6,False,Current,5.8,49,5.7,73.8,True,4725,57.0,1 +5399,63,Female,124,80,199,48,117,177,130,5.6,26.2,86,167,Non-Anginal Pain,False,0.6,True,Former,2.1,144,8.4,41.0,False,5884,61.9,0 +5400,40,Female,130,91,158,54,71,139,110,5.6,28.6,81,178,Non-Anginal Pain,False,0.2,True,Never,1.2,188,7.2,58.7,True,12057,92.4,0 +5401,40,Male,130,74,265,72,142,175,113,5.9,26.4,87,210,Non-Anginal Pain,False,1.7,False,Never,7.0,167,6.7,42.8,True,5822,40.8,0 +5402,60,Male,150,94,176,49,85,128,138,5.9,30.0,91,132,Asymptomatic,False,0.1,False,Never,2.2,0,5.3,71.6,False,6841,41.6,0 +5403,31,Male,127,89,90,37,45,119,95,5.7,25.2,102,188,Non-Anginal Pain,False,0.3,False,Current,2.3,10,4.7,44.9,False,6116,49.2,0 +5404,47,Male,135,95,202,42,122,181,131,6.3,28.8,83,136,Asymptomatic,False,1.4,False,Current,2.9,61,7.4,48.2,False,2260,48.8,1 +5405,54,Female,134,88,166,62,90,71,114,5.6,27.6,92,184,Atypical Angina,False,0.1,False,Never,1.7,104,7.9,71.3,False,5331,70.7,0 +5406,64,Female,135,89,146,43,92,80,130,5.7,24.7,89,128,Atypical Angina,False,2.9,True,Former,3.5,130,9.8,56.9,True,7872,72.7,1 +5407,73,Female,119,71,216,75,108,143,145,6.4,25.8,75,156,Asymptomatic,True,0.9,False,Never,8.7,262,6.1,49.3,False,9815,56.9,0 +5408,68,Female,148,97,202,65,113,140,122,6.1,26.6,108,114,Typical Angina,True,1.6,False,Former,19.8,66,7.2,50.5,False,3215,59.2,1 +5409,38,Male,105,74,206,68,93,229,75,4.9,30.1,79,176,Asymptomatic,False,1.8,True,Former,1.6,271,6.6,34.5,True,10084,49.1,0 +5410,51,Male,138,88,167,42,100,101,146,6.3,27.5,84,151,Asymptomatic,False,1.2,False,Never,2.4,144,6.0,57.8,False,4091,74.0,1 +5411,60,Female,139,97,194,58,102,220,84,4.2,26.2,100,142,Asymptomatic,False,0.4,True,Never,3.1,145,6.0,41.8,False,4415,71.8,1 +5412,50,Female,108,51,185,48,100,146,136,5.8,29.5,74,172,Asymptomatic,False,0.3,False,Former,4.8,148,8.0,66.7,False,4108,59.0,0 +5413,60,Male,113,68,204,64,109,129,86,4.5,25.3,85,164,Atypical Angina,False,0.5,True,Never,3.1,214,6.6,55.2,True,3640,81.7,0 +5414,42,Male,109,70,257,62,152,188,153,6.3,30.7,88,162,Asymptomatic,True,0.5,True,Never,2.5,124,5.8,54.5,False,4370,87.5,1 +5415,42,Female,113,77,190,67,80,182,134,6.3,25.2,70,181,Asymptomatic,False,0.0,False,Never,0.5,126,7.8,46.9,True,6732,62.7,0 +5416,90,Female,164,120,221,58,136,129,136,6.3,21.6,80,148,Atypical Angina,False,1.1,False,Never,3.4,102,8.4,67.8,True,5195,63.2,0 +5417,49,Female,111,77,206,64,109,149,124,6.0,22.5,88,186,Asymptomatic,False,2.2,False,Former,0.0,127,7.0,42.0,False,6671,66.0,0 +5418,54,Male,123,80,199,63,116,151,126,6.5,25.6,72,168,Asymptomatic,False,0.6,False,Former,1.9,72,8.8,36.0,False,3830,47.3,0 +5419,69,Male,153,82,179,37,93,175,141,6.3,31.8,89,119,Atypical Angina,True,0.9,False,Former,6.2,51,5.9,61.9,True,6660,47.6,1 +5420,55,Male,134,85,168,56,91,162,126,5.8,29.1,76,150,Typical Angina,False,0.1,True,Former,6.6,207,6.0,64.9,False,6248,53.8,1 +5421,73,Male,136,81,188,36,105,200,115,5.4,20.9,91,134,Asymptomatic,False,0.6,True,Former,1.6,113,7.9,28.2,False,7533,61.7,0 +5422,88,Male,175,100,211,41,112,302,145,7.2,33.0,83,105,Asymptomatic,True,1.6,False,Former,15.1,33,4.2,53.7,False,4840,78.5,1 +5423,59,Male,135,89,199,60,112,117,135,6.0,23.5,76,155,Atypical Angina,False,1.5,False,Former,9.3,103,7.7,57.5,False,8489,69.6,1 +5424,90,Male,141,83,210,54,116,228,126,6.2,23.4,94,128,Atypical Angina,True,1.6,False,Current,6.4,128,6.9,52.2,True,7481,48.5,1 +5425,50,Male,133,73,199,48,118,206,130,6.3,24.7,84,162,Asymptomatic,True,2.2,False,Never,9.3,138,6.7,60.6,False,9132,39.3,0 +5426,24,Female,133,96,139,66,65,43,92,4.8,21.2,74,210,Atypical Angina,False,0.4,True,Never,2.1,152,7.2,65.9,False,4694,81.7,0 +5427,60,Female,128,95,207,68,100,207,131,6.5,25.8,84,169,Asymptomatic,False,1.5,False,Former,15.2,117,6.1,54.5,True,3821,68.4,0 +5428,63,Male,118,80,187,53,92,177,96,5.2,19.3,83,164,Non-Anginal Pain,False,0.3,False,Former,9.8,143,5.7,46.8,True,7688,71.4,0 +5429,39,Female,127,87,171,64,81,116,148,7.1,26.2,79,184,Atypical Angina,False,0.8,False,Never,0.7,72,5.9,47.8,False,7298,57.4,0 +5430,38,Female,116,64,163,51,88,124,85,4.6,27.4,79,181,Non-Anginal Pain,False,0.4,True,Current,0.9,162,6.4,57.3,True,9134,39.6,0 +5431,44,Female,143,96,242,68,134,213,147,6.8,26.5,82,179,Asymptomatic,False,1.0,False,Former,16.2,0,8.1,58.7,False,3030,37.6,0 +5432,33,Male,103,73,185,65,113,72,109,5.8,19.2,71,187,Atypical Angina,False,2.6,False,Current,3.0,225,5.5,42.2,True,10072,56.5,0 +5433,55,Male,119,76,185,63,109,143,135,6.3,24.6,85,185,Asymptomatic,False,0.9,False,Former,30.2,125,7.6,42.4,False,9372,50.0,0 +5434,46,Male,134,80,213,45,115,207,102,5.9,29.6,90,179,Asymptomatic,False,1.7,False,Never,5.5,134,6.6,50.3,False,6148,49.2,0 +5435,77,Female,153,97,185,57,91,212,106,6.1,28.5,80,135,Asymptomatic,False,0.5,True,Current,8.3,71,7.7,58.4,False,6346,39.3,0 +5436,69,Male,112,74,198,76,95,146,138,6.6,24.0,73,143,Asymptomatic,False,3.5,False,Never,2.1,194,7.5,69.6,False,3783,62.4,0 +5437,52,Female,120,79,213,56,127,185,132,6.7,28.6,82,144,Atypical Angina,True,2.4,False,Never,2.0,162,4.8,46.8,False,6759,34.1,1 +5438,52,Male,119,81,179,66,51,217,102,5.1,28.0,92,173,Typical Angina,True,0.6,False,Never,19.2,153,7.7,15.9,True,4519,49.0,0 +5439,73,Male,132,80,214,59,117,167,141,5.9,28.2,71,165,Asymptomatic,True,0.5,False,Former,12.8,180,6.8,53.3,True,6914,82.7,0 +5440,65,Male,122,78,179,73,89,109,120,5.2,21.8,86,147,Non-Anginal Pain,True,2.7,True,Never,4.8,183,7.9,45.6,True,7898,94.1,1 +5441,36,Male,144,75,207,30,124,210,135,6.1,26.0,87,165,Atypical Angina,False,0.9,False,Never,17.3,97,6.7,56.7,True,8601,55.8,0 +5442,57,Female,134,94,167,60,89,51,160,7.2,28.5,77,156,Asymptomatic,False,0.6,True,Never,7.4,95,7.2,19.7,False,2398,80.5,1 +5443,61,Female,133,92,172,58,65,188,145,6.9,22.8,82,160,Atypical Angina,False,0.4,False,Former,13.3,95,5.5,20.8,True,10836,63.5,0 +5444,58,Female,141,85,169,49,87,159,123,6.4,26.6,86,169,Atypical Angina,False,1.3,False,Current,3.8,110,5.6,44.3,False,3410,62.1,0 +5445,67,Male,158,104,220,50,129,204,79,4.2,25.6,88,144,Atypical Angina,True,4.9,False,Never,6.5,124,6.9,60.4,False,3891,46.6,1 +5446,49,Male,106,73,211,56,134,113,118,6.1,19.5,74,164,Asymptomatic,False,0.3,False,Current,2.0,128,7.7,65.8,False,10717,42.8,0 +5447,32,Female,131,86,137,54,42,190,157,6.7,31.0,81,192,Non-Anginal Pain,False,2.3,False,Never,8.4,130,6.0,59.8,False,5398,75.8,0 +5448,69,Male,136,69,215,62,119,179,129,6.3,29.2,82,157,Asymptomatic,True,0.1,False,Former,8.8,147,6.3,56.7,False,6816,87.8,1 +5449,41,Female,121,81,198,56,101,256,97,4.8,20.1,91,186,Asymptomatic,False,1.7,False,Never,10.4,133,6.9,49.5,False,2592,47.3,0 +5450,49,Female,134,102,143,60,58,129,127,6.0,27.0,78,150,Asymptomatic,False,1.5,False,Never,0.3,101,8.2,69.8,False,1054,59.9,1 +5451,58,Female,111,76,201,64,107,156,124,6.2,29.5,78,165,Asymptomatic,False,0.4,False,Never,8.6,178,7.6,38.4,False,7180,49.1,0 +5452,37,Male,120,70,197,57,122,35,136,6.1,23.3,84,197,Asymptomatic,True,0.8,False,Never,4.8,147,6.3,38.0,False,3890,89.0,0 +5453,53,Male,144,92,162,39,97,136,97,4.8,27.9,84,166,Asymptomatic,True,0.5,False,Former,3.8,113,7.5,61.2,False,5535,32.4,0 +5454,41,Male,130,86,196,48,105,196,116,6.1,30.2,91,192,Asymptomatic,False,1.2,False,Never,3.3,52,4.9,32.7,False,6733,71.8,0 +5455,46,Female,135,83,213,71,129,66,100,5.0,18.4,65,177,Atypical Angina,False,0.4,False,Never,2.1,206,5.9,29.4,True,8917,54.8,0 +5456,41,Male,116,72,196,63,119,90,115,5.8,18.0,80,188,Atypical Angina,True,0.5,False,Never,4.5,144,7.9,23.8,False,3756,67.6,0 +5457,39,Male,120,75,183,61,99,91,80,4.8,20.2,86,175,Atypical Angina,False,1.0,True,Never,11.9,129,6.8,42.2,False,6563,62.1,0 +5458,65,Male,103,76,246,63,137,171,118,5.4,21.9,62,151,Asymptomatic,False,0.2,False,Never,12.8,161,7.6,59.4,True,8413,65.4,0 +5459,63,Female,123,73,217,56,125,189,152,6.9,25.2,73,167,Atypical Angina,False,0.9,False,Current,13.9,190,7.4,66.3,False,5872,47.9,0 +5460,56,Male,140,91,163,35,100,156,135,6.8,32.0,74,145,Non-Anginal Pain,False,0.9,False,Never,2.6,81,8.4,32.6,False,3580,39.2,1 +5461,47,Male,132,87,209,64,105,128,122,5.8,18.6,94,187,Typical Angina,False,0.2,False,Never,7.0,179,6.9,83.1,False,4387,67.2,0 +5462,38,Male,106,72,167,54,107,51,121,6.4,28.9,80,166,Non-Anginal Pain,True,0.7,True,Never,2.9,162,7.6,21.5,True,7521,78.8,1 +5463,21,Male,110,60,200,57,111,175,124,6.1,26.1,76,196,Atypical Angina,True,5.0,False,Former,6.6,202,6.1,53.3,True,11811,59.5,1 +5464,46,Female,124,70,170,57,93,110,126,5.9,20.4,85,197,Atypical Angina,False,0.1,False,Never,6.2,39,8.0,49.7,False,3887,42.8,0 +5465,50,Female,128,88,199,77,101,182,118,6.6,28.1,81,159,Non-Anginal Pain,True,1.1,True,Never,7.2,63,7.2,57.3,False,4709,68.6,1 +5466,58,Male,123,77,193,47,112,224,115,5.5,28.9,73,167,Atypical Angina,False,2.4,False,Never,8.6,166,5.2,37.8,False,2674,25.0,0 +5467,66,Female,153,101,157,61,81,138,133,5.8,30.4,87,163,Asymptomatic,False,0.1,True,Never,15.0,163,6.9,56.7,False,4366,68.6,0 +5468,53,Male,148,100,172,53,89,101,156,6.6,30.7,71,178,Typical Angina,False,1.3,False,Never,1.8,215,8.4,40.1,False,6409,87.1,0 +5469,55,Male,109,73,226,53,138,171,143,6.3,17.2,79,133,Typical Angina,True,1.2,True,Never,4.0,121,8.1,62.9,True,10479,73.1,1 +5470,46,Male,125,79,203,54,118,175,124,6.0,25.1,80,179,Asymptomatic,False,1.0,True,Former,5.5,89,7.2,60.7,False,5911,38.5,0 +5471,52,Male,134,83,151,52,68,164,100,5.4,26.0,71,172,Asymptomatic,False,0.2,False,Never,1.8,61,7.1,49.2,False,2604,76.9,0 +5472,61,Female,115,77,246,91,111,214,113,6.6,23.8,55,175,Atypical Angina,False,1.2,True,Never,9.1,282,6.5,30.6,True,6971,56.7,0 +5473,42,Male,141,77,156,35,100,160,102,5.5,36.3,87,159,Asymptomatic,False,3.6,False,Former,7.0,104,7.8,39.7,True,7417,59.3,1 +5474,53,Male,128,80,184,63,83,196,83,4.1,23.4,89,190,Atypical Angina,False,1.5,False,Never,7.4,139,6.6,62.8,False,7914,98.8,0 +5475,55,Female,130,77,161,54,75,119,136,5.7,24.0,68,151,Non-Anginal Pain,False,0.2,False,Never,5.4,219,5.2,43.5,True,7714,68.3,0 +5476,42,Female,134,72,202,51,114,183,106,5.3,27.1,83,168,Typical Angina,False,1.3,False,Never,0.8,89,7.5,49.7,True,7953,58.5,0 +5477,39,Female,108,77,209,48,126,200,120,5.9,23.7,84,166,Atypical Angina,False,1.0,False,Former,4.7,57,6.7,39.9,True,7336,20.5,0 +5478,72,Male,150,90,215,35,140,222,84,4.9,31.8,95,135,Atypical Angina,True,2.9,True,Never,10.6,28,6.9,65.7,True,5166,46.8,1 +5479,64,Male,135,86,118,37,70,83,120,6.0,23.0,84,159,Asymptomatic,False,4.5,False,Never,2.4,106,8.3,30.5,True,4952,67.1,0 +5480,49,Female,121,82,224,47,128,192,154,6.7,25.7,55,178,Asymptomatic,False,0.6,False,Never,11.0,187,9.1,61.7,False,7760,37.7,0 +5481,53,Male,125,67,178,59,74,178,108,5.4,30.3,77,175,Non-Anginal Pain,True,2.3,False,Former,4.6,204,7.5,39.4,False,7879,52.5,0 +5482,64,Female,120,74,259,110,123,147,121,6.2,20.0,70,158,Asymptomatic,False,0.7,False,Former,0.2,201,4.8,52.5,True,7554,76.4,0 +5483,41,Male,119,79,209,58,119,150,133,6.3,23.0,94,168,Asymptomatic,False,2.9,False,Current,5.9,105,6.7,22.9,True,8272,59.1,0 +5484,54,Female,123,85,172,59,77,152,116,5.5,20.1,91,192,Asymptomatic,False,0.4,True,Former,2.5,169,6.8,34.5,False,3420,67.9,0 +5485,65,Female,144,93,136,44,74,93,137,6.5,15.8,74,136,Asymptomatic,True,0.3,False,Never,0.9,70,6.5,52.2,False,2261,56.7,1 +5486,43,Female,124,71,202,74,92,178,133,5.8,20.0,77,170,Typical Angina,False,0.3,False,Never,5.0,157,4.3,52.9,True,7619,71.0,0 +5487,57,Female,127,78,194,57,121,60,141,6.3,31.0,86,166,Typical Angina,False,0.1,True,Never,6.7,145,6.7,52.3,True,8043,69.9,0 +5488,29,Female,108,72,202,67,73,266,127,5.5,25.9,73,188,Asymptomatic,False,0.2,False,Never,15.7,205,5.6,29.3,True,8595,69.3,0 +5489,55,Female,128,80,223,56,125,220,95,5.3,34.1,80,167,Asymptomatic,True,0.9,True,Never,1.5,111,7.4,55.8,False,4923,51.2,0 +5490,52,Male,132,78,191,41,113,205,126,6.0,25.7,93,152,Typical Angina,True,0.7,False,Current,5.0,63,5.5,76.4,False,9400,40.7,1 +5491,79,Female,124,76,222,62,143,110,161,6.6,23.0,70,154,Asymptomatic,False,0.6,True,Never,3.9,177,8.0,47.6,True,5965,44.5,0 +5492,57,Female,108,72,195,68,97,184,123,5.9,22.3,79,170,Asymptomatic,False,0.6,False,Never,1.9,168,6.6,34.3,False,4207,51.1,0 +5493,48,Male,125,78,201,55,100,218,132,5.5,27.9,73,173,Atypical Angina,False,0.5,False,Never,14.6,146,7.6,52.2,True,7808,52.7,0 +5494,61,Male,129,93,121,32,60,111,140,7.1,22.8,79,155,Asymptomatic,True,0.9,False,Never,10.8,69,7.3,43.1,True,8098,34.5,0 +5495,57,Male,144,96,217,33,124,184,99,5.6,28.2,78,147,Typical Angina,True,0.3,False,Former,4.7,176,5.4,44.0,False,6191,60.5,1 +5496,42,Male,135,86,187,46,93,236,124,6.3,27.0,87,169,Asymptomatic,False,0.1,False,Never,4.3,100,6.5,53.2,False,2868,38.4,0 +5497,54,Female,114,80,235,71,133,159,130,6.0,18.0,75,188,Non-Anginal Pain,False,2.0,False,Never,5.1,145,5.9,23.7,False,3621,63.0,0 +5498,79,Female,159,97,218,50,151,99,141,6.2,18.0,91,142,Non-Anginal Pain,False,0.5,False,Former,6.8,164,7.0,77.8,True,10501,64.7,0 +5499,60,Female,142,81,185,54,93,168,98,5.2,25.4,82,152,Non-Anginal Pain,True,6.2,False,Never,4.5,69,6.9,90.2,False,6403,51.1,1 +5500,35,Female,132,85,218,76,78,262,75,5.0,32.8,75,210,Non-Anginal Pain,False,0.2,False,Never,5.2,267,6.6,71.8,True,9095,38.6,0 +5501,51,Male,97,68,158,81,55,119,123,6.0,24.3,91,167,Atypical Angina,False,0.6,True,Former,4.8,227,7.6,42.9,False,4074,95.5,0 +5502,59,Male,123,74,236,65,144,229,131,6.3,32.0,84,185,Asymptomatic,False,1.7,False,Never,1.5,210,5.7,16.1,True,13547,64.2,0 +5503,53,Female,125,80,209,65,85,246,89,4.9,27.8,94,192,Non-Anginal Pain,False,1.0,False,Never,22.0,160,7.7,35.1,True,4447,48.7,0 +5504,73,Male,126,78,133,54,80,45,143,6.1,27.7,70,127,Asymptomatic,True,0.7,False,Never,3.6,136,4.8,62.0,True,6784,78.6,1 +5505,49,Male,128,92,173,53,96,126,91,4.7,18.0,76,156,Asymptomatic,False,0.7,True,Current,8.3,228,5.4,41.4,True,8248,54.8,0 +5506,76,Male,132,82,200,47,103,224,136,6.4,27.2,70,182,Asymptomatic,False,1.3,False,Never,5.5,208,6.5,47.3,False,1627,67.1,0 +5507,46,Male,157,96,181,46,94,175,133,5.8,26.7,86,180,Asymptomatic,False,0.6,True,Never,5.2,36,5.8,61.9,True,6995,62.0,0 +5508,54,Female,124,72,184,67,100,109,120,6.1,22.9,66,145,Asymptomatic,False,0.6,True,Never,5.1,212,5.0,55.9,True,6679,69.0,0 +5509,70,Female,158,92,201,56,117,126,109,5.9,23.9,81,159,Atypical Angina,False,0.5,True,Never,0.3,154,7.2,48.0,False,4597,75.6,0 +5510,34,Male,126,73,189,61,89,156,109,5.6,22.9,74,188,Typical Angina,False,0.2,False,Current,3.9,224,7.5,54.9,False,9162,53.6,0 +5511,43,Male,115,76,150,58,66,98,123,5.3,24.5,89,184,Non-Anginal Pain,False,2.3,True,Current,2.0,79,7.2,13.0,False,2266,86.0,0 +5512,62,Female,130,74,183,49,101,162,117,5.4,35.1,75,155,Atypical Angina,True,2.5,True,Former,2.7,109,8.0,28.2,False,5316,60.9,1 +5513,74,Male,137,96,148,47,52,164,164,7.2,24.4,69,133,Asymptomatic,False,0.7,True,Never,10.0,75,7.0,47.3,False,3682,68.6,0 +5514,46,Female,129,91,222,67,103,199,109,5.1,24.0,86,174,Atypical Angina,False,0.8,False,Former,11.4,174,5.4,39.8,True,7567,58.3,0 +5515,62,Male,112,76,228,55,158,104,135,5.9,32.6,80,147,Asymptomatic,True,1.0,True,Never,3.8,75,7.1,43.8,False,7412,57.9,1 +5516,39,Male,107,68,146,47,86,93,128,5.8,24.4,77,172,Asymptomatic,False,0.0,False,Former,5.4,61,8.8,52.7,False,5367,69.9,0 +5517,61,Male,165,106,131,26,74,144,133,6.7,32.1,88,143,Non-Anginal Pain,False,1.0,False,Former,8.6,0,7.2,56.8,False,3864,38.8,1 +5518,75,Female,178,119,238,32,155,198,136,6.3,31.8,81,127,Non-Anginal Pain,False,0.5,False,Current,3.8,0,7.2,51.1,False,500,53.2,1 +5519,50,Female,128,79,161,60,87,91,153,6.0,24.9,79,188,Asymptomatic,False,1.5,False,Current,11.5,131,7.4,62.4,True,6947,87.2,0 +5520,48,Male,124,73,186,44,95,229,112,5.5,29.0,82,155,Non-Anginal Pain,False,2.0,True,Current,1.6,147,6.6,50.3,False,6971,36.4,1 +5521,71,Male,138,79,215,62,113,189,96,5.3,25.4,79,126,Asymptomatic,True,0.5,False,Never,2.5,127,8.5,67.6,False,4348,72.0,0 +5522,63,Male,141,93,194,71,70,212,97,5.4,22.8,77,182,Non-Anginal Pain,False,1.3,False,Never,16.6,203,6.5,35.5,True,8757,77.4,0 +5523,67,Female,146,87,172,54,114,130,148,6.9,27.7,84,133,Atypical Angina,False,0.6,False,Never,1.7,100,6.4,33.1,False,3297,69.5,1 +5524,70,Male,134,81,179,67,82,178,155,6.6,20.1,92,129,Typical Angina,True,0.4,True,Never,8.0,63,6.0,42.3,False,3114,72.6,1 +5525,53,Male,160,97,203,60,110,169,129,6.0,26.9,87,157,Asymptomatic,False,1.4,True,Never,2.8,78,5.4,70.7,False,5306,42.1,0 +5526,67,Male,139,90,232,65,118,224,128,6.7,25.2,77,131,Asymptomatic,False,0.6,False,Never,14.5,54,6.0,44.5,False,3505,61.4,1 +5527,78,Female,140,84,199,59,123,35,143,6.7,22.4,82,155,Asymptomatic,False,1.2,False,Current,5.5,97,5.9,69.5,False,4364,71.4,0 +5528,50,Male,128,78,171,55,82,148,152,7.0,29.8,73,147,Asymptomatic,False,3.4,False,Never,10.5,159,6.6,49.1,True,6091,67.3,1 +5529,66,Male,131,91,214,54,116,160,90,5.4,22.5,91,144,Asymptomatic,False,1.0,False,Never,4.5,68,7.2,42.8,False,6968,41.5,0 +5530,49,Female,130,76,198,62,128,117,92,5.1,19.3,85,174,Asymptomatic,False,3.3,True,Current,0.2,141,6.8,48.2,True,6312,59.5,0 +5531,73,Male,127,79,163,63,87,107,94,4.7,22.0,74,148,Non-Anginal Pain,False,3.4,False,Former,10.7,198,7.4,17.5,True,5034,67.5,0 +5532,62,Male,131,87,199,30,133,124,126,5.5,31.2,99,157,Asymptomatic,False,1.7,False,Current,2.6,170,8.0,54.3,True,6420,21.5,1 +5533,38,Female,116,75,166,49,92,134,102,5.1,16.6,88,192,Asymptomatic,False,0.0,False,Never,1.2,62,7.9,49.3,False,8325,61.7,0 +5534,57,Female,141,103,194,43,123,136,148,6.1,29.3,81,141,Typical Angina,True,0.3,False,Current,2.5,100,7.4,54.0,False,5884,39.2,1 +5535,48,Male,124,77,162,47,79,170,110,6.0,21.9,55,160,Asymptomatic,False,0.4,False,Never,11.9,186,6.9,61.3,False,5177,83.9,0 +5536,65,Male,124,80,197,49,99,251,128,5.9,20.0,74,149,Asymptomatic,False,0.5,False,Never,9.0,133,6.4,56.9,True,6860,49.1,0 +5537,52,Male,138,94,178,58,91,202,117,6.1,29.3,79,163,Atypical Angina,False,1.3,False,Never,10.9,113,8.5,60.9,True,7185,27.6,0 +5538,53,Female,123,74,237,55,149,156,123,5.7,27.2,92,183,Atypical Angina,False,1.1,True,Never,1.4,194,7.0,28.0,True,7428,71.7,0 +5539,63,Male,141,103,230,58,157,173,162,6.9,25.8,92,139,Non-Anginal Pain,False,1.4,False,Former,3.4,226,5.1,72.3,True,9878,47.8,1 +5540,48,Male,128,81,166,27,99,167,123,5.7,24.4,77,161,Asymptomatic,True,0.7,True,Never,6.9,171,6.7,61.0,False,7215,34.1,1 +5541,19,Male,99,57,242,42,147,257,142,6.1,29.7,65,210,Asymptomatic,False,0.1,True,Never,5.6,134,7.6,69.2,False,8557,49.8,0 +5542,47,Female,146,101,220,65,119,133,131,5.9,31.0,80,161,Asymptomatic,False,2.6,False,Former,8.9,139,8.6,50.6,True,5601,65.4,0 +5543,47,Female,123,73,214,68,108,163,118,5.6,30.4,99,192,Asymptomatic,False,0.4,True,Never,6.8,202,4.9,52.1,False,4175,66.6,0 +5544,74,Male,149,92,208,54,124,195,138,6.6,29.5,84,147,Asymptomatic,True,2.9,False,Never,4.4,92,5.0,70.4,True,6100,60.7,1 +5545,33,Male,128,75,214,52,124,148,122,6.0,27.3,76,190,Asymptomatic,True,0.7,True,Never,2.5,146,8.0,44.8,True,8776,49.7,0 +5546,77,Female,135,94,237,57,145,165,81,4.5,28.2,76,120,Non-Anginal Pain,False,0.8,True,Never,1.1,122,5.6,32.8,False,7082,44.2,1 +5547,56,Female,141,90,185,58,112,61,125,5.6,25.7,79,190,Atypical Angina,False,0.5,False,Former,1.4,277,8.0,44.5,True,8847,80.2,0 +5548,60,Male,110,67,159,37,107,99,119,5.3,28.6,85,173,Non-Anginal Pain,False,1.1,False,Current,1.9,72,6.7,30.2,False,4222,76.0,0 +5549,52,Female,124,79,157,58,78,156,73,4.5,22.2,76,172,Asymptomatic,False,0.1,False,Never,2.3,146,6.1,45.5,False,2473,50.3,0 +5550,52,Male,125,71,140,53,72,135,120,5.7,26.9,86,163,Non-Anginal Pain,False,0.0,False,Former,9.8,27,6.1,39.4,True,6681,77.3,0 +5551,47,Male,110,68,160,61,80,125,123,6.1,19.9,66,182,Non-Anginal Pain,False,0.6,True,Former,5.3,254,7.4,42.1,False,7935,44.9,0 +5552,80,Female,119,71,228,70,134,161,117,5.9,24.3,98,116,Asymptomatic,False,2.6,False,Never,0.9,0,7.6,51.7,False,2591,87.8,1 +5553,45,Female,129,84,247,60,149,171,102,5.5,21.3,81,167,Atypical Angina,False,0.6,False,Former,3.6,43,6.6,54.0,False,3306,35.7,0 +5554,60,Female,144,100,207,68,99,200,107,5.5,21.5,74,167,Atypical Angina,False,0.2,False,Former,8.2,115,5.9,56.3,False,3787,46.1,0 +5555,57,Female,128,82,191,40,118,198,124,6.2,33.3,70,171,Asymptomatic,False,0.1,False,Never,4.1,96,5.9,72.9,True,8296,47.4,0 +5556,55,Male,133,87,227,58,132,191,113,5.8,24.4,92,155,Asymptomatic,False,0.6,False,Current,14.4,111,6.1,45.0,False,3466,50.3,1 +5557,67,Female,137,82,180,66,60,215,97,5.2,26.2,94,152,Asymptomatic,False,0.1,True,Current,21.1,109,7.9,56.6,False,4907,44.4,0 +5558,61,Female,111,57,218,63,127,132,103,5.7,21.5,75,182,Asymptomatic,False,0.7,True,Current,5.2,212,8.9,39.2,True,5588,42.9,0 +5559,31,Female,108,59,163,55,99,104,143,6.6,30.6,72,175,Typical Angina,False,1.0,False,Former,0.2,37,8.2,43.7,False,3376,66.8,1 +5560,32,Female,108,74,185,52,102,159,129,6.6,23.6,93,160,Atypical Angina,False,0.5,True,Never,0.7,79,5.5,42.3,False,3787,34.6,1 +5561,47,Female,124,73,172,62,76,117,139,6.5,21.4,81,185,Asymptomatic,False,0.8,False,Current,0.8,89,7.3,52.1,True,6159,45.7,0 +5562,72,Female,125,84,250,63,155,233,127,6.3,23.1,68,137,Asymptomatic,True,2.2,False,Never,6.1,28,6.7,27.2,False,3569,64.0,1 +5563,79,Male,159,93,245,74,148,82,131,6.0,24.5,85,128,Asymptomatic,False,0.3,False,Never,3.7,135,7.4,79.1,False,3945,75.9,0 +5564,49,Male,102,65,203,54,127,137,100,5.1,29.6,94,157,Typical Angina,False,1.2,True,Current,2.4,108,7.5,66.5,False,5335,50.8,1 +5565,55,Male,134,82,176,56,103,173,84,4.6,22.0,75,179,Asymptomatic,False,1.0,False,Former,12.2,174,6.2,71.9,False,7466,42.0,0 +5566,39,Female,99,59,139,55,60,185,95,5.4,24.6,89,186,Asymptomatic,False,0.6,False,Never,2.5,219,6.7,35.4,False,4365,68.3,0 +5567,58,Male,157,109,239,62,131,192,126,6.6,23.8,75,159,Asymptomatic,False,0.0,True,Never,6.5,141,6.5,40.4,True,8193,39.5,0 +5568,58,Female,129,74,193,58,90,183,172,6.6,30.1,77,137,Non-Anginal Pain,True,0.5,False,Never,0.5,200,6.0,54.0,False,6234,81.8,1 +5569,46,Male,110,65,199,50,111,96,112,5.4,26.6,100,179,Asymptomatic,False,0.3,False,Never,10.3,181,7.2,47.5,True,9602,58.8,0 +5570,53,Female,144,94,199,76,95,109,75,5.0,15.0,91,193,Asymptomatic,False,0.2,False,Never,3.3,75,6.2,53.3,False,3518,65.1,0 +5571,60,Female,107,75,174,68,115,56,117,5.8,19.4,96,169,Asymptomatic,False,0.1,False,Former,4.1,168,8.0,43.2,False,2402,47.8,0 +5572,76,Female,126,92,209,52,128,166,66,4.0,17.4,90,156,Non-Anginal Pain,False,0.4,False,Never,19.4,229,6.5,28.8,True,8347,64.2,0 +5573,79,Male,130,94,189,61,81,171,115,5.1,24.4,82,143,Asymptomatic,False,0.5,True,Never,10.2,157,7.5,26.9,False,4931,57.4,0 +5574,88,Male,139,89,150,51,65,191,173,7.3,27.2,76,152,Non-Anginal Pain,True,0.7,False,Former,2.8,96,6.9,51.0,False,500,63.0,0 +5575,46,Female,108,70,194,58,103,116,107,4.7,20.4,88,181,Asymptomatic,False,0.7,False,Current,2.5,89,8.3,56.3,False,500,54.5,0 +5576,25,Male,112,71,149,51,81,136,124,5.8,26.2,87,188,Asymptomatic,True,0.5,False,Current,11.1,154,6.3,51.8,False,6435,74.3,0 +5577,55,Male,139,81,174,49,92,117,60,4.4,26.2,96,170,Asymptomatic,False,0.7,False,Never,6.5,22,5.9,48.3,False,4940,67.9,0 +5578,39,Male,129,76,233,70,134,178,103,5.0,30.8,81,174,Asymptomatic,True,1.4,True,Former,9.3,203,4.0,32.9,True,9883,60.7,1 +5579,61,Female,124,75,219,82,111,138,106,5.2,26.5,74,180,Asymptomatic,False,1.9,True,Never,2.7,144,7.9,20.8,False,4094,60.8,0 +5580,50,Female,120,94,203,55,128,173,107,4.8,26.1,83,179,Asymptomatic,False,1.4,False,Former,12.6,206,7.2,74.2,True,6688,78.8,0 +5581,45,Male,109,60,170,66,99,63,78,4.6,15.8,83,171,Atypical Angina,False,1.0,False,Never,2.2,113,7.8,46.3,False,4133,85.9,0 +5582,53,Male,131,82,214,47,153,175,118,6.1,27.0,85,165,Asymptomatic,False,0.1,False,Never,8.4,177,7.9,52.0,False,4947,50.6,0 +5583,68,Female,126,76,245,72,140,89,114,5.2,24.5,62,177,Asymptomatic,False,0.1,False,Never,0.8,282,7.8,85.5,True,7975,50.9,0 +5584,59,Male,136,69,265,58,158,194,104,5.5,21.3,67,151,Asymptomatic,False,0.5,False,Never,5.3,191,6.7,70.5,True,7526,44.8,0 +5585,54,Male,125,64,149,66,85,49,134,5.6,18.0,78,168,Asymptomatic,False,1.0,True,Never,3.4,194,7.8,15.0,False,5249,72.2,0 +5586,43,Male,122,77,161,54,82,73,98,5.6,15.0,84,182,Atypical Angina,False,1.9,False,Never,12.6,210,5.5,58.8,True,6041,58.0,0 +5587,40,Male,133,93,149,39,94,111,122,5.7,30.6,69,167,Non-Anginal Pain,False,0.4,False,Never,7.3,120,6.0,73.3,False,3293,47.4,0 +5588,59,Female,117,60,184,59,93,100,136,6.6,24.1,95,169,Asymptomatic,False,1.1,False,Never,0.2,187,5.5,61.4,True,9900,67.9,0 +5589,49,Male,106,72,168,74,86,117,81,4.4,24.6,87,181,Non-Anginal Pain,False,0.2,True,Never,1.6,110,6.6,65.1,False,5537,84.1,0 +5590,41,Male,133,84,160,56,85,109,145,6.4,30.8,100,168,Non-Anginal Pain,False,0.1,False,Former,7.0,215,8.5,81.0,True,6375,77.0,0 +5591,61,Male,138,90,195,53,135,49,129,5.8,18.2,92,145,Atypical Angina,True,0.6,False,Current,1.9,70,7.0,38.4,True,8190,51.3,1 +5592,54,Male,132,89,163,38,91,171,92,5.1,26.0,77,162,Non-Anginal Pain,False,0.4,False,Never,8.1,76,7.7,46.6,False,2735,53.1,0 +5593,50,Male,137,74,204,61,123,125,126,5.6,25.4,64,182,Non-Anginal Pain,False,0.6,True,Never,2.8,97,6.1,35.6,True,8158,84.4,0 +5594,75,Male,135,81,241,36,163,214,124,5.8,23.6,81,133,Non-Anginal Pain,False,4.5,False,Never,4.1,104,9.3,55.9,True,10378,66.0,1 +5595,46,Male,127,76,167,67,66,162,113,5.4,17.7,80,177,Asymptomatic,False,1.0,False,Never,2.7,210,7.1,63.8,True,6761,51.2,0 +5596,67,Male,141,93,188,50,99,181,98,5.2,30.4,88,148,Non-Anginal Pain,False,0.3,False,Never,2.4,132,6.4,60.9,True,4519,57.8,1 +5597,56,Male,131,84,220,51,148,122,107,5.3,23.1,80,163,Asymptomatic,False,1.2,False,Never,9.5,216,7.6,27.6,True,10447,67.1,0 +5598,60,Female,127,88,205,83,80,206,124,5.6,23.9,65,183,Atypical Angina,False,0.3,False,Never,2.9,248,8.2,43.5,True,3677,66.7,0 +5599,56,Female,121,78,219,39,135,194,109,5.6,31.9,78,179,Non-Anginal Pain,False,0.4,False,Never,2.4,75,7.1,42.8,True,3983,63.3,0 +5600,67,Female,133,94,195,56,118,133,117,5.5,27.8,77,130,Asymptomatic,True,0.1,True,Never,0.9,133,7.9,61.4,False,6505,74.1,1 +5601,74,Male,135,88,205,39,125,224,128,6.2,26.8,84,128,Non-Anginal Pain,False,1.0,False,Never,4.6,92,5.6,59.5,False,9314,53.3,1 +5602,37,Female,114,67,170,70,69,123,124,5.6,18.9,72,192,Asymptomatic,False,1.6,False,Never,4.8,185,7.1,46.1,False,6455,49.3,0 +5603,70,Female,134,90,170,58,99,90,110,5.5,16.3,80,139,Non-Anginal Pain,False,0.3,True,Former,2.5,74,6.3,61.3,False,6352,52.4,0 +5604,51,Female,121,76,216,66,111,146,94,4.8,24.1,76,176,Asymptomatic,False,0.6,True,Never,3.6,169,8.2,53.6,False,6106,53.1,0 +5605,59,Female,126,74,218,50,133,196,125,5.5,31.8,91,137,Atypical Angina,False,1.1,True,Current,3.0,47,6.5,8.4,False,5776,45.8,1 +5606,58,Female,112,58,215,60,133,116,87,5.3,22.0,80,155,Atypical Angina,False,0.2,False,Former,4.9,240,7.2,67.2,True,5084,48.4,0 +5607,47,Male,94,66,142,46,86,77,69,4.0,27.6,63,172,Asymptomatic,False,0.0,False,Never,2.0,257,5.3,48.4,False,8652,69.7,0 +5608,47,Female,131,81,186,57,106,71,122,5.8,30.5,63,187,Asymptomatic,False,0.8,True,Never,1.6,90,7.3,55.3,True,6704,71.1,0 +5609,57,Male,118,72,194,59,102,103,107,5.2,20.1,72,164,Non-Anginal Pain,True,0.9,False,Never,3.2,125,7.7,39.9,False,5868,60.9,0 +5610,46,Male,121,77,188,46,105,137,104,5.2,24.9,66,177,Asymptomatic,False,2.4,False,Never,2.9,107,6.5,49.7,False,1726,69.1,0 +5611,63,Male,136,80,221,61,114,153,107,5.7,27.4,83,165,Non-Anginal Pain,False,0.1,True,Never,8.8,162,5.7,46.8,False,4775,67.8,0 +5612,35,Male,122,74,165,57,106,71,121,5.5,24.9,76,192,Non-Anginal Pain,False,2.6,False,Never,2.9,191,8.7,40.0,True,5692,61.5,0 +5613,52,Male,117,65,170,48,78,200,110,5.7,29.0,78,170,Asymptomatic,False,0.1,False,Never,2.0,209,7.6,45.7,True,11005,54.6,0 +5614,72,Female,148,93,171,53,89,197,124,6.1,28.8,82,147,Asymptomatic,False,0.5,False,Former,6.9,175,7.5,45.4,True,8654,38.6,0 +5615,52,Male,112,61,183,53,122,105,113,5.1,22.0,77,192,Non-Anginal Pain,False,0.6,False,Former,3.4,85,6.8,38.1,False,7307,59.3,0 +5616,42,Male,144,90,198,56,95,242,101,5.0,22.8,88,193,Asymptomatic,False,0.2,False,Never,11.3,231,7.5,42.2,True,6393,47.2,0 +5617,53,Male,99,69,237,50,140,247,136,6.4,27.9,78,144,Atypical Angina,True,1.9,False,Never,4.8,84,6.9,50.8,False,4288,39.1,1 +5618,41,Female,163,114,166,55,87,149,124,5.8,32.6,86,184,Asymptomatic,False,0.5,False,Never,4.6,209,7.2,42.0,True,6301,55.7,0 +5619,64,Female,131,65,246,78,132,110,87,5.4,21.6,72,166,Asymptomatic,False,0.6,False,Former,4.0,149,6.1,33.9,False,8365,67.5,0 +5620,56,Male,130,94,198,56,117,129,152,6.3,23.3,79,157,Non-Anginal Pain,True,1.1,True,Never,3.0,74,5.7,20.0,False,641,30.6,1 +5621,51,Female,140,69,250,71,149,119,95,4.7,17.8,83,179,Atypical Angina,False,0.8,False,Former,0.8,216,8.0,35.1,False,6016,63.4,0 +5622,63,Female,150,100,260,55,170,165,116,5.3,26.8,79,159,Asymptomatic,False,0.3,True,Never,3.6,92,7.9,30.8,False,3837,53.0,0 +5623,53,Male,143,78,157,43,78,161,88,5.0,30.2,82,166,Asymptomatic,False,0.6,True,Never,9.1,150,6.5,32.2,False,6945,75.0,0 +5624,45,Male,135,81,157,44,80,149,130,6.4,30.0,86,196,Atypical Angina,False,1.7,True,Former,1.7,98,8.1,24.7,False,4914,61.6,0 +5625,50,Female,109,64,188,64,115,74,110,5.5,30.3,94,174,Non-Anginal Pain,False,1.2,True,Never,0.1,154,7.1,25.6,False,2786,59.9,0 +5626,44,Female,132,77,198,60,116,120,132,6.0,26.6,86,182,Non-Anginal Pain,False,1.8,False,Current,11.0,172,5.5,60.2,True,7043,69.0,0 +5627,40,Male,145,97,208,59,111,164,162,7.1,29.2,95,163,Asymptomatic,False,1.2,False,Never,16.4,68,7.9,45.0,False,4587,48.8,1 +5628,62,Male,126,84,204,49,109,184,123,5.5,26.1,79,149,Asymptomatic,False,0.6,False,Former,2.0,174,6.2,39.1,True,7541,54.9,0 +5629,45,Male,129,79,138,79,43,107,106,5.4,17.3,71,187,Asymptomatic,False,0.8,False,Never,2.2,212,6.3,19.6,False,6233,61.5,0 +5630,46,Male,131,84,196,46,118,158,93,4.7,26.6,66,184,Atypical Angina,True,0.4,False,Never,12.3,73,7.9,31.8,False,8094,42.9,0 +5631,66,Female,120,72,181,47,97,179,97,5.9,22.9,86,120,Atypical Angina,False,0.9,False,Former,2.2,72,7.6,45.4,False,5354,63.3,1 +5632,37,Male,131,80,168,58,86,138,93,5.7,22.1,68,206,Atypical Angina,False,1.2,False,Never,5.1,7,3.7,48.1,False,6706,49.6,0 +5633,43,Female,122,75,187,59,120,117,112,5.9,24.2,77,186,Non-Anginal Pain,False,0.4,True,Former,1.7,122,7.5,56.4,False,7324,67.8,0 +5634,47,Male,120,84,215,71,104,187,152,6.9,25.4,94,187,Asymptomatic,True,0.1,False,Never,2.1,126,7.2,36.0,True,8145,63.3,0 +5635,74,Female,138,92,198,56,92,237,124,5.7,23.7,78,154,Atypical Angina,False,1.2,False,Never,4.9,3,6.5,37.5,False,4215,68.2,0 +5636,52,Female,116,75,163,37,107,130,111,5.2,28.0,88,176,Asymptomatic,False,2.4,False,Current,0.6,172,7.5,34.9,True,8241,44.6,0 +5637,56,Female,119,67,180,59,91,229,88,4.8,22.5,77,159,Non-Anginal Pain,False,1.2,False,Never,2.9,142,8.7,35.2,True,7237,51.7,0 +5638,55,Male,126,87,138,46,57,151,116,5.4,23.2,91,163,Atypical Angina,False,0.9,False,Never,6.0,148,7.2,73.6,False,1368,41.6,0 +5639,38,Male,122,80,194,60,114,122,112,5.0,25.4,76,190,Asymptomatic,False,1.0,False,Never,2.0,150,7.0,5.3,False,8181,82.5,0 +5640,59,Female,145,95,209,42,113,217,118,5.8,32.7,73,163,Asymptomatic,False,0.7,False,Current,0.5,228,8.0,31.0,True,9830,58.3,0 +5641,65,Male,136,86,218,58,137,173,137,6.6,27.4,77,160,Asymptomatic,False,1.3,False,Never,9.4,226,6.7,43.5,True,8723,89.5,0 +5642,76,Male,135,76,214,47,132,112,161,7.0,28.8,85,128,Asymptomatic,True,2.3,False,Never,4.7,79,6.4,60.5,False,1311,52.9,1 +5643,51,Female,127,79,150,63,63,99,133,6.4,26.0,74,168,Non-Anginal Pain,False,2.1,False,Never,2.6,54,5.3,53.2,False,2619,54.8,0 +5644,62,Male,131,86,195,51,105,167,114,5.4,25.5,77,148,Non-Anginal Pain,False,0.1,False,Never,3.6,111,6.1,70.5,False,6299,61.6,0 +5645,66,Female,144,103,196,45,120,179,140,6.1,32.5,89,140,Typical Angina,False,2.3,False,Never,15.2,160,5.8,45.8,True,7983,70.9,1 +5646,55,Male,102,57,185,51,100,177,145,6.1,21.8,73,180,Non-Anginal Pain,False,3.8,False,Former,11.2,196,5.6,55.6,True,7589,63.5,0 +5647,81,Male,146,84,233,53,149,193,176,7.0,27.1,78,123,Asymptomatic,True,3.5,True,Former,7.2,78,6.0,44.2,True,7443,73.6,1 +5648,80,Male,140,91,228,61,129,204,120,6.0,25.5,84,137,Non-Anginal Pain,False,3.8,False,Never,4.5,191,5.8,30.0,True,4367,71.6,1 +5649,73,Male,135,86,205,38,125,212,146,6.6,27.8,68,122,Non-Anginal Pain,False,0.9,False,Current,4.1,80,6.5,20.5,False,2656,36.2,1 +5650,38,Male,116,71,289,63,165,209,149,6.1,28.6,76,170,Typical Angina,True,0.4,False,Never,10.5,134,8.7,58.8,False,5503,37.9,1 +5651,51,Female,149,87,250,82,146,127,83,4.9,27.6,76,189,Asymptomatic,False,0.9,False,Never,4.7,209,6.9,49.3,False,7973,67.8,0 +5652,64,Male,155,87,175,43,90,139,153,6.8,36.6,87,155,Asymptomatic,False,0.6,False,Current,4.6,70,6.3,42.8,False,4590,37.8,0 +5653,55,Female,125,77,222,57,133,168,86,4.4,21.2,91,151,Atypical Angina,False,0.3,False,Never,1.0,97,6.0,52.6,True,6510,46.1,0 +5654,32,Female,108,74,205,84,79,241,155,6.8,26.3,81,196,Asymptomatic,False,0.4,False,Never,7.5,282,6.5,37.6,True,10279,93.1,0 +5655,57,Female,129,80,221,51,128,264,141,6.7,31.5,71,173,Asymptomatic,True,0.4,True,Never,12.6,186,7.2,43.2,False,6304,48.2,1 +5656,81,Female,141,84,135,33,89,102,122,6.0,24.5,86,127,Typical Angina,False,2.2,True,Former,6.6,18,7.2,67.2,False,1036,69.0,1 +5657,76,Female,135,84,243,69,156,93,151,6.5,29.2,99,124,Atypical Angina,True,1.0,False,Never,1.6,0,6.5,79.0,False,2605,20.8,1 +5658,66,Female,145,78,232,55,124,210,160,6.9,24.5,84,166,Asymptomatic,False,0.5,True,Never,7.7,189,6.7,58.2,False,5926,53.9,0 +5659,56,Male,140,90,193,37,99,259,146,6.7,27.2,73,144,Asymptomatic,False,1.1,False,Former,7.8,120,6.3,51.0,True,8586,59.5,1 +5660,55,Female,136,92,228,74,122,160,100,5.6,23.8,89,167,Non-Anginal Pain,False,1.3,False,Never,1.1,156,7.4,61.1,False,4989,77.6,0 +5661,58,Male,125,90,167,67,73,136,80,4.8,15.0,76,168,Asymptomatic,True,0.4,True,Never,18.2,260,9.3,30.0,False,5426,92.3,0 +5662,48,Male,116,52,239,79,139,167,167,7.2,27.3,89,187,Asymptomatic,False,3.1,False,Former,5.7,94,8.2,38.4,True,6522,72.3,0 +5663,48,Male,126,92,221,53,135,232,133,5.6,21.9,87,179,Non-Anginal Pain,False,0.4,True,Current,19.2,190,7.0,53.9,False,3571,37.2,0 +5664,57,Female,132,74,178,62,86,110,134,6.3,27.4,76,156,Asymptomatic,False,0.9,False,Former,3.9,144,8.7,68.6,True,8721,73.2,0 +5665,81,Female,151,82,249,53,157,151,112,6.0,24.8,86,131,Asymptomatic,True,0.3,False,Former,3.5,64,7.5,60.0,False,2596,54.7,1 +5666,62,Female,130,88,130,29,80,123,100,4.9,27.0,63,162,Non-Anginal Pain,False,1.3,False,Never,1.3,184,8.9,36.9,True,8136,41.4,1 +5667,58,Male,135,87,169,47,101,145,149,6.7,23.1,76,153,Asymptomatic,False,0.3,True,Current,1.7,183,7.9,63.4,False,4576,57.1,1 +5668,69,Male,133,94,186,37,131,126,101,5.4,25.0,94,146,Asymptomatic,True,0.9,False,Former,3.6,86,8.3,27.8,False,3961,76.9,1 +5669,76,Male,130,87,156,53,71,145,167,7.0,27.5,66,136,Asymptomatic,True,4.7,False,Never,10.8,67,6.7,40.4,False,4746,38.6,1 +5670,70,Male,135,93,240,60,126,295,92,5.5,27.5,83,134,Typical Angina,True,1.9,False,Former,18.4,60,6.2,46.7,False,6515,48.8,1 +5671,41,Male,127,81,209,52,118,171,139,6.4,26.9,78,175,Asymptomatic,True,1.8,True,Former,2.9,177,7.0,34.8,True,9027,54.5,1 +5672,77,Male,121,92,150,35,102,84,119,6.1,23.5,86,114,Atypical Angina,True,0.0,False,Former,2.5,110,6.8,60.4,False,500,58.8,1 +5673,66,Male,126,75,211,43,123,252,154,6.3,28.8,99,141,Asymptomatic,False,0.1,False,Never,4.3,23,7.1,44.5,False,2722,47.4,0 +5674,38,Male,120,71,193,60,99,133,144,6.4,22.0,85,201,Atypical Angina,False,1.0,True,Current,4.9,144,7.4,39.8,True,7712,35.7,0 +5675,50,Female,122,73,185,77,84,132,89,5.3,28.5,78,177,Asymptomatic,False,1.9,False,Never,1.2,202,6.9,43.6,True,5085,67.1,0 +5676,26,Male,111,64,162,21,111,147,106,5.6,28.3,70,192,Typical Angina,False,1.2,False,Former,5.8,207,7.1,35.8,True,8708,72.5,0 +5677,44,Female,104,57,201,51,106,131,100,5.0,17.1,75,178,Non-Anginal Pain,True,0.4,False,Former,3.5,150,8.9,53.9,False,4748,40.1,0 +5678,54,Female,106,73,188,46,104,234,106,5.4,19.0,82,169,Non-Anginal Pain,False,2.9,False,Never,0.5,148,7.6,65.8,True,6000,53.0,0 +5679,58,Male,128,82,148,42,99,107,111,5.5,33.0,94,150,Asymptomatic,False,1.1,False,Never,4.4,195,7.5,48.0,False,8450,66.1,0 +5680,50,Male,135,95,212,68,99,182,147,6.4,29.6,87,185,Non-Anginal Pain,False,1.6,False,Current,14.2,230,7.1,56.6,True,7468,61.3,0 +5681,57,Female,134,92,208,82,93,172,149,6.6,26.4,85,153,Asymptomatic,True,2.4,False,Former,10.3,87,7.4,77.7,False,4612,48.2,1 +5682,48,Female,122,90,235,51,137,210,110,6.0,23.5,86,188,Asymptomatic,True,0.5,True,Never,6.7,150,6.4,41.4,False,6071,52.0,0 +5683,60,Female,131,88,159,51,94,115,128,6.2,21.5,72,161,Asymptomatic,False,2.1,False,Former,1.6,35,4.9,59.0,False,4996,61.5,0 +5684,54,Female,121,52,175,65,65,190,97,4.7,22.7,75,161,Asymptomatic,False,0.3,True,Never,1.5,218,6.1,51.5,True,8754,85.2,0 +5685,62,Male,137,84,126,41,81,43,132,6.2,21.2,79,150,Atypical Angina,False,0.8,True,Never,6.2,60,8.3,21.2,True,5209,81.2,0 +5686,67,Female,142,80,193,55,84,224,131,6.1,29.3,86,160,Asymptomatic,False,0.3,False,Never,8.4,193,8.0,45.6,True,5910,65.6,0 +5687,64,Male,133,73,161,32,110,142,106,5.7,25.9,85,155,Asymptomatic,True,2.1,False,Current,1.9,107,8.9,52.0,True,4848,59.8,1 +5688,51,Female,129,69,188,35,114,189,125,5.8,23.1,95,147,Asymptomatic,False,2.6,False,Current,4.3,72,7.3,66.6,False,5259,50.4,1 +5689,32,Male,125,88,246,63,145,176,167,6.7,26.5,79,189,Asymptomatic,False,0.4,False,Former,6.8,168,6.6,59.5,True,10230,74.2,0 +5690,61,Male,134,81,169,53,79,98,118,5.8,27.5,81,135,Non-Anginal Pain,False,0.9,False,Former,3.3,0,5.8,61.5,False,4821,46.3,1 +5691,36,Male,105,76,164,69,59,117,86,4.7,18.8,82,202,Atypical Angina,False,0.4,False,Never,17.6,161,7.3,48.8,False,6665,60.8,0 +5692,65,Female,128,75,217,61,139,35,171,7.7,23.4,82,159,Typical Angina,True,0.5,True,Never,2.4,188,7.2,59.8,True,7801,88.2,0 +5693,70,Male,140,90,208,43,135,135,140,6.2,21.6,87,139,Non-Anginal Pain,True,2.4,False,Never,2.5,101,5.3,75.5,False,3587,50.0,1 +5694,67,Male,136,85,169,39,119,92,93,5.1,23.3,81,176,Asymptomatic,True,0.5,False,Never,2.3,291,5.5,38.0,True,9214,73.0,0 +5695,70,Female,147,97,212,57,130,156,131,6.2,25.6,84,169,Non-Anginal Pain,True,1.5,False,Current,5.2,193,6.9,65.9,True,5487,46.8,1 +5696,69,Female,120,83,172,55,100,127,128,5.8,23.8,91,168,Atypical Angina,False,0.6,True,Never,0.9,91,7.6,70.7,False,5465,78.3,0 +5697,43,Male,124,89,212,69,99,153,145,6.4,17.6,83,159,Typical Angina,True,0.3,True,Current,5.2,276,6.5,32.2,True,10914,69.6,0 +5698,38,Female,109,58,110,61,35,91,86,4.3,21.8,75,186,Non-Anginal Pain,True,0.6,False,Former,5.0,143,7.1,76.2,False,4832,79.0,0 +5699,26,Male,127,93,191,31,130,120,115,5.6,24.4,90,210,Asymptomatic,False,0.1,True,Never,3.8,130,6.3,53.1,True,5821,74.8,0 +5700,56,Male,120,69,192,67,93,178,151,6.8,23.4,87,153,Non-Anginal Pain,False,0.3,False,Never,16.4,56,5.6,64.7,False,5022,59.8,0 +5701,60,Female,115,73,199,46,139,93,119,5.8,24.8,93,139,Non-Anginal Pain,False,0.6,False,Former,0.1,263,7.9,54.4,True,6065,50.2,1 +5702,59,Male,128,93,198,32,123,153,133,6.2,33.7,92,147,Asymptomatic,True,4.6,False,Current,12.2,15,6.7,46.9,False,3715,82.1,1 +5703,53,Female,125,85,195,67,94,160,92,5.0,26.9,86,177,Asymptomatic,False,0.7,True,Never,14.2,103,6.9,70.2,True,4126,67.0,0 +5704,67,Female,132,74,159,50,90,96,100,5.7,19.5,93,155,Asymptomatic,False,1.2,False,Current,6.0,91,4.6,40.9,False,8422,40.9,0 +5705,58,Male,137,82,220,44,143,198,111,5.9,25.1,89,160,Asymptomatic,False,0.1,False,Current,5.3,151,6.1,73.4,False,5308,55.0,1 +5706,33,Female,132,76,240,57,139,175,117,5.7,26.5,88,187,Non-Anginal Pain,False,0.5,True,Current,1.9,175,7.5,54.9,True,8270,54.7,0 +5707,36,Female,122,83,165,79,71,35,79,4.3,20.7,76,183,Non-Anginal Pain,False,0.2,True,Never,1.2,247,5.0,34.2,True,6141,77.4,0 +5708,70,Male,122,67,228,73,127,119,147,6.8,21.1,76,156,Atypical Angina,False,0.6,True,Current,10.7,259,8.2,28.9,True,8112,68.7,0 +5709,61,Female,142,91,152,34,114,115,101,5.5,27.6,83,162,Asymptomatic,True,0.9,False,Current,2.0,49,9.2,45.9,False,2723,52.1,1 +5710,35,Male,120,76,175,53,86,156,85,4.9,22.5,72,185,Asymptomatic,False,0.5,False,Former,4.5,144,5.9,57.4,False,6672,49.7,0 +5711,71,Male,148,97,193,52,109,147,121,6.4,29.0,75,159,Atypical Angina,False,0.2,True,Former,2.4,180,8.6,51.1,True,10731,72.9,0 +5712,49,Male,126,75,194,71,84,192,119,5.7,19.2,87,174,Typical Angina,False,0.3,False,Former,7.3,227,7.4,53.7,True,8961,45.2,0 +5713,70,Female,137,83,199,62,93,231,124,5.9,38.7,87,132,Asymptomatic,True,0.4,False,Former,9.3,68,6.7,61.1,False,6079,52.1,1 +5714,48,Female,130,81,148,60,85,95,71,4.5,24.1,88,170,Asymptomatic,False,0.5,True,Former,0.9,184,7.2,70.6,True,8488,53.3,0 +5715,69,Male,139,89,117,40,44,166,78,4.4,21.8,82,168,Typical Angina,False,0.6,True,Former,3.7,166,6.3,39.7,False,6036,45.5,0 +5716,64,Male,144,91,152,47,94,109,89,5.5,20.6,72,156,Non-Anginal Pain,False,0.7,False,Never,4.6,148,6.1,33.1,False,5927,56.0,0 +5717,48,Male,118,73,192,59,127,64,153,5.9,26.0,78,179,Non-Anginal Pain,False,1.2,False,Never,1.7,182,6.6,41.5,False,6534,49.0,0 +5718,48,Male,134,84,182,63,100,141,95,5.3,21.3,72,175,Asymptomatic,False,0.0,False,Former,3.8,65,6.5,44.1,True,7159,68.8,0 +5719,72,Male,124,85,158,32,113,74,119,5.5,24.2,91,106,Atypical Angina,True,4.3,False,Current,7.7,27,7.3,55.4,False,2357,42.8,1 +5720,59,Male,145,91,186,48,115,83,127,6.0,29.8,77,146,Asymptomatic,False,0.4,False,Current,9.9,133,8.9,62.2,False,7926,36.7,0 +5721,40,Male,110,70,209,69,113,159,119,5.4,18.2,81,185,Asymptomatic,False,1.1,False,Former,6.3,200,4.9,40.4,True,6265,65.8,0 +5722,41,Female,120,80,197,34,108,252,89,5.3,33.9,91,194,Asymptomatic,False,1.3,True,Current,1.0,175,8.0,7.8,True,7103,38.2,0 +5723,48,Male,122,82,182,53,84,209,121,5.8,32.5,77,184,Asymptomatic,False,0.9,True,Never,1.7,155,7.9,34.8,False,3430,77.0,0 +5724,52,Female,107,65,181,48,109,173,124,5.5,26.3,65,152,Atypical Angina,False,0.6,True,Former,5.8,121,7.9,30.3,False,5145,66.3,0 +5725,38,Male,121,73,145,53,87,44,112,5.8,21.0,71,190,Atypical Angina,False,0.5,False,Never,7.0,117,7.9,56.0,False,2079,53.0,0 +5726,76,Male,153,109,219,50,125,218,116,6.6,26.7,95,120,Asymptomatic,True,0.1,False,Current,3.1,61,6.2,51.5,False,4181,58.9,1 +5727,42,Male,143,93,206,56,122,189,94,5.3,30.0,77,169,Non-Anginal Pain,False,0.2,False,Current,8.9,200,7.8,54.9,False,4589,46.8,0 +5728,40,Female,142,97,160,43,99,157,139,6.1,27.1,74,174,Non-Anginal Pain,False,0.3,True,Never,16.9,70,6.8,52.0,False,4855,68.4,0 +5729,30,Male,98,67,202,66,91,218,118,6.1,25.4,80,209,Typical Angina,False,1.6,False,Never,8.9,223,4.4,53.1,False,7067,81.4,0 +5730,52,Male,123,77,203,73,104,103,112,5.9,26.5,69,192,Non-Anginal Pain,False,2.6,False,Never,7.7,239,5.4,76.2,True,7879,60.2,0 +5731,50,Male,125,66,177,51,92,128,115,6.1,31.2,84,170,Non-Anginal Pain,False,0.6,False,Never,1.9,138,7.7,32.9,True,3522,76.2,0 +5732,64,Female,145,95,223,70,110,196,113,5.5,21.3,84,177,Asymptomatic,False,0.3,False,Never,10.0,144,5.3,62.0,False,2805,46.2,0 +5733,48,Male,127,87,219,55,124,161,110,5.1,20.0,89,175,Asymptomatic,False,0.5,False,Current,19.0,203,7.0,64.5,True,9252,50.4,1 +5734,53,Female,125,82,232,60,152,84,99,6.1,22.8,74,161,Asymptomatic,False,1.4,False,Never,5.5,141,8.7,49.1,False,6787,72.6,0 +5735,52,Male,131,80,143,38,88,107,148,6.7,25.5,75,168,Non-Anginal Pain,False,1.3,False,Never,4.0,0,8.2,48.8,False,4914,40.0,1 +5736,54,Male,129,77,201,44,140,110,71,4.6,17.4,91,189,Non-Anginal Pain,False,0.9,False,Never,1.7,169,8.1,69.7,True,5482,68.5,0 +5737,49,Male,147,85,216,57,136,140,127,6.6,23.6,75,174,Asymptomatic,False,0.4,False,Current,3.6,155,7.2,19.7,False,6118,61.8,1 +5738,45,Male,119,78,141,36,84,140,155,6.7,36.7,91,143,Atypical Angina,False,1.6,False,Never,3.8,10,5.8,72.3,False,4614,75.6,1 +5739,56,Male,137,87,231,44,154,196,132,5.5,33.7,86,137,Atypical Angina,False,0.6,False,Current,4.2,141,6.1,72.9,True,6634,49.8,1 +5740,68,Female,148,90,139,63,65,100,113,5.5,25.6,82,143,Atypical Angina,False,0.1,False,Never,1.7,173,8.8,65.3,False,7242,69.2,1 +5741,87,Female,165,106,200,46,126,162,153,6.4,27.3,70,135,Asymptomatic,False,0.9,False,Former,0.2,198,7.4,45.5,True,5174,47.3,1 +5742,40,Male,118,80,162,42,74,261,102,5.1,23.6,85,195,Asymptomatic,False,1.7,False,Former,9.8,126,7.8,37.3,True,6527,71.1,0 +5743,42,Male,111,75,176,43,79,149,102,5.4,19.4,70,184,Asymptomatic,True,0.4,True,Former,6.1,239,6.5,27.7,True,9383,64.7,0 +5744,52,Female,130,93,185,61,89,123,114,5.3,29.5,82,174,Non-Anginal Pain,True,0.2,False,Never,3.0,137,5.8,52.3,True,5552,43.6,0 +5745,65,Female,134,90,182,58,107,135,93,5.6,26.7,76,147,Typical Angina,True,0.7,False,Never,10.9,190,8.7,63.6,False,7991,57.8,1 +5746,57,Male,121,72,219,70,142,35,126,5.7,21.1,92,166,Atypical Angina,False,1.7,False,Never,4.2,135,6.5,95.3,False,5351,66.3,0 +5747,46,Female,125,74,181,58,88,135,140,6.9,26.9,87,196,Asymptomatic,False,1.2,True,Never,9.3,117,7.4,41.0,True,8881,54.2,0 +5748,65,Male,101,70,135,73,46,144,101,5.3,16.8,74,174,Asymptomatic,False,0.2,False,Never,4.4,305,6.7,61.7,True,7599,54.0,0 +5749,37,Female,94,63,149,56,86,35,122,5.9,16.7,69,189,Atypical Angina,False,1.9,False,Current,0.5,300,8.4,68.6,True,7886,72.7,0 +5750,49,Male,122,81,208,65,132,62,79,4.4,28.8,82,182,Asymptomatic,False,0.5,False,Never,1.6,251,7.1,38.0,True,8893,84.5,0 +5751,43,Female,98,56,181,49,64,302,150,6.4,22.8,74,182,Asymptomatic,False,0.1,True,Never,0.4,245,6.7,52.9,True,12491,47.9,0 +5752,41,Female,110,81,136,66,49,136,105,5.7,17.8,75,183,Asymptomatic,False,0.4,True,Former,4.8,104,7.3,41.8,False,7595,89.4,0 +5753,37,Female,116,69,169,47,87,213,152,6.5,31.7,87,175,Asymptomatic,False,0.6,False,Current,18.9,245,5.1,33.9,False,3843,65.6,0 +5754,45,Male,124,70,179,51,103,140,163,6.5,26.5,68,180,Typical Angina,True,0.5,False,Never,6.3,169,7.1,32.7,True,6217,66.4,0 +5755,45,Male,121,66,158,32,83,124,125,5.9,24.7,79,161,Asymptomatic,False,0.2,True,Never,2.4,137,5.7,55.1,False,4627,38.1,1 +5756,34,Female,115,74,224,49,137,171,127,5.7,24.8,91,203,Asymptomatic,False,1.0,False,Never,1.0,19,6.1,48.7,False,2707,52.7,0 +5757,34,Male,124,88,211,62,112,178,116,5.7,20.0,88,174,Asymptomatic,False,0.3,False,Never,2.0,73,6.9,56.6,False,1572,45.7,0 +5758,44,Female,145,102,205,68,118,97,127,6.0,29.7,69,167,Asymptomatic,True,0.3,False,Former,1.1,132,6.7,39.1,True,7945,55.3,1 +5759,60,Male,126,70,182,48,77,255,115,5.3,23.0,73,143,Asymptomatic,False,1.1,False,Former,6.9,224,7.6,36.2,False,8486,55.4,0 +5760,38,Female,118,76,186,67,83,131,107,5.5,26.2,75,182,Asymptomatic,False,1.7,False,Never,2.3,186,8.1,47.7,False,5176,65.2,0 +5761,59,Male,137,91,150,45,84,145,117,5.2,23.4,93,168,Asymptomatic,False,0.7,True,Current,8.6,45,7.0,63.9,False,6367,69.2,0 +5762,54,Female,114,61,207,67,134,98,96,4.9,22.6,81,162,Asymptomatic,False,0.2,False,Former,2.7,158,6.7,50.9,False,5794,56.7,0 +5763,60,Female,119,74,231,73,134,163,136,6.5,22.0,91,162,Non-Anginal Pain,False,0.6,True,Never,11.5,133,7.0,43.7,False,6260,66.4,0 +5764,32,Male,136,86,147,52,65,177,93,5.4,25.9,91,207,Non-Anginal Pain,False,1.4,False,Former,23.2,101,5.9,42.2,True,8493,50.3,0 +5765,42,Female,111,72,189,67,90,143,92,5.0,29.0,78,173,Typical Angina,False,0.8,False,Never,2.9,290,6.3,50.5,False,5703,78.5,0 +5766,62,Female,132,80,155,50,89,137,114,5.1,26.4,82,141,Non-Anginal Pain,False,1.6,True,Never,0.9,122,8.0,81.0,False,7162,57.3,0 +5767,79,Male,129,82,203,55,111,204,128,6.2,28.3,83,150,Asymptomatic,False,3.0,False,Never,3.6,105,6.7,92.6,False,4686,58.6,0 +5768,45,Male,123,86,194,46,120,149,116,6.2,25.8,93,152,Asymptomatic,True,1.9,True,Former,5.7,160,6.0,51.6,False,4873,49.9,1 +5769,31,Female,122,83,224,80,92,187,132,6.0,22.9,76,170,Asymptomatic,False,0.9,True,Never,3.4,187,7.5,41.4,True,8145,53.2,0 +5770,58,Female,119,77,174,45,101,119,100,5.3,17.7,75,176,Asymptomatic,False,0.2,False,Never,0.1,167,8.9,66.6,True,11208,36.5,0 +5771,72,Male,128,73,197,50,99,185,115,5.6,23.6,97,168,Non-Anginal Pain,False,1.0,False,Never,1.8,163,8.5,44.7,True,5584,83.7,0 +5772,56,Male,115,73,122,36,81,35,102,5.2,23.6,78,155,Atypical Angina,False,0.1,True,Former,3.0,180,7.7,10.1,True,3587,57.7,0 +5773,45,Female,125,70,195,57,124,58,144,6.5,28.3,70,195,Asymptomatic,False,1.1,True,Former,4.3,283,7.1,38.6,True,8015,69.5,0 +5774,45,Female,151,93,168,37,94,195,131,5.5,30.0,84,168,Non-Anginal Pain,False,0.5,False,Former,2.6,128,6.6,59.4,True,6112,73.2,0 +5775,67,Female,122,72,199,61,120,171,107,6.0,28.4,83,147,Typical Angina,False,0.0,False,Never,3.5,62,6.4,45.2,True,4738,37.4,0 +5776,86,Female,150,81,221,54,109,265,125,5.9,27.4,82,112,Asymptomatic,False,3.2,True,Never,33.8,121,6.6,66.9,True,2984,37.2,1 +5777,72,Male,152,100,177,50,99,156,81,5.1,29.0,80,125,Atypical Angina,True,1.3,False,Never,9.8,0,9.6,51.5,False,4657,56.6,1 +5778,62,Female,136,101,179,66,83,145,87,5.2,20.1,78,139,Non-Anginal Pain,True,0.9,False,Never,22.4,132,4.5,47.4,True,7052,55.9,0 +5779,60,Female,108,78,150,69,35,249,87,5.1,18.2,92,163,Non-Anginal Pain,False,0.3,False,Never,4.6,159,6.9,59.2,False,6632,80.6,0 +5780,53,Male,123,81,195,36,139,78,139,6.7,29.8,83,155,Non-Anginal Pain,True,0.9,True,Current,3.3,109,8.1,26.8,False,5837,47.3,1 +5781,56,Male,135,103,209,40,121,271,133,6.4,31.0,92,159,Non-Anginal Pain,True,1.3,False,Never,5.3,0,8.4,39.6,False,7021,29.1,1 +5782,52,Female,148,98,197,63,109,104,128,6.1,24.6,74,167,Non-Anginal Pain,True,0.9,True,Never,3.2,115,6.7,70.9,True,3936,66.0,0 +5783,30,Female,110,79,192,79,99,100,83,4.6,22.5,78,177,Asymptomatic,False,0.9,True,Never,4.9,226,5.3,32.4,False,4534,78.8,0 +5784,23,Male,127,82,229,71,120,216,106,5.1,29.1,90,175,Non-Anginal Pain,False,0.0,True,Never,11.8,168,8.8,61.7,False,6637,25.1,0 +5785,60,Female,138,90,199,48,94,222,102,5.2,27.3,82,158,Asymptomatic,True,0.6,False,Current,2.8,86,8.7,38.9,True,7394,62.5,0 +5786,52,Female,145,89,180,68,83,165,133,6.5,21.9,82,160,Asymptomatic,True,0.7,True,Never,17.0,178,4.5,44.2,False,5032,64.1,1 +5787,45,Male,129,73,155,36,102,93,113,5.7,29.3,77,164,Typical Angina,False,0.3,True,Never,3.0,116,7.4,14.9,True,3671,64.4,1 +5788,56,Female,129,84,169,78,48,240,148,6.8,27.0,85,160,Asymptomatic,False,0.2,True,Never,13.8,134,6.8,63.5,False,5879,54.0,0 +5789,56,Male,122,74,202,53,123,183,184,6.7,18.3,71,149,Non-Anginal Pain,False,3.3,False,Former,7.7,233,7.5,38.8,True,8825,57.8,1 +5790,40,Female,129,92,181,50,118,38,133,5.7,22.5,61,196,Asymptomatic,False,0.8,False,Current,2.7,217,8.1,36.6,False,5509,54.8,0 +5791,38,Female,113,83,182,60,84,141,107,6.0,28.9,74,190,Typical Angina,False,0.6,False,Current,11.5,205,6.5,28.1,True,8274,46.3,0 +5792,63,Female,143,93,181,60,94,133,131,6.1,29.4,70,168,Asymptomatic,False,0.3,False,Former,2.7,173,6.4,34.3,False,4649,84.1,0 +5793,41,Female,137,88,172,55,85,171,135,5.7,25.8,90,167,Asymptomatic,False,0.8,False,Never,5.4,86,8.7,38.1,False,2805,70.1,0 +5794,55,Female,126,75,232,66,143,100,115,5.5,28.5,77,163,Asymptomatic,False,0.6,False,Former,1.4,102,8.2,64.0,False,4136,62.0,0 +5795,54,Male,143,88,189,62,95,128,88,4.7,29.1,88,154,Atypical Angina,False,1.8,False,Former,9.3,114,9.5,49.7,False,984,46.9,1 +5796,49,Male,122,78,228,45,159,190,115,5.8,32.3,93,155,Asymptomatic,False,0.7,True,Current,3.7,194,5.3,49.4,False,8904,48.2,1 +5797,50,Female,134,89,168,60,86,118,110,5.2,20.2,79,162,Asymptomatic,False,0.3,False,Current,2.3,72,6.2,77.0,False,5635,55.1,0 +5798,53,Female,131,72,195,30,137,123,130,5.7,35.5,97,180,Atypical Angina,False,0.3,False,Current,1.1,134,6.8,39.8,False,5292,24.1,0 +5799,52,Male,130,75,209,62,111,131,132,5.8,19.3,81,164,Non-Anginal Pain,False,1.4,True,Never,2.1,105,6.4,61.0,True,8633,80.8,1 +5800,38,Female,105,73,216,70,117,211,107,5.3,23.4,84,174,Asymptomatic,False,1.4,True,Never,1.4,54,8.0,61.3,False,5387,37.9,0 +5801,51,Female,137,84,229,64,131,191,95,5.5,31.1,84,179,Atypical Angina,True,0.5,False,Former,2.0,117,8.0,50.0,False,5826,52.8,0 +5802,62,Male,154,98,137,38,78,101,110,4.9,29.3,90,151,Asymptomatic,False,0.3,False,Former,3.3,0,8.0,49.0,False,4133,28.9,0 +5803,74,Female,135,84,197,78,72,202,112,5.3,31.8,98,140,Typical Angina,True,0.1,True,Former,5.6,70,7.1,82.9,False,5043,67.7,1 +5804,72,Female,147,95,186,41,117,181,115,5.7,22.9,76,163,Asymptomatic,False,0.3,False,Never,0.9,130,5.6,38.3,False,4338,76.1,0 +5805,22,Male,124,79,147,28,89,175,82,4.6,28.4,75,182,Asymptomatic,False,1.0,False,Former,6.2,109,7.0,43.2,False,7052,54.6,0 +5806,66,Male,126,82,144,58,62,145,105,5.0,23.2,72,147,Non-Anginal Pain,True,1.9,False,Never,7.9,106,7.0,53.5,False,5324,75.5,0 +5807,54,Female,140,95,222,73,113,133,63,4.1,26.4,92,174,Asymptomatic,False,0.2,True,Former,1.9,116,7.2,34.0,False,7067,58.9,0 +5808,39,Male,110,62,129,68,35,123,122,6.3,29.7,86,193,Typical Angina,False,0.1,False,Never,3.2,294,7.3,44.6,False,6791,88.3,0 +5809,51,Female,141,104,207,46,120,197,101,5.8,32.9,86,138,Asymptomatic,True,0.7,False,Former,24.5,94,7.7,65.4,False,6210,65.8,1 +5810,70,Male,128,80,166,60,63,194,107,5.3,26.9,79,153,Asymptomatic,False,2.5,False,Never,4.3,67,4.1,50.0,False,4535,92.1,0 +5811,56,Male,115,71,160,45,89,153,88,4.9,24.5,73,171,Non-Anginal Pain,False,0.5,False,Never,2.2,212,4.5,16.9,True,7764,52.0,0 +5812,48,Female,115,79,192,59,109,180,119,6.2,28.3,75,168,Non-Anginal Pain,False,0.7,False,Former,0.3,226,8.0,65.6,True,7124,47.4,0 +5813,43,Male,114,60,189,30,108,204,132,6.4,29.9,74,178,Non-Anginal Pain,False,0.5,False,Former,4.5,1,7.9,48.9,False,3461,61.0,0 +5814,51,Male,123,77,155,56,64,130,139,5.9,22.8,74,163,Asymptomatic,False,0.5,True,Never,5.4,129,6.7,41.9,False,5072,66.5,0 +5815,50,Female,122,78,249,72,148,133,104,5.3,20.8,81,141,Asymptomatic,False,0.4,False,Never,2.9,128,6.6,57.4,False,7153,71.8,1 +5816,41,Female,147,110,205,68,110,160,85,4.6,26.6,102,172,Asymptomatic,False,1.1,False,Former,1.0,151,6.2,38.5,False,7975,72.2,0 +5817,32,Female,131,79,201,69,117,73,133,6.0,21.8,82,161,Atypical Angina,True,1.6,False,Never,4.6,81,6.1,65.3,False,2130,52.0,1 +5818,41,Female,102,61,164,56,80,85,104,5.4,23.5,77,181,Non-Anginal Pain,False,0.6,False,Never,0.5,180,9.3,44.9,True,6770,68.2,0 +5819,57,Female,116,82,197,80,96,107,128,5.9,23.9,79,171,Asymptomatic,False,0.1,False,Never,8.8,183,7.0,37.5,True,2713,67.8,0 +5820,24,Male,113,68,292,67,185,119,86,4.3,26.0,80,207,Asymptomatic,False,0.4,False,Never,14.0,230,7.8,43.5,False,7384,54.7,0 +5821,40,Male,128,86,176,43,106,77,92,5.2,22.2,92,201,Asymptomatic,False,0.1,True,Never,3.8,63,6.9,28.4,False,4212,54.4,0 +5822,85,Male,143,83,138,42,54,234,131,5.9,22.6,78,129,Asymptomatic,False,1.9,True,Former,4.5,121,7.4,23.1,False,3287,69.8,0 +5823,60,Male,154,96,198,47,105,200,142,6.6,28.6,63,146,Asymptomatic,True,0.6,False,Never,26.3,167,9.2,62.4,False,10378,52.7,1 +5824,78,Female,127,85,249,63,119,284,142,6.6,26.2,74,129,Non-Anginal Pain,False,2.2,True,Current,20.4,154,4.9,58.2,True,6655,23.3,1 +5825,67,Male,123,59,211,61,124,35,82,5.6,23.7,76,147,Atypical Angina,True,3.5,False,Former,2.3,213,7.3,12.5,True,7800,69.0,1 +5826,67,Female,113,86,141,35,101,48,156,6.9,24.3,96,130,Typical Angina,False,1.2,False,Never,4.9,0,6.8,58.8,False,500,40.6,1 +5827,63,Male,134,89,162,68,49,204,138,6.4,18.9,72,167,Asymptomatic,False,0.5,False,Former,6.0,120,7.1,53.3,False,7961,65.1,0 +5828,46,Male,140,91,225,32,167,139,114,6.0,26.3,92,174,Asymptomatic,False,0.6,True,Former,6.9,16,6.4,50.3,False,2706,24.7,1 +5829,57,Female,127,75,205,65,99,206,119,5.8,19.3,69,165,Non-Anginal Pain,False,0.4,False,Former,5.2,134,5.4,45.9,True,6401,73.9,0 +5830,74,Male,149,102,218,46,146,104,120,5.4,25.0,76,153,Atypical Angina,False,1.6,False,Never,3.9,67,6.7,27.4,False,5873,71.3,1 +5831,57,Female,142,88,191,41,123,152,119,6.0,37.4,77,176,Asymptomatic,False,0.6,False,Never,6.9,79,6.5,57.8,False,4026,7.3,0 +5832,50,Male,140,79,154,40,97,75,119,6.0,29.9,73,192,Non-Anginal Pain,False,0.2,False,Current,3.4,249,6.7,60.3,False,6672,45.5,0 +5833,53,Female,119,81,181,60,88,129,85,5.2,19.0,81,157,Asymptomatic,False,1.6,False,Former,4.9,195,6.7,37.4,False,2985,66.6,0 +5834,73,Female,134,93,185,53,124,82,110,6.1,23.9,76,135,Non-Anginal Pain,False,0.3,True,Never,0.5,127,7.7,40.6,True,5755,53.3,1 +5835,37,Male,139,91,210,66,113,235,131,6.0,26.6,77,210,Atypical Angina,False,0.4,False,Never,14.0,269,7.1,50.9,True,11876,58.2,0 +5836,79,Male,134,80,159,56,79,188,115,5.8,26.0,99,153,Asymptomatic,False,1.6,True,Never,4.4,143,7.2,26.1,True,6773,50.2,1 +5837,50,Female,128,79,216,58,134,136,82,4.5,25.9,88,179,Asymptomatic,False,0.9,False,Former,0.5,122,7.4,43.5,False,8261,47.5,0 +5838,51,Female,101,66,219,68,109,139,119,5.8,19.5,77,187,Typical Angina,False,0.3,False,Former,3.7,91,6.7,36.4,False,7283,58.5,0 +5839,47,Female,123,67,173,56,91,153,112,6.0,30.7,98,191,Asymptomatic,True,0.5,True,Current,4.5,166,7.4,78.8,False,8733,43.9,0 +5840,56,Male,115,55,191,47,118,126,94,5.3,25.7,84,175,Atypical Angina,False,1.6,True,Former,7.6,132,7.5,36.0,False,5034,38.5,0 +5841,55,Male,137,83,198,44,97,204,147,6.0,28.1,89,143,Asymptomatic,False,0.2,True,Never,2.5,88,4.7,63.3,False,3921,26.2,1 +5842,59,Male,134,83,168,54,83,196,95,5.1,21.9,90,155,Typical Angina,False,0.2,False,Never,4.8,141,7.2,16.1,True,7212,73.6,0 +5843,48,Female,139,85,180,33,96,172,147,6.2,25.5,104,170,Atypical Angina,False,1.2,False,Current,4.8,120,6.0,45.5,False,6263,46.6,0 +5844,39,Male,115,72,154,70,69,122,133,5.8,20.4,78,204,Asymptomatic,False,0.5,False,Never,3.7,174,6.9,52.4,False,1189,68.6,0 +5845,45,Female,120,76,174,50,102,140,103,5.2,25.8,73,171,Asymptomatic,False,1.2,True,Never,2.3,163,6.5,66.6,False,6632,62.9,0 +5846,40,Male,122,73,133,74,35,163,83,4.8,20.0,66,185,Asymptomatic,True,1.2,False,Former,6.2,188,6.6,27.6,True,8545,81.2,0 +5847,35,Female,131,75,141,37,89,119,131,6.1,28.7,72,192,Asymptomatic,False,1.0,False,Current,0.6,139,7.4,45.6,True,7929,81.5,0 +5848,59,Male,149,93,189,50,88,212,83,4.8,21.8,91,160,Asymptomatic,True,0.8,False,Current,2.4,205,8.0,11.5,True,5996,53.8,0 +5849,60,Female,121,73,248,66,135,215,96,4.9,18.1,71,151,Non-Anginal Pain,False,0.5,False,Never,0.3,99,6.4,49.6,True,3947,36.7,0 +5850,30,Female,123,77,206,56,115,192,134,6.8,26.1,82,193,Asymptomatic,False,1.0,False,Former,1.7,131,7.9,31.3,True,10146,47.5,0 +5851,38,Male,136,82,176,42,99,165,106,5.7,29.0,87,188,Asymptomatic,False,0.8,False,Former,4.1,67,8.5,0.0,False,3944,47.5,0 +5852,67,Female,137,85,167,37,105,150,155,6.3,33.7,90,171,Non-Anginal Pain,True,2.1,False,Current,8.0,36,6.7,48.0,False,1417,53.0,1 +5853,61,Female,123,76,151,60,67,123,116,5.3,22.7,69,153,Atypical Angina,True,0.4,True,Former,1.3,177,5.3,56.5,False,3995,63.9,1 +5854,70,Male,126,79,241,46,165,191,109,5.6,27.2,78,132,Non-Anginal Pain,True,0.5,False,Never,6.0,0,4.5,52.0,False,2304,48.4,1 +5855,42,Male,110,68,219,62,107,169,114,4.9,24.3,78,174,Typical Angina,True,0.1,False,Never,4.4,243,7.8,31.5,True,10349,55.5,0 +5856,22,Female,133,77,235,78,132,106,115,5.6,21.7,89,192,Asymptomatic,False,0.0,True,Former,7.7,100,7.2,70.7,False,3125,61.9,0 +5857,31,Female,133,74,190,40,95,223,111,5.2,30.6,81,200,Non-Anginal Pain,True,1.1,False,Never,1.2,133,6.9,41.2,True,9469,47.8,0 +5858,58,Male,130,79,201,60,109,221,123,5.6,22.6,79,174,Asymptomatic,False,0.8,False,Current,23.5,147,6.3,47.9,True,6922,40.2,0 +5859,36,Female,140,84,205,46,126,164,103,5.7,28.1,87,155,Asymptomatic,True,0.9,False,Never,3.0,0,6.8,60.2,False,5934,55.8,1 +5860,73,Male,118,86,231,58,144,137,148,6.4,20.3,73,162,Non-Anginal Pain,False,1.4,True,Former,4.9,217,6.6,45.0,True,7293,51.5,0 +5861,53,Female,131,85,186,56,120,100,166,6.7,25.4,79,150,Asymptomatic,True,1.8,True,Never,4.2,169,6.2,49.3,False,3212,50.9,1 +5862,59,Female,141,88,211,58,95,267,113,5.5,24.0,71,163,Asymptomatic,False,1.7,True,Never,3.1,186,6.0,12.5,True,8412,42.3,0 +5863,62,Male,132,86,191,68,89,155,157,6.7,28.0,79,128,Asymptomatic,True,1.1,False,Never,2.9,35,6.4,74.4,False,3194,77.0,1 +5864,68,Female,107,62,189,71,90,165,94,5.2,17.9,80,157,Asymptomatic,False,0.6,True,Former,8.1,201,6.5,52.3,True,8341,64.5,0 +5865,55,Male,132,97,195,46,126,118,164,6.3,26.0,84,176,Asymptomatic,False,0.9,False,Never,2.2,145,6.5,44.2,False,2574,55.8,0 +5866,59,Female,126,83,152,72,58,93,112,6.2,20.5,82,146,Atypical Angina,False,0.5,False,Never,4.2,130,6.4,28.9,False,6239,62.7,0 +5867,29,Male,113,72,150,19,82,243,85,5.0,26.8,74,202,Asymptomatic,False,0.6,False,Former,2.0,180,9.0,2.8,False,7913,56.3,0 +5868,39,Male,127,90,120,37,52,134,104,5.3,24.5,76,184,Asymptomatic,False,2.3,True,Never,5.8,191,6.5,48.0,False,6068,72.6,0 +5869,59,Female,121,80,199,85,109,120,125,5.9,23.8,72,154,Asymptomatic,False,0.2,True,Never,2.5,225,5.9,38.9,True,7498,58.9,0 +5870,55,Male,109,77,193,41,105,203,91,5.2,20.0,76,143,Asymptomatic,False,2.4,True,Never,19.8,204,8.3,59.6,False,6853,45.9,1 +5871,48,Female,110,80,135,64,52,119,104,5.7,24.3,99,179,Typical Angina,False,0.7,True,Never,5.2,174,6.4,64.9,False,3562,68.5,0 +5872,43,Female,136,101,195,61,102,138,78,5.0,24.7,81,155,Asymptomatic,True,6.5,True,Never,3.6,184,5.4,53.5,True,7526,54.4,1 +5873,63,Male,150,96,151,53,53,240,116,5.8,25.8,67,155,Non-Anginal Pain,False,0.6,False,Never,3.1,152,9.6,31.2,False,834,87.4,1 +5874,56,Male,135,89,203,71,97,152,113,5.7,22.0,86,165,Non-Anginal Pain,False,0.2,True,Former,3.2,120,7.2,67.1,True,5747,39.0,0 +5875,48,Female,114,74,212,68,127,163,144,6.6,22.6,90,190,Typical Angina,False,0.1,False,Never,1.9,167,5.3,49.1,False,5354,46.2,0 +5876,80,Male,142,91,136,46,57,162,102,5.9,22.6,85,153,Atypical Angina,True,0.4,False,Never,15.7,133,5.0,38.3,True,5875,54.3,1 +5877,50,Male,136,93,281,83,147,243,168,7.1,26.4,87,161,Typical Angina,False,4.2,False,Current,3.0,145,7.6,40.8,False,6447,57.8,1 +5878,44,Female,119,74,218,39,116,268,90,5.0,32.0,80,178,Asymptomatic,False,0.7,False,Current,9.9,58,7.9,33.5,False,5189,34.2,0 +5879,70,Male,122,90,226,52,119,171,137,5.9,26.2,82,193,Asymptomatic,False,0.5,False,Never,5.9,153,7.8,36.0,True,7326,73.2,0 +5880,41,Male,122,75,169,53,114,112,157,6.9,30.8,90,200,Asymptomatic,False,0.0,True,Never,1.5,104,7.9,46.7,False,2854,67.7,0 +5881,44,Female,127,80,196,74,80,205,105,5.6,26.4,76,190,Asymptomatic,False,0.6,False,Never,2.9,211,7.0,18.7,True,7519,49.6,0 +5882,58,Female,130,88,209,64,95,165,119,6.1,30.0,84,167,Asymptomatic,False,1.4,False,Former,0.1,135,6.6,59.8,False,5803,69.7,0 +5883,76,Male,137,83,203,54,116,162,131,5.6,23.1,84,109,Asymptomatic,False,0.6,False,Never,6.4,103,6.1,65.5,False,2458,49.7,1 +5884,48,Male,130,83,174,48,91,125,105,5.7,22.0,68,188,Non-Anginal Pain,False,0.8,False,Never,1.5,192,6.2,19.1,False,5946,57.5,0 +5885,26,Male,135,93,181,36,123,103,124,5.8,29.5,74,173,Typical Angina,False,0.8,False,Former,1.7,95,8.4,52.2,False,8223,52.9,1 +5886,69,Male,134,81,189,75,93,180,172,7.9,31.1,81,144,Asymptomatic,True,0.8,True,Never,10.1,144,5.3,27.6,True,5930,55.2,1 +5887,53,Female,116,64,199,59,130,74,111,5.4,26.9,70,173,Typical Angina,False,1.7,False,Never,16.2,169,4.8,25.3,False,7336,56.4,0 +5888,66,Female,139,96,235,55,136,197,144,6.6,23.5,82,122,Atypical Angina,False,0.5,False,Never,2.0,125,4.6,76.2,False,8331,61.2,1 +5889,60,Male,141,85,291,54,190,154,102,5.5,23.1,74,140,Asymptomatic,False,1.0,False,Former,3.6,133,8.7,59.3,True,9865,52.9,1 +5890,71,Female,125,72,136,60,55,82,96,5.9,15.6,82,150,Asymptomatic,False,0.7,False,Never,5.7,0,7.9,60.4,False,3235,74.3,0 +5891,55,Male,136,87,105,36,41,162,112,5.7,29.4,79,172,Atypical Angina,False,0.9,True,Former,4.4,111,6.0,43.3,True,8775,62.1,0 +5892,30,Female,98,59,230,68,152,105,97,4.7,20.0,94,210,Typical Angina,False,0.2,False,Current,1.3,262,9.0,35.2,True,9168,62.2,0 +5893,52,Female,117,82,182,63,107,99,99,5.9,23.5,76,190,Typical Angina,False,2.0,True,Former,0.8,183,7.7,25.2,True,7363,71.3,0 +5894,74,Male,118,63,175,57,90,135,133,6.3,18.8,72,151,Non-Anginal Pain,False,0.4,False,Never,2.2,164,8.2,79.2,True,5063,70.0,0 +5895,77,Female,142,84,226,62,144,148,98,5.0,19.1,68,133,Typical Angina,False,0.3,False,Never,1.2,197,7.0,49.1,True,3662,82.8,0 +5896,69,Male,118,80,172,46,89,212,111,5.4,24.9,76,147,Asymptomatic,False,2.2,False,Current,7.1,0,7.6,71.7,False,1971,37.5,1 +5897,57,Male,124,78,192,48,116,120,110,5.6,27.3,73,132,Asymptomatic,False,2.1,False,Former,4.8,106,5.9,52.6,True,5590,50.7,1 +5898,39,Male,104,60,165,52,78,178,128,5.9,21.4,73,195,Asymptomatic,False,1.0,False,Never,3.3,240,7.0,30.5,True,7678,56.6,0 +5899,74,Female,134,78,240,60,152,97,104,5.5,23.8,91,126,Atypical Angina,True,2.1,True,Never,1.2,48,8.0,64.5,False,7514,75.8,1 +5900,40,Female,111,57,220,85,94,239,127,5.5,23.6,73,195,Asymptomatic,False,0.2,False,Never,2.9,233,8.0,39.6,True,10097,50.1,0 +5901,54,Female,131,75,157,61,59,153,131,6.3,24.5,82,179,Asymptomatic,False,0.5,True,Never,3.4,126,6.5,32.0,False,4476,57.3,0 +5902,50,Female,128,90,215,72,106,165,83,4.7,18.6,78,174,Asymptomatic,False,0.2,False,Former,3.1,198,7.0,71.3,True,10726,40.6,0 +5903,60,Female,124,91,146,56,76,134,120,5.4,26.0,70,173,Non-Anginal Pain,False,1.3,False,Never,0.3,333,5.6,40.0,True,9332,87.9,0 +5904,62,Female,102,68,141,78,56,83,106,5.7,20.5,58,170,Non-Anginal Pain,False,0.1,False,Never,3.6,237,7.4,43.9,True,7341,89.2,0 +5905,90,Male,154,96,210,63,134,109,92,5.3,22.8,61,163,Non-Anginal Pain,False,1.3,False,Never,3.3,139,7.6,38.2,True,7300,41.4,0 +5906,74,Male,145,84,227,64,126,136,133,6.0,27.8,78,135,Asymptomatic,False,1.3,True,Never,5.1,180,6.7,46.2,True,8921,51.1,0 +5907,53,Male,115,64,186,47,79,258,155,6.8,21.8,95,148,Typical Angina,False,1.4,False,Never,29.3,105,5.5,81.6,False,5443,48.1,1 +5908,50,Male,115,87,182,75,92,117,117,6.0,26.4,83,179,Atypical Angina,False,0.6,False,Never,1.8,217,6.5,38.2,False,2448,65.4,0 +5909,38,Male,123,80,217,62,125,151,126,6.2,23.6,95,175,Typical Angina,True,0.7,False,Current,4.5,158,6.8,56.7,False,6910,79.2,1 +5910,64,Male,144,86,198,67,101,127,140,5.8,28.3,84,149,Asymptomatic,False,0.0,False,Former,5.4,116,8.8,58.8,True,6985,45.1,0 +5911,30,Male,116,81,174,72,71,125,167,6.7,24.5,73,190,Non-Anginal Pain,True,1.3,True,Never,10.3,135,9.1,61.6,True,7045,55.5,0 +5912,34,Female,144,89,222,60,105,256,111,5.7,29.8,84,180,Non-Anginal Pain,False,1.9,False,Never,35.4,146,6.6,63.5,False,4237,42.2,0 +5913,52,Female,140,76,195,72,82,192,142,5.8,38.2,82,130,Typical Angina,False,1.0,False,Former,14.7,126,8.3,50.2,True,6028,72.4,1 +5914,57,Female,120,72,231,75,111,176,157,6.8,21.5,82,139,Non-Anginal Pain,False,2.7,False,Former,1.9,0,6.2,73.8,False,5355,44.1,1 +5915,48,Female,130,76,183,52,102,136,113,5.6,30.5,86,175,Asymptomatic,False,0.4,True,Current,0.7,159,6.6,24.1,False,7661,31.3,0 +5916,63,Male,138,93,166,42,93,131,156,6.9,25.9,101,176,Asymptomatic,False,0.3,False,Never,9.6,153,5.6,56.5,True,7289,38.9,0 +5917,48,Female,122,63,190,62,108,70,85,4.9,16.9,90,170,Typical Angina,False,0.3,True,Never,8.6,121,9.0,77.1,False,4560,51.5,0 +5918,73,Male,125,80,199,48,99,197,133,6.1,29.0,88,145,Atypical Angina,True,2.2,False,Former,3.8,46,6.7,57.6,True,6069,56.5,1 +5919,60,Male,139,89,196,57,113,132,128,6.0,18.8,86,168,Asymptomatic,False,1.3,True,Never,5.4,132,8.7,66.0,True,5471,60.5,0 +5920,49,Male,126,86,182,47,128,47,106,5.6,23.7,86,194,Non-Anginal Pain,True,0.8,False,Never,4.6,147,7.7,65.4,False,3007,59.3,0 +5921,42,Female,118,72,219,65,121,143,120,5.8,17.1,87,187,Non-Anginal Pain,False,0.2,False,Current,3.6,64,7.9,44.3,True,8621,64.0,0 +5922,78,Male,140,78,216,41,139,187,132,6.3,30.6,85,136,Asymptomatic,False,3.8,False,Current,5.3,202,7.2,81.1,False,6002,52.6,1 +5923,48,Male,119,84,195,28,139,117,138,6.3,33.2,85,144,Asymptomatic,True,1.6,False,Never,3.6,159,6.3,43.8,True,8493,43.9,1 +5924,33,Male,106,68,158,57,75,135,94,5.9,18.2,92,210,Typical Angina,False,1.0,False,Never,6.1,213,4.6,37.5,False,5540,67.8,0 +5925,63,Female,137,87,114,26,64,107,122,5.9,26.1,74,158,Typical Angina,False,0.2,False,Former,5.2,153,8.2,53.1,False,5487,58.9,0 +5926,46,Male,119,78,183,50,93,188,78,4.9,25.8,74,182,Asymptomatic,False,0.5,False,Former,1.6,158,6.7,33.3,True,9503,57.5,0 +5927,85,Male,166,96,205,47,115,132,100,5.0,30.9,81,112,Asymptomatic,True,0.2,False,Current,4.6,32,8.5,26.7,False,5922,61.8,1 +5928,47,Male,121,84,180,46,97,216,125,6.4,28.9,81,165,Asymptomatic,False,0.6,False,Current,6.7,116,7.4,34.6,False,6586,64.6,0 +5929,36,Female,122,80,199,59,109,172,65,4.3,25.2,87,205,Asymptomatic,False,0.5,False,Never,17.6,197,7.9,72.4,True,8040,60.6,0 +5930,33,Male,119,85,190,49,116,114,108,4.8,24.5,72,161,Atypical Angina,True,0.4,True,Former,6.3,214,7.2,25.4,True,7336,37.6,1 +5931,28,Male,99,68,181,63,91,130,134,6.3,23.6,78,170,Non-Anginal Pain,False,0.4,False,Former,5.3,154,7.2,43.0,True,5869,54.6,0 +5932,64,Male,128,85,161,43,86,118,98,5.6,20.7,75,138,Asymptomatic,False,0.2,False,Current,3.8,147,7.1,59.3,False,6747,58.7,0 +5933,79,Female,145,96,199,40,113,242,162,6.5,35.7,92,131,Asymptomatic,False,1.2,False,Current,0.7,94,5.4,48.9,False,6552,64.2,1 +5934,57,Male,156,87,234,38,145,246,98,5.0,31.8,85,136,Asymptomatic,True,0.6,False,Current,3.2,163,4.4,47.6,False,7683,61.5,1 +5935,50,Female,131,96,205,62,132,92,175,6.4,26.8,79,167,Atypical Angina,True,0.5,True,Never,1.7,120,6.1,79.4,True,9013,53.1,0 +5936,40,Male,85,58,158,64,66,103,125,6.0,18.7,74,177,Typical Angina,False,0.4,False,Never,3.1,209,6.7,50.6,True,6272,37.6,0 +5937,64,Male,103,69,164,54,80,102,83,5.1,23.2,89,158,Asymptomatic,False,2.6,False,Never,1.7,56,5.2,61.6,False,2964,73.1,0 +5938,37,Female,122,75,226,74,123,122,98,5.6,27.3,88,191,Non-Anginal Pain,False,0.2,False,Never,2.6,215,7.0,56.1,True,8152,59.8,0 +5939,46,Female,140,87,186,40,121,211,118,5.7,30.0,85,177,Asymptomatic,False,0.5,True,Current,0.3,62,7.3,65.5,True,7015,40.1,0 +5940,50,Male,142,92,192,72,89,131,87,5.3,27.7,82,169,Asymptomatic,False,1.7,False,Former,3.9,143,6.9,56.3,True,6719,59.6,0 +5941,69,Female,144,91,189,53,94,231,107,5.8,25.8,70,146,Asymptomatic,False,0.3,False,Former,11.4,176,6.5,42.1,False,7811,56.1,0 +5942,64,Male,122,74,181,47,110,184,117,5.5,27.8,56,179,Asymptomatic,False,4.6,True,Never,10.0,96,5.9,36.9,True,4836,76.3,0 +5943,73,Male,136,85,202,47,136,115,120,6.1,24.3,90,122,Asymptomatic,False,0.4,False,Never,1.6,43,7.5,87.9,False,1821,73.0,1 +5944,85,Female,167,111,205,52,102,192,90,4.7,29.5,71,129,Atypical Angina,True,0.4,False,Current,4.1,62,4.9,69.1,True,6236,49.9,1 +5945,52,Male,126,87,238,61,141,140,73,4.7,26.3,73,189,Asymptomatic,False,0.2,False,Never,4.0,145,7.6,13.6,False,1776,62.3,0 +5946,81,Male,130,69,176,65,106,116,147,6.4,22.5,66,172,Atypical Angina,False,0.9,False,Former,2.1,89,7.4,45.1,True,4919,83.2,0 +5947,75,Male,128,87,164,60,70,167,115,6.1,26.9,68,121,Non-Anginal Pain,False,2.4,True,Never,3.0,2,6.4,46.2,False,5476,30.8,1 +5948,58,Male,133,81,210,55,105,248,166,6.6,31.9,73,175,Asymptomatic,True,0.7,False,Never,2.7,92,6.1,31.4,False,3627,49.0,0 +5949,74,Male,125,73,254,60,162,197,160,7.3,32.1,77,143,Non-Anginal Pain,False,0.4,True,Former,1.9,89,5.3,28.7,False,3671,56.0,0 +5950,68,Female,128,72,231,74,127,158,145,6.1,25.3,89,127,Asymptomatic,False,0.2,True,Former,0.0,29,6.7,60.3,False,500,64.7,1 +5951,77,Female,126,70,219,57,121,166,126,6.2,26.6,90,142,Asymptomatic,False,1.7,False,Never,9.6,0,7.9,25.7,False,2402,45.0,0 +5952,21,Male,116,78,175,60,73,170,93,4.8,25.2,75,210,Non-Anginal Pain,False,1.7,False,Never,8.6,161,6.0,55.1,False,3663,80.5,0 +5953,42,Male,128,81,188,60,113,127,92,4.5,19.0,66,188,Non-Anginal Pain,False,0.9,False,Former,2.4,213,6.0,46.7,True,8148,53.6,0 +5954,37,Female,140,86,168,85,74,92,119,5.9,25.6,75,196,Asymptomatic,False,1.2,False,Former,0.3,195,6.7,56.9,False,4548,68.7,0 +5955,58,Female,126,73,209,58,108,240,139,6.3,25.2,92,167,Non-Anginal Pain,False,0.0,False,Former,2.0,207,6.8,45.4,True,8086,47.1,0 +5956,58,Female,107,68,177,45,118,112,87,4.8,23.6,75,182,Non-Anginal Pain,False,0.9,False,Current,1.4,141,7.0,73.0,False,6015,35.0,0 +5957,37,Female,109,76,189,90,74,100,76,5.1,22.0,69,181,Typical Angina,True,2.4,False,Former,14.0,238,8.9,49.8,True,8647,75.1,0 +5958,45,Male,128,82,189,57,84,176,149,6.7,25.9,89,196,Asymptomatic,False,1.4,True,Never,1.8,196,7.0,38.6,False,5239,47.9,0 +5959,56,Male,143,85,160,38,93,143,74,4.7,29.2,69,149,Atypical Angina,True,1.7,False,Former,2.7,165,7.7,58.2,True,7478,46.4,1 +5960,52,Male,122,92,214,43,104,263,108,5.1,34.4,85,176,Atypical Angina,False,0.4,False,Current,8.6,147,7.8,52.3,False,2371,72.5,0 +5961,54,Male,142,93,226,53,138,155,143,6.2,32.5,89,160,Asymptomatic,False,0.4,True,Never,5.2,55,7.6,84.9,False,4352,61.8,1 +5962,49,Female,127,69,188,49,84,185,101,5.5,31.0,81,172,Typical Angina,False,0.7,True,Never,0.5,162,6.5,52.7,True,6520,73.3,0 +5963,38,Female,110,69,142,73,45,162,83,5.1,22.0,70,194,Asymptomatic,False,0.7,False,Never,7.5,292,6.7,49.9,False,6115,74.9,0 +5964,62,Female,143,83,248,60,150,130,102,5.6,25.9,80,149,Non-Anginal Pain,False,1.5,False,Never,2.6,177,7.8,42.4,True,9155,71.6,0 +5965,36,Female,98,64,155,63,97,49,80,4.9,17.8,83,200,Non-Anginal Pain,False,2.2,False,Never,3.8,192,6.1,62.4,True,8735,71.8,0 +5966,65,Male,130,76,157,35,84,153,146,6.1,22.8,78,164,Non-Anginal Pain,False,0.8,False,Never,2.3,0,8.2,56.1,False,2107,37.4,0 +5967,57,Male,118,76,228,53,137,233,113,4.9,22.2,86,162,Atypical Angina,False,1.3,True,Current,13.5,192,6.4,39.0,False,5598,69.1,1 +5968,66,Male,117,84,190,60,108,157,93,4.6,23.1,89,156,Asymptomatic,False,0.1,True,Never,1.6,194,5.8,95.6,False,7829,79.4,0 +5969,66,Male,124,88,169,53,85,126,155,6.5,24.5,92,149,Typical Angina,False,1.1,False,Never,3.7,133,7.1,36.1,False,6098,74.6,0 +5970,34,Male,117,72,176,63,106,35,103,5.5,22.8,51,182,Asymptomatic,False,0.3,True,Never,8.3,198,6.2,10.6,False,6477,58.8,0 +5971,38,Female,110,71,153,64,85,56,78,4.3,15.0,64,195,Asymptomatic,True,0.7,False,Never,0.6,310,6.9,24.2,False,5042,67.6,0 +5972,22,Male,117,82,157,71,35,163,129,6.2,21.4,72,209,Non-Anginal Pain,False,1.0,False,Former,2.0,167,6.4,56.2,False,7338,82.2,0 +5973,34,Female,112,74,166,59,69,168,95,4.5,21.7,68,184,Non-Anginal Pain,False,0.7,False,Never,3.3,159,6.6,62.9,True,7583,49.7,0 +5974,39,Female,114,65,188,70,77,215,82,4.5,29.0,76,182,Non-Anginal Pain,False,1.1,False,Never,0.4,179,7.3,40.9,False,4157,76.7,0 +5975,65,Female,116,73,196,55,110,157,116,6.2,21.9,94,158,Asymptomatic,False,0.9,False,Never,2.1,88,7.0,41.2,True,9433,45.7,0 +5976,61,Female,117,62,162,66,77,162,160,6.6,28.6,90,174,Asymptomatic,False,0.8,False,Never,5.1,194,7.2,69.1,True,10867,66.9,0 +5977,30,Male,130,79,198,71,78,145,100,5.5,20.8,76,198,Asymptomatic,False,0.9,False,Never,11.7,163,9.4,47.2,True,9185,67.7,0 +5978,63,Female,166,95,231,65,137,172,60,4.0,28.3,90,151,Atypical Angina,False,0.1,True,Current,6.0,205,5.9,63.3,False,6490,49.2,0 +5979,46,Female,140,92,177,44,120,113,166,7.1,26.3,90,160,Atypical Angina,False,2.0,False,Current,14.4,38,8.1,40.2,False,5308,44.4,1 +5980,56,Male,120,92,140,48,74,79,174,7.5,24.7,64,177,Asymptomatic,True,0.8,False,Former,2.5,150,7.7,81.0,False,3607,47.3,1 +5981,54,Female,112,77,178,67,68,185,67,4.6,28.3,78,157,Atypical Angina,False,0.5,False,Current,1.6,217,7.2,30.0,True,4816,78.4,0 +5982,50,Male,116,71,180,43,103,213,149,6.4,28.0,84,156,Asymptomatic,False,0.1,False,Never,2.0,87,5.7,55.9,True,8122,79.0,0 +5983,69,Male,105,60,157,48,105,73,107,5.8,25.2,87,166,Typical Angina,False,0.5,False,Never,2.2,143,7.1,38.7,False,5373,77.2,0 +5984,34,Female,133,82,227,74,104,215,143,6.7,31.4,79,203,Atypical Angina,False,0.4,True,Never,6.6,202,7.0,44.1,False,4627,78.2,0 +5985,61,Male,122,71,160,46,69,196,120,5.6,20.7,82,151,Non-Anginal Pain,False,0.2,False,Never,7.4,202,7.5,54.1,True,9585,70.0,0 +5986,72,Male,146,82,152,64,63,104,138,6.5,19.0,83,152,Atypical Angina,False,0.1,False,Never,9.6,98,6.9,73.9,False,7110,86.3,0 +5987,49,Female,129,80,184,63,88,128,122,6.4,26.6,89,198,Asymptomatic,True,0.1,False,Former,1.8,153,8.0,57.4,False,8613,64.0,0 +5988,46,Female,124,83,120,60,40,118,142,6.5,24.5,83,163,Non-Anginal Pain,False,0.2,True,Former,2.9,116,8.4,34.8,True,6457,84.7,0 +5989,41,Male,129,85,186,62,103,149,107,5.5,17.5,78,178,Asymptomatic,False,0.0,False,Former,1.9,136,9.1,51.8,True,9070,79.3,0 +5990,57,Male,113,79,202,50,117,193,130,6.0,22.3,86,153,Asymptomatic,False,0.7,False,Never,12.0,130,5.8,0.0,False,5696,38.0,0 +5991,58,Male,139,87,192,68,62,259,106,5.4,21.3,80,147,Asymptomatic,True,0.6,False,Never,22.7,161,8.2,47.3,True,3753,45.6,0 +5992,58,Female,106,75,175,73,67,195,95,5.2,22.7,78,147,Asymptomatic,False,0.5,False,Current,2.2,255,5.1,53.5,True,8320,89.8,0 +5993,24,Female,112,81,181,66,91,140,139,6.6,26.6,80,210,Asymptomatic,False,0.5,False,Never,0.6,271,7.0,58.6,True,10960,83.0,0 +5994,75,Female,136,87,167,61,96,50,107,5.7,28.6,87,115,Asymptomatic,True,1.8,True,Former,3.8,127,6.3,70.9,False,5379,73.0,1 +5995,65,Female,146,92,232,66,148,79,109,5.6,22.1,88,142,Atypical Angina,False,0.8,False,Never,2.9,145,5.4,30.2,False,4613,69.2,0 +5996,51,Female,128,82,159,71,86,94,95,4.8,20.2,74,177,Non-Anginal Pain,False,0.2,False,Former,3.5,257,7.3,51.8,True,9574,54.6,0 +5997,61,Female,116,66,188,46,105,203,135,6.0,28.5,80,149,Typical Angina,True,2.8,False,Former,0.1,112,6.6,28.2,False,3622,54.4,1 +5998,36,Male,115,75,185,43,95,223,119,6.4,32.0,94,179,Asymptomatic,False,0.5,True,Never,7.5,147,5.4,12.4,False,8723,46.5,1 +5999,59,Male,116,64,221,53,142,161,87,5.0,22.4,82,157,Atypical Angina,False,0.4,False,Current,3.4,112,5.6,59.6,False,5543,53.2,0 +6000,44,Female,114,65,234,78,127,153,130,6.5,24.2,75,185,Non-Anginal Pain,False,0.8,True,Never,0.9,76,7.3,30.4,True,9277,49.3,0 +6001,59,Male,118,66,170,37,78,190,105,5.2,27.3,67,155,Atypical Angina,False,1.1,False,Never,4.5,175,7.0,51.3,True,4608,63.6,1 +6002,40,Male,105,74,216,63,120,144,86,5.1,25.1,75,156,Typical Angina,True,0.2,False,Never,3.8,174,8.8,51.4,True,9731,61.1,1 +6003,48,Female,125,76,191,49,106,181,160,7.3,26.0,87,150,Atypical Angina,False,0.3,False,Never,21.8,31,6.8,37.1,False,5003,50.0,1 +6004,60,Male,116,69,248,52,151,166,133,6.0,22.1,96,162,Asymptomatic,True,2.6,True,Current,1.9,212,7.2,45.0,True,8718,54.6,1 +6005,46,Male,121,78,168,40,111,133,122,5.8,20.9,77,196,Asymptomatic,False,2.5,False,Current,12.6,165,7.4,54.7,False,7044,91.9,0 +6006,56,Female,121,78,164,72,67,62,112,5.8,27.4,90,180,Asymptomatic,True,0.9,True,Never,4.5,112,6.2,48.1,False,6051,79.1,0 +6007,52,Female,114,72,208,51,134,73,129,5.8,25.2,78,164,Non-Anginal Pain,False,0.3,True,Never,0.9,187,7.8,10.8,True,8522,44.2,0 +6008,71,Female,138,83,246,70,140,167,143,6.5,28.6,71,136,Asymptomatic,True,1.2,True,Former,4.6,209,7.3,33.8,True,5978,67.0,1 +6009,64,Male,153,106,263,49,163,227,141,6.6,31.7,74,144,Asymptomatic,False,0.1,False,Former,25.7,136,7.2,80.3,False,5644,61.3,0 +6010,56,Female,156,94,250,53,154,153,132,6.3,29.5,96,144,Non-Anginal Pain,True,4.5,True,Current,0.4,68,5.1,56.2,False,2737,67.2,1 +6011,84,Female,130,78,200,74,90,179,137,7.1,26.4,89,113,Asymptomatic,False,1.0,True,Never,2.5,174,7.8,58.6,False,4143,61.5,1 +6012,58,Female,119,76,184,56,118,61,98,5.2,29.2,71,174,Asymptomatic,False,0.6,True,Never,8.0,161,7.1,46.0,True,6924,63.1,0 +6013,46,Female,115,81,192,84,86,134,94,5.6,24.4,79,188,Asymptomatic,True,0.8,False,Current,1.2,119,7.1,91.4,False,2124,39.7,0 +6014,77,Male,161,99,169,53,97,35,113,5.5,18.4,77,117,Atypical Angina,True,0.9,False,Former,3.9,230,7.5,61.3,True,5807,62.5,1 +6015,49,Female,136,70,214,50,129,145,99,5.0,29.1,74,192,Asymptomatic,False,0.3,False,Never,6.0,151,9.2,46.0,True,8079,61.8,0 +6016,49,Female,125,77,245,38,145,264,114,5.6,32.9,90,184,Asymptomatic,False,0.5,False,Former,2.1,147,6.8,31.3,False,7509,34.2,0 +6017,41,Female,147,92,177,67,91,86,117,5.6,30.0,101,188,Asymptomatic,False,0.8,True,Never,0.9,164,5.7,63.3,True,9552,67.5,0 +6018,52,Female,130,87,186,74,95,87,123,6.1,18.9,77,164,Non-Anginal Pain,False,0.1,False,Never,1.8,36,6.3,28.4,False,4276,63.2,0 +6019,64,Male,130,88,234,83,103,165,119,5.9,24.8,64,153,Non-Anginal Pain,True,0.3,False,Never,3.1,203,7.9,32.0,True,6396,63.7,0 +6020,30,Female,122,76,128,54,63,78,111,5.6,20.5,92,195,Non-Anginal Pain,False,0.2,False,Former,3.8,108,5.9,78.1,False,4482,50.2,0 +6021,52,Male,125,81,188,44,118,145,155,6.8,30.9,83,144,Non-Anginal Pain,False,1.7,True,Former,8.8,142,6.1,40.4,False,7869,84.8,1 +6022,33,Female,118,79,138,63,35,180,97,5.0,27.5,70,184,Asymptomatic,False,0.1,False,Current,2.5,278,5.8,42.0,True,8291,40.6,0 +6023,71,Female,142,91,153,32,97,103,130,5.8,19.1,97,159,Asymptomatic,False,0.6,False,Never,5.4,41,4.8,71.3,False,4032,44.1,1 +6024,54,Male,131,77,177,44,111,118,105,5.8,39.1,88,158,Asymptomatic,False,3.7,False,Never,9.1,138,7.3,59.3,False,4018,72.4,0 +6025,72,Female,121,80,187,52,108,106,116,5.8,23.3,83,169,Non-Anginal Pain,False,2.2,False,Current,1.9,117,7.4,27.8,False,5255,36.1,0 +6026,52,Female,152,96,144,52,89,47,100,5.1,20.5,77,157,Asymptomatic,False,0.5,False,Never,3.2,107,8.4,43.6,False,4152,89.5,0 +6027,31,Male,123,86,189,51,91,170,93,5.1,32.4,77,186,Non-Anginal Pain,True,1.1,False,Never,4.6,40,6.2,61.0,False,9398,52.1,0 +6028,48,Female,132,71,148,36,63,227,81,5.5,29.6,83,166,Asymptomatic,False,0.5,True,Never,0.4,50,7.7,55.3,False,3137,72.2,1 +6029,90,Male,136,83,202,53,116,149,184,7.5,27.8,80,129,Atypical Angina,False,3.6,True,Current,1.7,59,9.4,42.9,False,6998,42.2,1 +6030,54,Female,144,95,210,47,119,218,114,6.3,33.9,79,167,Typical Angina,True,1.4,False,Former,1.3,0,8.1,54.6,False,3312,36.7,0 +6031,68,Female,135,93,172,53,79,140,93,5.5,23.4,89,174,Asymptomatic,True,0.3,True,Never,3.2,85,6.9,62.2,False,4987,73.1,0 +6032,42,Female,109,67,159,45,90,117,141,6.2,20.3,81,190,Non-Anginal Pain,False,1.3,False,Never,2.5,133,6.9,56.7,False,6034,67.8,0 +6033,48,Male,119,84,232,65,123,227,122,6.4,22.5,96,191,Asymptomatic,True,0.6,False,Never,12.3,28,7.1,42.1,False,4797,75.2,0 +6034,65,Male,128,82,234,50,148,215,135,6.7,36.5,106,136,Asymptomatic,True,0.1,False,Current,1.6,52,6.5,56.0,False,3757,52.5,1 +6035,71,Female,156,104,202,56,116,162,127,6.6,34.0,98,152,Non-Anginal Pain,False,0.0,False,Former,11.5,98,6.8,56.4,True,6883,45.6,1 +6036,68,Male,134,86,188,38,121,128,149,6.5,26.1,77,141,Atypical Angina,False,2.4,False,Never,2.6,124,7.5,62.9,False,5579,61.6,1 +6037,40,Female,129,91,247,73,115,241,146,5.8,26.6,92,175,Atypical Angina,False,0.5,True,Never,15.3,109,5.9,53.9,True,5482,58.3,0 +6038,32,Female,105,66,252,71,150,177,153,7.2,24.4,88,174,Asymptomatic,False,0.2,False,Current,4.6,158,8.5,44.1,False,7259,76.0,0 +6039,34,Female,103,64,161,55,75,153,111,5.2,23.3,75,182,Typical Angina,False,0.1,False,Former,3.5,174,6.7,47.9,True,3871,56.9,0 +6040,43,Male,120,64,185,54,90,199,124,6.1,29.2,84,197,Non-Anginal Pain,False,2.0,False,Never,9.2,181,7.4,72.0,False,6943,68.8,0 +6041,48,Male,108,66,203,53,113,169,91,5.4,21.2,73,182,Asymptomatic,False,2.2,False,Current,5.1,232,5.9,65.6,True,6376,46.0,0 +6042,60,Male,152,100,237,61,143,194,136,6.0,33.0,87,145,Typical Angina,False,1.7,False,Former,7.8,131,8.3,44.5,True,5905,68.0,1 +6043,29,Male,112,71,159,44,73,167,133,6.1,24.9,86,201,Atypical Angina,False,0.2,False,Never,2.2,118,7.0,55.4,False,4682,56.6,0 +6044,34,Female,130,91,162,61,76,175,105,5.3,24.0,76,196,Atypical Angina,False,0.3,False,Never,2.7,161,6.0,41.5,False,5629,57.3,0 +6045,57,Male,141,100,208,64,122,196,135,6.3,21.2,86,154,Atypical Angina,False,1.7,True,Former,5.7,205,6.1,33.4,True,8868,50.3,1 +6046,53,Female,116,82,157,57,74,115,129,5.8,19.4,81,173,Non-Anginal Pain,False,0.5,False,Never,3.5,200,5.8,53.9,True,6626,20.6,0 +6047,48,Male,122,68,153,50,86,63,114,6.1,25.0,80,173,Asymptomatic,False,0.2,True,Former,8.8,117,7.9,65.5,True,4312,68.4,0 +6048,77,Female,146,78,241,64,134,183,137,6.5,28.5,80,138,Asymptomatic,False,2.2,False,Former,3.4,129,6.1,26.3,False,7491,45.2,1 +6049,40,Male,109,66,199,62,102,173,71,4.0,19.2,81,199,Typical Angina,False,0.5,True,Never,2.3,332,7.0,62.9,True,10265,62.0,0 +6050,65,Male,131,101,143,51,98,37,139,5.9,26.7,78,157,Asymptomatic,False,3.9,False,Never,8.4,180,5.3,36.4,False,8884,76.5,1 +6051,55,Female,124,74,230,79,114,130,148,6.7,30.2,87,149,Atypical Angina,True,0.0,False,Never,1.7,151,7.2,41.5,True,8203,67.1,0 +6052,49,Male,142,97,235,46,148,236,130,5.8,27.1,80,165,Asymptomatic,False,0.1,False,Former,4.0,231,7.6,81.2,False,5013,74.3,0 +6053,42,Female,106,68,205,62,109,172,131,6.1,24.8,66,177,Typical Angina,False,0.6,False,Former,4.1,164,7.2,41.7,True,9647,58.9,0 +6054,30,Female,123,80,209,63,132,78,117,6.1,26.4,76,208,Atypical Angina,True,2.6,True,Never,5.4,145,8.4,42.8,False,2694,81.7,0 +6055,36,Male,109,71,199,39,132,136,111,5.5,19.5,94,169,Typical Angina,True,1.9,False,Current,10.6,149,6.0,27.5,True,9522,49.5,1 +6056,48,Male,143,101,157,46,79,148,80,4.6,17.8,76,168,Atypical Angina,False,0.3,False,Current,2.5,261,9.7,58.4,True,7292,59.5,0 +6057,42,Female,111,74,214,77,110,132,109,5.5,19.0,75,185,Asymptomatic,False,2.0,False,Never,2.6,132,6.5,35.2,False,5828,96.2,0 +6058,43,Female,121,75,161,42,99,149,102,5.1,17.9,81,172,Non-Anginal Pain,False,4.1,False,Current,3.8,138,8.0,43.8,False,3772,51.3,0 +6059,51,Male,131,84,163,55,80,115,125,6.0,30.2,85,167,Asymptomatic,True,0.4,False,Never,9.9,81,8.2,18.3,False,6337,49.8,0 +6060,70,Female,150,100,165,61,85,119,87,4.8,27.5,82,159,Asymptomatic,False,0.9,True,Never,1.6,183,6.3,91.8,False,4303,57.2,0 +6061,60,Female,136,92,195,45,94,258,103,5.4,25.7,94,156,Typical Angina,False,0.2,False,Current,1.6,56,8.0,33.9,True,6114,53.8,0 +6062,53,Male,138,88,177,48,78,271,96,5.2,29.8,75,173,Non-Anginal Pain,False,0.8,False,Never,7.8,248,7.1,64.6,False,8497,82.7,0 +6063,40,Male,142,83,226,48,133,189,146,6.4,25.2,93,181,Atypical Angina,True,1.2,True,Never,1.6,47,8.3,73.9,False,6681,44.3,0 +6064,50,Male,140,87,243,54,121,346,91,5.0,32.2,72,197,Atypical Angina,False,1.8,False,Never,14.7,310,7.7,23.4,True,8567,70.4,0 +6065,57,Female,98,59,212,66,139,36,99,5.3,20.0,79,171,Asymptomatic,False,0.6,True,Former,9.5,274,5.3,28.3,True,7451,67.0,0 +6066,43,Male,130,89,173,40,116,137,123,5.3,30.5,82,177,Non-Anginal Pain,True,1.0,True,Former,1.9,171,6.6,70.9,False,7866,31.7,0 +6067,59,Male,127,65,195,34,146,113,114,6.2,28.2,104,134,Asymptomatic,False,4.2,True,Never,1.8,106,5.3,38.5,True,5251,43.3,1 +6068,53,Male,140,89,174,61,80,185,136,6.3,25.8,77,168,Atypical Angina,False,0.3,False,Never,3.5,182,6.8,54.8,True,8681,57.5,0 +6069,60,Female,148,79,193,53,101,225,125,6.1,27.3,92,155,Non-Anginal Pain,True,1.6,False,Current,3.7,128,5.6,60.2,False,4929,45.8,1 +6070,90,Male,156,99,233,64,130,162,115,5.7,23.4,80,115,Asymptomatic,False,0.6,True,Former,3.5,90,5.9,70.8,True,5481,53.5,1 +6071,56,Female,130,89,190,60,101,145,113,5.6,25.4,70,172,Non-Anginal Pain,False,0.8,False,Former,0.1,114,7.1,31.7,True,6125,52.3,0 +6072,59,Male,148,84,190,49,109,176,115,5.6,31.6,100,183,Non-Anginal Pain,False,0.7,True,Never,8.9,133,6.2,49.2,False,1652,59.3,0 +6073,49,Female,137,86,213,76,95,188,101,5.1,36.0,89,166,Non-Anginal Pain,False,0.9,False,Former,0.7,68,7.4,56.1,False,4080,56.7,0 +6074,64,Male,136,77,207,66,97,135,70,4.5,24.6,80,157,Asymptomatic,False,0.9,False,Former,2.3,209,6.8,69.9,True,9416,92.8,0 +6075,44,Male,113,78,179,51,88,156,115,5.2,21.0,71,176,Atypical Angina,False,0.0,False,Never,2.6,133,5.7,67.4,True,3611,48.5,0 +6076,55,Male,132,80,203,51,121,180,139,6.4,26.7,87,158,Asymptomatic,False,0.1,False,Former,11.4,64,6.8,51.6,False,3603,69.1,0 +6077,29,Male,138,95,231,55,115,281,134,6.9,36.8,63,204,Non-Anginal Pain,False,1.7,False,Never,2.7,265,6.2,34.8,False,9624,56.2,0 +6078,76,Male,132,83,130,40,69,136,124,5.9,17.7,80,149,Asymptomatic,False,0.4,True,Never,1.6,255,5.8,18.4,True,7751,51.9,0 +6079,67,Female,139,95,163,46,104,46,140,6.4,27.3,88,158,Asymptomatic,False,1.1,False,Never,3.2,89,7.6,24.6,False,2113,70.0,0 +6080,40,Female,129,86,171,57,92,92,112,5.9,27.1,66,178,Asymptomatic,False,1.9,False,Never,6.4,115,8.4,17.2,False,4381,67.4,0 +6081,74,Male,148,88,161,38,89,165,84,5.1,24.2,85,128,Typical Angina,False,0.5,False,Never,7.6,38,9.1,47.8,True,2119,52.3,1 +6082,57,Male,141,91,183,52,97,180,121,5.8,23.3,77,163,Asymptomatic,True,0.2,False,Former,6.7,18,6.8,67.2,False,500,54.7,0 +6083,62,Male,142,90,134,40,59,197,126,6.5,26.5,73,166,Asymptomatic,False,0.3,False,Former,11.7,153,6.4,52.0,False,6855,71.1,0 +6084,56,Male,127,74,202,69,106,195,92,5.0,24.0,85,172,Asymptomatic,False,0.2,False,Current,3.3,176,6.8,12.3,True,8590,71.1,0 +6085,51,Female,107,73,193,53,104,169,107,5.7,17.7,80,177,Non-Anginal Pain,False,1.2,False,Never,12.1,15,6.4,66.5,False,1738,32.8,0 +6086,65,Female,123,71,149,53,93,85,180,7.5,27.6,83,157,Asymptomatic,True,1.3,False,Former,1.5,65,7.0,29.6,False,3021,47.0,0 +6087,49,Male,138,81,201,61,115,128,147,6.1,24.6,78,184,Typical Angina,False,0.3,True,Never,1.7,134,5.5,50.0,True,4811,57.3,0 +6088,39,Female,122,81,221,76,125,101,119,5.7,15.0,82,187,Asymptomatic,False,0.7,False,Never,0.1,176,6.4,48.5,False,8664,70.8,0 +6089,71,Male,157,95,226,59,130,132,118,5.7,20.6,77,129,Atypical Angina,False,2.5,True,Never,9.2,111,7.5,67.0,False,4272,62.7,1 +6090,53,Male,122,69,255,69,137,280,140,6.0,26.4,81,152,Atypical Angina,False,0.9,False,Never,19.3,249,7.0,63.6,False,10306,41.9,0 +6091,65,Female,144,86,222,65,118,174,154,6.8,28.2,82,136,Asymptomatic,True,0.2,False,Never,13.3,130,7.6,62.0,True,4122,75.0,1 +6092,53,Female,110,77,209,44,135,129,116,5.5,17.1,73,154,Atypical Angina,True,0.9,True,Current,2.6,77,4.1,42.9,False,5633,48.0,1 +6093,65,Male,140,78,165,27,113,176,136,6.4,21.6,65,162,Asymptomatic,True,0.2,False,Never,6.0,176,5.0,33.4,False,5638,66.9,0 +6094,31,Male,133,72,198,49,127,163,133,6.1,26.6,86,177,Typical Angina,False,1.3,True,Current,3.8,48,6.2,72.9,False,2961,57.8,1 +6095,64,Female,130,93,205,50,122,182,141,6.0,31.6,84,134,Asymptomatic,False,1.4,False,Never,3.0,23,7.3,58.8,False,6240,56.7,1 +6096,59,Male,151,100,190,20,133,156,142,7.2,31.2,89,142,Asymptomatic,True,0.6,True,Current,5.7,10,7.7,53.5,False,6049,56.2,1 +6097,43,Male,110,68,149,51,97,119,78,4.9,16.5,86,179,Atypical Angina,False,0.4,False,Former,5.9,186,7.6,34.2,True,8535,57.7,0 +6098,63,Male,116,71,157,55,88,187,123,6.5,21.0,68,146,Typical Angina,False,0.8,False,Never,18.5,268,9.4,44.7,True,10054,74.8,0 +6099,63,Female,139,92,184,51,107,129,111,6.1,24.4,76,145,Atypical Angina,False,0.5,True,Never,1.5,148,4.3,48.6,True,9187,75.9,0 +6100,55,Male,117,76,201,55,98,223,125,6.1,21.8,82,151,Typical Angina,True,1.5,False,Current,1.8,138,5.3,48.3,True,6506,67.9,1 +6101,65,Male,140,91,216,44,133,185,112,5.6,25.6,83,118,Typical Angina,False,1.5,False,Never,6.2,59,8.0,79.8,False,4518,42.7,1 +6102,44,Male,121,69,207,68,92,167,135,6.5,18.6,70,186,Asymptomatic,False,0.5,False,Never,8.8,208,6.2,66.6,True,8541,55.3,0 +6103,41,Female,102,58,135,45,65,155,110,5.4,24.1,94,174,Atypical Angina,False,0.5,True,Former,5.0,125,10.3,46.0,True,13576,54.0,0 +6104,34,Female,126,74,178,59,115,35,82,4.7,23.6,71,203,Asymptomatic,False,0.7,False,Never,7.9,183,5.9,45.4,True,7096,70.7,0 +6105,61,Male,122,78,180,50,122,88,170,7.4,26.8,81,146,Asymptomatic,False,1.8,True,Never,3.0,62,7.1,53.4,False,3394,54.2,1 +6106,57,Male,109,83,200,39,150,48,116,5.7,28.2,90,153,Non-Anginal Pain,False,0.1,True,Former,2.3,112,7.4,37.3,False,6714,70.1,1 +6107,32,Female,130,81,200,70,103,129,133,5.8,31.4,81,191,Asymptomatic,False,0.8,False,Current,2.4,187,6.8,62.8,False,5843,48.3,0 +6108,63,Female,131,77,226,58,115,186,129,6.0,21.9,85,161,Asymptomatic,False,0.3,False,Former,7.9,139,8.6,50.1,True,6953,83.3,0 +6109,66,Female,132,74,220,56,140,112,136,6.0,29.9,76,117,Asymptomatic,True,3.4,False,Never,6.1,48,8.0,50.6,True,5982,69.4,1 +6110,80,Female,145,91,191,54,84,194,146,7.0,33.1,96,133,Atypical Angina,True,2.4,False,Never,4.6,0,6.4,60.9,False,1975,75.9,1 +6111,54,Male,103,63,162,56,109,43,98,5.5,22.9,79,168,Atypical Angina,False,1.5,False,Former,3.0,86,6.6,40.0,False,5073,75.4,0 +6112,75,Male,139,83,174,67,74,174,89,5.2,28.8,83,146,Non-Anginal Pain,False,0.3,False,Never,7.3,207,9.5,53.1,True,9040,61.8,0 +6113,34,Male,117,80,208,45,112,200,129,5.9,37.0,91,178,Non-Anginal Pain,False,0.6,False,Former,4.7,58,6.1,42.8,False,2383,44.1,0 +6114,70,Male,140,99,159,35,97,117,101,5.7,23.3,84,150,Atypical Angina,False,0.9,False,Current,3.5,75,9.0,28.3,True,4408,58.2,0 +6115,67,Male,141,95,205,59,123,175,178,7.9,31.2,85,162,Non-Anginal Pain,True,0.7,True,Never,6.5,38,8.2,36.8,False,4072,31.9,1 +6116,51,Male,129,81,213,64,102,231,104,5.7,27.7,83,183,Asymptomatic,False,0.4,False,Never,8.8,68,8.4,55.3,False,6206,45.5,0 +6117,65,Male,128,77,195,51,110,150,134,6.5,28.1,76,141,Typical Angina,False,3.5,False,Never,1.5,65,6.2,47.5,False,2608,64.7,1 +6118,26,Male,118,72,196,82,98,174,132,6.5,34.3,87,194,Asymptomatic,False,0.6,False,Never,5.2,130,6.8,87.2,False,6067,32.0,0 +6119,55,Female,133,86,216,48,141,104,101,5.3,25.9,91,142,Asymptomatic,False,0.5,True,Current,2.1,48,7.0,41.4,False,1724,44.3,1 +6120,60,Female,138,88,212,58,133,111,101,5.3,23.2,82,172,Asymptomatic,False,1.2,False,Never,0.0,118,8.3,60.3,True,5743,79.0,0 +6121,55,Male,121,51,160,30,78,215,118,5.7,26.2,84,158,Typical Angina,False,0.3,False,Former,2.7,77,9.4,63.4,True,6296,44.6,1 +6122,65,Female,126,98,192,62,114,79,113,5.5,27.9,81,141,Asymptomatic,False,0.4,False,Former,2.6,95,8.4,49.9,False,5981,70.7,1 +6123,64,Male,150,94,183,40,99,177,138,6.4,23.0,82,155,Asymptomatic,False,0.3,False,Never,12.0,81,7.2,79.7,True,6041,52.2,0 +6124,35,Male,125,88,154,49,72,197,104,5.2,22.8,85,201,Atypical Angina,False,0.3,False,Never,8.6,133,9.7,72.0,False,6058,87.9,0 +6125,60,Female,133,81,142,50,93,73,152,6.7,20.6,87,164,Asymptomatic,False,0.1,False,Never,0.2,94,5.8,44.6,False,3855,70.4,0 +6126,45,Male,106,72,187,61,80,199,131,5.9,20.6,81,176,Asymptomatic,False,0.4,False,Never,1.6,230,6.5,47.8,False,9086,51.5,0 +6127,69,Male,118,65,203,46,116,171,129,5.7,24.9,78,142,Asymptomatic,False,0.4,False,Never,15.0,100,8.6,35.7,True,9158,42.8,1 +6128,58,Male,145,78,200,44,115,255,120,6.0,29.9,90,141,Non-Anginal Pain,True,3.8,False,Never,3.5,105,7.8,83.9,False,5787,42.4,1 +6129,67,Female,128,84,215,94,70,182,90,5.5,19.6,79,130,Typical Angina,False,0.2,False,Never,3.6,291,8.7,53.1,True,5908,75.6,0 +6130,87,Male,145,99,223,50,143,212,134,6.7,21.8,88,115,Asymptomatic,False,2.5,False,Never,5.7,59,4.5,60.5,False,7162,46.4,1 +6131,71,Male,141,80,202,42,125,139,115,5.1,24.1,89,151,Atypical Angina,False,5.1,True,Current,6.8,135,8.4,61.4,False,3716,60.1,1 +6132,26,Male,120,89,232,55,124,215,144,6.9,22.7,70,184,Asymptomatic,False,0.5,False,Never,2.0,201,6.3,58.8,False,5710,45.5,0 +6133,39,Male,113,72,189,45,101,180,132,5.9,24.2,85,149,Asymptomatic,True,3.1,False,Never,6.2,79,7.8,38.8,False,6543,59.3,1 +6134,55,Male,133,89,169,51,93,117,112,5.7,16.1,79,151,Asymptomatic,True,1.8,False,Never,3.2,186,6.4,54.6,False,5891,57.0,1 +6135,59,Male,133,84,181,57,91,123,120,5.5,16.1,84,178,Asymptomatic,False,0.5,False,Never,6.5,166,7.7,65.8,True,7466,56.3,0 +6136,56,Female,132,76,188,60,115,79,89,5.3,21.4,87,163,Typical Angina,False,0.2,False,Never,2.8,158,7.8,49.5,True,4400,82.3,0 +6137,54,Female,163,94,291,71,171,152,108,5.8,26.9,71,163,Atypical Angina,True,3.2,False,Former,4.2,185,7.1,50.9,True,8585,62.6,1 +6138,66,Male,147,95,170,55,78,129,103,5.2,18.9,72,130,Asymptomatic,False,1.1,False,Former,13.7,136,7.3,56.9,False,4459,73.9,0 +6139,44,Female,110,66,200,62,118,102,134,6.0,21.9,87,174,Asymptomatic,False,2.3,False,Never,0.2,178,6.7,56.5,False,5369,47.5,0 +6140,60,Male,128,78,122,65,54,36,154,6.6,25.8,78,182,Atypical Angina,False,0.7,False,Never,13.6,205,9.3,65.0,True,8548,69.7,0 +6141,49,Male,127,73,196,67,101,142,79,4.6,20.5,64,184,Asymptomatic,False,0.8,False,Never,2.6,203,7.1,38.0,True,4761,81.9,0 +6142,69,Male,117,71,123,46,69,117,144,6.9,16.3,80,144,Atypical Angina,False,2.8,False,Never,12.5,104,6.6,11.3,False,2646,52.8,1 +6143,57,Female,132,76,230,77,114,164,120,5.7,23.1,97,152,Asymptomatic,False,1.6,False,Former,1.7,185,7.5,36.0,True,7322,48.1,0 +6144,41,Male,112,65,130,29,111,35,174,7.5,25.4,82,162,Asymptomatic,True,3.8,False,Never,5.5,0,7.2,90.5,False,1547,55.3,1 +6145,41,Male,143,80,238,70,157,151,148,6.3,22.6,79,176,Asymptomatic,False,0.6,False,Never,12.6,124,4.7,51.4,False,8882,64.9,0 +6146,81,Male,150,92,177,64,83,151,110,5.8,27.6,74,126,Typical Angina,False,0.9,False,Former,4.2,148,6.4,64.5,False,4448,42.9,1 +6147,63,Female,145,92,180,59,99,141,137,6.3,25.1,100,140,Atypical Angina,False,0.5,False,Former,4.7,38,5.6,50.3,False,1983,63.4,0 +6148,65,Female,115,70,256,97,144,118,99,4.7,18.1,86,157,Non-Anginal Pain,True,0.1,False,Former,0.6,136,8.6,26.8,True,9154,35.7,0 +6149,48,Male,137,71,151,60,54,205,160,7.0,31.2,85,172,Typical Angina,True,0.9,False,Never,5.6,168,6.6,46.5,False,3765,49.9,0 +6150,49,Female,112,71,176,63,93,86,118,5.8,24.4,80,168,Typical Angina,True,0.2,False,Never,0.3,173,8.0,31.1,True,2673,80.9,0 +6151,27,Male,127,84,194,45,103,192,136,6.4,31.9,68,206,Typical Angina,False,1.1,True,Former,1.7,161,6.1,59.5,True,10622,43.3,0 +6152,65,Male,130,84,199,40,116,203,151,6.5,30.1,87,149,Non-Anginal Pain,False,0.3,False,Never,2.5,166,8.2,44.3,True,6160,64.5,0 +6153,54,Male,121,81,191,54,106,192,80,5.2,19.7,90,178,Non-Anginal Pain,True,0.3,False,Current,7.3,222,7.4,42.1,True,5052,68.0,0 +6154,70,Male,117,83,210,48,130,164,119,5.7,19.6,77,149,Non-Anginal Pain,False,0.6,False,Current,11.5,200,9.4,44.5,True,8689,72.4,0 +6155,72,Female,155,93,238,39,152,269,131,6.6,24.6,76,148,Atypical Angina,True,0.2,True,Never,0.8,91,6.4,43.5,False,5074,48.5,1 +6156,56,Male,144,98,195,28,154,135,139,6.2,26.9,76,142,Atypical Angina,True,0.7,False,Never,2.7,28,5.1,32.8,False,6979,71.3,1 +6157,60,Female,114,71,197,60,111,117,164,7.3,26.3,81,135,Typical Angina,True,1.0,False,Never,1.0,166,6.8,33.1,True,5620,62.5,1 +6158,69,Female,143,90,213,75,118,80,132,5.9,26.0,88,162,Non-Anginal Pain,False,0.8,False,Never,1.7,108,8.1,91.6,True,3567,63.3,0 +6159,49,Female,130,62,203,68,122,70,93,4.9,17.0,88,151,Asymptomatic,False,0.2,True,Current,5.0,212,6.3,54.9,False,7354,68.4,0 +6160,66,Male,123,90,193,40,132,195,134,6.3,24.0,76,146,Non-Anginal Pain,False,0.9,False,Current,2.8,222,7.5,29.3,True,6240,71.6,1 +6161,30,Male,142,83,202,70,111,116,109,5.2,26.3,82,188,Asymptomatic,False,0.2,False,Never,7.6,180,6.4,33.5,True,9150,47.7,0 +6162,62,Female,160,95,200,68,101,117,107,6.6,26.1,71,161,Atypical Angina,False,0.3,False,Never,0.1,89,6.9,34.4,False,7105,46.8,0 +6163,51,Male,145,85,251,55,157,207,90,5.0,29.3,71,178,Asymptomatic,False,0.0,False,Never,1.9,102,5.8,39.0,False,6278,53.2,0 +6164,56,Female,133,78,187,68,99,144,140,6.6,24.7,96,189,Atypical Angina,False,0.1,False,Current,6.4,104,7.4,64.2,False,2833,43.5,0 +6165,41,Male,132,74,172,65,73,211,101,5.1,25.1,87,194,Asymptomatic,False,0.1,False,Former,2.2,123,6.4,69.5,False,7489,60.8,0 +6166,43,Female,129,75,189,58,67,255,115,5.7,26.9,77,171,Asymptomatic,False,1.5,False,Never,6.9,62,7.3,55.6,False,6901,64.4,0 +6167,46,Male,113,85,98,47,35,92,111,5.9,21.5,67,183,Asymptomatic,False,1.4,False,Never,3.3,107,6.4,47.4,False,6174,98.2,0 +6168,54,Female,140,105,191,70,93,124,122,5.6,26.9,65,179,Asymptomatic,False,1.4,False,Never,5.8,320,7.9,49.8,True,7692,69.8,0 +6169,43,Male,127,76,180,66,79,137,128,5.4,18.6,74,175,Non-Anginal Pain,False,1.9,False,Never,11.6,164,7.0,28.4,False,4899,60.8,0 +6170,34,Male,122,88,177,54,106,135,117,5.8,23.6,71,189,Atypical Angina,False,0.0,False,Never,3.2,129,7.0,47.4,False,8964,47.8,0 +6171,80,Female,138,68,179,33,125,98,119,5.9,31.7,81,144,Asymptomatic,False,1.4,False,Former,5.0,111,6.8,37.9,False,4190,63.2,1 +6172,62,Male,140,93,234,53,142,250,138,6.3,27.8,99,148,Asymptomatic,False,2.9,False,Former,8.0,130,5.7,74.1,False,3395,37.5,1 +6173,42,Female,129,83,177,71,68,188,113,5.6,19.4,76,184,Asymptomatic,False,1.8,False,Former,5.6,96,6.4,38.8,True,8590,65.3,0 +6174,49,Female,128,75,196,74,83,162,91,4.5,26.4,75,181,Non-Anginal Pain,True,0.2,False,Former,13.9,178,5.5,55.4,True,7059,66.3,0 +6175,53,Female,109,68,156,51,84,116,130,5.3,20.1,89,190,Non-Anginal Pain,False,1.4,False,Current,3.4,176,8.3,64.2,False,6712,80.7,0 +6176,60,Male,127,82,210,40,118,239,86,5.4,23.1,82,162,Atypical Angina,False,0.6,False,Former,12.6,166,7.7,4.3,False,5664,46.2,0 +6177,41,Male,134,77,124,55,53,117,109,5.6,21.4,73,197,Atypical Angina,False,0.2,False,Never,2.7,155,5.4,35.9,False,7316,75.4,0 +6178,44,Male,121,78,187,42,105,128,76,4.9,24.5,82,186,Asymptomatic,False,2.9,False,Former,6.3,26,6.9,47.1,False,3570,61.4,0 +6179,64,Male,139,100,219,45,129,248,117,5.8,34.1,85,137,Asymptomatic,False,3.5,False,Current,3.5,104,7.4,58.4,False,7699,56.0,1 +6180,89,Female,163,108,227,52,121,195,110,5.5,29.3,69,121,Asymptomatic,True,6.1,False,Never,13.2,194,6.5,60.1,True,8543,68.3,1 +6181,64,Female,135,79,224,56,121,200,159,6.7,23.6,87,136,Asymptomatic,False,0.6,False,Former,6.1,11,5.0,91.1,False,500,56.7,1 +6182,54,Female,103,65,197,57,119,128,115,5.3,19.2,78,157,Asymptomatic,False,0.2,True,Never,28.0,147,7.2,26.7,False,7206,46.6,0 +6183,37,Male,133,113,164,44,106,166,130,6.2,26.2,86,175,Asymptomatic,False,3.3,False,Current,9.2,115,7.5,35.6,False,5869,48.4,1 +6184,62,Female,115,66,217,62,122,228,111,5.7,15.0,75,149,Asymptomatic,False,0.1,True,Never,11.4,203,9.3,47.1,False,7093,44.0,0 +6185,40,Male,119,84,168,73,79,131,84,4.9,25.2,73,193,Typical Angina,False,1.7,False,Never,2.7,116,5.7,21.9,True,6325,78.4,0 +6186,67,Male,136,101,210,56,134,138,111,6.2,27.9,91,133,Non-Anginal Pain,True,1.9,True,Former,4.9,88,5.8,61.7,False,6912,64.9,1 +6187,52,Male,112,76,173,49,116,35,139,5.9,25.1,85,158,Atypical Angina,False,0.3,False,Never,6.4,102,7.8,47.1,True,4666,74.1,0 +6188,44,Male,104,72,165,56,83,187,143,6.9,21.4,81,173,Non-Anginal Pain,False,0.7,False,Never,11.8,182,6.6,73.8,True,9742,74.6,0 +6189,70,Male,136,90,162,27,102,160,129,5.8,28.6,80,133,Asymptomatic,False,0.2,False,Current,3.6,203,5.9,35.9,True,7818,65.1,1 +6190,52,Female,123,75,160,67,76,140,122,5.6,26.2,88,180,Non-Anginal Pain,False,0.1,False,Current,5.2,154,6.9,42.8,True,7991,86.9,0 +6191,46,Female,138,76,240,78,148,87,123,5.7,27.9,82,190,Atypical Angina,False,0.6,False,Never,4.5,122,9.0,48.7,True,9301,81.1,0 +6192,54,Male,134,71,212,39,125,223,85,5.2,32.6,86,147,Non-Anginal Pain,False,4.6,False,Never,14.8,155,7.5,83.9,False,4696,61.6,1 +6193,84,Male,125,75,187,58,109,97,111,5.4,28.5,81,123,Atypical Angina,True,0.5,False,Former,5.7,15,7.4,45.3,False,4709,61.9,1 +6194,60,Male,148,93,199,50,96,223,126,6.5,27.2,89,151,Asymptomatic,False,2.2,False,Never,21.8,125,6.8,71.6,False,4315,32.3,0 +6195,57,Male,155,104,200,57,119,142,124,6.2,30.0,78,156,Non-Anginal Pain,False,0.7,True,Never,5.5,92,5.1,46.7,False,3656,58.8,0 +6196,31,Female,150,92,148,21,94,136,154,7.1,30.2,88,160,Typical Angina,True,3.1,False,Never,3.7,102,8.3,48.3,True,5507,64.9,1 +6197,76,Male,160,105,233,34,150,213,156,6.8,35.2,99,132,Non-Anginal Pain,True,1.2,False,Never,3.7,75,7.2,68.7,False,3072,42.3,1 +6198,37,Female,122,72,203,47,134,115,130,6.9,26.9,87,184,Asymptomatic,False,0.3,False,Former,7.5,73,7.1,34.0,False,4523,36.1,0 +6199,55,Male,144,86,198,49,108,156,111,5.8,22.7,68,193,Non-Anginal Pain,False,1.2,False,Never,2.0,148,8.8,61.4,False,5990,77.0,0 +6200,51,Female,126,78,145,52,70,141,130,6.2,29.0,80,160,Non-Anginal Pain,False,0.3,False,Never,9.0,73,7.6,73.3,False,1045,46.2,0 +6201,54,Male,116,65,176,54,101,146,88,4.2,25.9,85,167,Non-Anginal Pain,True,0.1,True,Never,2.3,75,7.0,46.8,False,3852,53.6,1 +6202,54,Male,106,62,202,41,122,115,154,5.9,27.2,77,182,Asymptomatic,False,1.6,False,Never,3.0,151,9.3,41.0,True,7655,58.4,0 +6203,35,Male,113,63,197,62,99,139,122,5.7,24.1,66,204,Asymptomatic,False,2.5,False,Current,7.7,244,5.6,48.0,True,7980,79.4,0 +6204,52,Male,132,97,190,66,85,163,144,6.8,24.2,78,183,Atypical Angina,False,0.5,True,Never,6.5,188,5.9,65.6,False,4037,61.8,0 +6205,41,Female,136,92,168,51,94,136,120,5.5,24.7,69,192,Non-Anginal Pain,False,0.5,False,Current,2.4,259,6.7,45.5,True,8812,48.0,0 +6206,37,Female,115,81,209,72,109,147,90,5.0,21.9,81,208,Asymptomatic,False,0.8,False,Current,0.7,242,7.7,17.6,True,7560,28.5,0 +6207,51,Female,133,74,182,51,112,108,100,5.3,26.8,79,163,Atypical Angina,False,1.5,False,Never,3.1,0,6.9,42.3,False,1786,62.9,0 +6208,67,Female,138,82,180,61,99,119,88,4.5,20.0,80,156,Asymptomatic,False,1.3,False,Former,3.7,163,9.7,73.6,True,7802,84.9,0 +6209,58,Female,138,75,205,72,93,189,122,5.9,25.4,95,163,Asymptomatic,False,0.5,True,Former,9.7,175,7.2,89.5,True,8981,68.9,0 +6210,44,Male,122,78,187,62,96,187,91,5.3,22.4,77,167,Asymptomatic,False,1.6,False,Former,5.3,207,3.8,28.2,True,9250,77.2,0 +6211,67,Female,149,90,200,32,138,171,140,6.3,25.6,86,136,Asymptomatic,True,3.2,True,Never,0.5,82,7.4,41.7,False,7429,32.2,1 +6212,77,Female,125,78,167,65,85,35,137,6.4,23.9,91,145,Non-Anginal Pain,False,0.9,False,Never,1.9,198,8.3,76.8,True,9934,71.0,0 +6213,36,Male,132,64,168,52,94,112,99,5.4,19.0,92,204,Asymptomatic,False,0.7,False,Current,2.6,34,7.1,81.5,False,2561,44.4,0 +6214,35,Female,109,79,155,41,82,213,110,5.7,26.0,75,193,Asymptomatic,False,0.7,False,Current,1.1,159,6.8,31.0,False,4586,60.3,0 +6215,77,Male,120,94,214,51,118,174,124,5.7,26.1,88,139,Non-Anginal Pain,True,3.7,False,Never,1.7,120,6.0,47.3,False,4365,13.4,1 +6216,46,Male,123,87,233,78,119,139,100,5.0,25.7,84,177,Asymptomatic,True,0.4,True,Never,2.4,316,5.6,49.4,True,10306,45.4,0 +6217,65,Male,133,85,181,54,96,141,92,5.3,27.1,78,144,Typical Angina,False,0.2,False,Never,5.4,153,7.5,49.7,False,4388,63.7,1 +6218,44,Male,135,81,130,46,74,64,117,6.1,18.8,75,191,Asymptomatic,False,0.5,False,Former,6.2,200,8.1,77.8,True,7643,73.6,0 +6219,59,Female,136,77,164,61,86,105,141,6.1,23.5,80,171,Non-Anginal Pain,True,1.1,False,Never,0.9,138,6.4,31.1,False,6065,40.0,1 +6220,63,Male,135,80,220,53,120,260,112,5.3,29.0,82,147,Asymptomatic,False,0.1,False,Never,2.1,244,7.0,39.9,True,9678,78.9,0 +6221,36,Female,108,76,219,82,93,176,154,7.0,25.0,83,175,Typical Angina,False,0.5,False,Never,2.3,203,8.2,33.9,True,7542,47.0,0 +6222,70,Female,146,96,206,72,108,58,108,5.4,15.0,73,145,Atypical Angina,False,0.6,False,Current,5.3,133,9.2,70.9,False,5550,37.1,1 +6223,44,Male,126,87,118,46,36,181,131,6.3,27.4,76,186,Asymptomatic,False,0.9,False,Never,8.5,203,8.0,49.1,False,7474,94.8,0 +6224,54,Female,123,89,241,83,114,193,113,5.5,23.6,84,191,Non-Anginal Pain,False,0.4,False,Former,0.3,124,6.0,42.3,False,4787,62.3,0 +6225,48,Male,123,62,158,57,67,215,138,6.0,29.1,73,156,Asymptomatic,True,1.6,True,Never,6.6,253,8.5,85.0,True,13111,48.1,0 +6226,60,Female,129,83,180,86,91,52,114,5.6,21.5,88,143,Atypical Angina,False,1.5,True,Never,8.6,154,9.0,54.3,True,5702,85.9,1 +6227,61,Male,128,93,196,43,89,280,118,5.7,34.9,79,183,Asymptomatic,False,1.4,False,Never,8.7,80,8.5,62.1,False,2416,49.5,0 +6228,43,Female,109,69,97,51,36,65,96,4.9,15.0,72,188,Asymptomatic,True,0.3,False,Never,0.2,230,7.6,38.3,True,10564,72.2,0 +6229,70,Male,134,79,158,42,92,78,117,5.4,20.9,84,178,Atypical Angina,False,1.4,True,Former,5.9,87,6.8,49.0,True,4927,63.7,0 +6230,51,Male,109,65,208,36,132,125,100,5.3,25.4,85,173,Asymptomatic,False,0.2,False,Current,2.1,180,6.7,21.7,False,7361,44.7,0 +6231,59,Female,134,84,189,67,73,233,133,5.6,29.6,80,168,Typical Angina,False,1.6,True,Never,1.3,138,7.0,57.2,False,3909,63.9,1 +6232,63,Female,122,62,156,43,73,217,144,6.1,27.4,89,179,Asymptomatic,False,0.8,False,Never,0.1,93,8.5,65.3,False,5107,52.5,0 +6233,49,Male,115,75,158,58,99,56,110,4.9,18.9,97,158,Asymptomatic,True,0.9,True,Current,2.2,62,7.1,58.2,False,5645,41.1,1 +6234,54,Female,132,95,215,55,136,105,126,6.1,22.4,87,169,Non-Anginal Pain,False,0.4,False,Never,2.5,162,7.8,60.5,False,5677,48.3,0 +6235,66,Male,133,88,179,51,108,94,99,5.4,20.9,83,151,Asymptomatic,False,0.9,False,Never,3.5,62,5.8,61.2,False,3702,56.8,1 +6236,36,Male,126,82,187,58,95,158,129,6.4,24.6,108,210,Non-Anginal Pain,False,0.7,False,Never,3.0,94,6.7,31.2,False,4373,69.1,0 +6237,51,Male,113,65,159,50,111,65,125,5.7,20.3,67,168,Non-Anginal Pain,True,0.4,False,Former,2.8,188,7.8,45.0,True,6955,72.3,0 +6238,82,Male,156,98,200,57,126,72,81,4.5,18.7,76,135,Asymptomatic,False,0.3,False,Never,4.3,202,7.9,44.6,True,7012,86.7,0 +6239,46,Female,131,89,243,79,126,182,107,5.3,26.3,73,179,Non-Anginal Pain,False,1.2,True,Former,1.7,296,8.3,63.1,True,10067,83.3,0 +6240,75,Female,127,68,270,61,171,125,136,6.4,28.0,68,174,Non-Anginal Pain,False,0.4,True,Never,4.5,146,6.5,31.3,True,8288,41.8,0 +6241,71,Female,146,84,247,50,158,183,136,6.5,26.0,81,172,Non-Anginal Pain,False,0.2,False,Never,9.3,113,8.1,40.6,True,7357,59.5,0 +6242,70,Male,128,76,174,24,125,114,137,6.7,33.0,69,133,Non-Anginal Pain,True,3.2,True,Never,6.8,69,7.6,55.5,False,6950,33.9,1 +6243,67,Male,141,82,217,81,89,239,130,6.1,23.1,77,155,Typical Angina,False,0.2,False,Former,3.3,202,4.8,46.5,True,7912,89.2,0 +6244,53,Male,133,98,180,45,97,197,133,5.6,27.3,65,160,Atypical Angina,False,0.6,False,Never,3.2,213,6.4,50.2,True,8581,53.8,0 +6245,58,Female,139,85,228,68,114,231,142,6.4,25.5,72,148,Atypical Angina,False,0.1,False,Current,2.2,238,6.6,51.9,False,4380,39.6,1 +6246,75,Female,111,63,160,53,91,109,86,5.6,19.4,75,144,Atypical Angina,False,0.1,False,Former,3.1,73,9.4,34.0,False,4263,67.6,0 +6247,35,Male,109,65,144,56,49,168,116,5.9,25.3,75,181,Atypical Angina,False,3.0,True,Never,9.4,157,8.0,17.5,True,7836,49.6,1 +6248,73,Female,128,84,172,31,124,79,148,6.4,30.6,81,140,Asymptomatic,True,0.5,True,Never,10.3,51,6.7,41.5,False,791,35.0,1 +6249,51,Male,115,91,171,44,110,122,121,6.3,22.3,87,149,Asymptomatic,True,1.7,True,Never,12.0,5,6.1,34.0,False,8519,34.2,1 +6250,77,Male,150,87,251,59,155,235,134,5.8,26.7,85,124,Non-Anginal Pain,False,0.4,False,Never,4.0,124,5.9,80.9,False,7387,39.8,1 +6251,77,Male,135,85,229,31,161,142,150,7.3,31.7,84,143,Asymptomatic,False,0.3,True,Never,8.2,20,6.6,56.6,True,3451,54.3,0 +6252,65,Female,122,84,173,48,109,107,111,5.2,25.1,76,146,Atypical Angina,False,0.1,True,Current,3.9,99,7.1,13.6,False,5388,51.7,0 +6253,68,Female,118,66,144,73,47,112,84,4.7,20.5,67,149,Atypical Angina,False,0.5,False,Never,2.7,211,7.6,51.4,False,6682,71.6,0 +6254,46,Male,112,73,158,47,91,122,117,5.4,25.4,75,193,Typical Angina,False,1.0,False,Current,2.7,165,7.3,54.4,True,8498,50.1,0 +6255,64,Female,123,89,194,62,96,184,115,6.4,29.6,63,173,Asymptomatic,False,0.5,False,Never,10.1,154,8.3,50.8,True,3734,85.0,0 +6256,61,Male,127,74,234,68,125,202,143,6.6,27.9,73,143,Asymptomatic,True,1.1,False,Never,2.9,130,6.5,51.1,False,2574,62.8,1 +6257,66,Male,123,80,187,47,119,143,113,5.9,19.2,65,171,Asymptomatic,False,1.8,False,Former,5.1,130,7.9,41.0,True,6632,34.0,0 +6258,75,Female,158,97,155,49,81,158,138,6.4,25.2,70,148,Asymptomatic,False,2.2,False,Former,9.0,179,7.3,24.3,True,5758,63.9,0 +6259,54,Male,141,77,182,62,93,153,133,6.9,32.7,91,153,Asymptomatic,False,2.3,False,Current,8.7,150,6.1,45.6,True,7891,69.5,1 +6260,46,Male,117,77,163,76,79,123,96,5.6,19.1,85,182,Asymptomatic,False,0.1,False,Former,6.0,119,8.2,47.2,False,8206,50.2,0 +6261,54,Female,112,63,168,47,93,183,138,6.5,20.3,66,170,Non-Anginal Pain,False,0.6,False,Never,12.1,156,6.2,32.2,True,4494,59.5,0 +6262,58,Male,130,85,198,61,119,64,160,6.5,25.9,85,169,Asymptomatic,False,0.2,False,Never,1.5,125,7.9,33.2,True,8636,69.6,0 +6263,49,Female,107,65,133,53,61,120,113,5.3,19.2,84,167,Typical Angina,False,0.4,False,Never,32.8,115,7.2,49.4,False,4108,83.2,0 +6264,60,Male,127,71,156,63,78,104,103,5.7,24.8,77,156,Non-Anginal Pain,False,0.9,False,Never,2.9,216,7.8,26.1,True,5684,76.6,0 +6265,60,Male,122,70,193,53,117,120,116,5.2,18.7,68,173,Asymptomatic,True,0.9,True,Current,4.8,262,6.0,54.6,True,9259,40.7,0 +6266,51,Female,124,77,127,26,77,109,98,5.2,27.5,63,196,Non-Anginal Pain,False,0.3,False,Never,2.6,256,6.2,51.0,True,7793,57.4,0 +6267,72,Female,155,98,251,47,132,282,141,6.8,35.4,86,117,Asymptomatic,True,0.1,False,Never,3.5,0,6.3,54.0,False,1259,55.3,1 +6268,42,Female,127,81,254,79,147,147,117,6.1,26.6,84,192,Asymptomatic,False,0.5,False,Never,5.0,114,7.6,88.3,False,10087,87.0,0 +6269,64,Female,126,86,241,51,133,234,94,5.2,33.0,84,154,Asymptomatic,False,1.9,False,Never,43.5,110,7.4,40.6,True,7595,56.2,0 +6270,59,Female,136,75,204,61,117,172,127,7.0,29.0,89,145,Asymptomatic,False,0.9,True,Never,1.7,194,7.8,30.0,False,3967,68.5,0 +6271,49,Male,125,88,224,52,112,221,98,5.3,25.0,83,168,Atypical Angina,False,0.8,False,Never,3.6,191,6.5,85.2,True,7609,64.2,0 +6272,61,Female,134,84,204,48,133,35,144,6.4,25.3,85,168,Typical Angina,True,0.5,False,Current,0.3,51,7.6,93.7,False,4897,43.3,1 +6273,26,Male,96,66,217,30,131,217,85,4.7,35.5,104,210,Typical Angina,False,1.5,False,Never,8.8,58,8.4,40.8,False,5505,40.3,0 +6274,59,Female,136,78,220,72,122,113,87,5.0,30.1,80,168,Atypical Angina,False,0.2,True,Current,4.1,235,7.4,46.6,True,6293,67.8,0 +6275,61,Female,133,77,196,80,85,153,119,5.8,20.7,93,172,Asymptomatic,False,1.6,False,Never,1.2,149,6.7,50.5,True,6395,77.5,0 +6276,53,Female,113,71,218,70,122,143,112,5.6,27.1,89,168,Typical Angina,False,0.7,False,Never,0.4,186,7.5,24.6,False,7787,72.4,0 +6277,54,Female,138,89,230,58,134,215,107,5.7,27.0,86,170,Non-Anginal Pain,False,0.1,False,Current,13.5,23,7.2,28.4,False,859,44.6,0 +6278,42,Male,135,77,185,55,109,84,138,6.5,21.1,78,189,Atypical Angina,False,0.6,False,Former,5.6,174,5.7,48.2,True,9488,72.9,0 +6279,38,Male,106,70,231,41,157,149,111,5.3,18.3,73,175,Asymptomatic,False,0.7,False,Never,3.5,284,6.4,41.6,False,6281,57.4,0 +6280,39,Female,110,66,208,65,111,216,60,4.2,20.0,79,164,Non-Anginal Pain,False,0.8,False,Former,2.7,167,5.0,24.9,True,8590,78.3,0 +6281,51,Male,117,78,115,46,61,48,90,5.2,19.2,83,180,Asymptomatic,False,0.4,False,Former,8.6,183,6.2,41.9,False,4368,80.9,0 +6282,32,Male,108,54,155,48,55,215,134,6.6,24.1,77,191,Asymptomatic,False,1.1,False,Never,21.6,150,7.7,17.9,True,9789,63.9,0 +6283,44,Male,120,79,197,56,121,109,78,4.2,26.9,76,165,Atypical Angina,False,0.5,False,Former,13.0,128,6.5,46.5,True,8910,65.9,0 +6284,66,Female,133,91,204,62,128,123,114,5.6,24.3,79,143,Atypical Angina,False,0.3,False,Never,3.4,143,8.9,58.2,False,6624,53.0,0 +6285,49,Male,141,83,183,39,104,187,150,6.6,29.2,97,168,Typical Angina,False,0.7,False,Former,2.5,141,7.0,52.7,False,4899,69.4,0 +6286,36,Male,97,64,188,59,118,165,116,5.6,27.0,87,192,Asymptomatic,True,1.2,True,Former,3.0,103,7.4,43.9,False,6569,62.9,0 +6287,71,Female,129,71,198,65,101,171,154,7.1,26.8,88,153,Non-Anginal Pain,False,0.4,False,Never,0.6,60,5.8,67.5,False,7878,44.8,0 +6288,45,Male,105,50,219,70,111,182,103,5.6,27.9,88,169,Atypical Angina,False,1.0,False,Never,1.6,138,6.4,43.4,False,5980,87.3,1 +6289,41,Female,114,59,179,42,133,72,99,5.8,19.7,76,179,Atypical Angina,False,0.3,True,Never,3.4,195,7.5,44.9,False,9171,82.6,0 +6290,41,Female,115,69,227,47,136,183,125,6.0,27.6,69,191,Typical Angina,False,0.7,False,Former,1.4,162,6.8,44.9,True,5127,48.8,0 +6291,68,Female,129,77,201,40,117,173,128,5.9,27.2,80,140,Asymptomatic,True,0.6,False,Never,0.2,124,5.9,45.5,False,3420,40.9,1 +6292,54,Male,139,90,195,59,99,173,144,6.4,25.0,88,162,Asymptomatic,False,1.3,False,Never,2.1,126,6.8,47.4,False,5233,58.1,0 +6293,53,Male,142,95,193,56,109,138,118,5.4,27.6,81,166,Asymptomatic,False,0.9,False,Former,4.8,88,6.2,45.6,False,5641,76.5,0 +6294,62,Male,138,87,233,71,123,144,126,6.1,24.0,74,171,Asymptomatic,False,1.4,False,Former,15.9,150,7.3,49.8,True,4873,83.0,0 +6295,53,Male,131,92,154,44,78,136,161,7.1,27.0,81,175,Atypical Angina,False,0.6,False,Never,1.6,113,7.0,66.3,False,5876,48.2,0 +6296,56,Male,140,99,217,48,136,131,160,7.0,29.5,78,160,Asymptomatic,True,0.4,False,Never,1.6,134,7.5,37.0,True,7688,45.2,0 +6297,42,Male,99,65,131,48,54,149,101,5.8,20.3,72,180,Atypical Angina,False,1.6,False,Never,11.0,226,8.3,27.8,True,6188,88.6,0 +6298,58,Male,148,91,147,54,71,172,112,5.9,22.0,80,148,Atypical Angina,False,0.8,False,Never,9.8,195,5.2,66.4,False,5219,37.3,1 +6299,41,Female,123,84,201,57,97,190,169,7.7,35.4,80,192,Asymptomatic,False,0.7,False,Never,0.6,152,7.2,32.4,True,8228,78.1,0 +6300,55,Female,111,72,209,68,142,58,112,5.3,22.5,85,149,Atypical Angina,False,1.6,False,Current,5.5,108,4.3,47.1,True,9126,77.1,1 +6301,32,Male,96,66,216,51,111,232,123,6.2,27.0,81,200,Asymptomatic,False,1.1,False,Never,9.3,229,6.0,57.1,False,6308,51.1,0 +6302,57,Male,150,89,228,34,155,197,127,6.2,37.7,98,167,Non-Anginal Pain,True,1.2,True,Former,2.5,133,7.4,57.2,True,6887,73.9,1 +6303,68,Female,139,73,215,75,123,73,108,5.3,22.4,76,152,Asymptomatic,False,2.3,True,Former,0.1,100,6.8,55.5,False,5625,60.9,0 +6304,59,Male,138,91,236,55,124,224,114,5.4,20.4,99,156,Asymptomatic,True,1.2,True,Never,10.4,87,6.6,75.3,False,3475,53.2,1 +6305,53,Female,121,83,118,44,73,35,117,5.9,19.2,82,173,Non-Anginal Pain,False,0.9,False,Never,0.9,207,6.1,35.4,True,10573,71.1,0 +6306,53,Female,144,84,183,58,97,187,120,5.6,33.6,84,173,Asymptomatic,False,2.3,True,Never,5.4,83,7.7,37.3,True,3638,51.1,1 +6307,50,Male,129,104,156,59,79,140,113,5.2,29.8,97,156,Typical Angina,False,0.6,False,Never,2.9,44,4.9,78.6,False,5043,51.4,0 +6308,23,Female,122,75,141,38,77,167,136,6.2,29.5,71,208,Asymptomatic,False,0.9,True,Never,7.5,123,6.1,60.6,False,4078,53.2,0 +6309,66,Male,158,102,175,57,84,171,134,6.1,26.2,95,131,Non-Anginal Pain,False,4.1,False,Never,9.2,98,7.3,35.9,False,2443,80.9,1 +6310,60,Female,113,80,216,49,143,158,116,6.2,26.7,75,169,Typical Angina,False,0.5,True,Former,9.6,162,6.6,63.3,True,6933,75.8,1 +6311,41,Female,125,83,215,60,122,140,101,5.0,20.8,83,188,Non-Anginal Pain,False,0.9,True,Former,4.8,227,6.2,48.5,True,6614,46.8,0 +6312,53,Male,128,74,196,66,95,175,161,7.2,24.9,90,151,Asymptomatic,False,1.4,False,Never,3.8,95,6.8,40.6,False,5841,57.5,1 +6313,69,Female,131,77,168,24,101,184,128,6.5,29.8,71,154,Typical Angina,True,2.0,True,Never,3.9,121,5.6,45.2,True,2507,52.4,1 +6314,38,Female,154,105,148,47,81,138,114,5.4,25.7,70,175,Asymptomatic,True,0.5,False,Current,0.2,126,8.8,55.1,True,6981,61.4,0 +6315,54,Male,139,86,187,61,111,132,108,5.6,25.7,81,151,Non-Anginal Pain,False,0.5,True,Never,5.3,106,6.9,70.6,False,6680,54.1,1 +6316,62,Female,123,80,192,82,100,41,110,5.5,22.6,86,163,Asymptomatic,False,1.0,False,Former,11.0,103,7.5,29.8,False,5719,50.9,0 +6317,44,Male,120,87,188,35,114,206,119,6.0,30.6,77,163,Asymptomatic,False,0.0,False,Never,11.9,175,7.9,9.8,True,8010,61.8,0 +6318,61,Female,133,91,167,53,103,78,103,4.8,22.3,84,160,Atypical Angina,False,0.3,False,Former,0.3,174,7.3,50.0,True,6654,79.9,0 +6319,42,Female,118,76,180,68,92,132,111,5.6,23.2,75,181,Asymptomatic,False,1.0,False,Never,2.9,199,7.7,43.7,False,10396,82.2,0 +6320,69,Female,135,83,219,45,143,192,127,6.1,24.2,88,145,Asymptomatic,False,0.5,False,Current,3.2,214,8.5,36.2,False,6354,64.8,1 +6321,49,Female,138,76,222,72,108,182,92,4.7,17.2,80,166,Typical Angina,False,0.1,True,Never,6.9,256,6.1,72.6,True,8804,49.6,0 +6322,43,Female,111,66,225,82,103,210,97,5.3,25.9,78,208,Atypical Angina,False,0.2,False,Former,6.5,157,7.8,48.0,True,7863,75.3,0 +6323,58,Male,118,84,202,54,116,177,141,6.1,19.4,86,180,Non-Anginal Pain,False,1.0,False,Never,3.2,103,7.9,48.4,False,6018,71.7,0 +6324,31,Male,129,80,218,66,125,93,89,4.8,15.2,85,190,Non-Anginal Pain,False,1.3,False,Former,2.5,259,5.8,48.1,False,6641,69.1,0 +6325,51,Female,136,81,185,54,93,161,140,6.4,34.4,88,178,Asymptomatic,False,0.6,False,Never,3.1,79,8.4,54.6,False,3152,82.3,0 +6326,51,Male,128,73,184,59,114,99,63,4.7,21.1,96,200,Asymptomatic,False,0.4,True,Current,9.6,164,6.9,40.4,True,5582,42.5,0 +6327,80,Male,140,83,178,58,76,181,147,7.0,23.7,79,149,Typical Angina,True,2.2,True,Former,6.6,173,8.0,65.8,True,7653,64.6,1 +6328,62,Male,124,77,154,63,79,35,130,6.0,26.1,91,157,Asymptomatic,False,1.3,False,Never,5.5,171,5.6,77.0,True,7973,61.8,0 +6329,68,Male,143,92,150,52,90,81,115,6.2,23.5,86,127,Asymptomatic,True,1.4,False,Former,6.6,35,8.7,62.7,False,4052,91.5,1 +6330,44,Male,130,76,166,60,85,123,108,5.1,26.5,79,177,Asymptomatic,False,0.2,False,Never,1.9,194,7.4,57.6,True,7190,63.2,0 +6331,39,Male,117,77,220,50,144,132,131,6.1,20.4,80,168,Atypical Angina,True,1.6,True,Former,5.3,136,6.7,28.2,False,2988,66.0,1 +6332,34,Female,125,82,201,46,116,189,98,4.7,30.0,82,210,Non-Anginal Pain,False,0.8,False,Former,0.2,74,7.5,69.2,False,6563,59.9,0 +6333,63,Female,126,97,151,73,68,80,117,5.9,16.0,85,168,Non-Anginal Pain,False,0.9,False,Never,0.9,143,7.9,51.0,False,4328,67.7,0 +6334,41,Male,107,58,120,42,63,56,179,7.2,25.2,80,197,Asymptomatic,False,1.3,False,Former,2.3,157,7.1,51.3,False,8365,72.6,0 +6335,37,Female,93,62,181,59,87,196,138,6.4,19.2,89,204,Non-Anginal Pain,False,0.2,False,Never,7.1,223,7.1,59.6,True,8583,72.7,0 +6336,67,Male,132,67,176,63,101,35,144,5.6,23.1,85,149,Atypical Angina,True,0.9,False,Former,6.9,98,7.5,59.5,False,5010,77.3,1 +6337,66,Female,151,88,182,66,68,259,103,4.4,31.1,80,161,Atypical Angina,False,1.6,False,Never,2.8,189,7.0,24.6,True,8052,54.5,0 +6338,48,Female,121,70,197,57,114,98,99,5.7,32.6,88,192,Atypical Angina,True,2.1,False,Never,12.1,237,7.4,46.1,False,5747,95.6,0 +6339,49,Female,119,59,199,47,104,209,129,5.8,28.9,93,162,Asymptomatic,False,2.1,True,Current,6.9,106,8.3,49.3,False,4109,57.0,1 +6340,52,Female,139,99,202,56,97,270,134,6.6,23.3,86,150,Non-Anginal Pain,False,2.2,False,Current,8.1,0,7.9,53.0,False,6082,37.7,1 +6341,43,Female,116,58,169,52,79,191,104,5.5,25.5,83,184,Asymptomatic,False,1.7,False,Never,8.0,97,8.3,11.6,False,7852,69.0,0 +6342,41,Female,122,80,229,74,109,228,160,6.7,24.4,93,177,Asymptomatic,False,1.1,True,Never,12.3,129,6.6,23.6,False,4109,51.9,0 +6343,56,Male,140,100,195,61,112,77,147,6.7,31.2,80,150,Typical Angina,True,0.8,True,Never,10.2,124,5.3,55.9,False,4713,63.4,1 +6344,54,Male,121,74,208,52,147,75,103,5.4,29.0,89,142,Atypical Angina,False,1.9,True,Never,5.1,157,6.6,37.0,True,5651,56.8,1 +6345,42,Male,106,71,166,36,89,153,92,5.2,23.4,87,157,Asymptomatic,False,0.2,False,Current,2.0,100,8.0,8.5,True,6094,69.0,1 +6346,66,Female,114,75,274,80,162,171,115,5.7,25.1,78,137,Typical Angina,False,3.5,False,Never,4.8,90,5.4,46.2,False,4215,50.7,1 +6347,80,Male,146,86,187,48,108,106,122,5.4,22.4,80,131,Asymptomatic,False,0.0,False,Former,2.5,118,6.6,38.4,True,7285,79.4,0 +6348,41,Female,130,81,206,57,114,141,122,5.7,22.2,80,176,Asymptomatic,False,0.4,False,Former,1.4,116,6.2,33.2,False,2018,47.4,0 +6349,50,Female,144,88,229,97,109,125,106,5.4,17.1,76,166,Non-Anginal Pain,False,1.1,False,Never,0.9,229,7.8,59.9,False,4820,60.3,0 +6350,25,Male,122,82,117,40,81,35,133,6.1,25.6,69,205,Typical Angina,False,0.6,False,Former,2.1,104,8.2,49.5,True,5840,78.7,0 +6351,67,Male,152,90,185,48,102,164,121,5.8,33.9,92,125,Non-Anginal Pain,False,1.7,False,Never,2.2,72,7.1,23.6,False,2774,57.6,1 +6352,36,Male,124,77,208,61,128,98,112,5.9,22.4,91,185,Typical Angina,False,1.0,False,Current,2.5,105,6.6,44.4,False,6450,56.5,0 +6353,53,Female,129,79,197,60,105,90,119,6.4,19.9,68,182,Asymptomatic,False,0.7,True,Never,0.7,258,6.3,63.2,False,4180,56.2,0 +6354,61,Male,125,75,191,32,141,108,146,6.4,24.2,86,133,Asymptomatic,False,2.6,True,Never,10.3,60,7.1,25.4,False,3794,58.1,1 +6355,64,Male,117,69,156,53,63,186,85,4.6,25.2,72,157,Non-Anginal Pain,False,0.8,False,Never,7.7,139,7.6,39.1,False,4747,53.7,0 +6356,38,Female,117,71,164,47,88,162,101,5.7,27.7,76,185,Asymptomatic,False,1.0,False,Never,0.5,63,7.5,36.2,False,4119,46.7,0 +6357,44,Male,113,73,150,56,79,84,126,6.3,19.5,81,190,Asymptomatic,False,2.0,False,Never,4.7,26,5.4,63.8,False,1465,47.5,0 +6358,50,Female,141,95,207,63,106,172,128,6.3,29.3,84,155,Asymptomatic,True,1.7,False,Former,10.9,181,6.4,51.4,False,5372,65.3,1 +6359,32,Male,127,78,197,59,98,264,107,5.8,26.5,84,210,Atypical Angina,False,1.1,False,Never,2.7,190,8.3,49.1,False,4978,46.5,0 +6360,44,Male,133,92,181,56,108,142,115,5.5,25.9,72,162,Non-Anginal Pain,True,0.2,True,Never,2.7,99,7.9,19.5,False,4485,16.9,1 +6361,61,Male,130,86,161,34,79,233,128,5.6,34.7,84,152,Typical Angina,True,3.4,True,Never,12.5,61,6.5,68.2,True,2673,49.7,1 +6362,66,Female,127,77,177,57,100,134,89,4.0,24.7,77,175,Asymptomatic,False,0.8,False,Never,4.6,141,7.7,18.4,False,2742,69.5,0 +6363,37,Male,132,80,142,47,68,101,134,6.3,24.2,84,198,Asymptomatic,False,0.0,False,Never,7.3,187,7.1,31.4,False,6652,48.8,0 +6364,41,Male,110,64,172,49,86,192,96,5.2,24.2,81,171,Asymptomatic,False,0.7,True,Never,6.0,119,8.3,34.2,False,2258,36.8,0 +6365,43,Male,122,75,188,52,110,136,91,4.5,15.0,75,161,Asymptomatic,False,0.5,False,Former,2.6,187,7.3,62.9,True,5488,38.4,1 +6366,70,Female,144,87,219,61,130,142,110,6.1,28.5,72,141,Atypical Angina,True,2.8,False,Former,5.1,145,7.2,51.9,True,10437,83.7,1 +6367,45,Female,126,77,176,70,49,237,134,5.6,22.9,72,173,Asymptomatic,False,1.5,False,Current,2.0,157,6.7,18.9,False,9486,61.5,0 +6368,55,Male,109,66,208,62,102,230,132,6.8,22.7,81,148,Atypical Angina,False,0.5,False,Never,15.7,104,9.4,35.4,False,5629,48.8,0 +6369,68,Female,133,74,195,81,102,52,115,5.9,18.6,76,160,Asymptomatic,False,0.9,True,Never,9.5,151,7.2,45.3,True,8820,94.6,0 +6370,62,Female,130,86,220,69,99,267,131,5.8,31.3,88,156,Non-Anginal Pain,False,1.2,False,Former,0.8,110,5.6,76.2,True,8433,52.8,0 +6371,62,Female,122,82,180,55,104,128,120,6.2,30.6,67,144,Asymptomatic,False,1.6,False,Never,0.2,166,5.3,70.9,True,7205,62.6,0 +6372,69,Male,128,81,209,39,151,137,141,6.5,30.6,90,136,Asymptomatic,False,1.4,False,Never,4.7,109,7.2,61.0,False,7860,39.8,0 +6373,31,Female,107,74,177,58,104,135,99,4.9,22.4,73,205,Typical Angina,False,2.5,False,Current,9.7,219,8.1,68.1,True,10855,41.7,0 +6374,58,Female,125,74,261,60,152,190,107,6.1,29.4,79,147,Non-Anginal Pain,True,0.5,False,Former,1.4,90,5.6,46.0,True,7166,61.8,1 +6375,56,Female,127,74,200,38,138,174,112,5.8,29.0,93,138,Atypical Angina,False,2.8,True,Never,1.6,21,8.0,45.2,False,7544,70.4,1 +6376,45,Male,119,78,196,56,88,180,155,6.3,25.4,89,154,Asymptomatic,True,0.7,False,Current,1.8,103,6.2,29.2,False,5169,31.7,1 +6377,67,Male,145,100,220,44,128,161,124,5.4,29.2,93,149,Non-Anginal Pain,False,1.4,False,Current,8.6,227,9.0,7.5,True,8093,60.2,1 +6378,69,Male,131,77,123,49,47,150,139,6.5,27.2,88,164,Asymptomatic,False,0.1,False,Never,2.4,170,6.9,35.0,False,7595,44.0,0 +6379,46,Female,128,68,255,56,142,253,140,6.8,32.7,97,173,Non-Anginal Pain,True,0.9,True,Former,5.6,52,8.0,32.3,False,2924,68.5,1 +6380,34,Female,106,54,150,46,73,146,130,5.6,25.3,82,200,Non-Anginal Pain,True,0.3,False,Former,0.5,114,8.5,39.1,False,5016,69.1,0 +6381,18,Female,100,65,149,90,37,105,90,4.8,25.3,86,198,Atypical Angina,False,0.8,False,Former,8.6,189,7.3,50.5,True,9051,81.0,0 +6382,80,Male,124,82,241,44,141,264,101,5.1,28.1,88,147,Non-Anginal Pain,False,3.2,False,Former,4.9,62,8.5,14.6,True,5334,53.1,1 +6383,46,Male,120,86,227,56,143,157,72,5.2,26.0,74,179,Non-Anginal Pain,False,1.5,True,Never,6.2,184,7.1,100.0,True,6855,73.0,0 +6384,57,Male,117,66,140,48,75,116,101,5.8,25.2,83,178,Asymptomatic,False,1.0,False,Never,7.4,218,6.8,62.1,True,8099,68.8,0 +6385,54,Male,135,85,159,42,95,120,125,5.9,25.9,75,159,Non-Anginal Pain,True,1.4,False,Former,3.9,134,8.7,49.5,True,5508,63.0,1 +6386,74,Female,148,95,247,54,164,171,138,6.3,25.9,95,123,Asymptomatic,False,3.2,False,Never,4.3,83,6.4,61.0,False,5686,39.2,1 +6387,35,Male,117,80,179,43,101,169,111,5.9,23.4,83,166,Asymptomatic,True,1.1,False,Former,6.3,94,7.1,47.3,False,7209,47.8,1 +6388,50,Female,136,96,179,61,84,179,94,5.0,25.4,84,174,Non-Anginal Pain,True,0.1,False,Former,18.0,77,7.8,51.5,False,4447,72.0,0 +6389,43,Female,157,92,226,60,140,138,121,5.6,28.4,95,162,Non-Anginal Pain,True,0.3,True,Never,9.9,141,6.4,19.1,True,3856,56.1,1 +6390,47,Male,141,89,186,61,115,91,144,6.3,27.6,94,174,Asymptomatic,False,0.8,False,Former,6.7,210,9.0,52.4,False,3807,36.6,0 +6391,39,Male,123,82,215,46,132,180,97,4.5,21.9,72,175,Asymptomatic,False,1.2,False,Current,14.2,125,5.9,65.6,False,4071,50.1,0 +6392,40,Male,135,93,179,58,87,159,102,4.7,23.2,88,189,Asymptomatic,True,0.2,False,Never,6.5,104,6.9,48.6,True,9268,68.7,0 +6393,56,Male,144,89,167,43,107,108,136,6.7,25.7,83,172,Asymptomatic,True,0.5,False,Never,1.7,161,8.2,69.6,False,6084,83.3,1 +6394,55,Male,124,74,252,68,160,172,143,6.6,29.2,77,168,Atypical Angina,True,2.8,False,Former,4.1,47,8.0,30.3,True,3152,66.5,1 +6395,38,Female,98,51,187,62,96,165,98,5.2,29.3,86,175,Atypical Angina,False,0.8,False,Former,4.0,142,8.5,28.6,False,4716,50.4,0 +6396,51,Male,114,75,170,42,98,166,91,5.5,17.2,97,151,Atypical Angina,False,1.5,False,Former,25.8,167,6.5,43.4,False,5691,61.0,1 +6397,40,Female,130,88,189,50,119,127,148,6.4,31.1,77,185,Non-Anginal Pain,False,0.7,False,Former,2.9,135,6.9,38.6,False,5229,68.0,0 +6398,63,Male,130,75,185,56,85,142,113,5.5,21.2,74,132,Typical Angina,True,0.3,True,Never,2.6,198,5.6,49.1,False,5133,16.5,1 +6399,64,Female,129,83,206,54,111,146,133,6.3,29.9,79,170,Asymptomatic,False,0.6,False,Current,2.5,148,6.1,51.0,True,8202,56.2,0 +6400,68,Male,142,93,223,72,127,118,139,6.1,24.1,79,147,Atypical Angina,False,1.4,False,Former,2.4,252,7.7,34.1,False,6113,88.4,0 +6401,50,Female,106,63,149,39,84,100,73,4.7,16.5,69,169,Asymptomatic,True,0.3,False,Never,24.5,212,8.1,47.5,True,7125,46.6,0 +6402,46,Female,118,59,181,51,99,187,119,5.1,23.2,83,177,Non-Anginal Pain,False,0.6,False,Never,5.5,202,5.7,32.0,False,6159,58.5,0 +6403,54,Female,128,78,170,34,106,178,118,4.8,22.2,83,168,Non-Anginal Pain,False,0.7,False,Current,8.0,134,7.1,41.7,True,5796,54.6,0 +6404,47,Male,110,74,170,65,76,175,121,5.7,24.7,106,171,Asymptomatic,False,0.7,False,Never,4.0,244,7.5,20.1,True,8902,79.2,0 +6405,54,Male,125,58,186,67,87,167,108,5.9,24.3,80,183,Asymptomatic,False,1.5,True,Former,5.8,157,6.8,55.3,False,2719,80.8,0 +6406,47,Female,131,85,212,70,114,113,95,5.2,23.1,69,190,Typical Angina,False,0.2,True,Never,7.0,202,6.2,61.2,True,7529,74.0,0 +6407,38,Male,96,50,161,56,96,74,109,5.0,18.7,74,176,Atypical Angina,False,0.0,False,Never,7.0,141,8.1,25.4,True,7240,52.8,0 +6408,57,Female,132,92,181,36,124,109,108,6.1,23.2,89,139,Typical Angina,True,1.7,False,Never,3.1,198,6.8,64.4,True,8545,67.0,1 +6409,65,Male,116,77,183,50,124,62,140,6.4,22.4,84,144,Asymptomatic,False,1.5,False,Former,8.2,127,6.8,37.9,False,5436,58.2,1 +6410,62,Male,142,79,213,46,124,149,166,6.9,29.7,72,182,Typical Angina,True,0.2,True,Never,4.1,135,8.6,34.3,False,3598,33.6,1 +6411,38,Male,124,69,195,46,109,138,87,5.0,24.7,81,176,Asymptomatic,False,1.0,False,Former,6.3,160,7.3,46.9,False,6556,48.0,0 +6412,71,Male,133,70,151,39,91,73,105,5.4,20.3,87,140,Non-Anginal Pain,True,0.1,False,Never,2.5,47,7.2,72.9,False,6534,56.2,1 +6413,32,Male,108,67,220,74,116,153,106,5.4,24.0,80,186,Atypical Angina,False,1.6,True,Never,7.1,217,6.0,43.9,True,5676,57.5,0 +6414,45,Male,117,65,151,53,68,152,162,7.4,23.1,85,169,Asymptomatic,False,1.6,False,Never,5.7,218,8.6,52.7,True,6975,78.3,0 +6415,55,Female,122,78,209,69,118,171,101,5.9,25.8,85,180,Asymptomatic,False,1.5,False,Never,2.6,141,4.6,37.6,False,6429,36.2,0 +6416,54,Male,115,67,199,48,110,184,133,5.9,22.1,65,155,Asymptomatic,True,2.1,False,Never,3.1,192,8.1,49.4,False,4142,50.7,1 +6417,50,Male,122,73,178,41,115,125,141,6.2,31.0,88,185,Asymptomatic,False,0.9,False,Current,4.3,181,8.0,47.8,False,8334,56.8,0 +6418,48,Male,116,85,185,75,94,163,122,5.5,22.3,84,180,Asymptomatic,False,0.0,False,Never,7.8,126,5.8,34.9,False,4342,71.7,0 +6419,49,Male,120,87,227,76,117,129,98,4.8,22.6,79,185,Non-Anginal Pain,False,0.0,False,Never,1.8,222,6.6,67.4,True,7625,77.6,0 +6420,67,Male,138,81,198,64,114,119,105,4.9,26.3,92,144,Atypical Angina,False,0.6,False,Never,4.6,0,8.8,58.8,False,4552,71.3,1 +6421,68,Female,131,75,206,54,122,116,136,6.1,24.6,73,122,Asymptomatic,False,3.2,False,Never,7.6,182,7.4,59.5,True,8606,51.8,1 +6422,55,Female,139,81,168,50,106,104,105,4.9,28.2,63,182,Non-Anginal Pain,False,2.2,False,Never,2.4,89,6.2,24.8,False,7799,59.5,0 +6423,41,Female,128,70,155,63,65,200,115,5.3,21.8,79,173,Non-Anginal Pain,False,0.0,True,Never,13.7,56,7.2,50.1,False,4066,72.9,0 +6424,62,Male,133,90,199,61,84,265,131,6.2,27.8,86,144,Atypical Angina,False,0.4,False,Never,10.5,67,5.8,13.8,False,5949,45.6,0 +6425,73,Female,144,95,237,71,124,231,84,5.3,18.3,88,169,Typical Angina,True,1.7,True,Never,0.7,230,7.7,60.2,True,5761,50.0,0 +6426,63,Male,140,89,180,58,83,210,119,5.7,24.4,65,165,Atypical Angina,True,0.9,False,Never,5.2,167,6.4,62.3,False,6062,60.2,0 +6427,45,Male,142,93,208,50,131,178,150,6.3,27.6,89,150,Asymptomatic,True,1.0,True,Never,12.2,57,7.3,58.9,False,5281,72.4,1 +6428,49,Male,121,69,160,53,70,205,102,5.2,21.6,74,160,Asymptomatic,False,0.7,True,Never,2.0,185,4.3,16.2,True,6629,49.4,0 +6429,72,Female,162,113,214,48,112,203,169,7.3,27.4,95,153,Asymptomatic,True,1.2,False,Never,0.1,76,9.5,54.0,True,7438,65.3,0 +6430,58,Male,140,79,228,31,142,248,136,6.5,29.2,76,157,Asymptomatic,True,1.9,False,Former,25.5,184,6.4,45.4,False,5627,33.7,1 +6431,41,Female,146,98,136,58,45,131,126,6.1,25.8,81,210,Non-Anginal Pain,False,0.3,False,Former,3.0,186,4.9,32.0,True,5283,53.3,0 +6432,71,Male,117,72,184,57,106,113,120,5.8,24.3,78,182,Asymptomatic,False,0.1,False,Never,1.8,136,6.7,36.1,False,4586,53.3,0 +6433,47,Male,138,103,236,69,152,219,96,5.5,32.3,94,181,Asymptomatic,False,0.2,False,Former,4.8,158,6.1,36.6,True,7891,76.4,0 +6434,76,Male,138,93,184,48,99,140,89,5.0,31.4,72,124,Asymptomatic,True,0.3,True,Former,6.6,51,7.7,67.0,False,6169,77.3,1 +6435,86,Male,139,82,201,43,138,118,110,5.7,26.7,93,118,Atypical Angina,True,0.3,False,Current,3.6,115,6.7,27.5,False,3189,42.1,1 +6436,75,Male,153,106,193,60,118,113,118,5.6,26.5,88,154,Non-Anginal Pain,False,1.8,False,Never,3.4,121,7.5,42.4,False,3717,61.3,0 +6437,65,Male,143,84,193,47,105,126,108,5.4,21.0,78,141,Atypical Angina,False,1.4,True,Current,2.9,90,7.0,61.1,True,9185,43.9,0 +6438,55,Male,120,76,143,23,86,151,141,6.4,22.6,73,162,Non-Anginal Pain,False,1.0,True,Never,3.6,0,8.3,62.1,False,5491,33.9,1 +6439,36,Male,120,65,152,51,70,186,105,5.6,25.6,81,194,Asymptomatic,False,0.4,True,Former,31.2,104,6.7,69.7,False,7178,51.1,0 +6440,46,Female,98,63,119,43,56,154,171,7.3,24.1,70,164,Asymptomatic,False,0.4,False,Current,3.5,207,8.7,42.4,True,9603,70.8,0 +6441,40,Female,134,87,185,65,76,234,133,6.3,16.1,93,154,Asymptomatic,False,0.5,False,Never,1.5,50,8.5,53.2,True,5635,51.9,0 +6442,47,Female,135,90,177,70,73,219,131,6.1,29.2,89,195,Atypical Angina,False,0.6,False,Never,17.0,163,7.0,36.6,True,8872,62.3,0 +6443,59,Male,124,77,159,62,71,176,97,5.3,16.8,55,182,Asymptomatic,False,0.4,True,Never,3.0,294,7.5,30.4,True,7879,53.9,0 +6444,48,Female,105,57,191,57,110,117,129,6.2,25.1,83,179,Non-Anginal Pain,True,0.1,False,Never,2.2,94,6.7,56.9,False,836,73.7,0 +6445,66,Male,122,79,204,45,111,268,119,5.8,23.9,82,136,Asymptomatic,False,0.4,False,Former,34.4,132,6.0,47.0,False,4744,51.9,1 +6446,44,Female,117,72,205,52,132,130,78,5.3,27.1,90,164,Asymptomatic,False,0.3,False,Never,21.1,68,7.0,58.2,False,3963,83.2,0 +6447,61,Male,129,71,157,66,70,98,86,4.9,24.2,78,158,Asymptomatic,False,0.9,False,Former,3.8,185,7.7,21.3,False,3844,84.1,0 +6448,69,Male,151,102,202,63,103,142,90,4.9,30.1,86,142,Non-Anginal Pain,False,0.5,False,Never,1.6,10,6.6,71.7,False,5956,74.6,0 +6449,45,Female,121,71,185,51,98,166,166,6.8,21.2,77,150,Asymptomatic,False,0.3,False,Never,0.5,109,6.7,49.7,True,7008,43.8,0 +6450,52,Male,114,59,130,54,51,135,125,5.9,20.5,75,169,Asymptomatic,False,0.2,False,Never,2.1,119,8.2,30.8,True,5769,46.0,0 +6451,41,Female,140,91,210,54,124,151,112,5.5,30.6,81,178,Atypical Angina,False,0.5,False,Never,4.1,139,6.5,32.6,False,6565,47.5,0 +6452,45,Male,138,82,141,39,78,163,124,6.0,29.8,81,189,Typical Angina,False,1.5,False,Never,2.9,109,5.1,55.2,False,5323,55.3,0 +6453,57,Male,130,84,214,70,107,127,86,5.7,22.8,80,172,Asymptomatic,False,1.8,False,Former,4.6,172,5.4,66.5,False,7461,55.1,0 +6454,57,Male,132,85,221,46,145,185,123,5.3,25.6,73,146,Non-Anginal Pain,True,0.5,True,Never,4.2,42,7.3,50.8,False,1570,36.7,1 +6455,65,Female,133,71,164,50,81,157,117,6.0,26.8,70,151,Typical Angina,False,2.1,False,Never,1.6,188,6.7,26.7,True,9310,62.4,1 +6456,44,Female,102,60,237,64,141,156,114,5.7,25.3,83,171,Non-Anginal Pain,False,0.0,True,Current,1.0,130,4.8,56.9,False,6832,63.1,0 +6457,57,Female,114,83,204,51,112,191,106,5.8,28.2,77,150,Asymptomatic,True,0.6,True,Never,2.0,231,6.7,54.7,True,9030,65.2,0 +6458,63,Female,133,88,195,64,116,99,131,6.2,27.3,83,172,Asymptomatic,False,1.7,True,Never,2.1,126,7.9,39.7,False,7306,47.1,0 +6459,53,Male,133,98,215,47,140,175,116,5.8,25.4,75,173,Non-Anginal Pain,False,2.3,False,Never,3.4,194,4.7,37.2,True,8328,69.8,0 +6460,57,Male,133,83,230,55,131,224,126,6.4,21.7,86,177,Asymptomatic,False,0.2,False,Never,1.6,168,7.9,40.6,True,6875,47.4,0 +6461,34,Female,114,67,156,53,72,135,137,6.1,21.2,73,196,Non-Anginal Pain,False,0.4,True,Never,5.8,20,7.0,50.8,False,4298,43.6,0 +6462,42,Female,123,94,177,67,83,136,124,5.9,24.3,82,184,Asymptomatic,False,0.7,False,Former,2.3,292,6.8,52.8,True,9318,58.7,0 +6463,69,Female,158,101,177,24,126,139,122,5.9,25.4,81,149,Typical Angina,True,0.9,False,Current,0.3,99,9.4,49.5,False,2126,61.3,1 +6464,31,Female,120,82,148,66,55,107,66,4.6,20.4,80,210,Asymptomatic,False,1.2,False,Never,6.2,216,7.1,81.8,True,7620,75.1,0 +6465,30,Male,104,69,215,65,117,183,101,5.6,30.2,88,179,Atypical Angina,False,2.4,False,Never,5.5,95,5.7,54.2,False,5650,61.9,0 +6466,55,Female,115,72,162,48,85,155,104,5.0,22.3,80,154,Non-Anginal Pain,False,1.0,True,Never,10.7,120,8.6,23.3,True,7317,48.6,0 +6467,34,Male,137,90,183,37,107,206,119,6.0,28.6,68,192,Non-Anginal Pain,False,0.4,False,Current,7.1,199,7.1,20.2,True,5967,68.3,0 +6468,73,Male,149,92,166,53,62,202,110,5.1,26.0,81,148,Typical Angina,False,1.6,False,Never,7.2,106,6.4,59.2,True,5900,50.5,0 +6469,70,Male,118,77,186,71,69,213,131,6.2,24.3,79,146,Asymptomatic,False,0.2,False,Never,3.7,182,7.0,38.3,False,6187,79.2,0 +6470,44,Male,107,50,167,42,78,208,150,7.0,23.0,92,182,Typical Angina,False,1.9,False,Never,4.2,217,8.6,37.6,False,3399,56.0,0 +6471,55,Female,126,79,205,52,112,162,94,5.1,25.9,81,174,Asymptomatic,False,0.6,False,Current,2.2,243,4.3,44.4,True,5764,86.8,0 +6472,42,Male,122,72,250,51,164,186,91,4.0,24.1,80,207,Non-Anginal Pain,False,2.1,False,Current,7.1,157,7.5,13.9,False,8111,56.7,0 +6473,28,Female,122,78,149,71,63,134,72,4.6,25.4,71,189,Asymptomatic,False,0.0,True,Former,0.5,197,7.8,45.1,True,10202,61.4,0 +6474,57,Female,126,75,192,47,110,161,121,5.1,26.0,69,162,Non-Anginal Pain,False,1.1,False,Never,9.4,181,6.3,63.5,True,8765,47.9,0 +6475,34,Female,138,92,210,44,123,174,114,6.1,26.5,77,210,Asymptomatic,False,0.9,False,Never,1.2,111,6.9,54.2,True,8928,36.6,0 +6476,62,Female,127,80,201,51,114,104,148,6.3,25.4,75,148,Non-Anginal Pain,True,0.7,True,Current,0.9,173,7.1,59.3,False,4125,59.7,1 +6477,73,Male,142,94,245,61,133,233,130,5.9,28.1,79,155,Atypical Angina,False,3.1,True,Current,5.3,156,7.9,54.1,False,3085,46.1,1 +6478,58,Male,133,77,201,55,132,77,144,6.6,17.4,73,138,Asymptomatic,False,1.8,True,Former,8.0,58,7.6,58.2,True,4098,51.0,0 +6479,73,Male,113,71,174,53,92,145,149,6.5,28.1,73,151,Non-Anginal Pain,False,0.0,False,Former,5.9,102,6.1,34.9,True,8047,60.3,0 +6480,53,Female,96,64,216,59,135,116,152,6.5,26.0,84,163,Atypical Angina,False,0.2,False,Never,4.6,0,7.0,45.3,False,8350,66.4,0 +6481,64,Male,137,93,218,42,135,207,123,6.1,31.5,90,152,Non-Anginal Pain,False,2.6,False,Never,1.6,170,7.4,35.5,False,4430,50.2,1 +6482,66,Male,138,85,231,45,135,274,139,6.1,29.5,87,151,Asymptomatic,False,0.9,False,Former,20.5,125,6.0,46.8,False,6924,40.6,1 +6483,49,Male,109,68,153,58,77,119,131,5.6,18.6,83,155,Asymptomatic,False,0.9,True,Never,2.0,196,8.2,14.4,False,6794,57.7,1 +6484,61,Male,143,92,133,26,102,38,139,6.4,34.3,84,152,Asymptomatic,False,3.0,True,Former,1.7,9,9.4,69.7,False,5824,60.7,1 +6485,56,Male,133,74,150,57,63,135,117,5.7,23.7,86,166,Non-Anginal Pain,False,0.3,True,Never,1.8,65,8.2,52.9,True,5506,65.6,0 +6486,34,Male,99,77,178,42,93,208,141,6.2,26.4,82,135,Atypical Angina,False,0.4,False,Never,1.9,91,7.6,65.4,False,1109,40.9,1 +6487,44,Male,122,81,173,57,84,138,110,6.0,27.3,80,191,Non-Anginal Pain,False,0.5,True,Former,8.8,162,6.0,45.0,True,7605,63.5,0 +6488,45,Male,158,105,211,92,92,134,114,5.9,23.5,75,178,Asymptomatic,False,0.5,True,Former,7.3,161,5.9,46.9,False,7295,69.4,0 +6489,41,Female,101,65,174,72,88,36,114,5.4,19.0,65,176,Atypical Angina,False,1.3,False,Never,0.4,204,7.1,32.9,False,8824,71.8,0 +6490,44,Female,124,68,166,31,100,209,77,4.6,28.1,97,167,Atypical Angina,False,1.0,False,Never,0.7,114,8.1,33.5,False,5125,40.2,0 +6491,70,Male,128,83,198,53,116,182,119,6.3,16.0,81,122,Atypical Angina,True,1.3,False,Never,11.8,157,7.2,25.6,False,2303,49.1,1 +6492,45,Male,133,82,205,37,155,149,111,5.7,21.8,81,198,Asymptomatic,False,0.5,False,Former,4.5,145,8.1,34.5,False,5377,58.4,0 +6493,60,Female,137,88,189,44,111,195,137,5.6,25.1,71,165,Non-Anginal Pain,False,0.4,False,Never,1.2,165,7.2,26.0,False,2254,56.1,0 +6494,76,Male,144,93,196,43,105,227,175,7.7,25.7,87,130,Atypical Angina,False,0.7,False,Former,4.6,116,6.8,41.1,False,6460,51.6,1 +6495,53,Male,140,86,190,65,88,154,161,6.8,28.3,74,159,Asymptomatic,False,2.2,True,Never,11.1,134,7.0,58.3,True,8908,51.0,0 +6496,48,Male,142,93,209,47,110,213,93,4.9,23.1,72,175,Atypical Angina,False,0.3,False,Former,2.7,97,6.3,73.9,False,9261,73.5,0 +6497,58,Male,121,74,184,49,103,175,127,6.7,24.8,74,157,Asymptomatic,False,2.1,False,Former,3.9,162,7.4,37.8,False,5421,36.2,0 +6498,31,Female,115,82,240,64,137,203,119,5.8,22.0,74,180,Asymptomatic,False,0.1,False,Current,13.0,141,6.9,66.3,False,6114,36.1,0 +6499,43,Female,128,81,180,69,82,203,149,6.6,24.0,83,185,Atypical Angina,True,2.1,True,Former,1.7,244,6.2,55.8,True,8599,52.7,0 +6500,56,Male,120,73,192,76,73,176,137,6.2,22.5,64,175,Atypical Angina,False,0.5,False,Never,1.6,168,6.0,56.7,False,5654,44.5,0 +6501,25,Female,97,65,206,70,118,130,164,6.8,23.4,69,206,Non-Anginal Pain,False,0.2,False,Never,4.8,188,7.5,43.9,True,3822,76.7,0 +6502,70,Female,142,99,239,59,137,179,103,5.1,19.3,88,144,Asymptomatic,True,2.1,False,Never,11.9,90,5.8,56.4,False,500,58.8,0 +6503,61,Male,122,72,168,46,86,213,173,7.4,32.7,97,133,Atypical Angina,False,1.8,True,Never,4.4,146,5.0,82.8,False,8045,89.6,1 +6504,71,Male,125,85,179,65,72,189,123,5.8,22.6,82,143,Atypical Angina,True,2.0,False,Never,1.5,140,6.6,42.3,True,4915,49.9,1 +6505,48,Female,139,79,155,61,65,146,124,5.5,16.4,65,162,Typical Angina,False,1.0,False,Former,4.5,234,5.6,28.8,True,6582,36.5,0 +6506,53,Female,118,80,190,62,119,98,99,4.9,16.0,78,187,Asymptomatic,False,1.5,False,Never,3.8,154,7.7,39.4,False,5157,59.8,0 +6507,66,Female,156,85,155,40,98,152,129,6.1,25.3,68,163,Typical Angina,False,0.8,False,Former,1.6,179,8.9,75.8,True,5209,57.4,0 +6508,78,Female,146,93,248,63,132,278,113,5.6,29.0,94,158,Asymptomatic,False,1.4,True,Current,17.4,104,6.0,73.7,True,3725,43.5,1 +6509,66,Female,137,84,229,51,121,191,111,6.8,29.9,88,139,Asymptomatic,True,0.9,False,Current,3.2,74,7.3,65.6,False,7273,33.8,1 +6510,61,Male,96,50,213,71,124,169,131,6.3,24.9,66,178,Asymptomatic,False,0.8,False,Former,7.5,262,6.9,36.5,True,8352,42.5,0 +6511,76,Male,127,78,188,58,110,133,165,7.1,20.6,76,166,Asymptomatic,False,0.2,True,Never,8.8,53,7.7,68.3,False,3921,71.1,0 +6512,66,Female,108,79,174,42,109,141,101,5.8,23.6,75,138,Atypical Angina,True,3.0,False,Former,0.2,105,9.1,39.6,False,6772,61.6,1 +6513,27,Female,136,82,188,82,66,165,88,5.4,23.9,91,210,Atypical Angina,False,1.0,True,Former,4.8,195,7.0,59.6,True,7715,65.4,0 +6514,58,Female,123,67,191,62,127,38,119,5.5,17.3,82,168,Asymptomatic,False,0.2,False,Former,1.4,170,8.1,60.4,True,7242,64.0,0 +6515,56,Male,133,93,147,58,61,172,118,5.6,26.5,88,193,Atypical Angina,True,0.4,False,Never,12.3,188,8.3,60.6,True,8821,61.6,0 +6516,63,Female,135,95,183,60,86,111,112,5.7,22.9,89,165,Asymptomatic,False,1.8,False,Former,2.9,24,8.6,37.6,False,2880,57.6,0 +6517,62,Male,129,81,218,39,131,231,144,7.1,28.0,66,194,Atypical Angina,False,0.4,True,Never,2.2,192,7.3,42.1,True,7942,46.5,0 +6518,51,Female,151,101,194,67,101,154,121,5.3,24.8,78,158,Non-Anginal Pain,False,0.3,False,Never,31.1,145,5.4,39.4,True,8994,72.4,0 +6519,56,Female,137,97,193,51,103,144,117,5.8,26.1,71,145,Typical Angina,True,2.2,True,Former,0.9,136,6.1,84.9,False,6296,66.7,1 +6520,42,Male,122,78,227,44,140,239,165,7.3,34.5,82,165,Non-Anginal Pain,True,2.2,False,Current,10.2,112,5.3,50.9,False,2385,57.0,1 +6521,63,Female,115,82,215,67,127,118,95,5.3,22.6,79,137,Asymptomatic,True,1.6,True,Current,3.5,147,7.1,33.3,True,4878,49.7,0 +6522,54,Male,114,74,159,51,76,127,79,5.0,22.3,88,168,Asymptomatic,False,0.9,False,Never,1.6,136,5.3,50.9,True,9948,52.6,0 +6523,53,Male,146,79,178,29,117,112,164,6.5,27.5,77,175,Asymptomatic,False,2.2,True,Never,1.8,168,7.6,50.3,True,12456,63.9,0 +6524,72,Female,118,77,184,50,96,195,84,4.8,29.9,86,157,Non-Anginal Pain,False,0.7,False,Current,4.2,74,5.5,53.2,False,4909,43.9,0 +6525,61,Male,116,78,168,68,61,204,120,5.7,26.7,79,163,Atypical Angina,True,1.0,True,Never,2.5,9,8.0,47.6,False,2376,53.9,0 +6526,64,Male,135,99,186,47,116,110,115,4.7,19.2,82,156,Asymptomatic,False,2.6,False,Former,2.2,123,7.0,58.6,False,7279,82.0,0 +6527,53,Male,107,70,169,61,67,187,121,5.8,21.1,86,169,Asymptomatic,True,0.7,False,Never,3.0,168,5.5,36.3,True,7281,49.4,0 +6528,49,Male,119,66,186,62,101,176,123,6.1,24.8,73,182,Non-Anginal Pain,False,1.1,True,Former,4.5,192,6.3,52.4,False,3598,57.0,0 +6529,56,Female,127,91,240,54,123,226,147,6.5,24.9,80,180,Atypical Angina,True,0.8,True,Never,0.8,110,6.9,39.5,False,4894,62.0,1 +6530,58,Female,113,74,159,60,90,113,136,6.0,21.5,86,179,Asymptomatic,False,0.0,False,Former,3.0,115,6.2,32.5,False,5677,63.2,0 +6531,55,Male,118,64,156,45,97,63,120,5.8,15.9,87,158,Asymptomatic,False,1.1,True,Current,2.2,284,4.8,44.6,False,5214,53.7,1 +6532,57,Male,139,91,219,48,119,241,162,7.1,26.3,75,162,Atypical Angina,False,0.8,False,Former,16.6,155,7.3,52.6,True,6361,53.7,0 +6533,61,Female,106,57,153,57,76,107,135,5.9,23.8,91,157,Typical Angina,False,0.5,True,Never,4.1,184,7.5,27.0,True,4590,65.5,0 +6534,69,Male,135,92,180,49,104,211,123,5.6,32.7,69,141,Non-Anginal Pain,False,0.6,False,Never,5.0,137,4.9,64.2,False,2988,45.5,1 +6535,40,Male,109,81,138,60,48,112,118,5.8,19.6,79,176,Atypical Angina,False,0.2,False,Never,7.1,191,7.0,20.3,True,6119,60.6,0 +6536,43,Female,113,69,207,56,119,160,167,7.1,30.3,76,180,Asymptomatic,False,3.0,True,Former,2.0,155,6.1,20.4,True,5411,60.3,0 +6537,18,Male,110,79,93,29,61,55,134,6.4,26.9,79,201,Non-Anginal Pain,False,2.8,False,Former,5.3,107,6.7,44.4,False,6470,77.5,0 +6538,56,Female,136,86,173,71,66,168,86,5.2,25.0,75,172,Non-Anginal Pain,False,1.2,False,Never,2.8,117,8.4,66.0,False,5457,63.1,0 +6539,38,Female,124,82,183,49,84,183,160,6.9,33.1,81,177,Asymptomatic,False,0.5,False,Never,3.4,195,7.0,48.6,False,4444,62.9,0 +6540,29,Male,117,72,162,61,80,112,65,4.8,19.3,73,205,Asymptomatic,False,0.4,False,Never,4.9,236,6.1,45.5,False,6233,49.9,0 +6541,52,Male,123,84,207,67,98,212,118,6.0,28.6,89,183,Non-Anginal Pain,False,0.6,False,Never,7.7,140,7.1,35.2,False,3711,47.9,0 +6542,41,Male,117,75,156,41,88,187,130,5.7,29.8,77,167,Asymptomatic,False,2.5,False,Former,5.4,132,5.4,52.9,True,4965,44.1,0 +6543,67,Female,147,97,305,82,170,219,113,5.2,28.2,80,149,Asymptomatic,False,0.2,False,Never,6.6,50,8.5,57.1,False,5203,34.7,0 +6544,70,Female,146,95,213,51,131,185,159,7.2,29.5,80,130,Asymptomatic,False,0.5,True,Never,0.2,98,8.9,57.7,False,9172,62.5,1 +6545,62,Female,148,81,257,65,140,168,138,5.8,21.5,84,108,Asymptomatic,True,0.7,False,Former,7.3,101,8.7,27.9,False,4485,70.4,1 +6546,49,Female,151,90,232,66,136,172,113,5.6,23.3,81,152,Atypical Angina,False,1.2,False,Never,0.4,126,8.7,70.2,True,4632,56.8,0 +6547,36,Female,119,80,161,35,83,235,115,5.5,27.1,86,204,Atypical Angina,False,1.4,False,Current,3.3,131,7.9,48.6,False,6758,41.5,0 +6548,42,Male,131,91,184,49,98,211,133,6.2,29.7,80,179,Non-Anginal Pain,True,0.4,False,Former,9.8,175,5.0,68.0,False,3799,85.4,0 +6549,41,Female,134,91,193,77,87,94,71,4.5,25.3,89,199,Non-Anginal Pain,False,0.8,True,Never,1.8,219,6.9,59.8,True,7412,40.2,0 +6550,49,Female,153,94,186,44,119,123,124,5.5,26.2,85,167,Atypical Angina,True,2.5,True,Never,12.0,119,6.1,51.1,True,6154,62.0,1 +6551,50,Male,104,75,208,59,104,180,141,6.2,27.6,84,181,Atypical Angina,False,1.8,False,Former,3.9,79,7.6,55.5,False,7577,49.6,0 +6552,77,Female,142,92,94,59,35,67,129,6.6,17.7,75,142,Asymptomatic,False,0.0,False,Never,0.4,85,7.5,43.8,False,5971,68.4,0 +6553,65,Male,142,92,162,53,87,141,132,5.7,24.0,77,158,Atypical Angina,False,0.4,False,Never,8.6,147,4.0,34.5,True,5608,81.3,0 +6554,78,Male,132,83,167,26,100,226,122,6.7,32.1,92,124,Atypical Angina,True,1.1,False,Current,12.4,12,7.8,71.9,False,3074,35.4,1 +6555,57,Female,123,79,196,57,121,35,106,5.3,30.7,82,158,Asymptomatic,False,1.5,False,Never,3.5,202,7.0,47.6,True,7202,73.1,0 +6556,43,Male,105,58,145,56,62,127,95,5.1,24.2,80,159,Asymptomatic,False,1.1,False,Current,12.6,170,5.5,41.3,True,10620,42.5,1 +6557,46,Male,126,84,192,49,113,155,109,5.7,22.0,74,175,Asymptomatic,False,0.0,True,Never,7.5,220,8.0,20.6,True,11246,62.9,0 +6558,54,Female,108,66,153,65,72,137,153,6.5,20.7,69,171,Non-Anginal Pain,False,1.7,False,Never,2.5,127,6.8,22.2,True,7620,50.8,0 +6559,59,Female,131,83,203,68,102,170,121,5.6,25.7,106,138,Atypical Angina,False,1.9,False,Current,2.1,130,7.6,57.4,False,5870,47.4,1 +6560,69,Male,124,92,110,43,35,202,136,5.5,22.1,99,132,Atypical Angina,True,4.0,False,Current,5.2,193,5.8,49.8,False,4140,38.7,1 +6561,46,Female,113,80,190,76,78,161,130,5.9,24.8,78,192,Asymptomatic,False,0.5,True,Never,4.9,158,8.3,84.8,False,4644,70.3,0 +6562,49,Male,127,74,219,65,116,138,66,4.4,26.0,85,183,Asymptomatic,False,0.4,False,Never,13.3,168,7.5,33.9,True,6636,66.8,0 +6563,56,Male,139,86,155,40,88,128,105,5.4,21.7,73,154,Non-Anginal Pain,False,0.9,False,Former,10.3,96,6.6,35.8,True,7192,69.3,0 +6564,71,Female,119,86,209,74,124,106,72,4.3,23.3,73,137,Asymptomatic,False,0.6,False,Never,2.1,180,8.6,22.2,False,5625,82.3,0 +6565,48,Male,121,73,223,57,146,144,126,6.4,25.8,69,180,Asymptomatic,False,2.2,True,Current,5.8,257,8.1,32.1,False,6066,53.1,1 +6566,61,Male,107,76,180,52,99,117,114,6.2,19.5,74,173,Atypical Angina,True,1.2,True,Never,6.5,148,9.4,47.3,True,10082,86.9,1 +6567,40,Female,133,81,167,57,72,138,133,6.1,22.2,76,167,Atypical Angina,False,0.2,False,Never,1.4,146,6.7,52.3,False,3485,72.4,0 +6568,59,Male,129,80,196,56,104,135,91,4.8,32.3,80,150,Asymptomatic,False,0.3,False,Never,3.2,191,7.4,54.1,False,5510,42.4,1 +6569,60,Male,142,80,177,71,84,157,126,6.7,21.9,84,170,Non-Anginal Pain,False,1.1,False,Never,1.8,130,6.6,31.1,False,4267,59.2,0 +6570,61,Male,122,82,193,55,97,173,72,4.5,17.1,83,179,Asymptomatic,False,1.6,False,Current,12.6,152,5.8,34.8,False,5631,41.4,0 +6571,71,Male,127,83,161,64,94,69,148,6.4,28.1,85,171,Atypical Angina,False,0.4,False,Never,1.7,108,5.9,50.9,True,7981,65.2,0 +6572,53,Female,112,80,216,60,118,208,126,5.5,26.4,66,167,Asymptomatic,True,0.5,False,Former,12.5,186,6.6,32.7,False,3367,38.3,1 +6573,63,Female,147,111,223,64,125,171,134,6.9,27.9,86,153,Asymptomatic,False,1.0,False,Former,8.7,74,7.5,76.8,False,6848,58.6,1 +6574,42,Female,118,77,173,55,104,112,126,5.8,25.2,70,172,Asymptomatic,False,0.3,False,Never,3.2,171,5.2,36.7,False,1904,71.8,0 +6575,39,Male,116,74,200,45,131,121,115,5.8,26.6,90,175,Asymptomatic,True,1.2,False,Former,4.8,65,6.2,47.4,True,3868,62.8,0 +6576,53,Male,140,87,195,51,115,174,60,4.1,28.2,80,163,Asymptomatic,False,1.8,False,Never,8.6,44,6.7,38.9,False,4759,62.6,0 +6577,51,Male,151,87,209,57,118,179,97,4.7,24.6,77,155,Non-Anginal Pain,False,2.9,True,Never,7.3,165,6.7,77.5,False,3954,74.7,1 +6578,76,Male,153,92,187,30,145,143,128,6.4,28.3,84,136,Non-Anginal Pain,False,2.2,False,Never,2.4,107,7.6,37.1,False,7039,29.8,1 +6579,63,Male,142,92,162,60,79,145,122,5.3,27.5,81,158,Typical Angina,False,2.0,False,Never,2.9,129,7.5,40.5,False,3551,78.3,1 +6580,72,Male,153,100,184,35,109,160,99,5.5,28.1,76,165,Typical Angina,False,0.0,False,Never,16.7,181,6.9,60.6,True,8192,36.9,0 +6581,59,Male,127,83,234,38,172,169,155,6.8,27.4,89,133,Typical Angina,True,1.8,False,Current,1.7,124,6.0,61.8,False,9242,59.0,1 +6582,65,Female,127,73,233,68,125,202,144,6.8,37.2,92,135,Asymptomatic,True,0.5,False,Never,2.6,75,7.2,54.8,False,2183,43.6,1 +6583,50,Male,135,80,219,53,129,165,148,5.9,22.4,92,160,Asymptomatic,False,0.0,True,Never,6.0,90,5.6,67.4,False,4998,53.2,0 +6584,63,Male,156,106,186,55,82,156,105,5.2,24.6,85,149,Asymptomatic,False,0.2,False,Never,12.7,137,8.9,47.9,True,7749,61.7,0 +6585,47,Female,100,70,212,67,117,56,133,6.0,21.2,61,190,Non-Anginal Pain,False,0.6,False,Never,2.0,269,7.4,45.8,True,9059,71.4,0 +6586,48,Male,132,73,123,33,70,102,109,5.5,23.1,78,192,Atypical Angina,False,1.0,True,Current,8.1,210,5.4,51.2,True,6099,50.2,0 +6587,23,Female,105,66,167,52,84,145,125,4.7,18.6,80,185,Asymptomatic,False,0.3,False,Never,6.0,116,7.9,54.2,True,9599,75.8,0 +6588,59,Male,156,90,214,56,135,107,125,6.0,24.8,80,147,Non-Anginal Pain,False,1.6,False,Former,3.4,168,6.3,65.8,False,2287,62.1,1 +6589,66,Female,154,86,171,67,89,119,114,5.2,30.4,92,156,Asymptomatic,False,0.5,False,Never,5.6,116,6.8,82.9,False,4620,48.0,0 +6590,63,Female,135,70,185,79,67,147,110,5.7,24.5,86,144,Non-Anginal Pain,False,0.1,True,Never,3.2,172,6.2,46.4,True,6042,49.7,0 +6591,57,Male,124,78,185,41,104,185,134,6.0,28.6,88,164,Non-Anginal Pain,False,0.3,False,Never,4.6,120,6.5,38.6,False,7425,51.7,0 +6592,48,Female,117,69,156,39,86,122,142,6.9,25.6,83,171,Asymptomatic,False,0.6,False,Never,0.7,213,8.6,42.1,True,11416,47.9,0 +6593,24,Female,112,74,218,76,111,137,84,4.5,21.2,82,207,Asymptomatic,False,2.4,False,Never,0.6,149,6.9,70.8,False,4368,25.2,0 +6594,39,Female,129,83,188,65,75,232,74,4.4,25.8,58,205,Asymptomatic,False,0.6,True,Former,3.6,183,5.0,53.9,True,3891,49.4,0 +6595,52,Male,109,78,169,40,97,180,106,6.2,25.9,81,167,Non-Anginal Pain,True,0.1,False,Former,2.1,105,5.4,45.2,False,3367,55.8,0 +6596,63,Female,131,69,136,54,52,129,125,6.4,19.7,81,161,Typical Angina,False,0.8,False,Never,3.5,49,8.2,55.5,False,6394,65.5,0 +6597,70,Male,138,96,200,58,120,141,122,6.4,20.8,77,169,Asymptomatic,False,3.2,False,Never,1.6,133,5.4,45.5,False,3711,49.6,0 +6598,69,Female,119,83,158,59,62,186,122,6.2,20.8,93,123,Typical Angina,True,0.9,False,Never,5.3,216,5.6,61.5,True,7355,81.5,1 +6599,45,Male,108,55,166,75,77,104,104,5.5,19.7,79,180,Atypical Angina,False,0.2,False,Never,2.7,204,8.0,44.2,False,11080,67.4,0 +6600,51,Female,137,92,187,45,120,64,100,5.2,23.2,91,185,Atypical Angina,False,0.5,False,Current,0.6,174,8.0,72.3,True,7931,44.7,0 +6601,37,Female,127,87,165,61,86,97,116,5.2,23.7,75,186,Asymptomatic,False,0.3,True,Never,3.3,161,7.1,25.9,False,5619,57.5,0 +6602,30,Female,123,75,185,54,95,95,108,5.8,25.4,79,188,Asymptomatic,False,0.7,True,Never,2.5,237,7.0,36.6,True,8030,36.3,0 +6603,43,Female,114,72,161,73,63,96,130,5.7,26.5,66,191,Asymptomatic,False,0.4,True,Former,4.0,170,8.5,47.5,False,6508,65.2,0 +6604,44,Female,121,77,204,51,122,177,130,6.0,29.2,84,205,Atypical Angina,False,0.2,False,Never,6.7,97,7.4,56.6,True,5415,38.9,0 +6605,42,Female,140,82,189,73,93,107,117,5.9,17.0,73,181,Non-Anginal Pain,False,1.4,False,Former,15.7,202,7.5,51.5,False,5156,59.2,0 +6606,64,Male,99,58,174,42,95,184,94,4.8,21.0,91,162,Asymptomatic,False,0.2,False,Current,6.1,72,8.6,22.8,False,7690,64.9,0 +6607,73,Female,139,100,215,62,115,154,118,6.1,25.5,74,160,Asymptomatic,False,1.2,True,Former,1.3,142,7.2,53.2,True,6769,55.7,0 +6608,44,Female,141,85,161,67,78,70,95,4.5,27.2,89,182,Asymptomatic,False,0.6,False,Current,3.2,272,7.3,24.9,True,9190,71.3,0 +6609,76,Male,119,78,218,58,115,218,106,5.5,19.1,80,120,Non-Anginal Pain,False,0.6,False,Never,20.5,70,4.6,39.7,False,4818,51.9,1 +6610,32,Female,124,77,138,40,69,138,67,4.1,15.0,78,192,Asymptomatic,True,0.1,False,Never,10.9,127,7.7,70.4,True,6489,41.1,0 +6611,60,Female,143,81,162,76,64,105,88,5.1,24.6,92,177,Asymptomatic,False,0.4,False,Never,4.8,124,6.8,47.8,True,6881,73.1,0 +6612,62,Female,153,98,225,65,111,227,91,5.2,22.7,76,159,Asymptomatic,False,1.5,False,Never,0.6,106,6.7,47.5,False,5765,48.3,0 +6613,36,Male,106,82,161,52,94,95,119,5.8,18.0,81,200,Atypical Angina,False,0.8,True,Never,6.7,187,6.6,16.7,True,9187,69.5,0 +6614,67,Female,150,92,236,69,134,140,118,5.7,31.4,83,162,Asymptomatic,False,1.5,False,Former,0.0,40,5.1,34.2,False,5290,68.9,0 +6615,49,Female,155,100,239,45,123,247,101,5.4,32.9,95,160,Atypical Angina,True,2.0,True,Never,1.8,109,4.8,70.1,True,5809,49.2,1 +6616,57,Female,98,63,190,66,95,118,127,6.2,15.2,68,173,Asymptomatic,True,1.2,False,Never,0.5,166,7.5,64.4,True,9095,52.5,0 +6617,69,Male,135,88,179,59,100,105,97,4.4,15.0,82,141,Asymptomatic,False,1.0,True,Never,2.6,86,7.1,64.6,False,3000,77.5,0 +6618,63,Female,137,90,204,64,114,128,92,4.8,25.9,83,156,Asymptomatic,False,0.3,False,Never,1.2,151,7.5,48.7,True,6274,73.9,0 +6619,48,Male,116,67,248,59,147,198,97,4.8,22.3,87,172,Typical Angina,True,0.1,False,Current,3.1,212,8.1,39.8,True,4428,32.8,1 +6620,53,Male,135,86,132,48,74,138,111,5.6,25.1,71,169,Asymptomatic,False,1.6,True,Never,6.1,146,8.5,60.2,True,7884,61.1,0 +6621,77,Female,138,90,205,43,123,206,172,7.4,26.8,80,125,Non-Anginal Pain,False,1.0,False,Former,0.3,66,6.0,40.4,False,5787,54.8,1 +6622,32,Male,118,70,136,57,74,100,108,5.7,22.0,71,179,Asymptomatic,False,1.5,False,Former,8.9,242,5.3,45.9,True,9896,54.7,0 +6623,66,Female,137,88,175,73,83,110,102,4.9,23.9,92,165,Non-Anginal Pain,False,0.0,True,Former,5.5,53,7.2,67.3,False,4450,63.8,0 +6624,67,Male,109,76,194,38,125,149,110,5.3,19.7,71,140,Typical Angina,False,0.9,True,Former,2.5,147,6.3,32.6,True,7369,53.0,1 +6625,79,Male,123,72,123,46,47,169,131,6.7,24.0,78,103,Typical Angina,True,0.7,False,Never,8.3,234,8.2,38.2,True,4934,58.0,1 +6626,71,Male,124,100,147,55,77,101,71,4.5,19.5,90,138,Asymptomatic,True,0.5,False,Current,9.8,62,6.7,37.8,False,4109,66.3,0 +6627,34,Female,121,83,194,58,80,264,131,5.9,28.4,95,174,Asymptomatic,False,0.4,False,Current,5.0,98,6.2,38.2,True,8380,42.3,0 +6628,62,Female,113,58,131,49,47,248,97,5.1,29.4,86,146,Atypical Angina,True,0.2,False,Former,3.2,66,7.0,43.2,False,5414,37.9,0 +6629,59,Male,114,77,228,69,124,124,118,6.2,20.8,72,183,Non-Anginal Pain,False,0.5,False,Never,1.8,225,7.1,57.2,True,8878,55.7,0 +6630,65,Female,120,73,181,49,107,178,185,7.3,26.1,101,124,Typical Angina,True,0.2,False,Never,6.4,121,6.4,100.0,True,7365,67.8,1 +6631,78,Male,142,88,198,70,95,181,132,6.7,31.1,78,129,Asymptomatic,False,2.5,True,Never,3.7,188,7.1,38.3,True,7464,82.8,1 +6632,59,Female,122,79,161,60,63,190,162,6.9,18.9,88,172,Non-Anginal Pain,True,1.9,False,Never,8.3,147,7.0,52.2,False,7699,48.6,0 +6633,52,Female,95,54,216,65,134,115,118,5.2,19.6,81,169,Non-Anginal Pain,False,0.4,False,Former,0.1,162,11.0,47.7,False,9429,82.7,0 +6634,51,Female,147,88,225,48,122,199,101,5.5,26.3,88,174,Asymptomatic,False,0.8,False,Never,13.1,45,7.6,28.7,False,3878,57.2,0 +6635,68,Male,129,76,234,72,128,168,126,6.4,21.9,93,172,Asymptomatic,False,0.5,False,Never,11.0,83,4.8,46.1,False,5533,61.8,0 +6636,40,Female,109,78,143,50,56,163,147,6.5,30.2,83,173,Non-Anginal Pain,False,1.4,False,Never,3.1,199,7.3,70.0,True,8399,56.4,0 +6637,63,Male,127,72,177,68,75,156,104,5.3,21.4,78,139,Asymptomatic,False,0.9,False,Former,5.1,103,6.9,72.4,False,6006,60.2,0 +6638,59,Male,123,68,227,76,121,255,98,4.7,23.0,85,145,Atypical Angina,True,4.0,False,Never,2.0,184,7.3,52.1,True,6700,66.2,1 +6639,31,Male,115,72,115,37,35,184,97,4.9,24.1,100,166,Non-Anginal Pain,False,0.4,False,Former,3.8,40,5.1,61.6,False,4194,51.9,0 +6640,61,Male,141,88,138,36,74,169,134,5.8,20.1,82,160,Asymptomatic,False,0.7,False,Never,7.4,38,6.8,54.0,True,3985,62.1,0 +6641,40,Male,170,95,190,22,111,238,120,6.1,35.0,91,146,Typical Angina,False,2.3,False,Former,5.1,103,8.2,76.1,False,4372,53.3,1 +6642,80,Male,144,92,187,44,104,197,158,7.1,28.2,85,131,Atypical Angina,True,3.9,False,Never,3.1,114,6.1,45.5,False,5320,89.1,1 +6643,42,Female,97,62,220,73,139,81,95,5.5,21.7,69,148,Atypical Angina,False,2.0,False,Former,1.5,228,6.5,23.9,True,9043,67.4,0 +6644,67,Female,155,103,238,75,121,171,121,5.0,21.5,81,152,Asymptomatic,False,0.2,False,Current,3.5,111,7.1,90.2,True,9569,66.2,0 +6645,51,Female,141,82,201,35,129,236,99,5.1,31.9,79,174,Atypical Angina,True,0.7,False,Never,0.5,84,8.8,71.9,False,2946,58.9,1 +6646,40,Female,97,59,180,87,94,35,124,5.9,17.4,72,180,Atypical Angina,False,0.3,True,Never,0.4,275,6.2,8.9,True,5903,72.8,0 +6647,60,Male,138,90,223,68,122,155,75,4.5,19.6,82,193,Asymptomatic,True,0.6,False,Never,3.9,219,7.3,70.4,True,10309,64.6,0 +6648,37,Female,125,79,209,75,113,136,83,4.7,23.1,97,186,Asymptomatic,True,0.7,True,Never,6.0,182,7.1,36.0,True,5748,52.4,0 +6649,51,Male,117,82,156,41,77,134,112,5.2,26.8,79,170,Typical Angina,False,2.1,False,Former,2.1,169,7.4,21.3,False,2908,61.0,0 +6650,73,Female,154,110,271,50,170,201,101,5.4,35.8,68,152,Asymptomatic,True,1.1,True,Never,7.0,46,6.4,51.9,False,1782,47.4,0 +6651,50,Female,110,70,239,57,140,225,149,6.2,27.6,87,172,Asymptomatic,False,0.7,True,Never,9.2,115,7.0,50.7,False,6288,52.0,0 +6652,83,Male,141,93,197,48,104,185,103,5.8,27.8,78,135,Asymptomatic,True,1.0,False,Never,3.0,150,6.2,50.3,True,6595,64.7,1 +6653,68,Female,135,79,216,73,104,134,138,6.4,28.1,70,137,Non-Anginal Pain,True,4.2,True,Current,4.4,198,6.2,40.2,True,6359,62.2,1 +6654,34,Male,112,74,157,46,95,123,103,5.1,21.9,77,194,Asymptomatic,False,0.9,True,Former,3.4,20,5.9,48.4,False,4424,54.4,0 +6655,83,Male,143,83,132,48,48,202,167,6.8,33.2,88,141,Asymptomatic,False,1.2,False,Former,7.6,150,7.9,53.3,False,5936,77.5,1 +6656,76,Female,166,95,231,65,114,224,112,5.9,33.5,81,169,Atypical Angina,False,0.5,False,Never,16.2,110,5.8,48.2,True,7237,55.1,0 +6657,29,Female,102,66,203,43,158,48,114,5.3,20.5,86,190,Non-Anginal Pain,True,0.3,False,Former,2.0,230,7.0,55.3,True,9686,84.8,0 +6658,50,Female,131,85,196,39,115,182,120,5.6,22.8,58,173,Non-Anginal Pain,False,0.1,False,Current,3.7,131,8.1,40.6,False,5909,69.1,0 +6659,78,Female,116,77,185,67,112,101,133,6.3,23.8,76,131,Non-Anginal Pain,False,0.8,False,Never,0.1,111,6.9,57.8,False,4656,58.5,0 +6660,53,Female,132,82,210,45,149,35,95,5.2,25.8,89,151,Typical Angina,False,1.7,False,Current,4.3,151,4.5,69.6,False,6608,43.6,1 +6661,55,Male,117,87,241,70,152,140,95,5.0,22.7,65,197,Non-Anginal Pain,False,0.5,True,Never,9.0,223,8.4,21.9,True,5460,61.1,0 +6662,42,Male,126,84,190,46,118,120,115,5.6,25.4,81,180,Atypical Angina,True,0.4,True,Former,2.2,97,8.5,31.1,False,4508,76.1,0 +6663,55,Male,140,90,178,54,99,148,132,5.9,26.4,73,162,Asymptomatic,False,0.6,False,Former,5.8,241,5.8,11.8,True,9854,79.9,0 +6664,61,Female,132,72,198,53,124,167,131,5.7,26.5,75,154,Asymptomatic,True,1.3,False,Former,0.1,147,7.1,46.5,False,2991,55.4,1 +6665,79,Female,149,92,184,77,82,115,124,6.0,29.8,81,142,Asymptomatic,False,2.2,False,Never,10.9,86,7.8,59.5,False,5718,57.5,0 +6666,45,Female,116,56,162,49,70,195,133,6.9,29.8,92,176,Non-Anginal Pain,True,0.5,True,Never,4.3,168,9.4,51.6,True,7866,56.2,0 +6667,56,Male,121,85,187,60,106,206,60,4.0,20.6,78,187,Asymptomatic,False,1.9,False,Never,32.7,253,5.3,53.6,True,7474,88.5,0 +6668,77,Female,139,85,187,60,89,216,160,7.0,27.2,95,150,Non-Anginal Pain,False,0.9,False,Former,0.9,225,6.3,48.4,False,6714,56.1,0 +6669,62,Female,113,70,185,52,99,167,117,6.4,23.5,62,168,Typical Angina,False,1.4,False,Former,6.2,171,7.0,18.1,True,8251,73.9,0 +6670,38,Female,106,71,189,82,52,278,113,5.4,22.8,73,199,Asymptomatic,False,0.1,True,Never,13.5,149,7.2,75.2,False,3388,44.8,0 +6671,65,Male,142,96,217,59,111,246,135,6.4,27.4,86,157,Non-Anginal Pain,True,0.7,False,Never,2.3,101,6.4,62.4,False,3590,78.6,0 +6672,60,Male,125,83,163,60,110,69,113,4.9,20.7,94,156,Typical Angina,True,1.5,False,Former,8.4,96,7.2,56.4,False,4044,74.5,1 +6673,32,Male,124,84,175,38,127,116,122,6.0,29.3,71,210,Asymptomatic,False,1.1,True,Current,2.1,108,7.0,59.5,True,4829,53.7,0 +6674,73,Female,132,81,187,58,101,120,121,6.2,21.2,72,153,Non-Anginal Pain,False,0.4,False,Never,1.2,152,7.1,45.4,False,3176,75.5,0 +6675,37,Male,137,97,138,70,50,84,106,5.5,24.6,85,198,Typical Angina,False,0.2,False,Former,6.0,166,7.6,59.3,True,9375,71.6,0 +6676,70,Male,146,89,202,66,88,216,137,6.5,28.2,83,165,Asymptomatic,True,2.5,False,Never,23.3,139,6.0,70.1,False,6714,32.5,1 +6677,58,Male,137,90,164,70,67,81,152,6.9,19.9,86,154,Atypical Angina,False,2.3,False,Never,2.1,80,6.6,33.2,False,4060,79.2,0 +6678,63,Female,114,72,248,67,151,167,124,6.4,24.6,73,130,Typical Angina,False,1.5,True,Current,4.8,144,8.0,11.7,True,8575,41.7,1 +6679,38,Male,130,88,191,77,92,139,87,4.7,21.7,72,190,Typical Angina,False,0.3,True,Never,6.1,166,8.0,34.6,True,10502,81.3,0 +6680,45,Male,121,79,193,48,102,187,117,5.6,22.0,97,188,Asymptomatic,False,0.5,True,Never,1.7,78,7.7,72.8,False,3678,47.4,0 +6681,56,Male,139,89,200,61,87,215,127,6.2,29.9,86,184,Atypical Angina,False,0.2,False,Never,1.6,209,6.6,1.5,True,6669,77.7,0 +6682,46,Male,106,68,168,68,81,90,115,5.7,21.7,80,167,Non-Anginal Pain,False,0.3,False,Current,10.7,284,7.0,43.2,True,10228,72.5,0 +6683,40,Male,107,57,197,45,122,146,111,5.5,27.0,87,167,Asymptomatic,True,4.8,False,Never,3.8,130,6.8,39.8,False,6704,75.4,1 +6684,48,Male,108,76,172,62,85,160,128,5.7,16.3,72,186,Atypical Angina,False,1.0,True,Former,1.7,191,8.0,66.1,False,6727,65.8,0 +6685,42,Female,115,82,238,37,167,196,124,5.9,24.8,77,183,Atypical Angina,False,2.2,True,Current,5.2,134,7.7,51.2,False,6692,54.1,1 +6686,56,Female,139,85,187,66,100,114,130,5.9,21.4,77,175,Non-Anginal Pain,False,0.3,False,Never,2.8,108,5.6,41.2,True,7045,61.3,0 +6687,44,Male,125,74,224,58,104,241,110,5.7,31.3,69,172,Atypical Angina,False,0.5,False,Former,18.2,237,6.8,44.0,False,4822,57.5,0 +6688,18,Female,114,71,223,55,124,224,127,6.4,31.8,99,210,Asymptomatic,False,0.6,False,Former,5.5,127,6.4,45.7,False,4401,62.2,0 +6689,77,Female,147,91,178,42,106,89,105,5.5,23.4,96,122,Asymptomatic,False,0.3,False,Current,0.5,17,7.3,54.6,False,3093,33.0,1 +6690,54,Female,107,68,197,58,116,138,109,6.0,28.1,80,148,Atypical Angina,False,0.8,False,Current,1.7,162,7.2,29.6,True,4631,64.0,1 +6691,62,Female,125,67,157,63,81,142,113,5.6,19.3,63,124,Typical Angina,True,3.4,False,Never,2.7,143,8.1,26.8,False,4866,45.6,1 +6692,27,Male,121,73,111,47,35,176,137,6.5,25.1,84,183,Non-Anginal Pain,False,0.3,True,Former,2.8,261,7.2,50.9,True,6826,84.6,0 +6693,39,Female,114,71,181,57,104,119,134,5.9,24.0,66,172,Non-Anginal Pain,False,0.1,True,Never,4.0,237,8.5,52.1,True,7108,84.3,0 +6694,54,Female,130,86,230,51,138,186,135,6.2,26.3,92,147,Typical Angina,False,1.3,True,Never,19.4,116,6.7,42.8,False,6320,67.5,1 +6695,84,Female,124,69,229,85,98,228,131,5.6,19.5,104,126,Asymptomatic,True,0.0,False,Never,26.7,92,6.6,65.0,False,3569,40.0,1 +6696,59,Male,133,79,150,54,78,89,113,5.7,23.6,78,145,Atypical Angina,True,1.5,False,Never,2.5,100,7.3,59.9,True,3911,100.0,1 +6697,48,Female,130,94,151,43,84,73,100,4.9,18.0,96,159,Typical Angina,False,1.6,False,Never,2.4,19,4.7,54.3,False,7995,49.6,1 +6698,56,Female,119,84,222,56,141,108,121,5.9,22.7,80,165,Atypical Angina,True,0.1,True,Current,2.3,156,6.8,38.6,False,8281,50.5,1 +6699,34,Male,125,86,198,65,88,192,115,5.4,25.2,87,203,Asymptomatic,False,0.4,False,Never,4.9,117,8.1,63.0,False,5339,40.3,0 +6700,39,Female,105,59,217,71,94,190,118,5.9,23.2,74,186,Asymptomatic,False,0.6,False,Never,6.2,294,8.6,26.4,True,8551,61.9,0 +6701,65,Male,120,71,209,40,134,119,105,5.3,21.8,97,170,Asymptomatic,False,0.3,False,Former,2.8,213,6.4,38.8,True,6627,87.3,0 +6702,55,Female,108,67,219,56,122,165,122,6.0,30.1,85,153,Asymptomatic,False,2.8,False,Former,2.5,53,8.2,23.8,True,9975,40.8,1 +6703,57,Male,115,61,155,48,94,110,150,6.5,31.3,95,156,Non-Anginal Pain,True,0.2,False,Former,1.5,96,9.3,68.6,True,10028,50.4,1 +6704,70,Female,133,74,164,30,98,196,119,6.3,24.9,84,149,Asymptomatic,False,0.4,True,Never,8.3,137,7.5,45.9,True,6089,45.9,0 +6705,57,Male,121,66,189,59,105,125,115,5.9,25.4,90,156,Non-Anginal Pain,False,0.3,False,Never,1.5,111,6.9,61.9,False,9072,62.9,0 +6706,33,Male,143,84,181,28,106,138,102,5.7,35.0,86,203,Non-Anginal Pain,False,0.6,False,Former,2.3,86,6.5,50.0,True,9200,55.1,0 +6707,76,Female,142,82,185,39,132,117,149,6.5,29.6,89,144,Asymptomatic,False,0.2,False,Never,1.0,143,7.7,42.2,True,8374,68.8,0 +6708,63,Male,144,86,163,55,95,138,121,6.2,25.5,88,157,Asymptomatic,False,0.8,False,Never,4.5,108,4.9,33.7,False,6654,65.3,0 +6709,68,Male,114,68,188,55,110,186,112,5.5,24.5,90,124,Typical Angina,False,1.7,False,Current,1.6,43,7.9,76.6,False,3281,35.3,1 +6710,46,Male,120,81,182,48,90,234,116,6.1,30.6,86,172,Asymptomatic,False,1.1,False,Never,1.6,123,8.9,32.8,False,2279,68.6,0 +6711,60,Male,133,92,230,54,118,316,98,5.4,32.1,103,142,Asymptomatic,True,1.3,True,Never,1.7,113,7.3,39.8,False,8495,65.2,1 +6712,75,Female,135,77,183,42,99,227,138,5.8,23.3,61,154,Asymptomatic,False,1.6,False,Never,4.9,227,7.5,36.2,False,6177,51.4,0 +6713,46,Female,143,96,166,48,89,171,117,5.6,23.4,94,167,Non-Anginal Pain,False,1.0,False,Never,22.8,95,5.1,79.4,False,2820,63.9,0 +6714,65,Male,144,95,165,58,67,241,95,5.3,24.4,79,148,Atypical Angina,False,1.1,False,Former,5.5,107,7.5,77.8,False,5258,59.9,1 +6715,73,Female,124,73,158,69,63,142,116,5.3,19.9,86,144,Asymptomatic,False,0.9,False,Never,8.7,77,5.7,24.2,False,7868,65.5,0 +6716,80,Female,142,88,210,46,140,96,149,6.9,22.4,75,129,Asymptomatic,True,0.9,True,Never,0.1,89,7.8,41.2,True,6041,64.6,1 +6717,38,Female,124,66,153,59,74,124,88,4.8,24.7,85,183,Atypical Angina,False,1.2,False,Never,1.0,93,8.4,51.9,True,7151,53.8,0 +6718,39,Female,140,89,195,56,118,92,100,5.5,21.0,97,172,Asymptomatic,False,2.3,False,Never,2.6,180,7.6,66.7,False,5274,74.3,0 +6719,43,Female,130,95,190,46,97,237,78,4.9,29.6,78,187,Asymptomatic,False,1.0,False,Never,7.5,141,9.1,19.3,False,7160,61.1,0 +6720,54,Female,149,96,236,41,154,179,140,6.4,32.4,89,167,Atypical Angina,True,1.0,False,Current,4.6,81,6.9,51.3,False,5234,59.7,1 +6721,52,Female,127,77,116,52,53,113,153,6.6,26.3,91,170,Atypical Angina,True,2.0,True,Never,3.3,87,7.4,37.4,True,9491,65.2,0 +6722,56,Female,124,75,191,71,95,121,86,4.3,21.7,74,180,Atypical Angina,False,0.1,False,Never,5.9,238,6.7,63.0,False,7709,73.0,0 +6723,61,Female,118,79,184,72,98,97,119,5.7,16.1,76,160,Asymptomatic,False,0.7,False,Never,1.2,216,4.9,40.2,True,8079,64.9,0 +6724,44,Female,113,77,169,54,80,191,95,5.1,26.5,85,171,Asymptomatic,False,0.0,False,Never,4.3,189,7.5,63.1,False,6656,41.5,0 +6725,62,Female,136,83,201,57,123,131,123,6.2,26.2,75,160,Non-Anginal Pain,False,2.3,False,Never,0.4,131,6.0,59.1,False,2135,65.1,0 +6726,39,Female,114,71,160,52,82,140,154,6.0,23.7,97,200,Non-Anginal Pain,True,0.1,False,Never,4.9,98,6.8,70.7,False,5106,75.2,0 +6727,51,Male,132,78,138,47,63,108,73,4.9,20.8,73,171,Non-Anginal Pain,False,0.1,False,Never,13.6,205,8.2,65.4,True,7867,50.7,0 +6728,34,Male,119,79,138,49,60,168,127,5.8,22.3,95,175,Atypical Angina,False,0.7,True,Never,2.8,109,7.7,46.0,False,500,44.7,0 +6729,77,Male,112,73,203,61,107,172,138,6.8,24.1,73,138,Non-Anginal Pain,False,0.0,False,Never,9.2,111,5.1,49.2,False,3506,59.1,0 +6730,18,Male,109,71,228,51,133,175,97,5.0,24.9,69,210,Atypical Angina,False,1.7,True,Never,5.3,135,9.9,31.4,False,8407,50.1,0 +6731,46,Male,127,86,168,59,81,167,111,5.8,23.5,86,157,Typical Angina,False,2.1,False,Former,1.7,59,7.0,42.6,False,4844,40.2,1 +6732,34,Female,118,76,159,50,66,177,113,5.1,29.0,84,193,Asymptomatic,True,0.7,False,Never,3.4,165,8.8,8.9,True,8426,68.1,0 +6733,62,Female,156,85,219,58,115,255,117,5.8,35.7,85,150,Atypical Angina,False,1.0,False,Former,8.1,124,5.9,43.1,False,5463,66.7,1 +6734,63,Female,135,97,167,64,79,121,90,4.4,18.4,72,161,Non-Anginal Pain,False,2.2,False,Never,17.3,150,7.5,9.0,True,6515,62.6,0 +6735,51,Male,126,81,132,47,60,179,131,6.2,30.9,93,165,Asymptomatic,True,0.7,True,Former,8.2,92,7.5,70.0,False,2762,58.5,1 +6736,39,Female,125,77,210,49,91,249,132,6.3,23.6,86,185,Asymptomatic,False,0.3,False,Never,13.4,204,10.0,39.7,False,2788,63.0,0 +6737,34,Female,100,56,142,62,69,120,75,4.9,21.9,72,180,Asymptomatic,False,1.3,True,Never,4.9,167,7.3,34.7,True,5266,83.8,0 +6738,43,Male,105,63,192,65,79,198,134,5.7,29.1,69,168,Typical Angina,False,2.5,False,Former,3.9,78,4.8,64.1,False,5877,59.4,0 +6739,54,Male,121,72,161,57,99,115,96,5.5,24.7,83,186,Non-Anginal Pain,False,0.2,False,Never,2.2,220,6.3,34.4,False,3943,71.4,0 +6740,71,Female,121,68,186,53,107,90,143,6.0,23.0,85,148,Typical Angina,True,2.6,False,Current,6.4,123,7.4,35.3,False,4955,60.8,1 +6741,60,Female,141,101,223,27,146,167,142,6.5,28.1,87,134,Atypical Angina,False,0.6,False,Never,1.6,52,6.7,38.3,False,4686,59.9,1 +6742,69,Female,127,90,199,50,118,187,121,6.2,25.8,87,173,Asymptomatic,False,0.1,False,Never,8.3,95,6.1,49.9,True,8691,67.5,0 +6743,53,Male,120,66,146,65,62,139,84,5.0,20.1,69,168,Asymptomatic,False,0.3,False,Never,2.4,179,5.7,53.3,False,7386,73.3,0 +6744,53,Male,120,71,197,59,110,150,136,6.3,29.5,74,146,Atypical Angina,False,2.2,True,Never,2.3,96,7.6,74.1,False,6010,47.8,1 +6745,59,Female,116,76,197,54,122,71,137,6.0,23.4,74,174,Asymptomatic,False,1.1,False,Former,2.5,116,6.4,49.4,False,4359,57.8,0 +6746,58,Female,143,90,197,62,102,159,115,5.0,23.4,95,137,Asymptomatic,False,3.0,False,Current,6.6,138,6.3,31.2,True,7506,23.9,1 +6747,45,Female,133,79,171,70,58,141,136,6.8,22.5,77,178,Atypical Angina,True,0.6,True,Never,10.1,96,6.5,28.6,True,8004,64.7,0 +6748,64,Female,139,80,215,57,100,359,120,5.9,28.6,91,152,Non-Anginal Pain,True,2.4,False,Never,43.3,139,5.2,69.2,True,7256,64.4,1 +6749,59,Male,128,79,173,48,83,150,103,5.5,18.8,81,161,Atypical Angina,False,1.1,False,Never,10.2,96,6.2,31.9,False,5695,89.0,0 +6750,46,Male,134,103,172,53,93,110,118,6.0,25.3,74,169,Non-Anginal Pain,False,2.6,False,Current,3.1,151,6.8,65.6,False,6919,67.5,0 +6751,62,Male,146,96,227,72,125,160,180,7.6,24.7,71,156,Asymptomatic,True,0.9,False,Former,3.9,109,6.8,60.0,False,5000,66.9,1 +6752,47,Female,123,75,217,55,123,151,109,5.2,26.8,74,170,Asymptomatic,False,0.1,False,Current,4.2,111,5.9,18.0,True,6511,36.0,0 +6753,52,Male,158,93,227,50,147,154,121,5.4,30.0,83,157,Asymptomatic,False,0.1,False,Former,2.5,124,7.3,41.1,False,5743,33.9,1 +6754,48,Female,136,89,178,53,77,183,94,5.0,24.6,85,177,Atypical Angina,True,0.4,False,Current,1.2,108,8.3,61.0,True,8303,63.9,0 +6755,55,Male,129,78,185,54,92,99,136,6.3,32.7,79,170,Non-Anginal Pain,False,0.2,False,Never,1.7,204,9.2,53.3,False,3532,81.8,0 +6756,66,Female,130,77,163,68,70,115,111,5.5,21.6,87,153,Asymptomatic,False,0.3,False,Former,5.9,136,7.8,36.3,False,5090,69.9,0 +6757,37,Male,131,80,194,55,111,129,122,5.8,20.3,74,203,Atypical Angina,False,2.7,False,Former,8.7,244,6.2,51.8,True,5764,76.5,0 +6758,60,Male,141,97,176,50,112,107,130,6.3,25.0,83,150,Non-Anginal Pain,False,0.2,False,Never,5.4,117,4.4,56.5,False,5025,42.4,0 +6759,51,Male,122,71,129,47,81,93,135,6.2,20.1,81,188,Asymptomatic,True,0.8,False,Former,1.9,132,6.5,77.0,False,4612,86.0,0 +6760,45,Female,104,71,173,76,69,95,140,6.1,25.2,72,204,Asymptomatic,False,0.8,False,Never,2.5,181,6.3,42.0,True,9404,70.1,0 +6761,38,Male,137,94,205,70,96,205,113,5.5,27.5,87,192,Atypical Angina,False,0.9,False,Never,5.5,223,6.0,53.5,False,7397,68.5,0 +6762,63,Male,138,94,195,36,158,35,139,6.7,28.6,91,125,Asymptomatic,True,0.6,True,Current,2.3,88,6.6,42.9,True,8588,45.7,1 +6763,50,Male,152,102,202,54,116,128,98,5.1,27.3,81,180,Asymptomatic,False,1.7,False,Never,4.0,160,7.9,45.3,False,8255,94.6,0 +6764,58,Male,136,94,194,61,90,163,87,5.0,21.0,79,143,Asymptomatic,False,1.6,False,Never,1.8,0,6.6,89.3,False,2016,72.6,0 +6765,59,Female,118,80,251,67,150,110,159,6.8,20.6,70,182,Non-Anginal Pain,False,0.8,False,Never,0.4,174,7.0,22.5,True,7803,58.5,0 +6766,75,Female,131,88,200,62,123,118,145,6.3,20.8,84,151,Asymptomatic,True,2.3,False,Former,5.2,116,7.3,58.2,True,5214,65.0,0 +6767,74,Female,151,108,153,55,75,144,94,5.1,32.6,86,127,Atypical Angina,False,1.1,True,Never,12.0,31,6.8,71.1,False,4820,43.3,1 +6768,67,Female,105,63,211,61,128,133,116,5.5,22.8,85,136,Non-Anginal Pain,True,0.3,False,Never,1.6,82,6.1,50.5,False,2474,55.1,1 +6769,67,Male,136,86,233,58,122,216,140,6.5,28.7,77,127,Atypical Angina,False,1.5,False,Never,13.2,93,7.5,52.3,False,5745,52.7,1 +6770,84,Male,145,91,171,46,97,115,107,5.3,29.0,99,115,Atypical Angina,True,1.3,False,Former,6.9,18,7.4,57.7,False,5581,66.2,1 +6771,60,Female,120,77,183,54,96,154,106,5.8,25.1,81,164,Asymptomatic,False,2.0,False,Never,1.1,248,7.2,49.4,True,6262,63.3,0 +6772,64,Male,146,88,225,58,132,131,135,6.0,19.8,95,134,Asymptomatic,False,1.9,True,Current,10.5,96,6.3,51.1,True,5312,64.8,1 +6773,63,Male,139,94,218,42,124,158,98,5.4,30.0,90,154,Atypical Angina,True,2.1,False,Current,2.9,187,7.2,61.4,True,8166,82.5,1 +6774,47,Male,134,89,206,50,128,114,109,5.9,28.4,71,177,Atypical Angina,False,0.7,False,Current,7.4,207,6.1,61.6,False,5588,60.7,0 +6775,56,Female,120,80,172,50,101,100,141,6.8,22.8,76,185,Non-Anginal Pain,False,0.3,False,Current,1.7,197,6.0,42.5,False,5247,50.3,0 +6776,57,Female,148,96,154,49,85,121,103,5.8,20.9,77,144,Asymptomatic,False,1.1,True,Never,3.5,3,7.5,41.4,True,7846,53.8,1 +6777,58,Female,113,72,171,55,91,168,119,6.0,24.5,88,161,Asymptomatic,False,0.8,False,Never,3.7,81,5.4,40.7,False,4193,53.9,0 +6778,58,Male,133,96,214,46,145,114,122,5.5,20.8,84,149,Asymptomatic,True,1.1,False,Former,7.6,35,6.3,32.4,False,5179,38.4,1 +6779,54,Female,120,69,214,49,119,204,70,4.6,23.8,79,174,Atypical Angina,False,0.7,True,Current,8.5,145,7.4,66.2,False,1874,64.2,0 +6780,65,Male,127,81,142,62,57,134,155,6.8,25.4,88,174,Asymptomatic,False,0.0,False,Former,1.7,112,6.6,55.1,False,4181,85.0,0 +6781,40,Male,133,86,171,61,79,180,98,4.9,23.2,67,171,Non-Anginal Pain,False,0.4,False,Never,7.3,276,8.4,43.3,True,7045,66.1,0 +6782,61,Male,148,88,182,37,115,203,107,5.0,29.8,74,167,Atypical Angina,True,0.9,True,Former,5.7,197,8.2,42.8,True,4308,48.6,1 +6783,45,Male,103,71,169,71,76,129,113,5.9,29.3,83,183,Asymptomatic,False,2.3,False,Never,2.5,169,8.0,0.8,True,7725,69.0,0 +6784,28,Female,130,79,227,66,104,212,116,5.1,28.9,90,193,Atypical Angina,False,0.1,False,Former,1.9,192,7.6,53.0,True,6043,34.4,0 +6785,36,Male,150,107,227,45,135,140,79,4.3,22.9,83,186,Typical Angina,False,0.8,True,Never,8.6,142,6.4,62.3,False,7463,84.6,0 +6786,54,Male,126,76,209,57,102,182,103,5.3,26.1,69,167,Asymptomatic,False,0.1,False,Current,3.3,211,7.7,44.0,False,5523,64.9,0 +6787,64,Male,147,102,187,73,87,127,139,6.8,27.1,80,117,Non-Anginal Pain,False,1.9,False,Never,3.9,125,7.6,45.2,False,7403,47.6,1 +6788,48,Female,135,78,207,50,111,225,100,5.0,28.7,71,177,Asymptomatic,False,0.7,True,Never,6.8,120,7.8,46.1,True,7865,72.0,0 +6789,53,Male,129,71,148,61,40,236,171,7.1,27.1,74,182,Typical Angina,False,0.4,False,Former,11.0,155,7.5,45.1,True,8844,67.1,0 +6790,61,Male,143,74,235,58,132,157,121,5.7,27.6,82,143,Asymptomatic,True,0.3,False,Never,1.8,0,6.4,52.5,False,2119,32.1,1 +6791,50,Female,125,76,236,54,142,211,114,6.0,25.5,80,168,Asymptomatic,True,4.4,True,Former,10.6,186,9.1,33.0,False,7876,61.9,1 +6792,63,Female,136,77,184,49,108,133,147,6.2,29.7,98,163,Asymptomatic,True,0.2,False,Former,0.3,136,7.8,48.2,False,8109,62.1,0 +6793,73,Male,127,73,197,50,113,193,113,5.6,30.5,86,124,Non-Anginal Pain,True,2.8,False,Never,9.7,84,8.8,59.2,False,7007,44.7,1 +6794,70,Male,136,88,185,47,107,173,117,5.5,29.1,94,131,Asymptomatic,True,0.6,False,Current,2.7,82,6.5,73.6,False,5469,55.0,1 +6795,45,Male,111,77,180,53,115,93,92,5.3,16.8,90,184,Asymptomatic,False,0.9,False,Never,1.9,47,7.2,44.9,False,1860,59.5,0 +6796,41,Male,131,75,118,55,44,107,119,5.7,28.5,63,157,Non-Anginal Pain,False,0.6,True,Never,9.3,244,6.4,50.4,False,9229,92.1,0 +6797,80,Male,122,91,168,60,95,107,145,6.9,20.8,71,135,Atypical Angina,False,1.1,False,Former,17.1,172,7.3,19.5,False,563,58.9,0 +6798,71,Female,139,87,198,46,138,101,161,6.6,26.1,85,148,Asymptomatic,False,0.0,False,Former,7.9,34,7.4,50.3,True,8613,61.3,0 +6799,74,Male,138,90,143,60,69,99,147,6.1,26.0,79,157,Non-Anginal Pain,False,0.1,False,Former,2.6,223,6.2,11.8,True,8469,87.1,0 +6800,59,Female,141,89,228,37,137,279,134,5.9,33.8,81,154,Typical Angina,False,0.3,False,Never,6.0,62,8.4,53.4,False,6668,65.5,0 +6801,48,Male,125,80,154,43,80,121,78,4.0,21.8,79,178,Asymptomatic,True,0.6,True,Never,9.1,85,6.4,48.4,False,6492,82.2,0 +6802,65,Male,120,77,240,62,124,281,111,5.4,17.9,89,167,Asymptomatic,False,0.9,True,Never,2.1,223,7.4,24.2,True,9358,52.2,0 +6803,41,Female,116,63,188,59,97,139,116,5.6,19.0,66,202,Asymptomatic,False,1.4,False,Never,1.0,233,4.6,59.3,True,8722,75.9,0 +6804,52,Male,110,57,187,58,97,98,96,5.1,15.0,80,180,Non-Anginal Pain,False,1.6,False,Never,10.5,319,7.2,36.6,True,6619,46.9,0 +6805,63,Female,110,69,145,54,63,144,72,4.4,28.5,65,176,Atypical Angina,False,0.6,False,Never,0.5,215,8.6,14.8,True,6974,98.4,0 +6806,58,Male,121,79,201,48,102,175,115,5.5,18.9,73,183,Atypical Angina,False,0.3,False,Current,2.0,241,7.4,28.9,False,7269,56.4,0 +6807,45,Female,135,88,250,91,99,190,143,6.2,18.1,86,180,Asymptomatic,False,2.0,False,Never,2.4,151,7.5,60.2,False,7139,51.9,0 +6808,62,Male,137,88,178,59,105,128,89,4.7,20.8,75,135,Atypical Angina,False,0.9,False,Never,8.3,182,6.9,67.4,True,8518,51.3,1 +6809,52,Male,130,87,246,31,166,238,168,7.0,33.8,74,166,Non-Anginal Pain,False,0.7,False,Current,3.5,56,9.0,61.5,False,4054,29.5,0 +6810,65,Male,145,91,181,31,106,233,82,4.8,28.1,84,135,Non-Anginal Pain,True,0.2,True,Current,2.7,86,6.4,40.4,False,4858,36.2,1 +6811,52,Female,129,76,237,54,130,225,112,5.2,24.4,77,201,Non-Anginal Pain,False,0.0,True,Never,12.8,296,6.0,58.7,True,6665,58.2,0 +6812,54,Female,111,65,182,47,109,135,120,5.2,19.8,80,167,Asymptomatic,False,1.1,True,Current,1.0,124,5.7,57.0,True,7244,68.5,0 +6813,42,Female,102,54,185,36,112,227,126,6.4,31.6,82,200,Non-Anginal Pain,False,1.0,False,Never,1.4,139,6.2,56.1,False,5538,58.7,0 +6814,80,Female,126,83,236,70,143,92,119,6.0,23.1,76,129,Non-Anginal Pain,False,0.2,False,Former,0.1,142,6.4,53.3,False,6350,73.3,0 +6815,76,Male,119,68,219,52,151,124,112,5.1,17.5,86,130,Atypical Angina,False,0.2,False,Never,6.1,165,10.5,63.2,True,7071,42.3,1 +6816,45,Male,151,84,171,64,81,163,145,5.7,24.3,83,169,Typical Angina,False,1.9,False,Never,1.5,167,7.4,57.3,True,7121,64.4,0 +6817,49,Female,130,87,188,43,104,201,123,5.5,25.5,79,170,Asymptomatic,True,1.1,False,Current,9.1,108,9.1,46.9,True,7900,59.0,0 +6818,71,Female,116,84,205,59,120,127,116,5.6,19.6,96,151,Non-Anginal Pain,False,0.3,True,Never,1.4,117,8.3,49.1,False,8272,91.7,0 +6819,41,Male,102,60,209,50,129,156,136,6.0,27.3,83,152,Asymptomatic,False,2.0,False,Former,4.2,93,5.4,52.4,False,813,55.0,1 +6820,69,Male,117,79,191,54,96,202,95,5.2,24.3,83,155,Non-Anginal Pain,False,0.4,True,Never,11.8,112,5.8,49.2,False,2838,76.6,0 +6821,66,Female,133,76,182,67,72,214,118,6.0,24.7,87,137,Typical Angina,True,0.8,False,Former,6.1,24,8.1,47.9,False,4767,53.0,1 +6822,50,Male,129,76,168,40,75,262,134,6.6,28.3,78,151,Asymptomatic,True,0.2,False,Former,13.7,78,7.2,43.8,True,5397,39.2,1 +6823,70,Female,139,97,236,49,143,157,78,4.3,23.3,94,147,Atypical Angina,False,2.0,False,Current,0.9,109,6.8,90.9,True,6657,34.0,1 +6824,60,Male,127,86,195,48,110,162,158,6.9,28.9,99,161,Atypical Angina,False,0.3,False,Never,8.0,60,5.6,54.2,False,4891,49.0,0 +6825,58,Female,147,99,131,64,54,99,129,6.0,18.7,66,167,Atypical Angina,False,1.9,False,Former,7.2,141,6.1,52.4,False,3771,48.4,0 +6826,59,Female,132,83,164,38,92,202,164,7.1,29.9,77,142,Typical Angina,True,0.7,False,Never,3.5,65,10.1,34.4,False,3047,45.4,1 +6827,59,Male,91,60,209,62,106,147,79,5.4,15.0,81,164,Non-Anginal Pain,False,0.1,True,Never,4.3,86,4.1,72.5,False,2805,77.6,0 +6828,41,Female,133,83,212,62,114,214,121,5.5,31.0,95,175,Typical Angina,False,0.7,False,Never,1.9,197,7.1,19.8,False,7341,53.1,0 +6829,56,Female,136,77,249,79,132,223,132,6.3,32.8,88,148,Asymptomatic,False,0.8,True,Former,10.9,128,7.4,54.4,True,5575,57.4,1 +6830,53,Male,131,72,218,46,123,252,147,6.2,32.5,80,159,Asymptomatic,False,0.4,False,Never,1.7,78,8.6,67.7,True,6548,83.7,1 +6831,52,Male,121,77,234,63,143,109,83,5.0,31.9,68,171,Asymptomatic,False,0.3,False,Never,2.2,117,5.2,61.7,False,3204,52.8,0 +6832,61,Female,110,80,212,50,129,212,109,5.7,27.0,81,158,Atypical Angina,False,1.1,False,Never,5.2,132,5.8,24.1,True,7045,37.6,0 +6833,51,Male,131,77,169,45,89,182,116,5.4,23.8,74,140,Typical Angina,True,0.8,True,Never,11.3,87,6.1,39.1,False,6388,40.1,1 +6834,58,Female,114,70,93,24,55,47,92,5.6,19.9,65,181,Asymptomatic,False,0.0,False,Former,1.3,72,8.2,64.4,False,5155,60.8,0 +6835,63,Male,144,90,135,64,40,184,111,5.4,26.1,83,142,Typical Angina,False,0.1,False,Never,2.8,172,6.3,52.1,False,6054,59.8,1 +6836,46,Female,120,86,158,54,66,150,121,6.0,30.4,93,183,Asymptomatic,False,1.0,True,Former,1.6,154,7.6,36.0,True,8427,67.6,0 +6837,54,Male,115,81,196,59,105,115,100,5.3,19.3,84,168,Asymptomatic,False,0.8,False,Never,9.2,176,8.0,59.4,False,5831,61.7,0 +6838,43,Male,110,74,216,40,137,118,155,7.3,23.8,85,184,Asymptomatic,False,0.8,False,Never,5.7,245,7.3,21.5,True,6707,51.2,1 +6839,52,Male,112,69,124,20,84,110,109,5.5,29.1,74,154,Atypical Angina,False,1.0,True,Never,1.7,188,8.2,69.2,True,7846,59.9,1 +6840,65,Female,151,94,160,53,86,190,114,6.2,22.7,73,175,Asymptomatic,False,0.6,False,Never,1.2,198,5.7,43.2,True,8615,65.4,0 +6841,61,Male,119,70,188,45,105,191,121,6.1,34.3,78,168,Non-Anginal Pain,False,2.2,False,Never,9.3,114,7.1,50.6,False,7016,74.4,0 +6842,32,Male,120,85,165,47,83,130,115,5.6,26.5,77,203,Typical Angina,False,1.1,False,Never,10.5,67,7.1,34.4,True,10055,76.0,0 +6843,43,Male,108,70,203,68,121,109,154,6.2,20.8,70,198,Asymptomatic,False,0.2,False,Never,4.0,312,8.4,29.8,True,9750,78.2,0 +6844,60,Male,123,76,173,38,119,112,108,5.6,22.4,80,146,Asymptomatic,True,1.4,True,Former,17.9,140,9.2,64.2,False,3791,51.6,1 +6845,20,Male,123,82,172,63,81,151,124,5.9,21.3,70,202,Non-Anginal Pain,False,3.0,False,Never,3.2,113,6.6,56.6,True,7505,51.6,0 +6846,49,Female,161,99,163,47,85,120,157,6.9,27.6,90,177,Non-Anginal Pain,False,0.2,False,Never,7.8,169,6.5,87.0,True,4718,92.4,0 +6847,40,Male,114,69,214,55,132,167,103,5.5,27.9,84,191,Non-Anginal Pain,True,0.6,False,Never,3.9,169,5.9,60.2,True,9025,61.5,0 +6848,54,Male,127,73,121,41,71,38,79,4.4,18.8,68,172,Asymptomatic,False,0.9,True,Former,5.6,42,9.1,37.9,False,4882,59.3,0 +6849,26,Female,88,50,178,76,74,139,60,4.8,20.4,74,208,Atypical Angina,False,0.5,True,Never,7.9,280,8.8,26.2,True,10132,58.7,0 +6850,49,Male,107,68,160,48,81,121,124,5.8,20.1,90,175,Asymptomatic,False,0.8,True,Former,4.2,186,6.3,28.1,True,5965,53.0,0 +6851,53,Female,121,81,186,64,82,163,170,6.7,26.7,78,180,Asymptomatic,False,2.2,False,Never,9.2,163,7.1,41.2,False,8649,52.1,0 +6852,31,Male,94,54,177,68,102,120,98,5.1,24.1,80,205,Non-Anginal Pain,False,0.7,True,Former,13.5,176,8.2,45.9,True,8654,58.5,0 +6853,60,Female,146,81,161,59,70,112,110,5.8,24.9,70,163,Non-Anginal Pain,False,0.4,False,Never,10.6,117,6.8,62.7,False,3944,74.1,0 +6854,58,Female,161,101,143,30,83,165,134,6.3,24.6,96,171,Non-Anginal Pain,True,0.3,False,Current,3.9,119,7.4,79.4,False,500,41.5,1 +6855,63,Female,152,84,251,60,140,220,105,6.3,30.5,81,124,Asymptomatic,False,1.9,False,Never,13.8,133,6.8,38.9,True,7311,50.6,1 +6856,40,Male,122,76,171,51,68,252,166,7.5,26.8,86,174,Asymptomatic,False,2.2,False,Former,1.7,159,7.7,55.4,True,9061,91.6,0 +6857,58,Male,124,80,175,64,85,172,115,5.1,28.8,79,168,Asymptomatic,False,0.4,False,Former,10.3,110,7.1,29.6,True,7266,57.4,0 +6858,52,Female,114,75,148,51,79,155,133,6.4,24.1,98,158,Asymptomatic,False,1.0,False,Current,6.1,124,6.4,43.9,True,6744,50.2,1 +6859,64,Female,127,84,145,54,83,60,128,5.6,16.2,80,165,Asymptomatic,False,0.3,False,Former,4.2,182,8.9,84.9,False,4651,51.6,0 +6860,62,Female,151,98,162,48,97,110,156,7.2,26.8,88,134,Non-Anginal Pain,True,2.7,True,Current,3.3,79,6.9,57.4,False,7702,62.7,1 +6861,47,Male,131,74,175,63,82,132,104,5.3,18.7,87,156,Atypical Angina,True,0.5,True,Former,3.6,166,7.4,60.1,False,6192,56.7,1 +6862,55,Female,121,69,154,56,75,124,110,5.3,25.9,80,190,Asymptomatic,False,0.5,False,Never,1.8,95,8.1,36.2,False,5623,54.1,0 +6863,62,Female,139,78,232,51,148,170,145,6.4,21.3,84,151,Asymptomatic,False,1.0,False,Current,5.2,74,7.7,40.8,False,2481,38.2,1 +6864,52,Female,131,76,187,70,59,275,109,6.0,22.7,60,171,Typical Angina,False,1.3,False,Never,0.1,161,7.3,50.8,True,6904,84.4,0 +6865,64,Male,126,79,200,50,114,146,112,5.4,21.8,73,136,Asymptomatic,True,1.6,False,Former,4.0,0,6.3,51.4,False,3866,94.5,1 +6866,59,Female,157,91,220,51,130,151,162,7.0,27.6,84,174,Asymptomatic,False,1.0,True,Never,6.6,117,6.4,21.4,False,7914,87.5,0 +6867,57,Male,138,87,154,46,91,83,117,5.6,21.1,87,201,Typical Angina,False,1.1,False,Former,1.8,173,8.5,61.7,False,6858,54.6,0 +6868,47,Male,133,88,237,49,154,120,131,6.5,38.0,65,163,Asymptomatic,False,2.8,False,Never,1.5,107,8.2,53.8,True,3510,67.4,1 +6869,43,Male,150,102,226,56,125,165,111,5.8,25.6,76,147,Asymptomatic,False,1.7,False,Never,1.8,117,5.3,60.7,False,6765,60.1,1 +6870,28,Female,118,76,173,69,87,132,70,4.4,20.4,74,196,Typical Angina,False,0.4,False,Never,6.7,135,6.9,45.9,False,3116,61.4,0 +6871,29,Female,112,71,183,55,103,134,107,4.9,20.1,68,180,Asymptomatic,False,0.9,False,Never,10.3,176,6.5,52.4,True,9953,64.3,0 +6872,36,Male,117,69,191,44,92,220,143,6.0,28.4,86,170,Typical Angina,True,0.7,False,Former,8.4,101,8.8,27.5,False,5018,78.3,1 +6873,55,Female,116,64,163,24,78,239,128,6.4,31.5,83,191,Asymptomatic,False,0.2,False,Never,0.3,119,5.5,34.9,False,7241,34.2,1 +6874,44,Male,127,76,173,59,89,101,133,5.7,23.5,71,187,Non-Anginal Pain,False,1.7,True,Former,3.4,68,7.1,44.7,False,6581,65.1,0 +6875,50,Female,122,74,195,73,103,154,92,5.0,28.0,74,195,Non-Anginal Pain,False,0.8,True,Never,0.2,207,6.0,34.2,True,7965,47.9,0 +6876,56,Male,135,95,152,58,76,35,157,6.5,15.0,83,149,Asymptomatic,False,0.2,False,Former,5.9,119,7.0,52.5,False,5037,68.6,0 +6877,23,Male,117,87,210,34,124,221,108,5.1,30.4,75,197,Atypical Angina,True,0.3,False,Never,2.6,173,7.3,56.2,False,6865,49.2,0 +6878,51,Male,123,80,200,62,100,156,151,6.6,34.5,80,173,Asymptomatic,False,0.1,False,Former,11.9,112,7.8,59.3,False,6236,64.4,0 +6879,79,Female,127,72,215,60,110,209,123,5.6,21.9,87,151,Asymptomatic,False,2.0,False,Current,0.4,190,5.9,48.8,True,7764,61.3,0 +6880,52,Male,133,82,184,56,100,127,123,6.0,23.7,71,168,Atypical Angina,False,0.3,False,Former,17.2,211,8.4,13.4,True,9492,75.2,0 +6881,43,Female,131,83,209,64,100,155,130,5.8,26.4,88,179,Asymptomatic,False,0.4,False,Former,12.4,143,5.4,61.6,False,8216,49.0,0 +6882,47,Female,126,85,206,55,147,71,131,5.8,25.4,65,176,Atypical Angina,False,0.8,False,Never,6.4,67,5.4,62.2,True,5447,100.0,0 +6883,38,Male,132,84,244,70,121,283,118,5.7,24.9,79,179,Asymptomatic,False,0.5,False,Former,2.4,190,6.1,33.1,True,11161,44.7,0 +6884,57,Female,127,73,213,74,134,85,114,5.1,16.6,78,169,Non-Anginal Pain,False,0.3,False,Current,1.6,133,5.6,45.6,True,6860,51.5,0 +6885,80,Male,140,83,150,48,67,110,122,5.4,20.3,91,143,Atypical Angina,False,1.0,False,Never,2.9,104,6.0,76.3,True,7079,50.1,0 +6886,79,Female,130,86,218,44,120,205,86,4.7,22.8,84,134,Non-Anginal Pain,False,0.3,False,Never,12.7,113,7.4,56.5,True,6934,64.0,0 +6887,29,Male,102,56,109,43,52,97,153,6.1,28.6,92,182,Atypical Angina,False,0.8,False,Never,3.4,93,6.4,33.4,False,2096,59.7,0 +6888,47,Female,132,81,127,52,77,106,120,5.7,27.0,79,164,Typical Angina,False,0.5,False,Former,10.6,136,9.4,40.1,True,7267,46.7,0 +6889,63,Male,121,72,181,88,73,114,79,4.4,22.0,65,148,Non-Anginal Pain,False,1.3,False,Current,4.5,284,7.3,17.3,True,9644,66.3,0 +6890,47,Female,133,84,217,77,103,170,126,6.0,23.0,86,158,Atypical Angina,False,1.0,False,Current,17.4,89,7.2,59.8,False,5145,70.7,0 +6891,80,Male,142,92,153,48,65,188,118,5.6,27.4,85,118,Asymptomatic,True,1.2,True,Former,1.7,114,8.0,50.4,False,2437,23.8,1 +6892,41,Male,123,74,195,62,119,143,153,6.7,25.8,85,190,Atypical Angina,False,0.6,False,Current,4.9,55,7.8,57.6,False,6206,54.0,0 +6893,64,Female,116,76,227,56,132,187,119,6.4,29.1,88,129,Asymptomatic,True,1.0,True,Former,4.9,95,6.1,34.9,True,3775,54.3,0 +6894,50,Female,146,88,188,42,109,182,145,6.6,27.2,79,148,Asymptomatic,True,0.8,False,Former,9.1,71,8.6,56.6,False,7250,51.9,1 +6895,44,Female,120,77,228,62,120,193,110,5.3,26.4,86,197,Non-Anginal Pain,False,0.5,True,Former,5.9,166,7.4,53.4,True,7984,65.8,0 +6896,27,Male,108,74,165,57,79,183,124,5.9,24.3,74,181,Non-Anginal Pain,False,1.0,False,Former,13.9,94,8.1,31.9,False,5403,38.6,0 +6897,56,Female,122,74,166,51,108,86,106,5.1,22.2,74,188,Non-Anginal Pain,False,0.8,False,Never,7.1,140,6.5,82.2,False,2983,66.3,0 +6898,65,Female,155,97,206,49,151,151,133,5.8,27.5,100,138,Asymptomatic,False,0.7,True,Former,0.0,5,5.9,72.5,False,1794,42.4,0 +6899,62,Male,116,71,200,74,95,99,134,6.8,24.2,73,185,Asymptomatic,False,0.2,True,Never,1.5,180,7.6,36.5,True,7480,66.2,0 +6900,64,Male,127,90,145,35,106,52,170,7.0,27.7,107,130,Atypical Angina,False,3.1,True,Current,5.6,45,7.6,24.7,False,4620,57.9,1 +6901,56,Male,139,86,213,53,126,188,98,5.5,27.1,77,191,Asymptomatic,False,1.5,False,Never,4.2,152,6.9,18.6,True,7425,58.7,0 +6902,57,Male,136,82,229,61,142,184,133,6.3,22.7,80,146,Asymptomatic,False,0.1,False,Former,2.8,152,6.4,33.5,True,8342,85.1,0 +6903,70,Male,128,72,175,55,78,148,88,5.6,20.0,92,149,Atypical Angina,False,2.5,False,Current,3.3,146,8.2,37.6,True,9370,82.6,1 +6904,28,Female,130,97,240,64,135,146,124,5.8,24.1,99,210,Typical Angina,False,0.3,False,Former,0.3,149,6.8,29.2,True,7831,48.4,0 +6905,68,Female,144,86,229,58,122,244,148,6.4,29.4,82,157,Atypical Angina,True,2.6,False,Former,5.0,150,5.4,43.7,True,5726,63.9,1 +6906,54,Male,111,64,215,47,154,152,91,4.5,24.5,88,150,Non-Anginal Pain,False,0.2,True,Never,12.6,129,6.7,48.3,False,9195,64.4,1 +6907,37,Female,132,91,174,64,75,145,112,6.2,26.0,77,205,Asymptomatic,False,1.7,False,Current,0.2,305,6.3,52.8,False,10613,94.6,0 +6908,57,Male,112,78,152,30,101,153,115,5.5,21.0,89,173,Asymptomatic,False,1.2,True,Former,2.9,132,6.1,39.5,False,4897,85.6,0 +6909,30,Female,117,64,180,82,74,68,172,7.4,30.0,76,193,Atypical Angina,False,0.1,False,Former,5.7,122,5.6,51.5,True,5120,60.5,0 +6910,63,Female,131,95,176,50,81,196,108,4.9,21.5,86,133,Asymptomatic,False,0.4,True,Never,5.1,118,8.8,54.4,False,6110,73.5,0 +6911,51,Male,148,96,183,63,87,217,141,6.8,34.4,76,158,Asymptomatic,False,0.1,True,Never,2.5,187,6.2,26.6,True,5870,49.5,1 +6912,42,Male,130,89,195,43,88,199,128,6.2,27.3,87,178,Typical Angina,True,1.6,False,Current,3.1,159,6.8,20.4,True,6636,54.6,1 +6913,75,Female,133,83,203,51,129,94,138,6.8,23.8,88,134,Typical Angina,False,0.5,False,Never,4.7,43,6.4,88.3,False,1137,70.7,1 +6914,28,Female,129,75,202,48,111,208,137,6.4,27.2,80,210,Asymptomatic,False,0.3,False,Never,18.7,143,7.1,29.0,False,10688,78.4,0 +6915,74,Female,140,91,99,18,56,150,151,6.9,24.4,90,136,Atypical Angina,True,0.3,False,Current,1.6,26,5.8,59.4,False,2827,55.9,1 +6916,66,Male,137,87,173,54,95,146,136,5.9,27.2,86,175,Asymptomatic,False,2.7,True,Former,4.3,247,7.5,31.4,True,11663,55.6,0 +6917,38,Female,111,64,164,65,48,221,98,4.9,23.4,86,183,Atypical Angina,False,0.7,False,Former,7.9,9,7.5,57.7,False,3767,49.7,0 +6918,50,Male,99,63,181,61,80,172,144,6.2,23.4,84,159,Asymptomatic,False,0.2,False,Former,6.2,208,6.7,53.2,False,7517,60.4,0 +6919,38,Female,128,82,178,59,109,108,111,5.7,23.8,77,183,Asymptomatic,True,0.4,False,Never,0.8,133,7.2,20.0,False,3470,70.5,0 +6920,39,Male,117,73,219,61,115,216,146,6.8,19.8,92,196,Non-Anginal Pain,False,0.3,False,Never,10.7,156,8.3,65.8,False,8889,70.0,0 +6921,85,Male,130,81,154,43,89,163,137,6.6,22.2,89,116,Atypical Angina,True,1.5,False,Never,3.7,57,6.1,61.1,False,2753,61.6,1 +6922,42,Female,123,77,169,47,92,157,93,5.5,32.5,89,179,Non-Anginal Pain,False,2.7,False,Current,4.3,95,6.4,59.7,True,6136,77.0,0 +6923,55,Male,131,90,172,39,94,204,132,6.3,33.2,88,171,Asymptomatic,False,2.1,False,Former,7.3,96,6.8,49.9,False,5284,44.5,0 +6924,66,Female,130,87,206,56,131,112,148,6.9,27.7,80,116,Non-Anginal Pain,False,1.9,False,Current,0.3,43,7.8,52.1,False,3640,30.9,1 +6925,49,Male,141,87,170,54,72,152,128,5.3,27.4,89,184,Atypical Angina,False,0.1,True,Never,5.1,101,6.5,53.7,False,4717,75.8,0 +6926,45,Male,126,86,217,47,120,210,128,5.6,26.0,81,210,Asymptomatic,False,1.7,False,Current,10.6,220,6.1,10.9,True,7123,56.0,0 +6927,56,Female,103,58,210,94,72,196,129,5.5,17.8,71,140,Typical Angina,True,0.2,False,Former,5.9,190,7.2,65.8,True,8239,52.0,1 +6928,53,Male,147,102,245,68,137,150,151,6.6,18.8,81,164,Asymptomatic,True,0.3,False,Current,7.2,159,6.9,56.2,False,5320,65.0,0 +6929,41,Female,99,64,140,71,42,94,60,4.0,20.8,69,210,Asymptomatic,False,0.3,False,Never,1.6,226,7.5,37.6,True,6155,64.9,0 +6930,55,Male,149,95,243,88,106,237,134,6.0,22.9,84,166,Non-Anginal Pain,False,0.2,False,Never,8.1,126,6.5,68.2,False,4579,51.3,0 +6931,40,Male,117,79,176,53,88,187,129,5.6,23.4,73,203,Asymptomatic,False,1.2,True,Never,1.8,221,6.0,55.7,False,6245,81.6,0 +6932,49,Female,109,64,176,67,82,119,141,6.0,26.6,94,168,Typical Angina,False,0.6,False,Never,0.6,94,8.2,51.5,True,6740,71.7,0 +6933,56,Female,136,89,183,63,88,174,126,6.0,26.3,92,160,Typical Angina,True,1.0,False,Current,1.0,105,6.4,63.6,True,5816,47.9,1 +6934,68,Male,152,81,218,57,126,158,133,6.3,23.7,78,157,Atypical Angina,True,3.1,False,Never,13.0,271,9.6,54.4,True,6375,53.3,1 +6935,46,Male,116,70,153,44,83,72,92,5.4,15.0,95,142,Asymptomatic,False,0.6,False,Never,3.7,3,7.6,51.2,True,5452,63.1,0 +6936,37,Female,115,59,281,56,177,214,120,5.2,33.8,80,158,Non-Anginal Pain,False,0.8,True,Never,0.8,118,5.3,51.2,True,6443,51.7,1 +6937,52,Female,116,65,229,59,134,168,115,5.3,20.1,81,154,Non-Anginal Pain,True,0.7,False,Current,5.8,119,5.6,46.5,True,6833,55.3,1 +6938,59,Male,150,110,161,37,63,250,125,5.8,27.5,88,146,Asymptomatic,False,0.8,False,Current,20.9,77,6.0,51.5,False,4690,26.7,1 +6939,66,Male,125,90,187,53,104,196,100,5.5,27.3,86,160,Asymptomatic,True,1.4,True,Former,2.9,169,7.1,24.4,True,6889,91.5,0 +6940,53,Female,138,94,123,49,59,116,93,4.9,18.8,69,187,Non-Anginal Pain,False,0.1,False,Former,4.9,121,6.9,38.2,False,6736,72.8,0 +6941,40,Female,116,89,144,63,61,58,107,5.3,19.0,86,184,Atypical Angina,False,0.8,False,Never,2.3,192,7.4,33.4,True,7969,64.3,0 +6942,39,Male,133,78,263,55,170,164,147,6.6,23.6,88,193,Asymptomatic,False,0.2,False,Former,16.7,162,6.9,47.5,True,6494,68.6,0 +6943,36,Male,124,74,162,36,88,217,113,6.0,23.7,81,176,Non-Anginal Pain,True,1.6,False,Former,12.5,105,7.9,57.4,False,4044,47.1,0 +6944,53,Female,139,82,171,42,96,122,119,5.8,20.8,80,164,Non-Anginal Pain,False,0.3,False,Never,0.2,94,5.9,40.9,True,7349,26.3,0 +6945,39,Female,112,73,193,65,97,134,73,4.4,19.6,78,188,Asymptomatic,False,0.7,False,Never,11.9,160,6.0,26.2,False,4389,59.9,0 +6946,47,Female,124,77,214,65,112,170,135,5.7,30.2,81,165,Asymptomatic,False,0.8,False,Current,8.2,208,6.7,37.6,False,6042,61.7,0 +6947,64,Male,127,75,171,45,83,229,111,6.0,23.7,81,142,Non-Anginal Pain,False,0.9,False,Never,9.5,221,7.3,42.4,True,7262,69.9,0 +6948,47,Female,113,68,196,55,109,132,70,4.3,16.4,77,183,Asymptomatic,False,1.3,False,Former,2.2,214,5.3,69.9,True,8342,70.2,0 +6949,54,Male,120,73,178,61,76,149,130,6.4,27.1,79,155,Atypical Angina,True,0.9,False,Current,5.4,117,6.2,35.1,False,6286,46.6,1 +6950,55,Female,106,60,223,65,125,138,133,6.4,17.9,73,181,Asymptomatic,False,0.8,False,Former,4.0,217,7.3,15.5,True,6846,49.0,0 +6951,40,Female,111,70,166,70,64,193,155,7.1,26.5,68,163,Typical Angina,False,0.4,True,Never,3.3,83,6.9,24.8,False,5890,80.4,1 +6952,46,Male,134,87,160,50,76,146,118,5.5,28.8,80,169,Atypical Angina,False,0.4,False,Never,4.8,71,5.5,30.8,False,7440,75.0,0 +6953,61,Male,94,57,230,54,134,213,108,5.6,23.4,70,161,Non-Anginal Pain,True,2.0,True,Former,4.4,281,5.5,48.7,True,7040,57.2,1 +6954,38,Female,119,76,191,57,118,103,104,5.0,21.5,70,175,Non-Anginal Pain,True,1.9,True,Current,3.6,155,5.7,43.0,True,6181,43.8,0 +6955,70,Female,124,82,249,58,139,170,177,6.8,26.2,82,132,Non-Anginal Pain,True,2.0,True,Former,4.3,86,7.1,36.8,False,3145,54.6,1 +6956,61,Female,149,83,242,46,160,175,147,6.2,30.1,95,142,Typical Angina,True,2.7,False,Former,0.5,205,6.4,82.3,False,5561,81.0,1 +6957,63,Male,130,95,172,51,83,151,123,5.7,26.9,87,159,Asymptomatic,False,0.9,False,Never,11.2,137,5.9,32.7,False,500,57.3,0 +6958,48,Male,136,86,147,32,87,169,137,6.2,23.2,82,169,Asymptomatic,False,0.6,False,Never,2.5,123,7.0,59.2,False,1913,80.3,0 +6959,43,Female,118,68,163,66,62,183,96,5.1,28.7,83,210,Atypical Angina,True,0.4,False,Former,6.3,218,8.4,47.9,False,1767,48.5,0 +6960,60,Male,130,74,188,50,109,196,120,6.0,24.7,105,174,Asymptomatic,False,0.2,False,Current,3.1,105,9.0,81.7,True,4111,47.3,0 +6961,81,Female,127,73,167,64,74,170,143,6.7,30.4,98,130,Atypical Angina,False,0.9,False,Current,2.0,140,8.1,53.8,False,3167,37.4,0 +6962,64,Male,135,96,183,40,111,174,123,5.4,32.1,86,150,Non-Anginal Pain,False,0.1,True,Never,2.9,184,6.8,34.0,True,4577,72.7,0 +6963,45,Female,133,91,209,64,132,68,101,5.4,21.9,72,198,Asymptomatic,False,0.8,True,Never,12.1,293,6.5,71.0,True,8120,56.2,0 +6964,29,Female,136,93,207,56,101,172,120,6.0,23.8,78,197,Asymptomatic,False,0.2,False,Former,4.0,186,8.4,51.0,False,6759,65.5,0 +6965,49,Male,144,81,163,39,98,140,134,6.0,27.9,76,167,Non-Anginal Pain,True,1.4,True,Former,9.2,166,5.8,27.1,True,4601,45.6,1 +6966,47,Female,128,75,225,39,166,121,184,7.8,32.4,85,186,Asymptomatic,False,0.5,False,Former,1.4,204,9.3,60.6,True,13273,67.9,0 +6967,38,Male,127,80,169,51,94,130,126,6.2,31.8,94,175,Typical Angina,False,1.0,False,Never,2.3,87,6.6,48.1,False,6740,70.1,0 +6968,45,Male,120,89,117,58,50,66,113,6.3,15.3,82,184,Asymptomatic,False,2.3,False,Never,13.0,48,7.3,62.6,False,6471,65.0,0 +6969,71,Female,115,72,263,63,152,188,128,6.2,26.4,91,130,Asymptomatic,False,0.7,True,Never,0.5,87,4.9,60.7,False,4315,38.4,1 +6970,44,Male,113,70,158,77,73,63,87,5.1,22.3,65,188,Asymptomatic,True,0.1,False,Former,9.3,253,9.3,27.5,True,7802,79.6,0 +6971,56,Male,117,80,217,59,100,279,149,6.5,16.8,88,174,Asymptomatic,False,0.3,False,Never,11.8,72,7.5,27.8,True,3443,47.6,0 +6972,68,Female,131,83,202,58,104,197,125,6.2,30.6,88,152,Asymptomatic,False,0.2,False,Current,0.5,101,8.4,27.5,True,4812,38.0,0 +6973,66,Male,128,81,170,53,92,164,104,5.3,23.6,85,153,Asymptomatic,False,3.8,False,Never,5.7,194,5.7,44.1,False,4733,69.5,1 +6974,64,Male,137,84,156,56,93,111,114,5.2,23.1,79,131,Typical Angina,True,2.4,True,Never,15.5,1,7.9,41.0,False,500,69.3,1 +6975,40,Male,118,77,142,40,78,140,147,6.5,29.7,72,173,Asymptomatic,True,1.8,False,Former,9.7,96,8.8,57.9,False,6495,65.1,0 +6976,60,Female,142,85,132,40,79,102,96,5.0,20.2,71,168,Asymptomatic,False,0.1,True,Never,0.2,170,7.3,55.8,True,8432,68.9,0 +6977,25,Female,99,66,132,53,59,56,115,5.8,20.0,70,201,Atypical Angina,False,0.4,False,Never,9.9,256,7.4,17.4,True,9905,80.3,0 +6978,37,Female,121,70,167,50,78,154,123,5.5,26.3,85,162,Typical Angina,False,0.4,False,Never,11.2,118,7.2,53.5,False,6524,65.7,1 +6979,62,Male,130,78,207,63,118,97,112,5.5,22.5,85,170,Asymptomatic,False,1.0,False,Never,2.9,104,7.0,50.4,False,3065,69.7,0 +6980,64,Female,137,92,232,50,132,231,124,6.2,26.2,95,138,Non-Anginal Pain,False,1.3,True,Current,1.4,81,6.9,40.7,True,7150,35.8,1 +6981,65,Female,134,78,237,61,152,162,163,6.4,29.7,88,155,Atypical Angina,True,0.5,False,Never,2.4,88,7.6,53.9,False,3002,70.2,1 +6982,56,Male,146,98,238,67,133,102,116,5.4,28.3,66,156,Typical Angina,True,1.5,True,Former,4.6,78,6.7,65.3,False,6453,50.6,1 +6983,62,Male,132,83,211,40,151,125,97,5.0,21.7,85,138,Atypical Angina,True,0.5,False,Never,5.7,153,9.2,81.1,True,4809,50.8,1 +6984,49,Male,137,86,171,53,80,154,87,5.2,18.9,76,176,Non-Anginal Pain,False,1.1,True,Never,1.5,139,6.9,50.5,False,6590,57.3,0 +6985,38,Male,116,81,143,53,83,115,125,5.9,25.8,87,188,Atypical Angina,False,1.2,False,Current,9.1,106,5.6,44.0,False,6090,71.3,0 +6986,57,Female,118,74,231,58,129,204,114,5.7,20.8,64,168,Atypical Angina,False,2.5,False,Never,4.2,169,5.5,44.5,False,5613,75.5,0 +6987,71,Male,139,102,239,59,128,207,102,5.4,25.0,77,141,Atypical Angina,False,0.8,False,Never,6.5,177,5.7,43.8,True,7251,67.5,0 +6988,76,Male,129,87,184,78,74,120,93,5.4,18.4,74,157,Asymptomatic,False,0.7,False,Never,3.0,246,8.8,55.6,True,9149,81.4,0 +6989,61,Male,135,91,193,34,119,207,133,6.2,29.2,75,152,Asymptomatic,False,2.0,False,Never,10.2,127,7.2,7.9,False,4833,61.5,1 +6990,35,Male,122,77,211,37,128,127,106,5.7,25.1,66,168,Asymptomatic,False,0.5,False,Former,2.0,131,5.5,22.3,False,7192,67.0,0 +6991,56,Male,119,85,180,50,77,254,144,6.1,27.3,105,177,Asymptomatic,False,0.5,False,Never,9.2,96,8.3,37.4,False,6054,55.4,0 +6992,52,Female,139,100,218,60,116,197,140,6.2,27.8,84,138,Asymptomatic,False,4.3,False,Former,4.2,59,6.5,56.6,False,3610,53.6,1 +6993,45,Male,115,65,164,59,72,146,149,6.1,20.6,89,177,Typical Angina,True,0.3,True,Never,8.9,166,6.3,44.0,True,6514,67.8,0 +6994,56,Female,121,82,193,88,75,180,140,5.5,25.0,83,174,Atypical Angina,False,1.0,False,Never,5.3,151,10.3,48.0,True,6855,74.7,0 +6995,43,Female,122,74,260,76,135,228,86,4.8,29.9,74,182,Non-Anginal Pain,False,0.2,False,Never,3.7,274,7.5,35.2,False,5100,54.1,0 +6996,50,Female,109,50,199,60,111,93,116,4.9,18.8,85,181,Typical Angina,False,0.8,True,Former,4.7,111,6.0,46.7,False,5458,64.8,0 +6997,65,Male,159,97,211,52,140,81,112,5.3,29.5,68,150,Asymptomatic,False,2.3,True,Never,2.0,105,5.8,40.5,False,6064,69.0,1 +6998,38,Female,105,74,151,41,91,164,67,4.4,22.2,68,194,Atypical Angina,False,0.8,True,Never,1.7,209,8.1,81.2,False,5504,56.0,0 +6999,64,Male,124,78,201,52,111,225,144,6.2,21.0,75,156,Asymptomatic,False,0.6,False,Former,1.7,297,6.2,37.8,True,9204,43.0,0 +7000,47,Male,127,69,126,46,78,38,117,5.8,23.1,70,175,Non-Anginal Pain,False,0.4,False,Never,3.3,243,7.2,50.7,True,7867,61.9,0 +7001,57,Female,125,90,188,60,104,186,147,6.1,23.1,81,129,Asymptomatic,False,1.2,False,Former,3.2,69,6.2,37.1,False,3554,53.5,1 +7002,77,Female,141,90,244,62,139,143,119,6.0,34.5,94,135,Asymptomatic,True,0.5,False,Current,0.9,107,5.9,34.1,False,5518,33.8,1 +7003,45,Female,154,93,255,56,165,144,128,5.9,27.7,75,180,Non-Anginal Pain,False,1.1,False,Current,6.2,132,8.5,46.6,True,3044,53.1,0 +7004,51,Female,130,68,157,34,76,208,152,6.6,36.3,78,151,Asymptomatic,True,0.8,False,Former,0.2,0,7.8,61.8,False,5482,60.4,0 +7005,65,Male,132,99,178,47,96,156,104,5.6,32.2,95,128,Asymptomatic,False,2.1,False,Never,3.9,127,6.1,35.7,False,6029,34.3,1 +7006,61,Male,115,71,176,50,106,107,117,5.6,23.5,92,156,Asymptomatic,False,0.1,False,Never,12.1,74,6.8,63.1,True,8998,67.1,0 +7007,85,Female,134,97,207,61,125,146,139,5.7,26.4,89,123,Non-Anginal Pain,True,2.9,False,Former,0.4,110,6.1,59.5,False,5152,59.7,1 +7008,65,Male,129,82,176,69,74,167,133,5.9,27.8,78,135,Atypical Angina,True,5.4,True,Never,3.0,111,5.7,51.6,True,8553,44.5,1 +7009,54,Male,141,92,174,71,75,158,93,5.4,24.0,91,160,Asymptomatic,False,0.2,False,Never,3.8,121,7.9,35.4,False,8002,62.8,0 +7010,42,Male,141,95,132,18,98,153,105,5.2,34.1,91,168,Typical Angina,False,0.5,False,Current,3.3,66,6.0,82.6,False,3101,58.9,1 +7011,58,Male,115,71,190,44,98,218,108,5.6,31.1,76,155,Non-Anginal Pain,True,0.6,True,Never,14.0,56,7.1,67.8,False,3229,62.5,0 +7012,82,Male,140,78,132,43,76,157,128,5.7,30.5,81,140,Asymptomatic,False,0.3,False,Never,2.4,0,5.4,61.6,False,4363,64.9,0 +7013,59,Male,127,82,184,60,107,64,92,5.3,26.8,87,177,Atypical Angina,False,0.2,True,Never,4.7,91,6.2,31.2,False,4668,64.4,0 +7014,38,Male,118,75,179,45,101,179,110,5.7,27.1,88,185,Asymptomatic,False,0.0,True,Former,10.2,202,7.4,30.6,True,4401,39.2,0 +7015,50,Male,98,63,211,64,118,99,134,5.8,21.4,81,153,Atypical Angina,False,2.1,False,Current,1.9,103,8.5,30.4,False,9769,69.9,1 +7016,46,Male,124,80,166,49,76,168,99,6.1,27.9,81,157,Non-Anginal Pain,False,0.5,False,Never,3.7,22,7.7,60.0,True,4124,44.1,1 +7017,57,Female,149,100,249,69,132,222,92,4.7,34.8,65,184,Asymptomatic,False,0.2,False,Never,2.3,162,5.5,34.9,False,2253,46.6,0 +7018,51,Male,131,83,231,63,153,57,108,5.6,25.7,83,179,Asymptomatic,False,0.5,False,Never,1.6,233,7.0,42.5,True,10092,90.4,0 +7019,46,Male,144,91,172,38,98,210,96,5.0,26.3,80,158,Asymptomatic,False,1.0,True,Never,6.5,122,7.5,49.4,True,10478,27.0,0 +7020,40,Female,128,69,183,78,80,184,127,5.6,20.3,61,167,Non-Anginal Pain,False,0.2,False,Never,1.2,173,6.9,58.9,False,6795,72.8,0 +7021,50,Male,131,82,190,66,94,163,121,5.0,23.2,76,183,Non-Anginal Pain,True,0.7,False,Never,5.8,97,5.6,30.2,False,5156,58.8,0 +7022,60,Female,123,90,208,72,116,108,88,4.7,22.1,79,168,Atypical Angina,False,0.8,True,Never,4.6,197,7.7,44.8,True,6298,71.9,0 +7023,67,Male,98,65,179,74,95,108,80,4.5,16.0,85,152,Asymptomatic,False,0.3,True,Former,2.4,118,6.5,56.1,False,5170,71.2,0 +7024,47,Female,118,63,231,79,115,213,95,5.4,25.0,88,185,Asymptomatic,False,2.0,False,Former,20.0,83,8.2,42.0,False,3100,68.5,0 +7025,69,Female,119,78,161,58,75,133,117,5.9,19.6,81,149,Asymptomatic,False,0.1,False,Never,3.5,15,7.7,28.1,False,3666,49.6,0 +7026,27,Female,118,85,144,74,44,132,96,4.9,27.0,83,197,Asymptomatic,False,1.0,True,Never,3.3,195,8.0,44.9,False,6642,77.5,0 +7027,75,Female,137,81,205,59,127,88,133,6.5,27.0,81,158,Non-Anginal Pain,False,0.8,True,Current,1.7,124,6.2,41.9,False,3933,56.9,0 +7028,32,Female,108,58,165,61,81,86,95,5.4,27.3,77,210,Asymptomatic,True,0.6,False,Former,0.8,232,6.0,42.9,True,8473,58.3,0 +7029,45,Male,103,67,194,59,96,213,154,7.2,25.6,71,185,Asymptomatic,False,1.5,False,Never,2.0,148,8.4,67.7,True,11142,74.0,0 +7030,52,Male,134,68,176,54,102,73,117,6.0,25.6,77,177,Typical Angina,False,2.0,False,Never,6.4,148,5.8,56.6,True,5899,80.4,1 +7031,46,Female,107,74,195,73,66,246,119,5.6,32.8,80,179,Asymptomatic,False,1.3,False,Former,4.9,259,7.7,37.9,True,10475,84.5,0 +7032,80,Male,148,96,172,49,109,120,153,7.2,31.2,94,110,Typical Angina,False,1.4,False,Never,4.4,0,7.6,74.4,True,2940,81.7,1 +7033,46,Male,87,56,221,48,127,202,91,4.4,15.7,76,179,Atypical Angina,False,0.1,True,Current,1.8,190,8.8,65.5,True,7927,41.0,0 +7034,79,Male,155,97,188,61,80,185,138,6.2,25.0,79,129,Asymptomatic,False,1.1,False,Current,1.7,197,7.4,39.5,True,7788,64.8,0 +7035,18,Female,114,79,152,60,75,55,113,5.8,29.0,88,210,Asymptomatic,False,0.6,True,Never,0.3,157,7.4,38.1,False,6552,57.8,0 +7036,25,Male,103,68,192,52,85,225,66,4.7,26.4,85,179,Atypical Angina,True,1.3,False,Former,4.4,142,5.4,43.1,False,7266,62.4,1 +7037,55,Male,110,66,170,59,113,45,100,5.4,23.1,69,177,Atypical Angina,False,0.4,True,Never,2.4,126,6.9,30.4,False,4313,49.2,0 +7038,38,Female,109,80,192,57,113,92,146,6.1,23.5,89,181,Asymptomatic,False,0.5,False,Current,1.6,151,6.5,36.3,False,8677,55.3,0 +7039,33,Male,119,78,181,53,107,78,145,6.2,25.6,77,200,Asymptomatic,False,0.1,False,Current,1.6,173,5.8,27.7,False,4674,44.6,0 +7040,48,Male,125,94,233,65,120,227,172,7.4,28.7,67,166,Non-Anginal Pain,True,0.3,False,Current,13.5,76,5.9,43.3,True,7234,53.7,1 +7041,46,Female,117,84,159,49,69,213,110,5.6,29.0,78,173,Asymptomatic,False,0.5,False,Former,3.5,99,10.2,36.5,True,8822,36.1,0 +7042,44,Male,117,79,186,76,74,160,83,4.9,19.1,72,194,Non-Anginal Pain,False,0.3,False,Never,6.1,262,8.6,46.2,False,9692,62.9,0 +7043,45,Male,125,68,193,43,114,171,113,5.5,25.2,80,189,Atypical Angina,False,0.5,False,Never,10.1,44,8.8,77.1,False,9021,55.6,0 +7044,53,Male,133,90,231,59,147,147,99,5.3,28.2,75,145,Asymptomatic,False,0.9,True,Never,5.0,196,8.2,49.7,True,5284,76.8,1 +7045,60,Male,129,83,212,62,87,250,99,5.3,24.8,94,152,Asymptomatic,False,1.3,False,Never,11.7,165,4.8,64.8,True,5183,27.2,1 +7046,64,Female,152,91,224,63,122,167,99,5.7,28.9,111,155,Typical Angina,True,0.5,True,Former,1.5,146,7.1,40.0,True,9374,75.8,1 +7047,53,Female,134,81,160,55,74,157,109,6.0,24.4,81,136,Typical Angina,False,1.3,False,Never,2.7,0,5.2,34.4,False,4859,45.1,1 +7048,35,Male,114,61,217,40,150,120,105,6.1,34.8,75,179,Typical Angina,False,0.5,True,Current,22.9,204,7.9,14.8,True,7262,56.3,1 +7049,41,Female,144,92,182,53,102,144,106,5.7,23.7,89,172,Asymptomatic,False,1.3,False,Never,6.6,164,7.4,47.4,True,6535,62.4,0 +7050,46,Female,151,94,195,50,105,203,149,6.9,28.9,102,175,Non-Anginal Pain,False,0.2,False,Former,15.1,110,6.7,45.0,False,3196,33.6,0 +7051,62,Male,151,98,179,53,92,203,105,6.4,33.9,87,138,Asymptomatic,False,0.3,False,Never,5.5,117,6.1,50.0,False,5931,64.9,0 +7052,39,Female,112,65,191,66,106,96,128,6.2,22.5,79,185,Asymptomatic,False,0.4,True,Never,2.5,130,7.7,57.4,False,3657,56.6,0 +7053,66,Female,122,76,193,66,112,35,160,6.7,20.1,68,141,Asymptomatic,False,2.1,True,Never,5.9,194,7.6,56.6,False,5021,80.3,0 +7054,35,Female,108,73,208,56,100,166,68,4.5,24.8,76,183,Non-Anginal Pain,False,0.4,True,Never,4.7,256,6.3,32.4,True,7196,63.4,0 +7055,54,Female,130,74,253,60,168,125,145,7.0,20.1,89,154,Typical Angina,True,0.9,True,Current,0.1,213,7.1,54.5,True,7811,26.5,1 +7056,49,Male,133,81,145,45,85,170,107,5.4,31.2,76,158,Typical Angina,False,0.2,False,Former,5.9,106,6.4,50.8,True,4348,63.6,1 +7057,62,Male,139,84,238,53,171,136,78,4.7,22.1,86,179,Asymptomatic,True,0.4,True,Current,10.6,159,7.7,53.1,False,9274,62.9,0 +7058,67,Male,130,70,272,78,174,35,126,6.0,18.0,72,145,Atypical Angina,False,1.1,False,Former,7.9,148,7.5,40.6,False,4280,56.0,1 +7059,51,Female,117,67,264,69,148,189,133,6.4,29.1,83,173,Typical Angina,False,0.3,False,Never,2.7,136,8.6,44.8,False,4703,81.5,0 +7060,46,Male,145,90,128,45,56,117,76,4.0,22.8,86,169,Atypical Angina,False,0.9,True,Current,3.6,25,7.0,82.1,False,5302,54.6,0 +7061,64,Male,148,77,200,52,139,98,109,5.2,26.3,87,165,Asymptomatic,False,1.0,True,Never,2.5,204,6.4,31.5,True,11574,75.1,0 +7062,45,Male,119,81,220,68,131,139,115,5.9,21.5,83,176,Asymptomatic,False,0.8,False,Never,4.2,150,6.0,25.9,False,7337,62.2,0 +7063,57,Female,126,84,171,47,99,119,104,5.5,26.0,87,181,Atypical Angina,False,2.4,False,Former,1.4,34,8.0,73.1,False,4968,69.2,0 +7064,56,Female,124,75,136,51,60,145,135,6.4,20.8,80,160,Asymptomatic,False,1.2,True,Never,1.7,105,6.6,72.2,False,6556,52.9,0 +7065,47,Male,109,82,225,47,127,180,128,6.0,28.8,98,181,Atypical Angina,False,0.6,False,Never,8.1,85,8.2,72.1,False,6086,70.6,1 +7066,44,Female,137,89,165,24,106,167,98,5.3,27.8,85,158,Non-Anginal Pain,False,3.2,False,Current,7.9,61,7.4,63.5,False,5066,50.6,0 +7067,64,Female,121,73,237,76,125,160,141,6.8,35.8,81,163,Asymptomatic,False,0.1,False,Former,0.8,175,7.2,42.7,False,3425,66.1,0 +7068,58,Female,139,100,208,41,126,254,103,5.3,34.3,72,125,Asymptomatic,False,0.2,False,Never,6.2,87,7.0,27.0,False,3518,69.1,0 +7069,40,Male,117,83,198,54,101,175,128,6.0,24.7,73,161,Asymptomatic,False,2.0,False,Current,4.1,195,6.3,57.4,False,6072,66.8,0 +7070,37,Male,123,79,208,56,104,271,112,5.9,22.2,89,201,Asymptomatic,True,0.4,True,Never,20.3,132,8.6,59.1,True,6947,47.3,0 +7071,67,Male,152,100,201,50,130,132,93,5.2,29.4,74,143,Typical Angina,False,0.9,True,Never,3.7,141,7.1,30.1,True,4910,61.4,1 +7072,79,Female,147,99,210,52,104,180,139,6.5,26.8,88,154,Asymptomatic,False,2.3,False,Former,5.4,112,7.4,35.0,True,9436,80.8,0 +7073,52,Female,120,65,213,61,106,134,120,5.9,27.6,89,189,Atypical Angina,False,0.3,False,Current,0.4,253,8.3,37.0,True,6927,66.6,0 +7074,51,Female,139,92,182,49,92,169,108,5.7,25.1,85,150,Atypical Angina,False,0.8,False,Current,11.4,56,7.3,60.5,False,5986,71.2,1 +7075,64,Female,137,85,220,66,110,140,104,5.8,23.3,74,166,Asymptomatic,False,0.5,False,Never,1.1,140,6.4,55.4,True,5580,43.9,1 +7076,46,Female,117,80,202,58,106,195,131,6.3,32.6,83,159,Asymptomatic,False,0.5,False,Never,2.6,52,9.4,41.3,False,6340,91.9,1 +7077,37,Male,149,93,132,33,81,111,127,6.2,30.1,94,150,Atypical Angina,False,4.1,True,Never,3.4,96,7.0,80.0,False,4764,62.4,1 +7078,63,Male,137,82,180,67,98,101,142,6.4,31.4,69,157,Asymptomatic,False,0.2,False,Never,5.4,194,7.0,41.4,True,9221,73.3,0 +7079,51,Male,113,75,199,56,97,154,122,5.7,24.8,75,150,Asymptomatic,True,0.2,True,Former,3.8,115,8.4,44.4,True,7651,61.4,1 +7080,71,Male,110,75,156,42,87,155,153,6.6,25.8,105,128,Typical Angina,True,0.7,True,Never,6.0,158,7.7,84.1,True,8273,52.0,1 +7081,56,Male,133,85,176,62,94,138,100,5.5,19.9,74,176,Asymptomatic,False,1.2,False,Current,10.9,139,5.3,37.8,False,5067,28.7,1 +7082,64,Male,113,68,177,43,119,107,123,6.2,21.4,87,151,Asymptomatic,False,0.1,False,Never,5.1,142,9.1,45.4,True,8100,61.6,0 +7083,45,Male,124,83,241,66,118,286,156,6.5,27.5,94,186,Atypical Angina,False,0.8,False,Current,2.6,145,4.9,80.1,True,9083,32.0,0 +7084,61,Female,128,83,200,44,126,82,76,4.7,24.3,79,146,Atypical Angina,False,1.2,True,Never,2.9,140,7.4,56.0,False,2720,92.7,0 +7085,49,Female,119,77,201,55,118,136,139,6.0,26.8,72,165,Asymptomatic,False,1.4,True,Never,0.9,111,7.7,47.2,True,7621,53.4,0 +7086,66,Male,145,99,205,51,133,133,132,6.5,25.1,99,121,Asymptomatic,False,2.3,True,Never,5.6,0,7.1,46.6,False,1939,62.5,1 +7087,73,Male,154,97,237,32,177,116,141,6.9,31.8,84,139,Atypical Angina,False,3.1,False,Never,6.3,48,7.2,41.7,False,4901,38.2,1 +7088,52,Female,135,80,191,72,108,91,128,5.5,23.5,85,149,Asymptomatic,False,0.6,True,Current,14.7,196,8.5,58.9,False,3788,41.1,1 +7089,51,Male,125,79,178,45,98,196,112,5.4,27.9,85,173,Asymptomatic,False,0.5,False,Current,4.6,224,8.0,30.2,False,10523,25.3,0 +7090,31,Female,96,56,160,58,88,92,97,4.9,26.0,80,164,Non-Anginal Pain,False,0.1,False,Never,1.4,141,8.7,44.9,False,3986,63.2,0 +7091,78,Male,141,87,166,57,89,132,140,6.3,27.3,83,131,Asymptomatic,False,1.0,True,Never,3.5,83,6.0,50.2,False,7122,57.3,1 +7092,80,Male,161,103,212,42,115,255,88,5.5,30.0,89,116,Asymptomatic,True,0.0,False,Former,8.3,0,8.7,53.7,False,1621,52.8,1 +7093,70,Female,153,90,243,61,160,170,114,5.6,28.1,91,145,Non-Anginal Pain,False,0.7,False,Never,0.3,0,7.0,53.8,False,5343,63.9,1 +7094,38,Female,134,73,218,42,139,156,110,6.0,30.6,76,161,Typical Angina,False,5.7,False,Never,4.4,119,5.9,60.0,False,4120,45.4,1 +7095,53,Male,123,73,149,43,86,89,130,5.5,25.2,78,173,Asymptomatic,False,0.1,True,Never,1.5,122,6.2,45.6,False,3709,98.3,0 +7096,43,Male,124,72,173,52,87,185,130,5.8,25.8,75,180,Non-Anginal Pain,False,1.0,False,Never,2.2,174,8.1,45.0,False,3924,40.0,0 +7097,56,Male,115,75,175,62,91,111,126,5.5,22.1,84,171,Asymptomatic,False,0.3,False,Former,1.8,97,7.6,52.2,False,5182,48.7,0 +7098,49,Male,110,64,158,55,87,125,97,4.7,19.4,88,178,Asymptomatic,False,0.8,False,Never,3.5,120,7.3,48.4,False,6280,80.9,0 +7099,51,Male,121,61,175,45,99,169,110,5.3,27.8,82,158,Asymptomatic,False,0.2,False,Current,8.6,188,7.3,56.7,True,10470,30.8,0 +7100,26,Male,111,78,151,54,54,205,92,5.2,22.1,81,194,Asymptomatic,False,1.2,False,Never,8.9,22,6.6,31.0,False,3918,30.7,0 +7101,53,Male,130,84,176,56,120,55,132,5.9,21.4,80,145,Non-Anginal Pain,True,0.1,False,Never,2.1,40,6.9,35.1,False,2135,75.4,1 +7102,66,Male,131,90,169,44,92,162,121,5.3,17.8,68,136,Asymptomatic,False,0.2,False,Current,2.7,153,5.9,36.8,True,4121,47.3,0 +7103,48,Male,122,78,167,56,85,137,126,6.3,24.2,83,177,Asymptomatic,False,1.3,True,Never,16.9,203,7.9,77.9,False,6049,48.3,0 +7104,40,Male,92,50,241,63,150,121,97,5.8,28.2,74,162,Atypical Angina,False,0.2,False,Never,6.9,234,5.5,22.2,False,5498,59.8,0 +7105,42,Male,108,71,209,51,133,107,93,5.1,22.6,83,196,Atypical Angina,False,0.3,False,Never,1.7,222,5.4,25.4,False,5303,59.4,0 +7106,46,Male,128,78,148,56,88,59,133,6.3,16.7,72,197,Asymptomatic,False,1.0,False,Never,19.8,140,6.6,21.8,True,7158,76.0,0 +7107,47,Male,129,91,146,29,86,102,139,6.3,32.0,81,145,Asymptomatic,True,0.1,False,Never,8.1,43,8.1,72.9,False,4881,54.5,1 +7108,46,Female,122,65,170,60,93,119,94,5.0,24.4,87,172,Non-Anginal Pain,False,2.9,False,Former,9.7,102,9.1,69.5,False,6182,54.8,0 +7109,82,Male,139,88,205,55,108,165,136,6.1,25.7,77,120,Typical Angina,True,0.7,True,Current,7.2,257,7.8,42.9,True,5486,84.3,1 +7110,45,Female,120,77,181,54,87,175,80,4.7,25.0,91,176,Non-Anginal Pain,False,0.6,False,Never,6.1,93,6.1,59.0,False,7371,57.6,0 +7111,51,Male,111,68,160,38,83,167,151,6.6,28.0,76,156,Asymptomatic,True,0.4,False,Never,3.0,107,6.8,31.8,False,5398,65.8,1 +7112,64,Female,114,71,243,69,139,152,123,5.6,22.9,83,147,Atypical Angina,True,0.5,True,Never,2.7,193,8.3,22.9,True,5474,35.4,1 +7113,56,Female,111,61,193,63,97,166,112,5.3,23.8,85,160,Asymptomatic,False,0.4,False,Current,2.8,244,6.2,43.4,True,7828,48.9,0 +7114,41,Female,127,79,240,44,133,260,105,5.3,29.2,79,171,Non-Anginal Pain,True,0.5,False,Never,5.2,96,7.8,42.0,True,6124,56.1,0 +7115,46,Female,131,66,212,82,110,69,78,5.0,22.9,82,170,Non-Anginal Pain,False,0.2,False,Former,3.8,206,7.0,38.7,False,3903,69.7,0 +7116,53,Female,119,71,162,42,80,217,86,4.8,28.3,78,171,Non-Anginal Pain,False,2.2,True,Never,3.6,168,7.1,48.7,True,3985,77.8,0 +7117,58,Female,127,82,225,71,117,178,93,5.4,28.1,89,163,Non-Anginal Pain,False,0.8,False,Never,5.8,138,7.3,39.4,False,3672,68.2,0 +7118,38,Male,116,70,159,49,75,147,120,5.8,23.0,79,171,Asymptomatic,True,0.9,True,Current,8.9,164,7.5,60.0,False,3155,50.3,1 +7119,65,Female,134,88,203,55,107,247,129,5.9,28.4,77,153,Non-Anginal Pain,False,1.1,False,Never,1.1,128,8.6,47.8,True,5322,69.5,0 +7120,66,Female,118,75,219,53,134,71,124,6.5,17.8,73,140,Asymptomatic,False,1.9,True,Current,7.2,0,8.8,58.8,False,3920,62.8,1 +7121,44,Female,113,72,188,83,61,233,100,4.9,32.2,81,185,Non-Anginal Pain,False,0.2,False,Former,7.3,238,7.5,32.4,True,11197,81.3,0 +7122,52,Male,123,75,214,57,101,185,152,6.7,27.9,87,167,Non-Anginal Pain,False,0.4,False,Never,2.7,126,7.6,40.2,False,5471,59.6,1 +7123,63,Male,125,86,197,56,95,198,119,5.2,24.3,93,125,Asymptomatic,False,1.4,True,Never,17.4,90,6.3,34.8,False,5565,87.3,1 +7124,48,Male,118,62,169,46,98,118,164,6.9,28.0,73,180,Asymptomatic,False,0.7,True,Current,5.0,224,6.4,57.5,True,9557,79.0,0 +7125,24,Female,102,53,211,58,124,190,88,4.4,22.5,79,199,Typical Angina,False,1.5,True,Never,1.3,169,5.3,48.7,False,5000,63.6,0 +7126,42,Male,144,86,208,72,96,139,76,4.6,29.9,90,172,Typical Angina,False,0.4,False,Never,8.0,111,7.3,67.7,True,6303,65.8,0 +7127,88,Male,161,81,187,58,120,83,111,6.1,20.1,77,99,Atypical Angina,False,0.9,True,Never,1.9,197,7.5,54.4,True,9621,67.3,1 +7128,42,Female,120,85,138,46,73,136,161,6.7,26.4,73,180,Asymptomatic,False,0.1,False,Never,1.9,146,8.1,57.9,True,5212,60.4,0 +7129,51,Male,143,74,214,35,147,134,138,6.4,31.3,77,141,Asymptomatic,False,0.6,False,Current,7.0,67,6.8,38.8,False,5931,64.8,1 +7130,80,Male,134,89,198,44,121,176,128,6.1,28.9,83,132,Asymptomatic,False,1.0,True,Former,4.2,172,5.8,33.6,False,4305,69.3,1 +7131,47,Female,124,92,171,62,82,142,146,5.9,20.6,71,161,Asymptomatic,False,1.6,False,Never,2.8,36,6.8,33.8,False,4190,73.7,0 +7132,46,Male,135,76,165,60,78,143,164,6.4,28.4,73,153,Asymptomatic,False,0.5,False,Never,2.1,201,8.1,40.9,False,3421,55.7,0 +7133,41,Female,134,80,255,76,139,216,102,6.1,21.8,72,165,Typical Angina,True,0.2,False,Never,0.1,117,6.5,48.0,False,6544,75.0,1 +7134,61,Male,145,95,152,42,98,122,110,5.5,23.6,84,164,Non-Anginal Pain,False,0.3,False,Former,3.6,99,6.1,66.0,False,4442,48.4,0 +7135,41,Female,129,77,202,56,114,151,156,6.5,28.5,72,164,Asymptomatic,False,0.6,False,Former,4.0,149,7.7,56.7,True,9306,57.2,0 +7136,66,Female,126,83,165,69,84,113,155,6.4,19.6,68,182,Typical Angina,False,0.1,False,Former,1.2,58,6.4,16.9,True,7175,74.1,0 +7137,69,Female,129,81,249,61,155,125,162,6.9,38.7,88,135,Atypical Angina,False,1.2,False,Former,1.7,105,7.4,70.2,False,3288,56.4,1 +7138,74,Male,139,91,246,54,149,192,127,6.8,27.7,80,114,Atypical Angina,False,2.6,False,Never,5.0,51,7.1,22.9,True,6577,67.0,1 +7139,71,Female,146,107,204,70,104,167,122,5.7,23.3,72,172,Non-Anginal Pain,False,0.6,True,Never,5.6,205,7.8,62.2,True,5425,49.9,0 +7140,50,Male,118,74,222,68,133,131,116,5.3,19.6,93,168,Non-Anginal Pain,False,1.3,False,Never,3.1,0,8.2,46.1,True,2578,35.7,0 +7141,34,Female,114,74,177,73,86,135,126,6.5,27.8,82,193,Atypical Angina,False,0.4,False,Never,1.5,148,6.1,54.5,True,7297,65.4,0 +7142,42,Male,147,90,170,50,103,55,99,5.2,28.8,81,186,Atypical Angina,False,0.3,False,Never,2.0,189,5.8,72.3,False,5891,75.7,0 +7143,84,Female,128,70,203,32,130,166,138,6.8,32.0,77,120,Asymptomatic,False,1.3,False,Never,1.3,4,7.5,33.9,True,2272,53.0,1 +7144,54,Male,112,73,208,42,152,78,131,6.4,28.1,72,170,Asymptomatic,True,2.0,True,Current,1.5,85,7.5,64.4,False,6922,51.8,1 +7145,62,Female,147,81,157,45,75,202,125,5.6,32.8,78,149,Asymptomatic,False,0.7,True,Current,12.7,154,6.7,39.0,True,9311,64.2,0 +7146,35,Female,108,64,213,68,122,89,113,5.9,26.6,91,197,Atypical Angina,False,0.1,True,Current,1.1,167,6.4,25.5,False,4536,59.6,0 +7147,69,Male,114,67,134,51,36,180,82,4.8,21.9,73,165,Asymptomatic,False,0.4,True,Former,4.7,103,5.9,56.3,True,5121,54.9,0 +7148,57,Male,128,80,192,46,101,173,146,6.5,23.8,85,147,Typical Angina,False,1.6,False,Never,7.3,78,6.5,21.6,False,4562,48.7,0 +7149,44,Male,132,86,174,43,111,136,133,6.0,30.5,78,153,Non-Anginal Pain,True,0.2,False,Never,4.7,146,7.5,36.1,False,5068,68.8,1 +7150,67,Male,122,87,125,50,35,199,114,5.8,26.4,66,130,Non-Anginal Pain,True,1.7,True,Never,4.1,202,6.8,67.0,False,4943,73.4,1 +7151,60,Female,159,91,203,50,99,233,128,6.0,28.6,75,147,Atypical Angina,True,2.6,False,Current,16.8,165,7.2,69.5,False,8789,60.2,1 +7152,25,Male,152,105,200,72,112,86,79,4.8,21.7,79,199,Typical Angina,False,3.4,False,Never,4.9,174,7.0,63.8,True,12585,74.7,0 +7153,63,Male,125,89,243,72,144,190,115,5.6,31.3,78,165,Asymptomatic,True,3.1,True,Never,12.6,150,7.1,32.7,True,6455,36.5,1 +7154,57,Male,129,78,192,56,117,125,133,6.3,20.9,73,161,Atypical Angina,False,0.3,False,Never,10.5,121,7.8,55.0,False,6902,54.8,0 +7155,38,Female,158,93,186,73,91,135,131,6.7,19.3,77,158,Non-Anginal Pain,False,0.3,False,Never,9.5,234,6.7,47.4,True,12895,90.5,0 +7156,49,Female,90,61,193,45,126,113,104,5.6,25.6,83,175,Non-Anginal Pain,False,0.8,False,Current,0.5,108,6.5,66.5,True,5435,56.8,0 +7157,45,Female,117,73,197,72,88,178,115,5.9,31.0,79,156,Typical Angina,False,1.0,True,Never,3.5,224,7.4,55.7,True,6610,81.4,1 +7158,71,Male,144,101,224,41,141,197,110,5.7,26.4,85,113,Non-Anginal Pain,False,1.8,True,Current,4.8,0,8.0,53.7,False,3867,44.9,1 +7159,63,Male,140,87,230,49,136,201,171,7.1,29.4,90,132,Asymptomatic,False,0.6,True,Never,14.4,146,7.7,22.9,True,7815,79.2,1 +7160,53,Male,131,96,234,60,118,256,138,6.2,26.6,82,148,Atypical Angina,False,0.8,True,Former,7.4,115,7.0,62.6,False,4075,76.7,0 +7161,55,Female,126,64,167,57,69,198,127,6.1,20.4,84,162,Asymptomatic,False,1.2,False,Never,10.2,138,6.0,58.4,False,4092,68.6,0 +7162,60,Male,133,73,163,44,78,226,107,5.2,27.6,79,138,Non-Anginal Pain,False,2.7,True,Former,16.7,141,6.8,42.9,False,7390,70.2,1 +7163,63,Male,131,86,160,49,81,136,104,5.4,17.0,81,142,Atypical Angina,True,2.2,True,Current,3.5,133,7.2,37.1,True,6984,45.6,1 +7164,70,Male,147,98,187,60,96,163,112,5.9,23.3,88,124,Non-Anginal Pain,True,1.0,False,Current,4.5,95,5.4,55.5,False,5755,35.6,1 +7165,76,Male,121,81,263,58,166,154,194,7.8,33.7,82,140,Asymptomatic,False,0.6,False,Current,7.6,80,6.2,37.1,False,2931,59.7,1 +7166,43,Male,132,78,141,54,67,134,98,4.9,24.2,85,182,Non-Anginal Pain,False,1.0,False,Current,1.6,194,8.4,57.9,True,4328,63.6,0 +7167,47,Female,126,79,168,69,71,171,136,6.7,20.2,83,174,Asymptomatic,False,1.1,True,Never,2.2,90,8.2,73.5,False,3481,52.9,0 +7168,53,Female,123,79,202,64,116,127,137,6.7,24.9,79,159,Atypical Angina,False,0.9,True,Never,4.7,153,5.6,49.1,True,9595,55.4,0 +7169,48,Female,110,72,194,66,107,119,120,5.7,19.9,75,176,Atypical Angina,False,2.1,False,Never,4.0,208,7.7,33.6,True,7890,68.3,0 +7170,66,Female,116,85,132,74,50,67,74,4.5,15.5,68,177,Atypical Angina,False,0.4,False,Never,2.6,200,9.5,28.7,True,4128,63.7,0 +7171,45,Male,122,67,154,57,77,85,87,5.1,23.9,66,181,Asymptomatic,False,0.4,False,Never,2.8,232,6.9,52.1,False,6995,27.6,0 +7172,53,Male,117,74,228,63,132,146,99,5.4,24.4,77,169,Non-Anginal Pain,True,0.3,True,Never,5.1,166,7.6,18.7,True,8042,52.9,0 +7173,50,Male,148,85,153,29,107,99,115,6.0,26.3,89,141,Asymptomatic,False,2.4,False,Former,2.3,62,6.9,31.8,False,4585,60.6,1 +7174,65,Male,147,89,161,39,85,181,154,7.6,25.4,104,135,Asymptomatic,True,1.1,False,Current,6.4,12,5.7,54.1,False,3689,38.3,1 +7175,72,Male,150,99,163,51,100,66,119,5.7,27.9,87,120,Non-Anginal Pain,False,0.2,True,Never,4.6,74,7.8,36.6,True,4647,59.6,1 +7176,45,Male,119,69,166,53,96,105,97,5.2,20.5,84,195,Asymptomatic,False,0.4,False,Never,2.4,129,7.2,58.1,False,6702,45.8,0 +7177,45,Male,91,67,162,60,68,176,99,5.8,22.3,79,183,Atypical Angina,False,0.1,True,Former,2.8,203,4.9,27.5,True,4279,67.9,0 +7178,69,Female,135,88,100,23,59,179,150,6.8,25.3,99,161,Asymptomatic,False,1.2,False,Current,4.0,147,5.7,38.8,False,5659,50.3,0 +7179,66,Male,138,84,161,42,81,195,125,5.5,21.5,87,151,Atypical Angina,False,0.1,True,Former,13.4,66,7.2,74.1,True,3506,69.6,0 +7180,63,Male,143,85,194,34,137,128,134,5.7,31.7,83,119,Asymptomatic,True,3.4,False,Current,5.6,161,8.5,53.2,True,5910,74.2,1 +7181,78,Male,150,91,199,63,96,179,137,6.3,19.2,76,116,Asymptomatic,True,0.6,False,Never,6.7,182,7.0,43.4,True,5428,70.8,1 +7182,62,Female,142,84,196,39,132,123,128,5.8,27.4,78,156,Atypical Angina,True,1.4,False,Never,4.2,108,5.6,40.9,True,5816,62.6,1 +7183,56,Female,139,82,204,70,106,169,98,5.0,27.8,76,164,Non-Anginal Pain,False,1.5,False,Never,2.4,118,7.3,42.3,True,4584,42.5,0 +7184,44,Male,121,81,170,53,89,154,106,5.7,20.1,72,168,Typical Angina,False,0.9,False,Never,3.3,218,5.2,40.5,True,7360,75.6,0 +7185,53,Female,129,81,222,60,136,119,125,6.0,24.3,92,140,Atypical Angina,True,5.4,True,Current,1.8,193,5.6,53.4,True,9404,78.0,1 +7186,66,Male,128,76,138,61,59,67,170,6.9,21.0,93,175,Asymptomatic,False,1.9,False,Former,2.2,121,8.3,34.4,False,6281,76.4,0 +7187,66,Female,153,108,161,49,100,107,160,6.5,30.5,89,134,Typical Angina,False,1.4,False,Never,0.5,41,7.0,46.3,False,4505,81.8,1 +7188,44,Male,141,75,128,64,50,72,186,7.7,22.9,81,184,Atypical Angina,False,1.0,False,Former,13.7,190,7.3,36.9,False,8058,97.1,0 +7189,39,Male,106,66,192,45,114,200,109,5.4,24.5,67,177,Non-Anginal Pain,False,0.1,False,Former,3.5,166,5.6,5.7,False,3158,62.1,0 +7190,26,Male,127,82,221,66,107,248,105,5.0,28.9,75,192,Non-Anginal Pain,False,0.3,False,Never,9.3,188,8.0,18.0,True,5978,55.1,0 +7191,51,Male,129,76,216,63,107,233,133,6.9,25.5,78,163,Asymptomatic,False,0.2,True,Never,2.5,152,8.2,24.0,True,3624,72.6,0 +7192,65,Female,163,97,217,69,122,209,160,6.8,27.8,92,145,Asymptomatic,True,3.8,False,Never,12.6,159,5.3,92.4,True,9283,63.3,1 +7193,63,Female,114,74,188,58,122,53,158,7.4,23.0,77,159,Non-Anginal Pain,False,0.6,False,Never,1.6,186,7.8,26.7,True,6860,57.7,0 +7194,54,Female,126,80,197,46,114,206,123,5.8,18.6,64,174,Non-Anginal Pain,False,0.5,False,Current,23.4,236,5.8,6.9,True,8106,62.0,0 +7195,42,Male,125,73,208,52,127,135,150,6.2,31.1,78,167,Asymptomatic,True,1.1,False,Never,9.2,44,7.2,40.3,True,8198,45.1,1 +7196,78,Female,134,87,202,46,120,154,117,6.4,22.0,76,120,Non-Anginal Pain,True,0.6,False,Never,0.9,125,7.9,53.8,True,4632,45.5,1 +7197,55,Male,130,78,134,66,51,101,115,5.5,22.9,76,165,Asymptomatic,False,1.0,False,Former,12.6,122,7.1,45.0,True,7591,75.5,0 +7198,54,Male,150,96,192,55,113,82,112,5.9,23.4,77,179,Asymptomatic,True,0.1,True,Never,6.8,247,7.5,42.7,True,10256,73.8,0 +7199,72,Female,127,73,198,66,109,134,156,7.0,28.8,87,173,Asymptomatic,False,0.5,False,Former,1.0,163,6.3,53.7,True,5983,76.9,0 +7200,72,Male,156,90,142,36,60,187,161,7.0,26.9,85,149,Asymptomatic,True,2.9,False,Never,3.9,46,6.4,46.3,False,4717,58.9,1 +7201,58,Female,151,100,141,64,54,104,120,5.7,27.3,99,171,Atypical Angina,False,0.1,False,Never,0.9,168,5.0,50.7,False,4941,70.3,0 +7202,38,Male,108,64,239,64,128,235,109,5.6,29.2,93,153,Asymptomatic,False,0.9,False,Current,5.0,220,6.5,55.0,False,5644,42.5,1 +7203,64,Female,148,101,192,61,103,196,112,5.6,26.4,82,170,Asymptomatic,True,0.6,True,Former,3.4,116,6.2,15.8,True,6155,43.2,0 +7204,66,Female,134,102,236,60,138,134,122,6.2,25.0,95,148,Asymptomatic,True,1.3,False,Former,2.1,135,5.3,33.5,False,6647,35.1,1 +7205,51,Female,133,97,179,53,94,167,116,5.6,24.4,95,162,Atypical Angina,True,0.2,False,Never,5.5,114,6.3,71.3,False,1422,72.9,0 +7206,76,Female,132,77,161,62,87,73,72,4.6,20.8,77,140,Typical Angina,True,0.5,False,Never,1.0,247,8.6,40.2,True,6470,53.6,0 +7207,49,Female,134,77,197,28,128,242,128,5.8,28.9,92,175,Asymptomatic,True,3.3,False,Current,6.1,115,8.7,50.8,False,6512,39.4,1 +7208,61,Male,138,84,188,55,105,166,148,6.5,26.1,71,169,Asymptomatic,False,1.7,False,Never,3.3,167,7.9,62.2,True,7007,53.4,0 +7209,45,Male,128,75,157,52,90,77,120,6.3,25.0,85,166,Asymptomatic,False,1.2,False,Never,17.0,188,6.7,50.6,True,4199,56.4,0 +7210,48,Male,137,84,217,47,123,193,134,6.0,23.2,76,151,Asymptomatic,False,3.0,False,Never,1.9,173,7.3,42.8,True,10656,35.6,1 +7211,63,Female,133,78,166,57,78,186,92,4.9,15.7,68,157,Atypical Angina,True,0.8,True,Never,3.9,227,8.0,25.5,False,9531,29.1,0 +7212,76,Female,148,98,133,60,35,168,149,6.2,34.4,85,172,Non-Anginal Pain,True,1.3,False,Never,2.0,91,6.8,44.3,False,5639,57.3,0 +7213,32,Female,113,68,200,58,111,197,83,4.9,24.9,88,189,Asymptomatic,False,3.9,False,Never,0.8,186,8.6,53.3,True,6792,38.0,0 +7214,77,Male,145,90,206,44,137,135,160,6.8,26.7,101,120,Asymptomatic,True,3.3,False,Former,2.2,94,7.2,58.7,False,4211,58.3,1 +7215,61,Male,136,85,211,53,113,245,142,7.1,30.4,92,133,Asymptomatic,True,0.6,True,Current,12.7,143,6.2,63.0,False,7173,69.3,1 +7216,30,Male,136,96,195,34,138,178,103,5.3,24.7,84,188,Asymptomatic,False,0.9,True,Former,2.1,163,7.3,31.0,False,4367,43.0,0 +7217,45,Female,129,76,171,61,87,81,143,6.3,24.1,88,187,Asymptomatic,False,0.4,False,Current,0.7,124,8.8,75.9,False,4627,67.1,0 +7218,69,Male,125,84,124,59,41,165,119,5.7,21.5,94,141,Typical Angina,True,0.6,False,Never,9.6,57,7.4,49.7,False,2869,67.4,1 +7219,31,Male,128,71,210,62,106,142,85,5.0,21.7,83,184,Asymptomatic,False,1.1,False,Former,10.4,144,7.2,57.6,True,7963,93.4,0 +7220,44,Male,115,88,169,62,74,166,158,6.4,26.1,74,166,Non-Anginal Pain,False,1.0,False,Never,2.3,102,6.4,26.4,False,6134,81.5,0 +7221,68,Female,162,102,186,54,120,180,156,6.4,30.3,88,154,Non-Anginal Pain,False,0.7,False,Current,2.7,0,6.5,54.7,False,2130,42.1,1 +7222,81,Male,121,67,183,57,113,133,130,6.0,21.6,73,113,Atypical Angina,False,0.8,False,Former,10.6,156,7.3,47.2,False,6804,52.3,1 +7223,34,Female,129,79,223,63,131,143,90,5.1,21.4,68,188,Asymptomatic,False,1.5,True,Never,9.0,246,6.1,39.3,True,10162,48.6,0 +7224,60,Male,141,78,185,53,95,204,143,6.3,28.6,83,168,Atypical Angina,False,0.8,False,Never,3.4,175,7.1,50.4,True,5201,51.5,1 +7225,70,Female,142,102,190,46,125,171,110,5.3,25.9,98,155,Non-Anginal Pain,False,0.1,False,Never,10.1,71,7.7,80.5,True,6318,60.5,0 +7226,51,Female,104,70,187,52,101,210,129,5.5,25.0,94,139,Non-Anginal Pain,False,0.7,False,Current,0.8,118,4.1,59.8,False,3918,50.3,1 +7227,51,Male,121,70,200,53,102,212,120,5.5,28.0,56,184,Asymptomatic,False,1.1,True,Former,2.6,239,5.9,46.3,False,9535,40.3,0 +7228,47,Male,142,95,130,39,72,120,112,5.1,28.1,70,191,Asymptomatic,True,0.9,False,Never,5.7,95,8.6,51.2,True,10475,47.2,0 +7229,59,Male,131,85,164,59,78,109,108,5.9,24.8,98,141,Non-Anginal Pain,False,0.5,False,Never,12.3,84,7.6,68.6,True,4903,59.5,0 +7230,55,Female,151,101,195,62,114,140,101,5.1,26.8,71,172,Non-Anginal Pain,False,0.5,True,Former,5.5,183,5.2,63.2,True,10842,70.9,0 +7231,48,Female,123,86,199,61,89,251,118,5.7,29.9,86,179,Non-Anginal Pain,False,1.3,True,Never,5.6,70,7.3,52.0,False,6958,58.8,0 +7232,42,Female,114,64,202,60,103,117,111,6.0,29.2,97,177,Asymptomatic,False,0.2,False,Never,7.0,126,6.9,27.1,True,4808,83.5,0 +7233,69,Male,165,105,257,72,153,141,139,5.8,30.4,94,164,Asymptomatic,False,0.2,True,Never,15.4,145,7.9,15.4,False,9556,57.8,0 +7234,40,Male,108,71,201,69,113,145,107,4.9,18.1,78,205,Typical Angina,False,0.9,False,Never,3.0,239,7.8,52.0,True,5487,67.8,0 +7235,54,Female,124,75,186,59,78,220,117,5.4,24.5,85,179,Asymptomatic,True,0.6,False,Never,8.6,191,7.8,37.9,True,8988,84.8,0 +7236,49,Male,109,73,210,43,133,113,124,5.9,30.2,81,191,Asymptomatic,False,0.3,False,Current,5.2,88,6.1,33.0,False,9476,65.4,0 +7237,64,Male,153,103,203,42,122,176,121,5.6,30.7,79,146,Asymptomatic,False,1.5,True,Never,4.0,154,8.3,24.5,True,5411,74.5,1 +7238,68,Female,150,111,194,51,113,169,130,5.7,26.3,64,121,Non-Anginal Pain,True,2.9,False,Former,2.2,120,7.8,51.4,False,4424,74.5,1 +7239,55,Male,132,78,176,38,116,137,146,6.3,26.3,95,144,Asymptomatic,False,0.0,False,Current,2.3,120,6.4,56.8,True,6441,23.6,1 +7240,61,Female,120,73,158,67,53,204,86,5.2,27.0,86,143,Atypical Angina,False,1.3,True,Former,3.3,90,6.2,74.4,False,8063,57.8,0 +7241,47,Male,158,106,236,35,155,211,150,6.9,33.3,101,156,Non-Anginal Pain,False,0.5,False,Current,9.7,81,6.7,39.0,False,4779,50.3,1 +7242,77,Male,151,94,176,53,105,156,144,5.9,24.5,86,119,Asymptomatic,True,2.3,True,Never,4.1,128,7.9,60.4,False,6423,66.4,1 +7243,45,Male,111,59,159,57,77,146,91,5.0,26.6,102,189,Asymptomatic,False,0.2,False,Former,11.5,70,5.8,45.4,False,1931,48.5,0 +7244,84,Female,122,71,209,72,123,128,110,5.4,18.7,78,125,Typical Angina,False,1.5,True,Current,0.4,161,7.0,41.0,True,4344,54.5,0 +7245,35,Female,114,63,193,46,100,273,124,5.9,40.5,79,186,Atypical Angina,False,2.1,False,Never,2.1,91,6.9,47.9,True,5398,42.0,0 +7246,49,Male,149,94,178,47,87,220,123,6.2,25.0,86,187,Atypical Angina,False,0.4,False,Former,14.7,187,6.7,53.0,True,9391,48.9,0 +7247,57,Male,108,66,147,39,76,138,62,4.6,25.7,70,157,Non-Anginal Pain,False,0.2,False,Former,3.8,179,6.9,59.5,False,4563,63.1,0 +7248,51,Female,139,87,202,66,101,178,133,5.7,23.0,81,156,Asymptomatic,True,0.3,False,Never,12.5,99,7.6,55.5,False,1309,73.8,0 +7249,21,Female,121,79,156,66,62,122,101,4.9,23.2,77,173,Typical Angina,True,0.5,True,Former,7.4,136,6.6,34.7,False,2741,43.4,1 +7250,70,Female,123,80,248,73,146,135,136,6.2,19.8,78,170,Atypical Angina,False,0.5,False,Never,11.7,131,5.5,49.2,True,7288,54.7,0 +7251,48,Male,144,89,237,45,157,124,137,6.5,23.5,78,148,Atypical Angina,True,0.2,False,Never,3.3,78,8.4,70.6,False,3411,43.1,1 +7252,71,Female,137,87,200,64,102,213,71,4.9,23.0,78,143,Non-Anginal Pain,False,1.9,False,Never,2.5,106,8.4,63.8,True,5818,29.5,0 +7253,48,Male,126,81,144,45,72,203,149,7.3,28.8,64,171,Asymptomatic,False,2.2,False,Never,8.3,120,7.6,51.8,False,5077,43.6,0 +7254,60,Male,120,92,183,52,107,126,142,6.4,24.6,82,165,Non-Anginal Pain,False,0.2,False,Former,4.4,179,6.9,71.2,True,5971,56.7,0 +7255,67,Female,123,70,182,56,105,128,136,5.9,25.1,91,147,Non-Anginal Pain,False,0.0,False,Former,8.7,99,6.6,23.3,False,3956,37.1,0 +7256,43,Female,102,67,151,50,68,151,88,5.2,26.0,89,182,Asymptomatic,True,0.5,False,Former,0.5,82,8.1,41.1,False,5793,61.4,0 +7257,67,Female,139,84,229,54,138,219,110,6.1,26.7,92,141,Non-Anginal Pain,False,0.2,False,Former,9.8,68,10.1,31.8,False,2712,67.6,1 +7258,57,Male,129,80,211,62,131,156,145,6.5,26.0,78,166,Non-Anginal Pain,False,0.3,False,Never,1.5,162,7.4,25.1,False,4720,35.3,0 +7259,51,Female,136,80,225,69,112,128,120,6.0,28.0,93,192,Asymptomatic,False,0.0,False,Former,0.4,66,6.6,64.3,False,5951,74.6,0 +7260,79,Female,137,91,190,59,78,195,118,5.6,25.5,95,125,Asymptomatic,True,6.1,False,Never,3.1,71,5.8,41.1,False,4726,72.8,1 +7261,78,Female,122,73,177,73,74,138,190,7.4,19.9,89,132,Asymptomatic,False,0.1,False,Former,1.6,76,6.1,52.7,True,9438,41.5,0 +7262,83,Female,149,101,203,66,117,57,150,6.7,22.6,87,115,Non-Anginal Pain,False,1.8,False,Former,1.2,130,8.0,31.8,False,2404,65.3,1 +7263,56,Female,135,92,214,57,128,118,112,5.8,23.2,74,167,Non-Anginal Pain,False,0.5,True,Never,4.5,202,5.7,47.1,False,4221,85.0,0 +7264,35,Male,114,68,227,46,124,302,156,6.9,26.9,77,181,Asymptomatic,False,1.1,False,Current,20.6,132,8.2,50.0,False,4102,68.8,0 +7265,33,Female,122,87,196,64,114,119,147,6.1,22.3,95,200,Asymptomatic,False,0.4,False,Current,1.8,218,5.8,33.6,True,10135,40.6,0 +7266,58,Female,137,85,165,43,92,146,128,6.4,26.3,65,145,Typical Angina,False,0.3,False,Never,3.5,49,8.4,61.7,False,3908,60.9,0 +7267,46,Male,131,83,204,68,117,102,114,5.8,23.4,88,169,Asymptomatic,False,0.6,False,Former,1.8,88,8.0,72.6,True,8440,54.0,1 +7268,59,Male,122,80,273,83,152,155,135,6.2,24.4,92,169,Asymptomatic,False,1.1,True,Never,7.8,254,4.6,23.2,False,6449,78.0,0 +7269,49,Male,107,71,173,54,99,120,123,5.4,27.9,73,166,Asymptomatic,False,0.4,False,Former,6.2,180,8.2,40.1,True,6440,61.7,0 +7270,34,Male,123,81,185,52,91,233,90,5.8,31.3,84,193,Asymptomatic,False,0.3,False,Current,5.0,84,5.7,69.4,False,5445,42.1,0 +7271,55,Female,158,104,159,26,98,200,130,6.1,36.3,93,165,Atypical Angina,False,4.1,False,Former,8.2,45,6.4,51.9,False,2282,27.2,0 +7272,71,Female,127,80,119,50,74,46,129,5.4,18.9,88,153,Asymptomatic,False,0.6,False,Former,0.3,163,8.8,53.4,False,4516,63.7,0 +7273,50,Male,135,83,224,43,153,115,152,6.5,29.7,94,134,Non-Anginal Pain,False,3.8,True,Current,1.7,77,4.8,78.9,True,5931,70.5,1 +7274,46,Male,131,88,142,56,53,173,133,5.7,22.5,63,154,Atypical Angina,False,1.0,True,Never,3.6,150,7.1,51.8,False,10285,24.2,0 +7275,37,Male,105,57,141,52,73,89,105,5.5,32.2,73,193,Asymptomatic,False,0.5,False,Former,10.4,217,7.4,52.5,True,8272,67.1,0 +7276,57,Male,136,81,183,57,99,106,109,5.3,17.9,75,168,Non-Anginal Pain,False,0.1,False,Never,3.9,134,6.0,35.7,False,6207,52.7,0 +7277,60,Female,136,94,179,65,72,224,139,6.3,31.4,91,150,Atypical Angina,True,0.3,False,Never,5.0,0,7.6,45.4,True,6346,66.2,1 +7278,53,Female,139,79,188,58,103,133,121,5.3,26.9,84,165,Asymptomatic,False,0.6,False,Never,3.4,149,7.2,15.3,False,6156,78.6,0 +7279,60,Female,124,87,132,60,36,221,135,5.7,24.1,83,173,Typical Angina,False,0.1,False,Never,14.4,138,8.5,29.2,False,4386,64.1,0 +7280,70,Male,147,88,218,64,106,250,115,5.3,24.5,79,124,Atypical Angina,False,1.6,False,Former,8.6,123,6.5,37.8,False,3775,49.6,1 +7281,62,Male,134,87,191,65,81,217,113,5.5,19.5,94,151,Typical Angina,True,0.8,False,Current,12.5,78,6.0,51.3,False,9866,57.6,1 +7282,19,Male,104,71,183,45,105,175,142,6.5,29.9,88,183,Atypical Angina,True,4.2,False,Never,3.6,107,5.5,44.5,False,6537,33.9,1 +7283,70,Female,136,73,215,79,114,111,139,7.0,27.6,73,123,Atypical Angina,False,1.6,False,Never,7.5,238,6.5,59.9,False,6947,59.5,1 +7284,56,Male,134,88,192,58,131,48,97,5.3,25.1,88,163,Asymptomatic,False,0.5,False,Former,4.8,103,7.6,65.0,False,8549,71.1,0 +7285,36,Male,130,82,161,44,84,117,121,5.1,28.5,82,185,Atypical Angina,False,1.2,False,Never,13.5,145,8.3,12.6,False,5940,41.3,0 +7286,61,Male,121,81,187,48,123,98,101,5.1,24.2,87,148,Typical Angina,False,1.4,False,Current,5.1,233,5.7,67.9,True,6175,41.3,0 +7287,43,Male,135,84,168,50,85,117,134,5.9,28.3,77,184,Asymptomatic,False,0.6,True,Never,3.9,75,10.0,46.3,True,7835,79.2,0 +7288,40,Female,118,65,175,47,111,106,121,5.7,28.2,84,187,Asymptomatic,False,1.0,False,Current,0.7,106,9.9,25.6,False,4499,55.0,0 +7289,58,Male,106,74,157,61,74,114,114,5.1,21.7,86,169,Asymptomatic,False,0.7,False,Never,3.6,187,7.6,31.4,True,5671,67.5,0 +7290,66,Female,125,72,215,61,111,133,136,6.6,20.8,59,149,Non-Anginal Pain,False,0.0,True,Never,1.7,142,5.3,23.5,False,4563,51.5,0 +7291,72,Female,139,93,216,67,116,162,111,5.9,23.8,81,158,Asymptomatic,False,0.4,False,Never,2.0,139,7.8,49.5,False,7267,68.3,0 +7292,52,Male,139,98,144,46,59,196,107,5.2,27.5,73,185,Non-Anginal Pain,False,0.3,False,Never,11.0,145,6.7,45.2,False,2569,84.2,0 +7293,58,Female,137,90,176,54,106,157,112,5.9,26.4,86,157,Asymptomatic,True,0.3,False,Former,11.4,84,7.2,70.1,False,4758,29.1,1 +7294,49,Male,108,56,201,69,105,174,123,5.8,18.8,71,170,Asymptomatic,False,0.1,True,Never,1.9,183,6.3,23.9,False,5656,53.6,0 +7295,41,Female,119,77,195,70,102,107,122,6.5,25.3,79,196,Atypical Angina,False,0.4,True,Current,1.3,190,6.7,43.6,False,10860,67.5,0 +7296,20,Male,109,66,193,62,99,97,108,5.9,18.8,72,208,Non-Anginal Pain,False,0.1,False,Current,2.2,148,9.1,53.7,True,10784,47.8,0 +7297,67,Male,138,93,173,42,109,98,162,6.8,24.9,89,123,Asymptomatic,False,0.3,False,Former,4.4,139,6.6,73.5,False,5202,36.3,1 +7298,58,Male,146,98,192,53,90,168,129,6.6,26.4,76,167,Non-Anginal Pain,False,1.7,False,Former,12.7,228,7.3,49.6,True,7004,72.7,0 +7299,61,Female,134,92,200,54,113,145,148,6.5,28.7,101,149,Asymptomatic,False,1.5,False,Never,3.6,132,5.5,43.0,False,3543,58.5,1 +7300,53,Female,114,69,212,67,125,119,119,5.6,20.5,70,176,Typical Angina,False,0.4,False,Never,2.0,130,7.5,41.9,False,4154,70.4,0 +7301,62,Male,117,73,193,51,105,143,150,6.9,22.3,86,150,Typical Angina,True,2.5,True,Current,12.7,27,4.4,62.6,False,6063,59.7,1 +7302,45,Female,132,74,180,62,96,82,109,6.0,17.9,92,173,Asymptomatic,True,0.0,False,Current,15.7,256,6.1,53.3,False,4989,57.7,0 +7303,71,Female,149,88,153,57,77,106,119,6.2,23.5,79,129,Non-Anginal Pain,False,3.9,False,Former,0.8,156,7.3,40.9,True,4101,55.6,1 +7304,70,Female,152,95,175,45,107,114,132,6.0,27.8,88,149,Atypical Angina,True,2.7,True,Never,0.4,89,4.4,44.7,False,4049,44.7,1 +7305,74,Female,116,65,195,49,124,74,119,5.9,26.8,66,158,Non-Anginal Pain,False,0.5,False,Former,0.6,164,5.7,46.6,False,3914,70.2,0 +7306,42,Male,127,83,177,47,97,129,103,5.3,29.5,93,198,Non-Anginal Pain,False,2.1,False,Never,6.4,140,5.0,26.0,False,7369,68.9,0 +7307,62,Male,125,78,176,66,86,120,122,5.5,20.3,78,161,Typical Angina,False,0.1,False,Never,9.6,155,5.5,30.3,False,8010,88.7,0 +7308,48,Female,111,74,191,44,98,183,123,5.8,24.9,82,163,Asymptomatic,False,0.1,False,Former,1.5,205,8.8,34.8,True,7414,61.0,0 +7309,49,Female,118,70,177,48,91,217,130,6.5,32.3,83,176,Asymptomatic,False,0.5,False,Former,0.4,155,7.1,25.5,True,6471,40.8,0 +7310,56,Female,125,93,249,62,142,157,137,6.4,25.0,64,150,Non-Anginal Pain,False,0.3,False,Never,1.0,172,8.9,26.1,True,7846,61.6,0 +7311,51,Male,125,69,135,40,53,195,129,6.6,30.4,80,176,Asymptomatic,True,0.0,False,Never,9.8,136,7.8,66.6,True,5668,43.3,0 +7312,33,Male,102,65,194,50,98,158,115,5.6,21.1,75,182,Asymptomatic,False,0.7,False,Never,4.0,174,8.8,42.4,True,7903,70.8,0 +7313,62,Female,160,95,194,60,122,82,99,5.7,23.8,79,155,Asymptomatic,False,1.0,False,Former,0.3,181,7.3,75.9,True,4537,48.5,0 +7314,62,Female,121,83,213,67,110,148,115,5.8,25.8,87,161,Asymptomatic,True,0.6,False,Never,7.2,143,8.2,65.8,True,9055,56.7,0 +7315,55,Male,127,79,193,56,107,104,127,6.5,24.3,84,148,Non-Anginal Pain,False,0.8,False,Former,2.4,166,6.3,60.3,True,9296,56.0,0 +7316,55,Male,141,94,161,85,59,93,100,5.4,20.4,78,172,Asymptomatic,False,0.5,False,Never,4.9,142,7.1,34.9,False,4425,68.0,0 +7317,41,Female,133,80,223,73,123,154,82,4.8,23.8,72,189,Asymptomatic,False,0.1,False,Current,1.1,236,8.4,33.8,False,6149,60.2,0 +7318,60,Male,149,90,172,47,120,57,145,6.5,21.9,74,140,Asymptomatic,False,3.0,True,Never,3.7,131,5.8,58.3,True,8739,48.1,0 +7319,77,Male,143,80,202,58,119,127,104,4.8,24.8,74,154,Asymptomatic,False,0.3,False,Never,5.4,139,8.6,40.0,True,9718,60.3,0 +7320,39,Male,111,74,131,59,55,130,102,5.2,24.4,74,187,Atypical Angina,False,0.2,False,Never,2.7,203,7.3,20.1,False,6300,70.6,0 +7321,48,Male,140,89,195,46,125,120,147,6.9,28.1,83,141,Asymptomatic,True,2.6,True,Current,6.2,100,7.4,36.9,True,7143,64.9,1 +7322,45,Male,135,95,212,69,83,210,119,6.0,24.4,85,163,Typical Angina,True,2.2,False,Current,11.1,102,5.7,20.0,False,4301,63.9,1 +7323,45,Female,114,81,236,65,137,193,105,5.1,23.8,72,171,Typical Angina,False,1.4,False,Never,3.1,99,5.3,55.8,False,8268,30.1,0 +7324,63,Male,139,87,182,43,101,174,124,5.9,27.0,81,171,Atypical Angina,False,1.2,False,Former,2.0,50,7.9,41.6,True,3356,77.9,0 +7325,75,Male,150,94,154,47,89,135,186,8.0,28.8,88,136,Atypical Angina,True,3.8,False,Never,9.9,102,6.2,37.8,False,4966,58.6,1 +7326,74,Female,118,72,223,68,101,229,173,7.4,30.9,80,109,Asymptomatic,False,1.4,True,Never,16.1,102,6.4,54.6,False,596,49.1,1 +7327,37,Female,128,76,194,79,77,203,122,6.7,27.7,83,185,Typical Angina,False,0.2,False,Never,2.8,336,7.3,48.1,True,9042,64.2,0 +7328,54,Male,141,92,162,40,91,197,151,6.6,32.7,83,152,Atypical Angina,False,0.6,False,Former,4.6,149,7.4,36.2,False,7299,100.0,1 +7329,49,Male,119,76,163,47,92,59,97,5.1,22.4,92,178,Atypical Angina,False,3.3,False,Current,4.6,248,7.5,50.2,True,12753,54.8,0 +7330,69,Female,148,106,207,60,123,104,103,5.4,20.5,79,116,Atypical Angina,False,0.9,False,Former,2.8,59,6.5,60.0,False,4438,64.3,1 +7331,74,Male,129,76,273,70,179,106,111,5.6,17.9,87,118,Atypical Angina,True,0.8,False,Current,1.9,136,5.6,27.3,True,5479,31.4,1 +7332,48,Female,118,71,216,83,118,101,103,4.8,28.0,90,167,Non-Anginal Pain,False,1.4,False,Never,1.9,189,6.7,50.2,True,5963,69.3,0 +7333,31,Male,147,80,170,31,120,138,130,6.0,33.9,97,189,Non-Anginal Pain,True,1.1,False,Current,13.3,125,6.0,39.8,False,6529,19.5,1 +7334,62,Female,114,67,213,68,98,223,113,5.1,28.8,76,164,Asymptomatic,False,3.2,False,Never,2.1,172,9.3,59.8,True,7310,58.3,0 +7335,54,Male,113,85,223,52,134,143,113,5.1,17.4,72,173,Atypical Angina,False,1.6,False,Former,2.1,201,7.3,56.9,True,7391,66.0,0 +7336,66,Female,126,70,167,66,74,144,138,6.0,30.0,73,164,Asymptomatic,False,0.3,False,Former,2.5,148,6.8,52.7,False,931,44.5,0 +7337,61,Male,122,70,180,44,106,166,160,6.7,36.6,81,159,Typical Angina,False,0.8,False,Former,6.1,124,7.2,30.3,True,7123,55.3,1 +7338,56,Female,130,77,129,58,63,115,105,6.0,19.4,79,190,Asymptomatic,False,0.2,False,Former,5.6,186,7.8,22.1,False,3051,50.1,0 +7339,45,Male,128,74,156,53,87,114,120,5.4,28.8,80,178,Asymptomatic,False,0.2,True,Former,3.7,84,8.7,51.7,True,3356,55.0,0 +7340,40,Female,117,74,169,86,43,134,145,6.1,23.2,82,200,Asymptomatic,False,0.2,False,Never,33.2,108,6.7,17.5,False,6055,46.8,0 +7341,64,Male,133,89,182,23,113,183,128,6.5,24.7,78,129,Non-Anginal Pain,False,0.5,False,Current,4.1,129,7.9,75.7,False,3813,62.9,1 +7342,42,Male,127,76,194,72,80,184,119,6.3,27.2,76,197,Non-Anginal Pain,False,0.2,False,Never,2.6,174,8.2,57.0,True,7270,55.3,0 +7343,55,Female,160,108,189,62,102,194,123,6.1,27.9,76,156,Typical Angina,True,2.1,False,Never,5.2,119,7.2,52.3,False,5012,61.9,1 +7344,48,Male,116,66,214,70,101,184,139,5.6,15.7,89,191,Atypical Angina,False,0.8,False,Never,1.9,182,6.4,34.1,True,3895,58.4,0 +7345,43,Male,120,75,180,41,110,132,107,5.8,28.5,77,189,Typical Angina,False,0.4,False,Never,6.3,85,7.8,38.7,False,6051,81.3,0 +7346,29,Male,118,70,191,60,90,171,91,4.9,29.2,84,205,Asymptomatic,False,0.1,True,Never,2.1,172,7.6,68.8,True,8252,63.7,0 +7347,64,Female,133,86,218,61,131,114,118,5.8,25.7,70,172,Non-Anginal Pain,False,1.3,False,Former,9.8,168,6.9,35.0,False,8392,28.4,0 +7348,76,Female,148,93,265,67,151,196,151,7.0,31.5,87,133,Non-Anginal Pain,False,2.2,True,Former,1.2,119,7.1,48.6,True,10747,57.2,1 +7349,32,Male,123,70,159,69,73,72,79,4.3,19.5,78,183,Asymptomatic,False,0.1,False,Former,3.2,184,7.4,64.7,True,7311,83.2,0 +7350,71,Female,151,95,163,45,97,126,121,5.8,26.2,67,124,Atypical Angina,False,0.5,False,Never,5.5,210,6.1,24.6,True,9055,66.8,1 +7351,22,Male,110,79,182,43,108,149,102,5.4,29.5,87,210,Atypical Angina,False,1.2,False,Current,2.1,247,8.9,73.0,False,7030,35.8,0 +7352,67,Male,129,79,174,48,89,141,125,6.2,22.4,67,146,Atypical Angina,False,0.2,False,Never,4.9,155,7.0,33.8,True,7586,71.9,0 +7353,48,Male,118,73,198,58,118,57,85,5.0,20.7,67,181,Atypical Angina,False,0.7,False,Former,5.8,229,8.2,43.2,False,6390,54.1,0 +7354,56,Female,125,82,274,79,173,130,106,5.1,20.2,79,189,Non-Anginal Pain,False,0.6,True,Former,1.6,197,6.0,58.2,False,2752,49.9,0 +7355,48,Female,116,65,171,50,95,190,151,6.7,26.7,83,174,Asymptomatic,False,0.1,False,Never,0.7,112,6.8,44.5,False,7019,52.8,0 +7356,88,Female,161,98,256,58,173,150,137,6.9,29.7,91,123,Asymptomatic,False,2.4,True,Current,3.6,160,6.4,77.7,True,7240,68.1,1 +7357,52,Female,123,75,191,58,100,152,133,6.3,28.2,83,152,Asymptomatic,False,1.0,False,Never,1.6,152,7.4,21.2,True,5081,65.4,0 +7358,28,Female,122,66,173,38,107,178,113,5.7,26.6,88,192,Typical Angina,False,1.2,False,Current,5.7,42,5.8,53.6,False,6032,45.8,0 +7359,59,Female,147,87,192,82,71,170,146,6.7,21.0,83,179,Asymptomatic,False,0.5,False,Former,3.1,278,7.2,50.1,True,8186,68.9,0 +7360,74,Male,138,94,191,40,118,241,104,5.3,28.0,86,139,Asymptomatic,False,2.2,False,Current,5.4,214,6.9,40.1,True,4719,50.2,1 +7361,41,Male,140,85,186,75,77,197,114,5.8,19.8,83,190,Asymptomatic,False,1.0,False,Never,5.8,225,8.0,37.3,True,8990,68.3,0 +7362,69,Female,141,89,172,74,96,75,125,6.1,21.5,86,153,Asymptomatic,False,1.2,False,Never,0.9,145,5.8,39.0,True,4272,57.8,0 +7363,26,Male,112,68,183,54,105,75,74,4.0,24.4,94,209,Asymptomatic,False,1.7,True,Current,3.2,290,7.3,56.4,True,10063,64.6,0 +7364,74,Male,106,68,224,66,106,229,96,4.5,19.6,73,164,Typical Angina,True,0.0,False,Never,12.2,238,6.4,31.5,True,5575,47.0,0 +7365,39,Male,142,99,164,49,93,123,158,6.4,24.8,79,160,Non-Anginal Pain,True,3.7,False,Current,8.6,120,7.7,59.1,False,5380,76.0,1 +7366,65,Male,135,101,144,47,58,184,128,5.8,28.5,77,125,Typical Angina,False,0.3,False,Never,8.7,123,6.2,31.1,True,5096,56.8,1 +7367,64,Male,138,86,155,61,86,35,81,5.1,22.9,89,148,Asymptomatic,True,0.3,False,Never,1.7,107,6.2,65.0,False,3481,66.4,0 +7368,69,Female,126,76,155,39,103,73,127,6.1,29.1,86,159,Atypical Angina,False,0.6,False,Former,0.7,101,6.3,57.8,False,5690,35.0,0 +7369,73,Male,154,101,194,44,115,139,155,6.8,33.0,78,147,Atypical Angina,False,0.3,True,Never,2.0,52,8.0,38.3,False,6486,56.9,1 +7370,65,Female,133,76,175,55,78,203,143,6.4,29.0,75,170,Atypical Angina,False,0.9,True,Former,1.3,173,6.1,3.0,True,8983,61.5,0 +7371,41,Male,112,70,193,51,124,113,143,6.8,29.3,81,184,Asymptomatic,False,0.4,False,Current,3.9,167,6.8,26.9,True,9308,52.9,0 +7372,47,Female,133,84,202,46,117,160,118,6.2,26.6,100,192,Asymptomatic,False,0.1,True,Current,0.8,160,7.1,52.7,False,6648,44.7,0 +7373,46,Male,129,73,121,42,61,124,145,6.5,25.5,82,159,Asymptomatic,False,0.1,False,Never,2.4,123,7.0,59.2,True,5141,54.0,1 +7374,58,Female,125,87,159,64,79,66,112,5.5,21.8,83,158,Asymptomatic,False,1.5,False,Never,3.1,56,8.5,48.9,False,6189,65.6,0 +7375,45,Male,100,74,231,50,144,154,131,6.3,30.3,82,193,Atypical Angina,False,0.1,False,Never,10.6,154,6.2,35.5,False,6505,83.6,0 +7376,49,Female,116,63,211,64,111,135,111,5.9,30.1,61,174,Asymptomatic,False,1.1,False,Never,5.0,230,7.7,29.4,True,10863,75.3,0 +7377,63,Female,134,92,178,46,111,97,139,6.7,29.2,93,131,Atypical Angina,True,1.8,False,Never,1.6,24,5.4,72.6,False,1102,36.8,1 +7378,75,Female,145,80,233,73,115,156,112,5.6,27.3,80,146,Non-Anginal Pain,False,0.3,True,Never,18.8,164,5.3,55.8,False,3685,83.9,0 +7379,51,Female,122,82,170,51,94,176,103,5.7,31.3,82,172,Non-Anginal Pain,False,1.3,False,Never,5.9,213,6.6,49.3,False,6966,34.0,0 +7380,56,Female,119,73,172,54,97,175,123,6.1,24.1,79,172,Atypical Angina,False,0.3,False,Never,0.1,138,5.5,18.3,False,4074,62.5,0 +7381,54,Male,137,81,196,83,88,64,89,5.1,26.7,78,158,Non-Anginal Pain,False,0.7,False,Former,7.9,132,6.1,90.9,True,7490,65.3,0 +7382,56,Female,132,86,159,55,84,195,166,7.0,30.6,86,162,Asymptomatic,False,2.5,False,Never,4.4,123,7.1,40.2,False,5693,48.7,0 +7383,64,Male,149,96,203,63,100,173,137,7.0,23.7,78,142,Asymptomatic,False,0.1,True,Former,9.9,189,4.5,43.8,True,8664,78.4,0 +7384,57,Male,159,99,157,42,91,122,105,5.1,29.0,99,135,Typical Angina,False,0.6,False,Former,3.9,64,6.5,60.0,False,5194,55.8,1 +7385,62,Male,131,80,153,58,93,40,119,5.5,18.1,75,149,Typical Angina,True,1.1,False,Never,9.2,226,7.3,32.4,True,8129,65.3,1 +7386,55,Male,115,75,218,52,131,155,147,6.1,25.8,78,136,Atypical Angina,False,3.3,True,Former,5.4,195,6.3,71.9,False,5606,52.8,1 +7387,29,Female,124,78,176,49,85,184,117,5.8,32.3,85,200,Atypical Angina,False,0.1,True,Former,2.5,188,8.4,45.8,False,6253,53.5,0 +7388,54,Female,136,80,189,65,97,159,103,5.2,29.4,73,179,Non-Anginal Pain,False,0.0,True,Former,2.3,219,6.9,50.4,True,6593,62.5,0 +7389,63,Male,115,63,171,82,41,242,140,6.6,23.5,83,142,Atypical Angina,False,1.0,False,Never,5.3,226,7.3,65.5,False,5254,71.5,0 +7390,45,Male,116,76,165,51,69,168,135,6.0,24.2,78,167,Asymptomatic,False,0.4,True,Never,1.9,74,5.5,57.1,False,2861,67.8,0 +7391,66,Male,124,71,168,49,90,151,123,5.8,31.9,84,168,Atypical Angina,False,0.9,False,Never,7.5,0,9.3,62.1,False,2135,69.4,0 +7392,41,Male,144,97,186,51,98,184,110,5.8,25.2,72,189,Asymptomatic,True,0.1,False,Never,13.8,196,6.0,32.7,True,7399,74.1,0 +7393,51,Female,139,89,203,83,79,188,76,5.0,26.0,91,190,Asymptomatic,False,0.4,False,Never,4.8,165,7.4,60.0,True,8724,61.1,0 +7394,52,Male,141,91,235,41,139,255,138,6.9,37.6,69,164,Asymptomatic,False,0.7,False,Never,6.5,180,5.6,54.0,True,8591,69.3,0 +7395,27,Male,123,80,182,41,95,157,140,6.3,33.4,95,179,Atypical Angina,False,1.9,False,Never,1.6,47,6.9,54.8,False,6419,83.1,1 +7396,43,Male,114,78,225,57,114,271,124,5.8,33.0,86,170,Asymptomatic,True,1.6,True,Current,11.5,160,4.9,71.0,False,6983,40.9,1 +7397,37,Male,122,75,192,44,124,95,160,6.9,25.7,89,180,Atypical Angina,False,1.8,False,Never,6.7,91,7.6,53.5,False,5472,67.1,1 +7398,50,Female,138,103,191,41,112,153,134,6.4,27.7,78,183,Asymptomatic,True,0.3,False,Current,6.5,172,8.4,31.5,True,6898,30.5,0 +7399,59,Female,125,78,137,43,80,89,95,4.9,20.7,83,178,Typical Angina,True,0.8,False,Never,1.8,56,7.0,37.2,False,2670,44.3,0 +7400,28,Male,126,75,190,58,100,234,117,5.4,33.3,83,204,Atypical Angina,True,3.2,False,Never,7.8,133,6.6,44.3,False,6575,55.5,0 +7401,44,Female,123,80,122,67,46,95,113,5.8,25.3,73,188,Asymptomatic,False,0.5,True,Never,7.6,143,6.9,50.2,False,7411,77.7,0 +7402,58,Male,142,98,139,73,50,58,117,5.4,15.9,83,171,Atypical Angina,False,0.1,False,Former,14.0,244,7.5,40.6,True,8672,65.0,0 +7403,68,Female,141,88,188,49,120,59,139,6.1,26.8,88,123,Asymptomatic,True,2.4,True,Former,7.0,92,5.4,62.8,False,3736,46.4,1 +7404,68,Male,135,101,105,45,45,143,90,4.8,19.9,78,136,Asymptomatic,True,0.4,False,Never,1.8,224,6.6,29.4,True,7029,51.3,0 +7405,51,Female,121,81,192,40,119,141,60,4.0,23.6,69,158,Non-Anginal Pain,False,0.5,True,Never,1.9,165,6.1,60.6,False,6805,49.7,1 +7406,52,Female,150,85,197,61,107,162,113,5.3,27.8,88,172,Asymptomatic,False,0.7,False,Former,3.2,97,7.2,93.6,False,5237,69.6,0 +7407,64,Male,159,106,174,58,95,140,158,7.0,22.9,76,168,Non-Anginal Pain,True,1.0,True,Former,3.7,0,6.9,68.1,True,6261,74.7,0 +7408,60,Male,122,76,233,69,115,200,102,5.0,24.8,53,171,Asymptomatic,False,0.1,False,Never,3.8,126,7.5,41.7,True,5317,61.5,0 +7409,70,Female,124,84,121,39,61,144,118,5.8,24.6,84,158,Atypical Angina,False,0.2,False,Former,1.0,76,5.9,30.7,False,5649,44.3,0 +7410,37,Male,103,74,189,60,131,46,115,5.7,24.4,75,192,Non-Anginal Pain,False,0.2,False,Current,2.2,178,5.7,37.0,False,5826,84.7,0 +7411,60,Male,140,95,223,77,100,198,70,4.2,18.4,58,186,Asymptomatic,False,0.6,False,Former,20.5,178,9.7,43.2,True,7029,77.6,0 +7412,61,Male,134,88,178,49,96,160,102,5.4,23.9,59,149,Typical Angina,False,0.2,True,Never,1.7,97,7.5,30.7,False,3405,78.1,0 +7413,66,Male,109,59,141,47,62,103,89,4.4,23.8,87,162,Asymptomatic,False,0.6,False,Never,3.4,152,4.8,42.5,True,4180,77.4,0 +7414,24,Male,129,87,154,58,78,101,143,6.9,23.7,90,186,Asymptomatic,False,0.3,True,Current,15.3,86,7.9,90.1,False,6765,62.4,0 +7415,54,Female,132,94,129,50,68,80,133,6.4,27.2,84,159,Asymptomatic,False,1.4,False,Never,7.2,101,7.8,71.9,True,5739,37.1,1 +7416,65,Male,127,76,217,58,133,140,137,5.9,21.0,84,140,Non-Anginal Pain,False,0.1,True,Never,1.9,235,7.3,55.7,False,5993,68.0,0 +7417,66,Female,136,97,194,63,105,165,139,6.2,18.9,68,169,Non-Anginal Pain,False,0.6,False,Former,13.9,117,5.2,35.2,False,5999,56.2,0 +7418,66,Female,120,68,195,52,112,163,116,5.3,26.8,93,159,Non-Anginal Pain,False,1.7,False,Never,15.9,142,6.9,52.7,True,8301,79.5,0 +7419,26,Female,115,69,145,64,55,137,111,5.8,22.4,89,205,Non-Anginal Pain,False,0.1,True,Current,0.2,117,6.3,51.0,True,4213,42.9,0 +7420,45,Male,138,87,179,45,91,189,137,6.0,25.8,84,179,Asymptomatic,False,1.0,False,Never,1.5,0,5.7,47.1,False,4748,81.8,0 +7421,61,Female,151,92,147,48,86,159,106,4.5,23.9,89,157,Atypical Angina,True,0.3,True,Former,3.7,122,6.7,24.8,True,7346,63.7,1 +7422,46,Female,126,74,225,73,123,147,141,6.5,27.0,73,185,Asymptomatic,False,1.6,False,Never,7.9,187,9.0,29.9,True,9249,52.1,0 +7423,36,Female,116,61,168,57,101,48,113,5.6,15.0,62,192,Typical Angina,True,1.2,False,Never,8.4,221,7.1,67.9,True,8794,88.2,0 +7424,42,Female,94,65,167,69,66,178,87,4.9,19.5,82,187,Asymptomatic,False,0.6,True,Never,0.0,171,6.0,36.6,False,4325,100.0,0 +7425,51,Female,132,77,198,59,95,173,124,5.8,30.7,82,172,Asymptomatic,False,0.2,False,Never,13.8,96,7.1,59.9,False,4894,61.0,1 +7426,59,Male,137,91,148,46,91,150,124,5.4,28.3,84,194,Asymptomatic,False,0.1,False,Current,3.9,166,7.3,26.5,False,6099,60.9,0 +7427,51,Female,154,103,237,41,148,204,136,6.3,28.4,96,168,Asymptomatic,False,4.4,True,Current,4.1,120,8.4,56.4,True,7616,48.4,1 +7428,44,Male,133,78,180,51,98,180,92,4.6,23.4,77,210,Asymptomatic,True,0.4,False,Never,8.7,187,4.4,51.1,True,9204,45.8,0 +7429,64,Female,132,83,256,85,128,158,127,6.5,23.0,98,140,Asymptomatic,False,1.5,False,Never,0.5,54,7.5,40.4,True,6827,74.7,0 +7430,39,Female,99,69,209,83,100,163,100,4.9,20.8,94,185,Asymptomatic,True,0.2,False,Never,10.5,177,5.9,49.5,True,7578,77.4,0 +7431,72,Male,146,96,188,47,109,119,60,4.3,22.7,75,140,Atypical Angina,False,0.2,True,Never,8.3,137,4.7,49.1,False,4958,53.4,0 +7432,47,Male,125,77,171,45,83,237,110,4.9,26.9,92,166,Asymptomatic,True,4.6,False,Never,6.1,70,6.7,55.2,False,4195,44.0,1 +7433,64,Male,124,77,239,66,142,86,104,5.2,25.6,81,171,Asymptomatic,False,0.1,False,Never,2.4,133,6.3,28.5,False,5155,64.3,0 +7434,49,Female,127,90,147,70,63,93,136,6.5,23.3,74,184,Non-Anginal Pain,False,1.9,False,Never,6.8,277,8.1,45.0,True,5775,53.6,0 +7435,88,Female,140,86,194,41,126,128,120,5.9,32.2,89,122,Non-Anginal Pain,False,2.1,False,Former,2.1,54,6.9,6.0,False,6058,55.7,1 +7436,70,Female,142,76,153,33,94,154,120,5.7,29.6,92,100,Asymptomatic,False,0.6,False,Former,2.7,4,5.4,44.5,False,2977,96.2,1 +7437,69,Female,146,99,207,70,99,140,132,6.2,15.0,68,145,Atypical Angina,False,0.0,False,Never,1.3,117,5.8,19.6,True,7933,50.6,0 +7438,39,Male,111,76,129,29,81,79,100,5.2,24.7,75,180,Atypical Angina,False,0.6,False,Current,2.9,219,6.5,38.4,False,5644,72.3,0 +7439,53,Female,132,79,197,68,110,77,117,5.5,26.9,82,160,Asymptomatic,True,0.3,False,Never,12.0,96,6.5,49.7,False,5643,55.1,1 +7440,52,Male,122,84,169,49,90,140,140,6.5,29.6,75,150,Asymptomatic,False,0.2,True,Never,2.2,212,7.1,36.6,True,6473,70.4,0 +7441,39,Male,110,85,205,70,99,149,114,5.6,19.3,79,192,Asymptomatic,False,0.3,False,Never,7.7,210,9.4,61.8,True,8976,84.3,0 +7442,67,Female,152,100,202,68,86,236,134,6.3,27.2,84,143,Non-Anginal Pain,False,0.9,False,Former,2.9,67,6.0,44.5,True,6027,64.9,0 +7443,75,Male,167,110,228,43,150,183,142,6.3,25.5,89,130,Asymptomatic,True,5.4,False,Never,12.8,129,6.2,79.9,False,6777,70.9,1 +7444,45,Male,120,83,176,75,81,116,92,5.9,30.8,77,178,Asymptomatic,True,1.2,False,Never,1.6,110,7.8,52.8,False,4747,57.9,0 +7445,44,Female,128,91,161,69,64,128,94,5.1,23.0,78,168,Typical Angina,False,2.2,False,Never,10.8,174,6.8,52.0,True,8286,78.5,0 +7446,68,Male,130,81,139,59,62,114,140,6.2,23.6,94,168,Asymptomatic,True,0.6,False,Never,3.1,177,7.7,50.5,False,5667,45.5,0 +7447,61,Female,149,95,180,66,94,116,141,6.4,21.4,85,136,Non-Anginal Pain,False,4.6,False,Former,0.5,171,7.7,80.1,True,7288,83.3,1 +7448,60,Male,120,78,165,49,96,210,100,5.4,27.8,76,176,Asymptomatic,False,1.4,False,Never,2.3,80,7.6,14.2,True,5234,38.7,0 +7449,55,Male,124,71,155,51,75,124,172,7.5,29.4,91,144,Asymptomatic,False,0.6,False,Never,3.0,55,6.8,72.1,False,9358,62.2,0 +7450,43,Male,130,77,191,37,117,187,111,5.4,25.7,69,157,Atypical Angina,False,1.6,False,Current,8.4,152,7.7,68.6,False,3322,40.1,0 +7451,44,Female,116,63,170,50,82,171,108,5.0,28.9,83,189,Atypical Angina,False,0.5,False,Current,1.6,111,6.3,52.9,True,4802,64.9,0 +7452,60,Male,135,100,187,39,109,101,99,5.6,23.7,82,152,Asymptomatic,False,0.2,False,Never,5.4,15,7.0,57.9,False,500,50.9,0 +7453,57,Male,114,79,213,48,140,153,131,5.9,21.4,81,171,Typical Angina,False,1.0,True,Current,3.8,166,5.6,65.1,True,7850,63.2,1 +7454,42,Female,114,71,206,56,127,87,134,6.1,28.5,68,192,Asymptomatic,False,0.1,False,Current,1.7,184,7.7,50.4,False,4502,62.0,0 +7455,67,Female,119,80,192,50,128,150,166,7.6,31.3,77,149,Asymptomatic,True,0.1,False,Never,2.4,80,7.4,75.4,False,1912,27.5,1 +7456,50,Male,109,64,198,60,108,188,111,5.5,21.3,85,190,Non-Anginal Pain,False,0.8,False,Former,2.3,97,6.1,47.8,True,6510,62.2,0 +7457,70,Female,137,89,192,71,104,148,128,5.7,30.8,97,143,Asymptomatic,True,3.8,False,Never,8.6,92,4.6,61.6,False,5965,44.0,1 +7458,62,Male,136,75,120,51,47,87,104,5.8,21.9,72,180,Asymptomatic,False,0.3,False,Never,2.7,212,8.6,66.2,False,7156,62.5,0 +7459,63,Male,136,79,187,28,123,163,122,5.7,28.2,80,129,Non-Anginal Pain,True,1.3,True,Never,2.9,77,7.4,45.6,False,3067,21.5,1 +7460,60,Male,142,84,175,51,91,202,115,5.9,26.8,85,160,Non-Anginal Pain,False,2.1,False,Current,5.9,152,8.2,45.1,False,5323,77.2,0 +7461,61,Male,129,83,223,53,128,159,151,6.8,27.0,71,174,Asymptomatic,False,0.2,False,Current,6.9,140,6.4,74.3,False,7616,59.6,0 +7462,54,Female,128,76,149,72,66,82,106,5.1,23.6,84,153,Non-Anginal Pain,False,0.3,False,Never,0.6,132,8.3,48.6,False,7809,62.0,0 +7463,38,Male,121,68,155,62,60,169,112,5.6,27.2,100,190,Non-Anginal Pain,False,0.6,False,Former,7.5,203,6.2,53.1,True,6535,85.4,0 +7464,47,Male,134,78,167,48,91,144,98,4.8,22.6,83,157,Typical Angina,False,1.7,True,Former,2.3,184,6.8,47.9,False,7053,67.5,0 +7465,61,Male,135,79,160,35,92,189,131,5.8,24.6,79,151,Asymptomatic,False,0.9,False,Never,1.8,146,6.6,39.2,False,2871,73.6,0 +7466,61,Female,130,87,237,47,140,240,105,5.8,36.4,86,151,Atypical Angina,False,1.6,False,Never,0.2,215,7.0,31.9,True,5818,67.3,0 +7467,69,Female,101,58,187,81,80,120,159,6.6,24.2,74,166,Asymptomatic,False,1.4,False,Never,4.3,278,7.1,21.6,True,10084,47.5,0 +7468,36,Female,116,67,183,64,109,78,123,5.9,19.6,94,192,Atypical Angina,False,0.8,False,Former,1.8,153,5.8,47.3,True,7370,69.9,0 +7469,56,Male,114,76,163,56,81,126,121,5.8,22.5,75,192,Asymptomatic,False,0.4,True,Former,12.4,234,7.5,64.7,True,13031,71.8,0 +7470,59,Female,115,70,200,44,125,154,150,6.5,24.9,84,148,Asymptomatic,False,1.1,True,Never,5.3,125,5.6,52.2,False,5431,50.4,1 +7471,71,Male,146,86,167,42,78,259,129,6.2,25.4,87,140,Atypical Angina,True,0.1,False,Never,3.5,144,5.9,57.0,True,6738,79.0,1 +7472,78,Female,129,85,170,53,91,111,161,6.9,21.0,87,130,Asymptomatic,False,1.2,False,Never,2.6,113,8.4,72.5,False,3511,59.0,1 +7473,35,Female,125,66,157,62,67,146,153,6.8,26.2,81,189,Asymptomatic,False,0.4,True,Never,10.0,183,9.5,42.9,False,5229,38.0,0 +7474,59,Male,133,91,202,67,112,137,101,5.1,23.6,77,145,Atypical Angina,False,0.4,False,Never,12.0,216,7.9,65.2,True,8254,56.8,0 +7475,48,Female,120,78,206,42,120,208,119,6.1,36.0,72,181,Atypical Angina,False,0.2,True,Never,2.4,99,7.7,19.8,False,4684,53.2,0 +7476,42,Male,124,79,155,40,97,95,138,6.3,25.3,93,163,Asymptomatic,False,0.5,False,Never,2.6,137,5.6,62.8,False,7325,50.6,0 +7477,56,Female,131,77,215,60,126,154,108,4.5,28.9,78,148,Typical Angina,True,0.5,False,Current,2.1,161,5.8,42.7,False,8083,25.4,1 +7478,73,Female,146,88,230,66,120,224,112,5.3,19.6,75,138,Non-Anginal Pain,False,1.2,True,Former,2.1,213,6.0,49.5,False,6417,62.2,0 +7479,36,Female,119,65,149,47,65,141,83,5.4,26.1,93,198,Asymptomatic,False,1.9,True,Former,0.8,54,7.7,62.9,True,4029,38.9,0 +7480,53,Male,125,74,174,60,84,136,95,5.4,26.6,98,182,Asymptomatic,False,0.6,False,Never,17.2,175,7.2,33.7,False,4662,100.0,0 +7481,62,Female,143,90,194,50,114,111,151,6.5,36.1,93,137,Asymptomatic,False,1.1,False,Never,2.2,87,6.4,62.6,False,6755,62.7,1 +7482,39,Male,117,85,144,56,82,132,123,6.0,27.7,89,171,Non-Anginal Pain,False,0.1,False,Never,6.4,186,7.3,47.1,True,6658,58.7,0 +7483,58,Male,132,80,220,51,131,168,157,6.9,32.1,79,183,Asymptomatic,False,0.0,False,Never,2.3,112,5.8,42.8,True,7555,4.8,0 +7484,39,Female,129,86,245,80,138,178,112,5.7,24.1,72,184,Typical Angina,True,1.5,False,Current,2.9,271,8.7,23.2,True,10505,71.3,1 +7485,54,Female,122,81,264,56,163,253,151,6.6,31.2,82,178,Atypical Angina,False,2.3,False,Former,11.1,164,8.5,62.1,True,9304,54.0,0 +7486,51,Female,129,66,243,66,145,120,133,5.9,24.7,88,192,Non-Anginal Pain,False,2.1,False,Never,3.0,152,9.2,20.4,False,1981,59.4,0 +7487,70,Female,136,90,201,55,111,184,142,6.7,25.7,67,118,Atypical Angina,True,1.0,True,Never,2.6,138,6.1,41.3,False,7157,58.4,1 +7488,62,Female,129,83,190,56,120,105,129,5.5,21.4,91,152,Typical Angina,False,0.5,False,Former,4.2,116,8.6,67.0,False,4258,61.1,0 +7489,46,Female,92,66,199,71,103,181,128,6.3,27.5,73,146,Asymptomatic,True,4.6,False,Former,1.2,154,8.2,33.8,False,3203,42.3,1 +7490,50,Male,138,90,205,59,136,65,126,6.0,27.0,81,166,Asymptomatic,False,0.2,True,Never,5.1,114,5.8,32.6,False,7062,64.6,0 +7491,37,Female,115,74,214,60,130,139,102,5.5,24.8,92,188,Non-Anginal Pain,False,0.1,False,Current,2.1,144,8.2,32.9,False,6242,57.2,0 +7492,61,Male,125,76,237,62,133,210,112,6.0,21.3,89,133,Atypical Angina,True,1.4,True,Never,5.7,93,8.2,71.5,True,5831,52.2,1 +7493,22,Female,127,81,148,45,80,124,130,6.2,29.6,92,184,Asymptomatic,False,0.1,False,Never,8.4,197,8.5,43.7,True,3560,83.8,0 +7494,65,Female,141,93,233,54,134,210,123,6.2,30.3,82,138,Non-Anginal Pain,False,3.0,True,Former,5.5,189,5.9,33.1,False,4470,71.2,1 +7495,39,Male,110,78,160,56,75,134,109,5.8,19.3,92,175,Atypical Angina,False,0.1,False,Current,3.9,80,8.2,75.0,False,9140,62.4,0 +7496,41,Male,112,71,148,57,54,147,123,5.4,23.9,81,171,Asymptomatic,False,0.7,False,Current,6.0,261,7.4,52.0,True,5342,29.2,0 +7497,55,Female,125,83,259,48,150,302,119,5.4,29.3,78,138,Non-Anginal Pain,True,0.9,False,Current,19.7,194,6.9,16.5,True,5118,69.2,1 +7498,48,Male,124,78,145,55,87,35,100,5.7,21.0,88,162,Non-Anginal Pain,False,0.4,True,Never,2.1,112,4.5,54.9,True,6512,71.1,0 +7499,39,Male,126,72,253,70,133,170,120,6.1,26.5,87,205,Non-Anginal Pain,False,0.8,False,Former,2.6,165,8.9,58.2,True,7575,40.6,0 +7500,49,Female,131,78,166,53,80,115,118,6.4,30.6,80,142,Asymptomatic,True,1.0,True,Never,11.1,81,7.0,49.7,True,6695,57.5,1 +7501,71,Male,136,97,121,50,76,43,123,6.0,31.7,75,147,Non-Anginal Pain,False,3.5,False,Never,5.7,161,8.6,52.7,True,7764,51.2,0 +7502,46,Female,138,87,164,59,81,210,119,5.6,26.7,78,183,Atypical Angina,False,0.5,False,Former,6.5,115,8.5,43.2,False,1099,53.6,0 +7503,30,Female,102,67,185,54,101,156,115,5.4,29.2,76,197,Asymptomatic,False,0.2,False,Never,0.2,124,8.1,43.7,False,4085,71.6,0 +7504,71,Female,145,104,213,76,97,143,110,5.4,22.1,79,133,Non-Anginal Pain,False,0.2,False,Never,6.2,187,6.6,33.9,False,5781,62.8,0 +7505,37,Male,103,70,194,59,94,223,161,6.9,29.6,86,202,Non-Anginal Pain,False,0.4,False,Former,8.7,189,6.6,31.9,False,6152,70.1,0 +7506,45,Male,120,88,205,78,87,159,130,6.1,23.7,65,184,Atypical Angina,False,0.5,False,Never,4.0,179,9.6,50.4,True,4867,81.5,0 +7507,64,Female,123,65,183,35,125,141,121,5.7,28.7,84,130,Non-Anginal Pain,True,2.8,False,Current,5.4,136,5.6,47.8,False,5885,15.0,1 +7508,54,Male,134,81,225,55,113,241,121,5.9,26.2,93,164,Asymptomatic,False,0.9,True,Never,7.2,99,7.1,57.5,True,8355,56.4,0 +7509,57,Male,134,89,181,21,128,191,126,6.3,32.3,75,165,Non-Anginal Pain,False,0.5,False,Never,4.9,135,8.5,63.2,False,5467,51.7,0 +7510,54,Male,115,83,185,50,92,159,147,6.5,30.3,88,180,Typical Angina,False,0.3,False,Never,10.9,136,6.5,38.9,False,5330,50.0,0 +7511,45,Male,133,90,164,50,81,84,110,5.5,23.5,71,179,Typical Angina,True,0.1,False,Former,3.0,179,7.2,55.7,False,5659,69.2,1 +7512,61,Female,115,70,183,53,105,115,97,5.6,25.1,78,140,Asymptomatic,False,0.8,True,Current,4.9,92,9.5,58.3,False,5781,66.2,1 +7513,52,Male,108,73,144,43,64,177,124,6.4,28.8,81,139,Asymptomatic,False,4.0,True,Former,11.0,115,6.7,52.5,False,7185,62.1,1 +7514,31,Female,124,79,221,58,146,117,117,6.2,30.4,92,185,Non-Anginal Pain,False,0.8,False,Never,0.4,168,6.9,38.1,False,5435,80.6,0 +7515,58,Male,144,85,173,39,108,174,127,5.6,33.1,90,158,Atypical Angina,False,0.9,False,Never,1.7,166,9.4,79.3,False,4513,53.4,0 +7516,48,Female,106,63,211,52,139,108,118,5.7,17.7,81,155,Typical Angina,False,1.2,False,Former,9.0,105,5.9,23.8,True,6469,26.7,1 +7517,61,Female,137,83,218,58,126,85,119,5.4,21.3,75,165,Asymptomatic,False,0.5,False,Never,2.7,229,6.5,54.8,False,5094,57.4,0 +7518,54,Female,117,87,167,67,60,189,140,6.1,32.8,84,195,Asymptomatic,False,1.3,False,Former,11.5,195,5.2,62.3,True,7045,65.1,0 +7519,37,Female,125,74,194,68,119,89,109,5.6,26.6,85,210,Typical Angina,False,1.2,True,Never,2.0,79,7.2,23.3,True,5890,67.8,0 +7520,35,Male,137,89,216,68,136,81,86,4.6,28.6,74,201,Asymptomatic,False,1.2,False,Never,4.3,222,7.9,26.1,True,8086,44.6,0 +7521,61,Male,131,77,178,36,107,201,134,6.0,20.7,69,135,Typical Angina,False,0.5,False,Current,3.2,93,7.5,56.1,False,5224,42.7,1 +7522,43,Male,134,90,180,42,99,217,141,6.5,29.5,81,151,Asymptomatic,False,1.5,False,Never,9.9,85,8.7,58.6,True,9004,57.5,1 +7523,39,Male,118,80,143,62,50,132,110,4.9,20.7,80,171,Asymptomatic,False,0.3,False,Former,18.0,251,8.1,10.2,True,7209,66.1,0 +7524,50,Female,111,65,184,54,106,139,116,5.3,25.5,88,166,Non-Anginal Pain,False,0.6,False,Former,1.9,143,7.9,70.0,True,5095,46.1,0 +7525,59,Female,108,76,224,74,122,145,104,5.0,19.8,71,164,Atypical Angina,True,0.6,False,Never,8.9,252,5.4,27.2,True,7817,73.4,0 +7526,60,Female,131,77,147,41,89,131,149,6.5,25.0,74,163,Typical Angina,False,0.4,True,Former,15.8,161,6.9,38.3,True,6506,61.7,0 +7527,46,Female,116,81,167,56,94,127,107,4.7,25.1,65,152,Asymptomatic,True,1.7,False,Former,12.3,219,8.4,43.3,False,5105,74.4,1 +7528,50,Female,120,84,205,75,102,122,80,4.6,23.0,83,187,Atypical Angina,False,0.5,False,Never,7.0,222,7.3,61.1,True,8419,51.3,0 +7529,78,Male,135,77,151,56,99,67,142,6.3,20.6,81,130,Atypical Angina,True,0.5,True,Never,4.1,8,6.9,18.1,False,2057,68.8,1 +7530,35,Female,102,63,191,70,97,123,126,6.3,23.2,78,194,Non-Anginal Pain,False,2.7,False,Never,15.4,203,5.3,23.5,True,9816,66.1,0 +7531,40,Male,129,84,232,39,149,191,131,6.2,26.4,85,189,Asymptomatic,True,1.3,True,Former,9.6,110,5.2,45.0,True,8443,45.6,1 +7532,53,Female,127,78,181,61,94,143,119,6.1,30.0,83,181,Atypical Angina,False,0.6,False,Former,6.4,158,7.4,35.7,False,4849,49.6,0 +7533,62,Female,127,75,181,56,82,147,127,5.8,31.3,76,144,Asymptomatic,True,0.6,False,Never,0.2,216,6.5,53.6,False,6607,42.3,1 +7534,47,Female,117,89,176,43,99,179,121,5.9,24.9,85,182,Non-Anginal Pain,False,1.0,False,Current,1.6,201,7.2,51.6,False,5412,50.8,0 +7535,51,Female,153,90,186,61,96,176,112,5.7,23.9,80,153,Asymptomatic,True,0.7,True,Never,4.5,157,7.1,63.0,True,4293,65.7,1 +7536,70,Female,130,87,207,63,133,35,97,4.9,21.3,89,142,Asymptomatic,False,0.8,True,Current,6.0,77,8.7,47.0,True,6272,74.1,0 +7537,58,Female,137,95,258,65,138,238,136,6.1,25.8,80,162,Typical Angina,True,1.6,False,Current,16.4,244,6.8,42.0,True,10941,45.0,1 +7538,65,Female,151,101,186,34,120,170,108,5.6,31.6,75,144,Atypical Angina,True,1.1,False,Former,5.4,145,5.5,50.4,False,3892,57.9,1 +7539,29,Female,115,79,167,61,89,126,110,5.2,22.7,79,192,Non-Anginal Pain,False,1.2,True,Never,2.5,136,6.1,37.1,True,9143,66.4,0 +7540,39,Male,131,80,150,51,54,139,77,5.0,29.9,81,187,Asymptomatic,False,1.4,False,Never,13.4,114,7.1,47.7,False,8998,50.6,0 +7541,62,Female,136,84,190,30,117,116,153,7.0,35.8,89,148,Asymptomatic,True,1.6,False,Never,2.2,83,7.1,70.1,False,5805,49.6,1 +7542,79,Female,140,98,285,86,150,149,92,5.6,24.7,92,142,Asymptomatic,False,0.1,False,Never,0.1,211,6.2,66.3,True,4986,61.0,0 +7543,67,Female,140,108,241,50,156,140,112,5.8,28.1,74,147,Asymptomatic,False,1.1,False,Never,0.5,68,6.8,45.4,False,7462,78.6,0 +7544,78,Female,129,77,132,65,40,115,87,5.0,20.6,88,156,Typical Angina,False,1.0,False,Never,13.1,126,6.9,54.0,True,4929,82.4,0 +7545,51,Female,126,72,168,80,77,132,113,5.6,23.3,75,152,Asymptomatic,False,0.7,False,Never,5.2,178,4.2,54.1,True,8873,66.5,0 +7546,67,Female,121,68,151,57,76,155,128,6.0,20.9,74,156,Asymptomatic,False,1.1,False,Former,2.4,211,7.3,33.1,False,5828,62.7,0 +7547,42,Male,140,84,203,62,113,196,110,5.5,26.8,72,173,Non-Anginal Pain,True,1.3,False,Never,3.0,252,7.6,46.7,True,7271,65.2,0 +7548,45,Female,131,78,186,50,102,175,100,5.2,28.3,86,185,Non-Anginal Pain,False,0.6,False,Former,14.2,108,7.2,58.2,False,8093,59.4,0 +7549,55,Male,155,105,172,44,117,89,118,5.3,26.9,76,140,Asymptomatic,True,0.6,False,Current,11.9,165,5.7,45.1,False,4964,77.3,1 +7550,70,Male,122,85,232,55,126,248,86,4.5,26.7,66,145,Asymptomatic,False,1.7,True,Never,13.0,122,5.8,31.2,True,6355,65.0,0 +7551,48,Female,117,82,190,61,100,164,87,4.9,26.3,84,176,Non-Anginal Pain,False,0.7,True,Never,9.4,101,6.0,42.0,True,7406,76.1,0 +7552,54,Female,122,76,176,57,104,124,90,5.4,27.5,76,171,Non-Anginal Pain,True,3.0,True,Current,1.3,242,6.7,33.8,False,5276,49.9,1 +7553,68,Male,133,82,215,49,108,242,74,4.8,32.4,80,186,Asymptomatic,False,0.7,True,Never,2.0,225,6.7,56.3,True,7129,56.1,0 +7554,36,Male,130,85,176,52,108,135,145,6.7,30.8,83,180,Non-Anginal Pain,False,0.7,False,Never,2.9,144,4.8,68.1,False,5105,75.9,0 +7555,70,Female,124,84,237,54,132,200,87,5.0,33.8,72,156,Atypical Angina,False,0.3,False,Never,0.6,162,8.6,35.9,True,5227,56.9,0 +7556,68,Male,127,72,196,63,108,165,116,6.2,22.6,83,152,Asymptomatic,False,2.0,True,Never,6.1,170,6.8,32.3,False,5131,34.2,0 +7557,56,Male,128,72,222,52,140,167,120,5.6,25.6,77,130,Typical Angina,True,5.2,False,Never,3.4,94,5.6,28.6,False,7609,44.0,1 +7558,80,Male,150,99,202,49,141,142,99,5.5,23.4,81,121,Atypical Angina,True,0.3,False,Current,10.2,61,7.1,71.9,False,4565,37.0,1 +7559,41,Female,116,70,176,68,93,165,134,5.5,25.7,61,188,Asymptomatic,True,1.8,False,Former,5.1,206,5.2,27.5,False,6297,43.8,0 +7560,55,Female,143,80,177,54,105,132,110,5.7,16.5,94,163,Non-Anginal Pain,False,1.5,False,Former,13.1,22,5.5,45.4,False,3735,68.2,0 +7561,66,Male,133,92,162,54,75,118,109,5.4,22.4,80,150,Asymptomatic,False,0.8,True,Former,13.3,107,7.5,89.7,False,5769,59.5,1 +7562,58,Male,129,91,174,57,83,220,131,6.4,25.8,87,137,Asymptomatic,True,2.4,False,Former,8.1,189,8.1,52.5,False,4166,58.6,1 +7563,39,Female,139,99,125,39,64,151,125,6.0,24.8,104,175,Asymptomatic,False,0.6,True,Never,10.0,36,7.5,70.5,True,7175,50.9,0 +7564,47,Male,123,82,181,39,122,174,124,5.6,24.9,77,163,Non-Anginal Pain,True,1.2,False,Current,2.0,218,7.8,63.7,True,10241,29.1,1 +7565,35,Male,132,83,122,52,50,163,91,4.8,30.2,79,199,Typical Angina,False,0.7,False,Never,3.7,124,7.3,42.7,False,8746,39.8,0 +7566,67,Female,146,89,179,40,99,202,170,7.7,33.4,82,158,Asymptomatic,True,1.5,False,Former,6.0,71,8.2,49.7,False,4013,58.3,1 +7567,69,Male,142,84,170,67,94,101,98,4.6,17.4,93,148,Asymptomatic,False,0.8,False,Former,5.8,135,5.8,33.2,True,7311,73.7,0 +7568,40,Male,110,66,156,77,79,69,161,6.3,22.4,89,177,Asymptomatic,True,0.4,False,Never,10.8,203,7.0,66.5,True,10186,47.9,0 +7569,62,Male,140,99,150,53,56,227,162,6.6,24.0,89,165,Non-Anginal Pain,False,0.4,False,Current,9.2,51,6.4,36.6,True,6360,39.6,0 +7570,28,Male,98,62,178,45,102,168,183,6.4,27.4,80,191,Typical Angina,False,0.2,False,Current,7.7,202,8.5,42.4,True,9550,52.6,0 +7571,36,Male,110,62,149,65,60,169,128,6.1,29.1,86,199,Typical Angina,False,1.6,False,Current,19.4,88,7.1,45.5,True,10527,77.1,0 +7572,52,Male,113,71,264,46,165,191,132,6.4,27.2,78,143,Asymptomatic,False,0.3,True,Current,2.3,122,7.5,37.7,True,7989,41.2,1 +7573,48,Male,129,78,221,69,105,243,159,6.9,28.1,91,165,Typical Angina,True,4.2,False,Never,10.1,81,6.8,59.4,False,6449,59.5,1 +7574,45,Male,113,63,200,65,97,151,115,5.5,15.0,81,204,Asymptomatic,False,0.5,False,Current,6.2,215,3.8,51.9,True,7843,84.1,0 +7575,54,Female,117,71,219,66,127,160,145,6.5,28.0,74,154,Atypical Angina,True,0.3,True,Current,1.4,234,9.1,30.4,True,7519,33.7,1 +7576,36,Male,111,66,195,49,115,119,118,5.3,16.5,77,184,Non-Anginal Pain,False,2.1,False,Current,23.7,151,7.5,62.0,False,4753,55.2,0 +7577,39,Female,125,72,193,59,101,145,102,5.4,24.5,83,181,Asymptomatic,False,0.2,False,Current,14.6,95,8.4,68.3,True,6930,66.6,0 +7578,63,Female,127,88,208,57,112,138,115,5.8,23.8,80,175,Asymptomatic,False,1.1,True,Former,5.2,252,7.3,49.3,True,11061,82.1,0 +7579,34,Female,120,62,110,39,70,99,120,5.3,21.8,88,200,Asymptomatic,False,0.3,False,Current,2.5,202,5.8,28.5,True,7936,43.8,0 +7580,84,Female,136,86,158,32,100,146,92,4.6,28.0,81,158,Non-Anginal Pain,False,0.9,True,Former,3.1,168,7.5,40.7,False,3722,44.7,0 +7581,43,Male,126,71,220,72,131,117,127,5.9,21.6,87,174,Typical Angina,False,0.2,False,Former,1.5,108,8.3,54.4,True,10399,41.4,0 +7582,48,Male,123,89,127,40,67,118,124,5.8,27.5,85,150,Atypical Angina,False,0.0,False,Never,13.6,120,7.8,47.8,False,6114,71.2,0 +7583,52,Male,132,84,215,69,119,151,147,6.5,23.4,100,169,Non-Anginal Pain,True,0.6,False,Former,11.5,38,8.3,35.8,True,7627,79.5,0 +7584,62,Female,126,74,129,62,58,71,74,4.5,16.4,66,162,Asymptomatic,False,0.1,False,Never,0.5,218,8.6,35.1,True,8638,62.2,0 +7585,42,Female,133,80,213,46,123,275,159,7.0,26.4,73,197,Typical Angina,True,0.1,False,Never,7.7,91,6.9,35.5,False,6423,67.7,0 +7586,31,Male,113,76,217,59,121,157,105,5.3,25.7,80,187,Non-Anginal Pain,False,1.0,False,Former,18.0,269,6.9,46.4,True,8380,74.0,0 +7587,46,Male,119,80,187,41,115,114,107,6.1,32.0,83,169,Asymptomatic,True,1.0,False,Never,2.1,96,7.6,53.4,False,5750,79.8,1 +7588,66,Female,158,103,183,57,112,130,109,5.9,34.0,85,167,Asymptomatic,False,0.6,False,Never,6.2,17,7.6,48.3,False,4571,60.1,0 +7589,50,Male,131,89,227,61,131,145,131,6.0,27.0,88,167,Atypical Angina,True,1.4,False,Never,4.3,209,5.9,62.5,True,11112,69.1,1 +7590,54,Female,105,59,199,61,98,191,135,6.1,21.0,75,142,Atypical Angina,True,1.6,False,Former,12.3,180,5.8,59.9,False,4985,56.3,1 +7591,57,Female,124,88,187,63,82,207,137,6.3,23.1,70,174,Atypical Angina,False,0.4,False,Never,10.3,3,6.6,43.4,False,2346,46.9,0 +7592,55,Male,108,67,177,36,101,189,132,6.2,28.3,84,177,Non-Anginal Pain,False,0.3,False,Never,3.2,60,9.0,29.4,False,4018,50.2,0 +7593,48,Female,120,78,187,55,107,105,128,6.2,26.6,84,161,Typical Angina,False,1.8,True,Current,3.3,161,7.3,41.4,True,4932,73.1,1 +7594,70,Male,163,99,239,66,132,228,138,5.7,33.9,92,123,Non-Anginal Pain,True,0.7,False,Never,4.7,104,7.6,68.8,False,3363,44.1,1 +7595,43,Male,149,78,187,32,136,115,140,6.7,32.1,94,166,Asymptomatic,False,1.4,True,Never,4.7,169,5.2,47.8,True,9909,60.6,1 +7596,59,Female,123,86,204,50,139,93,89,4.8,25.0,88,156,Asymptomatic,False,0.6,False,Never,1.2,157,8.6,43.0,True,7619,40.2,0 +7597,44,Male,115,73,139,58,44,167,97,5.1,24.5,92,198,Non-Anginal Pain,False,0.6,True,Never,4.6,102,5.7,51.0,False,4634,57.0,0 +7598,53,Male,127,81,197,59,102,151,117,5.4,22.9,88,143,Asymptomatic,False,0.7,True,Former,10.4,140,6.3,74.9,False,6634,66.2,0 +7599,76,Female,152,97,224,50,143,196,166,7.0,30.8,85,149,Typical Angina,True,0.1,True,Never,1.0,68,7.2,45.4,False,500,55.2,1 +7600,66,Male,148,88,190,44,123,174,110,5.8,28.4,84,133,Asymptomatic,True,0.3,True,Never,3.5,138,6.3,52.7,False,5400,42.3,1 +7601,58,Male,131,93,213,48,136,133,85,5.2,26.9,73,156,Asymptomatic,True,1.2,False,Never,8.8,99,5.9,61.5,False,3504,70.1,0 +7602,51,Male,115,73,171,54,96,154,84,5.4,15.9,76,184,Asymptomatic,False,0.6,False,Current,6.8,282,9.2,70.6,True,11282,67.8,0 +7603,76,Female,151,104,219,83,103,187,122,5.9,24.9,87,141,Non-Anginal Pain,False,4.7,True,Never,13.5,132,6.4,40.8,False,6390,69.4,1 +7604,64,Female,144,86,166,48,77,213,154,6.7,29.1,92,118,Asymptomatic,False,0.7,False,Never,6.9,69,6.7,64.4,False,4755,72.2,1 +7605,55,Male,135,81,181,67,91,119,107,4.9,18.3,59,173,Atypical Angina,False,0.9,True,Current,1.7,223,7.9,65.4,False,3655,69.4,0 +7606,42,Female,134,92,178,48,93,204,133,5.8,20.1,79,189,Atypical Angina,False,1.3,False,Never,6.8,123,7.9,40.6,False,7648,62.5,0 +7607,40,Female,124,85,222,59,137,138,139,6.3,25.0,87,164,Typical Angina,True,0.8,False,Former,2.1,13,6.7,49.3,False,2140,35.5,1 +7608,59,Male,114,78,129,62,52,35,83,4.5,23.0,76,164,Asymptomatic,False,0.5,False,Former,5.7,127,6.4,26.9,False,4633,75.0,0 +7609,51,Female,106,68,206,58,114,171,116,5.5,18.7,76,175,Atypical Angina,False,1.4,False,Former,1.2,170,5.3,61.0,False,4606,42.1,0 +7610,60,Male,125,78,219,79,91,169,147,6.3,22.9,70,163,Asymptomatic,False,0.9,False,Never,8.6,213,6.7,34.1,True,5385,73.0,0 +7611,45,Male,124,70,205,60,117,159,110,5.9,25.4,81,166,Asymptomatic,False,0.9,True,Former,9.9,177,6.0,13.8,True,7559,44.2,1 +7612,47,Male,110,61,200,50,107,176,156,6.4,28.8,91,146,Typical Angina,True,1.6,False,Never,6.3,146,7.3,45.1,True,6277,37.2,1 +7613,57,Female,133,84,146,58,69,85,99,5.3,25.3,73,153,Asymptomatic,False,1.7,False,Former,2.2,186,5.5,43.4,True,4694,46.5,0 +7614,64,Male,136,89,158,49,71,142,120,6.1,33.5,62,168,Atypical Angina,False,0.9,False,Never,1.8,173,8.1,23.8,True,4904,68.3,0 +7615,46,Female,122,74,279,51,187,214,100,5.6,27.1,81,164,Atypical Angina,True,1.5,False,Never,0.8,143,10.5,31.9,False,4864,82.0,1 +7616,54,Female,129,74,222,38,111,301,167,7.3,35.3,83,157,Asymptomatic,False,1.2,False,Never,6.6,34,5.9,59.1,False,4649,56.6,1 +7617,56,Female,115,78,173,72,71,113,99,5.2,25.5,75,167,Non-Anginal Pain,False,1.0,False,Former,0.7,160,8.0,32.3,False,6306,67.8,0 +7618,47,Male,125,83,170,58,91,157,82,5.2,24.7,100,156,Non-Anginal Pain,False,0.4,False,Former,5.2,24,7.4,40.8,False,6306,66.8,0 +7619,56,Male,127,84,197,52,111,168,112,5.5,24.3,77,160,Asymptomatic,True,0.4,False,Current,4.7,255,5.9,42.0,True,6224,56.3,1 +7620,80,Female,138,77,182,56,84,190,119,6.2,27.6,74,163,Asymptomatic,False,1.2,False,Former,7.5,76,5.7,27.3,False,6631,56.6,0 +7621,84,Female,125,85,213,63,122,94,110,5.6,16.8,74,150,Asymptomatic,False,0.8,False,Former,7.8,180,7.0,61.4,True,5151,66.0,0 +7622,28,Male,143,98,143,50,52,166,125,5.9,22.9,78,170,Typical Angina,False,4.0,False,Current,20.0,36,5.7,81.4,False,7084,61.0,1 +7623,56,Female,137,87,222,56,128,224,135,6.9,31.7,73,173,Atypical Angina,False,0.1,False,Never,2.6,188,8.1,45.9,True,6906,65.0,0 +7624,52,Female,100,71,149,34,100,102,130,5.7,22.5,92,200,Typical Angina,False,0.4,False,Current,2.0,131,8.7,35.6,False,4936,72.9,0 +7625,71,Male,103,54,187,35,120,142,144,6.1,27.0,82,171,Non-Anginal Pain,False,0.8,True,Never,10.4,142,6.5,45.1,True,8119,47.9,0 +7626,55,Female,117,73,175,43,109,122,114,5.9,24.5,91,155,Atypical Angina,True,1.8,False,Never,4.9,104,7.3,25.0,False,5697,67.4,1 +7627,46,Female,131,84,201,53,129,143,133,6.2,30.7,85,186,Atypical Angina,False,0.9,False,Never,2.6,142,6.5,72.1,True,5368,47.4,0 +7628,71,Female,138,85,218,56,111,239,112,5.0,19.3,57,166,Asymptomatic,False,0.7,True,Current,11.4,282,5.7,29.0,True,7636,49.8,0 +7629,63,Male,149,88,226,44,160,74,129,6.2,31.9,78,157,Non-Anginal Pain,False,0.6,False,Never,3.4,46,7.6,42.6,False,3082,61.8,0 +7630,34,Male,112,68,243,60,152,202,101,5.2,27.1,73,195,Non-Anginal Pain,True,0.6,False,Never,2.7,252,6.0,14.2,False,7805,55.7,0 +7631,40,Male,118,74,228,68,117,197,100,5.1,19.5,80,179,Asymptomatic,False,1.0,False,Former,2.3,89,7.2,32.5,False,10097,40.1,0 +7632,65,Male,144,94,200,21,128,226,154,7.0,35.0,88,142,Asymptomatic,True,0.0,True,Never,7.9,0,7.9,47.6,False,814,47.6,1 +7633,54,Female,94,68,204,62,94,174,122,5.4,17.7,68,187,Non-Anginal Pain,False,0.0,False,Never,0.8,285,5.5,31.4,False,7297,84.3,0 +7634,40,Female,108,69,176,64,108,135,134,5.8,22.3,71,201,Non-Anginal Pain,False,0.8,True,Former,0.0,189,5.6,17.4,True,7515,40.8,0 +7635,57,Female,113,52,180,70,84,66,104,5.6,20.6,85,184,Typical Angina,False,0.2,True,Former,1.7,195,5.6,52.5,True,9441,100.0,0 +7636,76,Female,143,89,190,62,100,122,148,6.5,25.2,51,134,Atypical Angina,True,4.7,False,Never,9.8,93,6.9,50.9,False,999,64.7,1 +7637,55,Male,120,82,224,66,131,137,106,5.6,22.7,73,160,Typical Angina,False,0.5,True,Never,6.2,79,7.8,17.2,True,5991,59.8,0 +7638,54,Male,111,71,128,21,99,93,125,5.8,22.3,78,139,Atypical Angina,False,2.0,False,Never,9.7,160,8.2,15.5,False,7647,55.4,1 +7639,77,Female,124,57,198,34,125,146,126,6.3,24.4,73,138,Non-Anginal Pain,True,3.0,False,Never,5.6,121,6.9,65.2,True,7352,51.3,1 +7640,54,Male,95,56,196,59,109,74,91,4.5,20.3,59,196,Asymptomatic,False,1.4,False,Never,10.2,285,9.4,15.1,True,8469,69.7,0 +7641,74,Female,136,76,211,48,146,38,85,4.2,21.6,66,157,Non-Anginal Pain,False,2.5,False,Current,0.4,207,6.5,21.0,True,8236,64.7,0 +7642,55,Female,126,80,176,74,66,124,150,6.9,23.2,76,151,Atypical Angina,False,0.1,False,Never,0.8,150,7.1,50.7,True,8850,63.6,0 +7643,53,Female,147,94,194,65,92,162,114,5.6,30.5,61,184,Asymptomatic,False,0.2,True,Former,0.5,183,7.9,50.8,True,9002,51.4,0 +7644,44,Female,145,87,170,53,92,125,137,5.8,20.8,72,193,Non-Anginal Pain,False,0.4,True,Never,3.2,101,6.8,58.5,False,4793,52.9,0 +7645,35,Female,120,93,132,27,82,130,84,5.1,27.3,83,191,Non-Anginal Pain,False,0.0,False,Never,12.4,157,7.4,30.0,True,8787,51.9,0 +7646,55,Female,137,82,170,55,104,137,144,6.4,27.4,85,148,Asymptomatic,True,4.1,False,Never,0.3,109,4.7,38.1,False,3753,64.0,1 +7647,58,Female,118,80,198,71,94,164,135,6.0,21.9,91,158,Non-Anginal Pain,False,3.1,False,Former,3.1,117,8.1,48.4,False,4435,38.2,0 +7648,41,Female,105,76,169,59,80,185,112,5.3,25.2,84,191,Asymptomatic,True,1.9,False,Former,0.1,220,7.5,65.9,True,7683,53.1,0 +7649,47,Female,139,90,198,39,129,133,113,5.6,28.1,70,169,Non-Anginal Pain,False,0.1,False,Former,1.9,182,4.5,46.2,False,2017,67.6,0 +7650,51,Male,137,84,208,76,104,220,100,5.0,27.9,71,162,Asymptomatic,False,0.2,False,Never,4.5,212,5.9,63.2,True,8713,65.2,0 +7651,32,Male,112,62,134,61,44,176,64,4.2,15.9,88,190,Typical Angina,False,1.1,True,Former,3.7,192,7.2,43.7,False,7557,65.7,0 +7652,47,Male,136,75,201,55,128,106,121,5.4,26.0,78,167,Atypical Angina,False,0.8,True,Never,4.4,81,7.2,42.7,False,1200,65.6,1 +7653,29,Female,111,73,140,73,35,126,108,5.4,33.9,98,184,Non-Anginal Pain,False,0.4,False,Never,0.2,92,5.8,47.2,False,3615,67.1,0 +7654,48,Female,101,74,199,58,127,117,114,6.0,24.4,64,179,Asymptomatic,False,0.5,False,Former,3.1,139,8.0,52.6,False,7414,45.9,0 +7655,54,Male,123,72,191,48,114,147,87,4.7,28.1,86,172,Non-Anginal Pain,False,3.4,False,Never,9.0,268,6.0,56.9,True,12636,82.1,0 +7656,69,Male,136,74,225,55,148,179,143,5.8,23.9,81,146,Asymptomatic,False,0.8,True,Never,3.5,19,7.8,60.3,False,5260,60.3,0 +7657,30,Female,132,87,232,44,148,226,118,5.5,28.6,73,201,Asymptomatic,False,0.7,False,Current,6.7,150,8.4,81.2,False,3994,44.8,0 +7658,41,Female,122,83,169,38,89,250,112,6.4,34.1,91,170,Atypical Angina,False,3.2,True,Former,4.6,168,6.7,60.2,True,4905,45.2,1 +7659,63,Female,135,85,215,83,96,189,110,5.4,26.4,70,171,Asymptomatic,False,0.1,False,Never,0.5,188,8.7,38.2,True,2044,39.7,0 +7660,61,Female,129,73,210,56,122,145,106,5.7,20.8,89,169,Asymptomatic,False,1.1,False,Former,0.6,113,7.0,42.9,False,5027,55.3,0 +7661,50,Female,148,88,130,41,81,99,119,5.7,22.8,79,158,Asymptomatic,False,0.7,False,Former,2.2,116,7.3,55.2,True,5425,49.1,0 +7662,78,Female,150,105,218,69,130,176,99,5.1,22.8,81,134,Asymptomatic,False,1.1,True,Never,1.1,178,7.9,46.8,True,4620,69.6,0 +7663,47,Female,137,97,222,59,139,136,111,5.9,27.5,73,179,Asymptomatic,False,0.9,False,Former,18.8,50,6.4,72.7,False,849,38.5,0 +7664,65,Male,117,70,133,27,83,112,91,4.8,18.1,73,163,Typical Angina,True,0.4,True,Never,1.6,148,7.5,74.5,False,2750,66.7,0 +7665,66,Male,144,91,228,68,131,119,173,7.0,27.2,84,145,Asymptomatic,False,0.7,False,Never,2.2,141,5.8,60.4,False,2832,49.1,1 +7666,32,Male,108,66,168,61,92,138,111,5.3,25.2,70,206,Non-Anginal Pain,False,0.0,False,Former,6.4,185,8.8,62.0,False,6611,51.5,0 +7667,60,Female,119,76,191,51,111,189,103,5.6,26.7,75,153,Atypical Angina,True,1.0,False,Current,3.2,127,6.8,35.3,True,8530,59.2,0 +7668,59,Female,131,76,170,51,92,151,121,5.2,25.8,76,136,Non-Anginal Pain,False,1.3,False,Never,1.9,142,6.5,51.1,False,1122,28.0,1 +7669,38,Male,131,80,163,45,76,154,91,4.3,29.3,79,175,Asymptomatic,False,1.4,False,Never,5.4,79,6.2,49.9,False,7754,34.0,0 +7670,76,Male,139,83,191,40,105,185,90,4.9,30.7,77,156,Asymptomatic,False,0.2,False,Former,5.3,232,5.7,47.1,True,6260,73.8,0 +7671,51,Female,134,82,210,56,111,184,153,7.5,31.0,84,155,Asymptomatic,False,0.4,True,Never,5.8,196,7.6,29.7,False,7405,61.3,0 +7672,77,Male,135,88,197,57,103,122,102,5.7,17.5,78,145,Non-Anginal Pain,False,1.2,True,Never,2.5,45,5.9,85.9,False,3225,66.0,0 +7673,35,Male,143,95,181,47,101,186,94,4.7,20.3,85,200,Non-Anginal Pain,False,1.6,False,Never,19.7,184,6.4,44.5,False,7188,46.9,0 +7674,45,Male,131,86,194,51,91,234,130,6.5,28.9,83,177,Asymptomatic,False,0.1,False,Former,3.8,151,7.1,48.2,False,3326,56.0,0 +7675,62,Female,113,76,240,57,163,147,92,4.9,25.0,87,157,Atypical Angina,True,2.4,True,Current,6.0,39,7.6,43.2,False,3099,39.9,1 +7676,49,Male,129,84,205,56,127,103,138,5.8,26.1,81,160,Asymptomatic,False,0.5,False,Never,1.5,144,6.6,56.8,False,7946,60.6,0 +7677,70,Male,152,98,255,66,147,163,124,5.9,28.5,78,135,Asymptomatic,False,0.4,False,Current,2.9,92,6.7,0.5,False,4662,76.3,1 +7678,48,Male,119,89,205,64,106,104,105,5.6,24.2,81,198,Asymptomatic,True,1.4,True,Never,7.5,245,5.3,49.6,False,7446,78.9,0 +7679,27,Male,98,60,198,46,112,146,121,6.6,18.8,68,210,Asymptomatic,False,1.4,False,Never,14.7,137,7.2,6.3,False,6757,53.6,0 +7680,69,Male,166,103,230,40,162,130,104,5.3,31.8,95,130,Asymptomatic,False,1.1,False,Never,3.4,99,6.7,82.9,False,5139,37.2,1 +7681,51,Male,129,82,171,55,104,125,135,6.4,23.0,76,203,Asymptomatic,False,0.6,False,Never,13.0,98,8.5,76.2,True,7909,40.0,0 +7682,54,Male,127,83,229,59,146,154,117,5.3,22.5,78,186,Asymptomatic,False,1.2,True,Former,4.4,132,8.3,53.5,False,6855,53.3,0 +7683,50,Female,123,92,201,56,87,267,128,6.1,30.7,65,185,Non-Anginal Pain,False,0.4,False,Never,4.7,207,6.4,30.1,True,5540,81.4,0 +7684,64,Female,124,78,225,51,126,236,117,5.9,20.3,85,145,Typical Angina,True,1.0,False,Current,11.6,118,7.7,48.7,True,7138,56.9,1 +7685,63,Male,131,83,238,61,151,130,105,4.9,24.1,89,126,Asymptomatic,False,0.4,True,Former,1.6,72,5.5,31.1,False,3923,100.0,1 +7686,18,Female,107,72,178,66,75,155,115,5.6,22.9,71,185,Non-Anginal Pain,False,1.6,False,Never,13.7,110,6.0,54.0,False,3345,58.6,0 +7687,59,Male,144,93,193,50,125,151,149,6.4,20.5,97,140,Typical Angina,False,0.4,True,Never,6.8,84,7.9,71.5,True,6749,65.4,1 +7688,31,Female,107,64,144,58,68,109,83,5.3,17.1,84,187,Non-Anginal Pain,False,0.4,False,Current,1.5,191,9.2,60.2,True,6558,100.0,0 +7689,56,Female,125,82,135,34,84,99,86,4.8,27.3,92,170,Non-Anginal Pain,True,2.0,True,Former,3.7,91,7.3,78.5,False,5744,94.7,0 +7690,51,Male,113,67,140,42,73,152,113,5.4,21.7,74,164,Asymptomatic,True,2.3,True,Former,13.2,217,7.0,63.8,True,8951,43.2,0 +7691,62,Female,146,102,210,65,111,143,110,5.5,29.6,89,121,Non-Anginal Pain,True,0.0,False,Former,6.0,107,6.7,26.9,False,6489,46.7,1 +7692,29,Female,123,70,165,45,83,117,130,5.9,25.3,72,196,Non-Anginal Pain,False,0.1,True,Never,5.3,233,4.7,65.5,False,6635,35.1,0 +7693,51,Female,129,77,189,50,99,161,110,6.0,29.1,98,173,Asymptomatic,False,0.6,True,Never,8.4,112,6.5,83.7,False,2926,53.9,0 +7694,79,Male,114,81,227,58,147,92,102,5.1,29.9,71,139,Non-Anginal Pain,False,1.1,False,Never,9.8,201,5.3,5.1,True,6933,62.3,0 +7695,83,Male,151,93,216,64,93,224,112,5.9,29.3,82,137,Non-Anginal Pain,False,3.4,True,Current,21.1,106,8.1,51.3,False,5880,58.7,0 +7696,35,Male,115,69,179,74,78,118,97,4.9,26.1,82,186,Asymptomatic,False,0.2,False,Former,8.8,172,5.3,33.0,True,7491,74.4,0 +7697,46,Male,120,84,164,58,75,114,141,5.9,19.5,84,165,Non-Anginal Pain,False,0.9,True,Former,4.0,179,5.7,70.9,False,11481,61.4,0 +7698,36,Male,85,57,207,70,90,177,93,4.8,23.9,87,185,Atypical Angina,False,0.4,False,Former,6.3,147,7.4,62.0,False,4290,52.5,0 +7699,50,Female,127,81,196,49,122,151,88,5.1,28.1,76,170,Asymptomatic,False,0.6,False,Never,0.9,103,7.3,61.9,False,5334,65.4,0 +7700,68,Male,133,73,231,48,156,144,122,5.4,18.2,79,153,Non-Anginal Pain,False,0.3,True,Never,1.7,194,7.9,64.1,True,6129,69.9,0 +7701,66,Male,133,82,253,68,139,172,112,5.3,18.8,85,168,Asymptomatic,False,1.3,True,Never,9.9,203,3.3,35.5,False,4577,78.6,0 +7702,43,Female,122,84,169,58,88,152,83,5.0,27.9,82,195,Asymptomatic,False,0.6,False,Former,0.8,271,6.4,52.3,True,10211,65.9,0 +7703,43,Female,140,91,153,67,83,81,116,5.1,22.2,88,189,Typical Angina,False,3.2,False,Never,0.9,115,7.2,28.3,False,5443,90.3,0 +7704,33,Male,97,64,159,57,69,166,77,5.0,22.3,74,191,Typical Angina,False,1.3,False,Former,6.9,294,6.9,56.0,True,11773,80.0,0 +7705,44,Female,121,69,239,61,119,235,124,5.7,27.3,70,186,Asymptomatic,False,0.6,True,Never,10.1,192,7.6,50.2,True,8499,45.1,0 +7706,62,Male,134,99,167,47,94,147,137,6.1,26.7,90,146,Asymptomatic,False,0.4,False,Never,4.9,59,7.5,33.6,True,6922,64.8,0 +7707,56,Male,138,90,197,74,83,228,99,5.2,26.3,76,179,Asymptomatic,False,1.0,False,Never,13.6,199,7.3,25.3,True,6333,32.3,0 +7708,66,Male,125,78,182,74,76,129,99,5.0,22.6,80,154,Asymptomatic,False,0.7,True,Never,6.0,267,8.7,48.6,True,6128,50.2,0 +7709,65,Male,123,73,155,39,82,176,103,5.3,24.2,91,158,Non-Anginal Pain,False,0.1,False,Never,6.6,27,8.6,51.6,True,6768,43.3,0 +7710,67,Female,175,119,237,60,148,121,118,6.2,30.7,78,155,Asymptomatic,False,0.5,False,Never,7.3,169,8.5,43.8,True,7572,48.8,1 +7711,64,Male,126,81,188,76,102,93,105,5.4,17.0,88,166,Typical Angina,False,0.1,False,Never,5.9,98,6.6,40.2,False,4816,80.6,0 +7712,42,Female,109,76,116,47,46,78,135,5.8,20.6,85,179,Asymptomatic,False,0.1,True,Current,4.0,211,7.9,3.3,True,7594,100.0,0 +7713,62,Female,153,101,176,37,86,249,125,5.6,26.5,76,175,Asymptomatic,False,0.9,False,Never,12.1,139,7.9,62.2,False,4572,51.1,0 +7714,39,Male,130,74,207,48,124,162,100,5.3,22.0,90,182,Asymptomatic,False,0.2,False,Never,8.1,81,7.3,54.0,False,7597,57.2,0 +7715,25,Female,104,60,182,50,98,172,108,5.4,26.8,90,200,Asymptomatic,False,1.9,False,Never,1.6,160,9.7,48.5,True,6180,68.3,0 +7716,30,Male,108,81,190,51,105,112,155,6.8,21.0,80,198,Asymptomatic,False,1.1,False,Former,2.1,96,8.1,66.8,False,5819,49.7,0 +7717,51,Male,120,65,133,58,82,35,114,5.2,18.2,79,198,Typical Angina,False,0.2,False,Never,3.2,208,8.0,35.7,False,9275,61.6,0 +7718,64,Male,126,90,157,69,56,176,117,5.8,34.9,79,157,Atypical Angina,False,0.3,False,Never,7.3,22,7.4,50.3,False,5361,62.5,0 +7719,61,Male,136,74,241,58,145,194,115,5.8,27.4,91,151,Typical Angina,True,0.5,False,Never,9.8,150,7.4,48.3,False,6038,62.4,1 +7720,31,Female,128,73,169,60,100,39,126,6.0,22.0,72,195,Asymptomatic,False,1.9,False,Never,0.5,268,7.0,46.0,True,9107,76.6,0 +7721,49,Female,132,82,177,74,68,170,118,6.2,22.2,79,143,Typical Angina,False,1.7,False,Former,1.8,136,7.4,44.2,False,5536,68.8,1 +7722,63,Male,136,81,289,70,164,224,113,5.4,23.6,66,128,Non-Anginal Pain,False,4.4,False,Current,4.9,296,4.8,39.6,True,8800,68.1,1 +7723,57,Male,149,92,182,41,119,81,103,5.2,31.2,81,142,Asymptomatic,True,0.7,False,Never,13.3,145,5.6,43.1,False,8009,70.4,1 +7724,50,Female,128,69,179,58,78,186,99,5.0,24.4,66,195,Non-Anginal Pain,False,0.2,False,Never,11.8,253,6.8,51.7,True,4749,59.8,0 +7725,44,Male,132,83,134,48,60,144,60,4.0,27.7,74,177,Asymptomatic,False,0.5,False,Never,3.1,77,5.1,46.1,False,4441,66.9,0 +7726,42,Male,106,63,149,36,94,141,89,4.0,25.8,96,159,Non-Anginal Pain,False,0.5,False,Current,2.7,169,6.9,64.1,False,8087,60.7,0 +7727,55,Male,133,77,205,54,113,169,106,5.7,28.8,82,172,Non-Anginal Pain,False,0.2,False,Former,15.9,47,8.9,35.1,True,4918,45.3,0 +7728,72,Female,121,76,244,79,129,154,127,6.0,26.2,88,146,Asymptomatic,False,0.8,True,Former,0.9,137,6.0,22.0,False,6988,89.1,0 +7729,78,Female,141,90,176,70,101,35,99,5.5,19.7,65,156,Atypical Angina,False,1.1,False,Former,4.4,139,5.1,14.9,True,7231,64.5,0 +7730,31,Male,102,71,189,29,99,284,122,6.0,35.6,95,185,Asymptomatic,False,1.4,True,Current,20.1,20,7.2,44.2,False,4750,59.0,0 +7731,57,Male,142,95,234,58,127,198,130,6.1,26.2,70,185,Non-Anginal Pain,False,0.6,False,Current,14.9,207,6.9,42.0,True,8812,51.3,0 +7732,79,Female,120,63,205,86,93,121,117,5.8,20.8,79,144,Asymptomatic,False,0.2,False,Never,0.9,157,5.9,74.6,True,6732,76.1,0 +7733,30,Female,117,72,200,66,102,110,117,6.0,28.1,102,173,Asymptomatic,False,1.9,False,Former,4.1,106,6.6,65.0,False,3659,50.0,1 +7734,55,Female,130,92,223,59,126,214,115,6.2,34.7,78,193,Non-Anginal Pain,False,1.3,False,Never,7.6,141,7.3,52.7,True,9431,41.6,0 +7735,75,Male,123,72,210,36,150,138,103,5.7,20.6,93,138,Atypical Angina,False,0.6,True,Current,1.8,80,8.4,85.2,False,5081,51.6,1 +7736,70,Male,147,91,163,58,77,162,161,7.0,23.7,92,140,Non-Anginal Pain,True,3.7,True,Never,2.0,82,9.4,43.1,False,7441,57.9,1 +7737,73,Male,132,96,177,47,98,135,147,6.6,26.1,69,160,Atypical Angina,False,0.1,False,Never,2.4,146,7.3,66.1,True,7043,55.8,0 +7738,56,Male,132,81,166,33,97,132,133,6.0,24.1,89,152,Non-Anginal Pain,True,0.3,False,Current,8.1,199,4.3,75.0,True,6292,40.3,1 +7739,57,Male,132,94,144,24,79,215,100,5.2,26.3,87,146,Typical Angina,False,3.0,True,Former,3.0,110,9.1,61.3,False,5244,68.8,1 +7740,77,Female,136,85,212,52,144,162,130,6.0,30.5,77,127,Asymptomatic,False,0.0,False,Never,2.9,96,8.0,24.4,True,7873,74.4,0 +7741,58,Male,138,96,187,74,84,108,126,6.5,20.4,87,178,Non-Anginal Pain,False,1.6,False,Never,3.8,124,5.9,54.5,False,7960,72.4,0 +7742,68,Male,132,86,221,45,144,161,149,6.7,26.3,82,118,Typical Angina,True,0.2,False,Never,13.1,81,5.5,63.8,False,3657,66.2,1 +7743,71,Female,159,87,216,65,140,40,147,6.4,33.4,84,114,Non-Anginal Pain,True,0.8,False,Former,1.9,127,7.9,53.4,False,3850,60.5,1 +7744,49,Female,124,80,214,76,111,168,131,6.4,27.3,93,179,Non-Anginal Pain,False,0.4,False,Former,9.5,87,7.6,60.5,False,3642,42.9,0 +7745,63,Male,132,89,195,63,115,114,117,4.8,17.3,72,168,Non-Anginal Pain,False,4.7,False,Former,14.8,169,8.6,63.8,False,8405,63.4,0 +7746,71,Female,143,82,202,52,132,147,152,6.6,32.3,81,154,Asymptomatic,True,1.2,True,Never,0.7,112,6.8,39.4,False,5535,65.2,0 +7747,64,Female,119,64,140,71,60,35,144,6.1,20.2,67,151,Atypical Angina,False,0.2,False,Never,7.1,110,8.0,36.1,True,6611,66.2,0 +7748,61,Male,127,75,209,67,129,35,130,5.7,17.9,70,151,Typical Angina,True,0.8,True,Former,1.7,144,7.6,49.8,False,5667,59.7,1 +7749,68,Male,144,76,146,40,82,114,117,5.8,19.9,82,133,Typical Angina,False,1.9,False,Former,3.3,50,8.4,86.9,False,6365,83.0,1 +7750,73,Male,149,93,181,39,87,243,106,5.5,23.3,89,145,Asymptomatic,False,0.3,False,Former,4.1,37,7.8,60.0,True,3918,50.0,1 +7751,65,Female,164,100,207,57,127,158,60,4.1,28.8,82,145,Atypical Angina,False,0.6,True,Former,0.9,233,6.9,46.9,False,5643,64.9,1 +7752,61,Female,114,78,206,76,127,47,89,4.8,15.0,71,169,Asymptomatic,False,0.3,False,Former,0.9,330,7.3,27.2,True,8022,56.2,0 +7753,48,Male,138,84,188,59,95,172,93,5.5,30.2,82,187,Asymptomatic,False,0.5,True,Never,5.1,44,7.9,45.4,True,7502,51.5,0 +7754,57,Male,109,73,160,53,89,76,164,6.9,23.5,80,170,Atypical Angina,False,1.5,False,Never,4.1,179,5.4,29.4,True,4390,33.9,0 +7755,69,Male,130,74,174,50,84,157,137,6.8,28.2,71,135,Asymptomatic,False,1.3,False,Never,5.2,175,7.5,63.5,True,6533,62.2,1 +7756,54,Male,137,80,195,65,63,262,139,6.9,29.3,72,167,Asymptomatic,False,0.3,True,Never,4.8,113,8.1,57.4,False,6472,54.1,0 +7757,56,Male,116,66,207,49,123,138,110,5.8,23.3,68,177,Atypical Angina,False,1.1,False,Never,1.8,152,5.9,50.6,False,4637,74.7,0 +7758,62,Female,139,75,211,50,148,38,109,5.7,22.9,78,162,Atypical Angina,False,0.7,True,Never,2.3,97,7.0,60.4,False,4445,46.7,0 +7759,36,Female,124,79,206,69,108,148,130,5.6,25.6,77,206,Non-Anginal Pain,False,0.5,False,Never,2.7,119,7.1,61.5,False,5285,41.9,0 +7760,44,Male,120,78,151,29,96,77,105,5.2,29.4,82,180,Asymptomatic,False,0.5,False,Former,2.5,100,6.8,36.8,True,6332,52.7,0 +7761,57,Male,133,90,139,32,109,51,91,5.2,17.9,83,171,Atypical Angina,True,0.5,False,Never,3.7,125,7.6,38.8,False,5223,34.8,0 +7762,76,Female,131,73,246,59,156,183,126,6.4,29.0,68,157,Asymptomatic,False,1.1,False,Former,9.5,176,6.4,51.2,False,5154,54.2,0 +7763,54,Female,133,72,233,66,130,132,128,5.6,23.9,71,180,Asymptomatic,False,0.3,False,Former,2.2,221,6.0,37.9,True,7028,61.7,0 +7764,73,Female,162,108,243,61,152,168,157,6.2,21.4,84,156,Asymptomatic,False,2.2,False,Never,2.7,85,6.0,37.7,False,5203,46.1,1 +7765,61,Male,123,71,120,48,49,159,129,6.2,20.2,84,154,Asymptomatic,False,0.6,False,Never,8.3,162,4.6,78.0,True,9743,60.6,0 +7766,56,Female,122,80,179,61,94,128,144,6.3,24.1,85,148,Asymptomatic,True,0.7,False,Never,0.4,133,6.5,48.8,False,3763,52.3,1 +7767,60,Male,151,99,207,41,116,200,143,6.8,30.0,72,130,Typical Angina,False,4.2,True,Never,1.5,17,6.5,57.0,False,6367,32.8,1 +7768,56,Male,130,84,219,48,136,224,91,4.8,22.7,87,158,Asymptomatic,False,0.9,False,Current,10.7,139,9.0,52.3,False,6279,68.8,1 +7769,55,Female,130,78,229,56,125,201,154,7.0,27.3,84,171,Asymptomatic,False,0.3,True,Current,13.1,112,6.7,16.0,True,6425,59.9,1 +7770,53,Male,141,81,251,49,156,270,140,6.6,28.2,70,150,Atypical Angina,True,2.6,True,Current,6.7,128,6.0,35.5,True,5075,76.0,1 +7771,45,Male,120,73,199,59,112,153,109,5.4,22.3,82,179,Asymptomatic,False,0.9,True,Never,1.8,86,7.8,38.5,False,4577,54.7,0 +7772,71,Male,145,102,233,57,143,170,137,6.8,21.8,74,147,Asymptomatic,False,1.5,True,Never,4.1,171,6.7,43.7,True,5477,50.4,0 +7773,52,Male,98,64,225,54,133,194,142,6.6,24.6,84,170,Asymptomatic,False,0.5,True,Never,7.8,30,8.3,67.6,False,1424,79.2,0 +7774,44,Female,129,78,193,48,118,99,91,4.7,19.7,81,168,Asymptomatic,False,0.3,True,Current,0.9,177,7.6,19.0,False,5213,44.1,0 +7775,44,Male,123,75,181,47,81,251,82,4.0,21.0,90,175,Non-Anginal Pain,False,0.4,False,Never,2.3,133,7.8,61.4,False,4613,92.8,0 +7776,59,Female,114,81,176,49,96,183,139,6.5,25.8,74,147,Asymptomatic,False,0.4,False,Former,3.7,59,6.3,51.3,False,3712,78.1,0 +7777,59,Female,162,108,170,45,102,145,101,5.5,27.7,73,160,Asymptomatic,False,0.5,False,Never,15.3,209,8.1,27.1,True,4567,79.3,0 +7778,52,Male,104,72,185,40,125,145,92,5.2,20.5,69,162,Asymptomatic,False,0.4,True,Current,3.9,148,7.0,39.4,False,6461,70.9,0 +7779,38,Male,113,73,185,53,98,191,103,5.6,28.6,83,182,Atypical Angina,False,1.0,False,Never,4.8,185,6.2,48.4,False,4897,60.2,0 +7780,60,Female,129,97,229,54,142,206,116,5.6,31.6,87,162,Atypical Angina,True,0.4,True,Current,4.1,144,6.4,52.2,False,2974,45.2,1 +7781,42,Female,146,80,190,77,81,159,91,4.5,24.5,73,165,Typical Angina,False,0.5,False,Never,5.2,77,8.6,51.4,False,7730,66.6,0 +7782,61,Female,134,87,187,61,106,144,83,5.0,22.3,82,162,Asymptomatic,False,1.2,True,Current,0.2,98,5.5,45.0,False,5534,89.0,0 +7783,28,Female,122,85,236,75,122,190,114,5.4,28.7,76,178,Asymptomatic,False,0.3,True,Current,0.1,155,7.7,69.3,True,6082,44.5,0 +7784,68,Male,149,92,164,58,85,200,93,4.8,27.5,88,147,Asymptomatic,False,0.5,False,Never,3.7,68,7.2,62.8,False,5554,61.1,0 +7785,61,Female,153,98,218,47,143,130,123,5.9,33.3,85,156,Asymptomatic,False,0.4,False,Current,6.0,96,7.2,41.5,True,6167,32.5,1 +7786,50,Male,134,85,166,42,97,193,119,5.9,25.8,86,165,Asymptomatic,True,4.5,False,Never,7.9,20,7.6,73.9,False,3407,42.5,1 +7787,48,Male,126,75,213,74,113,92,121,5.9,29.1,81,179,Asymptomatic,False,0.6,True,Never,8.9,69,7.2,48.5,False,5506,80.6,0 +7788,48,Male,129,73,186,66,96,114,105,5.4,23.9,72,171,Atypical Angina,False,0.7,True,Never,8.3,161,7.0,3.5,True,7250,66.1,0 +7789,63,Male,125,85,177,52,95,144,136,6.0,19.7,68,179,Asymptomatic,False,0.2,True,Former,13.3,198,7.4,43.9,False,4019,61.2,0 +7790,53,Female,125,84,196,48,108,151,153,6.8,19.9,83,147,Non-Anginal Pain,True,0.5,True,Current,3.4,43,4.1,38.3,False,5888,42.4,1 +7791,74,Female,138,92,278,58,163,281,128,5.8,34.8,87,160,Asymptomatic,True,2.0,False,Former,9.8,48,8.1,45.9,True,2790,44.0,1 +7792,49,Female,113,74,188,66,85,149,139,6.8,30.3,82,138,Typical Angina,False,2.5,False,Former,2.0,74,5.8,67.5,False,3803,68.4,1 +7793,65,Female,124,74,213,48,134,127,102,5.5,20.5,82,136,Non-Anginal Pain,False,0.8,False,Former,3.5,130,6.9,24.8,True,6139,64.0,0 +7794,73,Female,124,81,145,74,58,57,126,5.4,21.9,71,154,Asymptomatic,False,0.0,False,Never,13.3,192,6.5,46.8,False,3625,70.5,0 +7795,49,Male,121,86,147,50,74,128,165,7.1,23.9,87,148,Atypical Angina,False,1.1,True,Never,8.9,64,5.8,50.8,False,2567,60.7,1 +7796,62,Male,122,82,173,55,90,178,96,5.1,23.7,71,142,Atypical Angina,True,0.8,True,Former,2.3,162,8.8,51.9,False,1845,47.5,1 +7797,42,Male,123,94,193,51,114,144,122,5.8,29.5,78,163,Non-Anginal Pain,False,0.4,False,Never,2.3,127,7.9,30.1,True,9251,40.2,0 +7798,27,Female,114,67,152,57,87,112,108,5.3,26.3,81,197,Asymptomatic,False,1.3,False,Never,8.5,116,8.3,57.4,False,4708,62.3,0 +7799,58,Female,111,81,159,61,63,196,146,6.9,22.1,74,160,Non-Anginal Pain,False,1.1,False,Never,11.0,174,5.3,36.2,False,7549,69.3,0 +7800,57,Female,112,81,275,47,172,239,168,7.1,31.3,77,173,Asymptomatic,False,0.3,True,Never,1.6,200,7.7,60.0,True,7673,52.0,0 +7801,61,Male,130,76,177,37,120,93,136,6.5,28.1,72,146,Asymptomatic,True,0.3,False,Former,2.3,163,6.1,38.2,False,4991,47.1,1 +7802,40,Male,128,78,157,38,93,127,121,6.3,23.4,91,163,Asymptomatic,False,1.9,False,Never,1.6,73,8.3,66.3,True,4288,64.8,0 +7803,57,Male,141,87,174,48,108,96,101,5.0,22.5,83,175,Non-Anginal Pain,False,0.3,False,Never,10.3,71,8.9,36.0,False,1837,77.3,0 +7804,35,Female,108,73,202,72,93,154,148,6.0,25.8,100,186,Atypical Angina,False,0.5,False,Former,1.6,141,8.4,54.9,True,9205,49.3,0 +7805,47,Male,134,82,124,50,57,151,116,5.5,21.9,81,173,Non-Anginal Pain,False,0.5,False,Never,2.4,142,5.8,59.2,False,7008,86.9,0 +7806,70,Male,134,92,184,39,103,275,148,7.1,32.0,85,140,Asymptomatic,True,1.0,True,Never,3.3,46,7.6,33.8,False,5388,50.0,1 +7807,36,Male,145,93,174,46,99,85,119,5.1,25.0,79,196,Asymptomatic,False,1.7,True,Never,3.8,107,6.9,11.1,False,5315,71.7,0 +7808,64,Female,129,76,246,68,138,203,138,6.9,31.0,94,137,Asymptomatic,True,2.2,True,Never,0.4,118,5.6,18.9,True,6704,38.3,1 +7809,38,Male,105,65,183,39,103,136,127,6.0,17.3,83,184,Asymptomatic,False,0.7,True,Never,6.0,53,7.6,26.8,False,4489,75.1,0 +7810,59,Male,155,99,156,35,98,107,118,5.3,22.2,71,163,Asymptomatic,True,0.7,True,Former,7.6,150,7.3,40.6,True,9328,39.6,0 +7811,41,Male,114,73,203,68,94,164,135,6.1,25.9,67,185,Typical Angina,False,0.3,False,Former,16.9,185,7.3,13.9,False,7276,60.5,0 +7812,39,Male,104,53,213,57,110,217,110,5.8,25.8,65,190,Asymptomatic,False,0.4,False,Current,1.9,77,8.1,18.7,False,7648,68.7,0 +7813,31,Female,107,64,208,65,114,167,157,7.0,25.6,66,188,Non-Anginal Pain,False,0.2,False,Former,4.2,175,6.8,36.4,True,8382,50.4,0 +7814,59,Female,125,82,208,76,125,35,119,5.6,19.8,55,181,Typical Angina,True,0.3,True,Never,9.9,124,7.1,38.7,False,3912,73.9,0 +7815,32,Female,135,83,113,43,45,123,97,5.7,24.3,76,202,Non-Anginal Pain,True,0.5,False,Current,3.2,117,5.9,37.1,False,2379,62.1,0 +7816,56,Female,132,74,176,55,99,107,157,6.2,31.8,95,173,Non-Anginal Pain,False,0.5,True,Never,2.5,184,7.1,37.7,True,4701,58.7,0 +7817,51,Female,120,74,249,69,119,254,132,5.5,27.2,77,166,Non-Anginal Pain,False,1.1,False,Former,11.1,44,7.0,9.9,False,5327,31.3,0 +7818,28,Female,105,68,146,52,64,157,134,6.2,15.9,65,198,Asymptomatic,False,1.2,True,Current,4.7,144,4.5,35.3,True,6807,47.2,0 +7819,49,Female,136,92,202,58,104,217,102,5.6,24.9,87,173,Asymptomatic,False,0.9,True,Never,7.9,85,5.5,53.3,False,6484,42.6,0 +7820,41,Female,130,88,141,41,85,124,120,6.3,30.9,78,202,Asymptomatic,False,2.3,False,Never,2.2,154,7.6,31.0,False,6071,34.0,0 +7821,59,Female,122,63,174,46,106,104,130,6.0,24.8,74,154,Non-Anginal Pain,False,0.2,True,Never,1.1,123,6.4,47.0,True,7689,57.2,0 +7822,56,Female,104,66,193,84,67,158,127,5.7,20.8,78,175,Asymptomatic,False,0.6,False,Never,3.5,135,6.4,42.0,True,8864,73.5,0 +7823,72,Male,135,87,179,49,101,140,153,6.7,19.4,79,136,Non-Anginal Pain,True,0.4,False,Never,14.1,154,6.7,55.9,False,6305,72.7,1 +7824,58,Female,119,65,164,76,66,118,114,5.7,26.3,92,149,Non-Anginal Pain,False,0.3,True,Never,1.7,204,7.5,45.7,False,7135,75.3,0 +7825,55,Female,134,81,184,46,106,170,113,6.1,30.0,85,163,Non-Anginal Pain,False,0.4,True,Never,0.2,109,8.2,66.6,True,10048,58.2,0 +7826,60,Female,128,70,186,78,75,127,88,4.8,15.1,82,163,Asymptomatic,False,0.8,False,Never,2.6,218,6.5,58.0,True,9131,60.6,0 +7827,58,Male,120,67,182,52,114,137,108,5.5,20.3,84,169,Asymptomatic,True,0.0,False,Never,6.2,155,5.9,52.5,False,5742,70.8,0 +7828,51,Male,110,74,217,54,115,214,122,5.9,21.4,89,177,Asymptomatic,False,0.4,False,Current,6.7,138,8.1,45.8,True,8556,70.7,0 +7829,61,Female,135,89,180,70,88,148,102,5.5,27.3,85,166,Non-Anginal Pain,True,2.3,False,Never,3.2,186,7.2,27.8,False,7395,75.1,0 +7830,57,Male,144,75,167,50,80,184,138,5.9,30.0,81,161,Asymptomatic,False,0.8,True,Former,1.8,128,6.4,40.7,True,8793,61.8,0 +7831,60,Female,148,96,138,62,50,121,82,4.8,17.7,82,170,Asymptomatic,False,0.2,False,Never,2.6,103,8.8,42.2,True,6664,74.8,0 +7832,38,Female,124,77,199,57,105,153,111,5.4,24.1,97,197,Asymptomatic,True,0.9,True,Never,26.1,68,5.3,80.0,False,5508,55.5,0 +7833,53,Female,123,76,217,66,114,191,106,5.6,30.5,80,172,Asymptomatic,False,0.9,False,Former,9.4,147,6.2,47.9,True,9737,54.2,0 +7834,65,Male,149,89,209,56,105,263,99,5.2,26.2,90,134,Asymptomatic,True,2.9,True,Never,10.1,36,7.5,53.5,False,2753,27.5,1 +7835,62,Male,113,57,209,53,111,214,127,5.4,19.5,79,155,Asymptomatic,False,1.1,False,Never,6.9,198,6.0,71.8,False,9335,44.0,0 +7836,63,Female,116,65,199,39,141,132,118,6.1,28.4,88,149,Asymptomatic,False,0.8,False,Never,11.7,151,6.6,38.0,False,5623,87.0,0 +7837,63,Male,117,71,227,76,105,188,181,7.6,22.4,79,159,Asymptomatic,False,0.0,False,Former,9.5,146,7.0,26.8,True,7611,73.9,0 +7838,59,Female,136,89,193,40,116,176,150,6.5,28.9,86,142,Asymptomatic,False,4.2,False,Never,0.8,133,5.6,81.4,False,5405,49.4,1 +7839,67,Male,131,83,199,51,124,112,115,5.2,27.5,81,153,Asymptomatic,False,1.0,False,Never,2.0,198,7.3,40.7,True,8423,62.4,0 +7840,43,Male,113,86,248,90,122,234,92,4.8,23.6,82,179,Typical Angina,False,1.2,False,Never,12.2,174,6.2,62.9,False,5607,61.1,0 +7841,64,Female,121,70,176,59,97,124,122,5.3,21.1,75,154,Asymptomatic,False,0.3,False,Never,4.6,238,6.9,59.9,True,7231,80.4,0 +7842,57,Male,120,71,228,71,124,186,129,6.6,20.6,69,161,Asymptomatic,False,0.9,True,Never,3.4,163,5.1,57.4,False,5463,70.9,0 +7843,51,Male,130,67,203,58,93,226,111,5.4,31.0,83,207,Atypical Angina,False,0.5,False,Never,2.1,122,5.5,69.7,False,6374,27.8,0 +7844,57,Female,116,77,178,35,92,171,131,6.0,23.1,65,175,Asymptomatic,False,0.4,False,Never,3.2,77,7.8,52.5,True,7595,48.6,0 +7845,57,Male,129,89,122,47,57,152,114,5.2,26.5,68,173,Asymptomatic,True,0.2,False,Never,2.5,138,5.5,49.6,False,2288,74.4,0 +7846,38,Male,104,59,202,64,115,106,136,6.0,21.9,68,177,Non-Anginal Pain,False,0.3,True,Former,12.1,190,6.8,48.9,False,6253,80.6,0 +7847,43,Male,113,76,247,54,131,224,64,4.1,29.8,89,188,Non-Anginal Pain,False,0.3,False,Current,2.0,212,7.8,42.9,False,4250,34.8,0 +7848,66,Female,133,76,195,67,114,80,113,5.8,30.4,61,169,Asymptomatic,False,1.5,False,Never,8.5,133,8.1,38.3,False,1862,62.2,0 +7849,44,Male,108,70,182,66,97,94,131,5.8,17.2,91,158,Typical Angina,False,0.8,False,Never,2.9,140,6.5,33.7,False,6712,58.3,1 +7850,65,Male,138,94,205,38,136,94,121,6.3,23.9,79,144,Asymptomatic,False,0.2,False,Current,8.9,110,6.0,55.3,True,6853,61.2,1 +7851,63,Female,134,86,239,78,146,118,133,6.3,21.3,93,148,Asymptomatic,True,3.3,False,Never,2.0,83,4.6,90.9,False,4620,42.0,1 +7852,61,Male,118,75,163,62,72,103,136,6.2,20.0,76,178,Typical Angina,False,0.4,True,Former,7.2,185,8.0,36.4,False,4624,69.5,0 +7853,56,Female,110,78,181,39,99,178,112,5.7,23.2,69,159,Asymptomatic,False,1.3,False,Never,4.5,117,5.3,60.7,False,4596,63.2,0 +7854,72,Male,133,94,174,46,109,87,142,6.0,29.6,92,156,Asymptomatic,False,2.8,False,Never,2.2,85,7.5,48.7,False,4265,48.5,0 +7855,61,Female,118,69,196,58,113,118,125,5.9,19.0,79,187,Asymptomatic,False,0.9,False,Former,11.2,208,5.8,26.3,True,8003,35.4,0 +7856,70,Male,147,107,261,56,162,176,117,5.8,24.5,87,134,Asymptomatic,False,1.2,False,Current,9.8,230,5.5,77.9,False,4669,48.5,1 +7857,67,Male,133,93,171,43,89,156,125,5.9,25.2,84,127,Asymptomatic,False,5.1,True,Never,3.3,19,7.6,72.2,False,6192,46.5,1 +7858,53,Female,123,71,216,66,96,238,91,4.8,26.6,84,164,Non-Anginal Pain,False,2.3,False,Former,5.0,260,8.5,32.1,True,7727,55.9,0 +7859,51,Female,126,88,144,65,42,166,140,5.8,22.4,85,185,Non-Anginal Pain,False,2.0,False,Never,6.7,109,5.8,64.9,False,7662,71.0,0 +7860,54,Female,154,85,235,61,137,137,141,6.7,35.8,93,180,Atypical Angina,False,0.5,False,Never,0.0,0,6.3,39.5,False,3552,61.8,0 +7861,61,Female,148,93,166,54,82,178,119,5.3,29.3,85,136,Typical Angina,False,0.6,False,Former,10.8,79,6.6,55.2,True,3659,60.2,0 +7862,41,Female,107,69,148,51,80,106,130,5.5,26.9,70,178,Asymptomatic,False,1.3,False,Current,0.0,234,5.4,28.8,False,5667,52.8,0 +7863,34,Female,121,85,170,46,82,213,124,6.3,23.7,80,194,Asymptomatic,False,0.8,False,Never,4.0,182,7.0,64.7,True,8102,93.9,0 +7864,53,Female,136,86,206,68,105,189,93,4.6,33.3,87,167,Non-Anginal Pain,False,0.5,False,Never,0.2,108,6.8,33.6,False,7095,46.1,0 +7865,36,Male,117,72,164,59,85,100,67,4.1,24.0,81,186,Typical Angina,False,0.7,True,Never,7.0,238,6.5,63.1,False,8919,47.9,0 +7866,45,Male,127,77,213,62,132,150,83,4.6,25.7,89,172,Non-Anginal Pain,False,0.8,False,Former,3.1,111,5.8,28.2,True,6685,72.2,0 +7867,58,Female,130,85,160,39,96,139,117,5.4,25.9,81,164,Asymptomatic,False,1.1,True,Never,9.6,188,7.8,60.1,True,9291,65.8,0 +7868,59,Male,130,74,210,65,138,145,121,5.7,30.1,85,120,Non-Anginal Pain,True,0.3,False,Former,5.3,120,7.6,72.7,False,6956,52.1,1 +7869,73,Female,119,79,157,55,77,122,95,5.2,22.9,91,160,Asymptomatic,False,1.2,False,Never,17.0,162,7.5,36.3,False,3694,53.5,0 +7870,40,Male,116,88,166,53,80,121,113,5.3,26.5,87,176,Asymptomatic,False,0.7,False,Current,3.7,177,7.4,80.4,False,7830,61.6,0 +7871,33,Female,107,55,146,54,77,35,128,6.2,23.5,82,172,Non-Anginal Pain,False,0.8,True,Never,2.6,170,7.6,14.4,True,6928,70.4,0 +7872,63,Female,135,89,192,48,124,138,117,5.7,26.8,89,152,Atypical Angina,False,1.2,False,Current,8.8,214,6.7,62.0,False,4813,68.7,1 +7873,37,Female,95,57,248,88,116,201,136,6.4,18.7,65,208,Asymptomatic,False,1.7,False,Former,11.2,201,6.1,49.0,False,4700,70.0,0 +7874,61,Male,135,81,162,36,96,110,63,4.6,19.6,85,135,Asymptomatic,True,0.1,False,Current,13.6,0,7.5,46.7,True,5807,72.8,1 +7875,32,Male,120,74,199,66,83,218,118,5.5,26.8,65,184,Typical Angina,True,0.1,False,Current,3.6,193,6.6,23.0,True,5565,81.2,0 +7876,41,Female,120,69,191,59,82,162,125,5.5,26.1,77,189,Asymptomatic,False,1.6,False,Former,7.8,181,5.6,6.2,False,6777,55.8,0 +7877,63,Female,115,62,219,57,131,164,121,5.9,24.6,84,151,Asymptomatic,False,0.1,True,Current,1.2,244,6.6,51.6,True,7201,35.5,1 +7878,35,Male,113,79,193,55,122,107,60,4.3,19.4,60,180,Asymptomatic,False,0.3,False,Never,2.5,197,6.3,51.3,True,4659,65.8,0 +7879,53,Female,135,80,182,72,85,144,118,6.0,23.4,74,159,Asymptomatic,False,1.2,False,Never,2.6,195,6.8,40.4,False,6985,76.6,0 +7880,59,Male,141,85,255,48,172,126,145,6.4,30.5,95,126,Asymptomatic,True,0.5,True,Current,2.1,106,7.4,88.0,False,6687,62.1,1 +7881,37,Male,124,84,148,65,68,123,99,5.1,31.2,87,198,Atypical Angina,False,1.4,False,Never,4.0,174,7.9,34.5,True,7748,71.2,0 +7882,59,Male,151,79,164,45,78,193,180,7.7,28.1,88,144,Asymptomatic,True,1.5,False,Never,16.7,0,7.4,90.6,False,6422,61.1,1 +7883,67,Female,129,75,169,53,81,171,153,6.8,30.2,71,168,Asymptomatic,False,0.3,False,Never,1.6,165,5.5,67.6,True,12118,75.3,0 +7884,52,Female,138,102,166,48,89,100,125,6.6,23.3,92,145,Non-Anginal Pain,True,0.4,True,Former,0.6,116,6.3,57.2,False,3180,49.6,1 +7885,51,Male,128,74,210,47,123,194,136,6.5,27.2,79,132,Asymptomatic,True,2.4,False,Former,2.2,198,7.0,64.2,True,7334,53.7,1 +7886,69,Female,155,94,234,63,137,175,117,5.9,24.4,74,162,Asymptomatic,False,1.4,False,Never,2.4,142,7.9,33.3,False,3685,25.7,0 +7887,37,Male,110,68,186,54,85,247,159,7.0,24.2,82,198,Asymptomatic,False,4.1,False,Never,10.8,80,6.9,28.3,True,9828,58.5,0 +7888,63,Male,125,86,217,47,137,164,114,5.9,26.8,91,189,Asymptomatic,False,0.0,False,Never,5.2,112,7.6,43.4,True,5866,62.3,0 +7889,54,Female,97,71,239,83,121,172,106,5.8,20.6,78,194,Non-Anginal Pain,False,0.6,False,Never,14.1,205,7.6,25.0,True,9104,38.3,0 +7890,61,Male,131,78,224,68,144,82,136,6.0,15.0,75,168,Asymptomatic,False,0.2,False,Never,12.7,214,5.3,39.9,True,7431,64.1,0 +7891,53,Female,121,79,197,54,122,102,92,4.4,20.9,85,157,Asymptomatic,True,1.5,False,Never,3.3,142,6.1,48.5,False,7135,36.8,0 +7892,40,Male,121,72,177,47,86,221,140,6.3,28.1,93,163,Non-Anginal Pain,True,5.2,False,Never,8.5,121,5.8,34.5,True,10070,67.0,1 +7893,60,Female,124,81,192,64,79,162,78,5.1,24.3,81,175,Atypical Angina,False,1.2,True,Never,0.3,189,7.7,35.7,True,7610,60.4,0 +7894,59,Male,127,84,176,54,93,158,115,5.9,28.1,79,157,Non-Anginal Pain,True,0.6,True,Current,3.3,205,9.4,11.8,True,7170,79.4,1 +7895,47,Male,117,76,228,59,133,185,118,6.2,25.1,62,183,Asymptomatic,False,0.7,False,Current,9.7,271,7.5,37.3,True,10204,69.0,1 +7896,34,Male,118,79,170,46,93,138,115,5.6,27.5,91,192,Non-Anginal Pain,False,0.7,True,Never,6.2,188,7.4,30.9,False,7065,19.1,0 +7897,57,Female,107,68,213,39,122,214,76,4.8,18.5,84,196,Typical Angina,False,2.1,False,Never,0.4,173,8.4,21.4,True,5240,66.6,0 +7898,58,Female,137,83,165,70,77,129,75,4.8,32.1,86,163,Non-Anginal Pain,False,0.8,False,Former,0.1,116,7.5,49.0,False,4479,87.9,0 +7899,33,Male,108,68,199,68,89,161,108,5.5,23.1,66,190,Asymptomatic,False,0.2,False,Never,5.8,151,6.3,7.0,False,9526,100.0,0 +7900,39,Male,136,93,153,42,77,151,112,5.4,31.2,85,179,Asymptomatic,False,0.2,True,Never,5.9,109,8.3,27.9,True,10225,68.3,0 +7901,24,Female,104,75,128,68,35,180,100,5.8,26.6,95,201,Non-Anginal Pain,True,0.1,False,Never,2.3,150,6.6,47.7,True,9085,56.1,0 +7902,58,Male,128,88,181,28,123,156,111,5.6,27.3,86,121,Typical Angina,False,0.9,False,Current,4.8,57,4.5,33.0,False,2237,42.3,1 +7903,56,Female,124,66,187,31,145,119,109,5.8,18.9,70,161,Atypical Angina,True,0.2,False,Former,5.0,129,7.7,46.2,False,6764,47.2,1 +7904,47,Male,124,75,163,49,85,138,114,5.7,26.8,66,184,Asymptomatic,False,3.1,False,Never,2.9,197,5.4,74.8,False,6146,68.5,0 +7905,62,Male,129,81,230,50,129,156,128,6.2,27.8,91,163,Non-Anginal Pain,False,1.5,False,Never,3.4,112,6.7,78.0,False,2965,71.7,0 +7906,81,Male,152,92,235,69,136,129,166,6.7,24.3,80,112,Atypical Angina,False,1.9,True,Never,9.2,37,6.6,34.2,False,5537,41.4,1 +7907,46,Male,116,68,222,53,129,183,75,4.6,29.5,83,189,Asymptomatic,False,0.7,True,Former,2.3,144,8.6,50.9,True,7774,74.8,0 +7908,41,Female,143,82,122,50,51,112,119,5.8,20.3,97,181,Atypical Angina,False,0.3,False,Never,10.0,254,6.9,65.8,True,7943,76.2,0 +7909,69,Male,133,93,201,77,92,116,98,5.5,16.4,65,176,Asymptomatic,False,0.5,False,Never,1.9,163,6.6,39.2,True,7143,62.6,0 +7910,29,Male,110,69,196,47,114,171,129,6.0,33.9,88,210,Asymptomatic,False,1.4,False,Never,6.8,245,7.3,55.7,False,7568,79.5,0 +7911,25,Male,121,84,146,65,51,162,117,5.5,18.9,82,203,Asymptomatic,False,0.8,False,Current,5.2,189,8.0,52.5,False,3462,70.7,0 +7912,65,Male,120,71,142,36,77,129,123,6.0,23.9,83,157,Non-Anginal Pain,True,0.1,False,Never,14.1,128,7.6,49.6,True,6432,52.9,0 +7913,52,Female,124,89,136,60,65,174,123,5.8,22.4,85,182,Asymptomatic,False,0.6,False,Current,0.5,167,6.0,40.2,True,5161,43.1,0 +7914,37,Male,125,90,126,30,68,165,101,5.1,30.2,93,160,Non-Anginal Pain,False,5.2,False,Former,6.1,32,5.4,62.5,False,2087,50.4,1 +7915,47,Female,100,57,224,58,113,205,138,6.4,25.4,76,176,Asymptomatic,False,2.0,False,Never,3.9,136,8.8,19.1,False,6683,75.0,0 +7916,53,Female,123,90,230,72,113,171,94,5.1,29.8,71,177,Non-Anginal Pain,False,1.4,False,Never,0.8,151,7.1,42.0,False,5907,74.5,0 +7917,51,Female,136,93,160,55,63,140,128,6.2,26.1,79,181,Asymptomatic,False,0.1,False,Former,4.3,124,6.3,39.7,True,6584,64.9,0 +7918,59,Male,140,78,208,56,124,145,115,6.0,24.0,83,169,Asymptomatic,False,2.3,False,Never,6.5,155,10.1,28.4,False,2399,61.7,0 +7919,47,Male,155,84,159,29,96,182,142,6.4,28.0,71,190,Asymptomatic,False,0.4,False,Never,4.4,167,5.6,65.4,False,6129,68.2,0 +7920,31,Male,102,70,167,56,100,89,98,5.0,17.9,85,199,Atypical Angina,False,0.3,True,Never,5.9,174,3.9,33.0,True,8807,69.7,0 +7921,33,Female,116,83,210,72,85,245,129,5.5,27.9,78,177,Atypical Angina,False,0.4,True,Former,1.8,135,6.8,67.9,False,6964,57.3,0 +7922,68,Male,157,96,208,63,110,154,98,5.0,23.2,77,169,Asymptomatic,False,0.4,True,Never,23.5,203,6.2,48.8,True,5683,56.1,0 +7923,45,Female,126,90,214,76,72,264,104,5.0,26.0,94,192,Typical Angina,False,0.3,False,Never,9.5,191,6.1,31.9,True,4780,76.6,0 +7924,46,Male,141,91,167,41,99,162,98,4.9,30.7,72,180,Atypical Angina,False,0.1,False,Never,2.8,164,7.6,41.9,False,6961,51.0,0 +7925,20,Female,96,57,185,54,103,116,133,7.1,26.6,78,204,Asymptomatic,False,0.8,True,Current,0.1,142,7.8,70.8,False,9961,60.2,1 +7926,35,Male,115,63,155,38,98,137,137,6.0,18.7,91,191,Asymptomatic,True,0.5,False,Never,10.9,221,6.2,52.8,False,6904,74.3,0 +7927,55,Male,126,89,144,45,58,161,131,5.9,21.5,84,151,Typical Angina,True,0.4,True,Never,1.6,138,8.1,46.5,False,1712,57.8,1 +7928,46,Male,104,59,135,20,95,166,134,6.3,30.2,86,151,Asymptomatic,False,1.1,False,Current,1.7,141,6.8,54.2,True,8111,52.6,0 +7929,55,Female,110,73,175,50,95,181,115,6.0,28.4,82,182,Non-Anginal Pain,False,1.2,True,Current,9.5,126,8.4,41.2,False,5411,73.6,0 +7930,59,Female,119,67,221,56,135,168,119,5.7,18.4,70,181,Non-Anginal Pain,False,0.6,False,Never,0.0,137,8.3,42.1,True,9651,44.8,0 +7931,47,Female,129,74,242,72,153,99,133,5.1,27.4,81,173,Non-Anginal Pain,False,0.3,False,Never,5.0,166,6.9,56.3,False,6206,53.5,0 +7932,86,Female,169,88,225,60,140,112,164,7.7,30.4,83,129,Asymptomatic,True,2.0,True,Former,4.9,0,8.4,48.2,False,4468,58.9,1 +7933,48,Male,133,93,108,59,37,158,137,6.2,24.4,88,173,Asymptomatic,False,0.5,False,Never,4.3,149,8.1,49.2,False,8121,56.9,0 +7934,63,Male,130,85,208,57,109,196,129,6.5,26.4,93,126,Atypical Angina,False,1.0,False,Former,11.0,114,7.5,37.2,True,4936,71.5,1 +7935,58,Male,123,80,211,58,103,198,74,4.7,21.7,88,171,Asymptomatic,False,1.9,True,Current,1.6,198,8.4,52.8,True,6648,75.7,0 +7936,77,Female,135,74,173,65,84,117,113,5.5,27.8,73,157,Non-Anginal Pain,False,0.8,False,Never,3.5,223,9.3,49.1,True,5295,96.8,0 +7937,49,Male,113,71,182,56,102,110,120,5.9,28.5,83,177,Typical Angina,False,1.5,False,Former,2.2,86,7.2,55.5,False,4353,38.6,0 +7938,46,Male,124,78,195,51,111,154,153,7.3,26.2,75,191,Non-Anginal Pain,False,0.1,False,Never,2.9,237,7.4,40.4,True,8999,46.9,0 +7939,46,Male,121,85,231,56,136,148,106,5.0,27.4,79,167,Atypical Angina,False,3.0,False,Never,9.4,231,7.7,69.7,False,6715,57.4,0 +7940,59,Male,123,74,145,59,61,123,89,5.3,23.4,57,161,Asymptomatic,False,0.5,False,Former,2.3,198,5.7,58.4,True,7951,47.3,0 +7941,62,Female,114,78,165,48,103,179,92,4.8,15.9,79,146,Non-Anginal Pain,False,1.3,False,Former,0.7,53,5.0,61.7,False,6267,54.0,0 +7942,44,Male,140,98,194,39,103,260,103,4.7,22.1,84,166,Atypical Angina,False,0.5,True,Never,24.4,34,7.0,81.2,True,6060,37.9,0 +7943,57,Male,125,76,154,54,85,143,144,6.3,26.9,82,132,Non-Anginal Pain,True,0.3,True,Never,2.3,114,6.6,37.6,False,7101,78.5,1 +7944,33,Female,129,87,151,55,81,101,144,6.4,23.5,88,177,Typical Angina,True,0.2,True,Never,2.3,134,6.9,58.3,False,6448,60.9,0 +7945,74,Male,131,77,189,49,113,117,149,6.7,27.6,71,152,Asymptomatic,True,5.1,True,Never,1.9,128,6.0,39.3,True,6182,41.7,1 +7946,69,Male,153,98,241,53,148,233,173,7.0,27.9,75,134,Asymptomatic,True,1.9,True,Current,13.8,85,8.0,53.1,False,4872,76.6,1 +7947,64,Male,140,78,206,31,135,156,91,5.0,27.0,85,132,Non-Anginal Pain,True,1.8,False,Current,17.8,0,6.3,51.8,False,2207,53.9,1 +7948,52,Female,120,78,210,55,143,85,131,5.9,23.1,81,192,Asymptomatic,False,0.4,False,Never,1.3,168,5.0,54.0,False,7429,63.6,0 +7949,46,Male,137,79,204,58,120,182,69,4.2,24.7,84,161,Non-Anginal Pain,True,0.4,True,Former,4.1,274,6.0,72.2,True,8706,91.3,1 +7950,61,Female,149,101,185,46,126,112,142,5.9,23.7,76,168,Asymptomatic,False,0.2,True,Never,1.2,77,6.5,70.3,False,5767,48.0,0 +7951,44,Male,123,81,243,54,155,172,88,5.9,28.8,73,182,Atypical Angina,False,1.4,False,Never,1.6,104,8.6,50.5,False,5142,42.0,0 +7952,35,Female,119,77,199,54,123,97,125,5.7,23.0,83,177,Atypical Angina,False,3.8,False,Never,1.8,164,5.1,39.1,False,4356,70.6,1 +7953,60,Male,122,85,198,56,140,35,114,5.4,17.0,88,158,Atypical Angina,False,1.8,True,Never,2.4,54,6.6,38.5,False,5151,71.0,1 +7954,56,Male,127,79,214,55,103,283,113,5.8,24.4,74,164,Non-Anginal Pain,False,0.2,True,Never,8.0,203,6.7,48.4,False,3457,61.3,0 +7955,72,Male,141,81,192,43,129,115,135,5.5,22.4,80,135,Asymptomatic,False,0.6,True,Never,1.8,128,7.2,48.7,False,7217,73.8,0 +7956,44,Male,131,86,182,56,102,129,142,7.4,33.7,82,170,Asymptomatic,True,0.3,False,Never,2.4,124,8.6,61.6,False,6635,68.0,1 +7957,66,Male,132,88,164,50,100,81,89,5.1,29.5,87,155,Asymptomatic,False,1.4,False,Former,3.1,37,4.5,4.3,False,3692,49.6,0 +7958,46,Female,130,75,143,31,99,79,111,5.5,27.5,84,192,Asymptomatic,False,0.2,False,Never,0.1,137,6.1,37.6,False,4771,55.1,0 +7959,54,Female,108,54,179,67,91,158,76,5.3,25.3,86,148,Asymptomatic,True,0.5,False,Never,4.3,147,7.5,40.4,True,7621,43.2,0 +7960,60,Female,136,85,182,50,90,226,99,4.8,25.4,63,188,Asymptomatic,False,1.3,False,Never,8.8,166,8.1,74.0,False,5033,59.4,0 +7961,56,Female,105,80,170,56,99,80,119,6.0,21.1,69,179,Asymptomatic,False,0.4,True,Current,1.0,164,8.0,64.6,True,8801,64.1,0 +7962,44,Male,104,64,196,55,120,118,94,5.5,19.4,82,146,Atypical Angina,True,4.4,True,Never,9.3,184,5.8,21.5,True,8526,54.4,1 +7963,65,Female,139,88,206,50,132,234,125,5.3,34.4,84,164,Asymptomatic,False,2.5,False,Never,8.6,142,5.3,50.3,False,10576,58.2,1 +7964,40,Female,128,85,164,65,77,125,119,5.9,29.7,64,186,Asymptomatic,False,0.5,False,Never,9.8,178,8.4,61.4,True,6746,64.6,0 +7965,71,Female,123,64,233,58,161,75,67,4.6,20.9,76,144,Atypical Angina,False,0.5,False,Former,6.6,165,7.4,37.5,False,7442,49.5,0 +7966,28,Female,112,83,222,59,122,151,107,5.4,22.6,93,210,Typical Angina,False,0.4,False,Former,1.8,147,7.0,49.1,False,8071,50.4,0 +7967,67,Male,122,75,227,76,135,82,138,5.9,20.8,79,145,Asymptomatic,False,4.7,True,Current,8.8,80,6.7,49.9,False,6374,42.9,1 +7968,45,Female,122,71,178,64,106,131,112,5.4,21.2,82,161,Atypical Angina,True,0.4,False,Former,5.9,177,6.6,69.9,True,5926,35.9,1 +7969,48,Female,117,81,219,47,154,114,139,6.7,28.0,81,171,Asymptomatic,False,0.1,False,Never,0.3,84,6.5,42.9,False,5567,60.5,0 +7970,31,Female,143,86,169,58,83,172,139,6.1,25.2,84,196,Atypical Angina,False,2.1,False,Never,4.6,202,5.8,16.0,False,9087,70.8,0 +7971,52,Male,118,78,243,52,136,237,99,5.3,26.5,94,141,Non-Anginal Pain,True,2.0,True,Never,6.7,147,8.1,44.4,False,3004,80.9,1 +7972,57,Male,136,88,182,50,116,102,70,4.5,25.0,81,159,Non-Anginal Pain,False,0.8,False,Never,17.2,71,4.5,49.9,False,5275,81.2,1 +7973,63,Female,130,91,205,61,98,247,133,6.0,28.5,75,155,Typical Angina,False,3.3,True,Former,19.6,267,7.8,34.5,True,8352,56.7,1 +7974,68,Female,129,73,159,54,109,97,149,6.5,26.5,84,171,Asymptomatic,False,1.4,False,Former,1.7,160,7.2,51.8,True,4400,88.7,0 +7975,52,Female,118,84,199,64,106,159,123,6.1,25.7,90,155,Non-Anginal Pain,True,1.5,False,Never,10.0,121,4.9,45.6,True,7013,74.6,1 +7976,55,Female,125,79,169,60,79,119,101,5.1,24.0,86,175,Asymptomatic,False,0.2,False,Current,2.0,123,7.2,44.6,False,8453,63.0,0 +7977,59,Male,144,84,163,36,97,138,144,6.6,32.2,86,152,Atypical Angina,False,1.4,False,Current,11.1,128,8.1,42.7,False,6208,36.9,1 +7978,58,Male,126,81,188,48,91,262,128,5.8,25.4,70,154,Atypical Angina,False,0.3,False,Never,4.0,200,8.9,53.7,False,9470,63.5,0 +7979,72,Female,157,93,209,56,117,149,150,6.5,30.7,83,128,Asymptomatic,False,1.2,False,Current,4.1,73,6.1,42.2,False,1602,37.1,1 +7980,57,Female,106,87,144,63,59,120,105,5.1,20.2,68,187,Atypical Angina,False,0.4,False,Never,4.6,252,8.0,20.8,True,9131,59.4,0 +7981,44,Male,100,64,179,69,86,146,113,5.6,20.7,82,176,Asymptomatic,False,0.3,True,Never,13.1,273,7.8,56.5,True,7700,73.3,0 +7982,62,Male,139,77,211,73,91,186,93,4.6,20.8,74,178,Atypical Angina,False,0.1,False,Former,7.2,233,8.2,23.3,True,6728,55.3,0 +7983,31,Female,113,63,184,65,84,148,126,6.1,25.1,78,209,Non-Anginal Pain,False,0.6,False,Former,3.9,206,7.8,36.7,False,4897,55.4,0 +7984,38,Male,142,79,221,58,136,119,110,5.8,16.4,80,190,Non-Anginal Pain,False,1.1,False,Never,12.4,256,5.9,72.7,False,6705,63.5,0 +7985,51,Female,132,86,226,58,120,163,128,5.7,25.0,82,183,Asymptomatic,False,0.6,True,Never,0.5,120,6.5,48.2,True,5244,51.0,0 +7986,53,Female,120,65,202,50,120,139,94,4.9,26.2,99,175,Asymptomatic,False,2.7,False,Current,6.5,167,7.0,47.4,False,1729,47.6,0 +7987,71,Male,137,72,239,54,146,255,102,5.8,25.9,81,146,Asymptomatic,True,0.1,False,Current,6.9,187,9.1,46.8,True,6794,54.7,1 +7988,55,Male,141,87,174,35,115,101,131,6.3,25.1,82,149,Non-Anginal Pain,False,0.4,False,Current,24.7,56,6.5,49.6,True,4650,45.4,0 +7989,51,Female,125,76,192,58,110,98,114,5.6,30.8,81,177,Asymptomatic,False,0.4,False,Never,7.4,55,6.6,53.7,False,3811,70.0,0 +7990,64,Male,137,80,188,56,86,165,101,5.8,20.1,72,144,Non-Anginal Pain,False,0.2,False,Never,4.6,107,6.3,36.2,True,7114,74.9,0 +7991,62,Male,143,97,221,35,149,144,144,6.0,32.2,99,150,Non-Anginal Pain,True,2.0,False,Current,11.3,88,6.5,59.8,True,4142,42.2,1 +7992,62,Female,129,85,140,39,72,149,139,6.2,21.5,84,129,Atypical Angina,True,1.0,True,Never,0.2,61,6.9,76.1,True,7379,30.1,1 +7993,68,Male,160,109,180,55,113,97,135,7.0,25.3,76,161,Atypical Angina,False,1.7,False,Never,6.0,106,8.1,70.1,False,4157,97.1,1 +7994,64,Female,126,77,132,46,61,159,136,5.6,31.0,85,168,Asymptomatic,True,1.2,True,Former,2.6,44,8.6,33.9,False,4748,68.6,0 +7995,54,Male,118,77,138,41,79,105,114,5.6,26.9,89,163,Asymptomatic,True,0.7,False,Never,4.7,114,6.2,32.9,False,6938,32.8,0 +7996,47,Male,128,88,185,51,102,141,127,5.8,27.0,80,164,Typical Angina,False,1.9,False,Never,2.5,27,7.5,35.4,False,6484,40.0,0 +7997,37,Male,145,86,207,41,115,277,137,6.4,34.1,85,178,Asymptomatic,True,1.8,False,Current,15.4,100,8.0,47.1,False,8431,33.2,1 +7998,64,Male,144,93,164,44,89,130,145,6.6,29.1,96,146,Asymptomatic,False,2.9,False,Former,8.9,62,6.7,68.1,False,3465,65.4,1 +7999,56,Male,125,78,148,52,85,106,144,6.7,26.3,85,163,Asymptomatic,True,2.5,False,Current,3.6,265,7.4,38.2,True,5566,65.9,0 +8000,66,Female,108,67,227,59,146,106,134,6.1,23.8,97,148,Non-Anginal Pain,False,0.2,False,Current,2.5,152,8.0,53.3,True,7847,42.9,0 +8001,52,Female,124,71,203,73,113,110,149,6.6,21.2,79,173,Asymptomatic,False,0.4,False,Never,5.9,213,7.7,93.3,True,8499,74.0,0 +8002,60,Female,130,74,232,57,130,212,113,5.9,22.4,75,152,Non-Anginal Pain,False,0.8,False,Never,9.1,0,6.8,47.9,False,5868,84.4,0 +8003,56,Female,124,82,213,45,125,137,148,6.6,30.6,69,161,Atypical Angina,False,0.4,False,Former,12.0,178,5.9,50.4,True,8870,66.8,0 +8004,35,Male,105,71,157,52,71,222,117,6.0,26.1,86,181,Non-Anginal Pain,False,0.4,False,Former,3.0,305,9.3,56.6,True,10064,53.1,1 +8005,50,Male,114,73,181,59,72,200,121,5.9,32.2,88,176,Asymptomatic,False,0.4,False,Never,7.6,167,5.7,33.6,True,10582,68.5,0 +8006,27,Male,107,61,185,95,63,140,120,5.6,20.8,65,203,Non-Anginal Pain,False,0.2,True,Former,3.9,243,8.4,35.8,True,9784,80.8,0 +8007,55,Female,127,88,232,57,129,234,89,4.5,21.7,70,175,Asymptomatic,False,0.4,True,Never,4.1,157,8.0,12.8,False,6747,41.4,0 +8008,90,Male,120,55,259,74,159,148,155,6.5,20.1,102,125,Non-Anginal Pain,True,1.5,False,Never,2.4,128,6.2,28.0,True,5284,53.5,1 +8009,69,Female,128,74,168,50,104,48,96,5.8,27.3,78,183,Asymptomatic,False,2.3,False,Never,0.9,116,7.3,40.3,False,5269,54.9,0 +8010,72,Male,142,84,190,38,124,165,119,5.7,30.2,99,113,Atypical Angina,True,1.3,True,Former,12.4,112,6.3,53.6,True,5698,73.4,1 +8011,51,Female,123,78,182,51,89,181,141,6.0,24.4,73,191,Asymptomatic,False,0.5,False,Never,0.1,186,7.8,56.1,True,5155,32.0,0 +8012,44,Female,123,93,197,66,107,142,115,5.9,27.5,79,191,Asymptomatic,False,0.6,False,Former,4.3,98,8.2,37.5,False,5698,63.3,0 +8013,49,Male,125,82,213,36,153,136,143,6.5,28.1,71,185,Asymptomatic,False,1.3,False,Never,3.8,141,6.9,61.0,False,8730,58.2,0 +8014,64,Female,136,90,255,71,155,94,123,5.9,16.0,95,148,Asymptomatic,False,1.1,True,Current,4.9,35,6.7,42.8,False,3437,55.9,0 +8015,40,Male,112,69,187,60,96,168,101,5.3,24.9,82,184,Typical Angina,False,0.6,True,Former,2.3,132,8.7,20.9,True,6557,36.0,0 +8016,85,Female,144,100,179,37,110,167,131,6.0,22.4,71,134,Typical Angina,False,0.2,True,Never,3.2,118,6.9,36.7,False,7136,43.5,1 +8017,47,Male,116,73,215,55,147,83,103,5.4,24.7,98,180,Typical Angina,False,0.9,False,Never,2.6,250,8.0,65.1,True,6418,73.7,0 +8018,51,Male,120,78,214,62,99,224,95,4.4,25.5,83,173,Asymptomatic,False,0.4,False,Former,4.8,216,7.1,45.1,False,8346,46.0,0 +8019,70,Female,117,79,196,54,89,211,123,6.0,21.9,85,155,Non-Anginal Pain,False,0.1,False,Current,0.1,216,8.3,61.9,True,4989,52.8,0 +8020,60,Female,129,79,193,68,87,161,143,6.0,25.7,71,151,Asymptomatic,False,2.1,False,Never,2.6,125,5.9,74.0,False,5173,77.6,0 +8021,66,Female,134,82,173,56,91,175,109,5.3,26.2,80,149,Asymptomatic,False,0.4,False,Never,2.6,115,7.2,16.6,False,4220,68.5,0 +8022,26,Female,112,72,213,53,130,170,120,6.2,28.2,81,210,Typical Angina,True,0.6,False,Never,0.5,191,6.9,37.2,True,6891,25.7,0 +8023,50,Male,125,88,250,56,139,218,127,5.6,25.8,84,156,Atypical Angina,False,1.6,True,Never,4.2,123,7.3,65.6,False,4235,35.5,1 +8024,53,Female,134,72,180,53,99,106,112,5.4,30.4,83,151,Asymptomatic,False,1.1,False,Never,4.4,100,8.2,58.0,False,6693,61.0,0 +8025,54,Male,127,81,162,54,86,157,119,5.9,24.5,80,148,Asymptomatic,False,1.0,False,Never,1.9,190,7.4,33.8,False,5165,65.8,0 +8026,77,Female,161,104,246,72,124,235,88,4.0,26.3,74,171,Atypical Angina,False,1.4,True,Never,4.6,208,7.3,39.6,True,6698,73.4,0 +8027,46,Male,142,87,205,71,125,97,111,5.9,24.0,93,201,Non-Anginal Pain,False,0.7,True,Former,2.4,214,7.9,38.7,True,7324,48.8,0 +8028,58,Male,122,88,140,57,71,74,107,5.3,22.8,85,185,Atypical Angina,False,0.8,True,Former,3.4,149,5.8,38.3,True,6544,81.7,0 +8029,77,Male,144,88,232,40,135,265,112,5.9,30.7,92,112,Non-Anginal Pain,True,1.5,False,Current,6.5,60,7.2,39.3,True,5869,68.0,1 +8030,26,Female,126,84,180,70,75,114,138,5.8,29.5,92,199,Asymptomatic,False,0.4,False,Never,1.5,188,8.0,61.9,True,5277,81.8,0 +8031,36,Female,126,90,167,37,115,95,114,5.6,26.9,94,202,Asymptomatic,False,1.2,False,Former,4.9,93,5.7,47.9,True,7751,70.0,0 +8032,49,Male,135,90,192,65,93,137,134,6.6,21.8,78,170,Asymptomatic,False,1.3,False,Former,8.3,81,7.1,55.6,False,6935,55.7,0 +8033,42,Male,129,81,202,42,132,122,167,6.6,33.8,79,187,Non-Anginal Pain,True,0.1,False,Never,6.2,93,7.3,48.5,True,4526,47.8,1 +8034,39,Female,114,82,196,63,110,98,132,5.7,24.5,69,161,Asymptomatic,False,0.6,True,Never,6.5,164,5.8,69.2,False,6486,49.2,0 +8035,57,Male,129,94,213,48,121,187,104,5.0,32.1,69,135,Asymptomatic,False,0.0,True,Never,11.2,52,6.0,36.7,False,5511,45.9,0 +8036,73,Male,144,81,186,42,112,155,118,6.2,27.0,67,119,Asymptomatic,True,0.5,False,Current,14.6,34,7.2,43.7,False,4100,50.6,1 +8037,38,Male,115,77,202,81,93,162,84,5.0,32.8,83,179,Asymptomatic,False,0.1,False,Former,3.5,200,6.0,48.6,False,5306,48.7,0 +8038,69,Female,133,90,155,47,108,108,126,6.3,26.0,67,152,Asymptomatic,False,0.7,False,Never,11.1,168,5.9,52.8,True,1498,73.1,0 +8039,41,Male,129,83,206,61,116,146,106,5.4,23.3,91,208,Non-Anginal Pain,False,0.0,False,Never,2.6,99,6.3,62.6,True,5742,55.1,0 +8040,47,Male,135,101,226,57,127,168,124,5.9,27.6,72,168,Asymptomatic,True,2.8,True,Former,9.0,216,5.8,29.1,True,8434,62.0,1 +8041,67,Female,156,106,228,59,130,144,175,7.4,31.0,91,147,Atypical Angina,True,0.6,False,Former,1.4,0,6.9,51.0,False,5275,37.8,1 +8042,63,Female,144,96,189,75,90,141,155,6.5,25.2,86,158,Asymptomatic,False,0.4,False,Never,6.4,142,6.9,82.6,True,12540,72.4,0 +8043,54,Female,118,75,186,82,93,106,83,4.0,15.3,66,186,Asymptomatic,False,0.6,False,Former,0.5,170,9.4,32.4,True,8002,82.0,0 +8044,54,Female,162,101,188,44,110,150,129,6.5,33.1,95,160,Asymptomatic,False,1.0,False,Never,13.3,93,3.9,63.6,False,3442,72.8,1 +8045,53,Male,124,76,151,59,55,150,92,5.4,17.1,74,168,Asymptomatic,False,0.2,False,Never,17.0,125,7.4,32.1,True,8417,66.5,0 +8046,38,Female,116,75,215,63,117,187,152,6.9,30.3,77,179,Atypical Angina,False,0.7,False,Never,11.0,205,7.3,70.9,True,7629,71.7,0 +8047,70,Male,136,89,231,58,131,162,145,6.9,20.7,69,146,Asymptomatic,True,1.8,False,Former,15.3,200,7.7,12.5,False,3681,39.8,1 +8048,61,Male,115,71,136,30,69,160,114,5.5,25.0,68,161,Non-Anginal Pain,False,0.6,False,Former,1.7,163,6.9,11.4,False,5545,72.8,0 +8049,30,Male,147,86,192,58,111,130,84,5.0,22.2,72,190,Asymptomatic,False,0.6,True,Never,4.5,208,8.8,46.7,False,7883,68.6,0 +8050,67,Female,143,97,190,58,104,117,117,5.7,22.1,73,153,Non-Anginal Pain,True,1.5,False,Former,2.9,156,5.0,64.1,False,4577,40.8,1 +8051,36,Male,116,75,178,62,88,214,132,5.6,21.8,80,199,Asymptomatic,False,0.4,False,Never,2.5,73,3.8,41.2,False,3720,60.4,0 +8052,63,Male,117,80,209,56,119,148,141,6.7,27.6,76,160,Asymptomatic,False,1.4,True,Never,3.1,169,6.5,34.1,True,7211,56.8,0 +8053,36,Male,148,89,181,40,101,222,134,6.6,28.7,86,176,Typical Angina,False,3.9,False,Never,4.3,198,8.2,65.0,False,8053,44.3,1 +8054,80,Male,146,88,224,60,145,58,60,4.2,24.0,81,122,Atypical Angina,False,0.3,False,Current,8.6,214,4.9,30.4,True,4809,42.8,1 +8055,70,Female,147,97,204,74,98,162,155,6.5,25.8,86,156,Non-Anginal Pain,False,1.1,True,Former,7.5,147,8.4,60.6,False,2333,80.0,0 +8056,67,Female,109,73,194,26,126,157,90,5.0,25.1,76,130,Atypical Angina,True,1.0,False,Never,15.1,126,5.0,12.2,False,6909,41.7,1 +8057,63,Male,117,81,177,55,98,90,115,5.3,29.5,69,175,Asymptomatic,True,0.5,True,Never,3.3,135,4.4,14.4,False,3306,72.6,0 +8058,38,Male,98,66,145,63,66,139,118,5.6,23.5,86,186,Non-Anginal Pain,False,0.6,False,Never,3.3,96,7.7,49.4,False,6299,51.1,0 +8059,40,Male,110,73,184,69,90,144,124,5.7,22.4,67,172,Non-Anginal Pain,False,0.4,False,Never,9.3,188,7.0,63.1,False,5309,82.3,0 +8060,72,Female,134,97,132,48,61,171,167,6.8,22.3,85,152,Asymptomatic,False,0.4,True,Current,2.6,104,8.6,19.9,False,5798,57.6,0 +8061,61,Male,141,76,254,53,152,200,77,5.3,23.3,75,160,Asymptomatic,False,1.8,False,Never,1.9,35,6.8,39.3,False,2512,32.8,0 +8062,60,Male,135,82,239,70,141,182,105,5.5,20.5,75,170,Atypical Angina,True,0.5,False,Current,6.2,92,8.5,46.5,False,3971,55.5,0 +8063,43,Male,115,67,161,41,67,284,127,6.2,29.7,87,196,Asymptomatic,False,0.4,False,Never,10.0,201,5.9,43.6,False,5731,48.3,0 +8064,47,Male,116,72,190,37,87,272,157,6.7,27.6,78,168,Non-Anginal Pain,True,1.3,False,Never,28.2,11,6.9,46.4,False,7147,60.4,1 +8065,49,Male,114,76,243,73,104,251,112,6.1,22.8,55,187,Asymptomatic,False,0.2,False,Never,2.4,245,8.1,15.9,True,6179,64.3,0 +8066,61,Male,127,92,221,55,131,75,139,6.5,25.1,75,148,Non-Anginal Pain,False,1.4,False,Former,11.0,140,7.3,41.6,True,5123,41.1,1 +8067,70,Male,127,67,145,34,100,104,119,6.6,19.7,84,135,Asymptomatic,False,0.6,True,Never,4.2,0,6.5,36.9,False,2572,71.4,1 +8068,81,Female,151,88,211,60,114,148,129,6.0,27.1,87,126,Asymptomatic,False,0.6,False,Current,9.4,6,8.9,68.0,False,4997,66.1,0 +8069,54,Female,117,75,222,65,146,86,116,6.3,26.0,75,172,Non-Anginal Pain,False,1.2,False,Never,0.4,236,6.1,43.3,True,5444,79.1,0 +8070,58,Male,122,76,188,49,101,199,124,5.9,21.6,85,157,Asymptomatic,False,2.3,True,Former,6.1,93,6.9,50.6,False,7946,52.0,1 +8071,45,Female,127,83,187,59,89,160,149,6.1,34.0,88,160,Asymptomatic,True,2.8,False,Never,0.8,93,7.3,42.4,False,4058,77.8,1 +8072,27,Female,128,73,161,46,79,246,127,5.7,24.6,62,197,Asymptomatic,True,0.6,True,Former,2.8,141,5.6,61.0,False,4048,18.9,0 +8073,63,Female,123,77,269,85,161,169,75,4.7,19.6,69,160,Asymptomatic,False,0.9,False,Never,5.6,216,8.0,47.9,True,6353,55.4,0 +8074,32,Female,115,76,183,72,102,74,139,6.4,24.5,87,191,Typical Angina,False,0.3,False,Former,8.6,132,8.6,43.6,True,7473,63.4,0 +8075,48,Male,147,82,148,29,78,246,165,7.1,30.3,75,181,Non-Anginal Pain,False,0.9,False,Never,2.8,36,9.7,51.1,False,7050,28.5,0 +8076,55,Female,130,74,180,66,91,151,105,5.5,26.6,72,176,Asymptomatic,False,1.5,False,Never,1.6,111,7.1,43.6,True,4828,66.3,0 +8077,61,Male,130,78,174,64,74,208,74,4.2,19.7,91,151,Asymptomatic,False,0.1,False,Former,4.2,170,7.7,37.6,False,5665,80.5,0 +8078,53,Male,117,73,208,65,108,144,111,4.9,24.2,69,197,Non-Anginal Pain,False,0.4,False,Former,1.8,72,6.8,39.9,False,4944,46.8,0 +8079,66,Male,148,96,203,28,147,139,168,7.1,19.6,77,160,Asymptomatic,False,1.3,False,Current,5.5,42,6.8,57.1,False,2544,51.4,0 +8080,68,Female,124,92,196,50,122,109,134,6.3,25.3,79,146,Typical Angina,False,1.7,False,Current,5.0,167,7.0,30.3,True,5118,63.6,1 +8081,47,Female,136,82,200,47,124,148,105,5.5,32.6,88,171,Asymptomatic,False,0.2,False,Current,0.5,0,7.5,49.1,False,6282,52.1,0 +8082,40,Female,117,77,184,58,76,208,150,6.4,30.9,90,203,Atypical Angina,False,0.5,False,Current,0.5,123,6.3,63.0,False,6905,67.3,0 +8083,60,Male,145,94,230,71,122,130,111,5.6,27.9,87,153,Non-Anginal Pain,False,0.6,False,Never,10.5,144,5.1,45.7,False,5251,60.2,0 +8084,57,Female,128,73,211,58,130,130,101,5.0,27.1,90,145,Atypical Angina,True,1.6,False,Never,5.0,168,8.2,71.0,True,8400,47.3,1 +8085,57,Female,105,70,192,54,87,244,106,5.6,33.1,84,158,Asymptomatic,False,0.1,True,Never,0.9,57,6.4,60.7,True,6857,41.1,1 +8086,61,Female,132,69,221,53,110,277,113,5.7,28.4,86,168,Non-Anginal Pain,False,1.0,False,Current,1.6,194,6.1,61.1,False,6661,42.1,1 +8087,33,Female,116,73,171,67,88,139,94,5.3,20.6,69,194,Typical Angina,False,1.4,True,Never,13.9,195,6.0,36.2,False,9701,75.2,0 +8088,50,Male,115,74,223,68,96,223,100,5.6,21.7,76,171,Non-Anginal Pain,True,1.1,True,Never,2.5,158,5.9,35.7,True,4880,65.6,0 +8089,76,Female,132,74,181,57,107,169,120,5.7,29.5,67,118,Asymptomatic,False,0.8,True,Current,0.5,198,7.3,47.5,True,7336,57.0,1 +8090,48,Male,120,73,192,59,105,103,131,6.0,28.9,74,176,Typical Angina,False,0.5,False,Former,3.1,167,6.4,42.8,True,7953,71.5,0 +8091,60,Female,120,73,208,47,131,100,140,6.2,26.8,72,163,Non-Anginal Pain,False,0.4,False,Current,11.7,188,9.0,48.6,True,10093,60.1,0 +8092,45,Male,135,71,125,31,62,180,127,6.3,23.8,79,173,Atypical Angina,True,4.2,False,Former,3.6,142,6.6,30.8,True,8387,48.8,1 +8093,68,Female,138,84,224,64,117,185,84,5.1,25.3,76,159,Asymptomatic,False,0.7,False,Never,0.2,111,7.2,20.9,True,7182,37.2,0 +8094,56,Male,113,72,225,61,148,92,95,4.6,26.8,82,157,Typical Angina,True,1.5,False,Former,6.4,219,6.4,35.1,False,7691,70.3,1 +8095,42,Female,121,72,223,65,121,181,130,5.5,26.6,89,186,Non-Anginal Pain,False,1.6,False,Current,1.9,211,9.1,65.6,True,9798,40.9,0 +8096,76,Male,127,72,190,53,88,197,167,7.8,27.4,81,138,Asymptomatic,True,0.4,False,Never,3.1,178,6.0,4.8,True,6996,58.7,1 +8097,20,Female,96,57,181,71,83,107,147,5.7,19.5,70,210,Asymptomatic,True,0.3,False,Never,0.6,162,7.3,39.3,False,8103,54.8,0 +8098,42,Male,101,61,169,51,77,205,116,5.7,19.8,82,184,Asymptomatic,False,0.3,False,Former,3.5,151,8.1,64.2,True,4844,66.2,0 +8099,66,Female,136,81,191,48,122,118,113,5.4,19.7,80,160,Asymptomatic,True,0.1,True,Former,4.5,120,8.8,20.3,False,5676,31.2,0 +8100,40,Male,117,68,173,39,104,171,150,6.7,25.2,75,178,Non-Anginal Pain,False,0.4,False,Never,9.9,119,7.4,36.8,True,6388,61.6,0 +8101,37,Male,107,58,132,56,35,150,75,4.1,20.8,58,188,Atypical Angina,False,0.6,False,Never,2.6,166,6.8,47.7,True,6798,65.4,0 +8102,35,Male,130,84,184,45,122,157,99,5.4,26.5,77,195,Asymptomatic,True,0.9,True,Current,10.2,172,8.5,69.0,True,10864,47.9,0 +8103,47,Female,114,64,240,65,120,233,142,6.0,28.0,75,191,Asymptomatic,False,0.8,False,Former,2.1,147,5.4,28.9,False,6292,51.5,0 +8104,55,Female,125,73,222,73,104,199,109,5.6,18.2,94,162,Atypical Angina,False,0.6,False,Never,6.4,146,8.8,59.8,True,5928,58.2,0 +8105,36,Male,130,72,216,68,104,197,99,5.1,27.3,85,197,Atypical Angina,False,0.1,True,Current,30.2,89,7.3,51.2,True,6637,59.5,0 +8106,59,Male,137,78,199,56,99,191,131,6.2,28.5,71,172,Non-Anginal Pain,True,0.8,False,Never,5.6,299,6.7,17.3,True,9308,87.8,0 +8107,60,Male,142,87,138,52,73,72,91,5.6,19.6,77,167,Asymptomatic,True,4.4,True,Current,2.1,165,7.7,44.0,True,3522,52.0,1 +8108,62,Male,117,83,187,40,105,159,150,7.1,24.4,80,147,Asymptomatic,True,0.4,False,Never,3.4,62,9.2,73.0,False,4380,51.8,0 +8109,39,Female,132,74,128,58,54,122,138,6.8,31.6,80,195,Atypical Angina,True,0.6,False,Former,4.0,180,5.4,41.9,True,7518,66.2,0 +8110,59,Male,126,81,192,57,88,155,92,5.0,24.9,85,163,Atypical Angina,False,0.6,False,Former,2.0,141,6.5,63.4,False,5440,59.7,0 +8111,41,Female,107,70,209,75,103,176,90,5.0,24.2,82,192,Asymptomatic,False,1.8,True,Never,8.6,242,5.3,83.3,True,6854,65.9,0 +8112,53,Male,117,74,167,40,113,129,134,5.5,27.5,73,147,Asymptomatic,False,1.2,False,Never,2.1,88,6.9,47.0,False,5546,65.8,1 +8113,57,Female,130,74,219,62,123,138,105,5.5,24.4,95,159,Atypical Angina,False,2.4,True,Former,0.9,156,6.1,31.3,False,6436,49.5,0 +8114,77,Male,158,107,147,38,81,122,124,6.5,16.2,76,143,Typical Angina,True,0.8,True,Never,3.6,139,8.0,48.5,False,5564,36.4,1 +8115,69,Female,133,84,155,55,58,201,107,5.1,21.7,85,147,Atypical Angina,False,0.2,True,Current,19.9,283,5.3,47.5,True,9966,78.5,0 +8116,64,Male,129,74,172,37,104,100,102,5.8,22.9,84,162,Non-Anginal Pain,False,0.6,False,Current,7.9,176,8.4,51.3,True,5355,36.4,0 +8117,74,Female,153,94,166,64,69,186,165,7.0,28.0,77,145,Non-Anginal Pain,True,1.9,False,Former,5.0,202,6.2,53.2,True,6485,39.6,1 +8118,42,Male,122,84,99,57,35,40,129,5.8,18.1,77,181,Asymptomatic,False,2.1,False,Former,17.7,201,6.8,32.1,False,3286,81.7,0 +8119,44,Male,122,75,170,47,98,126,86,4.7,22.8,86,196,Typical Angina,False,1.5,False,Never,2.1,200,7.0,50.4,True,4941,54.5,0 +8120,55,Male,135,89,214,55,113,198,142,6.5,24.0,76,182,Asymptomatic,False,0.9,False,Never,14.3,169,5.3,46.5,True,7824,42.0,0 +8121,68,Male,134,92,187,56,104,158,84,5.2,19.5,79,150,Asymptomatic,False,0.1,False,Former,38.1,153,9.1,27.7,True,7760,78.8,0 +8122,62,Female,154,94,216,73,117,155,106,6.0,23.8,81,166,Asymptomatic,False,1.3,False,Never,2.4,112,6.8,56.2,False,6319,46.7,0 +8123,57,Female,138,82,210,61,124,219,118,5.4,28.1,80,182,Non-Anginal Pain,False,0.2,False,Current,11.5,142,8.1,40.0,True,6490,69.9,0 +8124,74,Male,117,69,177,56,80,235,132,6.1,29.2,83,127,Non-Anginal Pain,False,1.8,False,Current,5.0,35,7.6,26.9,False,3808,40.5,1 +8125,61,Male,145,76,204,56,125,170,137,5.6,27.5,96,166,Asymptomatic,False,0.6,False,Current,12.4,74,6.5,68.5,False,3159,41.8,0 +8126,56,Female,145,78,198,84,89,145,173,7.1,28.3,69,191,Atypical Angina,True,1.1,False,Never,0.3,262,5.8,23.2,False,5059,68.6,0 +8127,49,Male,131,70,172,61,80,121,115,5.8,22.2,78,165,Asymptomatic,False,0.2,False,Never,6.6,113,6.7,70.9,False,4898,74.0,0 +8128,66,Male,140,97,185,75,78,176,115,6.5,26.9,65,141,Non-Anginal Pain,True,1.7,True,Former,7.2,208,5.1,36.0,True,6430,74.2,1 +8129,42,Male,126,83,210,75,87,200,123,6.3,18.8,71,148,Atypical Angina,False,1.0,False,Former,5.9,207,5.3,59.0,False,3509,58.2,1 +8130,63,Male,135,88,229,64,121,172,104,5.2,23.1,76,151,Asymptomatic,False,0.2,False,Never,8.6,177,7.8,9.4,False,6050,83.9,0 +8131,64,Male,135,98,114,29,55,95,135,6.0,25.4,88,142,Non-Anginal Pain,False,1.7,True,Never,2.4,64,5.4,40.9,True,8718,79.1,1 +8132,58,Female,143,96,290,67,183,179,78,4.7,29.0,81,133,Atypical Angina,False,0.3,True,Current,5.2,110,8.5,40.4,False,3463,57.7,1 +8133,70,Female,144,87,246,71,129,231,124,6.0,23.0,81,159,Typical Angina,False,0.6,False,Former,12.2,143,8.4,75.5,False,6315,71.3,0 +8134,78,Female,135,80,203,69,102,137,106,5.6,22.0,86,137,Non-Anginal Pain,False,1.0,False,Former,9.0,85,6.8,43.9,False,6791,63.7,1 +8135,43,Female,109,61,198,74,98,161,122,5.7,19.8,82,178,Atypical Angina,False,1.1,False,Never,9.9,279,7.7,47.4,True,8603,73.3,0 +8136,63,Male,104,75,258,81,133,199,109,5.6,27.1,86,148,Asymptomatic,False,0.6,False,Former,4.0,186,8.4,51.6,False,4541,49.9,1 +8137,45,Male,128,86,199,49,108,131,89,5.0,18.6,70,160,Asymptomatic,False,0.2,True,Current,2.3,184,7.4,43.3,True,7763,32.8,1 +8138,59,Male,147,80,179,49,93,198,97,5.3,28.8,83,167,Asymptomatic,False,0.4,False,Current,9.2,229,8.2,38.6,True,8310,53.0,0 +8139,50,Female,115,59,161,58,87,113,122,6.5,29.9,81,188,Asymptomatic,True,1.0,False,Former,8.7,116,7.2,49.1,True,4178,65.5,0 +8140,47,Female,118,74,212,83,75,249,102,5.0,20.4,69,171,Asymptomatic,False,0.8,False,Never,31.3,199,5.1,35.0,True,3171,67.1,0 +8141,51,Female,132,85,227,52,146,215,123,6.0,37.8,81,183,Asymptomatic,False,0.4,False,Never,1.1,0,6.0,35.8,False,6628,51.7,0 +8142,62,Male,125,75,183,48,98,223,116,5.4,24.2,70,160,Asymptomatic,False,1.3,False,Former,7.0,75,8.1,35.6,False,3816,61.2,1 +8143,57,Male,156,95,240,48,148,182,132,5.8,32.7,82,141,Typical Angina,True,0.8,False,Former,9.8,105,4.2,36.7,True,8870,62.4,1 +8144,53,Male,122,67,137,33,77,191,89,5.2,33.4,85,159,Atypical Angina,True,0.8,False,Former,5.9,201,5.6,54.6,False,6556,59.9,1 +8145,70,Female,129,76,223,68,126,91,116,5.4,27.9,84,147,Asymptomatic,True,0.5,True,Never,0.7,111,6.0,75.6,True,5000,53.7,0 +8146,70,Male,144,102,176,54,87,167,121,5.8,26.9,83,165,Asymptomatic,False,0.6,False,Former,10.4,34,7.7,47.1,True,4959,37.3,0 +8147,57,Female,123,72,204,46,132,137,135,5.9,26.8,90,154,Typical Angina,False,0.4,True,Never,5.0,111,5.9,50.7,False,8546,61.2,0 +8148,35,Female,130,81,185,63,74,160,120,5.5,33.8,80,175,Asymptomatic,True,1.3,True,Never,2.0,165,8.4,57.6,True,8617,63.0,0 +8149,23,Male,126,86,210,86,102,148,98,5.7,20.3,71,195,Typical Angina,False,1.0,True,Former,1.8,114,6.3,51.8,False,3131,65.8,0 +8150,50,Female,120,80,167,65,56,176,136,6.6,24.0,72,158,Asymptomatic,True,2.4,False,Never,2.0,104,6.1,39.5,False,5181,52.8,1 +8151,63,Male,109,77,160,53,94,61,131,5.9,18.6,79,157,Asymptomatic,False,0.9,False,Never,9.1,116,6.4,45.9,False,4601,50.2,0 +8152,40,Male,109,80,248,61,138,235,100,5.1,30.8,90,171,Typical Angina,False,1.5,False,Former,9.8,134,6.5,86.9,False,5318,51.9,1 +8153,70,Female,142,96,185,30,95,233,145,6.7,39.5,82,145,Non-Anginal Pain,True,2.2,False,Never,7.1,84,5.6,67.0,True,8002,61.4,1 +8154,43,Male,117,72,194,66,90,203,123,6.3,24.8,72,169,Atypical Angina,False,1.5,True,Former,3.8,191,8.7,22.4,False,6709,85.0,1 +8155,72,Female,137,82,223,49,118,249,105,5.1,19.6,86,124,Asymptomatic,False,1.5,True,Never,4.1,105,6.3,32.3,True,4035,34.1,1 +8156,71,Female,147,92,184,56,84,172,86,5.2,26.7,85,146,Non-Anginal Pain,False,0.9,False,Never,0.7,46,5.9,52.4,False,2667,39.1,0 +8157,65,Female,122,66,175,65,81,132,139,6.2,17.3,79,143,Non-Anginal Pain,True,1.1,False,Current,6.1,182,5.5,26.1,True,5347,45.1,1 +8158,44,Male,131,75,155,59,70,179,141,6.4,23.3,97,161,Atypical Angina,False,1.3,False,Current,9.5,88,7.4,76.2,False,4150,46.6,0 +8159,75,Male,151,103,187,47,118,112,86,4.7,25.8,80,134,Non-Anginal Pain,True,1.5,False,Never,5.3,52,5.5,52.3,True,7068,50.8,1 +8160,53,Female,132,97,211,65,129,109,137,6.6,25.0,75,185,Asymptomatic,False,0.3,False,Never,3.1,204,7.2,48.7,True,7177,43.7,0 +8161,53,Male,109,63,158,55,77,176,160,7.7,26.7,86,193,Asymptomatic,False,0.5,False,Former,2.0,98,7.2,33.9,True,6310,64.3,0 +8162,55,Male,129,75,212,60,131,180,140,6.4,24.9,69,152,Non-Anginal Pain,True,0.8,False,Former,3.9,184,6.7,66.3,True,8027,61.6,1 +8163,36,Male,112,70,203,38,127,185,96,5.2,20.2,75,207,Asymptomatic,False,1.5,False,Never,8.3,179,6.3,50.1,False,5969,35.2,0 +8164,64,Female,129,79,200,79,87,178,148,6.9,23.7,78,156,Asymptomatic,False,0.9,False,Never,1.7,69,5.5,59.7,False,6667,65.6,1 +8165,71,Male,123,73,153,39,83,135,152,6.7,17.7,79,147,Asymptomatic,True,1.0,False,Current,7.8,133,7.7,29.6,False,2310,73.8,1 +8166,66,Female,124,77,258,50,163,199,101,5.1,27.3,75,146,Non-Anginal Pain,True,2.4,True,Current,1.4,161,7.2,65.7,True,5210,75.6,1 +8167,51,Male,143,90,198,59,100,159,110,5.4,24.1,71,182,Asymptomatic,False,0.5,False,Current,11.1,194,5.7,63.7,True,7101,67.2,0 +8168,46,Female,110,63,218,53,125,217,139,6.4,20.6,78,178,Asymptomatic,True,1.0,True,Never,16.2,146,6.7,20.5,False,3376,59.7,0 +8169,47,Male,114,65,192,44,105,143,86,4.5,24.2,88,176,Non-Anginal Pain,False,0.4,False,Never,1.8,100,8.5,21.0,False,7102,45.5,0 +8170,74,Male,144,90,162,52,77,178,160,6.6,21.5,87,141,Non-Anginal Pain,True,0.8,True,Never,10.7,117,5.5,45.6,False,500,57.9,1 +8171,69,Male,114,72,172,68,78,151,101,5.0,18.9,77,147,Asymptomatic,False,0.4,True,Former,4.5,74,7.3,46.2,False,5028,74.9,0 +8172,52,Male,143,97,150,49,63,176,136,6.0,23.9,77,170,Asymptomatic,False,0.3,False,Former,13.6,127,6.3,48.0,True,6942,50.8,0 +8173,47,Female,124,73,192,52,118,157,96,4.7,23.0,88,177,Asymptomatic,True,0.0,True,Current,3.0,162,6.6,34.2,False,6513,32.1,0 +8174,38,Male,122,86,167,67,78,98,122,6.3,25.8,75,149,Asymptomatic,False,0.4,True,Former,1.7,188,6.8,48.2,True,7240,49.8,0 +8175,50,Male,120,76,228,54,120,254,102,4.8,24.9,56,158,Non-Anginal Pain,False,0.4,False,Never,5.9,148,7.4,47.6,False,6564,65.5,0 +8176,47,Male,129,83,163,65,75,152,91,5.2,21.0,81,181,Asymptomatic,False,0.4,True,Former,13.8,117,6.9,57.1,False,5732,69.8,0 +8177,72,Male,143,87,204,49,118,269,120,5.9,34.2,79,135,Non-Anginal Pain,True,0.6,True,Current,6.9,146,6.6,71.6,False,4718,53.2,1 +8178,33,Male,122,70,161,48,81,84,136,5.7,18.4,72,186,Asymptomatic,False,0.3,False,Never,2.3,175,8.1,57.7,True,3047,52.0,0 +8179,54,Female,138,92,145,85,37,120,107,5.1,21.3,85,157,Typical Angina,False,1.7,False,Never,4.5,150,5.2,40.8,False,5062,82.5,0 +8180,75,Male,142,82,198,40,128,114,142,7.0,38.0,88,102,Non-Anginal Pain,False,4.1,False,Never,3.0,68,8.1,43.7,False,6086,51.4,1 +8181,55,Male,108,50,165,44,78,231,114,5.6,24.0,88,172,Atypical Angina,False,3.3,True,Never,30.1,84,8.7,74.1,True,5562,65.6,1 +8182,50,Female,122,87,178,61,92,136,136,6.3,28.4,88,144,Typical Angina,True,0.5,False,Former,3.1,66,5.1,47.3,True,8450,43.9,1 +8183,32,Female,158,100,183,54,121,49,77,5.2,28.4,81,194,Asymptomatic,False,0.7,False,Never,7.6,125,8.0,38.2,False,5543,57.7,0 +8184,67,Female,115,68,189,31,138,108,106,5.4,32.8,102,140,Atypical Angina,False,1.9,False,Current,3.0,44,7.2,71.8,False,5277,47.0,1 +8185,52,Female,122,69,260,43,193,118,143,6.8,26.6,91,164,Asymptomatic,False,2.5,False,Current,3.4,134,8.8,25.5,True,3175,43.8,1 +8186,45,Male,136,88,166,29,91,232,102,5.1,35.0,84,173,Non-Anginal Pain,False,2.3,False,Former,1.8,112,6.1,46.3,False,5860,61.6,0 +8187,66,Male,132,82,213,47,108,218,125,5.7,33.6,96,140,Asymptomatic,True,1.4,False,Never,6.7,0,7.2,71.8,False,5153,59.7,1 +8188,53,Male,139,94,184,57,104,73,132,6.6,22.4,89,146,Asymptomatic,True,2.6,True,Current,4.9,146,6.7,75.3,False,5577,87.6,1 +8189,36,Male,114,76,180,57,88,141,132,5.8,23.4,77,175,Typical Angina,False,1.2,True,Never,6.6,147,6.7,54.8,False,4477,18.8,0 +8190,60,Female,111,87,198,46,122,193,112,5.4,24.2,83,157,Asymptomatic,False,1.7,False,Former,16.4,68,6.4,40.7,True,3904,57.2,0 +8191,67,Female,154,93,188,67,105,121,131,6.0,21.8,79,168,Atypical Angina,False,0.1,False,Never,6.7,155,7.3,25.9,False,3983,86.6,0 +8192,46,Male,126,78,207,38,137,130,128,5.5,31.3,84,184,Typical Angina,False,0.2,False,Former,3.0,47,8.6,53.8,False,3902,63.0,0 +8193,78,Female,143,83,163,44,81,168,104,5.5,27.9,85,137,Asymptomatic,False,2.1,True,Never,7.4,63,6.7,54.8,True,8991,36.4,0 +8194,40,Female,112,64,190,58,94,184,100,5.6,21.0,85,203,Typical Angina,False,0.7,True,Current,13.9,136,7.7,54.4,True,8774,71.8,0 +8195,81,Male,133,84,229,56,132,177,124,6.5,30.0,87,157,Asymptomatic,False,0.0,False,Never,12.8,232,8.0,34.5,True,10222,67.0,0 +8196,50,Male,126,65,189,67,115,108,144,5.6,24.1,74,193,Atypical Angina,False,0.1,True,Never,6.1,154,6.8,33.6,True,6779,47.1,0 +8197,82,Male,137,85,173,54,88,209,147,6.6,26.9,90,114,Asymptomatic,True,0.8,False,Former,4.2,151,7.9,52.9,True,6006,57.4,1 +8198,57,Male,149,91,220,45,149,123,117,5.8,32.8,94,146,Asymptomatic,True,2.7,True,Current,2.6,107,7.6,33.7,False,3112,46.9,1 +8199,52,Male,122,79,164,61,69,116,121,6.5,28.0,89,156,Asymptomatic,False,0.1,False,Never,7.9,163,7.2,82.8,True,7420,49.3,0 +8200,42,Female,139,91,178,57,74,204,129,6.2,31.7,94,175,Asymptomatic,False,0.4,False,Never,3.9,97,7.6,39.8,False,9659,75.4,0 +8201,48,Female,123,78,137,38,66,196,150,6.1,27.8,81,166,Asymptomatic,False,0.3,False,Never,12.2,27,6.9,34.1,False,4910,27.0,0 +8202,36,Female,127,76,169,69,77,107,113,5.3,17.4,81,186,Typical Angina,False,0.1,True,Never,7.3,236,7.6,54.8,False,9926,71.2,0 +8203,46,Male,120,81,168,50,87,150,160,6.5,26.3,87,157,Asymptomatic,False,1.7,True,Current,10.0,137,7.6,49.1,False,4027,58.8,1 +8204,71,Female,120,70,204,63,116,95,102,5.1,23.5,91,153,Atypical Angina,False,0.4,False,Former,4.1,165,8.5,63.8,False,5135,70.1,0 +8205,44,Female,116,72,216,81,98,172,78,4.4,22.7,71,163,Asymptomatic,False,1.1,False,Never,2.5,113,6.4,19.9,False,4906,52.6,0 +8206,71,Female,157,95,146,41,89,111,108,5.8,27.2,77,116,Asymptomatic,True,0.5,True,Never,13.5,15,8.3,59.4,False,3779,69.0,1 +8207,52,Male,115,75,217,47,140,144,114,5.6,20.0,87,153,Asymptomatic,False,6.5,False,Current,5.9,220,6.8,50.1,False,6629,40.6,1 +8208,56,Male,140,105,230,64,138,123,97,5.3,21.0,73,179,Non-Anginal Pain,False,0.5,False,Former,5.4,263,5.7,36.8,True,11222,84.6,0 +8209,56,Male,120,66,199,57,110,143,143,5.8,25.5,89,182,Non-Anginal Pain,False,0.3,False,Never,3.7,82,8.5,77.3,True,7271,55.1,0 +8210,45,Female,121,85,198,76,87,150,109,5.7,19.7,81,187,Non-Anginal Pain,True,0.6,True,Current,7.7,172,5.3,17.8,True,8850,42.0,0 +8211,68,Male,146,93,223,46,125,244,117,4.9,28.7,62,130,Atypical Angina,False,0.7,True,Never,16.5,38,7.3,23.9,False,2973,59.5,0 +8212,49,Male,134,73,187,58,93,176,122,5.6,21.2,87,148,Asymptomatic,True,2.8,True,Current,1.8,155,6.1,40.2,False,5335,53.8,1 +8213,45,Female,113,57,194,58,88,191,154,7.5,30.8,73,149,Non-Anginal Pain,True,0.1,False,Former,6.7,199,7.0,66.2,True,8363,61.6,1 +8214,72,Male,140,81,263,70,147,174,139,6.3,24.5,73,136,Typical Angina,True,0.6,False,Former,8.1,45,6.6,25.9,False,4637,65.6,1 +8215,48,Male,136,83,218,69,111,206,92,4.5,25.7,95,178,Non-Anginal Pain,False,1.7,False,Never,10.6,127,6.5,65.7,True,3544,58.4,0 +8216,39,Male,114,71,180,30,119,185,103,5.8,28.6,74,194,Asymptomatic,False,0.2,False,Never,19.3,171,5.7,43.7,True,4968,45.2,0 +8217,48,Male,126,74,185,44,108,98,122,5.6,25.7,94,185,Asymptomatic,False,0.9,True,Never,9.1,90,5.4,53.7,False,5410,64.4,0 +8218,63,Female,123,78,186,53,92,214,149,6.5,30.3,79,146,Non-Anginal Pain,False,1.7,False,Former,0.2,50,8.8,37.4,False,3122,62.5,1 +8219,49,Male,138,83,248,52,127,351,148,7.2,35.6,92,170,Asymptomatic,False,0.4,False,Current,45.9,120,7.8,40.0,False,2121,39.7,1 +8220,58,Female,131,89,183,60,112,171,140,6.4,26.3,74,171,Non-Anginal Pain,False,0.1,True,Former,3.8,156,6.9,55.2,False,3914,64.7,0 +8221,63,Male,124,80,178,53,72,194,159,6.0,29.1,79,156,Asymptomatic,False,0.7,False,Never,6.7,153,7.4,34.4,False,3432,39.0,0 +8222,67,Female,116,76,196,50,112,204,142,6.3,29.2,79,144,Asymptomatic,False,1.5,False,Never,5.9,87,5.7,25.2,False,1897,36.4,0 +8223,75,Male,144,91,169,39,98,147,151,6.7,30.1,83,136,Asymptomatic,True,1.2,False,Never,2.8,7,6.5,51.7,True,4650,70.4,1 +8224,70,Female,146,93,181,51,96,142,135,6.2,35.7,81,129,Non-Anginal Pain,False,1.0,False,Former,0.3,105,4.4,60.6,True,4131,60.1,1 +8225,59,Male,142,86,184,64,90,178,112,5.4,25.4,88,179,Asymptomatic,True,1.7,True,Never,5.1,155,5.9,50.5,False,4984,62.2,1 +8226,45,Male,123,86,242,58,157,166,111,5.5,29.5,88,175,Atypical Angina,False,0.8,False,Never,2.7,28,5.4,31.5,False,4339,55.4,0 +8227,53,Male,132,79,222,52,153,90,153,6.9,22.8,82,147,Asymptomatic,False,3.5,False,Never,5.9,196,5.7,68.4,True,8506,48.7,1 +8228,39,Female,123,77,235,96,109,198,137,6.3,26.8,62,169,Asymptomatic,False,0.2,True,Former,10.6,263,6.2,61.1,True,8556,58.0,0 +8229,47,Male,113,75,154,56,89,144,106,5.6,28.8,82,176,Atypical Angina,False,0.1,False,Never,7.6,98,7.9,28.8,False,4221,70.7,0 +8230,65,Male,126,95,129,50,63,150,108,5.3,25.1,68,144,Atypical Angina,False,0.0,False,Former,3.0,153,7.7,24.3,True,5841,71.7,0 +8231,57,Male,113,73,195,74,111,102,115,5.5,19.8,87,169,Asymptomatic,False,0.6,False,Never,5.9,154,6.9,52.8,True,11889,81.3,0 +8232,47,Male,133,91,169,66,64,176,124,6.4,25.6,81,194,Asymptomatic,False,0.1,False,Former,10.8,130,8.7,61.5,True,7810,51.6,0 +8233,57,Female,118,73,231,59,124,131,89,4.7,26.1,61,171,Asymptomatic,False,1.3,False,Never,3.6,156,6.6,68.9,False,3857,58.3,0 +8234,42,Male,111,68,143,47,72,198,69,4.3,25.1,69,184,Atypical Angina,True,5.4,False,Current,13.6,188,5.7,37.5,True,4032,66.5,1 +8235,67,Male,162,98,164,40,96,180,111,5.8,27.2,75,149,Asymptomatic,True,0.4,False,Never,2.6,65,7.7,100.0,False,5039,89.8,1 +8236,53,Male,134,73,167,63,82,131,104,5.1,18.0,90,152,Asymptomatic,False,1.1,False,Never,5.3,133,5.2,80.4,False,2275,73.3,0 +8237,78,Female,161,109,257,44,165,196,145,6.6,30.0,67,107,Typical Angina,False,2.3,False,Never,0.2,20,7.1,51.8,False,3840,21.9,1 +8238,40,Female,133,90,159,65,77,104,145,6.1,23.2,73,185,Typical Angina,False,0.5,False,Former,5.8,174,6.4,28.0,True,7473,74.7,0 +8239,43,Female,130,91,152,73,35,211,91,5.3,29.0,74,190,Asymptomatic,True,0.2,False,Never,4.9,260,8.8,67.8,False,5790,55.3,0 +8240,48,Female,125,74,240,81,123,148,128,5.9,18.8,74,191,Asymptomatic,False,0.3,False,Never,2.2,172,5.5,36.4,False,5192,100.0,0 +8241,57,Male,106,56,225,54,136,132,111,5.8,17.8,79,175,Non-Anginal Pain,False,1.4,False,Never,4.1,147,7.0,73.1,False,4092,43.2,0 +8242,55,Female,163,87,234,61,137,109,130,6.0,26.2,89,168,Asymptomatic,False,0.5,False,Never,2.3,172,6.6,58.6,True,7291,65.6,0 +8243,53,Female,136,92,187,80,83,109,114,5.2,18.9,62,184,Asymptomatic,False,0.9,False,Never,27.3,251,6.9,40.9,True,4878,42.7,0 +8244,69,Male,123,80,183,37,99,197,104,5.0,28.4,84,179,Non-Anginal Pain,False,0.1,False,Current,4.9,37,6.3,20.1,False,4114,49.8,0 +8245,62,Female,118,68,159,60,65,149,111,5.9,24.2,69,160,Atypical Angina,False,1.7,False,Former,0.7,154,6.2,38.4,True,6409,57.1,1 +8246,37,Male,120,83,166,63,84,125,93,4.9,24.8,84,202,Asymptomatic,False,0.3,False,Never,7.6,195,8.4,60.9,True,8407,68.8,0 +8247,54,Male,131,69,152,51,53,233,136,6.3,19.7,83,162,Asymptomatic,False,0.2,False,Never,21.7,120,6.6,37.3,False,4410,59.5,0 +8248,34,Male,127,89,187,77,86,71,109,5.3,15.0,70,181,Asymptomatic,False,0.7,True,Current,3.4,294,7.3,32.5,True,10590,90.1,0 +8249,77,Male,138,87,205,46,121,207,130,6.7,29.6,81,149,Non-Anginal Pain,False,1.0,False,Current,3.0,121,7.0,25.9,False,4066,62.7,1 +8250,45,Female,127,78,212,48,121,144,76,5.2,33.7,85,184,Asymptomatic,False,0.1,False,Never,1.6,218,5.9,29.3,True,9547,48.1,0 +8251,61,Male,134,75,184,62,81,229,109,5.6,27.6,78,158,Asymptomatic,False,1.2,False,Never,2.6,143,7.3,43.2,False,8564,51.2,0 +8252,49,Female,128,86,204,60,126,131,143,6.8,27.3,81,169,Asymptomatic,False,0.5,False,Current,3.8,170,5.5,42.0,True,10934,33.6,0 +8253,48,Female,109,73,219,61,141,136,110,4.9,28.0,87,143,Asymptomatic,True,0.2,True,Never,0.5,122,6.3,35.1,True,6419,39.6,1 +8254,32,Female,115,77,142,45,67,225,126,5.7,28.7,80,206,Asymptomatic,True,0.5,True,Former,23.5,147,8.6,56.4,False,4931,53.8,0 +8255,50,Male,122,67,201,55,128,177,122,5.9,22.7,82,152,Typical Angina,False,1.2,False,Never,6.6,88,5.2,70.8,False,6568,42.6,1 +8256,52,Male,135,81,185,55,81,215,62,4.5,27.7,93,181,Non-Anginal Pain,False,0.9,False,Former,8.3,150,7.2,10.3,True,6129,55.4,0 +8257,59,Male,120,77,203,65,102,158,115,5.4,16.6,70,168,Typical Angina,False,0.9,False,Never,14.5,245,7.9,43.4,True,9365,58.5,0 +8258,70,Male,126,77,201,45,100,214,135,6.6,27.8,82,115,Typical Angina,False,0.2,False,Current,2.9,139,7.2,36.8,False,2815,50.4,1 +8259,74,Female,132,86,212,65,113,222,124,6.1,26.2,60,182,Atypical Angina,False,0.6,False,Never,10.7,186,7.6,68.3,True,7860,46.6,0 +8260,88,Male,159,104,209,38,107,338,115,6.3,29.1,98,107,Asymptomatic,False,0.7,False,Current,18.2,145,8.1,65.6,True,6255,47.9,1 +8261,30,Female,97,59,151,41,83,101,134,6.5,26.4,82,205,Asymptomatic,False,0.8,False,Never,4.3,149,5.7,47.7,False,6643,58.9,0 +8262,82,Male,147,98,251,59,163,75,101,5.5,29.0,79,120,Typical Angina,True,1.0,True,Former,3.1,164,7.8,58.4,False,3323,51.7,1 +8263,61,Male,137,78,212,49,124,139,157,6.3,29.0,76,164,Asymptomatic,False,1.7,False,Never,9.5,176,5.7,49.8,False,5026,57.8,0 +8264,62,Male,133,88,184,45,116,118,131,6.2,25.8,86,123,Typical Angina,True,2.3,False,Never,8.4,44,8.5,70.6,False,5880,44.2,1 +8265,52,Female,144,93,193,42,138,82,105,5.4,32.3,90,138,Atypical Angina,False,1.1,False,Former,0.3,0,6.5,67.9,False,500,42.7,1 +8266,55,Male,125,82,242,72,125,168,166,7.2,22.7,61,193,Typical Angina,False,1.3,True,Former,2.2,141,6.4,68.8,True,4354,68.3,0 +8267,63,Female,163,105,240,75,139,169,105,5.8,28.0,94,159,Asymptomatic,False,4.7,False,Never,3.3,0,8.8,90.5,False,5968,61.2,1 +8268,60,Male,154,94,113,64,40,106,135,6.7,15.2,76,160,Non-Anginal Pain,False,1.1,False,Current,11.8,200,7.1,27.2,True,8570,66.7,0 +8269,43,Male,153,84,140,65,64,57,128,5.9,27.2,91,166,Non-Anginal Pain,False,0.7,True,Former,1.8,28,6.6,77.7,False,5765,62.6,0 +8270,45,Female,125,76,163,49,120,35,91,5.2,25.6,85,178,Non-Anginal Pain,False,0.8,False,Never,4.8,146,8.0,57.9,True,7180,66.4,0 +8271,43,Female,97,68,206,59,111,156,105,5.4,26.3,82,181,Asymptomatic,False,0.1,True,Former,0.5,236,7.2,40.2,True,8013,41.7,0 +8272,47,Male,126,83,163,42,95,178,104,5.8,20.7,91,186,Atypical Angina,False,0.3,True,Never,4.7,110,7.1,62.9,True,6492,60.3,0 +8273,39,Male,127,74,182,52,80,215,140,6.3,28.2,81,192,Asymptomatic,False,0.4,False,Never,9.4,186,6.9,54.9,True,8260,88.5,0 +8274,43,Female,128,75,138,64,68,40,144,6.4,23.9,93,177,Asymptomatic,False,1.4,True,Former,4.6,115,6.9,31.3,False,5239,70.9,0 +8275,69,Female,134,86,180,46,102,199,157,7.3,22.0,93,147,Asymptomatic,False,0.1,False,Never,3.3,19,7.4,62.7,False,2446,43.2,0 +8276,64,Male,121,75,153,62,61,153,109,5.8,16.6,77,165,Asymptomatic,False,1.0,False,Never,9.1,94,8.0,25.3,True,6447,51.8,0 +8277,49,Female,134,79,170,67,90,100,90,5.0,20.1,75,152,Typical Angina,False,0.3,False,Never,0.5,87,4.7,64.1,False,8590,46.5,0 +8278,44,Female,123,78,190,66,96,159,112,5.6,23.9,84,166,Asymptomatic,False,0.4,False,Former,1.2,131,8.2,10.5,False,3162,91.5,0 +8279,35,Male,103,59,186,45,81,284,87,5.1,15.0,69,191,Asymptomatic,False,0.3,False,Current,17.6,196,6.8,38.6,False,6029,74.2,0 +8280,52,Male,145,96,142,34,91,86,118,5.6,30.1,81,189,Asymptomatic,False,0.4,True,Current,12.1,91,8.9,59.3,True,5497,53.9,0 +8281,29,Female,120,77,236,74,150,86,96,4.9,21.4,83,191,Atypical Angina,False,1.8,False,Current,5.8,259,6.7,50.4,True,7798,56.5,0 +8282,62,Female,128,77,171,57,83,119,127,6.6,26.9,78,176,Asymptomatic,True,2.0,False,Former,1.2,55,6.0,66.2,False,8446,72.5,1 +8283,55,Female,129,85,181,38,119,125,122,6.1,22.6,66,179,Asymptomatic,False,0.5,False,Never,2.6,115,7.0,44.8,False,3922,52.8,0 +8284,43,Male,126,88,178,53,93,164,136,6.2,28.3,76,168,Asymptomatic,False,1.2,True,Never,5.2,17,5.8,17.7,False,3510,44.2,1 +8285,35,Male,122,82,151,30,99,119,104,5.9,22.0,89,180,Non-Anginal Pain,False,0.1,True,Current,3.8,213,7.1,28.4,True,8947,45.5,0 +8286,43,Male,132,91,170,39,94,190,94,4.7,18.0,81,196,Non-Anginal Pain,False,0.1,False,Never,9.9,63,5.8,47.8,False,8917,76.3,0 +8287,67,Male,136,95,181,58,88,222,99,5.5,27.0,75,121,Typical Angina,True,0.9,True,Former,10.3,168,9.6,31.1,False,5799,68.3,1 +8288,64,Female,132,90,163,46,93,194,112,5.8,20.8,80,186,Asymptomatic,False,0.2,True,Current,25.6,176,6.9,35.3,True,7925,47.1,0 +8289,56,Female,136,87,183,78,73,147,131,6.2,21.5,94,152,Non-Anginal Pain,False,0.4,False,Never,1.3,134,6.1,53.6,False,3285,67.8,0 +8290,59,Male,125,91,173,42,117,101,116,4.9,25.6,79,173,Asymptomatic,False,0.2,True,Former,11.9,152,7.0,93.6,True,6881,68.3,0 +8291,58,Female,125,84,187,62,92,167,125,5.5,24.4,79,177,Non-Anginal Pain,True,0.0,False,Never,6.8,80,6.8,30.6,False,4228,47.7,0 +8292,63,Male,119,85,210,48,126,240,126,5.9,27.1,106,170,Asymptomatic,False,0.5,False,Never,1.6,115,6.9,67.5,False,5769,53.2,0 +8293,37,Male,118,77,189,41,100,247,130,6.2,26.5,75,175,Non-Anginal Pain,False,0.6,False,Former,9.3,154,7.3,41.9,True,6333,66.8,0 +8294,56,Female,143,102,229,58,148,90,90,5.2,25.2,69,154,Asymptomatic,False,0.3,False,Current,3.0,184,6.3,72.7,False,3099,64.0,1 +8295,51,Male,137,88,161,24,111,114,89,4.9,23.2,94,153,Asymptomatic,False,0.3,False,Never,4.8,137,7.3,37.7,True,5822,60.9,0 +8296,60,Male,130,77,173,51,107,73,124,6.0,28.8,81,155,Atypical Angina,False,0.2,False,Former,5.2,52,6.9,47.5,False,3855,72.0,0 +8297,47,Male,153,104,245,57,147,197,79,5.0,27.8,93,190,Asymptomatic,False,0.8,True,Never,3.3,83,7.4,41.1,True,7787,61.0,0 +8298,51,Male,125,81,211,63,137,136,112,5.1,15.9,73,152,Non-Anginal Pain,True,2.4,False,Never,10.0,39,6.5,62.4,False,3931,65.1,1 +8299,57,Male,112,67,248,55,152,125,110,5.2,22.8,76,156,Non-Anginal Pain,False,0.6,False,Former,3.4,112,6.2,20.1,False,3210,31.0,0 +8300,63,Female,113,72,199,64,110,117,92,5.3,21.3,82,152,Typical Angina,False,0.2,False,Never,1.3,139,5.1,54.7,False,6089,52.6,0 +8301,44,Male,113,69,201,76,80,219,124,6.4,23.1,66,181,Asymptomatic,False,0.6,True,Current,1.8,174,6.9,20.8,True,7662,81.2,0 +8302,61,Female,110,71,222,60,109,183,120,6.2,24.3,76,156,Typical Angina,False,2.0,False,Never,1.6,145,4.7,26.6,False,6094,53.3,0 +8303,52,Female,120,73,207,74,116,93,116,5.8,18.7,62,189,Non-Anginal Pain,True,0.1,False,Never,2.9,109,7.3,36.9,False,6198,84.4,0 +8304,43,Female,124,75,197,48,131,164,95,4.8,28.9,74,179,Atypical Angina,False,1.3,True,Former,2.1,107,5.3,65.9,False,3220,60.9,0 +8305,57,Female,139,87,225,37,140,163,78,5.0,20.3,74,146,Non-Anginal Pain,False,0.2,False,Never,9.3,120,7.8,40.9,True,5963,59.8,0 +8306,46,Female,120,71,172,59,77,200,97,5.1,22.1,81,187,Typical Angina,False,3.3,True,Former,11.7,268,8.4,68.6,True,8932,60.5,0 +8307,41,Female,117,69,204,47,128,179,105,5.2,20.3,83,191,Atypical Angina,False,1.9,False,Current,1.9,226,7.6,30.3,True,6827,50.9,0 +8308,76,Female,149,81,210,57,109,206,167,6.8,34.1,79,143,Asymptomatic,False,0.9,False,Never,6.8,91,6.4,52.0,True,9177,70.1,0 +8309,59,Male,133,95,246,46,138,272,117,6.2,31.9,80,158,Asymptomatic,False,2.7,False,Never,9.1,106,9.6,52.2,True,5016,39.6,0 +8310,42,Male,108,74,148,49,67,154,147,6.9,20.0,83,196,Non-Anginal Pain,False,0.2,False,Never,1.7,141,6.8,31.8,False,2870,63.8,0 +8311,65,Male,119,87,201,59,133,65,134,6.2,23.2,88,159,Asymptomatic,True,0.2,True,Current,6.5,213,6.8,27.4,True,9003,55.2,0 +8312,58,Male,121,72,184,63,95,136,94,4.7,18.6,78,159,Asymptomatic,False,0.9,False,Former,2.8,132,6.6,81.4,True,7759,79.2,0 +8313,60,Female,143,94,203,70,100,194,101,5.7,24.4,77,163,Non-Anginal Pain,False,0.7,False,Current,2.5,260,8.2,65.5,True,4901,71.5,0 +8314,56,Female,143,101,226,65,124,195,110,5.7,29.1,90,141,Asymptomatic,False,4.7,True,Former,3.1,56,6.2,53.8,True,5014,55.8,1 +8315,39,Female,111,66,210,65,106,179,138,5.9,25.7,98,156,Non-Anginal Pain,False,0.3,True,Former,3.3,0,6.0,33.0,False,7498,63.0,1 +8316,35,Male,103,69,199,58,124,119,92,4.4,22.0,89,186,Asymptomatic,False,0.7,False,Never,3.3,169,6.8,25.8,True,10934,66.4,0 +8317,54,Female,116,73,160,42,103,146,151,6.7,32.2,90,156,Asymptomatic,True,0.6,True,Former,2.8,104,8.2,57.1,False,8703,61.9,1 +8318,36,Male,122,89,171,68,72,236,125,6.5,21.1,75,194,Asymptomatic,False,0.6,True,Former,6.8,69,6.4,67.0,False,6189,78.0,0 +8319,48,Female,137,76,227,58,128,220,153,6.5,33.3,82,181,Asymptomatic,False,0.2,False,Never,22.6,231,6.7,69.7,True,8211,51.9,0 +8320,31,Female,114,68,184,58,98,132,143,6.6,24.1,74,197,Typical Angina,False,0.4,True,Never,6.3,173,7.1,0.2,True,9106,75.7,0 +8321,48,Female,121,75,234,62,139,152,127,6.0,23.9,70,186,Atypical Angina,False,0.7,False,Never,0.9,157,4.9,58.0,True,6089,61.1,0 +8322,55,Male,128,79,214,59,110,210,77,5.3,20.7,82,154,Typical Angina,False,1.8,False,Current,4.1,188,6.5,40.7,False,5419,65.1,1 +8323,51,Female,132,86,158,79,70,74,147,7.1,27.9,80,158,Asymptomatic,False,0.6,False,Former,0.3,117,7.6,6.7,False,4997,68.9,0 +8324,60,Female,142,91,233,55,133,238,116,6.0,27.9,76,153,Asymptomatic,True,0.5,False,Current,1.7,141,6.1,19.5,True,5278,21.0,1 +8325,55,Female,118,68,191,72,102,91,75,4.8,25.1,80,165,Typical Angina,False,0.3,True,Never,3.2,128,8.6,50.9,True,8674,64.5,0 +8326,61,Male,137,80,166,33,97,187,111,5.6,27.5,90,142,Non-Anginal Pain,True,0.7,False,Never,9.9,150,7.1,49.6,True,5518,79.7,1 +8327,58,Male,142,91,145,34,71,149,141,6.8,32.4,66,173,Typical Angina,False,0.5,False,Never,2.2,66,7.3,52.4,False,4158,66.5,0 +8328,62,Male,135,77,173,50,100,197,161,7.0,25.5,86,158,Asymptomatic,False,0.1,True,Never,12.3,66,7.1,49.0,False,5366,63.4,0 +8329,49,Female,102,51,225,83,127,47,107,4.6,16.5,83,158,Atypical Angina,False,0.2,True,Never,10.5,190,8.0,26.1,True,7221,80.1,0 +8330,64,Female,139,84,189,67,97,82,105,5.3,21.4,91,162,Asymptomatic,False,0.6,False,Never,5.3,96,6.4,71.5,False,9766,69.3,0 +8331,54,Male,121,84,172,62,63,224,120,5.6,24.3,64,165,Asymptomatic,False,0.7,False,Never,3.2,165,7.0,54.9,True,4947,60.2,0 +8332,57,Male,130,89,194,54,111,145,164,6.6,28.5,84,134,Asymptomatic,True,2.4,False,Former,2.5,91,6.4,77.7,False,3692,70.3,1 +8333,54,Female,136,77,214,71,105,189,132,5.6,25.8,78,188,Asymptomatic,False,0.4,True,Never,1.3,133,6.3,46.1,True,6435,25.7,0 +8334,50,Female,126,82,181,56,95,172,112,5.6,34.8,96,167,Asymptomatic,False,0.8,False,Former,12.3,73,6.0,66.1,False,6071,37.0,0 +8335,60,Male,140,95,182,65,96,35,107,5.1,26.5,91,162,Atypical Angina,False,0.1,False,Current,3.9,132,6.8,68.8,False,5938,62.4,0 +8336,34,Male,128,83,180,39,116,131,118,6.0,18.0,69,201,Asymptomatic,True,0.2,False,Never,1.8,149,8.7,45.2,False,5929,56.3,0 +8337,40,Female,130,77,183,49,111,135,134,5.9,29.1,74,187,Asymptomatic,False,1.3,False,Former,7.1,127,7.9,56.1,False,6851,42.7,0 +8338,32,Male,108,78,151,73,62,104,116,6.0,22.7,63,194,Atypical Angina,True,0.7,True,Never,4.3,243,5.2,55.2,True,10411,93.5,0 +8339,62,Male,146,98,219,54,119,187,120,5.7,26.5,81,149,Atypical Angina,False,0.0,True,Never,5.5,0,7.8,35.0,False,594,61.0,0 +8340,48,Female,130,69,145,52,80,136,89,5.0,25.5,86,147,Non-Anginal Pain,False,0.5,False,Never,4.0,148,8.3,69.4,False,6614,69.7,0 +8341,60,Male,125,76,181,35,111,221,134,5.9,28.6,65,155,Atypical Angina,False,1.3,False,Former,3.6,196,7.3,39.2,True,10049,56.8,1 +8342,78,Female,129,83,204,78,99,152,125,5.7,18.1,89,136,Atypical Angina,True,0.4,True,Never,4.6,77,6.9,48.2,False,2233,39.0,0 +8343,63,Female,141,94,180,65,78,165,129,6.1,22.6,97,153,Asymptomatic,False,0.8,False,Former,1.0,133,5.7,71.1,False,4347,69.1,1 +8344,26,Male,99,58,175,81,35,237,106,5.7,18.3,79,210,Atypical Angina,False,1.0,True,Former,9.4,230,6.2,52.2,False,9312,67.7,0 +8345,40,Male,121,84,156,33,109,83,64,4.1,23.8,60,182,Atypical Angina,False,0.6,False,Current,2.8,209,6.2,40.3,True,10764,49.6,0 +8346,67,Male,147,98,239,68,133,166,120,6.4,29.1,80,118,Typical Angina,True,3.9,True,Never,2.5,133,6.2,48.9,False,3033,59.8,1 +8347,53,Male,109,68,153,54,86,84,140,6.0,15.5,57,160,Asymptomatic,False,0.9,True,Never,7.2,195,7.1,39.9,True,8842,58.8,0 +8348,67,Female,135,92,211,49,115,223,169,7.1,30.0,82,133,Asymptomatic,False,1.5,False,Current,0.8,134,5.8,38.1,False,4077,45.8,0 +8349,79,Male,147,82,193,61,120,109,151,7.1,27.3,87,107,Asymptomatic,False,5.2,True,Former,7.7,86,7.0,23.8,False,4647,41.5,1 +8350,44,Male,123,74,178,48,97,189,78,5.3,23.6,79,196,Non-Anginal Pain,False,0.1,False,Never,8.7,209,8.1,38.7,True,8027,37.4,0 +8351,85,Female,156,91,146,59,42,123,118,6.0,22.6,72,137,Non-Anginal Pain,True,0.5,True,Never,11.8,123,7.3,55.5,True,7260,94.0,1 +8352,52,Male,125,84,187,48,96,186,125,6.0,23.3,78,173,Asymptomatic,False,0.7,False,Never,7.0,176,6.0,58.7,False,8380,69.0,0 +8353,53,Female,113,69,160,44,86,103,94,5.3,18.0,91,169,Asymptomatic,False,0.9,False,Former,3.8,108,7.3,48.8,True,7917,55.5,0 +8354,65,Male,138,88,259,51,146,223,109,6.1,28.3,84,158,Typical Angina,False,0.8,False,Never,19.0,210,8.5,60.5,True,10250,54.8,1 +8355,90,Male,149,90,187,48,113,117,142,7.0,25.8,89,123,Typical Angina,False,0.0,True,Never,5.5,95,9.5,57.7,True,3891,55.0,1 +8356,54,Female,123,73,222,68,117,219,117,5.4,29.1,90,164,Non-Anginal Pain,False,2.8,False,Never,9.3,141,9.7,56.7,True,6501,73.2,1 +8357,77,Female,146,89,194,75,98,157,130,6.5,22.9,98,127,Asymptomatic,True,3.5,True,Current,4.2,50,8.1,78.2,False,2984,83.4,1 +8358,68,Female,128,84,189,58,111,131,123,6.1,24.3,99,148,Typical Angina,True,1.1,False,Current,15.2,75,6.8,56.6,False,5582,46.1,1 +8359,56,Female,128,88,133,40,62,187,127,6.0,27.6,90,173,Asymptomatic,False,0.6,False,Current,2.2,117,6.5,66.4,False,7643,55.7,0 +8360,60,Male,105,62,200,56,106,122,130,5.6,27.5,75,165,Asymptomatic,False,0.5,False,Never,2.0,144,7.6,40.7,True,6145,62.3,0 +8361,43,Male,132,87,193,33,125,152,137,6.2,24.4,57,188,Non-Anginal Pain,False,0.4,False,Never,3.0,109,6.7,30.1,False,6697,47.2,0 +8362,50,Female,129,85,172,75,81,97,121,5.7,20.8,65,173,Typical Angina,False,1.0,True,Never,3.5,128,8.0,70.8,False,8482,62.0,0 +8363,37,Female,112,72,195,82,71,187,113,5.7,27.2,81,193,Asymptomatic,False,1.7,True,Never,4.6,165,6.2,21.4,False,8771,34.0,0 +8364,65,Male,119,67,164,40,93,155,91,5.3,30.1,87,159,Atypical Angina,False,0.9,False,Never,7.0,74,7.0,55.4,False,2845,50.4,0 +8365,40,Female,155,96,173,26,118,176,131,6.7,31.0,102,183,Asymptomatic,False,1.1,False,Current,0.1,21,6.0,28.0,False,3841,50.4,0 +8366,54,Female,120,63,175,63,110,94,167,7.0,24.1,82,172,Non-Anginal Pain,False,0.9,False,Never,4.6,195,7.2,41.0,True,6066,73.8,0 +8367,34,Female,122,77,127,60,49,105,154,6.2,21.7,81,189,Asymptomatic,False,0.6,False,Former,5.2,177,6.7,69.6,True,6739,57.5,0 +8368,43,Female,105,62,185,71,91,79,121,5.6,26.7,88,178,Asymptomatic,False,0.4,True,Never,3.9,198,6.5,57.6,True,5623,73.2,0 +8369,32,Male,89,53,183,61,89,165,62,4.0,20.2,77,210,Asymptomatic,False,0.8,False,Former,2.7,152,7.2,33.6,True,6262,63.1,0 +8370,54,Male,131,88,158,51,91,78,101,5.4,29.1,75,167,Asymptomatic,False,1.4,True,Former,4.3,194,7.9,44.8,False,5333,61.7,0 +8371,44,Female,154,97,170,56,90,103,125,6.0,24.2,82,180,Non-Anginal Pain,False,2.3,False,Former,0.1,139,8.1,46.5,False,4332,62.5,0 +8372,52,Female,119,78,186,62,92,131,89,4.9,25.4,87,181,Asymptomatic,False,1.5,False,Former,2.1,164,6.5,31.1,False,5693,48.0,0 +8373,70,Female,143,95,243,40,162,200,92,5.4,30.1,87,137,Asymptomatic,True,1.2,False,Current,5.8,92,7.5,43.5,True,9127,37.1,1 +8374,72,Male,128,87,217,75,126,102,76,4.6,24.1,88,139,Non-Anginal Pain,False,0.8,False,Former,3.7,112,8.1,41.3,False,4994,61.8,1 +8375,32,Male,116,72,174,64,74,121,128,5.5,20.4,78,196,Asymptomatic,False,0.9,False,Never,2.9,254,7.9,48.1,True,7890,53.9,0 +8376,35,Male,116,72,175,70,83,148,163,6.9,28.7,71,180,Non-Anginal Pain,False,0.4,False,Never,8.1,313,8.3,40.1,True,13523,80.6,0 +8377,62,Male,136,89,224,43,146,202,117,5.9,24.1,87,147,Non-Anginal Pain,True,2.2,False,Former,3.4,101,6.1,48.2,False,5455,56.0,1 +8378,58,Female,110,71,214,70,116,102,114,5.7,21.0,69,156,Asymptomatic,False,0.3,False,Current,2.3,121,6.5,36.8,True,7840,50.0,0 +8379,60,Male,116,67,124,51,36,152,108,5.6,16.8,77,167,Typical Angina,True,0.4,False,Never,2.9,186,8.1,82.4,False,7288,78.5,0 +8380,62,Female,145,86,186,57,81,188,110,5.5,27.7,80,143,Asymptomatic,True,0.5,False,Former,0.3,51,5.8,22.7,False,1484,66.5,1 +8381,68,Male,132,90,175,42,92,215,121,6.0,30.5,84,147,Non-Anginal Pain,True,0.3,True,Never,2.7,88,7.2,61.9,False,2795,41.2,1 +8382,60,Female,131,88,144,53,84,62,98,4.8,24.7,75,172,Asymptomatic,False,0.7,False,Never,4.1,196,5.0,44.5,False,6496,54.9,0 +8383,60,Female,134,71,146,31,98,90,97,5.0,15.0,79,185,Asymptomatic,False,1.2,True,Former,2.8,110,6.4,46.1,False,3406,73.0,0 +8384,54,Female,119,74,191,54,120,128,96,4.9,22.3,83,172,Non-Anginal Pain,False,0.9,False,Never,21.5,214,7.2,66.4,True,6524,69.6,0 +8385,40,Male,136,86,195,72,100,100,144,6.8,29.4,85,162,Asymptomatic,True,0.2,False,Current,3.3,138,7.2,44.0,True,8537,83.1,0 +8386,57,Female,119,69,249,55,118,317,87,4.6,25.8,73,176,Non-Anginal Pain,False,0.8,True,Never,3.1,187,7.4,34.3,False,4956,54.1,0 +8387,62,Male,125,83,187,59,108,123,137,5.7,18.6,85,155,Asymptomatic,False,0.1,False,Former,3.3,76,9.8,67.0,True,8344,59.2,0 +8388,39,Male,128,79,222,78,118,105,91,5.0,22.2,83,205,Asymptomatic,True,0.3,False,Never,5.6,202,5.9,65.4,False,2424,44.7,0 +8389,78,Male,148,96,180,35,116,149,110,5.7,29.5,76,124,Atypical Angina,True,3.3,False,Former,13.0,7,8.3,54.6,False,5470,52.0,1 +8390,68,Female,140,85,168,46,100,142,128,6.2,23.3,79,140,Asymptomatic,True,0.6,False,Former,1.3,163,5.5,55.9,False,2689,39.6,1 +8391,31,Male,114,64,155,58,57,200,71,4.5,27.0,74,196,Asymptomatic,False,0.6,False,Former,8.5,107,7.3,25.9,False,6046,64.2,0 +8392,58,Male,140,81,206,51,125,103,155,6.5,27.4,84,158,Atypical Angina,True,2.2,False,Current,4.5,112,7.6,52.4,False,3868,53.3,1 +8393,49,Female,122,75,205,56,114,140,131,6.1,21.5,72,154,Asymptomatic,False,1.1,False,Never,4.3,119,6.3,58.2,True,8697,54.4,0 +8394,75,Male,132,82,174,58,104,72,111,5.9,23.7,64,144,Typical Angina,True,1.9,False,Never,1.8,201,6.8,64.5,False,4866,38.0,1 +8395,68,Male,133,79,160,40,91,142,134,6.4,23.3,88,150,Asymptomatic,False,1.0,True,Never,7.8,85,6.7,62.1,True,7737,50.2,0 +8396,67,Female,123,92,169,56,100,112,95,5.5,24.7,92,159,Asymptomatic,True,3.2,False,Current,22.1,7,9.1,92.9,True,7976,51.2,1 +8397,57,Female,145,90,153,41,100,72,125,6.1,21.2,78,122,Atypical Angina,True,3.6,False,Former,4.4,220,9.5,72.6,True,9625,49.9,1 +8398,63,Female,175,103,188,56,96,145,153,6.7,28.4,92,136,Non-Anginal Pain,False,0.3,False,Never,2.2,50,6.2,61.9,False,5852,42.3,1 +8399,68,Male,146,103,246,56,156,126,106,5.7,20.1,66,135,Atypical Angina,False,0.4,False,Never,4.3,122,8.4,46.3,True,5508,62.5,1 +8400,37,Female,112,72,201,54,120,169,121,5.9,28.3,88,187,Asymptomatic,True,0.4,False,Never,8.9,77,7.8,59.7,False,4667,46.3,0 +8401,56,Male,117,71,267,82,152,209,86,4.9,17.1,69,166,Non-Anginal Pain,False,1.4,False,Former,7.5,207,8.8,18.2,False,3864,50.1,0 +8402,53,Female,109,64,128,51,40,189,91,5.2,21.5,80,169,Asymptomatic,False,1.3,False,Never,1.1,32,7.6,49.2,False,3308,74.9,0 +8403,55,Female,132,80,189,66,106,106,114,5.3,25.1,86,169,Asymptomatic,False,0.9,False,Former,4.8,167,7.5,26.4,True,4686,59.3,0 +8404,66,Female,134,90,225,59,140,129,168,6.7,30.8,76,153,Typical Angina,True,2.9,False,Current,4.0,173,7.4,18.2,True,10770,69.3,1 +8405,48,Male,127,73,193,50,119,127,118,5.9,23.5,87,167,Atypical Angina,False,0.4,False,Never,5.6,116,6.1,51.5,False,9414,80.5,0 +8406,37,Female,128,80,255,74,133,155,88,5.5,21.0,65,203,Non-Anginal Pain,False,0.2,False,Never,5.8,239,7.0,22.0,True,8810,54.0,0 +8407,38,Female,121,72,196,59,88,182,145,6.5,24.6,76,177,Non-Anginal Pain,False,0.6,True,Never,1.8,159,5.1,22.8,True,7789,78.9,0 +8408,64,Female,119,69,248,71,125,194,139,6.1,33.4,87,161,Non-Anginal Pain,False,0.8,False,Current,13.4,258,7.3,51.0,True,9402,37.1,0 +8409,38,Female,125,65,221,74,119,179,115,5.3,27.8,74,186,Non-Anginal Pain,True,0.3,False,Never,0.8,109,7.9,44.8,True,9776,31.1,0 +8410,47,Male,112,73,162,58,82,122,138,6.4,20.9,85,184,Asymptomatic,False,1.7,False,Former,2.2,139,8.2,64.5,False,5423,66.6,0 +8411,60,Female,116,75,179,60,112,71,106,5.5,26.2,89,161,Typical Angina,True,1.8,False,Current,2.0,147,6.8,64.7,True,5996,65.5,1 +8412,43,Male,154,96,199,38,111,191,102,5.6,25.2,86,190,Non-Anginal Pain,False,0.3,False,Never,13.1,60,7.4,70.1,False,4120,51.5,0 +8413,29,Female,123,78,102,47,56,70,88,5.1,24.3,90,177,Non-Anginal Pain,False,0.8,False,Never,1.8,152,6.1,24.7,False,9009,53.4,0 +8414,52,Female,131,67,215,58,128,132,126,5.9,16.8,87,157,Asymptomatic,True,1.5,False,Never,0.5,147,6.5,61.2,True,9839,57.2,0 +8415,56,Female,148,91,147,60,51,224,101,4.9,25.6,85,152,Typical Angina,False,1.4,False,Never,0.1,160,7.4,76.7,True,8667,65.4,0 +8416,36,Female,111,66,155,45,84,122,118,5.2,30.6,88,179,Asymptomatic,True,0.6,False,Former,8.8,255,8.2,38.1,True,5989,82.1,0 +8417,61,Male,138,85,202,46,124,224,121,6.3,25.0,89,145,Typical Angina,True,0.3,True,Current,9.3,134,9.3,67.2,False,2674,46.9,1 +8418,39,Male,119,76,126,46,74,78,89,5.5,22.5,80,183,Typical Angina,False,2.6,False,Former,5.7,61,6.4,85.6,True,10127,74.6,1 +8419,30,Male,111,77,195,57,104,154,130,5.3,21.9,82,208,Non-Anginal Pain,False,0.7,False,Former,10.5,269,6.6,44.2,True,7625,59.0,0 +8420,62,Female,132,73,234,71,123,207,98,5.8,30.1,87,121,Asymptomatic,False,0.6,False,Former,3.3,138,9.7,54.3,False,6434,65.4,1 +8421,56,Female,136,73,231,47,145,164,111,5.8,24.1,82,159,Atypical Angina,False,1.6,False,Current,4.3,133,8.8,50.0,False,5676,77.2,1 +8422,56,Female,146,93,182,60,101,132,123,5.7,31.9,88,166,Atypical Angina,False,0.3,False,Former,2.3,60,8.0,55.5,True,7171,56.8,0 +8423,34,Female,132,80,143,59,78,115,100,4.9,15.6,73,189,Asymptomatic,True,0.4,True,Never,2.9,152,7.6,56.9,True,7475,78.7,0 +8424,27,Female,85,62,224,62,118,122,83,5.0,17.3,72,199,Typical Angina,True,2.1,False,Former,5.6,170,7.8,45.8,False,3428,62.5,0 +8425,50,Male,136,84,161,62,102,108,74,4.7,24.2,83,190,Asymptomatic,True,1.4,True,Never,2.2,131,7.6,23.5,True,8607,70.1,0 +8426,46,Male,125,85,232,47,151,157,103,5.0,26.1,79,167,Asymptomatic,False,0.6,True,Never,2.1,111,8.0,39.2,True,8864,43.6,0 +8427,42,Male,119,79,180,34,123,180,125,6.3,30.5,82,167,Atypical Angina,True,2.3,False,Current,5.9,137,7.5,49.2,False,1158,41.2,1 +8428,53,Female,129,94,202,51,123,129,109,6.1,26.7,92,190,Asymptomatic,True,0.4,False,Never,6.9,113,7.7,56.4,False,5941,64.1,0 +8429,63,Male,120,78,166,45,74,233,144,5.9,30.8,84,152,Non-Anginal Pain,False,1.2,False,Never,3.0,78,8.1,43.9,True,7362,59.9,0 +8430,39,Male,112,82,210,37,120,245,115,5.7,26.5,86,185,Asymptomatic,False,2.4,True,Current,4.6,190,6.4,51.5,True,8574,48.6,0 +8431,54,Male,127,83,183,47,100,170,90,4.9,20.9,82,162,Asymptomatic,False,1.7,False,Never,2.4,79,6.4,68.8,False,2611,60.2,0 +8432,51,Male,120,74,164,40,101,73,130,6.2,20.4,92,192,Typical Angina,False,1.0,False,Never,9.0,22,8.0,56.7,False,7751,58.1,0 +8433,82,Male,155,103,170,52,92,203,112,6.1,28.4,99,142,Asymptomatic,False,1.7,False,Never,1.6,46,5.8,27.9,False,4724,44.1,1 +8434,47,Male,111,79,260,44,164,283,140,6.5,29.3,87,168,Non-Anginal Pain,True,1.8,False,Never,3.7,164,7.0,31.4,False,5021,33.0,1 +8435,41,Male,111,83,145,56,61,124,97,5.3,20.9,86,164,Atypical Angina,False,0.4,False,Former,13.9,55,4.4,48.7,False,5345,70.7,0 +8436,55,Male,120,72,193,34,128,191,122,5.8,30.3,72,169,Non-Anginal Pain,False,3.1,False,Never,3.1,265,8.4,28.0,True,8149,70.2,0 +8437,89,Female,118,72,209,51,122,190,118,5.7,24.4,83,113,Asymptomatic,True,1.8,True,Current,1.8,44,4.3,60.5,False,3827,37.8,1 +8438,40,Male,108,66,206,47,101,255,107,5.4,21.5,76,195,Non-Anginal Pain,False,0.9,False,Never,16.7,175,7.6,34.4,True,7873,65.5,0 +8439,43,Female,133,77,196,45,109,222,105,5.7,26.6,69,170,Typical Angina,False,2.0,False,Never,17.3,136,5.7,57.3,False,9986,83.1,0 +8440,51,Female,120,74,223,58,135,149,148,6.2,26.6,95,141,Atypical Angina,True,0.5,False,Never,19.4,53,6.5,49.3,True,4369,77.3,1 +8441,39,Male,115,76,152,80,64,70,80,4.7,22.6,85,188,Non-Anginal Pain,False,0.5,False,Never,3.1,195,8.6,41.2,True,5902,63.3,0 +8442,64,Male,135,89,167,47,89,140,135,6.3,26.3,68,154,Typical Angina,False,2.0,True,Former,2.4,73,6.8,52.6,False,4500,37.0,1 +8443,41,Male,123,78,137,34,76,151,81,4.3,24.6,93,199,Asymptomatic,False,0.3,False,Current,5.3,140,7.2,34.7,True,8069,63.9,0 +8444,56,Male,143,84,224,57,147,135,116,5.4,29.8,83,135,Typical Angina,False,1.1,False,Never,7.7,36,8.6,54.7,True,4097,50.5,1 +8445,51,Female,121,74,196,60,107,180,80,4.0,24.2,84,180,Asymptomatic,False,0.1,False,Never,4.1,207,7.5,67.2,True,7619,43.6,0 +8446,66,Male,133,89,182,50,95,169,105,5.4,33.2,83,135,Non-Anginal Pain,True,0.3,False,Former,3.4,77,7.2,34.6,False,2840,51.2,1 +8447,70,Female,130,87,255,47,179,176,107,5.9,27.0,78,139,Asymptomatic,False,0.1,False,Never,1.1,109,9.8,37.7,True,5830,41.1,1 +8448,59,Male,130,92,174,65,71,207,116,5.3,24.2,77,153,Atypical Angina,False,1.3,False,Never,9.5,162,7.8,25.9,True,4996,52.8,1 +8449,44,Male,138,89,191,52,106,127,120,5.3,28.1,86,157,Asymptomatic,False,2.7,True,Never,9.8,253,6.4,37.5,True,8386,32.6,1 +8450,57,Male,111,67,174,78,84,35,101,5.6,15.4,67,162,Non-Anginal Pain,False,0.4,False,Never,4.6,233,6.6,14.1,True,7869,59.2,0 +8451,48,Female,114,71,184,54,111,119,99,4.4,23.6,84,174,Non-Anginal Pain,False,1.2,True,Never,12.7,90,6.5,22.8,False,6054,85.5,0 +8452,57,Female,147,104,222,76,110,177,139,6.4,28.1,82,187,Typical Angina,False,0.3,False,Never,3.8,75,7.8,65.4,True,6868,61.5,0 +8453,49,Male,143,90,186,49,102,106,139,6.6,26.3,83,196,Atypical Angina,False,0.4,False,Never,2.7,101,6.5,53.4,False,3644,55.2,0 +8454,53,Male,132,79,184,54,113,117,81,5.0,21.8,77,178,Asymptomatic,False,1.1,False,Never,5.9,148,7.0,32.9,False,5694,51.9,0 +8455,47,Male,117,75,188,46,108,135,124,6.5,30.7,72,183,Asymptomatic,False,0.9,False,Never,4.8,141,7.2,35.1,True,3496,74.6,0 +8456,56,Male,122,72,167,55,82,114,106,5.7,25.2,67,153,Asymptomatic,False,2.0,True,Former,1.7,104,6.4,46.7,False,4319,70.1,1 +8457,80,Male,144,80,217,78,124,76,132,6.0,15.0,85,144,Atypical Angina,False,1.2,False,Never,2.4,127,8.6,47.5,False,8259,58.4,0 +8458,75,Male,153,91,194,38,114,262,129,5.8,30.3,76,109,Asymptomatic,True,0.2,True,Never,3.4,87,7.8,40.0,True,8163,51.2,1 +8459,51,Male,121,74,156,55,89,69,141,6.4,23.5,78,153,Asymptomatic,False,1.0,False,Current,8.7,179,7.5,48.5,True,6759,62.7,1 +8460,58,Female,136,88,206,51,119,145,107,5.7,25.5,74,167,Atypical Angina,False,0.1,True,Former,4.7,279,6.5,39.8,False,7985,76.3,0 +8461,33,Female,104,77,189,66,109,123,105,5.3,20.7,78,202,Asymptomatic,False,0.6,False,Never,5.9,290,5.9,54.3,True,4802,44.7,0 +8462,64,Male,127,88,217,54,129,213,136,6.0,36.2,87,149,Asymptomatic,False,0.3,True,Never,2.3,138,6.7,35.4,True,4469,66.3,0 +8463,67,Female,154,93,266,77,145,213,125,6.4,27.1,90,139,Typical Angina,False,1.6,True,Former,0.4,127,6.1,62.0,False,4851,41.9,1 +8464,34,Male,110,84,180,33,121,134,111,5.8,23.0,88,198,Typical Angina,False,2.7,False,Current,1.9,163,5.0,33.3,False,9623,68.0,0 +8465,38,Male,130,83,184,54,85,218,120,5.2,26.6,89,171,Asymptomatic,False,0.3,False,Never,12.8,88,6.2,29.2,False,3868,59.1,0 +8466,36,Male,114,78,159,55,85,200,105,5.7,24.0,74,193,Non-Anginal Pain,False,0.2,False,Never,5.8,205,5.7,41.0,True,11524,76.0,0 +8467,52,Male,124,78,169,60,93,99,101,4.4,24.4,87,168,Atypical Angina,False,0.5,False,Current,3.1,195,6.8,54.9,False,4561,55.5,0 +8468,42,Female,110,67,169,52,93,125,118,5.3,25.5,80,163,Asymptomatic,False,0.1,True,Current,3.5,171,6.4,33.2,False,5415,33.7,0 +8469,62,Female,122,80,207,78,105,134,94,5.6,25.8,88,141,Non-Anginal Pain,False,0.8,False,Former,1.4,185,7.3,54.5,True,6111,49.6,0 +8470,59,Female,148,94,150,50,65,146,115,5.6,30.9,74,168,Atypical Angina,True,1.3,False,Former,0.4,190,7.5,34.9,True,10317,45.0,0 +8471,35,Male,137,84,185,30,111,203,147,6.9,22.9,69,179,Non-Anginal Pain,False,0.2,False,Never,10.0,241,7.3,45.7,True,7623,50.0,0 +8472,42,Female,114,80,134,63,38,152,101,4.6,19.1,82,186,Non-Anginal Pain,False,1.7,False,Never,2.9,196,6.6,26.3,False,5743,65.0,0 +8473,49,Male,115,75,162,62,92,119,127,6.0,23.6,74,166,Asymptomatic,False,1.5,False,Former,1.7,173,7.8,31.2,False,7402,52.3,0 +8474,50,Female,129,81,181,46,99,137,95,5.2,26.0,79,156,Asymptomatic,False,1.8,False,Never,4.2,70,7.6,58.1,False,4991,70.6,0 +8475,66,Female,133,81,190,48,94,241,103,5.3,20.8,79,155,Asymptomatic,False,1.0,False,Never,2.3,76,6.3,60.2,True,5761,43.6,0 +8476,62,Female,121,74,115,62,39,76,123,6.0,19.4,79,177,Asymptomatic,False,1.0,False,Never,6.5,107,6.1,46.8,False,5032,68.2,0 +8477,77,Female,128,77,183,60,95,173,91,5.1,19.2,68,147,Asymptomatic,True,0.9,False,Former,1.8,105,6.4,50.9,True,5655,58.9,0 +8478,26,Male,127,85,177,58,93,141,133,6.1,18.7,86,192,Atypical Angina,False,0.2,False,Former,1.6,125,6.6,33.5,False,5681,79.4,0 +8479,89,Male,160,103,181,58,75,217,123,6.0,24.9,87,126,Asymptomatic,False,0.9,False,Never,3.9,40,7.4,74.0,True,2075,61.7,0 +8480,62,Male,138,84,165,47,101,109,152,6.4,25.1,84,162,Non-Anginal Pain,False,2.0,True,Never,2.7,81,7.7,37.3,False,6907,27.5,1 +8481,51,Male,119,80,184,40,120,136,116,5.6,21.2,76,194,Asymptomatic,False,0.5,False,Current,3.1,202,6.8,12.0,True,7984,56.9,0 +8482,41,Male,138,87,163,41,101,89,130,5.9,31.9,90,156,Asymptomatic,False,1.7,True,Never,2.2,59,5.1,53.5,False,7745,63.4,0 +8483,64,Female,150,97,214,71,101,199,117,6.6,26.3,77,142,Atypical Angina,False,0.8,False,Former,7.1,12,6.1,43.0,True,3757,57.1,0 +8484,73,Male,124,79,201,66,75,200,144,6.5,17.1,90,122,Non-Anginal Pain,False,0.3,True,Never,2.2,187,7.6,51.6,True,7112,60.1,0 +8485,64,Female,123,70,178,77,79,121,89,4.6,22.0,72,163,Atypical Angina,False,0.6,False,Never,4.4,198,8.3,23.0,True,13304,59.0,0 +8486,68,Male,123,64,207,61,109,150,88,5.7,23.8,84,155,Asymptomatic,False,0.8,False,Never,8.6,108,6.0,61.8,True,8709,72.6,0 +8487,54,Female,130,91,185,51,102,159,121,5.7,23.3,82,176,Non-Anginal Pain,False,0.9,False,Never,0.9,64,5.9,61.3,False,4025,86.2,0 +8488,49,Male,105,69,227,52,124,240,106,5.2,24.7,76,164,Asymptomatic,False,0.8,False,Never,1.7,101,6.8,22.3,True,7203,47.5,0 +8489,44,Female,125,74,128,46,61,143,110,5.8,22.7,72,176,Asymptomatic,False,0.7,False,Current,5.9,188,6.8,27.9,True,4457,78.8,0 +8490,30,Female,129,68,224,47,153,201,110,5.2,23.9,92,181,Non-Anginal Pain,False,0.5,False,Never,13.4,74,4.8,59.4,False,3851,50.6,0 +8491,52,Male,158,94,182,43,83,220,129,6.5,30.9,102,154,Non-Anginal Pain,True,2.1,False,Current,10.9,114,8.0,76.6,True,8752,42.0,1 +8492,69,Male,136,91,171,41,95,199,116,5.4,29.5,60,137,Atypical Angina,False,0.9,False,Never,2.1,207,6.5,65.6,True,7745,70.0,1 +8493,80,Male,169,119,240,57,147,205,121,6.1,31.2,83,127,Typical Angina,True,1.7,False,Never,2.9,0,8.0,49.5,False,3658,56.7,1 +8494,55,Female,137,84,216,71,118,137,118,6.0,17.0,89,175,Non-Anginal Pain,False,1.1,True,Former,2.8,128,8.3,28.2,False,6715,57.6,0 +8495,34,Female,125,83,178,44,111,107,132,6.5,26.3,88,171,Typical Angina,True,1.4,False,Never,1.4,97,7.0,33.7,False,7808,59.3,1 +8496,50,Male,118,79,166,55,109,91,104,5.6,23.1,90,165,Non-Anginal Pain,False,1.0,False,Never,1.9,90,6.3,54.8,True,7042,61.5,0 +8497,60,Female,100,60,162,64,92,71,117,5.8,21.2,86,145,Non-Anginal Pain,False,2.1,False,Former,2.5,109,4.7,41.9,False,5217,52.9,0 +8498,76,Male,133,85,186,77,71,120,74,4.1,15.1,72,151,Asymptomatic,False,0.2,False,Current,5.4,214,9.9,47.9,True,8533,84.4,0 +8499,57,Female,142,83,206,54,110,139,90,5.4,29.3,89,173,Non-Anginal Pain,False,0.2,False,Never,3.6,112,7.5,52.3,True,7972,62.2,0 +8500,71,Male,150,91,231,75,144,128,116,5.7,30.5,64,164,Asymptomatic,False,0.7,False,Former,2.1,240,9.9,39.5,True,7095,73.2,0 +8501,63,Female,128,78,176,51,104,134,147,6.4,29.0,90,168,Atypical Angina,False,1.9,False,Current,1.5,112,7.9,60.2,False,6416,52.5,1 +8502,60,Female,119,80,180,57,105,130,101,5.3,23.3,93,185,Asymptomatic,False,0.9,False,Current,0.8,79,9.4,28.2,False,2927,52.8,0 +8503,59,Male,120,60,165,32,106,159,139,6.1,23.6,80,173,Atypical Angina,False,0.8,True,Never,1.8,125,7.8,42.8,True,8490,38.6,0 +8504,59,Male,140,86,263,63,166,150,144,6.2,33.9,68,164,Asymptomatic,False,0.1,True,Never,4.3,186,6.8,14.7,True,8198,48.7,0 +8505,51,Male,110,78,144,34,68,215,73,4.2,20.8,74,162,Asymptomatic,False,1.4,True,Never,2.6,131,7.7,39.8,False,5769,79.1,0 +8506,54,Male,122,80,245,76,148,146,121,5.8,23.9,83,186,Asymptomatic,False,1.0,False,Former,3.3,190,8.4,31.0,False,5405,72.9,0 +8507,48,Male,126,91,215,46,138,210,116,6.0,32.5,85,180,Asymptomatic,False,1.0,False,Never,11.1,146,5.8,48.0,True,7044,73.1,0 +8508,64,Female,125,86,166,35,101,124,84,4.6,26.6,75,144,Asymptomatic,False,0.7,False,Former,1.8,203,7.5,35.2,False,4504,71.8,0 +8509,36,Male,129,68,90,40,40,61,94,5.1,26.1,84,193,Non-Anginal Pain,False,0.4,False,Former,3.8,159,7.9,63.0,False,2138,78.5,0 +8510,43,Female,121,70,164,74,66,123,98,5.8,20.1,91,164,Asymptomatic,False,0.6,False,Former,6.2,157,6.7,21.5,False,4491,47.9,0 +8511,66,Female,125,84,198,54,118,165,161,7.4,27.3,85,128,Atypical Angina,True,0.0,True,Current,3.7,13,7.0,25.9,False,3866,50.1,1 +8512,42,Male,104,67,196,50,95,215,83,4.8,25.7,70,189,Asymptomatic,False,0.3,False,Never,2.9,96,5.8,37.0,True,5866,47.9,0 +8513,60,Female,127,82,172,50,96,126,96,5.4,17.6,85,190,Asymptomatic,False,0.5,True,Former,5.2,167,6.7,52.2,True,5650,76.6,0 +8514,49,Male,124,76,206,41,119,235,124,5.9,30.6,86,152,Asymptomatic,False,1.4,False,Former,6.1,36,5.9,48.3,False,2693,60.4,1 +8515,37,Female,134,84,196,34,97,280,147,7.1,36.6,73,172,Asymptomatic,False,0.7,True,Current,1.5,133,7.6,3.0,True,7913,38.8,0 +8516,55,Female,135,82,143,44,70,187,127,5.9,27.7,82,157,Atypical Angina,True,1.9,False,Former,3.5,137,8.5,75.1,True,8580,58.0,1 +8517,72,Male,119,56,221,61,117,244,135,6.4,21.7,87,129,Atypical Angina,False,0.4,False,Never,3.6,162,6.7,46.1,True,6876,64.5,1 +8518,51,Female,144,77,213,35,156,130,126,6.1,26.9,88,152,Asymptomatic,False,1.5,False,Current,2.5,173,7.5,74.2,True,6768,52.7,1 +8519,64,Male,135,91,137,62,47,136,118,5.6,25.3,68,143,Asymptomatic,False,0.0,False,Never,2.0,96,5.5,47.6,False,7212,44.6,0 +8520,66,Male,137,79,192,34,125,132,150,6.6,26.1,83,145,Non-Anginal Pain,True,3.0,False,Current,3.9,90,5.6,31.8,False,4453,73.0,1 +8521,36,Male,100,77,228,34,157,165,108,5.8,24.3,62,191,Asymptomatic,False,0.7,False,Former,5.8,134,6.5,49.6,False,5304,79.4,0 +8522,65,Male,141,102,186,37,130,161,116,5.6,28.1,78,122,Typical Angina,True,3.5,False,Never,2.5,195,7.3,50.3,True,7267,40.6,1 +8523,47,Female,117,84,178,71,88,103,104,5.2,19.1,85,209,Asymptomatic,False,0.6,True,Former,6.6,216,7.7,58.5,True,9298,54.3,0 +8524,67,Female,123,70,141,63,59,113,108,5.5,24.2,88,146,Atypical Angina,False,0.0,False,Never,1.1,53,4.7,62.5,False,2049,93.5,0 +8525,50,Female,127,82,164,61,102,45,143,6.4,22.2,64,189,Atypical Angina,False,0.4,False,Never,2.9,185,5.4,35.4,False,6286,84.2,0 +8526,63,Male,134,97,92,30,45,74,157,7.1,16.7,70,149,Atypical Angina,False,2.6,False,Never,14.0,166,6.2,21.7,False,8155,74.5,1 +8527,90,Female,130,82,125,49,52,153,121,5.8,24.8,74,105,Non-Anginal Pain,False,1.4,False,Former,2.9,115,9.4,22.4,False,1242,73.5,1 +8528,48,Male,118,77,183,45,112,161,147,7.4,20.7,89,181,Non-Anginal Pain,False,1.1,False,Current,5.2,148,3.4,47.8,False,6499,58.1,0 +8529,40,Male,127,77,185,51,122,87,123,5.8,33.0,77,145,Asymptomatic,False,5.0,True,Never,2.2,50,6.5,19.7,False,4666,61.0,1 +8530,56,Male,140,75,182,60,95,115,124,5.8,15.0,65,160,Asymptomatic,False,0.1,False,Never,5.3,191,7.4,39.6,False,8104,55.9,0 +8531,64,Male,123,78,266,65,152,193,157,6.1,25.7,74,160,Non-Anginal Pain,False,2.1,False,Former,1.8,219,6.5,32.6,False,5663,65.2,0 +8532,75,Female,117,73,170,66,52,224,136,6.0,24.3,61,146,Typical Angina,False,0.6,False,Never,9.4,100,7.4,35.2,True,3941,75.6,0 +8533,74,Female,126,75,229,42,147,167,111,5.3,26.4,86,159,Non-Anginal Pain,False,0.9,False,Never,3.0,37,6.7,48.5,False,2631,52.9,0 +8534,51,Male,130,82,194,44,104,201,117,5.3,29.2,70,190,Asymptomatic,False,1.0,False,Never,1.7,212,8.2,72.2,True,6654,51.9,0 +8535,49,Male,136,99,235,36,161,244,107,5.8,31.7,71,156,Asymptomatic,True,0.7,True,Never,5.0,90,8.6,48.4,False,7637,60.7,1 +8536,38,Male,120,81,183,53,111,120,135,5.6,25.2,63,181,Non-Anginal Pain,False,0.6,False,Never,5.3,157,7.0,54.3,False,7786,94.7,0 +8537,44,Male,136,91,190,31,127,185,152,7.0,28.3,91,165,Atypical Angina,True,4.2,False,Former,2.3,51,8.3,54.0,False,8825,76.6,1 +8538,54,Male,142,81,200,81,99,101,152,6.3,28.9,68,139,Typical Angina,False,2.1,False,Never,4.5,236,8.5,30.3,True,7203,52.1,1 +8539,69,Female,139,82,137,61,44,115,113,5.1,17.0,76,162,Asymptomatic,False,0.2,True,Never,17.3,178,6.8,63.7,False,7762,61.6,0 +8540,74,Female,129,82,221,59,119,225,149,7.0,23.1,84,138,Non-Anginal Pain,False,0.2,True,Never,2.1,180,7.9,55.1,False,5849,30.1,0 +8541,42,Female,120,70,178,60,95,143,112,5.3,29.3,93,165,Asymptomatic,True,5.0,False,Never,0.8,147,6.9,62.5,True,8011,67.4,1 +8542,46,Female,134,81,151,67,69,101,127,5.9,23.5,83,179,Non-Anginal Pain,False,0.9,False,Current,4.8,137,7.9,38.5,True,3317,84.0,0 +8543,56,Male,136,88,201,57,102,230,90,4.8,29.7,99,162,Asymptomatic,False,0.8,True,Never,12.3,34,8.0,38.3,False,4653,51.0,1 +8544,60,Female,144,104,198,35,127,166,123,6.0,38.2,97,126,Asymptomatic,False,1.7,True,Current,4.7,39,4.7,51.8,False,7111,45.0,1 +8545,61,Female,123,74,173,72,81,151,130,5.8,26.5,75,159,Non-Anginal Pain,False,0.2,True,Former,1.5,107,5.2,40.2,False,5627,63.2,0 +8546,36,Female,103,64,146,66,58,108,127,5.5,22.5,75,191,Asymptomatic,True,0.1,False,Never,1.7,156,7.8,36.7,True,5946,80.7,0 +8547,39,Female,136,81,193,61,78,222,123,6.7,26.2,93,174,Non-Anginal Pain,True,0.3,True,Current,4.6,147,5.9,44.6,True,8558,65.7,0 +8548,66,Male,118,71,123,50,72,35,118,5.5,20.1,85,169,Atypical Angina,False,3.2,False,Former,1.5,175,7.9,42.5,False,7036,67.9,0 +8549,70,Female,132,71,225,66,119,122,160,7.1,26.7,89,135,Non-Anginal Pain,False,0.7,True,Never,1.5,0,7.2,64.0,False,4410,58.0,0 +8550,46,Female,133,90,173,74,78,172,60,4.0,19.8,83,177,Asymptomatic,False,0.6,False,Never,0.7,151,7.7,76.3,True,11405,73.8,0 +8551,55,Male,115,60,125,54,52,113,102,5.6,18.8,77,143,Atypical Angina,False,0.1,False,Former,6.7,98,6.5,62.0,False,6127,80.9,0 +8552,65,Male,157,91,194,58,101,207,142,6.3,27.8,70,135,Non-Anginal Pain,False,1.2,True,Never,5.5,164,8.3,59.9,False,5254,43.4,1 +8553,59,Female,157,103,183,62,91,147,103,5.2,22.0,82,139,Typical Angina,True,5.4,False,Never,3.5,130,7.4,81.2,False,6998,58.4,1 +8554,42,Male,122,83,117,43,64,75,142,6.1,26.9,80,198,Asymptomatic,False,1.2,False,Former,5.3,158,7.8,44.2,True,7933,68.4,0 +8555,57,Female,134,90,196,66,103,139,99,5.6,34.9,82,133,Typical Angina,False,1.4,False,Never,2.2,116,8.4,32.3,True,9226,72.3,1 +8556,40,Female,113,62,214,63,96,219,136,6.6,29.6,89,197,Asymptomatic,False,0.7,False,Never,0.4,345,5.1,51.1,True,9358,58.1,0 +8557,61,Female,145,104,117,63,35,167,131,6.6,17.7,83,154,Asymptomatic,False,0.7,False,Former,1.9,197,7.9,50.0,True,5100,51.8,0 +8558,50,Female,129,81,117,51,44,145,141,5.8,21.1,83,170,Non-Anginal Pain,False,0.9,False,Never,0.4,52,7.7,71.1,True,6985,52.3,0 +8559,45,Male,101,68,226,55,132,245,113,5.5,25.9,65,155,Atypical Angina,True,2.6,False,Never,5.7,88,6.7,62.6,False,5060,55.1,1 +8560,55,Female,121,88,193,68,102,159,132,6.3,24.3,82,167,Non-Anginal Pain,False,0.1,False,Former,3.9,223,8.3,48.9,False,7487,61.5,0 +8561,45,Male,152,97,169,34,115,131,148,5.7,33.9,89,165,Typical Angina,True,1.7,False,Current,4.0,90,6.8,49.0,False,5245,57.3,1 +8562,39,Female,128,77,182,57,86,182,65,4.0,19.7,81,175,Asymptomatic,False,0.3,False,Never,19.3,221,6.1,56.0,True,6379,45.6,0 +8563,62,Male,137,78,136,63,65,38,138,6.1,21.7,81,147,Atypical Angina,False,1.1,False,Former,12.3,0,7.4,51.0,False,4886,73.3,0 +8564,45,Male,102,72,180,79,83,119,72,4.8,17.5,92,190,Asymptomatic,False,0.8,False,Never,6.9,138,6.2,43.6,False,9438,60.6,0 +8565,71,Female,119,96,227,55,144,124,131,6.3,26.9,77,135,Non-Anginal Pain,False,0.4,True,Never,0.7,121,5.6,24.6,False,5155,60.7,1 +8566,69,Female,133,79,163,62,68,215,111,4.9,20.9,96,160,Asymptomatic,False,1.3,False,Former,4.5,89,8.3,63.6,False,5803,37.7,0 +8567,65,Female,131,78,169,48,97,162,143,6.3,34.0,84,174,Asymptomatic,False,0.1,False,Never,0.8,38,7.3,56.3,True,6607,56.9,0 +8568,36,Male,111,74,160,52,83,141,95,4.9,21.3,98,189,Asymptomatic,False,0.1,False,Current,13.3,160,8.0,12.1,True,8750,58.9,0 +8569,62,Male,143,94,180,36,100,215,114,5.8,26.2,82,142,Asymptomatic,True,2.2,False,Never,3.7,150,6.0,71.8,True,5200,34.4,1 +8570,43,Male,135,94,189,62,69,258,165,7.2,33.2,73,190,Atypical Angina,True,0.1,False,Former,7.8,56,5.9,56.7,False,4884,65.3,0 +8571,67,Female,154,100,127,43,47,215,139,5.9,30.5,95,124,Atypical Angina,False,1.1,False,Never,6.7,67,6.4,69.1,False,6730,61.2,1 +8572,41,Female,130,90,186,37,137,119,116,6.0,32.6,89,173,Asymptomatic,False,1.7,False,Never,2.7,92,6.7,35.4,False,3448,37.9,0 +8573,51,Male,132,70,230,63,128,207,105,5.6,26.0,79,185,Asymptomatic,False,0.5,False,Never,2.4,93,5.8,68.6,False,1729,86.5,0 +8574,63,Male,126,88,182,67,74,136,105,5.5,20.3,80,160,Typical Angina,False,0.3,False,Former,2.0,190,6.8,59.0,True,6807,79.1,0 +8575,47,Female,123,85,225,71,119,133,131,6.3,25.4,84,195,Asymptomatic,False,0.5,False,Never,17.8,120,7.2,31.8,False,6223,52.9,0 +8576,49,Female,128,85,152,49,92,59,102,5.8,19.7,78,171,Asymptomatic,False,0.6,False,Never,1.7,94,5.5,73.4,False,3764,78.5,0 +8577,56,Male,142,95,189,54,103,127,99,5.1,21.9,60,176,Typical Angina,False,0.0,True,Never,9.1,260,6.3,57.1,True,6634,77.3,0 +8578,52,Male,121,80,181,47,116,136,111,5.7,26.3,85,183,Non-Anginal Pain,False,0.4,True,Never,1.8,199,6.3,59.7,True,9244,51.2,0 +8579,57,Female,146,89,157,55,69,165,98,5.1,18.5,74,149,Non-Anginal Pain,False,0.2,False,Former,11.3,184,6.7,69.9,False,4689,82.6,0 +8580,57,Female,129,63,128,54,53,132,126,6.0,25.8,69,174,Asymptomatic,False,0.3,False,Never,1.1,156,7.6,73.3,True,7879,53.4,0 +8581,38,Male,122,76,210,42,131,281,88,4.8,28.8,97,167,Non-Anginal Pain,True,0.6,False,Current,5.9,96,6.3,61.0,False,4517,42.7,1 +8582,85,Male,144,105,200,59,109,177,108,5.7,22.3,91,134,Asymptomatic,False,0.1,False,Current,15.8,78,6.2,39.5,False,4383,57.0,0 +8583,69,Male,112,81,245,36,158,214,132,6.5,29.2,86,157,Non-Anginal Pain,True,0.2,False,Former,3.9,146,7.6,39.8,False,2875,50.0,0 +8584,61,Male,127,75,136,60,37,194,141,6.0,28.8,88,152,Typical Angina,False,2.4,False,Never,16.9,206,7.5,51.9,True,8525,42.6,1 +8585,45,Male,122,69,189,72,89,152,121,5.7,26.8,78,169,Asymptomatic,False,0.3,False,Never,4.2,206,5.1,63.6,True,5897,88.5,0 +8586,67,Female,135,90,190,68,104,97,104,5.5,24.3,79,161,Asymptomatic,False,0.7,True,Former,1.0,132,6.2,50.6,True,5488,86.1,0 +8587,48,Female,143,98,172,45,81,222,128,6.0,18.0,83,190,Atypical Angina,False,0.5,False,Never,39.8,203,6.1,62.8,True,11177,57.5,0 +8588,55,Male,135,91,219,48,133,190,119,6.7,30.8,83,177,Non-Anginal Pain,True,0.6,False,Former,12.1,238,5.3,46.5,True,6384,26.1,0 +8589,51,Female,151,91,191,68,81,190,130,6.0,30.0,87,166,Asymptomatic,False,0.1,False,Never,1.1,83,6.3,59.5,True,6869,76.5,0 +8590,57,Male,119,83,121,44,68,84,129,5.4,24.3,80,141,Non-Anginal Pain,True,2.3,False,Never,3.2,211,4.8,32.4,True,10027,82.1,1 +8591,76,Male,131,85,213,55,124,163,103,5.4,29.1,83,142,Atypical Angina,False,1.8,False,Never,1.6,288,6.6,50.2,True,4282,72.7,1 +8592,49,Female,142,82,156,36,85,161,122,6.1,30.3,84,181,Non-Anginal Pain,False,0.3,False,Current,2.2,19,7.0,49.8,False,6794,64.6,0 +8593,72,Female,137,77,135,63,55,133,169,7.3,20.1,85,133,Atypical Angina,False,0.3,False,Never,3.4,102,8.5,53.5,True,8757,72.3,0 +8594,61,Male,131,91,213,53,116,191,139,6.6,26.4,86,190,Non-Anginal Pain,False,0.1,False,Current,5.4,151,6.3,69.3,True,8220,54.5,0 +8595,43,Female,105,71,166,37,97,186,97,5.7,20.2,81,185,Asymptomatic,False,3.0,False,Current,5.5,22,6.5,44.3,False,3783,46.0,1 +8596,84,Female,126,79,141,79,37,73,124,5.9,22.8,72,144,Non-Anginal Pain,False,0.9,False,Never,7.8,84,6.1,29.0,False,2665,84.9,0 +8597,64,Male,127,73,113,51,55,35,94,4.9,19.1,75,153,Atypical Angina,False,1.0,False,Never,2.2,315,8.6,12.5,True,7745,71.5,0 +8598,35,Male,115,67,168,52,83,158,105,4.7,23.7,80,194,Atypical Angina,False,0.2,False,Never,3.1,99,7.5,60.8,False,6787,64.8,0 +8599,50,Female,122,81,171,51,91,153,120,6.5,20.6,78,146,Non-Anginal Pain,False,1.3,False,Current,3.8,62,5.7,53.3,False,6933,73.4,0 +8600,43,Female,115,71,220,72,126,148,124,5.7,31.7,92,191,Asymptomatic,False,0.6,True,Never,7.4,72,6.2,27.1,False,4398,77.2,0 +8601,43,Female,138,79,291,71,161,245,127,6.0,26.4,79,171,Non-Anginal Pain,False,0.6,False,Former,5.5,143,7.1,64.4,False,4318,29.7,0 +8602,44,Male,159,91,220,40,131,152,135,5.9,29.5,86,142,Non-Anginal Pain,True,4.7,False,Former,7.7,14,6.2,58.2,False,6081,36.4,1 +8603,55,Female,134,87,187,60,96,180,115,6.1,26.2,89,153,Asymptomatic,False,0.5,True,Never,2.2,116,7.3,45.5,False,5767,60.4,0 +8604,56,Male,114,82,154,46,65,135,116,5.6,25.4,77,165,Asymptomatic,False,0.7,True,Never,3.6,197,7.8,42.8,True,8401,62.9,0 +8605,64,Male,121,86,187,44,110,161,106,5.8,19.5,77,148,Asymptomatic,False,0.1,False,Never,3.2,116,7.4,43.8,False,2432,70.9,0 +8606,55,Male,132,98,204,42,131,135,144,6.1,30.6,75,173,Atypical Angina,True,3.4,False,Current,3.5,233,5.7,19.7,True,7808,51.3,1 +8607,55,Female,143,90,273,51,176,195,105,5.9,30.1,53,138,Asymptomatic,True,1.9,True,Never,7.1,35,9.0,33.7,True,8351,41.7,1 +8608,73,Male,135,83,183,44,98,166,129,6.0,25.0,80,141,Asymptomatic,False,1.0,False,Never,6.4,119,7.4,50.6,True,5769,58.6,0 +8609,46,Male,147,97,167,50,73,215,122,6.0,20.7,77,176,Typical Angina,True,0.6,True,Current,9.4,140,7.7,69.5,False,7005,52.1,1 +8610,61,Female,123,82,266,66,159,144,78,5.0,25.5,79,170,Asymptomatic,False,0.4,True,Former,2.8,195,7.1,58.3,True,3241,47.8,0 +8611,68,Male,112,63,198,57,111,157,124,6.5,18.4,70,155,Asymptomatic,True,0.4,False,Former,16.5,66,5.1,71.6,False,7441,56.8,1 +8612,68,Male,113,71,226,66,119,181,109,6.2,21.2,68,183,Asymptomatic,False,1.4,False,Former,7.5,203,7.3,39.2,True,7886,53.1,0 +8613,45,Male,101,59,152,62,68,95,120,6.3,20.9,82,169,Typical Angina,False,2.2,False,Former,6.9,176,7.8,18.3,True,10061,80.8,0 +8614,49,Female,145,88,236,54,132,171,143,6.4,27.4,83,154,Non-Anginal Pain,True,2.6,False,Never,6.2,50,5.6,53.3,False,3589,45.7,1 +8615,53,Male,130,76,224,43,119,297,116,5.3,31.6,73,183,Asymptomatic,False,0.2,False,Never,2.6,209,6.5,28.4,True,6290,24.2,0 +8616,63,Female,133,101,139,67,41,169,120,6.5,25.3,84,152,Asymptomatic,False,0.4,True,Never,9.0,106,6.1,11.8,False,5817,64.5,0 +8617,68,Female,123,86,164,70,78,119,121,5.9,21.3,85,140,Asymptomatic,False,0.4,False,Current,8.0,174,6.1,70.7,True,7187,70.4,0 +8618,53,Male,134,92,144,42,82,152,94,5.4,26.5,86,182,Asymptomatic,False,0.7,True,Former,4.0,133,7.4,40.5,True,6628,67.3,0 +8619,73,Male,122,77,169,65,99,53,131,6.5,24.5,85,130,Typical Angina,True,0.2,False,Never,2.3,120,8.3,47.7,True,6912,57.7,1 +8620,62,Male,139,83,181,35,109,163,125,5.8,27.1,79,165,Asymptomatic,False,1.9,False,Former,14.4,116,6.6,46.3,False,7517,48.4,1 +8621,45,Male,127,75,166,51,84,166,126,6.3,22.3,81,182,Non-Anginal Pain,True,1.2,False,Never,12.0,82,7.4,71.7,False,6691,46.1,0 +8622,66,Male,135,74,181,41,94,204,135,5.9,29.1,90,194,Non-Anginal Pain,False,1.2,False,Former,3.3,117,6.4,26.0,False,2841,61.8,0 +8623,32,Male,127,70,143,52,78,125,113,5.1,21.5,96,176,Asymptomatic,False,0.8,False,Never,12.7,133,7.8,58.2,False,4701,62.0,0 +8624,53,Female,118,76,113,65,41,117,122,5.6,23.1,84,166,Asymptomatic,False,0.5,False,Former,0.3,147,6.8,21.0,True,5577,72.2,0 +8625,29,Male,120,76,215,63,119,111,134,5.7,18.8,71,207,Atypical Angina,True,1.5,False,Former,2.9,205,6.6,52.7,True,9028,28.2,0 +8626,56,Female,134,76,150,69,50,143,108,5.6,31.2,83,209,Asymptomatic,False,1.3,True,Never,6.2,118,7.0,34.8,False,4295,79.7,0 +8627,68,Female,128,79,113,39,76,45,86,5.0,17.7,90,133,Atypical Angina,True,0.3,True,Former,1.0,85,7.7,25.0,True,5371,57.0,1 +8628,64,Male,132,86,214,66,121,157,113,5.8,15.6,73,164,Non-Anginal Pain,False,0.1,True,Former,18.7,207,5.7,42.7,False,4891,63.9,0 +8629,25,Male,112,81,160,53,101,130,138,5.7,19.8,64,210,Typical Angina,False,1.2,True,Never,4.3,152,8.3,32.6,True,6397,43.3,0 +8630,58,Female,143,98,219,81,121,151,137,6.7,30.7,82,184,Asymptomatic,False,0.1,True,Never,2.9,98,8.0,83.5,True,6631,69.7,0 +8631,63,Male,137,87,176,50,97,163,104,5.5,23.9,71,160,Typical Angina,False,0.3,False,Never,9.9,183,7.1,53.1,True,7238,73.4,0 +8632,65,Female,138,93,114,47,66,45,105,5.6,24.2,84,146,Asymptomatic,False,1.4,False,Never,6.6,128,9.7,27.1,True,5522,69.6,1 +8633,63,Female,163,104,230,74,104,146,101,5.4,32.9,83,148,Asymptomatic,False,2.0,False,Former,3.3,121,6.5,39.4,True,7286,51.9,0 +8634,65,Female,134,87,206,52,113,191,137,6.0,23.2,90,166,Non-Anginal Pain,False,0.1,False,Never,20.4,65,6.2,57.7,False,4966,44.4,0 +8635,36,Female,102,68,128,53,60,90,78,5.1,21.0,80,192,Atypical Angina,False,0.8,False,Never,0.3,185,5.9,35.8,True,7770,81.7,0 +8636,54,Male,152,92,183,51,101,175,116,5.8,18.8,90,181,Asymptomatic,False,1.8,False,Former,2.3,113,8.1,43.0,True,6774,66.0,0 +8637,46,Female,139,91,222,78,100,187,96,4.9,25.5,86,159,Atypical Angina,False,0.1,False,Current,6.9,229,7.1,69.8,True,7966,42.8,0 +8638,53,Female,129,85,166,56,81,193,75,4.7,28.6,74,195,Asymptomatic,True,0.8,False,Never,2.1,154,7.1,71.4,True,5147,58.8,0 +8639,58,Male,106,79,219,68,122,129,165,7.3,21.7,78,161,Non-Anginal Pain,False,0.2,True,Current,5.1,95,5.5,49.2,False,4325,65.0,0 +8640,43,Female,123,78,192,54,111,89,111,5.6,20.2,78,198,Typical Angina,False,2.3,False,Current,2.4,202,8.0,53.7,True,6528,34.5,0 +8641,48,Male,140,90,160,49,97,53,137,6.1,28.8,95,191,Non-Anginal Pain,False,0.5,False,Never,1.7,186,7.5,48.6,False,6363,55.6,0 +8642,62,Female,127,74,252,57,155,188,120,5.8,25.4,67,135,Asymptomatic,True,0.9,True,Never,13.4,168,6.8,60.5,True,7063,67.2,1 +8643,47,Female,102,66,176,55,87,189,104,5.3,22.8,81,161,Typical Angina,False,0.1,False,Former,1.6,172,7.5,31.4,True,6348,67.7,0 +8644,49,Female,122,84,201,79,96,142,138,6.2,21.7,93,161,Asymptomatic,False,0.3,False,Never,2.4,176,6.1,54.3,True,7164,67.4,0 +8645,55,Female,154,90,218,58,117,180,133,6.4,26.8,79,151,Typical Angina,False,0.3,False,Never,6.8,134,6.6,40.7,True,8047,55.5,1 +8646,71,Male,111,65,168,53,89,172,117,5.2,22.3,83,179,Non-Anginal Pain,False,1.0,True,Current,3.4,209,6.5,20.4,False,8243,46.6,0 +8647,50,Female,136,81,232,49,138,231,77,4.0,26.2,73,162,Asymptomatic,False,0.1,False,Never,2.5,100,7.3,38.3,True,8038,37.2,0 +8648,34,Male,111,61,207,50,129,142,120,6.1,24.7,84,181,Atypical Angina,False,2.5,False,Former,15.1,0,9.1,77.5,False,3533,39.6,1 +8649,42,Male,118,72,159,61,75,109,162,7.4,23.2,73,190,Atypical Angina,False,0.0,True,Never,2.5,267,6.7,39.5,True,7623,49.2,0 +8650,56,Female,135,74,216,75,112,160,104,5.3,23.3,57,182,Non-Anginal Pain,False,0.0,False,Never,1.6,243,6.7,65.7,True,5693,51.5,0 +8651,32,Female,119,73,213,57,119,123,131,5.5,28.2,69,180,Typical Angina,False,1.1,False,Current,2.8,100,6.3,53.2,False,4539,62.3,0 +8652,43,Female,128,73,241,66,138,175,103,5.5,27.7,76,167,Asymptomatic,False,0.6,False,Never,2.1,320,5.9,54.5,True,7197,67.3,0 +8653,43,Male,110,57,128,47,56,106,72,4.1,19.9,79,185,Asymptomatic,False,0.5,False,Never,3.6,204,6.7,75.1,False,4596,84.7,0 +8654,79,Female,139,90,178,53,92,146,113,5.3,23.2,84,120,Asymptomatic,False,0.9,True,Never,0.6,45,5.7,32.1,False,5104,49.8,1 +8655,64,Male,153,87,156,57,62,163,140,6.3,28.4,76,160,Asymptomatic,False,1.2,False,Never,10.5,74,7.4,40.0,False,5738,73.2,0 +8656,44,Female,131,87,211,68,137,46,79,4.0,21.6,77,199,Typical Angina,False,0.5,False,Former,2.3,183,8.9,45.3,False,5082,60.2,0 +8657,42,Male,124,86,189,53,107,136,88,4.6,16.4,89,200,Asymptomatic,False,0.1,True,Former,1.8,196,7.0,83.1,False,3687,70.6,0 +8658,38,Male,115,84,136,50,86,57,122,5.9,29.6,74,170,Atypical Angina,False,0.9,False,Former,2.5,131,8.1,45.7,False,8086,67.3,0 +8659,55,Female,118,83,201,64,109,154,96,5.6,24.7,73,162,Asymptomatic,False,1.5,False,Never,10.2,146,7.8,57.6,False,6087,60.9,0 +8660,53,Female,127,85,190,59,101,153,94,5.7,27.9,82,186,Typical Angina,True,1.0,False,Never,5.2,226,7.2,13.8,True,11923,61.5,0 +8661,36,Female,126,86,207,67,110,117,110,5.9,26.5,72,193,Non-Anginal Pain,False,0.6,False,Never,0.3,145,4.9,52.9,False,8581,57.9,0 +8662,59,Male,126,87,207,60,128,161,125,6.1,25.8,79,161,Asymptomatic,False,0.8,False,Never,11.8,199,5.6,50.0,False,2939,68.7,0 +8663,68,Male,132,83,234,46,162,167,147,7.0,18.6,77,182,Asymptomatic,True,0.0,True,Current,9.9,88,6.9,68.2,False,6560,53.0,0 +8664,61,Male,125,81,227,55,136,188,138,6.3,22.2,91,149,Typical Angina,False,1.6,True,Current,3.4,145,5.9,50.0,False,3486,70.3,1 +8665,54,Male,143,90,166,52,103,35,121,5.9,25.3,78,192,Atypical Angina,True,1.0,False,Current,10.1,187,6.9,52.5,False,7160,83.9,0 +8666,72,Male,130,80,231,46,161,203,161,6.4,31.6,73,131,Typical Angina,True,2.9,False,Current,2.1,75,6.3,50.2,False,6560,33.5,1 +8667,58,Female,127,75,114,49,35,204,118,6.2,27.5,83,159,Asymptomatic,False,0.1,False,Never,0.6,37,8.0,46.7,False,3512,71.5,0 +8668,58,Female,150,92,241,90,121,156,129,6.3,20.3,74,188,Typical Angina,False,0.6,False,Never,1.3,253,8.2,21.9,True,5716,58.9,0 +8669,64,Female,132,79,221,57,134,122,85,4.8,23.9,82,122,Typical Angina,False,4.6,False,Never,13.6,104,5.4,45.3,True,7489,38.8,1 +8670,36,Female,93,56,188,69,109,35,118,6.0,18.9,68,188,Atypical Angina,False,1.6,True,Former,17.0,234,7.2,36.2,False,6104,61.4,0 +8671,74,Male,138,94,257,45,163,257,136,6.6,29.4,93,116,Non-Anginal Pain,True,1.2,False,Current,12.5,111,4.0,27.8,True,5942,49.0,1 +8672,56,Male,129,91,259,45,164,220,117,6.4,23.0,79,179,Non-Anginal Pain,False,1.0,False,Never,8.9,89,6.7,59.0,False,2973,34.3,0 +8673,53,Male,152,104,226,73,114,199,121,6.3,28.4,89,174,Atypical Angina,False,1.0,False,Former,20.2,189,6.2,59.4,False,5935,71.8,0 +8674,63,Male,125,68,210,42,112,280,97,5.1,26.1,68,178,Asymptomatic,False,0.6,True,Never,5.2,208,8.4,57.6,True,9509,70.9,0 +8675,40,Male,131,85,159,27,110,136,104,5.6,28.0,79,168,Non-Anginal Pain,False,3.6,False,Former,3.0,52,6.1,40.8,False,4990,64.8,1 +8676,43,Male,127,78,208,39,114,229,70,4.3,29.7,82,173,Non-Anginal Pain,False,0.8,False,Never,2.5,126,8.0,34.9,True,6404,81.7,0 +8677,59,Female,134,78,234,71,132,172,102,5.9,24.8,76,153,Non-Anginal Pain,True,0.8,False,Former,3.8,129,6.3,61.8,True,3332,43.7,0 +8678,61,Female,124,82,187,49,96,132,110,5.4,25.5,68,178,Asymptomatic,True,1.7,True,Former,1.2,164,7.6,42.1,False,4187,40.8,0 +8679,37,Male,116,64,197,75,63,246,95,5.7,29.9,66,205,Typical Angina,False,0.6,True,Never,6.6,206,6.5,2.3,False,3545,60.0,0 +8680,52,Male,117,72,166,55,78,187,115,5.8,27.8,86,162,Typical Angina,False,0.3,True,Never,18.3,174,7.7,32.5,True,7251,74.6,0 +8681,42,Female,116,54,252,55,155,155,113,5.4,25.0,85,139,Typical Angina,True,3.4,False,Current,2.3,98,8.3,52.2,False,2070,54.5,1 +8682,49,Female,123,76,139,30,93,110,117,5.1,27.3,97,155,Atypical Angina,False,0.0,False,Former,8.3,83,6.9,25.5,True,9503,60.0,0 +8683,41,Female,136,83,130,41,66,137,139,6.7,26.8,80,183,Non-Anginal Pain,False,0.6,True,Never,2.5,44,8.2,61.8,False,4645,44.8,0 +8684,64,Female,130,93,215,62,107,152,131,5.7,25.5,78,174,Non-Anginal Pain,False,1.0,False,Current,20.1,252,7.4,41.4,True,8532,81.4,0 +8685,57,Female,128,77,147,50,67,162,135,6.6,21.4,86,150,Asymptomatic,False,1.1,True,Never,1.9,22,6.3,22.8,False,4954,64.9,1 +8686,41,Female,99,64,163,59,85,153,132,6.4,29.9,82,180,Asymptomatic,False,0.5,False,Current,1.6,129,6.2,29.8,False,4709,46.7,0 +8687,59,Male,120,73,182,52,103,162,129,6.1,25.3,80,142,Asymptomatic,True,1.1,False,Current,9.6,66,7.5,56.5,False,4895,34.0,0 +8688,54,Male,124,94,199,61,97,168,97,4.7,20.6,65,164,Asymptomatic,False,1.4,True,Former,12.0,193,8.3,53.6,False,3855,44.2,0 +8689,53,Female,123,79,167,67,68,98,140,6.5,25.8,95,167,Asymptomatic,False,0.1,False,Former,2.0,61,6.9,60.0,False,3057,60.7,0 +8690,36,Female,134,82,150,62,89,84,93,5.2,22.8,77,172,Asymptomatic,False,0.0,True,Never,1.3,90,7.3,55.7,False,3954,78.3,0 +8691,39,Male,119,76,201,63,84,212,117,6.1,22.3,82,161,Asymptomatic,False,0.7,False,Former,1.6,95,6.4,38.0,False,5359,69.0,0 +8692,51,Female,146,101,245,55,149,215,140,6.4,23.2,79,155,Asymptomatic,False,2.5,True,Never,17.4,50,5.6,58.6,False,7101,55.5,1 +8693,42,Female,113,59,153,65,68,99,140,6.0,26.1,77,180,Atypical Angina,False,0.5,False,Never,2.1,248,8.1,30.7,True,8031,55.1,0 +8694,48,Male,114,65,107,43,55,56,108,5.7,17.7,74,172,Asymptomatic,False,0.7,False,Former,3.7,41,7.4,72.3,False,4361,58.8,0 +8695,61,Male,117,70,160,44,91,146,146,6.5,21.6,90,141,Typical Angina,True,1.0,False,Never,17.8,94,8.1,33.1,True,7115,37.3,1 +8696,63,Male,140,91,250,63,162,95,134,6.5,34.2,81,142,Asymptomatic,False,1.8,False,Never,3.8,125,8.4,58.5,True,6892,68.0,0 +8697,52,Female,130,82,177,62,92,83,108,5.1,22.4,80,161,Asymptomatic,False,1.1,True,Never,1.4,71,6.9,52.7,False,5621,52.6,0 +8698,49,Female,133,82,180,52,110,106,116,5.6,22.4,83,160,Asymptomatic,False,1.5,True,Never,7.2,110,6.9,48.1,True,7483,51.0,1 +8699,30,Female,121,77,231,58,145,153,123,6.0,25.1,87,188,Asymptomatic,False,0.4,False,Current,1.4,189,6.9,26.1,False,10086,59.0,0 +8700,53,Male,116,72,226,51,127,191,130,6.3,27.4,104,166,Typical Angina,False,0.3,False,Never,4.1,181,7.0,61.4,True,7924,48.9,0 +8701,48,Male,107,59,173,57,94,148,132,6.1,29.2,80,172,Asymptomatic,False,0.4,False,Former,2.2,118,7.3,65.7,True,4941,64.4,0 +8702,49,Female,143,84,229,66,121,196,75,5.3,31.5,82,163,Typical Angina,True,1.3,True,Never,13.5,61,4.2,39.3,False,4766,38.6,0 +8703,61,Female,146,93,198,75,88,176,152,6.3,25.5,80,162,Asymptomatic,False,0.0,False,Never,2.9,229,7.4,41.4,True,6969,54.1,0 +8704,37,Female,131,87,187,52,100,139,118,5.5,20.0,77,198,Asymptomatic,True,0.5,True,Never,11.1,135,6.5,48.5,False,4672,65.2,0 +8705,63,Male,153,88,252,50,155,174,114,5.6,24.5,75,139,Asymptomatic,False,4.7,False,Never,4.5,138,6.3,11.4,False,7052,28.7,1 +8706,41,Female,117,80,226,67,127,182,95,5.0,23.7,82,192,Non-Anginal Pain,False,1.0,False,Former,1.6,133,7.8,50.9,False,6238,60.4,0 +8707,35,Female,119,63,126,62,57,75,107,5.1,26.0,79,190,Asymptomatic,False,0.4,False,Never,1.3,153,6.8,44.8,False,5346,65.1,0 +8708,42,Male,119,79,187,58,106,103,117,5.6,25.4,64,198,Atypical Angina,False,0.2,False,Never,4.1,50,7.1,34.6,False,3689,66.0,0 +8709,39,Female,111,61,187,52,79,193,139,6.2,30.8,101,164,Asymptomatic,False,1.8,False,Former,16.1,77,7.9,76.2,False,4306,39.7,1 +8710,52,Male,133,78,183,41,117,131,141,6.8,29.4,84,146,Non-Anginal Pain,False,0.6,False,Former,1.6,60,6.7,49.9,False,6408,37.7,1 +8711,77,Male,124,84,180,57,95,162,102,5.4,21.6,86,146,Asymptomatic,False,0.1,True,Former,5.8,144,5.7,49.1,False,4099,67.2,0 +8712,75,Female,140,88,212,49,119,190,106,5.0,28.9,75,131,Asymptomatic,False,1.1,False,Never,2.8,118,6.9,42.5,True,5376,34.9,1 +8713,50,Male,124,90,109,44,63,57,123,6.0,21.7,87,174,Asymptomatic,False,1.2,False,Current,1.8,132,8.1,33.3,True,9364,67.0,0 +8714,51,Male,130,72,147,48,55,192,139,5.7,22.7,82,181,Asymptomatic,False,0.5,True,Former,3.1,79,5.3,34.1,False,6280,44.9,0 +8715,70,Male,142,92,216,48,124,168,121,6.6,30.4,82,155,Asymptomatic,False,0.2,False,Former,5.6,107,7.0,46.9,False,2775,62.3,0 +8716,66,Male,181,109,246,66,138,146,154,6.7,28.1,91,135,Atypical Angina,True,1.6,False,Never,14.6,95,5.6,65.4,False,2469,56.6,1 +8717,43,Female,110,75,214,71,106,178,100,5.9,22.7,75,159,Non-Anginal Pain,False,0.4,True,Former,9.0,117,6.9,61.2,False,7613,68.3,0 +8718,61,Male,131,91,137,50,70,120,81,5.0,19.4,71,145,Typical Angina,False,2.3,False,Former,4.3,173,8.8,58.4,True,5789,32.0,0 +8719,58,Female,140,85,179,30,128,119,125,5.7,29.7,71,176,Asymptomatic,False,2.2,False,Former,12.1,79,5.5,38.8,False,7244,49.2,0 +8720,68,Female,140,92,179,32,104,243,125,5.7,29.7,84,155,Asymptomatic,False,0.5,False,Never,5.1,236,6.3,78.9,False,4772,57.9,0 +8721,87,Male,153,100,192,66,115,79,116,5.4,27.6,79,132,Asymptomatic,True,1.4,True,Never,3.5,178,7.2,56.8,False,4767,66.2,1 +8722,52,Female,130,84,154,51,70,168,93,5.5,25.7,79,160,Typical Angina,True,0.6,False,Former,12.0,37,7.5,57.2,False,4489,74.8,1 +8723,63,Male,142,92,187,34,120,159,120,5.8,24.8,89,139,Atypical Angina,False,1.6,False,Former,4.5,86,6.9,35.4,False,3672,75.8,1 +8724,55,Male,124,73,135,52,72,154,115,5.4,27.8,76,196,Asymptomatic,False,0.4,False,Former,15.3,132,5.9,36.2,False,4028,83.5,0 +8725,56,Female,140,87,163,38,115,189,102,5.5,27.7,78,144,Atypical Angina,False,1.3,False,Never,4.9,116,6.2,60.6,False,6483,49.1,1 +8726,43,Male,113,86,180,65,81,190,122,5.8,17.6,69,194,Non-Anginal Pain,False,0.8,False,Former,3.0,182,7.6,57.2,True,6940,43.6,0 +8727,50,Male,115,63,227,63,135,116,136,5.4,28.0,79,186,Non-Anginal Pain,False,1.2,True,Former,11.6,202,6.6,47.0,False,4923,62.1,0 +8728,60,Male,110,78,232,58,147,133,135,5.9,23.9,93,167,Asymptomatic,False,1.8,False,Current,6.4,175,5.5,23.6,False,10342,66.4,0 +8729,43,Male,116,70,179,64,96,134,120,6.1,22.7,82,182,Atypical Angina,False,1.2,False,Never,2.9,243,6.0,35.8,True,8353,57.6,0 +8730,59,Female,123,66,186,54,94,173,109,5.3,27.7,88,163,Asymptomatic,False,0.4,False,Never,4.7,157,7.1,60.3,False,5691,50.1,0 +8731,58,Female,168,104,202,33,162,36,140,6.4,21.3,87,157,Asymptomatic,False,0.3,False,Current,3.1,85,7.4,64.2,False,3094,61.8,1 +8732,51,Female,118,64,193,59,100,184,151,6.5,25.6,93,176,Atypical Angina,False,0.3,False,Former,0.2,94,5.9,46.7,False,7009,60.5,0 +8733,80,Female,158,104,253,77,150,165,143,6.7,24.5,87,124,Non-Anginal Pain,True,2.0,False,Current,2.5,179,7.2,33.3,True,5898,37.9,1 +8734,67,Female,134,88,224,46,135,201,116,5.1,25.3,88,166,Non-Anginal Pain,False,0.6,False,Never,9.6,198,8.4,46.9,True,5265,77.9,0 +8735,64,Female,113,74,252,81,117,187,133,6.3,23.9,81,127,Asymptomatic,False,0.8,True,Former,2.2,154,7.2,42.3,False,5612,50.9,1 +8736,68,Female,132,91,172,71,76,117,154,6.8,22.7,85,175,Asymptomatic,False,0.0,True,Former,7.3,250,7.7,66.8,True,5710,69.5,0 +8737,56,Male,119,68,128,45,62,71,133,5.8,20.9,81,179,Non-Anginal Pain,False,0.2,False,Former,3.7,174,5.2,52.3,True,6946,64.8,0 +8738,49,Female,125,85,229,57,121,205,119,6.4,30.8,85,182,Non-Anginal Pain,True,0.1,True,Never,1.6,151,7.8,37.7,True,10787,50.8,0 +8739,62,Female,114,62,145,43,79,159,91,4.9,21.9,75,165,Non-Anginal Pain,False,0.6,False,Never,11.0,158,9.0,35.9,True,7368,85.7,0 +8740,58,Male,139,86,189,52,99,186,123,5.6,25.0,68,179,Asymptomatic,False,0.1,False,Never,3.3,146,5.3,4.4,False,4101,59.7,0 +8741,64,Male,145,100,148,50,71,115,129,5.7,21.5,94,161,Asymptomatic,False,1.6,True,Never,2.9,4,6.9,37.2,False,4749,41.8,0 +8742,57,Male,137,85,205,37,137,102,142,6.4,28.6,69,184,Typical Angina,True,1.1,True,Never,1.6,217,9.4,26.1,True,7866,77.1,1 +8743,51,Female,111,67,180,75,85,101,146,6.2,20.9,80,195,Asymptomatic,True,0.3,False,Current,1.6,158,5.4,43.4,True,6770,48.2,0 +8744,48,Female,124,85,158,33,110,72,124,5.8,32.4,82,166,Non-Anginal Pain,False,1.2,False,Current,0.2,75,6.5,57.0,True,7006,59.9,1 +8745,39,Female,107,57,185,53,101,113,125,5.8,26.1,76,190,Typical Angina,False,2.4,False,Never,5.0,111,5.6,13.7,True,8247,62.6,0 +8746,39,Female,112,74,153,64,74,137,85,4.7,24.8,76,184,Asymptomatic,False,0.1,False,Never,2.3,303,7.8,42.7,True,10387,62.5,0 +8747,70,Female,146,101,165,52,81,141,174,7.5,28.4,90,137,Asymptomatic,False,1.1,True,Former,11.7,38,6.7,50.1,False,6463,73.2,1 +8748,55,Male,135,83,174,50,104,90,84,5.0,26.5,82,169,Asymptomatic,False,0.2,False,Current,5.6,246,8.0,27.3,True,8003,76.8,0 +8749,57,Female,129,76,207,64,123,150,125,5.8,24.4,77,144,Asymptomatic,True,4.0,False,Never,2.8,213,7.8,50.4,True,6561,65.9,1 +8750,45,Male,127,89,208,70,105,144,143,6.5,22.5,65,185,Asymptomatic,False,0.1,False,Never,13.1,110,7.8,61.8,False,3216,55.8,0 +8751,46,Male,137,85,160,51,73,139,113,5.3,22.2,80,171,Asymptomatic,True,0.2,False,Current,3.1,152,6.5,42.9,True,5247,65.4,1 +8752,60,Male,147,92,183,50,91,168,136,6.6,30.8,81,124,Atypical Angina,False,1.6,True,Never,4.9,93,8.2,42.4,False,6544,52.2,1 +8753,56,Male,137,86,184,51,103,124,114,5.4,21.7,88,155,Asymptomatic,False,2.2,True,Never,3.5,143,8.5,85.1,False,5412,64.3,1 +8754,73,Male,147,89,160,55,89,117,164,6.9,20.8,75,136,Asymptomatic,False,0.3,False,Never,19.9,112,7.6,87.5,True,7830,54.4,0 +8755,25,Male,123,73,211,47,115,266,127,5.6,27.9,78,196,Asymptomatic,False,0.5,True,Never,28.7,124,8.3,61.9,True,7991,47.5,0 +8756,56,Female,125,90,187,60,94,125,135,6.1,34.0,81,171,Non-Anginal Pain,False,0.4,False,Never,3.0,133,7.0,48.2,True,7427,50.3,0 +8757,58,Male,126,85,198,37,111,221,136,6.4,31.3,81,170,Asymptomatic,True,2.4,False,Current,3.5,69,6.1,40.6,False,5800,29.0,1 +8758,47,Male,110,70,180,66,89,108,91,4.7,23.1,84,158,Non-Anginal Pain,False,2.4,True,Never,2.4,206,5.6,74.5,False,7590,80.1,1 +8759,62,Male,131,103,177,49,84,189,149,7.1,20.8,82,166,Non-Anginal Pain,False,0.1,False,Never,12.7,83,7.1,26.5,False,5548,55.9,0 +8760,49,Female,126,76,215,62,113,141,115,5.9,17.5,86,178,Typical Angina,False,3.3,False,Never,6.3,152,7.4,64.6,False,5643,53.9,0 +8761,54,Male,129,77,194,59,96,144,142,6.4,24.3,83,179,Asymptomatic,False,1.6,True,Never,5.6,90,6.8,75.3,False,7892,74.3,0 +8762,77,Male,136,75,170,45,104,119,109,6.0,29.6,80,138,Asymptomatic,True,1.0,False,Former,2.8,302,7.1,56.7,True,8494,76.4,1 +8763,40,Male,117,80,201,48,116,204,116,5.8,20.8,74,165,Atypical Angina,True,1.4,False,Never,5.9,212,8.7,16.8,True,9990,55.6,1 +8764,60,Female,103,76,187,61,98,170,112,4.9,23.7,65,199,Non-Anginal Pain,False,0.6,True,Former,24.3,239,6.5,38.2,False,8083,70.9,0 +8765,47,Female,130,82,249,52,146,254,130,6.3,33.8,92,159,Non-Anginal Pain,False,1.4,False,Current,0.3,76,6.3,44.2,False,1590,46.6,1 +8766,38,Female,95,63,187,60,106,125,103,5.3,26.9,80,179,Asymptomatic,False,1.2,False,Never,5.0,200,8.5,22.3,False,6706,66.8,0 +8767,59,Female,131,78,126,53,61,76,99,4.7,24.0,75,149,Typical Angina,False,0.3,False,Never,12.2,183,6.4,50.1,False,5798,70.6,0 +8768,23,Male,126,77,176,38,119,95,114,5.5,26.1,70,197,Asymptomatic,False,0.4,False,Current,4.5,155,7.1,39.2,True,10074,18.5,0 +8769,58,Male,114,77,154,45,97,74,94,5.1,17.8,92,155,Typical Angina,False,0.6,False,Current,3.0,148,6.8,50.2,False,5989,75.5,1 +8770,34,Male,120,77,90,21,45,87,135,6.6,25.1,86,175,Atypical Angina,True,1.8,False,Current,1.7,111,6.6,63.9,True,7338,48.8,1 +8771,52,Female,139,82,230,61,120,195,133,6.4,28.5,87,165,Non-Anginal Pain,False,0.8,False,Never,3.2,148,6.2,28.5,True,6549,54.3,0 +8772,43,Female,140,94,206,52,125,158,100,5.2,27.5,74,173,Typical Angina,False,0.5,True,Never,12.3,86,6.2,34.6,False,4263,58.2,1 +8773,64,Male,140,86,135,30,88,107,81,4.0,17.6,76,178,Asymptomatic,False,1.1,False,Never,1.9,168,5.3,31.0,True,6673,86.8,0 +8774,55,Male,129,90,176,38,101,196,152,6.3,27.5,86,169,Asymptomatic,False,0.2,False,Never,2.7,154,7.0,64.7,False,4066,80.5,0 +8775,58,Male,130,76,173,77,66,110,133,5.9,19.9,77,160,Asymptomatic,False,0.5,False,Never,2.7,196,7.0,23.8,True,6859,65.1,0 +8776,35,Female,142,89,202,64,94,167,146,6.5,26.6,85,183,Asymptomatic,False,0.9,False,Never,0.5,145,6.0,54.1,False,8034,73.4,0 +8777,68,Female,119,75,191,62,111,132,101,5.0,34.3,90,145,Atypical Angina,False,0.1,False,Never,7.0,143,8.8,39.4,True,4828,48.8,0 +8778,44,Male,120,78,164,64,70,81,81,4.5,26.8,83,205,Asymptomatic,False,0.1,False,Former,4.0,246,6.7,37.8,True,3629,72.3,0 +8779,70,Male,124,80,202,49,92,152,140,6.7,28.6,83,117,Asymptomatic,True,0.9,False,Never,18.3,200,5.0,39.7,True,4594,63.3,1 +8780,40,Female,123,78,115,55,45,73,60,4.1,22.2,86,167,Atypical Angina,False,4.1,True,Current,0.6,92,6.4,50.4,False,5310,71.2,0 +8781,68,Male,112,60,173,58,92,102,150,6.7,15.0,91,135,Asymptomatic,True,1.2,True,Current,6.8,134,6.9,48.7,True,5019,56.4,1 +8782,64,Female,117,66,157,54,95,84,134,5.8,21.2,93,162,Asymptomatic,False,0.4,False,Never,2.1,186,6.5,65.2,True,9529,64.4,0 +8783,68,Female,135,89,171,63,87,87,159,7.2,26.0,75,157,Non-Anginal Pain,False,0.4,False,Former,4.4,275,6.5,38.0,True,8809,75.3,0 +8784,40,Male,108,55,165,64,56,195,153,6.7,26.5,80,175,Asymptomatic,False,1.2,False,Never,3.5,146,6.7,58.6,False,4714,57.8,0 +8785,48,Male,136,71,173,50,90,103,102,5.3,26.6,99,194,Asymptomatic,True,0.6,False,Never,8.6,189,6.9,64.2,True,10747,55.3,0 +8786,54,Male,115,59,159,57,84,130,132,5.9,23.6,91,159,Asymptomatic,False,0.8,True,Current,11.6,128,7.5,24.5,False,1880,57.0,0 +8787,62,Male,130,71,203,63,101,169,89,4.2,24.3,89,158,Typical Angina,False,0.5,False,Never,1.8,128,5.1,49.3,False,4627,37.9,0 +8788,78,Female,141,89,261,64,152,182,114,5.9,27.7,82,141,Asymptomatic,False,3.0,True,Never,2.1,95,9.7,82.5,False,5348,53.7,1 +8789,51,Female,140,97,188,59,100,177,136,6.1,22.7,88,145,Non-Anginal Pain,True,1.0,False,Never,3.9,23,7.2,56.2,True,7591,61.0,0 +8790,53,Male,102,68,193,44,136,109,111,5.2,27.1,74,156,Asymptomatic,False,0.6,False,Never,8.2,241,7.3,31.6,True,6931,64.4,0 +8791,49,Male,112,71,144,67,53,164,144,6.6,22.9,71,184,Typical Angina,False,0.1,False,Former,5.7,166,6.2,42.5,True,10886,78.9,0 +8792,69,Male,131,82,155,58,66,152,125,5.4,15.5,66,164,Non-Anginal Pain,False,0.4,False,Former,10.9,205,5.2,44.7,True,5487,78.5,0 +8793,45,Female,110,74,178,74,62,150,140,6.4,22.7,82,198,Atypical Angina,False,2.0,False,Never,11.6,128,6.4,54.4,False,4637,64.6,0 +8794,44,Female,105,53,138,43,90,44,144,6.8,22.4,67,201,Asymptomatic,False,0.3,False,Current,1.5,120,7.6,29.6,False,6141,30.8,0 +8795,63,Male,118,75,217,59,116,192,132,5.9,29.1,101,198,Atypical Angina,False,0.3,False,Never,7.8,161,8.2,37.4,False,7463,54.0,0 +8796,50,Female,137,72,215,43,132,214,88,5.0,33.5,89,162,Asymptomatic,False,2.4,True,Current,0.9,43,8.1,49.8,False,5857,61.9,0 +8797,77,Male,148,82,198,53,101,194,100,5.1,23.0,75,125,Asymptomatic,False,1.2,False,Never,10.5,77,8.6,69.8,True,4955,55.6,0 +8798,54,Female,129,84,177,73,90,106,98,5.2,25.4,73,186,Typical Angina,True,0.6,False,Former,12.3,117,6.0,39.6,False,4718,66.1,0 +8799,26,Male,117,66,178,51,115,91,113,5.4,27.2,81,201,Non-Anginal Pain,False,0.9,True,Former,3.1,145,5.2,55.5,True,8907,59.4,0 +8800,48,Male,117,75,226,41,153,146,127,6.0,30.5,88,164,Asymptomatic,True,1.7,False,Former,21.2,82,7.6,70.9,True,6097,54.0,1 +8801,31,Female,121,76,235,61,126,185,124,6.1,25.4,67,210,Asymptomatic,False,0.6,False,Never,5.3,198,6.1,13.8,True,7498,44.4,0 +8802,51,Male,122,78,241,62,126,230,119,5.5,34.8,89,186,Asymptomatic,False,1.3,True,Never,2.2,47,6.5,29.0,False,5206,65.5,0 +8803,49,Male,142,99,155,63,67,118,124,5.9,26.3,70,179,Asymptomatic,False,0.1,False,Never,4.6,93,5.5,39.9,False,7493,43.9,0 +8804,50,Male,120,75,217,56,114,216,137,6.4,28.5,75,170,Typical Angina,False,1.1,False,Current,3.0,199,4.5,30.0,True,9711,70.7,1 +8805,33,Male,126,75,165,55,89,141,130,6.4,28.5,72,206,Non-Anginal Pain,False,0.1,False,Current,4.2,147,8.0,33.2,True,7295,56.9,0 +8806,59,Male,115,74,202,72,108,136,135,6.1,16.7,75,143,Non-Anginal Pain,True,2.9,True,Never,7.0,238,5.4,37.2,True,8408,59.0,1 +8807,39,Female,121,74,200,60,113,111,111,5.1,25.9,72,177,Asymptomatic,False,0.2,True,Never,0.6,180,9.4,21.2,False,7522,53.0,0 +8808,79,Female,156,97,169,52,121,46,129,5.8,25.1,89,113,Asymptomatic,False,0.7,True,Never,6.1,131,7.8,73.5,False,3669,63.1,1 +8809,72,Male,111,73,177,64,90,102,104,5.9,21.4,91,149,Atypical Angina,False,1.4,False,Never,1.9,11,6.8,66.5,False,6389,61.6,0 +8810,35,Female,128,88,195,62,109,127,90,5.4,21.6,83,191,Atypical Angina,True,0.2,True,Never,8.2,67,6.5,52.3,False,8518,55.5,0 +8811,57,Male,124,93,221,49,135,197,127,6.0,27.1,77,173,Asymptomatic,False,0.4,False,Never,8.3,223,5.6,4.2,False,9597,55.4,0 +8812,50,Female,133,88,231,53,128,199,93,5.4,24.0,81,159,Asymptomatic,False,0.7,True,Current,3.9,125,4.9,49.2,False,7452,58.4,1 +8813,63,Male,117,71,225,46,157,131,119,5.5,22.2,86,154,Non-Anginal Pain,False,0.9,False,Current,3.6,86,6.4,69.3,True,3329,30.3,1 +8814,54,Female,135,78,203,46,134,187,116,6.0,16.8,78,163,Non-Anginal Pain,False,1.4,False,Never,2.1,71,8.3,50.5,True,6232,58.6,0 +8815,57,Female,124,65,144,66,46,157,139,5.9,19.7,74,141,Typical Angina,False,0.8,False,Former,16.9,17,6.3,51.7,False,7115,40.9,1 +8816,39,Female,127,80,192,54,110,120,121,5.6,26.0,73,193,Non-Anginal Pain,False,0.2,False,Current,0.6,95,5.0,47.7,False,3251,46.2,0 +8817,35,Male,104,74,192,49,104,214,83,4.3,30.8,74,199,Atypical Angina,False,1.5,False,Former,10.1,280,7.7,22.4,True,10118,17.5,0 +8818,30,Female,135,91,222,56,131,184,120,5.6,29.6,89,190,Atypical Angina,True,0.7,False,Never,3.8,122,6.6,55.1,True,6335,48.9,1 +8819,65,Male,145,88,176,22,120,214,107,5.8,24.6,90,148,Non-Anginal Pain,False,1.1,False,Current,4.2,82,7.4,31.8,False,4260,38.4,1 +8820,58,Male,142,85,192,67,99,106,150,7.0,23.3,68,163,Asymptomatic,True,2.1,True,Never,4.2,180,6.3,32.9,True,10422,62.0,1 +8821,60,Male,156,97,183,48,121,114,100,5.2,26.7,100,139,Non-Anginal Pain,False,1.0,True,Current,4.5,178,6.3,42.4,False,4530,46.3,1 +8822,51,Female,123,75,255,61,124,306,100,5.5,28.4,89,147,Non-Anginal Pain,False,1.0,False,Never,8.8,101,7.0,44.6,True,7030,52.9,1 +8823,55,Female,122,67,216,67,129,35,110,5.6,24.1,87,140,Typical Angina,True,0.7,True,Former,1.0,102,6.4,81.1,False,6121,96.3,1 +8824,42,Male,122,82,156,73,48,177,109,5.1,19.3,79,185,Asymptomatic,False,1.1,False,Never,6.6,242,9.9,56.0,True,6732,59.0,0 +8825,60,Male,141,94,169,43,90,194,140,6.2,29.3,86,134,Asymptomatic,False,0.3,False,Never,2.5,128,6.9,72.4,False,8901,61.3,0 +8826,40,Female,125,81,229,68,129,191,129,5.7,27.6,92,192,Asymptomatic,False,0.9,False,Never,14.0,55,6.5,48.7,False,9542,32.3,0 +8827,49,Female,118,76,166,65,84,115,113,5.8,27.7,101,159,Non-Anginal Pain,False,0.8,False,Current,1.9,51,8.0,52.8,False,2405,76.0,0 +8828,51,Male,118,71,190,48,100,149,101,5.6,18.3,78,158,Asymptomatic,True,1.0,True,Former,3.8,84,7.8,52.0,False,4268,64.0,1 +8829,47,Female,112,71,183,51,107,119,114,5.1,28.1,73,191,Non-Anginal Pain,False,1.2,True,Never,1.6,135,5.7,44.7,False,500,49.0,0 +8830,42,Female,111,64,188,74,97,88,121,6.1,20.0,90,188,Atypical Angina,True,0.7,True,Former,0.6,111,6.8,54.8,False,6713,60.4,0 +8831,57,Male,130,92,177,71,78,125,123,5.0,16.2,75,183,Asymptomatic,False,0.8,False,Never,11.1,227,7.5,34.0,False,7198,91.0,0 +8832,54,Male,114,82,143,39,74,142,111,5.8,21.5,79,157,Atypical Angina,True,0.7,False,Current,1.7,105,6.1,18.8,False,5478,67.2,0 +8833,53,Male,128,76,196,28,158,61,113,5.4,23.1,86,154,Asymptomatic,True,1.8,False,Current,19.0,192,8.1,30.1,True,8882,92.3,1 +8834,54,Male,131,91,192,45,91,246,115,5.6,28.4,82,201,Asymptomatic,False,0.8,False,Never,4.9,144,7.4,78.6,False,8239,50.8,0 +8835,55,Female,148,100,254,68,144,153,122,5.8,25.7,83,161,Non-Anginal Pain,False,2.6,False,Current,5.5,178,6.8,46.3,False,7629,62.9,1 +8836,48,Female,143,104,149,64,49,135,107,5.9,27.0,81,180,Typical Angina,True,0.6,False,Never,5.0,190,8.9,87.6,True,8190,67.3,0 +8837,29,Male,121,88,123,23,88,103,92,5.2,25.9,88,161,Atypical Angina,True,1.5,True,Never,3.7,66,7.2,68.1,False,4018,56.6,1 +8838,57,Male,135,79,219,64,112,193,73,4.8,25.9,78,165,Asymptomatic,False,0.7,False,Current,8.2,366,6.8,56.8,True,7240,70.0,0 +8839,29,Female,124,81,201,68,97,149,101,4.6,25.1,74,199,Asymptomatic,False,1.0,False,Never,15.8,155,7.6,44.8,False,8772,61.2,0 +8840,62,Female,128,92,181,71,82,127,140,6.5,28.0,70,159,Non-Anginal Pain,False,0.8,False,Former,3.6,258,6.4,57.9,True,6942,74.2,0 +8841,56,Female,131,74,155,38,96,180,108,5.2,22.4,96,144,Typical Angina,True,1.5,True,Never,10.7,34,6.2,57.1,True,6863,62.8,1 +8842,40,Male,117,80,141,39,52,173,117,6.0,29.8,82,202,Atypical Angina,True,0.2,True,Never,4.9,213,7.6,38.4,True,4203,54.0,0 +8843,43,Female,132,79,179,68,96,71,77,4.9,23.6,64,175,Non-Anginal Pain,False,0.1,False,Never,8.8,189,7.7,46.9,True,6507,57.4,0 +8844,49,Female,136,74,205,71,121,84,145,6.4,25.5,72,158,Asymptomatic,True,1.8,False,Former,6.6,75,6.4,33.5,False,8015,32.1,1 +8845,64,Female,135,91,187,33,128,237,145,6.7,36.9,91,132,Asymptomatic,False,0.7,False,Never,0.9,120,6.5,100.0,False,6619,68.6,1 +8846,66,Female,129,92,157,76,58,94,117,5.5,23.7,63,156,Atypical Angina,False,1.7,False,Never,0.3,90,6.6,39.8,False,2943,52.7,0 +8847,76,Male,124,78,198,85,84,168,144,6.3,21.3,73,157,Asymptomatic,True,2.1,True,Current,6.4,194,6.4,13.5,True,8810,59.2,0 +8848,63,Male,116,72,281,79,166,118,114,6.2,21.3,81,178,Atypical Angina,False,0.4,False,Current,3.2,156,7.4,17.9,True,4291,88.8,0 +8849,42,Female,122,74,235,55,135,190,104,5.2,24.3,89,159,Non-Anginal Pain,True,2.4,False,Current,4.6,61,7.1,30.0,False,6299,43.2,1 +8850,42,Male,127,81,209,33,124,252,173,7.7,24.1,77,177,Typical Angina,False,1.0,False,Never,11.3,113,6.0,66.4,False,8807,49.9,1 +8851,78,Male,157,95,148,50,81,124,165,6.9,31.8,82,150,Typical Angina,False,0.7,False,Current,3.7,120,8.3,63.7,True,4658,35.4,0 +8852,72,Male,124,71,201,60,104,144,156,6.8,24.5,82,153,Asymptomatic,False,2.6,False,Former,1.6,170,7.0,26.8,True,7628,98.0,0 +8853,57,Male,125,75,225,60,126,131,104,5.8,23.2,84,146,Atypical Angina,False,1.2,True,Never,8.1,36,8.4,42.6,False,4672,40.4,1 +8854,74,Female,143,88,183,77,92,145,156,6.7,21.9,80,160,Atypical Angina,False,1.4,False,Current,3.6,183,8.3,18.7,True,6045,69.5,0 +8855,38,Male,122,71,244,43,157,177,106,5.7,28.4,93,151,Asymptomatic,False,1.8,False,Current,2.6,35,9.3,39.3,False,6159,49.9,1 +8856,77,Male,122,86,205,63,113,135,134,5.7,20.4,104,111,Typical Angina,False,3.6,False,Current,6.3,73,4.1,67.8,False,2215,44.0,1 +8857,60,Male,117,81,195,50,121,152,139,7.0,24.2,80,161,Asymptomatic,False,0.3,False,Never,12.8,50,7.8,43.7,False,902,69.4,0 +8858,60,Female,135,78,233,69,119,147,99,4.4,28.4,85,158,Asymptomatic,True,0.2,True,Never,14.2,182,5.2,64.5,True,8704,53.1,0 +8859,49,Female,127,86,156,39,87,146,139,6.2,26.7,68,184,Asymptomatic,False,1.5,False,Never,21.7,128,6.0,46.5,True,8606,57.3,0 +8860,34,Male,97,70,142,47,76,87,129,6.1,17.0,83,171,Atypical Angina,False,0.8,True,Never,2.3,156,6.7,52.2,True,9861,77.9,0 +8861,58,Male,119,71,229,67,132,177,123,6.0,28.8,63,138,Atypical Angina,False,0.8,False,Current,3.0,235,5.7,51.7,True,6154,57.2,1 +8862,81,Female,152,97,196,52,115,118,143,6.4,29.0,81,119,Asymptomatic,False,1.7,False,Never,4.0,105,6.6,36.9,True,4851,74.2,1 +8863,50,Female,155,108,150,74,45,156,89,5.0,24.7,81,207,Asymptomatic,False,0.4,False,Never,0.4,176,7.8,33.5,False,2774,61.6,0 +8864,45,Male,114,76,168,50,84,175,97,5.5,21.0,91,180,Non-Anginal Pain,False,0.2,False,Current,3.0,203,9.5,88.7,True,9084,81.1,0 +8865,50,Male,133,80,253,56,138,225,119,5.9,36.1,88,159,Asymptomatic,False,1.0,False,Never,5.4,102,6.5,55.2,True,7346,67.1,0 +8866,55,Male,137,89,233,56,148,134,141,5.9,24.0,88,166,Asymptomatic,True,1.2,False,Current,7.1,125,6.4,30.1,False,8440,44.8,1 +8867,41,Female,127,77,206,65,135,35,107,5.3,18.8,89,173,Non-Anginal Pain,False,0.1,False,Former,1.5,135,6.3,47.3,False,7325,51.8,0 +8868,62,Male,142,91,222,59,128,153,101,6.3,25.5,91,124,Asymptomatic,True,0.3,False,Former,18.8,77,6.2,47.3,False,5271,30.2,1 +8869,44,Male,121,81,196,69,103,201,99,5.3,26.3,77,154,Asymptomatic,False,1.0,True,Never,1.9,207,7.4,59.5,False,7053,28.9,0 +8870,70,Female,126,72,128,61,71,76,116,6.0,21.4,65,138,Asymptomatic,True,1.1,True,Never,21.7,65,8.4,37.2,False,5536,91.3,0 +8871,35,Male,108,66,201,53,110,161,115,5.5,19.4,85,183,Asymptomatic,False,0.9,False,Current,1.9,200,8.2,56.4,True,6253,52.5,0 +8872,66,Male,132,73,208,92,99,52,112,5.3,24.1,89,139,Non-Anginal Pain,True,1.1,False,Current,2.5,107,5.2,38.8,True,6699,57.4,1 +8873,45,Female,124,79,181,46,109,181,114,6.0,25.3,71,184,Non-Anginal Pain,False,0.5,False,Former,14.6,188,5.8,30.1,False,4195,76.9,0 +8874,56,Male,123,69,195,30,136,177,163,6.6,30.3,86,162,Non-Anginal Pain,False,0.7,False,Former,6.6,53,5.9,63.1,True,4321,41.3,0 +8875,58,Male,132,89,212,59,122,146,91,5.4,30.4,88,167,Asymptomatic,False,0.2,False,Never,2.0,92,8.2,47.3,False,3505,69.0,0 +8876,53,Female,118,61,201,74,81,174,99,5.4,16.7,82,168,Asymptomatic,False,0.3,False,Former,3.5,31,5.8,15.9,False,5102,71.0,0 +8877,49,Female,144,89,178,61,94,127,109,5.5,27.4,70,182,Typical Angina,False,2.2,False,Never,22.5,108,6.5,26.4,False,2481,79.4,0 +8878,69,Male,141,92,206,51,131,123,123,6.3,30.1,79,139,Typical Angina,True,3.0,True,Former,8.7,107,7.2,52.7,False,5339,72.3,1 +8879,43,Male,119,87,202,55,116,175,89,5.0,26.4,77,141,Typical Angina,True,1.4,False,Never,1.7,116,5.0,31.2,False,6633,30.3,1 +8880,69,Male,145,97,215,50,123,222,127,5.9,25.9,83,151,Asymptomatic,True,4.2,False,Former,4.2,30,7.0,65.1,True,6425,44.6,1 +8881,24,Male,88,55,170,56,92,174,88,4.8,20.2,83,206,Atypical Angina,True,0.6,False,Never,1.9,355,8.5,63.1,True,7989,46.6,0 +8882,57,Female,154,95,177,41,91,197,107,5.5,30.7,76,148,Non-Anginal Pain,False,1.2,False,Never,3.9,187,5.9,44.0,False,4898,70.7,1 +8883,35,Female,126,83,191,55,84,189,151,7.1,27.4,62,170,Typical Angina,False,1.7,False,Former,1.6,83,6.2,85.9,True,8860,69.6,0 +8884,53,Male,124,81,147,42,110,65,88,4.3,16.8,71,183,Atypical Angina,False,0.2,False,Former,4.9,147,7.4,47.5,True,8182,50.0,0 +8885,36,Female,102,58,172,58,103,76,144,6.1,21.8,94,188,Non-Anginal Pain,False,0.8,False,Former,1.2,67,6.3,36.5,True,6705,68.5,0 +8886,40,Female,108,72,120,59,35,157,167,6.2,26.3,88,181,Asymptomatic,False,1.3,True,Never,0.0,151,8.7,49.4,True,4075,43.8,0 +8887,41,Male,115,75,216,73,127,61,117,5.9,24.5,82,180,Atypical Angina,False,0.8,False,Never,6.9,59,7.0,66.6,False,7591,62.5,0 +8888,46,Male,119,68,208,39,134,154,113,5.8,26.8,84,173,Atypical Angina,True,1.9,True,Current,13.1,110,8.0,42.0,False,4038,45.1,1 +8889,27,Male,115,61,173,46,112,146,141,6.7,28.1,85,195,Asymptomatic,True,1.0,False,Never,2.9,193,5.3,35.9,True,9286,69.3,0 +8890,57,Female,125,67,202,60,110,191,101,5.6,24.0,88,168,Asymptomatic,False,0.1,False,Current,3.8,142,8.5,38.3,True,7555,62.9,0 +8891,49,Female,125,71,198,75,95,175,108,5.7,19.5,68,157,Asymptomatic,False,0.8,False,Never,8.5,46,6.8,57.5,False,4189,69.3,0 +8892,49,Female,154,96,187,50,82,227,95,5.0,31.3,70,181,Non-Anginal Pain,False,0.0,False,Former,0.5,70,7.8,28.3,True,6277,40.6,0 +8893,57,Male,136,76,199,55,106,182,129,5.8,26.3,85,166,Asymptomatic,False,1.0,False,Never,3.4,120,6.3,58.9,True,5731,58.3,0 +8894,40,Male,142,89,205,52,121,194,135,6.0,28.3,71,188,Typical Angina,False,0.1,False,Never,2.8,175,6.4,60.3,False,7928,72.3,0 +8895,55,Male,121,74,169,43,101,211,108,5.2,28.9,82,188,Non-Anginal Pain,False,0.5,False,Never,1.9,163,6.8,36.0,True,9575,93.9,0 +8896,57,Female,144,95,185,63,92,124,131,5.7,23.6,75,163,Non-Anginal Pain,False,0.1,True,Former,0.8,6,6.4,60.3,False,7055,66.4,0 +8897,67,Female,141,101,181,52,93,151,95,5.0,27.1,70,160,Asymptomatic,False,0.2,False,Never,3.9,180,7.1,49.3,True,8191,49.4,0 +8898,65,Female,145,93,112,59,47,59,113,5.5,28.1,82,145,Asymptomatic,False,0.7,False,Never,0.8,78,8.4,20.0,False,4307,64.1,0 +8899,50,Male,125,73,192,66,112,98,123,5.5,18.8,80,184,Atypical Angina,False,2.0,False,Never,3.5,183,7.5,48.5,True,3555,88.3,0 +8900,59,Female,127,77,127,55,72,91,135,6.4,29.9,84,133,Non-Anginal Pain,True,1.3,True,Never,1.1,75,4.2,87.3,False,7443,83.2,1 +8901,57,Female,125,79,187,39,123,102,110,5.9,25.6,79,175,Asymptomatic,True,0.0,False,Never,2.2,131,7.5,64.1,False,7416,60.6,0 +8902,56,Male,110,67,227,74,120,175,155,6.4,21.0,76,160,Typical Angina,False,2.2,False,Never,2.9,112,4.9,76.1,False,2284,58.0,1 +8903,28,Male,106,65,176,47,80,205,80,4.5,20.0,79,209,Non-Anginal Pain,False,1.2,True,Former,2.8,208,8.1,80.1,False,6686,47.9,0 +8904,41,Male,107,64,177,62,82,155,108,5.7,22.2,64,182,Typical Angina,False,0.7,False,Never,13.0,175,6.9,70.7,True,9956,78.1,0 +8905,56,Male,143,96,172,46,98,118,141,6.9,22.7,81,156,Non-Anginal Pain,False,2.7,False,Never,4.8,80,6.9,54.8,False,2835,71.4,0 +8906,45,Male,141,77,246,60,147,161,148,6.8,23.9,81,180,Asymptomatic,False,0.4,False,Current,2.5,140,6.4,36.4,False,9478,63.5,0 +8907,46,Female,125,79,216,67,121,138,115,5.7,21.7,106,183,Typical Angina,False,0.0,False,Never,0.8,237,9.0,53.1,False,7244,66.5,0 +8908,44,Male,115,71,205,56,114,141,133,6.3,16.8,72,157,Atypical Angina,False,2.2,False,Never,5.7,181,4.6,46.7,False,7286,52.9,1 +8909,44,Male,94,59,220,65,122,161,142,6.1,26.4,86,164,Atypical Angina,False,6.5,True,Former,6.8,140,6.9,30.3,True,7161,70.8,1 +8910,55,Female,128,78,158,65,65,118,126,6.2,25.0,82,173,Asymptomatic,True,0.5,False,Never,4.5,129,7.1,66.8,False,3841,87.7,0 +8911,72,Male,131,85,218,55,109,178,104,5.2,19.8,90,102,Non-Anginal Pain,True,2.6,False,Current,22.8,31,7.9,44.7,False,1892,45.6,1 +8912,61,Male,125,74,165,39,101,106,115,6.1,17.9,79,124,Non-Anginal Pain,False,2.8,False,Former,4.3,103,6.0,56.4,True,6828,76.4,1 +8913,68,Male,134,87,213,51,123,168,111,5.3,27.6,100,148,Typical Angina,True,0.9,True,Never,1.7,121,8.0,37.0,True,1266,54.6,1 +8914,39,Male,119,75,211,67,114,154,113,6.0,19.9,86,183,Atypical Angina,False,0.1,False,Never,1.5,158,5.8,41.0,False,6498,47.9,0 +8915,79,Male,133,72,175,37,126,61,115,5.9,24.7,78,152,Asymptomatic,False,0.9,True,Never,1.6,185,6.5,71.6,True,7699,64.5,1 +8916,62,Female,118,74,206,64,118,135,107,5.2,21.3,78,162,Non-Anginal Pain,False,0.8,True,Never,2.3,190,7.7,47.1,False,3163,53.2,0 +8917,39,Female,123,74,267,86,152,159,111,5.5,16.5,83,194,Non-Anginal Pain,False,2.1,False,Former,5.3,81,5.8,54.9,False,2616,66.6,0 +8918,49,Female,111,72,259,70,139,231,103,5.2,24.2,85,166,Typical Angina,True,0.3,True,Former,4.5,213,6.9,31.8,True,7597,85.6,0 +8919,66,Female,112,68,220,63,150,78,125,5.9,22.1,66,144,Atypical Angina,False,1.1,True,Never,5.0,158,9.1,41.6,True,6725,87.6,0 +8920,47,Male,121,71,205,47,140,180,107,5.6,23.8,74,186,Non-Anginal Pain,False,0.2,True,Never,11.9,97,6.0,45.6,False,3321,50.8,0 +8921,41,Male,125,80,114,36,39,226,136,6.4,24.7,75,165,Asymptomatic,True,1.2,False,Current,1.9,138,3.8,56.7,True,4984,56.2,1 +8922,38,Female,112,83,213,58,110,221,103,4.9,20.7,72,186,Asymptomatic,False,0.6,True,Never,7.4,176,7.7,59.7,True,9008,30.7,0 +8923,52,Female,124,83,163,79,54,144,123,6.4,28.2,81,173,Atypical Angina,False,0.4,False,Never,3.1,231,6.8,82.1,True,8293,62.8,0 +8924,68,Female,119,93,194,54,112,184,141,6.6,16.4,79,122,Non-Anginal Pain,False,2.3,True,Current,5.8,200,8.5,20.0,False,7166,41.4,1 +8925,52,Female,145,94,235,47,139,196,131,5.8,22.6,92,160,Non-Anginal Pain,False,0.1,False,Current,4.3,112,8.1,64.6,True,8556,35.0,1 +8926,49,Female,126,88,132,49,61,76,86,5.2,21.7,93,178,Non-Anginal Pain,False,0.6,True,Former,1.1,138,5.1,63.9,False,7208,59.3,0 +8927,69,Female,142,90,150,44,70,216,100,4.9,20.6,90,150,Asymptomatic,False,0.3,False,Never,9.1,86,8.6,48.0,False,4086,58.9,0 +8928,53,Female,121,80,206,47,132,56,139,6.6,21.0,82,142,Non-Anginal Pain,True,0.1,True,Former,0.9,88,6.4,57.1,False,5169,51.8,1 +8929,57,Male,134,96,199,57,108,170,92,5.6,27.8,89,160,Non-Anginal Pain,False,0.7,False,Never,2.5,86,6.8,54.8,False,5128,66.1,1 +8930,48,Female,137,82,247,74,130,207,126,6.0,32.9,70,176,Asymptomatic,False,0.1,False,Never,14.8,221,7.5,24.8,False,1478,48.8,0 +8931,30,Male,105,62,163,79,53,153,131,6.0,23.1,78,203,Asymptomatic,False,0.4,False,Former,6.9,213,7.2,50.2,False,3197,60.2,0 +8932,59,Male,129,72,202,50,117,169,109,5.3,20.6,78,159,Asymptomatic,False,1.3,False,Never,12.2,73,8.4,53.3,False,6905,37.2,0 +8933,45,Female,112,68,182,58,82,245,137,5.8,21.8,96,152,Non-Anginal Pain,False,1.0,False,Never,9.6,85,8.9,27.2,True,6760,32.1,0 +8934,71,Female,127,78,224,44,123,225,157,6.4,30.3,93,131,Asymptomatic,False,3.2,True,Never,2.8,25,5.5,63.9,False,1107,55.8,1 +8935,38,Male,108,78,157,43,70,195,108,5.3,25.9,75,187,Typical Angina,False,1.2,True,Never,12.2,72,5.6,36.8,False,500,91.1,0 +8936,37,Male,110,75,199,58,130,120,113,5.8,25.1,94,142,Asymptomatic,True,3.1,False,Former,2.8,53,5.6,49.2,False,4021,58.9,1 +8937,67,Female,148,102,226,74,107,216,147,6.8,25.4,100,157,Non-Anginal Pain,False,0.5,False,Current,3.9,149,5.9,21.8,False,9270,60.0,0 +8938,62,Female,136,84,172,71,85,88,136,5.7,15.0,84,169,Asymptomatic,False,0.4,False,Former,1.3,117,8.1,51.0,False,6561,79.1,0 +8939,47,Female,104,66,181,63,92,137,123,6.1,27.1,77,172,Asymptomatic,False,0.4,False,Never,1.6,208,9.3,13.1,True,9539,39.3,0 +8940,45,Female,162,103,179,50,87,199,123,6.1,23.6,72,174,Asymptomatic,False,0.1,False,Current,0.7,192,7.4,48.2,True,6407,66.3,0 +8941,44,Male,125,90,183,38,116,151,126,6.3,28.5,70,179,Asymptomatic,False,0.3,False,Never,2.9,150,6.1,42.7,True,10165,44.7,0 +8942,63,Female,134,77,207,47,134,118,150,6.4,28.5,85,173,Atypical Angina,False,0.5,False,Never,1.4,147,7.4,53.3,True,8631,88.5,0 +8943,59,Male,114,75,195,56,102,127,125,5.6,17.7,71,141,Asymptomatic,False,1.4,True,Never,1.5,165,7.7,41.1,True,4690,87.3,0 +8944,69,Female,164,101,179,60,101,187,117,5.8,33.7,88,115,Asymptomatic,False,0.2,False,Never,2.2,145,8.8,67.2,True,8154,81.9,1 +8945,53,Female,134,87,172,54,93,157,122,6.2,26.0,79,137,Asymptomatic,False,1.3,True,Former,5.7,148,6.5,33.1,False,5751,59.2,1 +8946,50,Female,124,76,164,55,89,162,107,6.4,29.1,90,154,Asymptomatic,False,0.1,True,Never,0.9,0,7.5,57.7,False,5419,55.0,1 +8947,43,Female,130,80,177,48,103,207,134,6.2,30.9,81,210,Atypical Angina,False,2.4,True,Never,0.7,119,5.7,64.4,False,5910,59.4,0 +8948,46,Male,126,70,162,46,96,112,60,4.0,24.5,81,208,Asymptomatic,False,0.2,False,Never,1.7,199,6.7,59.8,True,6895,38.6,0 +8949,57,Male,124,76,169,55,75,226,165,7.4,35.8,91,180,Atypical Angina,True,0.1,False,Never,4.0,118,6.6,51.6,True,6925,69.6,0 +8950,40,Female,127,79,159,29,112,96,136,6.5,30.3,98,166,Asymptomatic,True,1.4,False,Current,1.8,20,5.4,56.1,False,3134,59.6,1 +8951,40,Female,129,85,245,55,137,206,143,6.0,25.2,75,170,Asymptomatic,False,1.3,False,Current,5.0,143,7.8,65.7,False,7371,36.9,0 +8952,57,Male,133,80,186,55,118,95,157,6.6,23.5,65,160,Non-Anginal Pain,True,3.0,False,Former,2.2,164,5.8,58.3,True,10451,69.6,1 +8953,51,Male,146,91,202,63,143,56,99,5.4,27.7,85,166,Non-Anginal Pain,False,0.4,False,Never,1.8,215,8.1,63.6,True,9703,50.7,0 +8954,49,Female,139,92,209,67,112,167,127,6.2,24.6,80,181,Asymptomatic,True,0.3,True,Former,2.4,212,8.5,32.3,True,7486,71.4,0 +8955,47,Female,147,91,151,42,81,92,103,5.2,26.4,79,178,Non-Anginal Pain,False,0.2,True,Never,2.5,61,6.7,46.8,True,4322,55.0,0 +8956,42,Male,127,75,195,46,120,181,87,5.2,25.6,84,168,Atypical Angina,True,1.2,True,Current,8.2,66,4.7,58.7,False,2838,35.7,1 +8957,49,Female,124,78,194,65,71,234,138,5.4,28.2,78,182,Non-Anginal Pain,False,0.6,False,Never,8.7,129,6.0,53.4,True,6028,65.2,0 +8958,49,Female,117,83,164,62,91,71,124,6.4,24.4,72,165,Typical Angina,False,1.9,False,Never,4.1,220,6.0,9.7,False,6755,63.2,0 +8959,67,Female,164,103,216,70,106,159,86,4.6,25.7,80,145,Asymptomatic,False,1.4,False,Never,1.0,173,7.4,74.8,True,6255,53.7,0 +8960,62,Female,132,85,180,60,97,160,127,6.3,27.1,90,156,Asymptomatic,False,0.9,False,Never,6.9,54,7.1,43.1,False,5798,66.1,0 +8961,44,Male,102,61,165,33,105,62,92,5.0,22.4,102,177,Non-Anginal Pain,False,0.6,False,Current,4.2,159,5.1,51.7,True,4599,44.6,0 +8962,43,Male,112,82,191,63,124,62,74,5.1,17.6,77,154,Asymptomatic,False,1.2,False,Never,2.8,276,6.8,42.6,True,5135,76.1,0 +8963,57,Female,129,85,121,40,61,176,113,5.1,17.5,79,166,Asymptomatic,False,0.0,False,Never,10.9,138,5.6,35.4,False,6419,72.7,0 +8964,53,Male,128,82,219,47,132,219,154,6.6,24.0,69,158,Asymptomatic,True,2.9,False,Never,7.4,215,7.6,60.8,True,7049,40.4,1 +8965,70,Female,156,98,225,64,117,240,123,6.1,24.2,82,119,Non-Anginal Pain,False,0.6,True,Former,1.3,60,6.3,47.0,False,5900,36.1,1 +8966,40,Female,121,82,145,45,65,166,113,5.5,25.8,90,199,Asymptomatic,False,0.4,True,Never,3.0,70,8.3,52.8,False,5247,63.3,0 +8967,58,Male,142,77,178,54,101,163,151,7.5,21.1,79,173,Asymptomatic,False,1.0,False,Former,3.1,131,6.6,54.0,True,8204,64.5,0 +8968,38,Male,112,67,155,49,86,122,95,5.7,23.2,76,185,Non-Anginal Pain,False,1.5,False,Never,9.3,150,6.3,23.3,True,8092,61.4,0 +8969,62,Male,127,85,146,48,77,109,122,5.7,23.5,75,128,Non-Anginal Pain,False,0.6,False,Current,1.5,99,5.0,32.6,False,4507,54.9,1 +8970,57,Male,137,87,206,42,117,199,121,5.9,20.1,89,158,Atypical Angina,False,0.4,False,Current,9.0,195,6.3,59.7,False,5927,50.6,1 +8971,64,Female,147,79,208,66,101,201,102,6.1,35.8,70,173,Asymptomatic,False,0.4,False,Never,3.8,190,7.1,50.2,True,8755,52.7,0 +8972,54,Male,151,102,183,40,125,132,112,5.4,28.4,75,162,Non-Anginal Pain,False,1.5,False,Former,1.9,186,7.1,45.8,False,2245,66.8,1 +8973,62,Male,128,81,181,56,104,118,121,6.1,23.7,83,170,Non-Anginal Pain,False,1.7,False,Never,3.7,236,6.7,25.5,True,4886,52.4,0 +8974,56,Male,144,84,174,39,106,137,147,6.2,27.2,81,154,Typical Angina,True,6.5,True,Former,4.2,166,8.1,43.3,False,4278,43.4,1 +8975,54,Female,132,76,215,61,114,172,74,5.0,25.3,83,157,Non-Anginal Pain,False,0.7,False,Never,5.5,227,7.4,48.2,True,7788,71.9,0 +8976,71,Female,125,78,178,56,89,170,150,7.1,30.1,91,150,Asymptomatic,True,0.9,True,Never,0.9,46,6.3,37.1,False,2635,56.5,1 +8977,70,Male,129,86,150,51,76,104,116,6.0,20.3,73,175,Atypical Angina,False,0.8,False,Never,6.1,149,7.5,33.8,True,5234,88.1,0 +8978,71,Female,129,85,194,66,106,124,127,6.2,18.6,104,144,Asymptomatic,False,0.5,True,Current,3.4,117,7.3,65.3,False,9870,68.3,0 +8979,62,Female,133,96,186,59,98,129,120,6.4,29.3,90,165,Non-Anginal Pain,False,0.2,False,Former,10.9,90,8.2,86.7,False,6689,58.0,0 +8980,51,Male,108,66,162,58,74,187,127,5.8,25.5,80,162,Typical Angina,False,0.4,True,Never,6.6,315,4.9,47.6,False,6157,76.8,1 +8981,44,Female,131,87,228,71,122,146,121,4.9,19.3,84,162,Non-Anginal Pain,False,0.2,False,Former,2.7,279,7.5,34.2,True,8742,91.0,0 +8982,51,Male,135,91,163,51,93,122,120,6.1,19.1,69,179,Non-Anginal Pain,False,0.0,True,Never,3.0,122,8.1,42.3,False,3682,68.8,0 +8983,41,Male,96,55,171,78,63,207,138,5.6,17.9,76,196,Asymptomatic,True,0.1,True,Never,7.7,132,8.3,82.1,False,4760,59.3,0 +8984,45,Male,137,73,176,56,112,39,68,4.2,18.5,72,167,Typical Angina,True,0.8,False,Former,1.8,134,5.5,77.0,False,6519,66.0,1 +8985,55,Male,123,68,188,41,121,130,105,5.3,31.3,85,169,Non-Anginal Pain,True,0.9,False,Never,1.8,117,7.8,48.3,True,6341,60.0,0 +8986,53,Female,128,71,245,46,166,144,110,5.6,30.7,85,154,Asymptomatic,False,0.0,True,Current,0.6,136,8.5,62.0,False,6359,32.9,1 +8987,55,Female,139,82,204,50,103,185,125,6.7,22.7,67,158,Typical Angina,False,2.0,False,Former,7.0,128,8.0,45.6,True,5272,56.5,1 +8988,57,Female,115,70,177,48,81,196,127,5.7,30.1,73,165,Non-Anginal Pain,False,0.5,False,Never,2.8,108,7.5,46.1,True,6938,57.5,0 +8989,72,Female,134,90,213,53,133,114,102,5.5,19.9,87,144,Asymptomatic,True,3.1,True,Never,3.9,112,9.1,67.3,True,9023,58.0,1 +8990,52,Male,139,94,156,46,77,152,143,6.9,24.5,77,130,Typical Angina,True,0.5,False,Former,9.4,25,7.5,55.9,False,6676,67.3,1 +8991,34,Male,110,62,122,48,49,95,138,6.8,29.4,80,188,Non-Anginal Pain,False,1.4,False,Never,2.8,140,7.4,53.6,True,9981,58.8,0 +8992,58,Female,138,92,164,70,45,198,161,6.9,27.1,87,158,Typical Angina,False,0.2,False,Former,4.3,108,7.2,47.4,True,6284,74.2,0 +8993,61,Female,139,90,185,59,108,82,143,6.2,28.9,90,144,Non-Anginal Pain,False,1.9,False,Current,6.0,22,7.4,92.6,False,4353,65.1,1 +8994,62,Male,142,88,222,73,119,159,122,6.1,29.5,87,148,Atypical Angina,True,2.7,False,Former,2.3,249,6.9,17.2,False,7555,56.9,0 +8995,86,Female,138,96,230,63,137,154,132,6.0,24.8,84,140,Typical Angina,True,0.5,False,Never,4.9,136,6.8,34.8,True,7599,67.9,1 +8996,36,Female,108,63,178,68,82,158,96,5.3,25.1,66,210,Typical Angina,False,1.1,False,Never,13.0,306,8.6,51.1,False,7144,58.1,0 +8997,44,Female,112,73,213,54,139,102,125,5.9,23.6,61,158,Asymptomatic,False,1.2,False,Former,3.4,76,6.5,37.1,False,7395,68.9,0 +8998,57,Female,144,93,198,66,113,79,102,5.7,28.2,86,156,Asymptomatic,False,1.9,False,Never,3.9,194,6.2,46.3,False,7424,70.2,0 +8999,61,Female,130,70,220,68,135,109,104,5.5,27.5,91,154,Asymptomatic,False,0.8,False,Former,3.9,139,5.0,66.5,False,5716,43.8,1 +9000,63,Female,152,104,215,64,117,109,120,5.0,22.1,69,148,Asymptomatic,False,0.5,False,Never,7.3,95,8.8,54.1,False,3860,54.5,0 diff --git a/wayang-jdbc/demo/data/student_performance_dataset.csv b/wayang-jdbc/demo/data/student_performance_dataset.csv new file mode 100644 index 000000000..f0057b84e --- /dev/null +++ b/wayang-jdbc/demo/data/student_performance_dataset.csv @@ -0,0 +1,1001 @@ +student_id,gender,study_time_hours,attendance_percent,sleep_hours,parental_education,internet_access,extracurricular_activities,part_time_job,previous_grade,final_exam_score,final_grade +1,Male,4.0,98.0,6.5,Bachelors,Yes,Yes,No,76.9,100.0,A +2,Female,6.3,100.0,5.7,High School,Yes,Yes,Yes,75.5,100.0,A +3,Male,4.9,85.3,7.9,Bachelors,Yes,No,Yes,88.5,97.3,A +4,Male,2.6,77.5,8.0,None,Yes,Yes,No,85.1,83.8,B +5,Male,2.2,89.6,4.6,Bachelors,Yes,No,Yes,61.8,68.3,D +6,Female,4.2,78.2,5.7,High School,Yes,No,No,79.8,81.6,B +7,Male,1.5,100.0,5.0,High School,Yes,Yes,Yes,58.6,69.6,D +8,Male,6.2,86.4,6.0,High School,Yes,Yes,No,78.4,88.0,B +9,Male,5.3,81.3,6.7,Bachelors,Yes,No,No,63.8,84.4,B +10,Female,2.8,86.8,5.1,Bachelors,Yes,Yes,No,57.7,74.3,C +11,Male,0.9,71.5,5.7,High School,Yes,No,Yes,73.4,68.9,D +12,Male,5.5,75.3,5.6,None,Yes,Yes,No,37.9,76.7,C +13,Male,3.3,97.0,7.0,Masters,Yes,Yes,Yes,49.0,82.6,B +14,Male,5.4,78.4,6.9,Bachelors,No,No,No,67.9,93.3,A +15,Female,1.1,74.5,5.9,Masters,Yes,Yes,Yes,71.0,73.9,C +16,Male,2.6,90.4,7.0,High School,Yes,Yes,No,65.6,84.8,B +17,Female,3.5,96.9,6.1,Bachelors,Yes,Yes,No,51.0,81.5,B +18,Female,3.6,92.2,6.5,Bachelors,Yes,Yes,Yes,60.2,75.5,C +19,Female,2.8,95.0,8.8,Masters,No,Yes,No,74.7,89.7,B +20,Male,4.4,77.4,8.4,Masters,No,No,Yes,77.0,92.8,A +21,Female,1.9,70.8,5.2,High School,Yes,Yes,No,69.8,73.5,C +22,Male,3.3,100.0,7.8,None,Yes,Yes,No,83.9,100.0,A +23,Female,3.7,81.8,7.8,High School,No,No,No,74.8,73.4,C +24,Female,4.3,82.5,5.4,PhD,No,Yes,No,61.0,71.2,C +25,Female,4.6,98.3,7.8,None,Yes,Yes,Yes,66.6,97.2,A +26,Female,1.8,90.6,8.6,High School,Yes,No,No,53.2,76.0,C +27,Female,1.2,89.6,5.5,Masters,Yes,No,Yes,68.7,78.7,C +28,Female,5.4,100.0,5.7,High School,No,No,No,83.3,97.4,A +29,Female,4.0,78.6,8.0,Bachelors,Yes,No,No,78.2,84.2,B +30,Female,2.4,94.3,7.1,Bachelors,Yes,Yes,No,86.8,89.8,B +31,Male,5.8,85.6,7.5,Bachelors,Yes,No,Yes,66.4,82.4,B +32,Male,3.7,87.7,7.2,None,Yes,Yes,No,86.2,87.7,B +33,Female,5.3,100.0,7.3,Masters,Yes,Yes,No,67.7,100.0,A +34,Female,3.6,90.1,5.2,Bachelors,No,Yes,No,87.7,93.3,A +35,Female,6.6,90.4,8.1,Masters,Yes,Yes,Yes,69.7,100.0,A +36,Male,6.1,95.7,8.2,None,Yes,Yes,Yes,78.5,92.9,A +37,Female,3.1,81.4,6.5,High School,Yes,No,Yes,87.7,83.2,B +38,Male,5.0,76.6,6.7,None,Yes,Yes,No,67.7,81.1,B +39,Male,4.5,74.6,5.0,High School,Yes,Yes,Yes,72.6,89.5,B +40,Male,5.6,65.3,7.4,Masters,Yes,Yes,No,85.5,91.6,A +41,Male,2.1,100.0,7.5,High School,Yes,Yes,Yes,68.4,75.3,C +42,Male,4.5,74.0,6.7,High School,Yes,No,No,54.1,79.0,C +43,Female,5.1,82.8,8.1,Bachelors,Yes,Yes,No,95.7,100.0,A +44,Female,0.9,82.2,6.4,Bachelors,Yes,Yes,No,64.4,79.2,C +45,Female,1.7,88.1,7.5,Bachelors,No,Yes,No,71.9,70.8,C +46,Female,0.5,93.2,5.6,High School,No,No,Yes,83.9,61.8,D +47,Female,3.1,93.6,6.8,Bachelors,Yes,Yes,Yes,62.7,68.0,D +48,Male,4.6,79.2,6.6,None,Yes,Yes,Yes,57.9,80.3,B +49,Female,5.8,83.3,7.1,Bachelors,No,Yes,No,73.0,88.6,B +50,Female,3.6,87.8,6.4,High School,Yes,Yes,No,48.5,69.4,D +51,Male,5.9,82.5,6.6,Bachelors,Yes,Yes,No,66.5,100.0,A +52,Female,1.4,100.0,7.8,High School,No,No,No,72.9,81.8,B +53,Male,0.9,89.9,6.3,Masters,Yes,No,No,66.8,72.6,C +54,Female,3.4,92.3,4.9,Masters,Yes,No,No,51.5,85.3,B +55,Male,4.1,91.6,8.9,Bachelors,No,Yes,No,89.1,99.8,A +56,Female,3.5,96.7,8.5,Bachelors,Yes,Yes,Yes,71.2,84.3,B +57,Female,0.5,86.8,5.2,Masters,Yes,Yes,No,87.2,71.5,C +58,Male,3.4,72.0,7.6,Bachelors,Yes,No,No,66.9,84.3,B +59,Male,1.5,89.0,6.2,Masters,Yes,No,No,59.4,74.5,C +60,Male,4.5,78.5,7.1,Bachelors,Yes,No,No,73.2,89.5,B +61,Male,4.0,79.7,7.2,Masters,Yes,Yes,No,67.4,80.4,B +62,Male,2.1,90.9,6.5,Bachelors,No,Yes,Yes,55.9,71.1,C +63,Male,2.7,97.4,5.9,Bachelors,Yes,Yes,No,87.6,87.8,B +64,Male,1.9,85.2,6.0,None,Yes,No,No,62.5,73.0,C +65,Male,3.4,88.1,5.7,Bachelors,Yes,No,Yes,47.9,80.8,B +66,Female,4.9,100.0,5.8,Bachelors,Yes,No,No,85.9,97.4,A +67,Female,2.0,87.4,6.7,High School,Yes,Yes,No,63.9,67.8,D +68,Male,4.3,100.0,5.9,Bachelors,No,Yes,No,62.7,79.2,C +69,Female,2.7,90.7,7.6,Bachelors,No,No,Yes,48.8,73.5,C +70,Female,2.3,67.4,8.6,High School,Yes,No,No,90.9,85.1,B +71,Female,3.3,92.5,6.1,High School,Yes,Yes,No,54.5,79.6,C +72,Female,1.9,88.8,7.1,Bachelors,Yes,Yes,No,70.7,77.4,C +73,Male,2.7,97.9,7.4,Masters,Yes,Yes,No,81.0,94.6,A +74,Female,1.7,91.7,7.4,Bachelors,Yes,Yes,No,75.1,77.6,C +75,Male,6.4,83.6,6.9,High School,Yes,Yes,No,69.3,99.9,A +76,Female,3.6,72.8,7.7,Masters,No,No,No,49.6,64.4,D +77,Female,2.5,82.9,7.4,High School,Yes,Yes,No,60.3,71.9,C +78,Female,3.8,76.5,5.3,Bachelors,Yes,Yes,No,72.3,79.3,C +79,Male,3.3,79.2,7.8,High School,Yes,Yes,Yes,60.6,74.9,C +80,Female,3.2,90.9,7.9,High School,Yes,No,No,72.4,87.4,B +81,Male,4.4,100.0,5.9,High School,Yes,No,No,78.2,97.6,A +82,Female,4.6,88.9,6.8,Bachelors,Yes,Yes,No,81.6,74.5,C +83,Male,2.7,73.0,7.6,High School,Yes,No,Yes,55.3,64.1,D +84,Female,2.6,89.4,6.5,Bachelors,Yes,No,No,96.4,90.0,A +85,Male,3.1,97.0,8.1,Bachelors,Yes,Yes,Yes,79.2,99.3,A +86,Male,0.5,78.9,9.6,Bachelors,Yes,Yes,Yes,70.0,63.9,D +87,Female,1.2,83.7,5.9,Bachelors,Yes,No,No,83.1,79.0,C +88,Male,5.6,85.1,5.1,Masters,Yes,No,No,98.4,100.0,A +89,Female,6.0,77.2,7.2,High School,Yes,No,No,52.7,78.9,C +90,Female,3.1,91.5,7.7,Bachelors,Yes,No,Yes,67.3,84.5,B +91,Female,4.4,83.8,6.5,High School,Yes,No,No,41.5,71.7,C +92,Female,4.0,89.2,8.5,High School,Yes,Yes,Yes,72.3,86.3,B +93,Female,8.1,76.1,5.2,Bachelors,Yes,Yes,No,74.4,98.3,A +94,Female,5.2,80.6,7.6,Bachelors,Yes,Yes,No,69.5,88.1,B +95,Female,3.3,92.2,6.1,PhD,Yes,Yes,No,62.1,99.6,A +96,Female,2.1,81.3,8.9,Bachelors,Yes,No,No,45.4,74.8,C +97,Female,1.1,100.0,9.2,None,Yes,No,Yes,74.5,87.4,B +98,Female,3.8,81.0,5.9,High School,No,No,No,87.5,88.5,B +99,Female,2.4,87.2,6.1,High School,Yes,Yes,Yes,62.9,65.2,D +100,Male,1.4,94.3,7.8,High School,No,No,No,75.3,79.2,C +101,Male,2.5,70.8,6.3,High School,Yes,Yes,No,51.2,74.5,C +102,Female,1.9,67.4,6.7,Bachelors,Yes,Yes,Yes,75.5,66.3,D +103,Female,6.0,69.7,6.8,Bachelors,No,No,No,65.3,89.5,B +104,Female,4.8,97.6,4.5,High School,Yes,No,No,60.9,92.7,A +105,Female,3.5,79.5,6.8,None,Yes,No,Yes,60.9,87.2,B +106,Female,5.7,100.0,6.0,Masters,Yes,Yes,Yes,65.3,92.5,A +107,Female,3.6,79.4,6.2,High School,Yes,Yes,Yes,74.6,75.7,C +108,Female,2.2,86.8,8.5,High School,Yes,Yes,No,54.3,74.0,C +109,Female,5.8,100.0,5.3,High School,Yes,Yes,No,65.2,100.0,A +110,Male,4.3,100.0,7.8,High School,No,No,Yes,69.5,75.5,C +111,Female,1.9,100.0,6.5,High School,Yes,No,Yes,56.8,61.7,D +112,Male,3.2,97.1,6.5,Bachelors,No,No,No,91.6,91.4,A +113,Female,2.2,95.2,7.7,High School,No,Yes,No,59.8,72.7,C +114,Female,1.4,90.9,7.2,Bachelors,Yes,No,No,62.0,74.6,C +115,Male,4.9,92.8,7.5,None,Yes,Yes,No,58.3,96.5,A +116,Female,6.4,79.5,8.0,Masters,No,No,Yes,91.6,94.5,A +117,Male,1.4,76.8,6.4,None,No,Yes,No,76.6,59.3,F +118,Female,4.3,85.0,6.1,High School,Yes,Yes,No,58.8,96.2,A +119,Female,2.5,83.3,5.5,Bachelors,Yes,Yes,Yes,83.3,75.3,C +120,Male,2.8,80.5,5.8,Bachelors,Yes,No,No,72.4,73.3,C +121,Female,2.6,92.0,10.0,High School,Yes,Yes,No,73.1,95.8,A +122,Male,2.2,94.6,8.3,High School,Yes,Yes,No,65.9,81.0,B +123,Female,3.6,85.9,5.2,Masters,Yes,No,Yes,61.0,76.5,C +124,Male,2.3,99.8,5.2,Bachelors,Yes,Yes,No,74.1,88.1,B +125,Male,3.9,73.6,7.4,Bachelors,Yes,Yes,No,63.5,88.1,B +126,Female,3.4,83.1,7.5,Bachelors,Yes,Yes,No,91.8,92.1,A +127,Female,3.1,77.8,7.5,Bachelors,Yes,Yes,No,54.8,85.2,B +128,Male,2.1,66.3,6.5,High School,Yes,No,Yes,88.4,63.0,D +129,Female,2.6,84.2,6.6,High School,Yes,No,Yes,68.7,81.1,B +130,Female,4.6,83.8,7.2,High School,Yes,Yes,No,73.6,87.1,B +131,Female,4.3,100.0,6.9,High School,Yes,No,Yes,80.0,100.0,A +132,Male,2.0,91.3,4.1,None,Yes,Yes,No,62.4,75.7,C +133,Male,3.6,74.8,6.5,Bachelors,No,Yes,No,80.4,77.3,C +134,Male,4.6,100.0,5.8,Masters,Yes,Yes,No,37.5,85.6,B +135,Male,1.0,97.2,7.0,High School,Yes,Yes,No,61.4,80.8,B +136,Male,4.3,90.8,10.0,Bachelors,Yes,Yes,No,58.9,94.5,A +137,Male,2.5,82.7,7.2,High School,No,No,Yes,55.0,59.7,F +138,Male,4.4,75.4,6.4,High School,Yes,No,No,67.4,80.9,B +139,Male,2.4,81.3,7.9,High School,Yes,Yes,No,74.6,82.6,B +140,Male,0.8,95.9,7.4,Masters,Yes,No,No,78.4,80.2,B +141,Female,1.1,100.0,7.3,Masters,Yes,No,Yes,72.9,82.4,B +142,Male,3.6,100.0,7.5,Bachelors,Yes,No,No,62.0,75.9,C +143,Female,3.9,80.1,9.3,Bachelors,Yes,No,Yes,74.4,88.5,B +144,Female,2.1,73.8,5.4,None,Yes,Yes,Yes,71.5,69.6,D +145,Female,4.5,86.4,7.4,High School,Yes,No,Yes,81.2,86.8,B +146,Male,1.0,67.3,5.7,High School,Yes,No,No,79.3,65.2,D +147,Male,3.4,88.2,7.5,High School,Yes,No,Yes,70.4,82.0,B +148,Male,1.7,83.5,5.7,Masters,Yes,Yes,Yes,59.2,46.8,F +149,Male,2.5,80.3,6.3,None,Yes,Yes,Yes,62.2,68.6,D +150,Female,3.6,69.1,6.4,High School,Yes,Yes,Yes,63.4,69.2,D +151,Male,2.2,90.1,8.0,PhD,Yes,Yes,No,66.2,84.7,B +152,Male,2.9,79.7,7.9,Masters,Yes,Yes,Yes,73.2,75.9,C +153,Male,5.0,73.3,5.3,High School,Yes,No,Yes,78.6,84.7,B +154,Male,2.6,56.3,6.9,Bachelors,No,Yes,No,69.4,75.7,C +155,Male,4.8,84.7,5.9,Bachelors,Yes,No,No,70.2,95.4,A +156,Female,1.8,100.0,5.3,None,Yes,Yes,No,71.7,87.6,B +157,Male,4.3,100.0,6.5,High School,Yes,No,No,63.8,87.7,B +158,Female,5.7,80.4,6.4,Masters,Yes,Yes,Yes,58.9,89.3,B +159,Male,0.5,79.0,9.7,High School,Yes,Yes,No,48.9,63.7,D +160,Female,2.3,89.7,7.3,Masters,Yes,No,Yes,61.7,74.0,C +161,Male,4.4,75.0,5.1,Bachelors,Yes,No,No,75.7,87.9,B +162,Male,3.2,88.0,6.1,Bachelors,Yes,No,No,61.6,76.6,C +163,Female,4.1,92.7,8.0,Masters,Yes,Yes,Yes,67.1,97.3,A +164,Female,2.6,97.3,9.3,Masters,Yes,Yes,No,75.6,90.2,A +165,Female,3.6,84.0,4.9,PhD,Yes,No,No,76.2,88.7,B +166,Male,3.3,83.0,4.5,High School,Yes,Yes,No,57.0,84.8,B +167,Female,5.3,76.2,9.0,Masters,Yes,No,No,82.0,100.0,A +168,Male,3.9,76.7,7.3,High School,Yes,Yes,No,83.5,82.1,B +169,Male,4.0,82.7,5.8,Bachelors,No,Yes,Yes,56.4,75.1,C +170,Female,2.9,88.7,7.4,Bachelors,No,Yes,Yes,60.1,78.1,C +171,Female,2.8,94.1,3.6,Bachelors,Yes,Yes,No,84.3,92.9,A +172,Male,2.9,77.0,6.8,Bachelors,Yes,No,No,68.2,71.8,C +173,Male,4.1,99.9,7.2,None,Yes,No,No,43.4,78.5,C +174,Female,2.9,82.3,7.9,High School,Yes,Yes,No,53.2,82.6,B +175,Female,3.9,84.8,5.6,Masters,Yes,No,No,67.0,79.2,C +176,Female,6.6,77.5,6.9,Bachelors,Yes,Yes,No,56.0,89.7,B +177,Male,4.8,60.8,5.7,High School,Yes,Yes,No,65.0,89.2,B +178,Male,3.0,93.8,7.1,High School,No,Yes,No,70.4,81.7,B +179,Male,5.3,92.4,5.7,None,Yes,No,No,87.5,96.7,A +180,Male,2.9,82.2,6.3,PhD,Yes,No,No,66.5,73.7,C +181,Male,0.5,85.7,5.6,None,Yes,No,No,82.9,77.1,C +182,Male,2.0,90.2,7.6,None,Yes,No,Yes,87.1,76.5,C +183,Female,0.7,69.4,7.8,High School,Yes,No,No,87.2,73.2,C +184,Male,3.0,79.7,6.5,Bachelors,Yes,No,No,73.4,83.6,B +185,Male,3.5,92.9,6.8,Masters,Yes,No,No,46.4,85.8,B +186,Male,6.0,72.5,5.1,Bachelors,Yes,No,No,75.5,95.7,A +187,Female,4.0,87.9,6.4,Bachelors,Yes,Yes,No,82.6,89.2,B +188,Male,3.2,71.4,6.7,Bachelors,Yes,Yes,Yes,69.0,83.1,B +189,Male,4.7,89.7,9.9,Bachelors,Yes,Yes,No,90.9,100.0,A +190,Female,0.5,84.6,5.5,Bachelors,Yes,Yes,No,80.3,67.2,D +191,Male,3.9,68.8,8.6,High School,Yes,No,No,76.8,84.6,B +192,Male,4.7,96.6,8.0,Bachelors,Yes,Yes,Yes,83.0,100.0,A +193,Male,1.3,77.7,7.1,Bachelors,Yes,No,No,74.0,75.2,C +194,Male,5.2,76.9,8.9,Bachelors,Yes,Yes,No,40.1,81.1,B +195,Male,4.0,87.0,7.2,High School,Yes,Yes,No,64.0,96.5,A +196,Female,2.9,96.5,7.3,Masters,No,Yes,No,84.4,79.8,C +197,Female,4.4,74.8,6.7,High School,Yes,No,No,60.3,73.4,C +198,Female,6.9,85.6,8.3,Bachelors,Yes,Yes,No,67.3,92.2,A +199,Male,3.8,89.3,8.1,Masters,Yes,Yes,No,57.5,87.3,B +200,Male,3.9,91.9,6.0,Bachelors,No,No,No,91.4,92.5,A +201,Male,2.8,86.8,5.2,High School,Yes,No,Yes,90.2,94.6,A +202,Female,2.2,81.3,6.6,Masters,Yes,Yes,No,59.4,75.5,C +203,Male,4.7,76.7,5.8,Bachelors,Yes,Yes,No,71.8,85.3,B +204,Male,2.2,85.9,6.7,Masters,Yes,Yes,No,61.8,76.7,C +205,Female,3.6,74.3,8.3,Masters,Yes,No,No,77.4,86.8,B +206,Male,2.8,55.8,6.3,Bachelors,Yes,Yes,Yes,76.1,61.1,D +207,Female,4.2,89.4,6.7,Bachelors,Yes,Yes,Yes,79.7,100.0,A +208,Female,4.0,94.0,6.9,High School,No,Yes,No,74.0,90.9,A +209,Female,5.1,61.4,7.8,High School,Yes,Yes,Yes,100.0,96.1,A +210,Male,2.7,74.9,4.1,Bachelors,Yes,No,No,57.7,73.1,C +211,Male,3.1,91.2,6.1,Bachelors,Yes,Yes,No,49.5,81.2,B +212,Male,2.0,100.0,7.1,Bachelors,Yes,Yes,No,65.3,81.8,B +213,Male,2.8,85.2,8.2,High School,Yes,Yes,Yes,51.2,70.0,C +214,Male,4.1,77.7,6.2,High School,Yes,Yes,Yes,52.1,78.5,C +215,Male,4.6,83.2,4.5,Bachelors,Yes,Yes,No,58.0,84.7,B +216,Male,2.1,98.7,7.5,High School,Yes,No,No,58.9,74.7,C +217,Female,4.8,78.5,6.0,Masters,Yes,No,No,58.5,91.2,A +218,Male,5.5,77.0,5.4,High School,Yes,No,No,76.2,93.4,A +219,Female,4.1,80.2,6.1,Bachelors,Yes,No,No,63.9,86.8,B +220,Male,6.3,75.5,6.6,None,Yes,No,No,67.8,100.0,A +221,Male,2.3,86.2,6.1,High School,Yes,Yes,No,80.7,84.3,B +222,Male,1.6,100.0,4.2,Bachelors,No,No,No,60.8,71.5,C +223,Female,0.8,88.2,7.9,High School,No,No,Yes,66.8,70.5,C +224,Female,5.7,82.5,8.3,Bachelors,Yes,No,Yes,74.4,89.9,B +225,Female,4.5,82.1,7.6,Bachelors,Yes,Yes,No,46.7,81.1,B +226,Female,3.4,69.4,5.4,Bachelors,Yes,Yes,No,41.4,67.4,D +227,Male,3.9,93.8,6.6,Bachelors,Yes,No,Yes,74.2,82.2,B +228,Female,1.8,84.2,6.8,PhD,Yes,No,Yes,75.9,90.0,A +229,Male,7.2,83.2,7.5,High School,Yes,No,No,94.8,100.0,A +230,Male,3.7,100.0,7.6,High School,Yes,Yes,Yes,71.9,82.7,B +231,Female,3.7,88.0,5.9,PhD,Yes,Yes,No,79.8,98.3,A +232,Female,4.6,77.5,6.9,Bachelors,Yes,Yes,No,67.7,91.5,A +233,Female,4.2,80.7,7.3,PhD,Yes,No,No,73.6,82.2,B +234,Female,3.8,96.5,8.5,Bachelors,Yes,Yes,No,90.0,100.0,A +235,Female,2.3,86.1,7.6,Masters,Yes,Yes,No,44.5,80.2,B +236,Female,4.2,70.6,7.7,Bachelors,Yes,No,No,75.0,85.7,B +237,Female,6.3,94.2,6.9,Masters,Yes,Yes,No,95.6,100.0,A +238,Female,5.5,78.3,8.5,None,Yes,No,No,73.4,84.4,B +239,Male,5.9,100.0,7.3,Bachelors,Yes,Yes,No,89.8,100.0,A +240,Female,2.7,95.8,5.8,High School,Yes,No,Yes,62.4,84.6,B +241,Female,2.0,80.5,8.5,High School,Yes,No,Yes,69.6,80.6,B +242,Male,3.3,97.8,7.6,High School,Yes,No,Yes,70.4,85.1,B +243,Female,3.6,85.7,6.3,High School,Yes,No,Yes,43.4,69.4,D +244,Male,5.1,93.5,6.2,High School,Yes,Yes,No,56.0,92.2,A +245,Male,1.0,89.8,7.2,Bachelors,Yes,Yes,No,56.8,76.2,C +246,Female,5.8,76.5,7.4,Bachelors,Yes,Yes,No,79.9,100.0,A +247,Male,3.3,78.6,7.0,Bachelors,Yes,No,No,80.5,92.2,A +248,Male,2.9,95.3,7.2,Bachelors,No,No,No,73.9,76.5,C +249,Male,2.0,81.7,8.8,High School,Yes,Yes,No,79.9,82.7,B +250,Male,1.0,81.0,8.1,High School,Yes,No,No,68.0,67.1,D +251,Female,4.7,75.4,7.0,High School,Yes,Yes,Yes,84.4,88.4,B +252,Male,3.6,89.2,7.9,Bachelors,Yes,No,Yes,70.1,91.0,A +253,Female,1.6,100.0,5.6,High School,No,No,No,70.7,75.8,C +254,Male,1.6,74.3,7.3,High School,Yes,Yes,No,66.8,88.3,B +255,Male,3.0,85.2,9.0,Bachelors,Yes,Yes,Yes,78.2,87.6,B +256,Male,6.0,99.1,6.5,Masters,Yes,Yes,Yes,64.9,96.8,A +257,Male,3.1,84.2,5.8,High School,Yes,No,No,81.7,86.7,B +258,Female,1.2,89.5,6.0,Bachelors,Yes,Yes,Yes,56.4,63.7,D +259,Female,3.1,74.4,5.5,Masters,Yes,Yes,No,56.8,73.0,C +260,Male,3.1,89.3,5.9,Masters,Yes,Yes,No,78.2,94.3,A +261,Male,0.5,83.1,6.4,None,Yes,Yes,No,68.9,71.3,C +262,Female,3.4,94.9,5.1,High School,Yes,Yes,No,64.6,79.7,C +263,Male,3.2,96.9,6.8,High School,No,No,No,80.7,81.2,B +264,Male,4.5,100.0,7.9,PhD,Yes,Yes,No,62.7,91.1,A +265,Male,6.3,90.8,5.7,Bachelors,Yes,No,No,67.6,97.5,A +266,Female,5.2,88.3,8.6,Bachelors,Yes,No,No,86.8,100.0,A +267,Female,3.1,86.9,7.4,Masters,Yes,Yes,Yes,88.5,81.6,B +268,Female,1.8,81.5,8.0,Masters,Yes,Yes,No,88.9,83.9,B +269,Male,7.4,88.4,6.0,None,Yes,No,No,66.6,100.0,A +270,Male,3.6,82.0,7.8,None,Yes,No,No,84.8,80.2,B +271,Female,3.5,86.7,5.5,Masters,Yes,Yes,No,58.6,75.1,C +272,Female,3.5,98.2,7.9,High School,No,Yes,No,59.1,78.2,C +273,Female,3.8,74.9,7.0,PhD,Yes,Yes,Yes,41.8,64.7,D +274,Female,3.3,96.4,7.5,High School,Yes,No,No,90.1,97.8,A +275,Male,2.6,98.2,5.4,High School,No,Yes,No,59.6,74.4,C +276,Female,2.7,83.8,5.7,PhD,Yes,Yes,No,68.5,76.4,C +277,Male,3.5,63.8,7.5,High School,Yes,No,No,59.1,76.3,C +278,Female,2.7,78.9,5.7,High School,Yes,No,Yes,78.3,88.3,B +279,Male,2.4,98.0,7.4,High School,Yes,Yes,No,65.5,94.0,A +280,Female,3.7,84.8,5.2,PhD,No,Yes,Yes,54.3,58.8,F +281,Female,3.1,75.0,7.8,Bachelors,No,No,No,75.3,81.1,B +282,Female,5.8,80.0,5.3,Masters,Yes,Yes,No,52.8,84.5,B +283,Female,0.5,93.4,7.5,High School,Yes,Yes,Yes,60.0,69.9,D +284,Male,5.1,90.5,7.6,Masters,Yes,No,No,44.7,82.2,B +285,Female,5.4,82.6,6.0,Masters,Yes,Yes,Yes,52.9,83.3,B +286,Male,0.5,81.3,7.5,High School,Yes,No,Yes,72.1,69.5,D +287,Male,3.0,81.1,7.1,Bachelors,Yes,No,No,46.4,68.5,D +288,Male,2.9,75.8,6.2,High School,No,Yes,No,52.2,61.5,D +289,Male,1.4,100.0,5.6,None,No,Yes,No,70.0,72.3,C +290,Female,2.3,81.8,4.4,Bachelors,Yes,No,No,63.5,74.1,C +291,Male,1.8,97.2,7.2,None,Yes,No,No,93.9,94.9,A +292,Male,6.1,100.0,4.9,High School,Yes,No,No,92.0,100.0,A +293,Male,4.9,95.0,6.9,Masters,Yes,No,Yes,59.6,84.5,B +294,Female,5.4,80.7,6.5,Masters,Yes,Yes,Yes,76.7,93.7,A +295,Female,4.6,89.0,7.6,Masters,Yes,No,No,79.0,100.0,A +296,Female,1.8,84.8,6.4,None,Yes,Yes,No,62.8,81.6,B +297,Female,2.7,76.0,6.4,Bachelors,Yes,Yes,No,52.1,70.9,C +298,Male,4.2,88.2,7.7,High School,Yes,Yes,No,69.9,89.6,B +299,Male,1.7,73.2,7.2,Masters,No,Yes,No,67.9,69.2,D +300,Female,4.6,96.9,7.2,Masters,Yes,No,Yes,64.8,82.3,B +301,Male,3.1,80.4,7.4,Bachelors,Yes,Yes,Yes,75.3,80.9,B +302,Male,2.9,87.0,5.0,High School,Yes,Yes,No,61.0,82.4,B +303,Male,4.6,87.8,7.7,Bachelors,Yes,Yes,No,56.2,91.0,A +304,Female,4.2,82.4,7.5,High School,No,No,No,71.3,81.6,B +305,Female,3.0,90.9,5.6,Bachelors,Yes,No,Yes,74.6,83.2,B +306,Male,5.2,80.3,6.5,Bachelors,Yes,Yes,No,55.9,80.7,B +307,Female,1.9,93.7,6.8,Masters,Yes,Yes,Yes,81.1,87.2,B +308,Female,4.4,71.5,6.6,High School,Yes,Yes,Yes,48.8,72.8,C +309,Female,4.4,86.3,7.2,Bachelors,Yes,No,No,63.1,85.2,B +310,Female,3.0,100.0,8.5,High School,Yes,No,Yes,66.9,83.3,B +311,Female,4.0,75.0,8.1,High School,Yes,Yes,No,62.4,82.6,B +312,Male,1.6,78.2,5.2,Masters,Yes,No,Yes,63.2,63.4,D +313,Female,4.9,90.1,7.5,None,Yes,Yes,No,92.5,100.0,A +314,Male,3.2,86.8,8.4,Bachelors,Yes,No,No,59.8,79.4,C +315,Male,2.7,88.5,7.3,Masters,Yes,Yes,No,99.3,100.0,A +316,Female,5.1,89.9,8.1,PhD,Yes,Yes,No,75.2,100.0,A +317,Male,2.4,91.3,9.2,Masters,No,Yes,Yes,71.1,72.9,C +318,Male,1.4,96.1,8.0,High School,No,Yes,No,75.7,79.2,C +319,Male,1.2,89.1,7.1,None,Yes,No,No,100.0,84.2,B +320,Female,4.4,82.6,8.1,Bachelors,Yes,Yes,Yes,58.1,80.7,B +321,Female,1.6,91.7,7.0,High School,Yes,No,No,56.6,85.3,B +322,Male,6.1,100.0,6.8,High School,Yes,No,Yes,60.9,93.1,A +323,Female,0.5,83.7,6.4,Bachelors,Yes,Yes,No,70.4,73.5,C +324,Female,6.0,75.3,8.7,High School,Yes,Yes,No,49.3,90.8,A +325,Female,3.8,96.1,5.8,High School,Yes,Yes,Yes,70.3,80.8,B +326,Female,3.4,83.8,8.6,High School,Yes,No,No,90.3,88.9,B +327,Male,2.7,63.3,7.4,Masters,No,Yes,No,71.8,63.7,D +328,Male,4.1,93.5,5.1,PhD,Yes,Yes,No,66.5,82.6,B +329,Female,3.4,79.6,7.2,High School,Yes,Yes,No,62.6,63.7,D +330,Female,5.2,84.1,4.3,PhD,Yes,No,No,80.8,96.6,A +331,Male,3.7,88.3,7.6,PhD,Yes,Yes,No,60.1,97.0,A +332,Male,3.7,86.9,7.9,Masters,No,Yes,No,92.2,93.3,A +333,Female,3.0,92.1,6.1,High School,Yes,Yes,Yes,93.2,82.8,B +334,Male,3.4,80.6,6.9,Masters,Yes,Yes,No,73.1,81.2,B +335,Female,4.0,90.1,9.1,None,Yes,No,No,69.9,88.7,B +336,Female,0.9,82.4,6.2,Masters,Yes,Yes,No,82.4,71.2,C +337,Male,1.5,92.4,5.5,High School,Yes,No,No,83.1,87.1,B +338,Male,4.6,91.2,8.6,Bachelors,Yes,No,No,60.3,94.9,A +339,Female,3.8,75.6,9.2,Bachelors,Yes,No,No,63.7,76.1,C +340,Female,3.2,95.9,6.8,Bachelors,Yes,No,No,54.1,85.1,B +341,Male,3.5,79.6,8.0,High School,Yes,Yes,No,74.9,96.3,A +342,Female,4.0,93.1,8.4,High School,Yes,Yes,No,78.0,100.0,A +343,Male,2.7,88.7,5.9,Masters,Yes,No,No,53.8,92.0,A +344,Female,2.3,100.0,6.2,PhD,Yes,Yes,No,64.5,77.2,C +345,Male,3.8,82.8,8.3,High School,Yes,No,No,53.8,97.5,A +346,Male,2.0,81.5,8.8,None,Yes,Yes,Yes,59.2,70.6,C +347,Male,4.1,84.8,7.5,High School,Yes,No,No,76.6,87.2,B +348,Female,0.9,82.0,5.7,Masters,Yes,No,No,61.2,69.0,D +349,Female,5.0,93.0,9.2,Masters,Yes,Yes,Yes,66.4,90.2,A +350,Male,4.2,68.8,6.2,Masters,Yes,Yes,Yes,50.5,74.0,C +351,Female,3.9,74.5,6.4,None,Yes,No,No,72.2,75.3,C +352,Male,5.0,74.3,7.2,High School,Yes,No,No,69.5,86.5,B +353,Male,6.0,94.5,8.7,PhD,Yes,Yes,No,61.3,100.0,A +354,Female,5.0,100.0,7.8,High School,Yes,No,Yes,67.7,93.6,A +355,Female,0.7,84.0,7.3,Masters,Yes,Yes,Yes,72.2,72.0,C +356,Male,1.6,83.3,7.4,Masters,Yes,Yes,No,60.2,76.2,C +357,Female,2.6,85.7,6.9,Masters,Yes,No,No,52.3,80.9,B +358,Female,3.5,96.6,7.5,High School,Yes,No,Yes,91.7,85.3,B +359,Male,4.3,75.7,3.8,PhD,Yes,No,No,62.4,81.9,B +360,Male,2.4,87.4,6.4,High School,Yes,No,No,68.8,78.0,C +361,Female,3.8,94.8,7.1,High School,Yes,Yes,Yes,82.1,93.6,A +362,Male,2.4,90.0,5.4,Masters,Yes,No,Yes,100.0,95.1,A +363,Male,2.6,86.9,7.3,Bachelors,Yes,Yes,Yes,55.1,66.7,D +364,Female,1.4,95.0,6.6,Masters,Yes,Yes,No,75.4,75.6,C +365,Male,2.1,58.0,8.9,Bachelors,Yes,Yes,No,61.5,57.4,F +366,Male,1.5,91.8,8.7,High School,Yes,Yes,No,63.5,75.4,C +367,Female,2.0,78.5,6.2,Masters,Yes,Yes,No,61.4,80.5,B +368,Female,5.1,66.7,6.6,Bachelors,No,Yes,No,56.5,75.1,C +369,Male,2.1,90.1,6.7,High School,No,Yes,No,69.5,67.8,D +370,Male,7.4,98.7,6.3,Masters,Yes,Yes,No,52.3,97.4,A +371,Female,4.2,83.6,7.0,Bachelors,Yes,No,Yes,81.4,80.2,B +372,Female,3.8,94.5,5.9,Bachelors,Yes,Yes,No,70.7,82.8,B +373,Female,2.2,100.0,5.4,Bachelors,Yes,Yes,No,75.1,87.8,B +374,Female,4.6,98.1,7.5,Masters,Yes,No,No,64.4,85.8,B +375,Male,2.6,100.0,7.6,Masters,Yes,No,No,65.6,91.7,A +376,Female,3.7,92.4,5.8,Masters,Yes,No,Yes,73.5,84.9,B +377,Female,7.3,85.8,7.9,High School,Yes,Yes,No,56.0,99.3,A +378,Male,3.4,69.0,6.0,Masters,Yes,No,No,65.7,74.3,C +379,Female,5.2,82.5,7.1,Masters,Yes,Yes,No,59.7,93.3,A +380,Male,2.4,76.6,7.8,Masters,Yes,Yes,No,59.3,79.4,C +381,Female,3.4,100.0,6.8,Bachelors,No,Yes,No,44.7,77.4,C +382,Female,6.2,83.2,7.3,PhD,Yes,No,No,86.1,100.0,A +383,Female,2.6,86.2,6.2,Masters,Yes,Yes,No,61.8,76.8,C +384,Male,6.2,90.5,6.6,High School,Yes,Yes,No,84.0,100.0,A +385,Male,4.6,85.4,6.6,Bachelors,No,Yes,No,82.8,88.6,B +386,Female,2.7,100.0,5.9,PhD,Yes,No,No,54.6,79.1,C +387,Male,4.4,78.8,6.6,High School,Yes,No,No,56.9,79.4,C +388,Male,5.0,86.9,4.9,None,Yes,Yes,No,100.0,100.0,A +389,Male,4.4,77.6,6.2,Masters,Yes,No,Yes,91.0,86.7,B +390,Male,1.1,71.8,6.5,Bachelors,Yes,Yes,Yes,69.6,69.5,D +391,Male,2.4,78.9,6.5,High School,Yes,No,No,73.1,86.3,B +392,Male,3.1,84.6,6.5,High School,Yes,Yes,No,62.4,87.3,B +393,Female,3.4,80.7,6.7,None,No,No,No,75.2,72.1,C +394,Female,4.4,78.1,7.4,High School,Yes,Yes,No,61.4,92.3,A +395,Male,3.8,70.9,7.8,Masters,Yes,No,Yes,45.6,67.6,D +396,Female,1.5,84.2,6.0,Bachelors,Yes,Yes,No,54.1,72.7,C +397,Female,4.1,70.0,5.4,High School,Yes,Yes,No,70.3,76.1,C +398,Female,4.4,92.6,5.5,High School,No,Yes,No,56.4,81.2,B +399,Female,4.3,85.8,6.2,Bachelors,Yes,Yes,No,69.2,90.4,A +400,Male,5.1,70.4,6.4,None,Yes,Yes,No,57.1,73.2,C +401,Female,4.8,81.9,5.9,Bachelors,Yes,No,Yes,60.6,85.2,B +402,Female,4.2,77.5,5.2,Bachelors,Yes,Yes,No,80.2,96.4,A +403,Male,3.4,88.2,6.3,High School,Yes,No,Yes,73.0,81.9,B +404,Male,1.0,98.4,7.0,Bachelors,Yes,No,No,69.9,86.5,B +405,Female,4.1,66.2,7.5,Bachelors,Yes,No,No,80.5,84.7,B +406,Female,3.8,86.2,6.1,PhD,Yes,No,No,75.8,93.0,A +407,Female,3.9,83.4,6.3,Bachelors,Yes,No,No,87.4,78.9,C +408,Female,1.6,91.7,5.7,Bachelors,Yes,Yes,No,64.5,90.4,A +409,Female,1.9,87.1,6.8,High School,No,No,No,64.8,80.1,B +410,Female,5.1,77.5,5.8,None,Yes,Yes,Yes,54.4,78.1,C +411,Male,3.4,81.8,7.5,High School,Yes,No,No,64.9,70.1,C +412,Female,4.5,77.0,4.7,High School,Yes,No,No,81.6,90.2,A +413,Female,3.5,95.8,6.4,Masters,Yes,Yes,No,85.6,86.5,B +414,Male,3.5,85.2,7.2,Bachelors,Yes,Yes,No,81.5,93.5,A +415,Male,4.9,100.0,7.0,Bachelors,No,Yes,Yes,48.5,83.3,B +416,Male,2.7,84.4,10.0,Bachelors,Yes,No,Yes,83.0,81.2,B +417,Male,3.6,77.9,7.2,Masters,No,No,No,47.9,76.0,C +418,Female,2.8,69.9,5.6,High School,Yes,Yes,No,80.8,84.9,B +419,Female,2.8,67.0,6.7,Masters,Yes,No,No,65.6,79.2,C +420,Female,3.0,69.2,4.7,Bachelors,No,No,No,78.4,72.8,C +421,Female,3.8,87.7,6.7,Bachelors,Yes,Yes,Yes,54.0,69.9,D +422,Female,2.8,90.1,5.8,Bachelors,No,Yes,No,84.1,89.6,B +423,Female,5.4,69.2,7.9,High School,Yes,No,Yes,52.4,77.3,C +424,Male,2.2,94.0,6.1,Masters,No,No,No,62.0,64.6,D +425,Female,3.2,80.2,6.7,Bachelors,Yes,No,Yes,58.0,81.8,B +426,Male,2.8,86.5,6.0,High School,Yes,Yes,No,48.9,86.2,B +427,Male,5.7,100.0,8.9,Bachelors,Yes,Yes,Yes,71.1,100.0,A +428,Female,3.8,94.0,6.4,None,Yes,Yes,No,91.7,100.0,A +429,Male,5.0,82.3,9.0,Bachelors,Yes,Yes,No,100.0,100.0,A +430,Female,1.3,76.1,7.8,None,Yes,Yes,No,71.2,72.0,C +431,Male,3.9,63.5,7.4,High School,Yes,No,No,83.4,81.2,B +432,Female,4.8,77.8,7.2,High School,Yes,Yes,No,72.8,100.0,A +433,Male,3.6,82.9,7.3,High School,Yes,No,Yes,76.0,79.7,C +434,Female,5.1,75.1,4.5,Bachelors,Yes,Yes,No,65.9,89.4,B +435,Female,2.7,83.7,6.5,High School,Yes,No,No,72.3,77.8,C +436,Female,5.6,85.8,7.8,High School,Yes,Yes,Yes,76.4,93.4,A +437,Female,6.9,82.8,6.7,None,Yes,Yes,Yes,63.1,100.0,A +438,Female,3.0,78.5,5.1,Masters,Yes,Yes,No,69.1,76.5,C +439,Male,2.8,86.7,6.7,Masters,Yes,No,No,69.3,79.3,C +440,Male,5.7,89.4,8.8,High School,No,No,No,79.9,100.0,A +441,Male,5.9,74.1,8.3,High School,Yes,Yes,No,57.2,98.9,A +442,Female,2.7,99.1,6.7,High School,Yes,Yes,Yes,69.4,87.5,B +443,Male,2.9,84.0,7.9,Masters,Yes,No,Yes,92.9,85.2,B +444,Female,3.1,85.2,6.4,None,Yes,Yes,No,84.0,86.0,B +445,Female,1.5,92.1,4.8,Bachelors,Yes,Yes,Yes,86.2,80.7,B +446,Male,2.1,87.3,5.7,High School,Yes,No,No,70.3,79.9,C +447,Male,2.0,94.5,8.7,Bachelors,Yes,No,No,73.9,79.1,C +448,Female,2.3,87.9,6.5,High School,Yes,Yes,Yes,82.0,87.1,B +449,Male,3.4,78.9,6.5,Bachelors,Yes,Yes,No,88.7,90.7,A +450,Female,3.9,88.6,6.4,Bachelors,Yes,No,Yes,46.6,64.6,D +451,Female,5.8,73.6,9.1,Masters,No,Yes,No,54.2,77.9,C +452,Female,2.0,86.1,8.8,High School,Yes,Yes,Yes,85.7,82.0,B +453,Female,5.0,84.7,9.5,High School,Yes,No,No,66.7,92.8,A +454,Female,3.2,82.9,6.6,None,No,No,No,61.9,85.4,B +455,Male,3.4,83.7,7.2,High School,Yes,Yes,No,55.0,80.7,B +456,Male,4.5,66.2,5.0,High School,Yes,No,No,63.3,72.7,C +457,Female,1.8,79.5,8.6,High School,Yes,No,Yes,53.2,68.8,D +458,Female,4.1,85.9,5.4,High School,No,Yes,No,95.1,89.9,B +459,Male,3.7,86.6,7.1,Bachelors,No,No,No,69.7,83.3,B +460,Male,4.2,74.7,5.5,Masters,Yes,Yes,No,69.3,86.8,B +461,Female,3.9,97.7,6.1,High School,Yes,Yes,Yes,77.1,98.2,A +462,Male,7.2,76.3,5.8,Bachelors,Yes,No,No,81.5,100.0,A +463,Female,2.5,94.7,6.1,Masters,Yes,Yes,Yes,81.4,95.1,A +464,Male,2.7,89.3,6.2,Bachelors,Yes,Yes,No,82.9,93.5,A +465,Female,2.6,78.5,6.1,PhD,No,Yes,Yes,62.4,63.2,D +466,Male,2.7,100.0,7.8,PhD,Yes,Yes,No,66.4,100.0,A +467,Female,2.5,73.1,5.5,High School,Yes,No,Yes,79.2,77.1,C +468,Male,5.3,94.2,7.1,Masters,Yes,No,No,63.7,88.8,B +469,Male,5.6,95.0,8.3,Bachelors,Yes,No,No,69.9,100.0,A +470,Female,2.6,78.3,6.2,None,Yes,Yes,Yes,74.8,89.9,B +471,Male,2.3,98.9,5.9,Bachelors,Yes,Yes,No,79.4,87.6,B +472,Female,4.2,82.5,6.5,None,No,Yes,Yes,48.7,68.0,D +473,Male,2.7,87.9,8.2,Masters,No,Yes,No,78.6,82.2,B +474,Female,4.4,87.6,7.0,High School,Yes,Yes,No,67.2,94.0,A +475,Male,3.8,83.7,6.2,Bachelors,No,No,No,78.5,90.9,A +476,Female,1.2,93.1,7.4,None,Yes,No,No,79.3,85.0,B +477,Male,5.8,92.9,5.5,PhD,Yes,No,Yes,89.3,100.0,A +478,Female,6.2,67.5,7.6,High School,Yes,Yes,No,86.2,100.0,A +479,Male,2.6,98.0,7.3,Masters,Yes,No,Yes,86.2,87.4,B +480,Female,2.9,68.4,6.4,High School,No,Yes,No,87.3,84.8,B +481,Female,3.9,95.3,5.8,High School,Yes,Yes,No,73.5,89.5,B +482,Female,4.0,96.3,5.7,Bachelors,Yes,No,No,70.4,92.3,A +483,Male,4.5,74.1,7.4,High School,Yes,No,Yes,80.5,86.6,B +484,Female,6.5,80.9,8.3,Masters,Yes,Yes,No,78.8,100.0,A +485,Male,3.2,73.9,6.0,High School,Yes,Yes,No,66.3,75.7,C +486,Female,2.3,82.9,7.4,Masters,Yes,Yes,Yes,74.9,87.3,B +487,Male,1.4,81.9,4.3,High School,Yes,No,No,69.6,66.6,D +488,Female,2.4,92.8,6.1,High School,Yes,Yes,No,59.8,74.1,C +489,Male,3.5,98.1,6.8,High School,Yes,No,No,85.5,100.0,A +490,Male,6.2,99.0,5.7,High School,Yes,Yes,No,70.7,100.0,A +491,Female,2.7,79.4,5.7,High School,Yes,Yes,No,94.6,74.3,C +492,Male,3.8,82.9,6.0,High School,Yes,Yes,Yes,50.5,71.1,C +493,Male,3.5,68.2,7.2,Bachelors,Yes,Yes,No,63.3,66.7,D +494,Female,5.3,76.9,6.6,High School,Yes,Yes,Yes,70.4,82.1,B +495,Male,7.3,94.6,4.1,Bachelors,Yes,No,No,83.6,88.5,B +496,Male,2.7,100.0,4.3,Bachelors,No,No,No,74.8,79.4,C +497,Male,2.8,72.7,6.1,PhD,Yes,No,No,73.7,71.0,C +498,Female,5.1,79.1,7.3,None,Yes,No,No,56.5,85.4,B +499,Male,4.5,84.7,3.5,Bachelors,No,No,Yes,56.1,61.8,D +500,Female,6.3,87.8,6.2,High School,Yes,No,No,73.9,99.6,A +501,Male,4.4,76.9,6.2,High School,Yes,No,No,53.6,76.1,C +502,Male,3.0,89.2,8.5,None,Yes,Yes,Yes,63.6,90.4,A +503,Male,4.4,80.3,6.3,High School,No,Yes,No,76.0,93.3,A +504,Female,5.2,84.9,7.3,High School,No,Yes,No,58.2,88.9,B +505,Male,4.7,90.5,7.0,High School,Yes,Yes,No,89.3,99.0,A +506,Male,4.3,85.1,4.2,High School,Yes,Yes,Yes,84.7,100.0,A +507,Female,5.1,80.6,7.7,High School,Yes,No,No,51.1,74.5,C +508,Male,5.3,83.9,7.1,Masters,No,Yes,Yes,58.8,72.8,C +509,Female,5.6,84.1,7.4,High School,No,Yes,Yes,42.6,76.1,C +510,Female,4.5,81.3,10.0,Bachelors,Yes,Yes,Yes,60.6,99.5,A +511,Male,3.2,82.4,4.3,High School,Yes,Yes,Yes,79.2,79.9,C +512,Female,3.7,100.0,8.9,High School,Yes,Yes,Yes,65.0,88.2,B +513,Male,5.3,90.6,6.5,None,Yes,Yes,No,75.5,88.9,B +514,Female,2.3,82.0,7.1,High School,Yes,Yes,No,51.7,77.9,C +515,Female,4.1,92.0,6.7,Masters,Yes,Yes,Yes,79.6,97.2,A +516,Male,2.9,81.7,6.3,Bachelors,Yes,No,Yes,63.3,79.3,C +517,Female,3.5,96.7,6.1,High School,Yes,No,No,70.1,84.2,B +518,Female,5.4,88.7,7.2,None,No,Yes,No,68.9,86.3,B +519,Female,3.8,83.9,5.0,High School,Yes,Yes,Yes,54.7,67.6,D +520,Female,3.6,89.5,7.7,PhD,Yes,Yes,Yes,56.2,80.7,B +521,Female,1.5,69.3,6.3,High School,Yes,No,Yes,81.6,64.7,D +522,Male,4.6,73.7,5.4,PhD,No,Yes,Yes,74.8,71.8,C +523,Female,4.5,73.1,6.3,High School,Yes,Yes,Yes,82.6,84.9,B +524,Male,6.7,86.4,8.3,Bachelors,Yes,No,No,73.9,100.0,A +525,Female,3.0,100.0,6.2,Masters,Yes,Yes,Yes,71.7,82.4,B +526,Male,3.8,100.0,7.2,None,Yes,Yes,No,49.3,87.3,B +527,Male,3.9,91.4,5.9,None,Yes,Yes,Yes,66.8,84.8,B +528,Female,5.9,90.0,7.7,Masters,Yes,No,No,69.7,96.4,A +529,Female,3.4,67.0,7.6,PhD,No,No,No,93.4,84.3,B +530,Female,3.9,79.6,9.0,High School,Yes,No,No,78.2,84.5,B +531,Male,4.4,77.1,6.6,High School,Yes,Yes,No,88.4,94.7,A +532,Female,3.8,78.8,7.6,High School,Yes,Yes,No,77.2,89.6,B +533,Male,2.8,83.3,6.9,Bachelors,Yes,No,No,61.5,68.6,D +534,Male,3.8,80.3,8.4,Bachelors,Yes,No,No,71.4,92.8,A +535,Male,5.1,65.2,5.9,Bachelors,Yes,Yes,No,72.8,80.7,B +536,Female,2.0,92.5,7.7,High School,Yes,No,No,58.7,77.6,C +537,Female,3.7,74.3,6.6,Masters,Yes,Yes,No,65.4,87.7,B +538,Male,2.4,87.4,6.7,High School,Yes,Yes,No,67.5,86.0,B +539,Male,5.3,100.0,6.9,High School,Yes,No,No,89.3,100.0,A +540,Female,1.2,75.8,7.1,Bachelors,Yes,Yes,Yes,45.0,57.3,F +541,Male,2.7,59.7,6.7,Masters,No,No,Yes,84.5,75.6,C +542,Female,4.1,82.1,7.1,Masters,Yes,Yes,No,58.8,87.3,B +543,Male,5.8,96.0,8.7,Bachelors,Yes,Yes,Yes,53.5,88.8,B +544,Female,3.4,100.0,8.0,High School,Yes,No,No,84.2,91.8,A +545,Male,2.7,72.7,7.8,Bachelors,Yes,No,Yes,78.8,66.0,D +546,Female,6.3,90.0,6.3,High School,Yes,Yes,No,85.1,100.0,A +547,Male,1.3,80.3,5.7,Bachelors,No,Yes,No,79.6,71.1,C +548,Female,0.5,83.9,7.9,Bachelors,Yes,No,No,94.7,88.8,B +549,Female,4.2,100.0,7.9,High School,Yes,Yes,No,76.7,100.0,A +550,Male,2.7,70.0,8.6,High School,Yes,No,No,68.1,85.2,B +551,Male,2.0,87.5,6.1,None,Yes,No,No,74.1,75.4,C +552,Female,4.6,89.7,6.5,None,Yes,Yes,No,84.9,100.0,A +553,Male,3.9,95.9,4.8,Bachelors,Yes,Yes,Yes,60.6,78.9,C +554,Female,2.7,86.0,6.3,High School,Yes,Yes,No,62.2,83.4,B +555,Male,1.6,88.1,8.0,High School,No,No,No,66.3,63.4,D +556,Female,4.8,81.1,6.2,Bachelors,Yes,Yes,No,44.7,80.7,B +557,Female,4.5,87.7,7.6,None,Yes,Yes,No,71.7,80.8,B +558,Female,3.4,81.6,6.6,High School,Yes,Yes,No,47.4,73.1,C +559,Female,6.3,91.2,7.2,Masters,Yes,No,Yes,70.6,99.8,A +560,Female,1.9,81.3,5.4,High School,Yes,Yes,Yes,80.4,73.5,C +561,Female,1.2,88.8,6.9,None,Yes,Yes,No,64.3,68.2,D +562,Male,2.5,84.7,3.2,Bachelors,No,No,No,90.1,83.9,B +563,Male,3.4,96.3,6.6,Masters,No,No,No,52.5,75.3,C +564,Male,3.9,84.5,4.8,High School,No,No,Yes,84.3,78.7,C +565,Female,3.1,67.3,8.2,Bachelors,Yes,Yes,No,78.1,82.8,B +566,Female,4.0,97.6,7.7,High School,Yes,Yes,No,49.4,100.0,A +567,Female,1.6,75.9,7.4,High School,Yes,No,No,100.0,92.6,A +568,Female,5.7,78.5,8.6,None,Yes,Yes,Yes,69.2,99.1,A +569,Male,3.4,79.0,5.7,None,Yes,No,Yes,59.5,76.2,C +570,Male,5.2,98.7,8.9,PhD,Yes,No,Yes,53.1,90.9,A +571,Female,4.0,63.6,7.9,Bachelors,Yes,Yes,Yes,67.4,63.3,D +572,Male,4.2,100.0,6.5,Masters,Yes,No,Yes,68.5,85.0,B +573,Male,4.4,95.6,8.2,High School,Yes,No,Yes,71.2,88.7,B +574,Female,4.2,87.2,5.5,High School,Yes,Yes,No,66.4,75.3,C +575,Male,4.5,84.5,5.8,High School,Yes,Yes,No,77.6,84.9,B +576,Female,5.5,87.9,6.1,Bachelors,Yes,Yes,No,65.3,81.1,B +577,Male,3.8,90.2,6.2,Bachelors,Yes,Yes,Yes,46.8,75.6,C +578,Female,4.6,91.5,5.5,High School,Yes,Yes,No,68.2,95.5,A +579,Female,3.4,90.6,8.3,Bachelors,Yes,No,No,41.6,83.3,B +580,Female,5.7,85.9,6.5,Masters,Yes,No,Yes,74.2,95.7,A +581,Female,2.5,83.0,7.2,Bachelors,Yes,Yes,No,58.2,70.4,C +582,Male,6.2,83.5,6.1,High School,Yes,Yes,Yes,72.0,82.7,B +583,Female,3.4,83.1,4.6,High School,Yes,No,No,85.8,76.7,C +584,Female,1.4,96.3,7.1,High School,Yes,Yes,No,58.6,68.4,D +585,Female,3.7,90.9,4.5,High School,Yes,No,No,82.7,84.6,B +586,Male,2.5,55.6,6.7,Bachelors,Yes,Yes,No,64.8,67.7,D +587,Female,4.8,91.6,5.2,Bachelors,No,Yes,No,91.0,89.2,B +588,Male,2.5,86.9,9.2,Masters,Yes,Yes,No,65.6,85.0,B +589,Female,2.8,84.8,7.9,Bachelors,Yes,No,No,59.9,77.3,C +590,Male,0.7,81.1,6.9,Masters,Yes,Yes,Yes,78.2,72.2,C +591,Male,2.8,96.2,8.3,High School,Yes,No,Yes,64.8,89.0,B +592,Female,0.5,94.5,5.8,Bachelors,Yes,Yes,No,59.9,63.2,D +593,Male,1.1,77.3,7.5,Masters,Yes,Yes,No,64.3,73.2,C +594,Female,4.6,89.1,7.0,High School,No,Yes,No,69.5,87.0,B +595,Female,4.7,75.3,7.1,High School,Yes,No,Yes,86.1,88.5,B +596,Female,4.1,71.2,8.3,PhD,Yes,No,No,46.8,80.4,B +597,Male,2.0,78.7,7.7,High School,Yes,Yes,Yes,70.3,80.2,B +598,Male,3.4,93.6,7.1,Masters,No,Yes,No,77.5,80.9,B +599,Female,3.5,94.5,4.8,High School,Yes,Yes,No,72.3,86.4,B +600,Female,1.8,90.1,5.6,Masters,Yes,Yes,No,85.7,86.3,B +601,Male,5.8,92.3,6.7,High School,Yes,Yes,Yes,69.1,93.4,A +602,Female,4.8,90.2,6.9,High School,Yes,No,No,67.8,95.1,A +603,Female,3.2,78.6,5.4,Bachelors,Yes,No,No,77.1,83.9,B +604,Female,3.5,89.3,9.7,High School,Yes,Yes,No,71.2,100.0,A +605,Male,3.8,93.0,8.6,Bachelors,Yes,Yes,No,65.3,80.9,B +606,Male,0.5,92.5,7.5,High School,Yes,No,No,76.2,76.4,C +607,Male,3.1,96.9,6.9,High School,No,No,No,62.2,73.6,C +608,Female,2.5,92.1,6.5,High School,Yes,Yes,No,62.7,84.0,B +609,Female,2.0,88.5,5.7,High School,No,Yes,Yes,63.7,58.6,F +610,Female,3.1,95.7,6.9,None,Yes,Yes,No,86.2,96.3,A +611,Male,6.2,84.7,7.1,High School,Yes,Yes,No,31.3,78.8,C +612,Female,4.5,76.2,5.3,Bachelors,Yes,Yes,Yes,74.7,79.8,C +613,Female,2.6,83.4,7.2,High School,Yes,Yes,Yes,70.4,70.0,C +614,Female,4.4,77.6,6.6,High School,Yes,No,No,49.8,75.0,C +615,Female,5.6,78.2,4.5,None,Yes,Yes,Yes,73.7,95.0,A +616,Male,4.9,83.6,5.8,High School,Yes,Yes,No,75.7,92.4,A +617,Male,3.6,77.1,6.3,None,Yes,Yes,Yes,77.1,86.4,B +618,Female,2.5,81.9,9.1,High School,Yes,No,No,38.2,79.1,C +619,Male,4.5,66.1,7.5,Masters,Yes,No,No,86.4,91.5,A +620,Male,4.1,87.1,5.2,Bachelors,Yes,Yes,No,61.1,80.3,B +621,Female,4.8,85.0,7.4,PhD,Yes,Yes,No,78.2,98.3,A +622,Female,4.5,76.8,4.9,Bachelors,No,No,No,78.9,79.3,C +623,Male,5.1,91.6,8.1,Bachelors,Yes,Yes,No,59.5,89.5,B +624,Female,2.7,94.4,6.2,High School,Yes,Yes,Yes,77.9,75.7,C +625,Male,5.5,68.9,6.7,High School,Yes,Yes,Yes,65.4,89.6,B +626,Female,3.8,77.4,8.4,None,Yes,Yes,Yes,45.1,71.0,C +627,Male,6.6,77.3,5.3,High School,No,Yes,No,84.0,96.8,A +628,Female,2.5,75.6,5.1,Bachelors,Yes,No,Yes,60.7,61.9,D +629,Male,6.1,93.3,6.1,Masters,Yes,No,Yes,59.7,93.9,A +630,Male,3.8,83.1,8.0,High School,Yes,Yes,No,65.2,81.3,B +631,Male,2.5,82.4,5.0,None,Yes,No,No,73.3,77.6,C +632,Female,2.8,65.0,3.4,Masters,No,Yes,No,69.3,71.4,C +633,Male,3.0,91.4,6.3,Bachelors,Yes,Yes,Yes,76.6,89.4,B +634,Male,4.1,72.6,7.5,PhD,Yes,No,Yes,53.9,74.3,C +635,Female,4.3,85.6,8.2,High School,Yes,No,No,61.1,76.0,C +636,Female,2.6,87.8,6.2,High School,Yes,Yes,Yes,68.6,96.3,A +637,Male,3.5,98.6,6.3,Bachelors,Yes,Yes,No,92.8,100.0,A +638,Male,6.7,71.9,8.2,High School,Yes,No,No,68.6,99.9,A +639,Female,6.1,54.8,4.6,Masters,Yes,No,No,83.0,83.8,B +640,Female,4.2,86.8,6.3,None,No,No,Yes,70.5,79.4,C +641,Female,3.6,100.0,7.0,Bachelors,Yes,Yes,No,64.2,86.0,B +642,Female,3.7,97.4,7.3,High School,Yes,Yes,No,67.0,97.9,A +643,Female,4.4,87.1,6.2,None,Yes,Yes,No,68.0,90.5,A +644,Male,2.0,80.1,6.8,Bachelors,No,Yes,No,77.2,70.4,C +645,Female,3.1,93.1,3.8,Bachelors,Yes,No,Yes,86.5,82.9,B +646,Male,1.0,75.3,6.0,Bachelors,Yes,Yes,Yes,74.3,75.5,C +647,Male,4.1,89.8,7.3,None,Yes,Yes,No,84.2,100.0,A +648,Male,4.5,90.1,5.6,Bachelors,Yes,No,No,58.4,94.0,A +649,Female,2.8,95.6,6.9,Masters,Yes,Yes,No,65.0,88.9,B +650,Male,5.9,100.0,7.3,Masters,Yes,Yes,No,61.3,97.3,A +651,Male,1.7,88.9,6.4,High School,Yes,No,No,73.8,59.5,F +652,Female,1.3,79.9,7.0,Bachelors,Yes,No,No,65.7,73.3,C +653,Male,3.8,84.7,5.6,Masters,Yes,No,No,78.8,88.0,B +654,Male,5.1,67.3,6.6,Bachelors,No,Yes,Yes,58.8,74.8,C +655,Female,6.0,78.1,7.5,Masters,No,No,No,70.5,89.9,B +656,Male,2.8,80.9,7.0,None,Yes,No,Yes,78.2,72.6,C +657,Male,5.1,79.8,6.1,Bachelors,Yes,Yes,No,45.2,83.6,B +658,Male,3.4,86.5,7.1,Masters,Yes,Yes,No,95.5,100.0,A +659,Female,3.2,76.8,7.7,Masters,Yes,No,No,66.6,84.3,B +660,Female,4.8,96.2,4.3,Masters,Yes,Yes,Yes,45.7,85.4,B +661,Female,4.5,85.0,8.2,Bachelors,Yes,No,No,71.9,95.2,A +662,Male,1.1,84.9,6.4,High School,Yes,Yes,Yes,70.4,69.0,D +663,Male,5.7,81.7,7.3,Bachelors,Yes,Yes,No,69.0,94.2,A +664,Female,5.6,86.6,8.2,Masters,Yes,Yes,Yes,81.9,99.7,A +665,Male,2.6,93.3,5.2,Bachelors,Yes,No,No,79.0,85.8,B +666,Male,4.1,76.3,5.9,Masters,Yes,Yes,No,73.6,91.7,A +667,Female,4.2,78.4,6.5,Bachelors,Yes,Yes,No,75.4,92.2,A +668,Female,3.9,82.0,5.9,Bachelors,Yes,No,No,68.7,96.3,A +669,Male,2.7,71.5,8.9,High School,Yes,No,Yes,91.3,97.6,A +670,Male,2.5,76.8,5.8,Masters,Yes,No,Yes,52.2,66.4,D +671,Male,3.5,80.2,6.1,Bachelors,Yes,Yes,No,71.7,60.8,D +672,Female,5.3,93.7,7.0,High School,No,Yes,No,70.8,99.8,A +673,Female,4.3,87.6,5.4,High School,Yes,No,Yes,79.8,85.2,B +674,Female,2.9,86.9,6.3,Masters,Yes,No,No,59.9,73.2,C +675,Female,4.7,93.5,7.2,Bachelors,Yes,Yes,No,49.1,83.8,B +676,Male,0.5,83.6,6.4,High School,No,Yes,Yes,71.9,61.3,D +677,Female,5.2,88.9,6.7,None,No,No,Yes,73.4,90.6,A +678,Female,0.9,84.0,6.2,Masters,Yes,Yes,Yes,87.9,67.7,D +679,Female,3.0,87.7,5.0,None,No,No,No,54.8,63.6,D +680,Female,1.8,79.2,7.2,Bachelors,Yes,Yes,No,83.9,84.1,B +681,Female,1.6,60.6,8.9,Bachelors,Yes,Yes,No,98.4,86.2,B +682,Male,5.2,83.7,6.8,PhD,Yes,No,No,65.5,93.9,A +683,Male,2.8,99.2,7.1,Bachelors,Yes,Yes,Yes,54.5,73.9,C +684,Female,4.0,94.3,7.6,Masters,No,Yes,No,65.1,79.3,C +685,Male,3.4,94.7,5.3,High School,Yes,Yes,No,70.2,83.8,B +686,Female,4.2,97.4,8.8,Bachelors,No,Yes,Yes,76.8,91.7,A +687,Female,3.6,85.9,7.0,High School,Yes,No,No,62.9,91.7,A +688,Male,1.6,87.0,8.8,High School,Yes,No,No,88.7,74.4,C +689,Male,5.0,78.8,5.9,High School,Yes,No,No,56.6,81.5,B +690,Female,2.8,81.8,9.0,High School,Yes,Yes,No,49.1,67.7,D +691,Female,1.2,91.2,7.7,None,Yes,Yes,Yes,83.3,71.0,C +692,Female,2.9,97.0,7.5,High School,Yes,Yes,Yes,42.7,79.9,C +693,Male,5.8,83.6,7.1,Masters,No,No,No,67.6,92.2,A +694,Female,4.8,80.5,6.5,Masters,Yes,No,Yes,100.0,100.0,A +695,Female,3.0,85.0,8.2,Bachelors,Yes,No,No,69.9,89.6,B +696,Female,3.0,91.0,7.0,High School,Yes,Yes,No,56.6,77.5,C +697,Male,3.0,70.6,4.4,Masters,Yes,Yes,No,69.3,72.6,C +698,Female,6.6,62.0,5.5,Bachelors,No,Yes,No,69.4,97.9,A +699,Female,4.1,79.5,6.6,Masters,Yes,Yes,No,71.9,85.5,B +700,Male,4.1,72.8,7.2,Masters,Yes,Yes,No,77.9,92.1,A +701,Female,5.0,79.9,6.7,None,Yes,No,No,57.5,84.5,B +702,Female,3.9,83.5,8.3,Bachelors,Yes,Yes,Yes,90.3,82.8,B +703,Male,3.1,80.5,4.5,High School,Yes,Yes,Yes,72.9,65.4,D +704,Female,3.2,99.5,7.0,Bachelors,Yes,Yes,No,78.7,89.6,B +705,Male,3.4,88.3,4.6,High School,Yes,No,Yes,62.5,83.1,B +706,Male,3.4,88.0,7.7,PhD,Yes,No,Yes,85.4,94.2,A +707,Female,4.6,91.2,6.7,High School,Yes,No,Yes,66.9,92.9,A +708,Female,3.6,73.6,7.3,High School,Yes,No,No,73.3,77.1,C +709,Female,4.6,95.4,5.8,Masters,Yes,Yes,No,58.8,98.3,A +710,Female,3.4,84.2,8.3,Bachelors,Yes,No,Yes,58.0,72.1,C +711,Male,3.6,91.7,8.1,Bachelors,Yes,Yes,No,78.3,94.6,A +712,Female,0.5,74.3,7.5,Bachelors,Yes,Yes,No,64.7,67.1,D +713,Male,4.9,69.5,6.6,PhD,No,No,Yes,59.8,72.2,C +714,Female,4.0,93.2,7.5,High School,Yes,No,No,62.3,95.6,A +715,Female,5.0,88.8,6.0,PhD,Yes,Yes,No,78.4,91.9,A +716,Female,0.5,76.0,7.8,High School,No,Yes,No,62.5,54.1,F +717,Male,6.6,76.3,8.8,Masters,Yes,Yes,No,68.6,98.5,A +718,Female,3.3,96.3,8.1,Masters,Yes,Yes,Yes,70.2,85.0,B +719,Female,5.2,73.1,5.9,High School,Yes,Yes,No,47.0,99.1,A +720,Female,1.9,100.0,7.2,Bachelors,Yes,Yes,Yes,52.3,78.2,C +721,Female,4.4,76.0,5.2,High School,Yes,Yes,No,74.0,83.8,B +722,Male,1.9,91.4,7.5,Masters,Yes,No,No,61.2,70.7,C +723,Female,2.6,81.7,7.3,Bachelors,No,Yes,No,82.7,69.9,D +724,Male,6.4,91.0,4.6,Bachelors,Yes,Yes,Yes,81.6,93.7,A +725,Male,3.2,79.6,5.4,High School,Yes,Yes,No,78.6,84.9,B +726,Male,3.8,83.4,6.5,High School,Yes,No,No,91.8,100.0,A +727,Male,4.8,85.4,6.4,High School,Yes,Yes,No,69.0,97.5,A +728,Male,4.2,75.0,5.3,High School,Yes,Yes,No,77.8,88.0,B +729,Male,3.7,92.4,7.3,Bachelors,Yes,Yes,No,63.0,85.0,B +730,Female,4.0,79.9,7.1,PhD,Yes,No,No,99.4,98.9,A +731,Male,7.1,82.7,6.6,Masters,Yes,No,No,93.8,100.0,A +732,Male,3.4,75.1,5.9,Bachelors,No,No,No,70.1,85.0,B +733,Male,3.8,59.4,8.1,None,No,No,No,74.6,74.3,C +734,Female,5.1,83.1,8.8,Masters,Yes,No,No,86.3,99.6,A +735,Female,5.2,100.0,6.2,None,Yes,No,Yes,68.2,79.8,C +736,Male,5.3,92.8,6.1,Bachelors,Yes,Yes,No,62.1,91.3,A +737,Female,4.5,84.8,7.4,High School,No,Yes,No,80.5,95.0,A +738,Male,1.8,82.4,6.4,High School,Yes,No,Yes,70.9,66.6,D +739,Male,6.0,85.2,6.6,Masters,Yes,Yes,No,72.2,93.1,A +740,Female,1.8,90.5,7.7,High School,Yes,Yes,No,60.0,81.8,B +741,Male,4.0,73.2,4.5,High School,Yes,No,No,49.4,62.9,D +742,Female,2.4,96.1,8.4,Bachelors,Yes,Yes,No,72.8,94.0,A +743,Female,3.4,92.2,6.9,Bachelors,Yes,No,Yes,80.9,85.0,B +744,Male,4.0,92.2,6.3,Bachelors,Yes,No,Yes,67.3,82.4,B +745,Male,4.0,89.4,6.7,High School,Yes,Yes,No,87.2,89.5,B +746,Female,4.1,85.2,6.8,Bachelors,Yes,No,Yes,61.6,83.3,B +747,Male,5.9,91.7,4.7,Bachelors,Yes,Yes,Yes,57.3,100.0,A +748,Male,4.2,90.9,8.6,None,No,Yes,No,69.2,92.4,A +749,Male,3.1,81.5,6.8,Masters,Yes,Yes,No,69.0,77.0,C +750,Female,4.9,79.3,7.3,None,No,No,No,79.2,95.1,A +751,Female,5.3,86.0,7.9,Masters,Yes,No,No,60.7,88.8,B +752,Male,1.7,100.0,5.6,Bachelors,Yes,Yes,Yes,86.4,93.2,A +753,Female,4.4,72.6,7.4,High School,Yes,No,Yes,93.6,96.4,A +754,Female,4.6,70.3,6.5,Masters,Yes,Yes,No,69.5,67.2,D +755,Female,3.1,86.6,7.8,Bachelors,Yes,No,No,85.0,84.6,B +756,Female,5.6,85.5,4.2,Bachelors,Yes,Yes,Yes,57.3,89.8,B +757,Female,3.3,86.7,6.7,Bachelors,Yes,No,No,82.9,90.3,A +758,Male,3.7,87.4,6.1,Bachelors,Yes,Yes,Yes,82.6,82.5,B +759,Male,3.2,82.8,7.3,High School,Yes,Yes,No,80.4,84.5,B +760,Male,3.5,99.9,7.4,Bachelors,No,Yes,Yes,69.8,72.1,C +761,Female,1.9,69.0,6.0,High School,Yes,No,Yes,34.5,53.2,F +762,Female,1.3,76.7,5.9,Masters,No,Yes,Yes,62.3,74.0,C +763,Male,5.9,84.0,6.7,High School,Yes,No,No,62.5,96.8,A +764,Female,2.2,68.6,5.7,High School,Yes,Yes,No,58.3,81.2,B +765,Male,2.0,83.2,7.8,Bachelors,Yes,Yes,No,71.5,85.4,B +766,Male,0.5,100.0,6.4,Masters,Yes,Yes,No,65.0,81.1,B +767,Male,2.5,85.2,3.3,Bachelors,Yes,No,No,60.1,83.9,B +768,Female,1.5,87.3,6.4,High School,Yes,Yes,Yes,57.3,71.2,C +769,Female,6.0,72.4,5.6,Bachelors,Yes,No,No,61.4,85.5,B +770,Male,5.0,78.8,4.8,High School,Yes,No,No,83.5,98.4,A +771,Male,2.5,81.2,5.3,None,Yes,No,No,62.1,82.6,B +772,Male,6.9,81.8,6.9,None,Yes,Yes,Yes,63.8,91.6,A +773,Male,5.0,97.8,8.4,Bachelors,Yes,No,No,64.5,91.3,A +774,Female,3.0,90.6,7.2,High School,Yes,No,Yes,74.1,84.3,B +775,Female,0.5,73.9,6.1,Masters,Yes,Yes,No,75.5,74.6,C +776,Male,6.9,87.5,7.3,High School,Yes,No,Yes,33.5,88.6,B +777,Male,1.4,90.0,6.2,Bachelors,Yes,Yes,No,82.3,73.6,C +778,Female,1.0,96.4,6.0,High School,Yes,Yes,No,87.2,95.8,A +779,Female,5.0,100.0,5.4,None,Yes,Yes,No,57.4,87.1,B +780,Male,7.2,74.8,4.7,High School,Yes,Yes,No,58.3,89.9,B +781,Male,5.6,76.9,6.3,Bachelors,No,Yes,No,64.6,79.1,C +782,Male,4.3,72.4,7.0,Masters,Yes,Yes,No,60.9,97.6,A +783,Female,4.4,82.7,6.7,Bachelors,Yes,No,No,72.7,90.3,A +784,Female,4.8,89.7,6.3,High School,Yes,Yes,No,46.6,78.1,C +785,Female,4.6,94.9,5.7,None,Yes,Yes,No,56.6,92.6,A +786,Male,3.9,84.2,7.5,Bachelors,Yes,Yes,Yes,88.5,97.0,A +787,Male,3.7,81.8,5.2,Bachelors,Yes,No,No,58.9,77.0,C +788,Female,3.4,86.5,7.7,High School,Yes,No,No,84.9,96.8,A +789,Female,2.4,76.6,5.6,Bachelors,Yes,No,No,74.3,72.1,C +790,Male,3.1,100.0,5.9,Bachelors,Yes,No,No,48.3,75.4,C +791,Female,1.0,68.9,5.0,High School,Yes,Yes,No,77.6,57.6,F +792,Female,3.4,86.8,6.2,High School,No,No,Yes,68.6,67.6,D +793,Male,2.0,100.0,8.0,Masters,Yes,Yes,Yes,64.5,91.2,A +794,Female,1.8,85.1,7.4,High School,Yes,Yes,Yes,72.9,86.8,B +795,Male,3.8,83.1,8.0,High School,Yes,No,No,75.7,89.5,B +796,Male,5.6,81.4,7.4,Bachelors,Yes,Yes,No,78.5,100.0,A +797,Male,4.9,83.2,5.5,Masters,Yes,No,No,84.1,93.4,A +798,Male,1.1,98.7,6.4,High School,Yes,No,No,74.9,78.7,C +799,Male,2.0,62.9,5.9,Bachelors,Yes,Yes,Yes,53.5,60.8,D +800,Male,4.9,100.0,8.4,High School,Yes,Yes,No,64.3,96.1,A +801,Male,2.0,70.8,5.4,High School,Yes,Yes,No,100.0,83.0,B +802,Female,3.2,82.3,7.9,High School,Yes,No,No,78.7,94.0,A +803,Male,4.3,80.7,7.9,Masters,Yes,No,No,98.4,100.0,A +804,Male,2.0,90.9,9.0,High School,Yes,Yes,No,86.7,94.6,A +805,Female,3.7,69.0,6.3,High School,Yes,Yes,No,72.9,87.7,B +806,Female,1.5,89.6,7.7,Bachelors,Yes,No,No,73.6,82.1,B +807,Female,2.6,100.0,9.5,Masters,Yes,No,Yes,69.6,80.1,B +808,Male,4.0,71.4,6.1,High School,No,Yes,Yes,49.1,57.8,F +809,Female,1.1,86.9,5.0,Bachelors,Yes,Yes,No,70.2,74.3,C +810,Male,4.2,78.4,4.5,High School,No,No,No,84.5,82.5,B +811,Male,3.5,89.3,7.7,Bachelors,Yes,Yes,No,62.8,85.9,B +812,Male,4.3,85.2,4.5,Bachelors,Yes,Yes,No,74.9,88.4,B +813,Male,3.8,78.6,6.4,Bachelors,Yes,No,No,80.2,100.0,A +814,Female,5.5,89.9,7.3,High School,No,No,Yes,59.1,75.6,C +815,Female,3.7,100.0,7.0,High School,Yes,Yes,No,64.6,78.0,C +816,Male,2.9,83.1,7.3,High School,Yes,Yes,No,57.8,80.0,B +817,Male,3.7,92.2,7.1,Bachelors,Yes,Yes,Yes,60.1,80.2,B +818,Male,4.3,72.1,8.3,High School,Yes,Yes,No,54.5,82.2,B +819,Female,3.6,75.4,5.7,Masters,Yes,No,No,59.2,79.6,C +820,Male,3.6,89.7,6.0,None,No,Yes,No,87.0,96.3,A +821,Male,2.4,99.8,5.9,None,No,No,No,59.0,65.4,D +822,Female,2.5,88.6,7.8,PhD,Yes,No,No,71.5,79.9,C +823,Female,1.4,81.9,7.9,Bachelors,No,Yes,No,64.0,71.6,C +824,Male,6.1,85.0,7.3,Masters,Yes,Yes,No,84.1,100.0,A +825,Female,1.6,72.5,8.2,High School,Yes,Yes,No,85.7,93.9,A +826,Female,2.5,91.0,5.4,Bachelors,Yes,No,Yes,80.4,87.5,B +827,Male,2.4,93.8,8.8,Bachelors,Yes,No,No,73.7,86.3,B +828,Female,4.8,80.5,8.6,Bachelors,No,Yes,Yes,67.2,77.6,C +829,Male,3.1,80.3,7.7,Masters,Yes,No,Yes,55.7,70.2,C +830,Female,5.4,87.7,8.9,High School,Yes,No,No,93.3,100.0,A +831,Male,2.5,80.6,4.8,High School,Yes,No,Yes,60.9,73.5,C +832,Male,3.9,84.3,6.2,None,Yes,Yes,No,78.0,91.2,A +833,Male,2.2,100.0,5.9,High School,Yes,Yes,Yes,82.7,78.1,C +834,Female,6.7,82.5,7.7,Bachelors,No,No,No,63.3,89.0,B +835,Male,1.7,81.4,5.5,None,Yes,Yes,Yes,82.5,82.0,B +836,Female,4.0,78.5,7.7,Bachelors,Yes,Yes,Yes,79.2,89.5,B +837,Male,4.5,92.4,8.4,Bachelors,Yes,Yes,Yes,90.7,100.0,A +838,Male,4.1,83.2,7.6,High School,Yes,Yes,No,64.4,88.7,B +839,Female,3.2,78.5,7.1,High School,Yes,Yes,No,54.6,86.0,B +840,Male,3.3,98.2,5.6,PhD,Yes,No,Yes,63.9,82.9,B +841,Male,3.6,99.2,5.8,Bachelors,Yes,Yes,No,72.5,88.6,B +842,Female,3.3,79.0,8.3,Bachelors,Yes,Yes,No,70.7,79.2,C +843,Male,4.9,66.3,7.7,High School,Yes,No,No,65.3,85.1,B +844,Male,6.8,95.1,6.8,High School,Yes,Yes,No,47.1,80.2,B +845,Male,2.7,78.2,6.3,None,Yes,Yes,No,75.6,80.2,B +846,Male,1.4,92.9,4.4,Bachelors,Yes,No,Yes,93.7,80.3,B +847,Female,3.4,65.3,5.5,Bachelors,Yes,No,No,75.6,69.8,D +848,Female,7.4,93.9,9.1,High School,No,No,No,77.3,100.0,A +849,Male,2.3,72.9,5.3,Masters,Yes,No,No,76.9,80.8,B +850,Female,6.0,92.3,7.0,None,Yes,Yes,Yes,74.8,100.0,A +851,Male,6.0,85.1,8.0,Bachelors,Yes,No,Yes,81.2,99.5,A +852,Female,2.7,75.5,5.3,High School,Yes,Yes,No,74.7,80.7,B +853,Male,4.4,80.9,7.0,Bachelors,Yes,No,No,66.2,86.6,B +854,Male,5.9,91.9,7.9,Masters,No,Yes,No,60.4,98.8,A +855,Male,2.9,86.1,6.8,Bachelors,Yes,No,No,67.0,81.9,B +856,Male,3.2,90.8,10.0,PhD,Yes,No,Yes,73.8,79.0,C +857,Male,2.6,100.0,4.8,Bachelors,Yes,No,No,66.2,91.7,A +858,Male,2.0,69.4,8.1,PhD,Yes,Yes,No,73.8,78.8,C +859,Female,2.5,100.0,6.6,Bachelors,Yes,Yes,No,75.3,84.8,B +860,Male,1.7,86.0,7.7,High School,No,No,Yes,80.0,66.5,D +861,Female,3.6,76.0,7.3,High School,Yes,No,No,85.4,91.1,A +862,Male,2.3,71.7,5.9,High School,Yes,Yes,No,70.9,74.2,C +863,Female,3.9,83.1,7.1,None,Yes,No,Yes,54.3,86.3,B +864,Female,1.2,94.2,4.6,Masters,Yes,No,No,65.9,71.2,C +865,Female,4.0,83.7,7.5,Masters,Yes,Yes,No,70.5,83.5,B +866,Male,4.8,100.0,7.2,High School,Yes,No,Yes,48.0,89.8,B +867,Male,0.5,70.5,7.6,High School,Yes,Yes,No,86.7,80.3,B +868,Female,4.1,84.9,8.1,Masters,Yes,Yes,No,71.7,91.6,A +869,Male,5.3,72.5,7.2,Bachelors,Yes,Yes,No,74.6,95.8,A +870,Female,1.7,88.6,7.0,High School,Yes,No,No,86.4,84.4,B +871,Male,6.0,93.9,5.7,Bachelors,Yes,No,No,62.4,96.1,A +872,Female,4.1,80.8,5.9,High School,Yes,Yes,Yes,76.9,92.6,A +873,Female,2.4,59.0,8.2,High School,Yes,No,No,68.7,75.5,C +874,Male,3.4,87.0,8.5,Bachelors,Yes,No,No,67.8,85.1,B +875,Female,4.3,89.4,6.5,High School,Yes,No,No,60.7,93.8,A +876,Male,3.6,89.0,6.9,None,Yes,Yes,No,90.0,81.4,B +877,Female,4.3,97.4,5.7,High School,Yes,No,Yes,65.5,98.8,A +878,Female,2.1,74.3,8.2,High School,No,Yes,No,78.4,65.4,D +879,Male,3.8,91.8,7.6,High School,Yes,Yes,No,47.5,77.6,C +880,Male,1.4,96.9,9.1,Masters,Yes,Yes,Yes,84.2,85.6,B +881,Male,3.3,67.2,5.7,Bachelors,Yes,Yes,No,82.6,81.4,B +882,Female,2.1,88.2,6.3,Bachelors,Yes,No,No,71.2,85.4,B +883,Male,2.4,80.0,7.1,High School,Yes,Yes,No,67.3,71.9,C +884,Female,5.4,84.2,7.6,High School,Yes,No,Yes,74.8,94.4,A +885,Female,5.1,88.5,6.5,Bachelors,Yes,Yes,No,97.5,100.0,A +886,Male,4.4,80.1,5.8,Masters,Yes,Yes,Yes,48.8,77.1,C +887,Male,1.9,78.2,7.9,PhD,Yes,No,Yes,79.4,76.8,C +888,Female,3.0,85.3,7.7,High School,Yes,No,No,59.1,79.8,C +889,Female,5.3,74.1,5.7,Bachelors,Yes,Yes,Yes,69.8,82.2,B +890,Male,3.7,74.1,8.4,None,Yes,Yes,Yes,67.0,77.4,C +891,Male,7.0,91.8,8.2,Bachelors,Yes,Yes,Yes,64.9,100.0,A +892,Male,4.1,73.5,7.0,Masters,Yes,Yes,Yes,69.9,87.2,B +893,Male,3.8,91.7,6.9,High School,Yes,No,Yes,56.4,76.4,C +894,Male,3.0,89.6,7.5,None,No,No,No,82.4,79.6,C +895,Female,3.7,67.7,5.8,Masters,Yes,Yes,Yes,48.5,71.4,C +896,Female,3.3,78.2,6.8,None,Yes,No,Yes,76.5,80.8,B +897,Female,4.6,96.9,4.2,Masters,Yes,No,Yes,66.1,91.1,A +898,Female,4.9,75.2,7.9,Bachelors,Yes,Yes,No,55.9,78.8,C +899,Male,2.3,80.4,4.9,None,Yes,Yes,No,72.4,66.7,D +900,Male,1.5,89.6,8.6,High School,Yes,No,No,51.3,68.8,D +901,Male,0.7,92.8,6.4,High School,Yes,No,No,70.5,69.9,D +902,Female,4.3,82.5,6.5,Masters,Yes,Yes,No,52.9,80.7,B +903,Female,1.8,79.0,6.0,Masters,Yes,Yes,No,75.5,73.3,C +904,Male,0.5,99.2,6.5,None,No,Yes,Yes,58.9,68.8,D +905,Male,4.1,100.0,8.5,High School,Yes,No,No,64.6,90.8,A +906,Female,7.2,94.8,3.8,Masters,Yes,Yes,No,73.5,100.0,A +907,Female,3.5,85.9,8.3,Masters,Yes,Yes,No,60.7,85.0,B +908,Male,4.8,76.9,7.2,High School,Yes,No,Yes,69.3,86.0,B +909,Male,3.6,76.7,5.4,Bachelors,Yes,No,No,51.8,73.1,C +910,Female,3.4,90.2,5.5,High School,Yes,No,Yes,77.6,87.6,B +911,Male,4.9,89.2,8.8,High School,Yes,Yes,Yes,91.2,96.5,A +912,Male,3.1,99.0,5.7,None,Yes,Yes,No,100.0,100.0,A +913,Male,3.9,91.5,5.4,Bachelors,No,Yes,No,71.1,82.1,B +914,Female,4.0,70.0,8.2,Masters,Yes,Yes,No,79.5,80.3,B +915,Female,2.5,95.5,7.2,None,Yes,No,No,48.6,76.9,C +916,Female,5.0,75.0,5.7,Bachelors,No,Yes,Yes,88.0,81.7,B +917,Female,3.2,81.2,7.1,Masters,Yes,Yes,Yes,79.3,88.1,B +918,Female,2.4,87.5,5.6,Bachelors,Yes,Yes,Yes,64.2,88.1,B +919,Female,4.3,100.0,8.1,PhD,Yes,Yes,No,84.8,97.3,A +920,Female,2.2,100.0,8.1,High School,Yes,No,Yes,66.9,83.4,B +921,Male,3.5,91.1,7.4,None,Yes,Yes,Yes,64.5,72.8,C +922,Male,3.5,83.2,7.2,High School,Yes,Yes,No,75.7,90.5,A +923,Male,5.1,90.3,8.9,High School,Yes,Yes,Yes,57.2,83.8,B +924,Male,4.2,93.9,6.8,Masters,Yes,Yes,No,82.3,93.1,A +925,Male,3.5,81.8,5.4,Bachelors,Yes,Yes,No,57.3,71.2,C +926,Male,4.7,100.0,7.3,Bachelors,Yes,No,No,57.4,95.3,A +927,Male,5.6,87.3,9.3,Bachelors,Yes,No,No,59.1,99.6,A +928,Female,4.3,90.0,5.6,Masters,Yes,No,No,79.1,92.4,A +929,Female,3.5,91.7,6.4,High School,Yes,No,Yes,62.6,75.4,C +930,Male,1.5,89.2,7.3,High School,Yes,No,No,53.8,80.8,B +931,Male,1.9,93.4,6.7,High School,Yes,No,No,62.7,72.9,C +932,Female,3.0,78.8,5.6,Bachelors,Yes,Yes,Yes,69.6,63.7,D +933,Male,2.6,79.4,8.1,High School,Yes,Yes,Yes,55.8,75.3,C +934,Male,3.2,74.0,9.6,Bachelors,Yes,Yes,No,56.2,71.7,C +935,Female,3.6,89.4,7.0,Bachelors,Yes,No,No,95.3,100.0,A +936,Male,4.3,92.8,5.7,High School,Yes,No,No,59.7,83.3,B +937,Female,3.4,89.6,4.9,Bachelors,Yes,No,No,66.1,85.6,B +938,Male,4.2,100.0,7.1,PhD,No,Yes,Yes,65.6,93.1,A +939,Female,3.6,84.9,8.1,High School,Yes,No,No,64.9,77.3,C +940,Female,0.5,91.7,7.4,Bachelors,Yes,Yes,No,77.5,74.8,C +941,Female,2.1,74.1,6.8,Masters,Yes,Yes,Yes,81.4,76.7,C +942,Male,3.3,81.1,6.1,Bachelors,No,Yes,No,66.3,85.3,B +943,Female,1.7,92.0,5.5,Masters,Yes,Yes,No,55.2,68.6,D +944,Male,4.4,93.5,7.8,Bachelors,Yes,Yes,No,85.3,96.4,A +945,Male,5.8,82.1,7.9,Bachelors,Yes,Yes,Yes,68.9,95.7,A +946,Male,5.3,84.3,4.9,High School,Yes,Yes,No,90.8,96.1,A +947,Male,3.2,69.8,8.7,Masters,Yes,No,No,43.1,70.4,C +948,Female,5.7,81.4,7.5,Masters,Yes,No,No,72.3,85.8,B +949,Female,3.7,93.9,8.5,High School,No,No,No,93.0,100.0,A +950,Male,3.0,90.8,5.2,Bachelors,No,Yes,Yes,65.8,65.8,D +951,Male,2.6,90.0,5.2,None,No,No,No,67.3,72.4,C +952,Female,3.0,85.5,6.6,Bachelors,Yes,No,No,73.5,83.6,B +953,Male,2.9,85.1,7.4,Bachelors,Yes,Yes,Yes,63.3,89.5,B +954,Female,3.8,78.4,9.0,None,Yes,Yes,No,66.3,77.9,C +955,Male,3.7,92.0,7.6,Masters,Yes,Yes,No,65.9,100.0,A +956,Male,3.5,89.2,6.5,Bachelors,Yes,Yes,No,62.5,88.3,B +957,Female,4.2,89.9,5.6,Masters,Yes,No,Yes,84.7,93.5,A +958,Male,5.3,79.7,8.3,PhD,Yes,No,No,75.5,89.0,B +959,Female,4.9,63.5,5.6,Bachelors,Yes,Yes,No,73.0,87.6,B +960,Male,1.3,96.0,8.8,Bachelors,Yes,No,No,79.7,80.5,B +961,Male,0.5,80.2,6.5,Bachelors,Yes,No,No,66.8,75.4,C +962,Male,4.9,76.4,8.7,None,Yes,No,No,60.7,80.7,B +963,Female,1.4,91.9,7.6,Masters,Yes,Yes,Yes,62.8,73.0,C +964,Male,3.2,81.1,6.6,High School,Yes,No,No,70.0,78.4,C +965,Male,1.7,95.6,6.2,PhD,Yes,Yes,No,57.3,69.5,D +966,Male,0.8,91.2,6.4,Bachelors,Yes,No,No,64.0,76.2,C +967,Male,4.3,91.8,7.3,High School,Yes,Yes,Yes,63.8,90.0,A +968,Female,4.6,71.3,6.9,Bachelors,Yes,Yes,No,95.5,100.0,A +969,Female,2.6,97.1,6.1,Bachelors,Yes,No,No,36.7,60.0,D +970,Male,0.5,87.6,6.6,PhD,Yes,Yes,No,67.8,78.3,C +971,Female,2.7,81.3,6.9,High School,Yes,Yes,Yes,90.7,100.0,A +972,Male,4.1,86.4,4.2,Masters,No,Yes,Yes,71.5,75.6,C +973,Male,1.3,67.2,7.3,Bachelors,Yes,No,No,79.0,84.1,B +974,Male,3.8,89.1,5.6,High School,No,Yes,Yes,71.2,77.9,C +975,Female,3.5,74.7,5.4,None,Yes,No,No,62.0,67.9,D +976,Female,4.4,71.5,4.8,Bachelors,Yes,Yes,Yes,43.1,67.0,D +977,Female,3.7,69.8,4.6,High School,No,Yes,No,72.5,80.9,B +978,Female,2.0,96.1,5.2,Bachelors,Yes,Yes,No,60.7,72.1,C +979,Female,5.3,78.7,5.9,PhD,Yes,Yes,No,60.4,83.0,B +980,Female,3.3,100.0,9.1,High School,Yes,Yes,No,64.0,93.9,A +981,Female,3.5,79.6,6.2,High School,Yes,Yes,No,90.9,91.4,A +982,Female,2.1,67.9,7.0,High School,No,No,Yes,98.9,79.7,C +983,Female,2.8,73.8,7.3,High School,Yes,No,Yes,72.6,77.7,C +984,Male,2.2,97.4,7.0,Masters,Yes,Yes,No,64.4,85.0,B +985,Female,3.2,83.4,6.7,Bachelors,Yes,Yes,No,55.9,75.4,C +986,Female,6.1,79.5,5.4,High School,Yes,No,No,75.6,96.4,A +987,Female,1.4,86.6,8.5,High School,Yes,Yes,No,91.4,81.8,B +988,Female,1.1,90.0,9.0,High School,Yes,Yes,No,67.0,85.8,B +989,Female,5.7,96.2,4.8,None,Yes,No,No,41.5,80.9,B +990,Female,3.2,99.5,5.6,High School,Yes,No,Yes,78.0,93.9,A +991,Female,2.5,81.4,6.5,None,Yes,No,No,81.8,81.9,B +992,Female,5.1,71.7,5.6,Bachelors,Yes,Yes,No,51.0,80.4,B +993,Female,2.6,80.9,7.4,High School,Yes,Yes,No,72.1,78.8,C +994,Female,6.2,87.6,5.9,PhD,Yes,No,No,75.4,92.7,A +995,Female,4.5,75.4,9.4,Bachelors,Yes,Yes,No,69.1,79.1,C +996,Male,2.8,75.4,8.2,Masters,Yes,Yes,No,60.5,70.7,C +997,Male,6.7,88.4,7.1,None,No,Yes,No,82.2,99.5,A +998,Female,2.6,84.5,8.0,High School,Yes,Yes,Yes,65.2,79.2,C +999,Female,4.6,85.3,8.1,High School,No,No,Yes,52.2,82.2,B +1000,Male,3.9,77.4,6.1,Masters,Yes,No,No,45.4,70.4,C diff --git a/wayang-jdbc/demo/run-demo-client.sh b/wayang-jdbc/demo/run-demo-client.sh index 2cc0f1a6f..efbdd3d23 100644 --- a/wayang-jdbc/demo/run-demo-client.sh +++ b/wayang-jdbc/demo/run-demo-client.sh @@ -20,23 +20,14 @@ set -euo pipefail script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" repo_root="$(cd "${script_dir}/../.." && pwd)" demo_classes_dir="${repo_root}/target/wayang-jdbc-demo/classes" -driver_classpath_file="${repo_root}/wayang-jdbc/wayang-jdbc-driver/target/runtime-classpath.txt" -driver_jar="${repo_root}/wayang-jdbc/wayang-jdbc-driver/target/apache-wayang-jdbc-driver-1.1.2-SNAPSHOT.jar" +data_dir="${script_dir}/data" cd "${repo_root}" -echo "Building Wayang JDBC driver artifacts..." -./mvnw -pl :wayang-jdbc-driver -am -DskipTests -Dmaven.javadoc.skip=true install - -echo "Creating driver runtime classpath..." -./mvnw -pl :wayang-jdbc-driver -DincludeScope=runtime -Dmdep.outputFile=target/runtime-classpath.txt dependency:build-classpath - mkdir -p "${demo_classes_dir}" echo "Compiling demo client..." -javac -cp "${driver_jar}:$(cat "${driver_classpath_file}")" \ - -d "${demo_classes_dir}" \ - "${script_dir}/WayangJdbcDemoClient.java" +javac -d "${demo_classes_dir}" "${script_dir}/CsvSelectionOperationsDemo.java" echo "Running demo client..." -java -cp "${demo_classes_dir}:${driver_jar}:$(cat "${driver_classpath_file}")" WayangJdbcDemoClient +java -cp "${demo_classes_dir}" CsvSelectionOperationsDemo "${data_dir}" fs From 6638f22a9845dd2e020dbcfc0ca04f7c93b956f2 Mon Sep 17 00:00:00 2001 From: Makarand Milind Hinge Date: Fri, 14 Aug 2026 20:44:16 +0530 Subject: [PATCH 4/6] Run JDBC demo queries through Wayang server --- wayang-jdbc/README.md | 15 +- .../demo/CsvSelectionOperationsDemo.java | 339 +++--------------- wayang-jdbc/demo/README.md | 25 +- wayang-jdbc/demo/run-demo-client.sh | 19 +- 4 files changed, 94 insertions(+), 304 deletions(-) diff --git a/wayang-jdbc/README.md b/wayang-jdbc/README.md index d2b0119bd..f6979d9c2 100644 --- a/wayang-jdbc/README.md +++ b/wayang-jdbc/README.md @@ -131,14 +131,21 @@ Terminal 2, from the repository root: bash wayang-jdbc/demo/run-demo-client.sh ``` -The demo starts the server on `127.0.0.1:9999`, connects through -`DriverManager`, and runs: +The demo starts the server on `127.0.0.1:9999`, lists the CSV files configured +under schema `fs`, lets you select one, connects through `DriverManager`, and +executes SQL against the selected logical table. + +For example, selecting `people.csv` runs queries such as: ```sql -SELECT ID, NAME, CITY FROM fs.people ORDER BY ID +SELECT COUNT(*) AS total_rows FROM fs.people +SELECT * FROM fs.people LIMIT 5 ``` -The sample data is in `wayang-jdbc/demo/data/people.csv`. +The sample data is in `wayang-jdbc/demo/data/`. The CSV files remain in that +directory; the demo exposes them as logical SQL-style tables such as +`fs.people` and queries them through the client-side JDBC layer and JDBC +server. The external JDBC interface has two running pieces: diff --git a/wayang-jdbc/demo/CsvSelectionOperationsDemo.java b/wayang-jdbc/demo/CsvSelectionOperationsDemo.java index ad0281f5c..579be44e3 100644 --- a/wayang-jdbc/demo/CsvSelectionOperationsDemo.java +++ b/wayang-jdbc/demo/CsvSelectionOperationsDemo.java @@ -15,21 +15,19 @@ * limitations under the License. */ -import java.io.BufferedReader; -import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.util.ArrayList; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.Statement; import java.util.Comparator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; -import java.util.Map; import java.util.Optional; +import java.util.Properties; import java.util.Scanner; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -40,16 +38,14 @@ public class CsvSelectionOperationsDemo { private static final String DEFAULT_SCHEMA = "fs"; - private static final int SAMPLE_ROW_LIMIT = 5; - - private static final int NUMERIC_SUMMARY_LIMIT = 10; + private static final String DEFAULT_JDBC_URL = "jdbc:wayang://127.0.0.1:9999/demo"; - private static final DecimalFormat DECIMAL_FORMAT = - new DecimalFormat("0.##", DecimalFormatSymbols.getInstance(Locale.ROOT)); + private static final int SAMPLE_ROW_LIMIT = 5; - public static void main(final String[] args) throws IOException { + public static void main(final String[] args) throws Exception { final Path dataDirectory = args.length > 0 ? Paths.get(args[0]) : DEFAULT_DATA_DIRECTORY; final String schema = args.length > 1 ? args[1] : DEFAULT_SCHEMA; + final String jdbcUrl = args.length > 2 ? args[2] : DEFAULT_JDBC_URL; final List csvFiles = listCsvFiles(dataDirectory); if (csvFiles.isEmpty()) { @@ -60,25 +56,31 @@ public static void main(final String[] args) throws IOException { printAvailableCsvFiles(csvFiles, schema); final Path selectedFile = selectCsvFile(csvFiles); - final CsvTable table = readCsv(selectedFile); + final String tableName = tableName(selectedFile); + final String qualifiedTableName = schema + "." + tableName; System.out.println(); System.out.println("Selected file: " + selectedFile.getFileName()); - System.out.println("SQL table name: " + schema + "." + tableName(selectedFile)); - System.out.println("Total rows: " + table.rows().size()); + System.out.println("SQL table name: " + qualifiedTableName); + System.out.println("JDBC URL: " + jdbcUrl); - printColumns(table); - printSampleRows(table); - printNumericSummaries(table); + Class.forName("org.apache.wayang.jdbc.driver.WayangDriver"); - if (hasColumn(table, "has_heart_disease")) { - printHeartDiseaseAnalysis(table); - } else { - printGenericCategoricalSummary(table); + final Properties properties = new Properties(); + properties.setProperty("user", "demo"); + properties.setProperty("connectTimeout", "5000"); + + try (Connection connection = DriverManager.getConnection(jdbcUrl, properties); + Statement statement = connection.createStatement()) { + System.out.println(); + System.out.println("Connected to " + jdbcUrl); + + runCountQuery(statement, qualifiedTableName); + runPreviewQuery(statement, qualifiedTableName); } } - private static List listCsvFiles(final Path dataDirectory) throws IOException { + private static List listCsvFiles(final Path dataDirectory) throws Exception { if (!Files.isDirectory(dataDirectory)) { throw new IllegalArgumentException( "Data directory does not exist: " + dataDirectory.toAbsolutePath().normalize() @@ -155,242 +157,43 @@ private static Optional resolveSelection(final String input, final List columns = parseCsvLine(headerLine); - final List> rows = new ArrayList<>(); - String line; - while ((line = reader.readLine()) != null) { - if (!line.isBlank()) { - rows.add(normalizeRow(parseCsvLine(line), columns.size())); - } - } - return new CsvTable(columns, rows); - } - } - - private static List normalizeRow(final List row, final int columnCount) { - final List normalized = new ArrayList<>(row); - while (normalized.size() < columnCount) { - normalized.add(""); - } - if (normalized.size() > columnCount) { - return normalized.subList(0, columnCount); - } - return normalized; - } - - private static List parseCsvLine(final String line) { - final List values = new ArrayList<>(); - final StringBuilder current = new StringBuilder(); - boolean inQuotes = false; - - for (int index = 0; index < line.length(); index++) { - final char currentChar = line.charAt(index); - if (currentChar == '"') { - if (inQuotes && index + 1 < line.length() && line.charAt(index + 1) == '"') { - current.append('"'); - index++; - } else { - inQuotes = !inQuotes; - } - } else if (currentChar == ',' && !inQuotes) { - values.add(current.toString()); - current.setLength(0); - } else { - current.append(currentChar); - } - } - values.add(current.toString()); - return values; - } - - private static void printColumns(final CsvTable table) { - System.out.println(); - System.out.println("Columns:"); - for (int index = 0; index < table.columns().size(); index++) { - System.out.println((index + 1) + ". " + table.columns().get(index)); - } - } - - private static void printSampleRows(final CsvTable table) { - System.out.println(); - System.out.println("First " + Math.min(SAMPLE_ROW_LIMIT, table.rows().size()) + " rows:"); - - for (int rowIndex = 0; rowIndex < Math.min(SAMPLE_ROW_LIMIT, table.rows().size()); rowIndex++) { - final List row = table.rows().get(rowIndex); - System.out.println("Row " + (rowIndex + 1) + ":"); - for (int columnIndex = 0; columnIndex < table.columns().size(); columnIndex++) { - System.out.println(" " + table.columns().get(columnIndex) + " = " + row.get(columnIndex)); - } - } - } - - private static void printNumericSummaries(final CsvTable table) { + private static void runCountQuery(final Statement statement, final String qualifiedTableName) throws Exception { + final String countSql = "SELECT COUNT(*) AS total_rows FROM " + qualifiedTableName; System.out.println(); - System.out.println("Numeric column summaries:"); - - int printed = 0; - for (int columnIndex = 0; columnIndex < table.columns().size(); columnIndex++) { - final Stats stats = numericStats(table, columnIndex); - if (stats.count() == 0) { - continue; - } - - System.out.printf( - Locale.ROOT, - " %-30s count=%d min=%s max=%s avg=%s%n", - table.columns().get(columnIndex), - stats.count(), - format(stats.min()), - format(stats.max()), - format(stats.average()) - ); + System.out.println("Query: " + countSql); - printed++; - if (printed >= NUMERIC_SUMMARY_LIMIT) { - break; + try (ResultSet resultSet = statement.executeQuery(countSql)) { + if (resultSet.next()) { + System.out.println("Total rows: " + resultSet.getObject(1)); } } - - if (printed == 0) { - System.out.println(" No numeric columns detected."); - } - } - - private static void printHeartDiseaseAnalysis(final CsvTable table) { - System.out.println(); - System.out.println("Heart disease analysis:"); - System.out.println("This is dataset analysis only, not medical advice."); - - printCountByColumn(table, "has_heart_disease", "Patients by heart disease flag"); - printAverageByHeartDiseaseFlag(table, "age"); - printAverageByHeartDiseaseFlag(table, "bmi"); - printAverageByHeartDiseaseFlag(table, "cholesterol_total"); - printAverageByHeartDiseaseFlag(table, "daily_steps"); - printNestedCount(table, "smoker_status", "has_heart_disease", "Heart disease flag by smoker status"); - printNestedCount(table, "sex", "has_heart_disease", "Heart disease flag by sex"); - } - - private static void printGenericCategoricalSummary(final CsvTable table) { - final Optional firstCategoricalColumn = table.columns().stream() - .filter(column -> numericStats(table, columnIndex(table, column)).count() == 0) - .findFirst(); - - firstCategoricalColumn.ifPresent(column -> - printCountByColumn(table, column, "Counts by " + column) - ); - } - - private static void printCountByColumn( - final CsvTable table, - final String columnName, - final String title - ) { - final int columnIndex = columnIndex(table, columnName); - final Map counts = new LinkedHashMap<>(); - for (final List row : table.rows()) { - final String value = row.get(columnIndex); - counts.merge(value.isBlank() ? "" : value, 1, Integer::sum); - } - - System.out.println(); - System.out.println(title + ":"); - counts.entrySet().stream() - .sorted(Map.Entry.comparingByValue().reversed()) - .limit(10) - .forEach(entry -> - System.out.println(" " + entry.getKey() + " = " + entry.getValue()) - ); } - private static void printAverageByHeartDiseaseFlag(final CsvTable table, final String numericColumnName) { - if (!hasColumn(table, numericColumnName)) { - return; - } - - final int groupIndex = columnIndex(table, "has_heart_disease"); - final int valueIndex = columnIndex(table, numericColumnName); - final Map statsByFlag = new LinkedHashMap<>(); - - for (final List row : table.rows()) { - final Optional value = parseDouble(row.get(valueIndex)); - if (value.isPresent()) { - statsByFlag - .computeIfAbsent(row.get(groupIndex), ignored -> new Stats()) - .accept(value.get()); - } - } - + private static void runPreviewQuery(final Statement statement, final String qualifiedTableName) throws Exception { + final String previewSql = "SELECT * FROM " + qualifiedTableName + " LIMIT " + SAMPLE_ROW_LIMIT; System.out.println(); - System.out.println("Average " + numericColumnName + " by heart disease flag:"); - statsByFlag.forEach((flag, stats) -> - System.out.println(" " + flag + " = " + format(stats.average())) - ); - } - - private static void printNestedCount( - final CsvTable table, - final String groupColumnName, - final String valueColumnName, - final String title - ) { - if (!hasColumn(table, groupColumnName) || !hasColumn(table, valueColumnName)) { - return; - } - - final int groupIndex = columnIndex(table, groupColumnName); - final int valueIndex = columnIndex(table, valueColumnName); - final Map> counts = new LinkedHashMap<>(); + System.out.println("Query: " + previewSql); - for (final List row : table.rows()) { - final String group = row.get(groupIndex); - final String value = row.get(valueIndex); - counts.computeIfAbsent(group, ignored -> new LinkedHashMap<>()) - .merge(value, 1, Integer::sum); + try (ResultSet resultSet = statement.executeQuery(previewSql)) { + printResultSet(resultSet); } - - System.out.println(); - System.out.println(title + ":"); - counts.forEach((group, values) -> - System.out.println(" " + group + " -> " + values) - ); } - private static Stats numericStats(final CsvTable table, final int columnIndex) { - final Stats stats = new Stats(); - for (final List row : table.rows()) { - parseDouble(row.get(columnIndex)).ifPresent(stats::accept); - } - return stats; - } + private static void printResultSet(final ResultSet resultSet) throws Exception { + final ResultSetMetaData metaData = resultSet.getMetaData(); + final int columnCount = metaData.getColumnCount(); + int rowCount = 0; - private static int columnIndex(final CsvTable table, final String columnName) { - for (int index = 0; index < table.columns().size(); index++) { - if (table.columns().get(index).equalsIgnoreCase(columnName)) { - return index; + while (resultSet.next()) { + rowCount++; + System.out.println("Row " + rowCount + ":"); + for (int column = 1; column <= columnCount; column++) { + System.out.println(" " + metaData.getColumnLabel(column) + " = " + resultSet.getObject(column)); } } - throw new IllegalArgumentException("Column does not exist: " + columnName); - } - - private static boolean hasColumn(final CsvTable table, final String columnName) { - return table.columns().stream().anyMatch(column -> column.equalsIgnoreCase(columnName)); - } - private static Optional parseDouble(final String value) { - if (value == null || value.isBlank()) { - return Optional.empty(); - } - try { - return Optional.of(Double.parseDouble(value)); - } catch (NumberFormatException ignored) { - return Optional.empty(); + if (rowCount == 0) { + System.out.println("No rows returned."); } } @@ -406,48 +209,4 @@ private static String tableName(final Path csvFile) { private static String normalize(final String value) { return value.toLowerCase(Locale.ROOT).replace(".csv", "").trim(); } - - private static String format(final double value) { - return DECIMAL_FORMAT.format(value); - } - - private record CsvTable(List columns, List> rows) { - } - - private static final class Stats { - - private int count; - - private double sum; - - private double min = Double.POSITIVE_INFINITY; - - private double max = Double.NEGATIVE_INFINITY; - - void accept(final double value) { - this.count++; - this.sum += value; - this.min = Math.min(this.min, value); - this.max = Math.max(this.max, value); - } - - int count() { - return this.count; - } - - double min() { - return this.min; - } - - double max() { - return this.max; - } - - double average() { - if (this.count == 0) { - return 0.0; - } - return this.sum / this.count; - } - } } diff --git a/wayang-jdbc/demo/README.md b/wayang-jdbc/demo/README.md index ee1170705..bd7ba78d6 100644 --- a/wayang-jdbc/demo/README.md +++ b/wayang-jdbc/demo/README.md @@ -19,8 +19,8 @@ # Wayang JDBC Demo -This demo is the easiest way to understand how the configured CSV files map to -SQL-style table names in the Wayang JDBC demo. +This demo is the easiest way to verify that CSV files exposed through the demo +Calcite model can be queried through the Wayang JDBC driver implementation. Run from the repository root. @@ -31,7 +31,8 @@ To start the Wayang JDBC server with the demo CSV directory exposed as schema bash wayang-jdbc/demo/start-demo-server.sh ``` -To inspect the available CSV files and run simple local analysis, run: +To inspect the available CSV files, select one, and execute SQL through the +client-side JDBC layer and JDBC server, run: ```bash bash wayang-jdbc/demo/run-demo-client.sh @@ -44,18 +45,26 @@ The server script: * points the Calcite file schema at `wayang-jdbc/demo/data` * starts `org.apache.wayang.jdbc.server.WayangJdbcServer` on `127.0.0.1:9999` -The analysis script: +The client script: * compiles `CsvSelectionOperationsDemo.java` * lists CSV files from `wayang-jdbc/demo/data` * shows each file's SQL-style table name, such as `fs.people` * lets you select a CSV file by number or name -* prints columns, sample rows, numeric summaries, and dataset-specific analysis - for `heart_disease_risk_2026.csv` +* connects to `jdbc:wayang://127.0.0.1:9999/demo` +* executes SQL through the client-side JDBC layer and JDBC server For example, selecting `heart_disease_risk` analyzes `data/heart_disease_risk_2026.csv` as the logical table `fs.heart_disease_risk_2026`. -The demo is intentionally read-only. It reads CSV files from `data/`; it does -not create, insert, update, or delete tables. +The demo runs: + +```sql +SELECT COUNT(*) AS total_rows FROM fs.heart_disease_risk_2026 +SELECT * FROM fs.heart_disease_risk_2026 LIMIT 5 +``` + +The demo is intentionally read-only. The CSV files remain in `data/`; Wayang +does not store them as database tables. The JDBC server exposes them through +the configured SQL model and executes read-only queries over them. diff --git a/wayang-jdbc/demo/run-demo-client.sh b/wayang-jdbc/demo/run-demo-client.sh index efbdd3d23..3fe12a124 100644 --- a/wayang-jdbc/demo/run-demo-client.sh +++ b/wayang-jdbc/demo/run-demo-client.sh @@ -21,13 +21,28 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" repo_root="$(cd "${script_dir}/../.." && pwd)" demo_classes_dir="${repo_root}/target/wayang-jdbc-demo/classes" data_dir="${script_dir}/data" +driver_classpath_file="${repo_root}/wayang-jdbc/wayang-jdbc-driver/target/runtime-classpath.txt" +driver_jar="${repo_root}/wayang-jdbc/wayang-jdbc-driver/target/apache-wayang-jdbc-driver-1.1.2-SNAPSHOT.jar" +jdbc_url="${1:-jdbc:wayang://127.0.0.1:9999/demo}" cd "${repo_root}" mkdir -p "${demo_classes_dir}" +echo "Building Wayang JDBC driver artifacts..." +./mvnw -pl :wayang-jdbc-driver -am -DskipTests -Dmaven.javadoc.skip=true install + +echo "Creating driver runtime classpath..." +./mvnw -pl :wayang-jdbc-driver -DincludeScope=runtime -Dmdep.outputFile=target/runtime-classpath.txt dependency:build-classpath + echo "Compiling demo client..." -javac -d "${demo_classes_dir}" "${script_dir}/CsvSelectionOperationsDemo.java" +javac -cp "${driver_jar}:$(cat "${driver_classpath_file}")" \ + -d "${demo_classes_dir}" \ + "${script_dir}/CsvSelectionOperationsDemo.java" echo "Running demo client..." -java -cp "${demo_classes_dir}" CsvSelectionOperationsDemo "${data_dir}" fs +java -cp "${demo_classes_dir}:${driver_jar}:$(cat "${driver_classpath_file}")" \ + CsvSelectionOperationsDemo \ + "${data_dir}" \ + fs \ + "${jdbc_url}" From 9c08a7d3c5d84c8d6bca4ff50694d85bfc9cd838 Mon Sep 17 00:00:00 2001 From: Makarand Milind Hinge Date: Fri, 14 Aug 2026 21:11:33 +0530 Subject: [PATCH 5/6] Fix JDBC CSV demo parsing --- .../sql/sources/fs/JavaCSVTableSource.java | 70 ++++++++----------- .../wayang/api/sql/SqlToWayangRelTest.java | 16 +++++ .../resources/data/exampleCommaUntyped.csv | 4 ++ 3 files changed, 49 insertions(+), 41 deletions(-) create mode 100644 wayang-api/wayang-api-sql/src/test/resources/data/exampleCommaUntyped.csv diff --git a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/sources/fs/JavaCSVTableSource.java b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/sources/fs/JavaCSVTableSource.java index e37b236e8..75590e686 100755 --- a/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/sources/fs/JavaCSVTableSource.java +++ b/wayang-api/wayang-api-sql/src/main/java/org/apache/wayang/api/sql/sources/fs/JavaCSVTableSource.java @@ -53,6 +53,8 @@ public class JavaCSVTableSource extends UnarySource implements JavaExecutionOperator { + private static final char[] FALLBACK_SEPARATORS = new char[]{',', ';', '\t', '|'}; + private final String sourcePath; private final List fieldTypes; @@ -123,7 +125,7 @@ private Record parseLine(final String s) { assert this.getType().getDataUnitType().getTypeClass() == Record.class; try { - final String[] tokens = CsvRowConverter.parseLine(s, this.separator); + final String[] tokens = this.parseColumns(s); if (tokens.length != fieldTypes.size()) throw new IllegalStateException( String.format( @@ -145,6 +147,25 @@ private Record parseLine(final String s) { } } + private String[] parseColumns(final String line) throws IOException { + final String[] tokens = CsvRowConverter.parseLine(line, this.separator); + if (tokens.length == this.fieldTypes.size()) { + return tokens; + } + + for (final char fallbackSeparator : FALLBACK_SEPARATORS) { + if (fallbackSeparator == this.separator) { + continue; + } + final String[] fallbackTokens = CsvRowConverter.parseLine(line, fallbackSeparator); + if (fallbackTokens.length == this.fieldTypes.size()) { + return fallbackTokens; + } + } + + return tokens; + } + @Override public List getSupportedInputChannels(final int index) { return Collections.singletonList(FileChannel.HDFS_TSV_DESCRIPTOR); @@ -158,8 +179,12 @@ public List getSupportedOutputChannels(final int index) { /** * Copied from {@link FileUtils} as a quick work around to read CSV file after - * skipping - * header row. + * skipping the header row. + * + *

Calcite's file adapter supports typed headers such as + * {@code id:int,name:string} and untyped headers such as {@code id,name}. + * It derives the row type before this source is executed, so the runtime + * reader only skips the header and validates data rows against that row type.

* * Creates a {@link Stream} of a lines of the file. * @@ -174,50 +199,13 @@ private static Stream streamLines(final String path) { if (!lineIterator.hasNext()) { throw new IllegalStateException(String.format("CSV file '%s' is empty. Expected a header row (e.g., 'id:int,name:string').",path)); } - String headerLine = lineIterator.next(); // read and skip header line - validateHeaderLine(path, headerLine); + lineIterator.next(); // read and skip header line return StreamSupport.stream(Spliterators.spliteratorUnknownSize(lineIterator, 0), false); } catch (final IOException e) { throw new WayangException(String.format("%s failed to read %s.", FileUtils.class, path), e); } } - /** - * Validates the CSV header for Calcite compatibility. - * Checks that each column follows the 'name:type' format - * (e.g., 'id:int,name:string,email:string') and that commas - * are used as the header separator. - * - * @param path the filesystem path to the CSV file - * @param headerLine the first line of the CSV file - */ - private static void validateHeaderLine(final String path, final String headerLine) { - final String[] headerColumns = headerLine.split(","); // split header row into columns - - int colonCount = 0; - for (int i = 0; i < headerLine.length(); i++) { - if (headerLine.charAt(i) == ':') { - colonCount++; - } - } - - for (final String column : headerColumns) { - if (!column.trim().contains(":")) { - throw new IllegalStateException(String.format( - "CSV file '%s': header column '%s' missing required type. " - + "Expected 'name:type' format (e.g., 'id:int'). Header: '%s'.", - path, column.trim(), headerLine)); - } - } - - if (headerColumns.length != colonCount) { - throw new IllegalStateException(String.format( - "CSV file '%s': column count mismatch. Expected %d comma-separated 'name:type' columns " - + "but found %d. Header: '%s'.", - path, colonCount, headerColumns.length, headerLine)); - } - } - /** * Creates an {@link Iterator} over the lines of a given {@code path} (that * resides in the given {@code fileSystem}). diff --git a/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java b/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java index a7f6298a5..e4ff79de8 100755 --- a/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java +++ b/wayang-api/wayang-api-sql/src/test/java/org/apache/wayang/api/sql/SqlToWayangRelTest.java @@ -850,6 +850,22 @@ void exampleCustomDelimiter() throws Exception { assertEquals(result.stream().findFirst().get().getInt(0), 3); } + @Test + void exampleCommaDelimitedUntypedHeader() throws Exception { + final SqlContext sqlContext = createSqlContext("/data/exampleCommaUntyped.csv"); + + final Tuple2, WayangPlan> t = this.buildCollectorAndWayangPlan(sqlContext, + "SELECT count(*) FROM fs.exampleCommaUntyped" // + ); + + final Collection result = t.field0; + final WayangPlan wayangPlan = t.field1; + sqlContext.execute(wayangPlan); + + assertEquals(result.size(), 1); + assertEquals(result.stream().findFirst().get().getInt(0), 3); + } + @Test void sqlApiMultiConditionJoinGeneratesJdbcSql() throws Exception { final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(); diff --git a/wayang-api/wayang-api-sql/src/test/resources/data/exampleCommaUntyped.csv b/wayang-api/wayang-api-sql/src/test/resources/data/exampleCommaUntyped.csv new file mode 100644 index 000000000..4c93da84e --- /dev/null +++ b/wayang-api/wayang-api-sql/src/test/resources/data/exampleCommaUntyped.csv @@ -0,0 +1,4 @@ +id,name,score +1,Alice,10.5 +2,Bob,20.0 +3,Carol,30.5 From ae1a4547bdb01c5df02d45346df6d976379584c8 Mon Sep 17 00:00:00 2001 From: Makarand Milind Hinge Date: Tue, 18 Aug 2026 00:44:39 +0530 Subject: [PATCH 6/6] refactor: rename wayang-jdbc-driver to wayang-jdbc-client --- wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md | 4 ++-- wayang-jdbc/README.md | 8 ++++---- wayang-jdbc/pom.xml | 2 +- .../{wayang-jdbc-driver => wayang-jdbc-client}/pom.xml | 2 +- .../org/apache/wayang/jdbc/driver/WayangConnection.java | 0 .../apache/wayang/jdbc/driver/WayangDatabaseMetaData.java | 0 .../java/org/apache/wayang/jdbc/driver/WayangDriver.java | 0 .../org/apache/wayang/jdbc/driver/WayangJdbcClient.java | 0 .../java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java | 0 .../org/apache/wayang/jdbc/driver/WayangResultSet.java | 0 .../wayang/jdbc/driver/WayangResultSetMetaData.java | 0 .../org/apache/wayang/jdbc/driver/WayangStatement.java | 0 .../src/main/resources/META-INF/services/java.sql.Driver | 0 .../wayang/jdbc/driver/WayangJdbcClientProtocolTest.java | 0 .../org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java | 0 wayang-jdbc/wayang-jdbc-server/pom.xml | 2 +- 16 files changed, 9 insertions(+), 9 deletions(-) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/pom.xml (97%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/main/resources/META-INF/services/java.sql.Driver (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java (100%) rename wayang-jdbc/{wayang-jdbc-driver => wayang-jdbc-client}/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java (100%) diff --git a/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md b/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md index e56d7997f..dd098b76d 100644 --- a/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md +++ b/wayang-jdbc/JDBC_IMPLEMENTATION_PLAN.md @@ -60,7 +60,7 @@ Unsupported first: 1. Create JDBC module structure. * Add `wayang-jdbc-protocol`. - * Add `wayang-jdbc-driver`. + * Add `wayang-jdbc-client`. * Add `wayang-jdbc-server`. 2. Define shared protocol. @@ -172,7 +172,7 @@ Unsupported first: 1. Added module structure. * `wayang-jdbc/wayang-jdbc-protocol` - * `wayang-jdbc/wayang-jdbc-driver` + * `wayang-jdbc-client` * `wayang-jdbc/wayang-jdbc-server` 2. Added documentation. diff --git a/wayang-jdbc/README.md b/wayang-jdbc/README.md index f6979d9c2..f17312a81 100644 --- a/wayang-jdbc/README.md +++ b/wayang-jdbc/README.md @@ -40,7 +40,7 @@ verification, and remaining work. * `wayang-jdbc-protocol` contains the versioned messages and length-prefixed JSON codec shared by the driver and server. -* `wayang-jdbc-driver` implements the client-side `java.sql` interfaces and +* `wayang-jdbc-client` implements the client-side `java.sql` interfaces and communicates with the server over TCP. * `wayang-jdbc-server` owns logical JDBC sessions, delegates queries to the @@ -151,7 +151,7 @@ The external JDBC interface has two running pieces: 1. Start a `WayangJdbcServer` process with a Wayang configuration that points to the Calcite model. -2. Put `wayang-jdbc-driver` and its runtime dependencies on the client +2. Put `wayang-jdbc-client` and its runtime dependencies on the client application's classpath, then connect with normal `java.sql` APIs. ### 1. Build the JDBC artifacts @@ -231,8 +231,8 @@ local files, include all runtime JARs. You can copy them with: Then put these on the client classpath: -* `wayang-jdbc/wayang-jdbc-driver/target/apache-wayang-jdbc-driver-1.1.2-SNAPSHOT.jar` -* every JAR in `wayang-jdbc/wayang-jdbc-driver/target/driver-libs/` +* `wayang-jdbc-client/target/apache-wayang-jdbc-driver-1.1.2-SNAPSHOT.jar` +* every JAR in `wayang-jdbc-client/target/driver-libs/` The JDBC driver class is: diff --git a/wayang-jdbc/pom.xml b/wayang-jdbc/pom.xml index f88565ca7..57c744abc 100644 --- a/wayang-jdbc/pom.xml +++ b/wayang-jdbc/pom.xml @@ -38,7 +38,7 @@ wayang-jdbc-protocol - wayang-jdbc-driver + wayang-jdbc-client wayang-jdbc-server diff --git a/wayang-jdbc/wayang-jdbc-driver/pom.xml b/wayang-jdbc/wayang-jdbc-client/pom.xml similarity index 97% rename from wayang-jdbc/wayang-jdbc-driver/pom.xml rename to wayang-jdbc/wayang-jdbc-client/pom.xml index a66ceab4e..d0106dd25 100644 --- a/wayang-jdbc/wayang-jdbc-driver/pom.xml +++ b/wayang-jdbc/wayang-jdbc-client/pom.xml @@ -28,7 +28,7 @@ 1.1.2-SNAPSHOT - wayang-jdbc-driver + wayang-jdbc-client Wayang JDBC Driver diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangConnection.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangDatabaseMetaData.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangDriver.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcClient.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangJdbcUrl.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSet.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangResultSetMetaData.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java b/wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java rename to wayang-jdbc/wayang-jdbc-client/src/main/java/org/apache/wayang/jdbc/driver/WayangStatement.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/main/resources/META-INF/services/java.sql.Driver b/wayang-jdbc/wayang-jdbc-client/src/main/resources/META-INF/services/java.sql.Driver similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/main/resources/META-INF/services/java.sql.Driver rename to wayang-jdbc/wayang-jdbc-client/src/main/resources/META-INF/services/java.sql.Driver diff --git a/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java b/wayang-jdbc/wayang-jdbc-client/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java rename to wayang-jdbc/wayang-jdbc-client/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcClientProtocolTest.java diff --git a/wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java b/wayang-jdbc/wayang-jdbc-client/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java similarity index 100% rename from wayang-jdbc/wayang-jdbc-driver/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java rename to wayang-jdbc/wayang-jdbc-client/src/test/java/org/apache/wayang/jdbc/driver/WayangJdbcUrlTest.java diff --git a/wayang-jdbc/wayang-jdbc-server/pom.xml b/wayang-jdbc/wayang-jdbc-server/pom.xml index 894d05187..19ef1baf9 100644 --- a/wayang-jdbc/wayang-jdbc-server/pom.xml +++ b/wayang-jdbc/wayang-jdbc-server/pom.xml @@ -52,7 +52,7 @@ org.apache.wayang - wayang-jdbc-driver + wayang-jdbc-client 1.1.2-SNAPSHOT test