{"action":"created","comment":{"url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/comments/256670522","pull_request_review_id":203544798,"id":256670522,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI1NjY3MDUyMg==","diff_hunk":"@@ -0,0 +1,250 @@\n+package us.ilite.common.config;\n+\n+import java.lang.reflect.Field;\n+import java.lang.reflect.Modifier;\n+import java.util.Arrays;\n+import java.util.List;\n+import java.util.Map;\n+import java.util.stream.Collectors;\n+\n+import us.ilite.common.lib.control.PIDGains;\n+import us.ilite.common.types.ETrackingType;\n+import us.ilite.common.types.input.ELogitech310;\n+\n+public class PracticeBotSystemSettings {\n+\n+    public static double kControlLoopPeriod = 0.01; // seconds\n+\n+    public static double NETWORK_TABLE_UPDATE_RATE = 0.01;\n+\n+    // ===========================\n+    // System ID's\n+    // ================================\n+    public static int kCANAddressPCM = 20;\n+\n+    //==============================================================================\n+    // Logging\n+    // =============================================================================\n+    public static String kLoggingTimestampKey = \"TIME\";\n+\n+    // =============================================================================\n+    // Talon Addresses\n+    // =============================================================================\n+    // Encoders are on the rear Talons, so ID's are temporarily flipped around\n+    public static  int kDriveLeftMasterTalonId = 1;\n+    public static int kDriveLeftMiddleTalonId = 3;\n+    public static  int kDriveLeftRearTalonId = 5;\n+    public static  int kDriveRightMasterTalonId = 2;\n+    public static int kDriveRightMiddleTalonId = 4;\n+    public static  int kDriveRightRearTalonId = 6;\n+\n+    public static int kPigeonId = 3;\n+\n+    public static int kCANTimeoutMs = 10; //use for on the fly updates\n+    public static int kLongCANTimeoutMs = 100; //use for constructors\n+\n+    // =============================================================================\n+    // Drive Train Constants\n+    // =============================================================================\n+    public static double kDriveClosedLoopVoltageRampRate = 0.0;\n+    public static double kDriveOpenLoopVoltageRampRate = 0.1;\n+    public static int kDriveCurrentLimitAmps = 40;\n+    public static int kDriveCurrentLimitTriggerDurationMs = 100;\n+    public static double kDriveWheelDiameterInches = 6.0;\n+    public static double  DRIVETRAIN_WHEEL_DIAMETER_FEET = kDriveWheelDiameterInches / 12.0;\n+    public static double kDriveWheelCircumference = kDriveWheelDiameterInches * Math.PI;\n+    public static double  DRIVETRAIN_DEFAULT_RAMP_RATE = 120.0; // in V/sec\n+    public static double  DRIVETRAIN_HIGH_GEAR_RAMP_RATE = 120.0; // in V/sec\n+    public static double kDriveTicksPerRotation = 1024;\n+    public static double kDriveEffectiveWheelbase = 23.75 * 1.025;\n+    public static double \tDRIVETRAIN_TURN_CIRCUMFERENCE = kDriveEffectiveWheelbase * Math.PI;\n+    public static double\tDRIVETRAIN_INCHES_PER_DEGREE = DRIVETRAIN_TURN_CIRCUMFERENCE / 360.0;\n+    public static double\tDRIVETRAIN_WHEEL_TURNS_PER_DEGREE = DRIVETRAIN_INCHES_PER_DEGREE / kDriveWheelDiameterInches;\n+    public static double kDriveCollisionThreshold = 0.0;\n+\n+    // =============================================================================\n+    // Input Constants\n+    // =============================================================================\n+    public static double kSnailModePercentThrottleReduction = .5;\n+    public static double kSnailModePercentRotateReduction = .4;\n+    public static double kDriverInputTurnMaxMagnitude = 0.5;\n+    public static double  INPUT_DEADBAND_F310_JOYSTICK = 0.05;\n+    public static double  INPUT_DEADBAND_F310_TRIGGER = 0.5;\n+    public static int     JOYSTICK_PORT_DRIVER = 0;\n+    public static int     JOYSTICK_PORT_OPERATOR = 1;\n+    public static int     JOYSTICK_PORT_TESTER = 2;\n+\n+    public static int kLimelightDefaultPipeline = ETrackingType.TARGET_LEFT.getPipeline();\n+    public static List<ELogitech310> kTeleopCommandTriggers = Arrays.asList(DriveTeamInputMap.DRIVER_TRACK_TARGET_BTN, \n+                                                                            DriveTeamInputMap.DRIVER_TRACK_CARGO_BTN,\n+                                                                            DriveTeamInputMap.DRIVER_TRACK_HATCH_BTN);\n+    public static List<ELogitech310> kAutonOverrideTriggers = Arrays.asList(DriveTeamInputMap.DRIVER_THROTTLE_AXIS,\n+                                                                            DriveTeamInputMap.DRIVER_TURN_AXIS);\n+    public static double kAutonOverrideAxisThreshold = 0.3;\n+\n+    // =============================================================================\n+    // Motion Magic Constants\n+    // =============================================================================\n+    public static int kDriveMotionMagicLoopSlot = 0;\n+    public static int kDriveMotionMagicVelocityFeedforward = 0;\n+    public static int kDriveMotionMagicAccelFeedforward = 0;\n+\n+    // =============================================================================\n+    // Closed-Loop Position Constants\n+    // =============================================================================\n+    public static int kDrivePositionTolerance = 0;\n+    public static int kDrivePositionLoopSlot = 1;\n+    public static double kDrivePosition_kP = 0;\n+    public static double kDrivePosition_kI = 0;\n+    public static double kDrivePosition_kD = 0;\n+    public static double kDrivePosition_kF = 0;\n+\n+    // =============================================================================\n+    // Elevator Constants\n+    // =============================================================================\n+\n+    //All these values will be changed once we have a better idea of what the\n+    //elevator's properties will be like\n+    public static int kTopEncoderTicks = 0;\n+\n+    public static double kElevatorP = 0.1;\n+    public static double kElevatorI = 0; \n+    public static double kElevatorD = 0;\n+    public static double kElevatorF = 0;\n+    public static double kELevatorControlLoopPeriod = 0.01;\n+    public static double kElevatorMinPower = -1.0;\n+    public static double kElevatorMaxPower = 1.0;\n+    public static int kElevatorCurrentLimit = 10;\n+    public static int kELEVATOR_ENCODER_DEADBAND = 20;\n+\n+    // =============================================================================\n+    // Closed-Loop Velocity Constants\n+    // =============================================================================\n+    public static int kDriveVelocityTolerance = 0;\n+    public static int kDriveVelocityLoopSlot = 0;\n+    public static double kDriveVelocity_kP = 0.5;\n+    public static double kDriveVelocity_kI = 0.0;\n+    public static double kDriveVelocity_kD = 0.0;\n+    public static double kDriveVelocity_kF = 0.0; // We don't care about this feedforward because we inject our own with ArbitraryFeedforward\n+    public static int ULTRASONIC_PORT = 2;\n+\n+    // =============================================================================\n+    // Turn-To PID constants\n+    // =============================================================================\n+    public static PIDGains kPIDGains = new PIDGains( 0.0, 0.0, 0.0, 0.085 );\n+\n+    // =============================================================================\n+    // LimeLight Camera Constants\n+    // Note: These constants need to be recalculted for a specific robot geometry\n+    // =============================================================================\n+    public static double llCameraHeightIn = 58.0;\n+    public static double llCameraToBumperIn = 10.0;\n+    public static double llCameraAngleDeg = 28.55;\n+\n+    // Left angle coefficients for angle = a + bx + cx^2\n+    //    a\t0.856905324060421\n+    //    b\t-3.01414088331715\n+    //    c\t-0.0331854848038372\n+    public static double llLeftACoeff = 0.856905324060421;\n+    public static double llLeftBCoeff = -3.01414088331715;\n+    public static double llLeftCCoeff = -0.0331854848038372;\n+\n+    // Right angle coefficients for angle = a + bx + cx^2\n+    // a\t-54.3943883842204\n+    // b\t-4.53956454545558\n+    // c\t-0.0437470770400814\n+    public static double llRightACoeff = -54.3943883842204;\n+    public static double llRightBCoeff = -4.53956454545558;\n+    public static double llRightCCoeff = -0.0437470770400814;\n+    // =============================================================================\n+    // Hatch Flower constants\n+    // =============================================================================\n+    public static double kHatchFlowerSolenoidReleaseTimeSec = 0.250;\n+    public static double kHatchFlowerPushDurationSec = 0.250;\n+\n+    // kHatchFlowerGrabToPushTransitionTimeSec is the time between releasing the \n+    // grab solenoid and engaging the push solenoid.\n+    public static double kHatchFlowerGrabToPushTransitionTimeSec = 0.250;\n+\n+\n+    // =============================================================================\n+    // 2019 Module Addresses\n+    // =============================================================================\n+    public static int kCargoSpitLeftSPXAddress = 13;\n+    public static int kCargoSpitRightSPXAddress = 14;\n+    public static double kCargoSpitSPXCurrentLimit = -1.0;\n+\n+    public static int kElevatorNEOAddress = -15;\n+    // TO-DO: Elevator encoder address?\n+    public static int kElevatorNEOEncoderAddress = -1;\n+    // public static int kElevatorRedundantEncoderAddress = -1;\n+\n+    public static int kFourBarNEO1Address = 9;\n+    public static int kFourBarNEO2Address = 10;\n+    // TO-DO: label solenoid as forward/reverse in spreadsheet\n+    public static int kFourBarDoubleSolenoidForwardAddress = 0;\n+    public static int kFourBarDoubleSolenoidReverseAddress = 1;\n+    public static int kFourBarTBDSensorAddress = -1;\n+\n+    public static int kHatchFlowerOpenCloseSolenoidAddress = 5;\n+    public static int kHatchFlowerExtensionSolenoidAddress = 6;\n+\n+    public static int kHatchIntakeSPXAddress = 11;\n+    public static int kCargoIntakeSPXLowerAddress = 12;\n+    // TO-DO DIO spreadsheet empty\n+    public static int kIntakeBeamBreakAddress = -1;\n+\n+    public static int kIntakeWristSRXAddress = 16;\n+    // TO-DO Writs encoder addresses?\n+    public static int kIntakeWristEncoderA_Address = -1;\n+    public static int kIntakeWristEncoderB_Address = -1;\n+    public static double kIntakeWristCurrentLimit = -1.0;\n+\n+    public static int kDriveTrainRightSRX1Address = 2;\n+    public static int kDriveTrainRightSPX2Address = 4;\n+    public static int kDriveTrainRightSPX3Address = 6;\n+    public static int kDriveTrainLeftSRX1Address = 1;\n+    public static int kDriveTrainLeftSPX2Address = 3;\n+    public static int kDriveTrainLeftSPX3Address = 5;\n+\n+    /**\n+     * This method will take all of the static fields in this class and apply the values to the \n+     * passed in object's static fields that have the exact field name. \n+     * @param destinationObject \n+     *  The object that will have it's static fields updated with the fields in the {@link PracticeBotSystemSettings}\n+     */\n+    public static void copyOverValues(Object destinationObject) {","path":"common/src/main/java/us/ilite/common/config/PracticeBotSystemSettings.java","position":216,"original_position":216,"commit_id":"b653da343da876d7e906f10d0d95aecb6dd2a104","original_commit_id":"b653da343da876d7e906f10d0d95aecb6dd2a104","user":{"login":"StephenWelch","id":7754730,"node_id":"MDQ6VXNlcjc3NTQ3MzA=","avatar_url":"https://avatars0.githubusercontent.com/u/7754730?v=4","gravatar_id":"","url":"https://api.github.com/users/StephenWelch","html_url":"https://github.com/StephenWelch","followers_url":"https://api.github.com/users/StephenWelch/followers","following_url":"https://api.github.com/users/StephenWelch/following{/other_user}","gists_url":"https://api.github.com/users/StephenWelch/gists{/gist_id}","starred_url":"https://api.github.com/users/StephenWelch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/StephenWelch/subscriptions","organizations_url":"https://api.github.com/users/StephenWelch/orgs","repos_url":"https://api.github.com/users/StephenWelch/repos","events_url":"https://api.github.com/users/StephenWelch/events{/privacy}","received_events_url":"https://api.github.com/users/StephenWelch/received_events","type":"User","site_admin":false},"body":"Could this be put into an abstract class rather than directly in a specific class?","created_at":"2019-02-14T02:28:26Z","updated_at":"2019-02-14T02:28:39Z","html_url":"https://github.com/iliterobotics/FRC-Robot-2019/pull/46#discussion_r256670522","pull_request_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/comments/256670522"},"html":{"href":"https://github.com/iliterobotics/FRC-Robot-2019/pull/46#discussion_r256670522"},"pull_request":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46"}}},"pull_request":{"url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46","id":252894658,"node_id":"MDExOlB1bGxSZXF1ZXN0MjUyODk0NjU4","html_url":"https://github.com/iliterobotics/FRC-Robot-2019/pull/46","diff_url":"https://github.com/iliterobotics/FRC-Robot-2019/pull/46.diff","patch_url":"https://github.com/iliterobotics/FRC-Robot-2019/pull/46.patch","issue_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/46","number":46,"state":"open","locked":false,"title":"Feature/practice bot system settings","user":{"login":"oconnelc","id":1112973,"node_id":"MDQ6VXNlcjExMTI5NzM=","avatar_url":"https://avatars0.githubusercontent.com/u/1112973?v=4","gravatar_id":"","url":"https://api.github.com/users/oconnelc","html_url":"https://github.com/oconnelc","followers_url":"https://api.github.com/users/oconnelc/followers","following_url":"https://api.github.com/users/oconnelc/following{/other_user}","gists_url":"https://api.github.com/users/oconnelc/gists{/gist_id}","starred_url":"https://api.github.com/users/oconnelc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oconnelc/subscriptions","organizations_url":"https://api.github.com/users/oconnelc/orgs","repos_url":"https://api.github.com/users/oconnelc/repos","events_url":"https://api.github.com/users/oconnelc/events{/privacy}","received_events_url":"https://api.github.com/users/oconnelc/received_events","type":"User","site_admin":false},"body":"This commit contains the new PracticeBotSystemSettings. For now all of the constants are equal to the values in the SystemSettings. The PracticeBotSystemSettings.copyOverValues will take the fields in the PracticeBotSystemSettings and set the static fields in the passed in object that have the same name. ","created_at":"2019-02-14T00:13:35Z","updated_at":"2019-02-14T02:28:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3353c633b27681cafab6c4e57e166a9fc33fe0b3","assignee":null,"assignees":[],"requested_reviewers":[{"login":"flybotix","id":4370608,"node_id":"MDQ6VXNlcjQzNzA2MDg=","avatar_url":"https://avatars0.githubusercontent.com/u/4370608?v=4","gravatar_id":"","url":"https://api.github.com/users/flybotix","html_url":"https://github.com/flybotix","followers_url":"https://api.github.com/users/flybotix/followers","following_url":"https://api.github.com/users/flybotix/following{/other_user}","gists_url":"https://api.github.com/users/flybotix/gists{/gist_id}","starred_url":"https://api.github.com/users/flybotix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flybotix/subscriptions","organizations_url":"https://api.github.com/users/flybotix/orgs","repos_url":"https://api.github.com/users/flybotix/repos","events_url":"https://api.github.com/users/flybotix/events{/privacy}","received_events_url":"https://api.github.com/users/flybotix/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46/commits","review_comments_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46/comments","review_comment_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/comments{/number}","comments_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/46/comments","statuses_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/statuses/b653da343da876d7e906f10d0d95aecb6dd2a104","head":{"label":"iliterobotics:feature/PracticeBotSystemSettings","ref":"feature/PracticeBotSystemSettings","sha":"b653da343da876d7e906f10d0d95aecb6dd2a104","user":{"login":"iliterobotics","id":3255007,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyNTUwMDc=","avatar_url":"https://avatars0.githubusercontent.com/u/3255007?v=4","gravatar_id":"","url":"https://api.github.com/users/iliterobotics","html_url":"https://github.com/iliterobotics","followers_url":"https://api.github.com/users/iliterobotics/followers","following_url":"https://api.github.com/users/iliterobotics/following{/other_user}","gists_url":"https://api.github.com/users/iliterobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/iliterobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iliterobotics/subscriptions","organizations_url":"https://api.github.com/users/iliterobotics/orgs","repos_url":"https://api.github.com/users/iliterobotics/repos","events_url":"https://api.github.com/users/iliterobotics/events{/privacy}","received_events_url":"https://api.github.com/users/iliterobotics/received_events","type":"Organization","site_admin":false},"repo":{"id":152242718,"node_id":"MDEwOlJlcG9zaXRvcnkxNTIyNDI3MTg=","name":"FRC-Robot-2019","full_name":"iliterobotics/FRC-Robot-2019","private":false,"owner":{"login":"iliterobotics","id":3255007,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyNTUwMDc=","avatar_url":"https://avatars0.githubusercontent.com/u/3255007?v=4","gravatar_id":"","url":"https://api.github.com/users/iliterobotics","html_url":"https://github.com/iliterobotics","followers_url":"https://api.github.com/users/iliterobotics/followers","following_url":"https://api.github.com/users/iliterobotics/following{/other_user}","gists_url":"https://api.github.com/users/iliterobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/iliterobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iliterobotics/subscriptions","organizations_url":"https://api.github.com/users/iliterobotics/orgs","repos_url":"https://api.github.com/users/iliterobotics/repos","events_url":"https://api.github.com/users/iliterobotics/events{/privacy}","received_events_url":"https://api.github.com/users/iliterobotics/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/iliterobotics/FRC-Robot-2019","description":"This is the robot code for the 2019 FRC Game","fork":false,"url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019","forks_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/forks","keys_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/keys{/key_id}","collaborators_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/teams","hooks_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/hooks","issue_events_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/events{/number}","events_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/events","assignees_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/assignees{/user}","branches_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/branches{/branch}","tags_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/tags","blobs_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/refs{/sha}","trees_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/trees{/sha}","statuses_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/statuses/{sha}","languages_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/languages","stargazers_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/stargazers","contributors_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/contributors","subscribers_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/subscribers","subscription_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/subscription","commits_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/commits{/sha}","git_commits_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/commits{/sha}","comments_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/comments{/number}","issue_comment_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/comments{/number}","contents_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/contents/{+path}","compare_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/compare/{base}...{head}","merges_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/merges","archive_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/downloads","issues_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues{/number}","pulls_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls{/number}","milestones_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/milestones{/number}","notifications_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/labels{/name}","releases_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/releases{/id}","deployments_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/deployments","created_at":"2018-10-09T11:54:11Z","updated_at":"2019-02-13T21:28:08Z","pushed_at":"2019-02-14T00:28:08Z","git_url":"git://github.com/iliterobotics/FRC-Robot-2019.git","ssh_url":"git@github.com:iliterobotics/FRC-Robot-2019.git","clone_url":"https://github.com/iliterobotics/FRC-Robot-2019.git","svn_url":"https://github.com/iliterobotics/FRC-Robot-2019","homepage":"https://ilite.us","size":39668,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":2,"open_issues":8,"watchers":1,"default_branch":"master"}},"base":{"label":"iliterobotics:master","ref":"master","sha":"0c36ed1dfd03c1fa9f72df1e38ad2f640d730033","user":{"login":"iliterobotics","id":3255007,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyNTUwMDc=","avatar_url":"https://avatars0.githubusercontent.com/u/3255007?v=4","gravatar_id":"","url":"https://api.github.com/users/iliterobotics","html_url":"https://github.com/iliterobotics","followers_url":"https://api.github.com/users/iliterobotics/followers","following_url":"https://api.github.com/users/iliterobotics/following{/other_user}","gists_url":"https://api.github.com/users/iliterobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/iliterobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iliterobotics/subscriptions","organizations_url":"https://api.github.com/users/iliterobotics/orgs","repos_url":"https://api.github.com/users/iliterobotics/repos","events_url":"https://api.github.com/users/iliterobotics/events{/privacy}","received_events_url":"https://api.github.com/users/iliterobotics/received_events","type":"Organization","site_admin":false},"repo":{"id":152242718,"node_id":"MDEwOlJlcG9zaXRvcnkxNTIyNDI3MTg=","name":"FRC-Robot-2019","full_name":"iliterobotics/FRC-Robot-2019","private":false,"owner":{"login":"iliterobotics","id":3255007,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMyNTUwMDc=","avatar_url":"https://avatars0.githubusercontent.com/u/3255007?v=4","gravatar_id":"","url":"https://api.github.com/users/iliterobotics","html_url":"https://github.com/iliterobotics","followers_url":"https://api.github.com/users/iliterobotics/followers","following_url":"https://api.github.com/users/iliterobotics/following{/other_user}","gists_url":"https://api.github.com/users/iliterobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/iliterobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iliterobotics/subscriptions","organizations_url":"https://api.github.com/users/iliterobotics/orgs","repos_url":"https://api.github.com/users/iliterobotics/repos","events_url":"https://api.github.com/users/iliterobotics/events{/privacy}","received_events_url":"https://api.github.com/users/iliterobotics/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/iliterobotics/FRC-Robot-2019","description":"This is the robot code for the 2019 FRC Game","fork":false,"url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019","forks_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/forks","keys_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/keys{/key_id}","collaborators_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/teams","hooks_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/hooks","issue_events_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/events{/number}","events_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/events","assignees_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/assignees{/user}","branches_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/branches{/branch}","tags_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/tags","blobs_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/refs{/sha}","trees_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/trees{/sha}","statuses_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/statuses/{sha}","languages_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/languages","stargazers_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/stargazers","contributors_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/contributors","subscribers_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/subscribers","subscription_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/subscription","commits_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/commits{/sha}","git_commits_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/git/commits{/sha}","comments_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/comments{/number}","issue_comment_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/comments{/number}","contents_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/contents/{+path}","compare_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/compare/{base}...{head}","merges_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/merges","archive_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/downloads","issues_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues{/number}","pulls_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls{/number}","milestones_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/milestones{/number}","notifications_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/labels{/name}","releases_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/releases{/id}","deployments_url":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/deployments","created_at":"2018-10-09T11:54:11Z","updated_at":"2019-02-13T21:28:08Z","pushed_at":"2019-02-14T00:28:08Z","git_url":"git://github.com/iliterobotics/FRC-Robot-2019.git","ssh_url":"git@github.com:iliterobotics/FRC-Robot-2019.git","clone_url":"https://github.com/iliterobotics/FRC-Robot-2019.git","svn_url":"https://github.com/iliterobotics/FRC-Robot-2019","homepage":"https://ilite.us","size":39668,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":8,"license":null,"forks":2,"open_issues":8,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46"},"html":{"href":"https://github.com/iliterobotics/FRC-Robot-2019/pull/46"},"issue":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/46"},"comments":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/issues/46/comments"},"review_comments":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46/comments"},"review_comment":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/pulls/46/commits"},"statuses":{"href":"https://api.github.com/repos/iliterobotics/FRC-Robot-2019/statuses/b653da343da876d7e906f10d0d95aecb6dd2a104"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"StephenWelch"}}