// <auto-generated>
// ControllerTemplates.cs
// Generated on 7/2/2018 12:39:54 PM
// Do not edit this file.
// This file can be generated from the ControllerDataFiles inspector.
// </auto-generated>

// Copyright (c) 2018 Augie R. Maddox, Guavaman Enterprises. All rights reserved.

#pragma warning disable 0219
#pragma warning disable 0618
#pragma warning disable 0649
#pragma warning disable 0067

#if !REWIRED_USE_USER_DEFINED_CONTROLLER_TEMPLATES

namespace Rewired {
    
    #region Interfaces
    
    /// <summary>
    /// Interface for a Gamepad Controller Template.
    /// </summary>
    public partial interface IGamepadTemplate : IControllerTemplate {
        
        /// <summary>
        /// The "Action Bottom Row 1" element.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 1" element.</returns>
        IControllerTemplateButton actionBottomRow1 { get; }
        
        /// <summary>
        /// The "Action Bottom Row 1" element.
        /// This is an alias for <see cref="actionBottomRow1"/>.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 1" element.</returns>
        IControllerTemplateButton a { get; }
        
        /// <summary>
        /// The "Action Bottom Row 2" element.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 2" element.</returns>
        IControllerTemplateButton actionBottomRow2 { get; }
        
        /// <summary>
        /// The "Action Bottom Row 2" element.
        /// This is an alias for <see cref="actionBottomRow2"/>.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 2" element.</returns>
        IControllerTemplateButton b { get; }
        
        /// <summary>
        /// The "Action Bottom Row 3" element.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 3" element.</returns>
        IControllerTemplateButton actionBottomRow3 { get; }
        
        /// <summary>
        /// The "Action Bottom Row 3" element.
        /// This is an alias for <see cref="actionBottomRow3"/>.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 3" element.</returns>
        IControllerTemplateButton c { get; }
        
        /// <summary>
        /// The "Action Top Row 1" element.
        /// </summary>
        /// <returns>Returns the "Action Top Row 1" element.</returns>
        IControllerTemplateButton actionTopRow1 { get; }
        
        /// <summary>
        /// The "Action Top Row 1" element.
        /// This is an alias for <see cref="actionTopRow1"/>.
        /// </summary>
        /// <returns>Returns the "Action Top Row 1" element.</returns>
        IControllerTemplateButton x { get; }
        
        /// <summary>
        /// The "Action Top Row 2" element.
        /// </summary>
        /// <returns>Returns the "Action Top Row 2" element.</returns>
        IControllerTemplateButton actionTopRow2 { get; }
        
        /// <summary>
        /// The "Action Top Row 2" element.
        /// This is an alias for <see cref="actionTopRow2"/>.
        /// </summary>
        /// <returns>Returns the "Action Top Row 2" element.</returns>
        IControllerTemplateButton y { get; }
        
        /// <summary>
        /// The "Action Top Row 3" element.
        /// </summary>
        /// <returns>Returns the "Action Top Row 3" element.</returns>
        IControllerTemplateButton actionTopRow3 { get; }
        
        /// <summary>
        /// The "Action Top Row 3" element.
        /// This is an alias for <see cref="actionTopRow3"/>.
        /// </summary>
        /// <returns>Returns the "Action Top Row 3" element.</returns>
        IControllerTemplateButton z { get; }
        
        /// <summary>
        /// The "Left Shoulder 1" element.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 1" element.</returns>
        IControllerTemplateButton leftShoulder1 { get; }
        
        /// <summary>
        /// The "Left Shoulder 1" element.
        /// This is an alias for <see cref="leftShoulder1"/>.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 1" element.</returns>
        IControllerTemplateButton leftBumper { get; }
        
        /// <summary>
        /// The "Left Shoulder 2" element.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 2" element.</returns>
        IControllerTemplateAxis leftShoulder2 { get; }
        
        /// <summary>
        /// The "Left Shoulder 2" element.
        /// This is an alias for <see cref="leftShoulder2"/>.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 2" element.</returns>
        IControllerTemplateAxis leftTrigger { get; }
        
        /// <summary>
        /// The "Right Shoulder 1" element.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 1" element.</returns>
        IControllerTemplateButton rightShoulder1 { get; }
        
        /// <summary>
        /// The "Right Shoulder 1" element.
        /// This is an alias for <see cref="rightShoulder1"/>.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 1" element.</returns>
        IControllerTemplateButton rightBumper { get; }
        
        /// <summary>
        /// The "Right Shoulder 2" element.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 2" element.</returns>
        IControllerTemplateAxis rightShoulder2 { get; }
        
        /// <summary>
        /// The "Right Shoulder 2" element.
        /// This is an alias for <see cref="rightShoulder2"/>.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 2" element.</returns>
        IControllerTemplateAxis rightTrigger { get; }
        
        /// <summary>
        /// The "Center 1" element.
        /// </summary>
        /// <returns>Returns the "Center 1" element.</returns>
        IControllerTemplateButton center1 { get; }
        
        /// <summary>
        /// The "Center 1" element.
        /// This is an alias for <see cref="center1"/>.
        /// </summary>
        /// <returns>Returns the "Center 1" element.</returns>
        IControllerTemplateButton back { get; }
        
        /// <summary>
        /// The "Center 2" element.
        /// </summary>
        /// <returns>Returns the "Center 2" element.</returns>
        IControllerTemplateButton center2 { get; }
        
        /// <summary>
        /// The "Center 2" element.
        /// This is an alias for <see cref="center2"/>.
        /// </summary>
        /// <returns>Returns the "Center 2" element.</returns>
        IControllerTemplateButton start { get; }
        
        /// <summary>
        /// The "Center 3" element.
        /// </summary>
        /// <returns>Returns the "Center 3" element.</returns>
        IControllerTemplateButton center3 { get; }
        
        /// <summary>
        /// The "Center 3" element.
        /// This is an alias for <see cref="center3"/>.
        /// </summary>
        /// <returns>Returns the "Center 3" element.</returns>
        IControllerTemplateButton guide { get; }
        
        /// <summary>
        /// The "Left Stick" element.
        /// </summary>
        /// <returns>Returns the "Left Stick" element.</returns>
        IControllerTemplateThumbStick leftStick { get; }
        
        /// <summary>
        /// The "Right Stick" element.
        /// </summary>
        /// <returns>Returns the "Right Stick" element.</returns>
        IControllerTemplateThumbStick rightStick { get; }
        
        /// <summary>
        /// The "D-Pad" element.
        /// </summary>
        /// <returns>Returns the "D-Pad" element.</returns>
        IControllerTemplateDPad dPad { get; }
    }
    
    /// <summary>
    /// Interface for a Racing Wheel Controller Template.
    /// </summary>
    public partial interface IRacingWheelTemplate : IControllerTemplate {
        
        /// <summary>
        /// The "Wheel" element.
        /// </summary>
        /// <returns>Returns the "Wheel" element.</returns>
        IControllerTemplateAxis wheel { get; }
        
        /// <summary>
        /// The "Accelerator" element.
        /// </summary>
        /// <returns>Returns the "Accelerator" element.</returns>
        IControllerTemplateAxis accelerator { get; }
        
        /// <summary>
        /// The "Brake" element.
        /// </summary>
        /// <returns>Returns the "Brake" element.</returns>
        IControllerTemplateAxis brake { get; }
        
        /// <summary>
        /// The "Clutch" element.
        /// </summary>
        /// <returns>Returns the "Clutch" element.</returns>
        IControllerTemplateAxis clutch { get; }
        
        /// <summary>
        /// The "Shift Down" element.
        /// </summary>
        /// <returns>Returns the "Shift Down" element.</returns>
        IControllerTemplateButton shiftDown { get; }
        
        /// <summary>
        /// The "Shift Up" element.
        /// </summary>
        /// <returns>Returns the "Shift Up" element.</returns>
        IControllerTemplateButton shiftUp { get; }
        
        /// <summary>
        /// The "Wheel Button 1" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 1" element.</returns>
        IControllerTemplateButton wheelButton1 { get; }
        
        /// <summary>
        /// The "Wheel Button 2" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 2" element.</returns>
        IControllerTemplateButton wheelButton2 { get; }
        
        /// <summary>
        /// The "Wheel Button 3" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 3" element.</returns>
        IControllerTemplateButton wheelButton3 { get; }
        
        /// <summary>
        /// The "Wheel Button 4" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 4" element.</returns>
        IControllerTemplateButton wheelButton4 { get; }
        
        /// <summary>
        /// The "Wheel Button 5" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 5" element.</returns>
        IControllerTemplateButton wheelButton5 { get; }
        
        /// <summary>
        /// The "Wheel Button 6" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 6" element.</returns>
        IControllerTemplateButton wheelButton6 { get; }
        
        /// <summary>
        /// The "Wheel Button 7" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 7" element.</returns>
        IControllerTemplateButton wheelButton7 { get; }
        
        /// <summary>
        /// The "Wheel Button 8" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 8" element.</returns>
        IControllerTemplateButton wheelButton8 { get; }
        
        /// <summary>
        /// The "Wheel Button 9" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 9" element.</returns>
        IControllerTemplateButton wheelButton9 { get; }
        
        /// <summary>
        /// The "Wheel Button 10" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 10" element.</returns>
        IControllerTemplateButton wheelButton10 { get; }
        
        /// <summary>
        /// The "Console Button 1" element.
        /// </summary>
        /// <returns>Returns the "Console Button 1" element.</returns>
        IControllerTemplateButton consoleButton1 { get; }
        
        /// <summary>
        /// The "Console Button 2" element.
        /// </summary>
        /// <returns>Returns the "Console Button 2" element.</returns>
        IControllerTemplateButton consoleButton2 { get; }
        
        /// <summary>
        /// The "Console Button 3" element.
        /// </summary>
        /// <returns>Returns the "Console Button 3" element.</returns>
        IControllerTemplateButton consoleButton3 { get; }
        
        /// <summary>
        /// The "Console Button 4" element.
        /// </summary>
        /// <returns>Returns the "Console Button 4" element.</returns>
        IControllerTemplateButton consoleButton4 { get; }
        
        /// <summary>
        /// The "Console Button 5" element.
        /// </summary>
        /// <returns>Returns the "Console Button 5" element.</returns>
        IControllerTemplateButton consoleButton5 { get; }
        
        /// <summary>
        /// The "Console Button 6" element.
        /// </summary>
        /// <returns>Returns the "Console Button 6" element.</returns>
        IControllerTemplateButton consoleButton6 { get; }
        
        /// <summary>
        /// The "Console Button 7" element.
        /// </summary>
        /// <returns>Returns the "Console Button 7" element.</returns>
        IControllerTemplateButton consoleButton7 { get; }
        
        /// <summary>
        /// The "Console Button 8" element.
        /// </summary>
        /// <returns>Returns the "Console Button 8" element.</returns>
        IControllerTemplateButton consoleButton8 { get; }
        
        /// <summary>
        /// The "Console Button 9" element.
        /// </summary>
        /// <returns>Returns the "Console Button 9" element.</returns>
        IControllerTemplateButton consoleButton9 { get; }
        
        /// <summary>
        /// The "Console Button 10" element.
        /// </summary>
        /// <returns>Returns the "Console Button 10" element.</returns>
        IControllerTemplateButton consoleButton10 { get; }
        
        /// <summary>
        /// The "Shifter 1" element.
        /// </summary>
        /// <returns>Returns the "Shifter 1" element.</returns>
        IControllerTemplateButton shifter1 { get; }
        
        /// <summary>
        /// The "Shifter 2" element.
        /// </summary>
        /// <returns>Returns the "Shifter 2" element.</returns>
        IControllerTemplateButton shifter2 { get; }
        
        /// <summary>
        /// The "Shifter 3" element.
        /// </summary>
        /// <returns>Returns the "Shifter 3" element.</returns>
        IControllerTemplateButton shifter3 { get; }
        
        /// <summary>
        /// The "Shifter 4" element.
        /// </summary>
        /// <returns>Returns the "Shifter 4" element.</returns>
        IControllerTemplateButton shifter4 { get; }
        
        /// <summary>
        /// The "Shifter 5" element.
        /// </summary>
        /// <returns>Returns the "Shifter 5" element.</returns>
        IControllerTemplateButton shifter5 { get; }
        
        /// <summary>
        /// The "Shifter 6" element.
        /// </summary>
        /// <returns>Returns the "Shifter 6" element.</returns>
        IControllerTemplateButton shifter6 { get; }
        
        /// <summary>
        /// The "Shifter 7" element.
        /// </summary>
        /// <returns>Returns the "Shifter 7" element.</returns>
        IControllerTemplateButton shifter7 { get; }
        
        /// <summary>
        /// The "Shifter 8" element.
        /// </summary>
        /// <returns>Returns the "Shifter 8" element.</returns>
        IControllerTemplateButton shifter8 { get; }
        
        /// <summary>
        /// The "Shifter 9" element.
        /// </summary>
        /// <returns>Returns the "Shifter 9" element.</returns>
        IControllerTemplateButton shifter9 { get; }
        
        /// <summary>
        /// The "Shifter 10" element.
        /// </summary>
        /// <returns>Returns the "Shifter 10" element.</returns>
        IControllerTemplateButton shifter10 { get; }
        
        /// <summary>
        /// The "Reverse Gear" element.
        /// </summary>
        /// <returns>Returns the "Reverse Gear" element.</returns>
        IControllerTemplateButton reverseGear { get; }
        
        /// <summary>
        /// The "Select" element.
        /// </summary>
        /// <returns>Returns the "Select" element.</returns>
        IControllerTemplateButton select { get; }
        
        /// <summary>
        /// The "Start" element.
        /// </summary>
        /// <returns>Returns the "Start" element.</returns>
        IControllerTemplateButton start { get; }
        
        /// <summary>
        /// The "System Button" element.
        /// </summary>
        /// <returns>Returns the "System Button" element.</returns>
        IControllerTemplateButton systemButton { get; }
        
        /// <summary>
        /// The "Horn" element.
        /// </summary>
        /// <returns>Returns the "Horn" element.</returns>
        IControllerTemplateButton horn { get; }
        
        /// <summary>
        /// The "D-Pad" element.
        /// </summary>
        /// <returns>Returns the "D-Pad" element.</returns>
        IControllerTemplateDPad dPad { get; }
    }
    
    /// <summary>
    /// Interface for a HOTAS Controller Template.
    /// </summary>
    public partial interface IHOTASTemplate : IControllerTemplate {
        
        /// <summary>
        /// The "Stick Trigger" element.
        /// </summary>
        /// <returns>Returns the "Stick Trigger" element.</returns>
        IControllerTemplateButton stickTrigger { get; }
        
        /// <summary>
        /// The "Stick Trigger (Stage 2)" element.
        /// </summary>
        /// <returns>Returns the "Stick Trigger (Stage 2)" element.</returns>
        IControllerTemplateButton stickTriggerStage2 { get; }
        
        /// <summary>
        /// The "Stick Pinky Button" element.
        /// </summary>
        /// <returns>Returns the "Stick Pinky Button" element.</returns>
        IControllerTemplateButton stickPinkyButton { get; }
        
        /// <summary>
        /// The "Stick Pinky Trigger" element.
        /// </summary>
        /// <returns>Returns the "Stick Pinky Trigger" element.</returns>
        IControllerTemplateButton stickPinkyTrigger { get; }
        
        /// <summary>
        /// The "Stick Button 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 1" element.</returns>
        IControllerTemplateButton stickButton1 { get; }
        
        /// <summary>
        /// The "Stick Button 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 2" element.</returns>
        IControllerTemplateButton stickButton2 { get; }
        
        /// <summary>
        /// The "Stick Button 3" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 3" element.</returns>
        IControllerTemplateButton stickButton3 { get; }
        
        /// <summary>
        /// The "Stick Button 4" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 4" element.</returns>
        IControllerTemplateButton stickButton4 { get; }
        
        /// <summary>
        /// The "Stick Button 5" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 5" element.</returns>
        IControllerTemplateButton stickButton5 { get; }
        
        /// <summary>
        /// The "Stick Button 6" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 6" element.</returns>
        IControllerTemplateButton stickButton6 { get; }
        
        /// <summary>
        /// The "Stick Button 7" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 7" element.</returns>
        IControllerTemplateButton stickButton7 { get; }
        
        /// <summary>
        /// The "Stick Button 8" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 8" element.</returns>
        IControllerTemplateButton stickButton8 { get; }
        
        /// <summary>
        /// The "Stick Button 9" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 9" element.</returns>
        IControllerTemplateButton stickButton9 { get; }
        
        /// <summary>
        /// The "Stick Button 10" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 10" element.</returns>
        IControllerTemplateButton stickButton10 { get; }
        
        /// <summary>
        /// The "Stick Base Button 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 1" element.</returns>
        IControllerTemplateButton stickBaseButton1 { get; }
        
        /// <summary>
        /// The "Stick Base Button 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 2" element.</returns>
        IControllerTemplateButton stickBaseButton2 { get; }
        
        /// <summary>
        /// The "Stick Base Button 3" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 3" element.</returns>
        IControllerTemplateButton stickBaseButton3 { get; }
        
        /// <summary>
        /// The "Stick Base Button 4" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 4" element.</returns>
        IControllerTemplateButton stickBaseButton4 { get; }
        
        /// <summary>
        /// The "Stick Base Button 5" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 5" element.</returns>
        IControllerTemplateButton stickBaseButton5 { get; }
        
        /// <summary>
        /// The "Stick Base Button 6" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 6" element.</returns>
        IControllerTemplateButton stickBaseButton6 { get; }
        
        /// <summary>
        /// The "Stick Base Button 7" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 7" element.</returns>
        IControllerTemplateButton stickBaseButton7 { get; }
        
        /// <summary>
        /// The "Stick Base Button 8" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 8" element.</returns>
        IControllerTemplateButton stickBaseButton8 { get; }
        
        /// <summary>
        /// The "Stick Base Button 9" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 9" element.</returns>
        IControllerTemplateButton stickBaseButton9 { get; }
        
        /// <summary>
        /// The "Stick Base Button 10" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 10" element.</returns>
        IControllerTemplateButton stickBaseButton10 { get; }
        
        /// <summary>
        /// The "Stick Base Button 11" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 11" element.</returns>
        IControllerTemplateButton stickBaseButton11 { get; }
        
        /// <summary>
        /// The "Stick Base Button 12" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 12" element.</returns>
        IControllerTemplateButton stickBaseButton12 { get; }
        
        /// <summary>
        /// The "Mode 1" element.
        /// </summary>
        /// <returns>Returns the "Mode 1" element.</returns>
        IControllerTemplateButton mode1 { get; }
        
        /// <summary>
        /// The "Mode 2" element.
        /// </summary>
        /// <returns>Returns the "Mode 2" element.</returns>
        IControllerTemplateButton mode2 { get; }
        
        /// <summary>
        /// The "Mode 3" element.
        /// </summary>
        /// <returns>Returns the "Mode 3" element.</returns>
        IControllerTemplateButton mode3 { get; }
        
        /// <summary>
        /// The "Throttle Button 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 1" element.</returns>
        IControllerTemplateButton throttleButton1 { get; }
        
        /// <summary>
        /// The "Throttle Button 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 2" element.</returns>
        IControllerTemplateButton throttleButton2 { get; }
        
        /// <summary>
        /// The "Throttle Button 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 3" element.</returns>
        IControllerTemplateButton throttleButton3 { get; }
        
        /// <summary>
        /// The "Throttle Button 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 4" element.</returns>
        IControllerTemplateButton throttleButton4 { get; }
        
        /// <summary>
        /// The "Throttle Button 5" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 5" element.</returns>
        IControllerTemplateButton throttleButton5 { get; }
        
        /// <summary>
        /// The "Throttle Button 6" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 6" element.</returns>
        IControllerTemplateButton throttleButton6 { get; }
        
        /// <summary>
        /// The "Throttle Button 7" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 7" element.</returns>
        IControllerTemplateButton throttleButton7 { get; }
        
        /// <summary>
        /// The "Throttle Button 8" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 8" element.</returns>
        IControllerTemplateButton throttleButton8 { get; }
        
        /// <summary>
        /// The "Throttle Button 9" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 9" element.</returns>
        IControllerTemplateButton throttleButton9 { get; }
        
        /// <summary>
        /// The "Throttle Button 10" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 10" element.</returns>
        IControllerTemplateButton throttleButton10 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 1" element.</returns>
        IControllerTemplateButton throttleBaseButton1 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 2" element.</returns>
        IControllerTemplateButton throttleBaseButton2 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 3" element.</returns>
        IControllerTemplateButton throttleBaseButton3 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 4" element.</returns>
        IControllerTemplateButton throttleBaseButton4 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 5" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 5" element.</returns>
        IControllerTemplateButton throttleBaseButton5 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 6" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 6" element.</returns>
        IControllerTemplateButton throttleBaseButton6 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 7" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 7" element.</returns>
        IControllerTemplateButton throttleBaseButton7 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 8" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 8" element.</returns>
        IControllerTemplateButton throttleBaseButton8 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 9" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 9" element.</returns>
        IControllerTemplateButton throttleBaseButton9 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 10" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 10" element.</returns>
        IControllerTemplateButton throttleBaseButton10 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 11" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 11" element.</returns>
        IControllerTemplateButton throttleBaseButton11 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 12" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 12" element.</returns>
        IControllerTemplateButton throttleBaseButton12 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 13" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 13" element.</returns>
        IControllerTemplateButton throttleBaseButton13 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 14" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 14" element.</returns>
        IControllerTemplateButton throttleBaseButton14 { get; }
        
        /// <summary>
        /// The "Throttle Base Button 15" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 15" element.</returns>
        IControllerTemplateButton throttleBaseButton15 { get; }
        
        /// <summary>
        /// The "Throttle Slider 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 1" element.</returns>
        IControllerTemplateAxis throttleSlider1 { get; }
        
        /// <summary>
        /// The "Throttle Slider 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 2" element.</returns>
        IControllerTemplateAxis throttleSlider2 { get; }
        
        /// <summary>
        /// The "Throttle Slider 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 3" element.</returns>
        IControllerTemplateAxis throttleSlider3 { get; }
        
        /// <summary>
        /// The "Throttle Slider 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 4" element.</returns>
        IControllerTemplateAxis throttleSlider4 { get; }
        
        /// <summary>
        /// The "Throttle Dial 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 1" element.</returns>
        IControllerTemplateAxis throttleDial1 { get; }
        
        /// <summary>
        /// The "Throttle Dial 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 2" element.</returns>
        IControllerTemplateAxis throttleDial2 { get; }
        
        /// <summary>
        /// The "Throttle Dial 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 3" element.</returns>
        IControllerTemplateAxis throttleDial3 { get; }
        
        /// <summary>
        /// The "Throttle Dial 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 4" element.</returns>
        IControllerTemplateAxis throttleDial4 { get; }
        
        /// <summary>
        /// The "Throttle Wheel 1 Forward" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 1 Forward" element.</returns>
        IControllerTemplateButton throttleWheel1Forward { get; }
        
        /// <summary>
        /// The "Throttle Wheel 1 Back" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 1 Back" element.</returns>
        IControllerTemplateButton throttleWheel1Back { get; }
        
        /// <summary>
        /// The "Throttle Wheel 1 Press" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 1 Press" element.</returns>
        IControllerTemplateButton throttleWheel1Press { get; }
        
        /// <summary>
        /// The "Throttle Wheel 2 Forward" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 2 Forward" element.</returns>
        IControllerTemplateButton throttleWheel2Forward { get; }
        
        /// <summary>
        /// The "Throttle Wheel 2 Back" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 2 Back" element.</returns>
        IControllerTemplateButton throttleWheel2Back { get; }
        
        /// <summary>
        /// The "Throttle Wheel 2 Press" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 2 Press" element.</returns>
        IControllerTemplateButton throttleWheel2Press { get; }
        
        /// <summary>
        /// The "Throttle Wheel 3 Forward" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 3 Forward" element.</returns>
        IControllerTemplateButton throttleWheel3Forward { get; }
        
        /// <summary>
        /// The "Throttle Wheel 3 Back" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 3 Back" element.</returns>
        IControllerTemplateButton throttleWheel3Back { get; }
        
        /// <summary>
        /// The "Throttle Wheel 3 Press" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 3 Press" element.</returns>
        IControllerTemplateButton throttleWheel3Press { get; }
        
        /// <summary>
        /// The "Left Pedal" element.
        /// </summary>
        /// <returns>Returns the "Left Pedal" element.</returns>
        IControllerTemplateAxis leftPedal { get; }
        
        /// <summary>
        /// The "Right Pedal" element.
        /// </summary>
        /// <returns>Returns the "Right Pedal" element.</returns>
        IControllerTemplateAxis rightPedal { get; }
        
        /// <summary>
        /// The "Slide Pedals" element.
        /// </summary>
        /// <returns>Returns the "Slide Pedals" element.</returns>
        IControllerTemplateAxis slidePedals { get; }
        
        /// <summary>
        /// The "Stick" element.
        /// </summary>
        /// <returns>Returns the "Stick" element.</returns>
        IControllerTemplateStick stick { get; }
        
        /// <summary>
        /// The "Stick Mini Stick 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Mini Stick 1" element.</returns>
        IControllerTemplateThumbStick stickMiniStick1 { get; }
        
        /// <summary>
        /// The "Stick Mini Stick 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Mini Stick 2" element.</returns>
        IControllerTemplateThumbStick stickMiniStick2 { get; }
        
        /// <summary>
        /// The "Stick Hat 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 1" element.</returns>
        IControllerTemplateHat stickHat1 { get; }
        
        /// <summary>
        /// The "Stick Hat 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 2" element.</returns>
        IControllerTemplateHat stickHat2 { get; }
        
        /// <summary>
        /// The "Stick Hat 3" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 3" element.</returns>
        IControllerTemplateHat stickHat3 { get; }
        
        /// <summary>
        /// The "Stick Hat 4" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 4" element.</returns>
        IControllerTemplateHat stickHat4 { get; }
        
        /// <summary>
        /// The "Throttle 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle 1" element.</returns>
        IControllerTemplateThrottle throttle1 { get; }
        
        /// <summary>
        /// The "Throttle 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle 2" element.</returns>
        IControllerTemplateThrottle throttle2 { get; }
        
        /// <summary>
        /// The "Throttle Mini Stick" element.
        /// </summary>
        /// <returns>Returns the "Throttle Mini Stick" element.</returns>
        IControllerTemplateThumbStick throttleMiniStick { get; }
        
        /// <summary>
        /// The "Throttle Hat 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 1" element.</returns>
        IControllerTemplateHat throttleHat1 { get; }
        
        /// <summary>
        /// The "Throttle Hat 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 2" element.</returns>
        IControllerTemplateHat throttleHat2 { get; }
        
        /// <summary>
        /// The "Throttle Hat 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 3" element.</returns>
        IControllerTemplateHat throttleHat3 { get; }
        
        /// <summary>
        /// The "Throttle Hat 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 4" element.</returns>
        IControllerTemplateHat throttleHat4 { get; }
    }
    
    /// <summary>
    /// Interface for a Flight Yoke Controller Template.
    /// </summary>
    public partial interface IFlightYokeTemplate : IControllerTemplate {
        
        /// <summary>
        /// The "Left Paddle" element.
        /// </summary>
        /// <returns>Returns the "Left Paddle" element.</returns>
        IControllerTemplateButton leftPaddle { get; }
        
        /// <summary>
        /// The "Right Paddle" element.
        /// </summary>
        /// <returns>Returns the "Right Paddle" element.</returns>
        IControllerTemplateButton rightPaddle { get; }
        
        /// <summary>
        /// The "Left Grip Button 1" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 1" element.</returns>
        IControllerTemplateButton leftGripButton1 { get; }
        
        /// <summary>
        /// The "Left Grip Button 2" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 2" element.</returns>
        IControllerTemplateButton leftGripButton2 { get; }
        
        /// <summary>
        /// The "Left Grip Button 3" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 3" element.</returns>
        IControllerTemplateButton leftGripButton3 { get; }
        
        /// <summary>
        /// The "Left Grip Button 4" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 4" element.</returns>
        IControllerTemplateButton leftGripButton4 { get; }
        
        /// <summary>
        /// The "Left Grip Button 5" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 5" element.</returns>
        IControllerTemplateButton leftGripButton5 { get; }
        
        /// <summary>
        /// The "Left Grip Button 6" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 6" element.</returns>
        IControllerTemplateButton leftGripButton6 { get; }
        
        /// <summary>
        /// The "Right Grip Button 1" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 1" element.</returns>
        IControllerTemplateButton rightGripButton1 { get; }
        
        /// <summary>
        /// The "Right Grip Button 2" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 2" element.</returns>
        IControllerTemplateButton rightGripButton2 { get; }
        
        /// <summary>
        /// The "Right Grip Button 3" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 3" element.</returns>
        IControllerTemplateButton rightGripButton3 { get; }
        
        /// <summary>
        /// The "Right Grip Button 4" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 4" element.</returns>
        IControllerTemplateButton rightGripButton4 { get; }
        
        /// <summary>
        /// The "Right Grip Button 5" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 5" element.</returns>
        IControllerTemplateButton rightGripButton5 { get; }
        
        /// <summary>
        /// The "Right Grip Button 6" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 6" element.</returns>
        IControllerTemplateButton rightGripButton6 { get; }
        
        /// <summary>
        /// The "Center Button 1" element.
        /// </summary>
        /// <returns>Returns the "Center Button 1" element.</returns>
        IControllerTemplateButton centerButton1 { get; }
        
        /// <summary>
        /// The "Center Button 2" element.
        /// </summary>
        /// <returns>Returns the "Center Button 2" element.</returns>
        IControllerTemplateButton centerButton2 { get; }
        
        /// <summary>
        /// The "Center Button 3" element.
        /// </summary>
        /// <returns>Returns the "Center Button 3" element.</returns>
        IControllerTemplateButton centerButton3 { get; }
        
        /// <summary>
        /// The "Center Button 4" element.
        /// </summary>
        /// <returns>Returns the "Center Button 4" element.</returns>
        IControllerTemplateButton centerButton4 { get; }
        
        /// <summary>
        /// The "Center Button 5" element.
        /// </summary>
        /// <returns>Returns the "Center Button 5" element.</returns>
        IControllerTemplateButton centerButton5 { get; }
        
        /// <summary>
        /// The "Center Button 6" element.
        /// </summary>
        /// <returns>Returns the "Center Button 6" element.</returns>
        IControllerTemplateButton centerButton6 { get; }
        
        /// <summary>
        /// The "Center Button 7" element.
        /// </summary>
        /// <returns>Returns the "Center Button 7" element.</returns>
        IControllerTemplateButton centerButton7 { get; }
        
        /// <summary>
        /// The "Center Button 8" element.
        /// </summary>
        /// <returns>Returns the "Center Button 8" element.</returns>
        IControllerTemplateButton centerButton8 { get; }
        
        /// <summary>
        /// The "Wheel 1 Up" element.
        /// </summary>
        /// <returns>Returns the "Wheel 1 Up" element.</returns>
        IControllerTemplateButton wheel1Up { get; }
        
        /// <summary>
        /// The "Wheel 1 Down" element.
        /// </summary>
        /// <returns>Returns the "Wheel 1 Down" element.</returns>
        IControllerTemplateButton wheel1Down { get; }
        
        /// <summary>
        /// The "Wheel 1 Press" element.
        /// </summary>
        /// <returns>Returns the "Wheel 1 Press" element.</returns>
        IControllerTemplateButton wheel1Press { get; }
        
        /// <summary>
        /// The "Wheel 2 Up" element.
        /// </summary>
        /// <returns>Returns the "Wheel 2 Up" element.</returns>
        IControllerTemplateButton wheel2Up { get; }
        
        /// <summary>
        /// The "Wheel 2 Down" element.
        /// </summary>
        /// <returns>Returns the "Wheel 2 Down" element.</returns>
        IControllerTemplateButton wheel2Down { get; }
        
        /// <summary>
        /// The "Wheel 2 Press" element.
        /// </summary>
        /// <returns>Returns the "Wheel 2 Press" element.</returns>
        IControllerTemplateButton wheel2Press { get; }
        
        /// <summary>
        /// The "Console Button 1" element.
        /// </summary>
        /// <returns>Returns the "Console Button 1" element.</returns>
        IControllerTemplateButton consoleButton1 { get; }
        
        /// <summary>
        /// The "Console Button 2" element.
        /// </summary>
        /// <returns>Returns the "Console Button 2" element.</returns>
        IControllerTemplateButton consoleButton2 { get; }
        
        /// <summary>
        /// The "Console Button 3" element.
        /// </summary>
        /// <returns>Returns the "Console Button 3" element.</returns>
        IControllerTemplateButton consoleButton3 { get; }
        
        /// <summary>
        /// The "Console Button 4" element.
        /// </summary>
        /// <returns>Returns the "Console Button 4" element.</returns>
        IControllerTemplateButton consoleButton4 { get; }
        
        /// <summary>
        /// The "Console Button 5" element.
        /// </summary>
        /// <returns>Returns the "Console Button 5" element.</returns>
        IControllerTemplateButton consoleButton5 { get; }
        
        /// <summary>
        /// The "Console Button 6" element.
        /// </summary>
        /// <returns>Returns the "Console Button 6" element.</returns>
        IControllerTemplateButton consoleButton6 { get; }
        
        /// <summary>
        /// The "Console Button 7" element.
        /// </summary>
        /// <returns>Returns the "Console Button 7" element.</returns>
        IControllerTemplateButton consoleButton7 { get; }
        
        /// <summary>
        /// The "Console Button 8" element.
        /// </summary>
        /// <returns>Returns the "Console Button 8" element.</returns>
        IControllerTemplateButton consoleButton8 { get; }
        
        /// <summary>
        /// The "Console Button 9" element.
        /// </summary>
        /// <returns>Returns the "Console Button 9" element.</returns>
        IControllerTemplateButton consoleButton9 { get; }
        
        /// <summary>
        /// The "Console Button 10" element.
        /// </summary>
        /// <returns>Returns the "Console Button 10" element.</returns>
        IControllerTemplateButton consoleButton10 { get; }
        
        /// <summary>
        /// The "Mode 1" element.
        /// </summary>
        /// <returns>Returns the "Mode 1" element.</returns>
        IControllerTemplateButton mode1 { get; }
        
        /// <summary>
        /// The "Mode 2" element.
        /// </summary>
        /// <returns>Returns the "Mode 2" element.</returns>
        IControllerTemplateButton mode2 { get; }
        
        /// <summary>
        /// The "Mode 3" element.
        /// </summary>
        /// <returns>Returns the "Mode 3" element.</returns>
        IControllerTemplateButton mode3 { get; }
        
        /// <summary>
        /// The "Yoke" element.
        /// </summary>
        /// <returns>Returns the "Yoke" element.</returns>
        IControllerTemplateYoke yoke { get; }
        
        /// <summary>
        /// The "Lever 1" element.
        /// </summary>
        /// <returns>Returns the "Lever 1" element.</returns>
        IControllerTemplateThrottle lever1 { get; }
        
        /// <summary>
        /// The "Lever 2" element.
        /// </summary>
        /// <returns>Returns the "Lever 2" element.</returns>
        IControllerTemplateThrottle lever2 { get; }
        
        /// <summary>
        /// The "Lever 3" element.
        /// </summary>
        /// <returns>Returns the "Lever 3" element.</returns>
        IControllerTemplateThrottle lever3 { get; }
        
        /// <summary>
        /// The "Lever 4" element.
        /// </summary>
        /// <returns>Returns the "Lever 4" element.</returns>
        IControllerTemplateThrottle lever4 { get; }
        
        /// <summary>
        /// The "Lever 5" element.
        /// </summary>
        /// <returns>Returns the "Lever 5" element.</returns>
        IControllerTemplateThrottle lever5 { get; }
        
        /// <summary>
        /// The "Left Grip Hat" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Hat" element.</returns>
        IControllerTemplateHat leftGripHat { get; }
        
        /// <summary>
        /// The "Right Grip Hat" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Hat" element.</returns>
        IControllerTemplateHat rightGripHat { get; }
    }
    
    /// <summary>
    /// Interface for a Flight Pedals Controller Template.
    /// </summary>
    public partial interface IFlightPedalsTemplate : IControllerTemplate {
        
        /// <summary>
        /// The "Left Pedal" element.
        /// </summary>
        /// <returns>Returns the "Left Pedal" element.</returns>
        IControllerTemplateAxis leftPedal { get; }
        
        /// <summary>
        /// The "Right Pedal" element.
        /// </summary>
        /// <returns>Returns the "Right Pedal" element.</returns>
        IControllerTemplateAxis rightPedal { get; }
        
        /// <summary>
        /// The "Slide" element.
        /// </summary>
        /// <returns>Returns the "Slide" element.</returns>
        IControllerTemplateAxis slide { get; }
    }
    
    /// <summary>
    /// Interface for a 6 DoF Controller Controller Template.
    /// </summary>
    public partial interface ISixDofControllerTemplate : IControllerTemplate {
        
        /// <summary>
        /// The "Extra Axis 1" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 1" element.</returns>
        IControllerTemplateAxis extraAxis1 { get; }
        
        /// <summary>
        /// The "Extra Axis 2" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 2" element.</returns>
        IControllerTemplateAxis extraAxis2 { get; }
        
        /// <summary>
        /// The "Extra Axis 3" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 3" element.</returns>
        IControllerTemplateAxis extraAxis3 { get; }
        
        /// <summary>
        /// The "Extra Axis 4" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 4" element.</returns>
        IControllerTemplateAxis extraAxis4 { get; }
        
        /// <summary>
        /// The "Button 1" element.
        /// </summary>
        /// <returns>Returns the "Button 1" element.</returns>
        IControllerTemplateButton button1 { get; }
        
        /// <summary>
        /// The "Button 2" element.
        /// </summary>
        /// <returns>Returns the "Button 2" element.</returns>
        IControllerTemplateButton button2 { get; }
        
        /// <summary>
        /// The "Button 3" element.
        /// </summary>
        /// <returns>Returns the "Button 3" element.</returns>
        IControllerTemplateButton button3 { get; }
        
        /// <summary>
        /// The "Button 4" element.
        /// </summary>
        /// <returns>Returns the "Button 4" element.</returns>
        IControllerTemplateButton button4 { get; }
        
        /// <summary>
        /// The "Button 5" element.
        /// </summary>
        /// <returns>Returns the "Button 5" element.</returns>
        IControllerTemplateButton button5 { get; }
        
        /// <summary>
        /// The "Button 6" element.
        /// </summary>
        /// <returns>Returns the "Button 6" element.</returns>
        IControllerTemplateButton button6 { get; }
        
        /// <summary>
        /// The "Button 7" element.
        /// </summary>
        /// <returns>Returns the "Button 7" element.</returns>
        IControllerTemplateButton button7 { get; }
        
        /// <summary>
        /// The "Button 8" element.
        /// </summary>
        /// <returns>Returns the "Button 8" element.</returns>
        IControllerTemplateButton button8 { get; }
        
        /// <summary>
        /// The "Button 9" element.
        /// </summary>
        /// <returns>Returns the "Button 9" element.</returns>
        IControllerTemplateButton button9 { get; }
        
        /// <summary>
        /// The "Button 10" element.
        /// </summary>
        /// <returns>Returns the "Button 10" element.</returns>
        IControllerTemplateButton button10 { get; }
        
        /// <summary>
        /// The "Button 11" element.
        /// </summary>
        /// <returns>Returns the "Button 11" element.</returns>
        IControllerTemplateButton button11 { get; }
        
        /// <summary>
        /// The "Button 12" element.
        /// </summary>
        /// <returns>Returns the "Button 12" element.</returns>
        IControllerTemplateButton button12 { get; }
        
        /// <summary>
        /// The "Button 13" element.
        /// </summary>
        /// <returns>Returns the "Button 13" element.</returns>
        IControllerTemplateButton button13 { get; }
        
        /// <summary>
        /// The "Button 14" element.
        /// </summary>
        /// <returns>Returns the "Button 14" element.</returns>
        IControllerTemplateButton button14 { get; }
        
        /// <summary>
        /// The "Button 15" element.
        /// </summary>
        /// <returns>Returns the "Button 15" element.</returns>
        IControllerTemplateButton button15 { get; }
        
        /// <summary>
        /// The "Button 16" element.
        /// </summary>
        /// <returns>Returns the "Button 16" element.</returns>
        IControllerTemplateButton button16 { get; }
        
        /// <summary>
        /// The "Button 17" element.
        /// </summary>
        /// <returns>Returns the "Button 17" element.</returns>
        IControllerTemplateButton button17 { get; }
        
        /// <summary>
        /// The "Button 18" element.
        /// </summary>
        /// <returns>Returns the "Button 18" element.</returns>
        IControllerTemplateButton button18 { get; }
        
        /// <summary>
        /// The "Button 19" element.
        /// </summary>
        /// <returns>Returns the "Button 19" element.</returns>
        IControllerTemplateButton button19 { get; }
        
        /// <summary>
        /// The "Button 20" element.
        /// </summary>
        /// <returns>Returns the "Button 20" element.</returns>
        IControllerTemplateButton button20 { get; }
        
        /// <summary>
        /// The "Button 21" element.
        /// </summary>
        /// <returns>Returns the "Button 21" element.</returns>
        IControllerTemplateButton button21 { get; }
        
        /// <summary>
        /// The "Button 22" element.
        /// </summary>
        /// <returns>Returns the "Button 22" element.</returns>
        IControllerTemplateButton button22 { get; }
        
        /// <summary>
        /// The "Button 23" element.
        /// </summary>
        /// <returns>Returns the "Button 23" element.</returns>
        IControllerTemplateButton button23 { get; }
        
        /// <summary>
        /// The "Button 24" element.
        /// </summary>
        /// <returns>Returns the "Button 24" element.</returns>
        IControllerTemplateButton button24 { get; }
        
        /// <summary>
        /// The "Button 25" element.
        /// </summary>
        /// <returns>Returns the "Button 25" element.</returns>
        IControllerTemplateButton button25 { get; }
        
        /// <summary>
        /// The "Button 26" element.
        /// </summary>
        /// <returns>Returns the "Button 26" element.</returns>
        IControllerTemplateButton button26 { get; }
        
        /// <summary>
        /// The "Button 27" element.
        /// </summary>
        /// <returns>Returns the "Button 27" element.</returns>
        IControllerTemplateButton button27 { get; }
        
        /// <summary>
        /// The "Button 28" element.
        /// </summary>
        /// <returns>Returns the "Button 28" element.</returns>
        IControllerTemplateButton button28 { get; }
        
        /// <summary>
        /// The "Button 29" element.
        /// </summary>
        /// <returns>Returns the "Button 29" element.</returns>
        IControllerTemplateButton button29 { get; }
        
        /// <summary>
        /// The "Button 30" element.
        /// </summary>
        /// <returns>Returns the "Button 30" element.</returns>
        IControllerTemplateButton button30 { get; }
        
        /// <summary>
        /// The "Button 31" element.
        /// </summary>
        /// <returns>Returns the "Button 31" element.</returns>
        IControllerTemplateButton button31 { get; }
        
        /// <summary>
        /// The "Button 32" element.
        /// </summary>
        /// <returns>Returns the "Button 32" element.</returns>
        IControllerTemplateButton button32 { get; }
        
        /// <summary>
        /// The "Hat 1" element.
        /// </summary>
        /// <returns>Returns the "Hat 1" element.</returns>
        IControllerTemplateHat hat1 { get; }
        
        /// <summary>
        /// The "Hat 2" element.
        /// </summary>
        /// <returns>Returns the "Hat 2" element.</returns>
        IControllerTemplateHat hat2 { get; }
        
        /// <summary>
        /// The "Throttle 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle 1" element.</returns>
        IControllerTemplateThrottle throttle1 { get; }
        
        /// <summary>
        /// The "Throttle 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle 2" element.</returns>
        IControllerTemplateThrottle throttle2 { get; }
        
        /// <summary>
        /// The "Stick" element.
        /// </summary>
        /// <returns>Returns the "Stick" element.</returns>
        IControllerTemplateStick6D stick { get; }
    }
    
    #endregion
    
    #region Classes
    
    /// <summary>
    /// Class representing a Gamepad Template.
    /// This class contains constants. Do not use this class to interact with the Rewired API. 
    /// Use the interface <see cref="IGamepadTemplate"/> instead.
    /// </summary>
    public sealed partial class GamepadTemplate : ControllerTemplate, IGamepadTemplate {
        
        /// <summary>
        /// The type Guid of the Controller Template.
        /// </summary>
        public static readonly System.Guid typeGuid = new System.Guid("83b427e4-086f-47f3-bb06-be266abd1ca5");
        
        #region Constants
        
        /// <summary>
        /// Element identifier id for "Left Stick X".
        /// </summary>
        public const int elementId_leftStickX = 0;
        
        /// <summary>
        /// Element identifier id for "Left Stick Y".
        /// </summary>
        public const int elementId_leftStickY = 1;
        
        /// <summary>
        /// Element identifier id for "Right Stick X".
        /// </summary>
        public const int elementId_rightStickX = 2;
        
        /// <summary>
        /// Element identifier id for "Right Stick Y".
        /// </summary>
        public const int elementId_rightStickY = 3;
        
        /// <summary>
        /// Element identifier id for "Action Bottom Row 1".
        /// </summary>
        public const int elementId_actionBottomRow1 = 4;
        
        /// <summary>
        /// Element identifier id for "Action Bottom Row 1".
        /// This is an alias for <see cref="elementId_actionBottomRow1"/>.
        /// </summary>
        public const int elementId_a = 4;
        
        /// <summary>
        /// Element identifier id for "Action Bottom Row 2".
        /// </summary>
        public const int elementId_actionBottomRow2 = 5;
        
        /// <summary>
        /// Element identifier id for "Action Bottom Row 2".
        /// This is an alias for <see cref="elementId_actionBottomRow2"/>.
        /// </summary>
        public const int elementId_b = 5;
        
        /// <summary>
        /// Element identifier id for "Action Bottom Row 3".
        /// </summary>
        public const int elementId_actionBottomRow3 = 6;
        
        /// <summary>
        /// Element identifier id for "Action Bottom Row 3".
        /// This is an alias for <see cref="elementId_actionBottomRow3"/>.
        /// </summary>
        public const int elementId_c = 6;
        
        /// <summary>
        /// Element identifier id for "Action Top Row 1".
        /// </summary>
        public const int elementId_actionTopRow1 = 7;
        
        /// <summary>
        /// Element identifier id for "Action Top Row 1".
        /// This is an alias for <see cref="elementId_actionTopRow1"/>.
        /// </summary>
        public const int elementId_x = 7;
        
        /// <summary>
        /// Element identifier id for "Action Top Row 2".
        /// </summary>
        public const int elementId_actionTopRow2 = 8;
        
        /// <summary>
        /// Element identifier id for "Action Top Row 2".
        /// This is an alias for <see cref="elementId_actionTopRow2"/>.
        /// </summary>
        public const int elementId_y = 8;
        
        /// <summary>
        /// Element identifier id for "Action Top Row 3".
        /// </summary>
        public const int elementId_actionTopRow3 = 9;
        
        /// <summary>
        /// Element identifier id for "Action Top Row 3".
        /// This is an alias for <see cref="elementId_actionTopRow3"/>.
        /// </summary>
        public const int elementId_z = 9;
        
        /// <summary>
        /// Element identifier id for "Left Shoulder 1".
        /// </summary>
        public const int elementId_leftShoulder1 = 10;
        
        /// <summary>
        /// Element identifier id for "Left Shoulder 1".
        /// This is an alias for <see cref="elementId_leftShoulder1"/>.
        /// </summary>
        public const int elementId_leftBumper = 10;
        
        /// <summary>
        /// Element identifier id for "Left Shoulder 2".
        /// </summary>
        public const int elementId_leftShoulder2 = 11;
        
        /// <summary>
        /// Element identifier id for "Left Shoulder 2".
        /// This is an alias for <see cref="elementId_leftShoulder2"/>.
        /// </summary>
        public const int elementId_leftTrigger = 11;
        
        /// <summary>
        /// Element identifier id for "Right Shoulder 1".
        /// </summary>
        public const int elementId_rightShoulder1 = 12;
        
        /// <summary>
        /// Element identifier id for "Right Shoulder 1".
        /// This is an alias for <see cref="elementId_rightShoulder1"/>.
        /// </summary>
        public const int elementId_rightBumper = 12;
        
        /// <summary>
        /// Element identifier id for "Right Shoulder 2".
        /// </summary>
        public const int elementId_rightShoulder2 = 13;
        
        /// <summary>
        /// Element identifier id for "Right Shoulder 2".
        /// This is an alias for <see cref="elementId_rightShoulder2"/>.
        /// </summary>
        public const int elementId_rightTrigger = 13;
        
        /// <summary>
        /// Element identifier id for "Center 1".
        /// </summary>
        public const int elementId_center1 = 14;
        
        /// <summary>
        /// Element identifier id for "Center 1".
        /// This is an alias for <see cref="elementId_center1"/>.
        /// </summary>
        public const int elementId_back = 14;
        
        /// <summary>
        /// Element identifier id for "Center 2".
        /// </summary>
        public const int elementId_center2 = 15;
        
        /// <summary>
        /// Element identifier id for "Center 2".
        /// This is an alias for <see cref="elementId_center2"/>.
        /// </summary>
        public const int elementId_start = 15;
        
        /// <summary>
        /// Element identifier id for "Center 3".
        /// </summary>
        public const int elementId_center3 = 16;
        
        /// <summary>
        /// Element identifier id for "Center 3".
        /// This is an alias for <see cref="elementId_center3"/>.
        /// </summary>
        public const int elementId_guide = 16;
        
        /// <summary>
        /// Element identifier id for "Left Stick Button".
        /// </summary>
        public const int elementId_leftStickButton = 17;
        
        /// <summary>
        /// Element identifier id for "Right Stick Button".
        /// </summary>
        public const int elementId_rightStickButton = 18;
        
        /// <summary>
        /// Element identifier id for "D-Pad Up".
        /// </summary>
        public const int elementId_dPadUp = 19;
        
        /// <summary>
        /// Element identifier id for "D-Pad Right".
        /// </summary>
        public const int elementId_dPadRight = 20;
        
        /// <summary>
        /// Element identifier id for "D-Pad Down".
        /// </summary>
        public const int elementId_dPadDown = 21;
        
        /// <summary>
        /// Element identifier id for "D-Pad Left".
        /// </summary>
        public const int elementId_dPadLeft = 22;
        
        /// <summary>
        /// Element identifier id for "Left Stick".
        /// </summary>
        public const int elementId_leftStick = 23;
        
        /// <summary>
        /// Element identifier id for "Right Stick".
        /// </summary>
        public const int elementId_rightStick = 24;
        
        /// <summary>
        /// Element identifier id for "D-Pad".
        /// </summary>
        public const int elementId_dPad = 25;
        
        #endregion
        
        #region IGamepadTemplate implementation
        
        /// <summary>
        /// The "Action Bottom Row 1" element.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.actionBottomRow1 { get { return GetElement<IControllerTemplateButton>(elementId_actionBottomRow1); } }
        
        /// <summary>
        /// The "Action Bottom Row 1" element.
        /// This is an alias for <see cref="elementId_actionBottomRow1"/>.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.a { get { return GetElement<IControllerTemplateButton>(elementId_a); } }
        
        /// <summary>
        /// The "Action Bottom Row 2" element.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 2" element.</returns>
        IControllerTemplateButton IGamepadTemplate.actionBottomRow2 { get { return GetElement<IControllerTemplateButton>(elementId_actionBottomRow2); } }
        
        /// <summary>
        /// The "Action Bottom Row 2" element.
        /// This is an alias for <see cref="elementId_actionBottomRow2"/>.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 2" element.</returns>
        IControllerTemplateButton IGamepadTemplate.b { get { return GetElement<IControllerTemplateButton>(elementId_b); } }
        
        /// <summary>
        /// The "Action Bottom Row 3" element.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 3" element.</returns>
        IControllerTemplateButton IGamepadTemplate.actionBottomRow3 { get { return GetElement<IControllerTemplateButton>(elementId_actionBottomRow3); } }
        
        /// <summary>
        /// The "Action Bottom Row 3" element.
        /// This is an alias for <see cref="elementId_actionBottomRow3"/>.
        /// </summary>
        /// <returns>Returns the "Action Bottom Row 3" element.</returns>
        IControllerTemplateButton IGamepadTemplate.c { get { return GetElement<IControllerTemplateButton>(elementId_c); } }
        
        /// <summary>
        /// The "Action Top Row 1" element.
        /// </summary>
        /// <returns>Returns the "Action Top Row 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.actionTopRow1 { get { return GetElement<IControllerTemplateButton>(elementId_actionTopRow1); } }
        
        /// <summary>
        /// The "Action Top Row 1" element.
        /// This is an alias for <see cref="elementId_actionTopRow1"/>.
        /// </summary>
        /// <returns>Returns the "Action Top Row 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.x { get { return GetElement<IControllerTemplateButton>(elementId_x); } }
        
        /// <summary>
        /// The "Action Top Row 2" element.
        /// </summary>
        /// <returns>Returns the "Action Top Row 2" element.</returns>
        IControllerTemplateButton IGamepadTemplate.actionTopRow2 { get { return GetElement<IControllerTemplateButton>(elementId_actionTopRow2); } }
        
        /// <summary>
        /// The "Action Top Row 2" element.
        /// This is an alias for <see cref="elementId_actionTopRow2"/>.
        /// </summary>
        /// <returns>Returns the "Action Top Row 2" element.</returns>
        IControllerTemplateButton IGamepadTemplate.y { get { return GetElement<IControllerTemplateButton>(elementId_y); } }
        
        /// <summary>
        /// The "Action Top Row 3" element.
        /// </summary>
        /// <returns>Returns the "Action Top Row 3" element.</returns>
        IControllerTemplateButton IGamepadTemplate.actionTopRow3 { get { return GetElement<IControllerTemplateButton>(elementId_actionTopRow3); } }
        
        /// <summary>
        /// The "Action Top Row 3" element.
        /// This is an alias for <see cref="elementId_actionTopRow3"/>.
        /// </summary>
        /// <returns>Returns the "Action Top Row 3" element.</returns>
        IControllerTemplateButton IGamepadTemplate.z { get { return GetElement<IControllerTemplateButton>(elementId_z); } }
        
        /// <summary>
        /// The "Left Shoulder 1" element.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.leftShoulder1 { get { return GetElement<IControllerTemplateButton>(elementId_leftShoulder1); } }
        
        /// <summary>
        /// The "Left Shoulder 1" element.
        /// This is an alias for <see cref="elementId_leftShoulder1"/>.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.leftBumper { get { return GetElement<IControllerTemplateButton>(elementId_leftBumper); } }
        
        /// <summary>
        /// The "Left Shoulder 2" element.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 2" element.</returns>
        IControllerTemplateAxis IGamepadTemplate.leftShoulder2 { get { return GetElement<IControllerTemplateAxis>(elementId_leftShoulder2); } }
        
        /// <summary>
        /// The "Left Shoulder 2" element.
        /// This is an alias for <see cref="elementId_leftShoulder2"/>.
        /// </summary>
        /// <returns>Returns the "Left Shoulder 2" element.</returns>
        IControllerTemplateAxis IGamepadTemplate.leftTrigger { get { return GetElement<IControllerTemplateAxis>(elementId_leftTrigger); } }
        
        /// <summary>
        /// The "Right Shoulder 1" element.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.rightShoulder1 { get { return GetElement<IControllerTemplateButton>(elementId_rightShoulder1); } }
        
        /// <summary>
        /// The "Right Shoulder 1" element.
        /// This is an alias for <see cref="elementId_rightShoulder1"/>.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.rightBumper { get { return GetElement<IControllerTemplateButton>(elementId_rightBumper); } }
        
        /// <summary>
        /// The "Right Shoulder 2" element.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 2" element.</returns>
        IControllerTemplateAxis IGamepadTemplate.rightShoulder2 { get { return GetElement<IControllerTemplateAxis>(elementId_rightShoulder2); } }
        
        /// <summary>
        /// The "Right Shoulder 2" element.
        /// This is an alias for <see cref="elementId_rightShoulder2"/>.
        /// </summary>
        /// <returns>Returns the "Right Shoulder 2" element.</returns>
        IControllerTemplateAxis IGamepadTemplate.rightTrigger { get { return GetElement<IControllerTemplateAxis>(elementId_rightTrigger); } }
        
        /// <summary>
        /// The "Center 1" element.
        /// </summary>
        /// <returns>Returns the "Center 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.center1 { get { return GetElement<IControllerTemplateButton>(elementId_center1); } }
        
        /// <summary>
        /// The "Center 1" element.
        /// This is an alias for <see cref="elementId_center1"/>.
        /// </summary>
        /// <returns>Returns the "Center 1" element.</returns>
        IControllerTemplateButton IGamepadTemplate.back { get { return GetElement<IControllerTemplateButton>(elementId_back); } }
        
        /// <summary>
        /// The "Center 2" element.
        /// </summary>
        /// <returns>Returns the "Center 2" element.</returns>
        IControllerTemplateButton IGamepadTemplate.center2 { get { return GetElement<IControllerTemplateButton>(elementId_center2); } }
        
        /// <summary>
        /// The "Center 2" element.
        /// This is an alias for <see cref="elementId_center2"/>.
        /// </summary>
        /// <returns>Returns the "Center 2" element.</returns>
        IControllerTemplateButton IGamepadTemplate.start { get { return GetElement<IControllerTemplateButton>(elementId_start); } }
        
        /// <summary>
        /// The "Center 3" element.
        /// </summary>
        /// <returns>Returns the "Center 3" element.</returns>
        IControllerTemplateButton IGamepadTemplate.center3 { get { return GetElement<IControllerTemplateButton>(elementId_center3); } }
        
        /// <summary>
        /// The "Center 3" element.
        /// This is an alias for <see cref="elementId_center3"/>.
        /// </summary>
        /// <returns>Returns the "Center 3" element.</returns>
        IControllerTemplateButton IGamepadTemplate.guide { get { return GetElement<IControllerTemplateButton>(elementId_guide); } }
        
        /// <summary>
        /// The "Left Stick" element.
        /// </summary>
        /// <returns>Returns the "Left Stick" element.</returns>
        IControllerTemplateThumbStick IGamepadTemplate.leftStick { get { return GetElement<IControllerTemplateThumbStick>(elementId_leftStick); } }
        
        /// <summary>
        /// The "Right Stick" element.
        /// </summary>
        /// <returns>Returns the "Right Stick" element.</returns>
        IControllerTemplateThumbStick IGamepadTemplate.rightStick { get { return GetElement<IControllerTemplateThumbStick>(elementId_rightStick); } }
        
        /// <summary>
        /// The "D-Pad" element.
        /// </summary>
        /// <returns>Returns the "D-Pad" element.</returns>
        IControllerTemplateDPad IGamepadTemplate.dPad { get { return GetElement<IControllerTemplateDPad>(elementId_dPad); } }
        
        #endregion
        
        /// <summary>
        /// Creates a new instance of this class.
        /// </summary>
        public GamepadTemplate(object payload) : base(payload) { }
    }
    
    /// <summary>
    /// Class representing a Racing Wheel Template.
    /// This class contains constants. Do not use this class to interact with the Rewired API. 
    /// Use the interface <see cref="IRacingWheelTemplate"/> instead.
    /// </summary>
    public sealed partial class RacingWheelTemplate : ControllerTemplate, IRacingWheelTemplate {
        
        /// <summary>
        /// The type Guid of the Controller Template.
        /// </summary>
        public static readonly System.Guid typeGuid = new System.Guid("104e31d8-9115-4dd5-a398-2e54d35e6c83");
        
        #region Constants
        
        /// <summary>
        /// Element identifier id for "Wheel".
        /// </summary>
        public const int elementId_wheel = 0;
        
        /// <summary>
        /// Element identifier id for "Accelerator".
        /// </summary>
        public const int elementId_accelerator = 1;
        
        /// <summary>
        /// Element identifier id for "Brake".
        /// </summary>
        public const int elementId_brake = 2;
        
        /// <summary>
        /// Element identifier id for "Clutch".
        /// </summary>
        public const int elementId_clutch = 3;
        
        /// <summary>
        /// Element identifier id for "Shift Down".
        /// </summary>
        public const int elementId_shiftDown = 4;
        
        /// <summary>
        /// Element identifier id for "Shift Up".
        /// </summary>
        public const int elementId_shiftUp = 5;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 1".
        /// </summary>
        public const int elementId_wheelButton1 = 6;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 2".
        /// </summary>
        public const int elementId_wheelButton2 = 7;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 3".
        /// </summary>
        public const int elementId_wheelButton3 = 8;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 4".
        /// </summary>
        public const int elementId_wheelButton4 = 9;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 5".
        /// </summary>
        public const int elementId_wheelButton5 = 10;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 6".
        /// </summary>
        public const int elementId_wheelButton6 = 11;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 7".
        /// </summary>
        public const int elementId_wheelButton7 = 12;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 8".
        /// </summary>
        public const int elementId_wheelButton8 = 13;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 9".
        /// </summary>
        public const int elementId_wheelButton9 = 14;
        
        /// <summary>
        /// Element identifier id for "Wheel Button 10".
        /// </summary>
        public const int elementId_wheelButton10 = 15;
        
        /// <summary>
        /// Element identifier id for "Console Button 1".
        /// </summary>
        public const int elementId_consoleButton1 = 16;
        
        /// <summary>
        /// Element identifier id for "Console Button 2".
        /// </summary>
        public const int elementId_consoleButton2 = 17;
        
        /// <summary>
        /// Element identifier id for "Console Button 3".
        /// </summary>
        public const int elementId_consoleButton3 = 18;
        
        /// <summary>
        /// Element identifier id for "Console Button 4".
        /// </summary>
        public const int elementId_consoleButton4 = 19;
        
        /// <summary>
        /// Element identifier id for "Console Button 5".
        /// </summary>
        public const int elementId_consoleButton5 = 20;
        
        /// <summary>
        /// Element identifier id for "Console Button 6".
        /// </summary>
        public const int elementId_consoleButton6 = 21;
        
        /// <summary>
        /// Element identifier id for "Console Button 7".
        /// </summary>
        public const int elementId_consoleButton7 = 22;
        
        /// <summary>
        /// Element identifier id for "Console Button 8".
        /// </summary>
        public const int elementId_consoleButton8 = 23;
        
        /// <summary>
        /// Element identifier id for "Console Button 9".
        /// </summary>
        public const int elementId_consoleButton9 = 24;
        
        /// <summary>
        /// Element identifier id for "Console Button 10".
        /// </summary>
        public const int elementId_consoleButton10 = 25;
        
        /// <summary>
        /// Element identifier id for "Shifter 1".
        /// </summary>
        public const int elementId_shifter1 = 26;
        
        /// <summary>
        /// Element identifier id for "Shifter 2".
        /// </summary>
        public const int elementId_shifter2 = 27;
        
        /// <summary>
        /// Element identifier id for "Shifter 3".
        /// </summary>
        public const int elementId_shifter3 = 28;
        
        /// <summary>
        /// Element identifier id for "Shifter 4".
        /// </summary>
        public const int elementId_shifter4 = 29;
        
        /// <summary>
        /// Element identifier id for "Shifter 5".
        /// </summary>
        public const int elementId_shifter5 = 30;
        
        /// <summary>
        /// Element identifier id for "Shifter 6".
        /// </summary>
        public const int elementId_shifter6 = 31;
        
        /// <summary>
        /// Element identifier id for "Shifter 7".
        /// </summary>
        public const int elementId_shifter7 = 32;
        
        /// <summary>
        /// Element identifier id for "Shifter 8".
        /// </summary>
        public const int elementId_shifter8 = 33;
        
        /// <summary>
        /// Element identifier id for "Shifter 9".
        /// </summary>
        public const int elementId_shifter9 = 34;
        
        /// <summary>
        /// Element identifier id for "Shifter 10".
        /// </summary>
        public const int elementId_shifter10 = 35;
        
        /// <summary>
        /// Element identifier id for "Reverse Gear".
        /// </summary>
        public const int elementId_reverseGear = 44;
        
        /// <summary>
        /// Element identifier id for "Select".
        /// </summary>
        public const int elementId_select = 36;
        
        /// <summary>
        /// Element identifier id for "Start".
        /// </summary>
        public const int elementId_start = 37;
        
        /// <summary>
        /// Element identifier id for "System Button".
        /// </summary>
        public const int elementId_systemButton = 38;
        
        /// <summary>
        /// Element identifier id for "Horn".
        /// </summary>
        public const int elementId_horn = 43;
        
        /// <summary>
        /// Element identifier id for "D-Pad Up".
        /// </summary>
        public const int elementId_dPadUp = 39;
        
        /// <summary>
        /// Element identifier id for "D-Pad Right".
        /// </summary>
        public const int elementId_dPadRight = 40;
        
        /// <summary>
        /// Element identifier id for "D-Pad Down".
        /// </summary>
        public const int elementId_dPadDown = 41;
        
        /// <summary>
        /// Element identifier id for "D-Pad Left".
        /// </summary>
        public const int elementId_dPadLeft = 42;
        
        /// <summary>
        /// Element identifier id for "D-Pad".
        /// </summary>
        public const int elementId_dPad = 45;
        
        #endregion
        
        #region IRacingWheelTemplate implementation
        
        /// <summary>
        /// The "Wheel" element.
        /// </summary>
        /// <returns>Returns the "Wheel" element.</returns>
        IControllerTemplateAxis IRacingWheelTemplate.wheel { get { return GetElement<IControllerTemplateAxis>(elementId_wheel); } }
        
        /// <summary>
        /// The "Accelerator" element.
        /// </summary>
        /// <returns>Returns the "Accelerator" element.</returns>
        IControllerTemplateAxis IRacingWheelTemplate.accelerator { get { return GetElement<IControllerTemplateAxis>(elementId_accelerator); } }
        
        /// <summary>
        /// The "Brake" element.
        /// </summary>
        /// <returns>Returns the "Brake" element.</returns>
        IControllerTemplateAxis IRacingWheelTemplate.brake { get { return GetElement<IControllerTemplateAxis>(elementId_brake); } }
        
        /// <summary>
        /// The "Clutch" element.
        /// </summary>
        /// <returns>Returns the "Clutch" element.</returns>
        IControllerTemplateAxis IRacingWheelTemplate.clutch { get { return GetElement<IControllerTemplateAxis>(elementId_clutch); } }
        
        /// <summary>
        /// The "Shift Down" element.
        /// </summary>
        /// <returns>Returns the "Shift Down" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shiftDown { get { return GetElement<IControllerTemplateButton>(elementId_shiftDown); } }
        
        /// <summary>
        /// The "Shift Up" element.
        /// </summary>
        /// <returns>Returns the "Shift Up" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shiftUp { get { return GetElement<IControllerTemplateButton>(elementId_shiftUp); } }
        
        /// <summary>
        /// The "Wheel Button 1" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 1" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton1 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton1); } }
        
        /// <summary>
        /// The "Wheel Button 2" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 2" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton2 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton2); } }
        
        /// <summary>
        /// The "Wheel Button 3" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 3" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton3 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton3); } }
        
        /// <summary>
        /// The "Wheel Button 4" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 4" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton4 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton4); } }
        
        /// <summary>
        /// The "Wheel Button 5" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 5" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton5 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton5); } }
        
        /// <summary>
        /// The "Wheel Button 6" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 6" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton6 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton6); } }
        
        /// <summary>
        /// The "Wheel Button 7" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 7" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton7 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton7); } }
        
        /// <summary>
        /// The "Wheel Button 8" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 8" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton8 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton8); } }
        
        /// <summary>
        /// The "Wheel Button 9" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 9" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton9 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton9); } }
        
        /// <summary>
        /// The "Wheel Button 10" element.
        /// </summary>
        /// <returns>Returns the "Wheel Button 10" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.wheelButton10 { get { return GetElement<IControllerTemplateButton>(elementId_wheelButton10); } }
        
        /// <summary>
        /// The "Console Button 1" element.
        /// </summary>
        /// <returns>Returns the "Console Button 1" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton1 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton1); } }
        
        /// <summary>
        /// The "Console Button 2" element.
        /// </summary>
        /// <returns>Returns the "Console Button 2" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton2 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton2); } }
        
        /// <summary>
        /// The "Console Button 3" element.
        /// </summary>
        /// <returns>Returns the "Console Button 3" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton3 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton3); } }
        
        /// <summary>
        /// The "Console Button 4" element.
        /// </summary>
        /// <returns>Returns the "Console Button 4" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton4 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton4); } }
        
        /// <summary>
        /// The "Console Button 5" element.
        /// </summary>
        /// <returns>Returns the "Console Button 5" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton5 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton5); } }
        
        /// <summary>
        /// The "Console Button 6" element.
        /// </summary>
        /// <returns>Returns the "Console Button 6" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton6 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton6); } }
        
        /// <summary>
        /// The "Console Button 7" element.
        /// </summary>
        /// <returns>Returns the "Console Button 7" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton7 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton7); } }
        
        /// <summary>
        /// The "Console Button 8" element.
        /// </summary>
        /// <returns>Returns the "Console Button 8" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton8 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton8); } }
        
        /// <summary>
        /// The "Console Button 9" element.
        /// </summary>
        /// <returns>Returns the "Console Button 9" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton9 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton9); } }
        
        /// <summary>
        /// The "Console Button 10" element.
        /// </summary>
        /// <returns>Returns the "Console Button 10" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.consoleButton10 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton10); } }
        
        /// <summary>
        /// The "Shifter 1" element.
        /// </summary>
        /// <returns>Returns the "Shifter 1" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter1 { get { return GetElement<IControllerTemplateButton>(elementId_shifter1); } }
        
        /// <summary>
        /// The "Shifter 2" element.
        /// </summary>
        /// <returns>Returns the "Shifter 2" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter2 { get { return GetElement<IControllerTemplateButton>(elementId_shifter2); } }
        
        /// <summary>
        /// The "Shifter 3" element.
        /// </summary>
        /// <returns>Returns the "Shifter 3" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter3 { get { return GetElement<IControllerTemplateButton>(elementId_shifter3); } }
        
        /// <summary>
        /// The "Shifter 4" element.
        /// </summary>
        /// <returns>Returns the "Shifter 4" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter4 { get { return GetElement<IControllerTemplateButton>(elementId_shifter4); } }
        
        /// <summary>
        /// The "Shifter 5" element.
        /// </summary>
        /// <returns>Returns the "Shifter 5" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter5 { get { return GetElement<IControllerTemplateButton>(elementId_shifter5); } }
        
        /// <summary>
        /// The "Shifter 6" element.
        /// </summary>
        /// <returns>Returns the "Shifter 6" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter6 { get { return GetElement<IControllerTemplateButton>(elementId_shifter6); } }
        
        /// <summary>
        /// The "Shifter 7" element.
        /// </summary>
        /// <returns>Returns the "Shifter 7" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter7 { get { return GetElement<IControllerTemplateButton>(elementId_shifter7); } }
        
        /// <summary>
        /// The "Shifter 8" element.
        /// </summary>
        /// <returns>Returns the "Shifter 8" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter8 { get { return GetElement<IControllerTemplateButton>(elementId_shifter8); } }
        
        /// <summary>
        /// The "Shifter 9" element.
        /// </summary>
        /// <returns>Returns the "Shifter 9" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter9 { get { return GetElement<IControllerTemplateButton>(elementId_shifter9); } }
        
        /// <summary>
        /// The "Shifter 10" element.
        /// </summary>
        /// <returns>Returns the "Shifter 10" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.shifter10 { get { return GetElement<IControllerTemplateButton>(elementId_shifter10); } }
        
        /// <summary>
        /// The "Reverse Gear" element.
        /// </summary>
        /// <returns>Returns the "Reverse Gear" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.reverseGear { get { return GetElement<IControllerTemplateButton>(elementId_reverseGear); } }
        
        /// <summary>
        /// The "Select" element.
        /// </summary>
        /// <returns>Returns the "Select" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.select { get { return GetElement<IControllerTemplateButton>(elementId_select); } }
        
        /// <summary>
        /// The "Start" element.
        /// </summary>
        /// <returns>Returns the "Start" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.start { get { return GetElement<IControllerTemplateButton>(elementId_start); } }
        
        /// <summary>
        /// The "System Button" element.
        /// </summary>
        /// <returns>Returns the "System Button" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.systemButton { get { return GetElement<IControllerTemplateButton>(elementId_systemButton); } }
        
        /// <summary>
        /// The "Horn" element.
        /// </summary>
        /// <returns>Returns the "Horn" element.</returns>
        IControllerTemplateButton IRacingWheelTemplate.horn { get { return GetElement<IControllerTemplateButton>(elementId_horn); } }
        
        /// <summary>
        /// The "D-Pad" element.
        /// </summary>
        /// <returns>Returns the "D-Pad" element.</returns>
        IControllerTemplateDPad IRacingWheelTemplate.dPad { get { return GetElement<IControllerTemplateDPad>(elementId_dPad); } }
        
        #endregion
        
        /// <summary>
        /// Creates a new instance of this class.
        /// </summary>
        public RacingWheelTemplate(object payload) : base(payload) { }
    }
    
    /// <summary>
    /// Class representing a HOTAS Template.
    /// This class contains constants. Do not use this class to interact with the Rewired API. 
    /// Use the interface <see cref="IHOTASTemplate"/> instead.
    /// </summary>
    public sealed partial class HOTASTemplate : ControllerTemplate, IHOTASTemplate {
        
        /// <summary>
        /// The type Guid of the Controller Template.
        /// </summary>
        public static readonly System.Guid typeGuid = new System.Guid("061a00cf-d8c2-4f8d-8cb5-a15a010bc53e");
        
        #region Constants
        
        /// <summary>
        /// Element identifier id for "Stick X".
        /// </summary>
        public const int elementId_stickX = 0;
        
        /// <summary>
        /// Element identifier id for "Stick Y".
        /// </summary>
        public const int elementId_stickY = 1;
        
        /// <summary>
        /// Element identifier id for "Stick Rotate".
        /// </summary>
        public const int elementId_stickRotate = 2;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 1 X".
        /// </summary>
        public const int elementId_stickMiniStick1X = 78;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 1 Y".
        /// </summary>
        public const int elementId_stickMiniStick1Y = 79;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 1 Press".
        /// </summary>
        public const int elementId_stickMiniStick1Press = 80;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 2 X".
        /// </summary>
        public const int elementId_stickMiniStick2X = 81;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 2 Y".
        /// </summary>
        public const int elementId_stickMiniStick2Y = 82;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 2 Press".
        /// </summary>
        public const int elementId_stickMiniStick2Press = 83;
        
        /// <summary>
        /// Element identifier id for "Stick Trigger".
        /// </summary>
        public const int elementId_stickTrigger = 3;
        
        /// <summary>
        /// Element identifier id for "Stick Trigger (Stage 2)".
        /// </summary>
        public const int elementId_stickTriggerStage2 = 4;
        
        /// <summary>
        /// Element identifier id for "Stick Pinky Button".
        /// </summary>
        public const int elementId_stickPinkyButton = 5;
        
        /// <summary>
        /// Element identifier id for "Stick Pinky Trigger".
        /// </summary>
        public const int elementId_stickPinkyTrigger = 154;
        
        /// <summary>
        /// Element identifier id for "Stick Button 1".
        /// </summary>
        public const int elementId_stickButton1 = 6;
        
        /// <summary>
        /// Element identifier id for "Stick Button 2".
        /// </summary>
        public const int elementId_stickButton2 = 7;
        
        /// <summary>
        /// Element identifier id for "Stick Button 3".
        /// </summary>
        public const int elementId_stickButton3 = 8;
        
        /// <summary>
        /// Element identifier id for "Stick Button 4".
        /// </summary>
        public const int elementId_stickButton4 = 9;
        
        /// <summary>
        /// Element identifier id for "Stick Button 5".
        /// </summary>
        public const int elementId_stickButton5 = 10;
        
        /// <summary>
        /// Element identifier id for "Stick Button 6".
        /// </summary>
        public const int elementId_stickButton6 = 11;
        
        /// <summary>
        /// Element identifier id for "Stick Button 7".
        /// </summary>
        public const int elementId_stickButton7 = 12;
        
        /// <summary>
        /// Element identifier id for "Stick Button 8".
        /// </summary>
        public const int elementId_stickButton8 = 13;
        
        /// <summary>
        /// Element identifier id for "Stick Button 9".
        /// </summary>
        public const int elementId_stickButton9 = 14;
        
        /// <summary>
        /// Element identifier id for "Stick Button 10".
        /// </summary>
        public const int elementId_stickButton10 = 15;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 1".
        /// </summary>
        public const int elementId_stickBaseButton1 = 18;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 2".
        /// </summary>
        public const int elementId_stickBaseButton2 = 19;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 3".
        /// </summary>
        public const int elementId_stickBaseButton3 = 20;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 4".
        /// </summary>
        public const int elementId_stickBaseButton4 = 21;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 5".
        /// </summary>
        public const int elementId_stickBaseButton5 = 22;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 6".
        /// </summary>
        public const int elementId_stickBaseButton6 = 23;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 7".
        /// </summary>
        public const int elementId_stickBaseButton7 = 24;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 8".
        /// </summary>
        public const int elementId_stickBaseButton8 = 25;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 9".
        /// </summary>
        public const int elementId_stickBaseButton9 = 26;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 10".
        /// </summary>
        public const int elementId_stickBaseButton10 = 27;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 11".
        /// </summary>
        public const int elementId_stickBaseButton11 = 161;
        
        /// <summary>
        /// Element identifier id for "Stick Base Button 12".
        /// </summary>
        public const int elementId_stickBaseButton12 = 162;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Up".
        /// </summary>
        public const int elementId_stickHat1Up = 28;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Up-Right".
        /// </summary>
        public const int elementId_stickHat1UpRight = 29;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Right".
        /// </summary>
        public const int elementId_stickHat1Right = 30;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Down-Right".
        /// </summary>
        public const int elementId_stickHat1DownRight = 31;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Down".
        /// </summary>
        public const int elementId_stickHat1Down = 32;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Down-Left".
        /// </summary>
        public const int elementId_stickHat1DownLeft = 33;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Left".
        /// </summary>
        public const int elementId_stickHat1Left = 34;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1 Up-Left".
        /// </summary>
        public const int elementId_stickHat1Up_Left = 35;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Up".
        /// </summary>
        public const int elementId_stickHat2Up = 36;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Up-right".
        /// </summary>
        public const int elementId_stickHat2Up_right = 37;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Right".
        /// </summary>
        public const int elementId_stickHat2Right = 38;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Down-Right".
        /// </summary>
        public const int elementId_stickHat2Down_Right = 39;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Down".
        /// </summary>
        public const int elementId_stickHat2Down = 40;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Down-Left".
        /// </summary>
        public const int elementId_stickHat2Down_Left = 41;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Left".
        /// </summary>
        public const int elementId_stickHat2Left = 42;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2 Up-Left".
        /// </summary>
        public const int elementId_stickHat2Up_Left = 43;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Up".
        /// </summary>
        public const int elementId_stickHat3Up = 84;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Up-Right".
        /// </summary>
        public const int elementId_stickHat3Up_Right = 85;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Right".
        /// </summary>
        public const int elementId_stickHat3Right = 86;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Down-Right".
        /// </summary>
        public const int elementId_stickHat3Down_Right = 87;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Down".
        /// </summary>
        public const int elementId_stickHat3Down = 88;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Down-Left".
        /// </summary>
        public const int elementId_stickHat3Down_Left = 89;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Left".
        /// </summary>
        public const int elementId_stickHat3Left = 90;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3 Up-Left".
        /// </summary>
        public const int elementId_stickHat3Up_Left = 91;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Up".
        /// </summary>
        public const int elementId_stickHat4Up = 92;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Up-Right".
        /// </summary>
        public const int elementId_stickHat4Up_Right = 93;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Right".
        /// </summary>
        public const int elementId_stickHat4Right = 94;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Down-Right".
        /// </summary>
        public const int elementId_stickHat4Down_Right = 95;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Down".
        /// </summary>
        public const int elementId_stickHat4Down = 96;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Down-Left".
        /// </summary>
        public const int elementId_stickHat4Down_Left = 97;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Left".
        /// </summary>
        public const int elementId_stickHat4Left = 98;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4 Up-Left".
        /// </summary>
        public const int elementId_stickHat4Up_Left = 99;
        
        /// <summary>
        /// Element identifier id for "Mode 1".
        /// </summary>
        public const int elementId_mode1 = 44;
        
        /// <summary>
        /// Element identifier id for "Mode 2".
        /// </summary>
        public const int elementId_mode2 = 45;
        
        /// <summary>
        /// Element identifier id for "Mode 3".
        /// </summary>
        public const int elementId_mode3 = 46;
        
        /// <summary>
        /// Element identifier id for "Throttle 1".
        /// </summary>
        public const int elementId_throttle1Axis = 49;
        
        /// <summary>
        /// Element identifier id for "Throttle 2".
        /// </summary>
        public const int elementId_throttle2Axis = 155;
        
        /// <summary>
        /// Element identifier id for "Throttle 1 Min Detent".
        /// </summary>
        public const int elementId_throttle1MinDetent = 166;
        
        /// <summary>
        /// Element identifier id for "Throttle 2 Min Detent".
        /// </summary>
        public const int elementId_throttle2MinDetent = 167;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 1".
        /// </summary>
        public const int elementId_throttleButton1 = 50;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 2".
        /// </summary>
        public const int elementId_throttleButton2 = 51;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 3".
        /// </summary>
        public const int elementId_throttleButton3 = 52;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 4".
        /// </summary>
        public const int elementId_throttleButton4 = 53;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 5".
        /// </summary>
        public const int elementId_throttleButton5 = 54;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 6".
        /// </summary>
        public const int elementId_throttleButton6 = 55;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 7".
        /// </summary>
        public const int elementId_throttleButton7 = 56;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 8".
        /// </summary>
        public const int elementId_throttleButton8 = 57;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 9".
        /// </summary>
        public const int elementId_throttleButton9 = 58;
        
        /// <summary>
        /// Element identifier id for "Throttle Button 10".
        /// </summary>
        public const int elementId_throttleButton10 = 59;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 1".
        /// </summary>
        public const int elementId_throttleBaseButton1 = 60;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 2".
        /// </summary>
        public const int elementId_throttleBaseButton2 = 61;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 3".
        /// </summary>
        public const int elementId_throttleBaseButton3 = 62;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 4".
        /// </summary>
        public const int elementId_throttleBaseButton4 = 63;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 5".
        /// </summary>
        public const int elementId_throttleBaseButton5 = 64;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 6".
        /// </summary>
        public const int elementId_throttleBaseButton6 = 65;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 7".
        /// </summary>
        public const int elementId_throttleBaseButton7 = 66;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 8".
        /// </summary>
        public const int elementId_throttleBaseButton8 = 67;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 9".
        /// </summary>
        public const int elementId_throttleBaseButton9 = 68;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 10".
        /// </summary>
        public const int elementId_throttleBaseButton10 = 69;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 11".
        /// </summary>
        public const int elementId_throttleBaseButton11 = 132;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 12".
        /// </summary>
        public const int elementId_throttleBaseButton12 = 133;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 13".
        /// </summary>
        public const int elementId_throttleBaseButton13 = 134;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 14".
        /// </summary>
        public const int elementId_throttleBaseButton14 = 135;
        
        /// <summary>
        /// Element identifier id for "Throttle Base Button 15".
        /// </summary>
        public const int elementId_throttleBaseButton15 = 136;
        
        /// <summary>
        /// Element identifier id for "Throttle Slider 1".
        /// </summary>
        public const int elementId_throttleSlider1 = 70;
        
        /// <summary>
        /// Element identifier id for "Throttle Slider 2".
        /// </summary>
        public const int elementId_throttleSlider2 = 71;
        
        /// <summary>
        /// Element identifier id for "Throttle Slider 3".
        /// </summary>
        public const int elementId_throttleSlider3 = 72;
        
        /// <summary>
        /// Element identifier id for "Throttle Slider 4".
        /// </summary>
        public const int elementId_throttleSlider4 = 73;
        
        /// <summary>
        /// Element identifier id for "Throttle Dial 1".
        /// </summary>
        public const int elementId_throttleDial1 = 74;
        
        /// <summary>
        /// Element identifier id for "Throttle Dial 2".
        /// </summary>
        public const int elementId_throttleDial2 = 142;
        
        /// <summary>
        /// Element identifier id for "Throttle Dial 3".
        /// </summary>
        public const int elementId_throttleDial3 = 143;
        
        /// <summary>
        /// Element identifier id for "Throttle Dial 4".
        /// </summary>
        public const int elementId_throttleDial4 = 144;
        
        /// <summary>
        /// Element identifier id for "Throttle Mini Stick X".
        /// </summary>
        public const int elementId_throttleMiniStickX = 75;
        
        /// <summary>
        /// Element identifier id for "Throttle Mini Stick Y".
        /// </summary>
        public const int elementId_throttleMiniStickY = 76;
        
        /// <summary>
        /// Element identifier id for "Throttle Mini Stick Press".
        /// </summary>
        public const int elementId_throttleMiniStickPress = 77;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 1 Forward".
        /// </summary>
        public const int elementId_throttleWheel1Forward = 145;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 1 Back".
        /// </summary>
        public const int elementId_throttleWheel1Back = 146;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 1 Press".
        /// </summary>
        public const int elementId_throttleWheel1Press = 147;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 2 Forward".
        /// </summary>
        public const int elementId_throttleWheel2Forward = 148;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 2 Back".
        /// </summary>
        public const int elementId_throttleWheel2Back = 149;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 2 Press".
        /// </summary>
        public const int elementId_throttleWheel2Press = 150;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 3 Forward".
        /// </summary>
        public const int elementId_throttleWheel3Forward = 151;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 3 Back".
        /// </summary>
        public const int elementId_throttleWheel3Back = 152;
        
        /// <summary>
        /// Element identifier id for "Throttle Wheel 3 Press".
        /// </summary>
        public const int elementId_throttleWheel3Press = 153;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Up".
        /// </summary>
        public const int elementId_throttleHat1Up = 100;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Up-Right".
        /// </summary>
        public const int elementId_throttleHat1Up_Right = 101;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Right".
        /// </summary>
        public const int elementId_throttleHat1Right = 102;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Down-Right".
        /// </summary>
        public const int elementId_throttleHat1Down_Right = 103;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Down".
        /// </summary>
        public const int elementId_throttleHat1Down = 104;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Down-Left".
        /// </summary>
        public const int elementId_throttleHat1Down_Left = 105;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Left".
        /// </summary>
        public const int elementId_throttleHat1Left = 106;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1 Up-Left".
        /// </summary>
        public const int elementId_throttleHat1Up_Left = 107;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Up".
        /// </summary>
        public const int elementId_throttleHat2Up = 108;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Up-Right".
        /// </summary>
        public const int elementId_throttleHat2Up_Right = 109;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Right".
        /// </summary>
        public const int elementId_throttleHat2Right = 110;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Down-Right".
        /// </summary>
        public const int elementId_throttleHat2Down_Right = 111;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Down".
        /// </summary>
        public const int elementId_throttleHat2Down = 112;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Down-Left".
        /// </summary>
        public const int elementId_throttleHat2Down_Left = 113;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Left".
        /// </summary>
        public const int elementId_throttleHat2Left = 114;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2 Up-Left".
        /// </summary>
        public const int elementId_throttleHat2Up_Left = 115;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Up".
        /// </summary>
        public const int elementId_throttleHat3Up = 116;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Up-Right".
        /// </summary>
        public const int elementId_throttleHat3Up_Right = 117;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Right".
        /// </summary>
        public const int elementId_throttleHat3Right = 118;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Down-Right".
        /// </summary>
        public const int elementId_throttleHat3Down_Right = 119;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Down".
        /// </summary>
        public const int elementId_throttleHat3Down = 120;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Down-Left".
        /// </summary>
        public const int elementId_throttleHat3Down_Left = 121;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Left".
        /// </summary>
        public const int elementId_throttleHat3Left = 122;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3 Up-Left".
        /// </summary>
        public const int elementId_throttleHat3Up_Left = 123;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Up".
        /// </summary>
        public const int elementId_throttleHat4Up = 124;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Up-Right".
        /// </summary>
        public const int elementId_throttleHat4Up_Right = 125;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Right".
        /// </summary>
        public const int elementId_throttleHat4Right = 126;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Down-Right".
        /// </summary>
        public const int elementId_throttleHat4Down_Right = 127;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Down".
        /// </summary>
        public const int elementId_throttleHat4Down = 128;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Down-Left".
        /// </summary>
        public const int elementId_throttleHat4Down_Left = 129;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Left".
        /// </summary>
        public const int elementId_throttleHat4Left = 130;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4 Up-Left".
        /// </summary>
        public const int elementId_throttleHat4Up_Left = 131;
        
        /// <summary>
        /// Element identifier id for "Left Pedal".
        /// </summary>
        public const int elementId_leftPedal = 168;
        
        /// <summary>
        /// Element identifier id for "Right Pedal".
        /// </summary>
        public const int elementId_rightPedal = 169;
        
        /// <summary>
        /// Element identifier id for "Slide Pedals".
        /// </summary>
        public const int elementId_slidePedals = 170;
        
        /// <summary>
        /// Element identifier id for "Stick".
        /// </summary>
        public const int elementId_stick = 171;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 1".
        /// </summary>
        public const int elementId_stickMiniStick1 = 172;
        
        /// <summary>
        /// Element identifier id for "Stick Mini Stick 2".
        /// </summary>
        public const int elementId_stickMiniStick2 = 173;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 1".
        /// </summary>
        public const int elementId_stickHat1 = 174;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 2".
        /// </summary>
        public const int elementId_stickHat2 = 175;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 3".
        /// </summary>
        public const int elementId_stickHat3 = 176;
        
        /// <summary>
        /// Element identifier id for "Stick Hat 4".
        /// </summary>
        public const int elementId_stickHat4 = 177;
        
        /// <summary>
        /// Element identifier id for "Throttle 1".
        /// </summary>
        public const int elementId_throttle1 = 178;
        
        /// <summary>
        /// Element identifier id for "Throttle 2".
        /// </summary>
        public const int elementId_throttle2 = 179;
        
        /// <summary>
        /// Element identifier id for "Throttle Mini Stick".
        /// </summary>
        public const int elementId_throttleMiniStick = 180;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 1".
        /// </summary>
        public const int elementId_throttleHat1 = 181;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 2".
        /// </summary>
        public const int elementId_throttleHat2 = 182;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 3".
        /// </summary>
        public const int elementId_throttleHat3 = 183;
        
        /// <summary>
        /// Element identifier id for "Throttle Hat 4".
        /// </summary>
        public const int elementId_throttleHat4 = 184;
        
        #endregion
        
        #region IHOTASTemplate implementation
        
        /// <summary>
        /// The "Stick Trigger" element.
        /// </summary>
        /// <returns>Returns the "Stick Trigger" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickTrigger { get { return GetElement<IControllerTemplateButton>(elementId_stickTrigger); } }
        
        /// <summary>
        /// The "Stick Trigger (Stage 2)" element.
        /// </summary>
        /// <returns>Returns the "Stick Trigger (Stage 2)" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickTriggerStage2 { get { return GetElement<IControllerTemplateButton>(elementId_stickTriggerStage2); } }
        
        /// <summary>
        /// The "Stick Pinky Button" element.
        /// </summary>
        /// <returns>Returns the "Stick Pinky Button" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickPinkyButton { get { return GetElement<IControllerTemplateButton>(elementId_stickPinkyButton); } }
        
        /// <summary>
        /// The "Stick Pinky Trigger" element.
        /// </summary>
        /// <returns>Returns the "Stick Pinky Trigger" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickPinkyTrigger { get { return GetElement<IControllerTemplateButton>(elementId_stickPinkyTrigger); } }
        
        /// <summary>
        /// The "Stick Button 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 1" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton1 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton1); } }
        
        /// <summary>
        /// The "Stick Button 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 2" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton2 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton2); } }
        
        /// <summary>
        /// The "Stick Button 3" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 3" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton3 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton3); } }
        
        /// <summary>
        /// The "Stick Button 4" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 4" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton4 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton4); } }
        
        /// <summary>
        /// The "Stick Button 5" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 5" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton5 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton5); } }
        
        /// <summary>
        /// The "Stick Button 6" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 6" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton6 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton6); } }
        
        /// <summary>
        /// The "Stick Button 7" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 7" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton7 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton7); } }
        
        /// <summary>
        /// The "Stick Button 8" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 8" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton8 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton8); } }
        
        /// <summary>
        /// The "Stick Button 9" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 9" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton9 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton9); } }
        
        /// <summary>
        /// The "Stick Button 10" element.
        /// </summary>
        /// <returns>Returns the "Stick Button 10" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickButton10 { get { return GetElement<IControllerTemplateButton>(elementId_stickButton10); } }
        
        /// <summary>
        /// The "Stick Base Button 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 1" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton1 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton1); } }
        
        /// <summary>
        /// The "Stick Base Button 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 2" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton2 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton2); } }
        
        /// <summary>
        /// The "Stick Base Button 3" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 3" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton3 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton3); } }
        
        /// <summary>
        /// The "Stick Base Button 4" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 4" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton4 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton4); } }
        
        /// <summary>
        /// The "Stick Base Button 5" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 5" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton5 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton5); } }
        
        /// <summary>
        /// The "Stick Base Button 6" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 6" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton6 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton6); } }
        
        /// <summary>
        /// The "Stick Base Button 7" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 7" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton7 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton7); } }
        
        /// <summary>
        /// The "Stick Base Button 8" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 8" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton8 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton8); } }
        
        /// <summary>
        /// The "Stick Base Button 9" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 9" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton9 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton9); } }
        
        /// <summary>
        /// The "Stick Base Button 10" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 10" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton10 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton10); } }
        
        /// <summary>
        /// The "Stick Base Button 11" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 11" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton11 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton11); } }
        
        /// <summary>
        /// The "Stick Base Button 12" element.
        /// </summary>
        /// <returns>Returns the "Stick Base Button 12" element.</returns>
        IControllerTemplateButton IHOTASTemplate.stickBaseButton12 { get { return GetElement<IControllerTemplateButton>(elementId_stickBaseButton12); } }
        
        /// <summary>
        /// The "Mode 1" element.
        /// </summary>
        /// <returns>Returns the "Mode 1" element.</returns>
        IControllerTemplateButton IHOTASTemplate.mode1 { get { return GetElement<IControllerTemplateButton>(elementId_mode1); } }
        
        /// <summary>
        /// The "Mode 2" element.
        /// </summary>
        /// <returns>Returns the "Mode 2" element.</returns>
        IControllerTemplateButton IHOTASTemplate.mode2 { get { return GetElement<IControllerTemplateButton>(elementId_mode2); } }
        
        /// <summary>
        /// The "Mode 3" element.
        /// </summary>
        /// <returns>Returns the "Mode 3" element.</returns>
        IControllerTemplateButton IHOTASTemplate.mode3 { get { return GetElement<IControllerTemplateButton>(elementId_mode3); } }
        
        /// <summary>
        /// The "Throttle Button 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 1" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton1 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton1); } }
        
        /// <summary>
        /// The "Throttle Button 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 2" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton2 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton2); } }
        
        /// <summary>
        /// The "Throttle Button 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 3" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton3 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton3); } }
        
        /// <summary>
        /// The "Throttle Button 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 4" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton4 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton4); } }
        
        /// <summary>
        /// The "Throttle Button 5" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 5" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton5 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton5); } }
        
        /// <summary>
        /// The "Throttle Button 6" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 6" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton6 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton6); } }
        
        /// <summary>
        /// The "Throttle Button 7" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 7" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton7 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton7); } }
        
        /// <summary>
        /// The "Throttle Button 8" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 8" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton8 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton8); } }
        
        /// <summary>
        /// The "Throttle Button 9" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 9" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton9 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton9); } }
        
        /// <summary>
        /// The "Throttle Button 10" element.
        /// </summary>
        /// <returns>Returns the "Throttle Button 10" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleButton10 { get { return GetElement<IControllerTemplateButton>(elementId_throttleButton10); } }
        
        /// <summary>
        /// The "Throttle Base Button 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 1" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton1 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton1); } }
        
        /// <summary>
        /// The "Throttle Base Button 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 2" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton2 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton2); } }
        
        /// <summary>
        /// The "Throttle Base Button 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 3" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton3 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton3); } }
        
        /// <summary>
        /// The "Throttle Base Button 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 4" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton4 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton4); } }
        
        /// <summary>
        /// The "Throttle Base Button 5" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 5" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton5 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton5); } }
        
        /// <summary>
        /// The "Throttle Base Button 6" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 6" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton6 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton6); } }
        
        /// <summary>
        /// The "Throttle Base Button 7" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 7" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton7 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton7); } }
        
        /// <summary>
        /// The "Throttle Base Button 8" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 8" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton8 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton8); } }
        
        /// <summary>
        /// The "Throttle Base Button 9" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 9" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton9 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton9); } }
        
        /// <summary>
        /// The "Throttle Base Button 10" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 10" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton10 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton10); } }
        
        /// <summary>
        /// The "Throttle Base Button 11" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 11" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton11 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton11); } }
        
        /// <summary>
        /// The "Throttle Base Button 12" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 12" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton12 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton12); } }
        
        /// <summary>
        /// The "Throttle Base Button 13" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 13" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton13 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton13); } }
        
        /// <summary>
        /// The "Throttle Base Button 14" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 14" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton14 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton14); } }
        
        /// <summary>
        /// The "Throttle Base Button 15" element.
        /// </summary>
        /// <returns>Returns the "Throttle Base Button 15" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleBaseButton15 { get { return GetElement<IControllerTemplateButton>(elementId_throttleBaseButton15); } }
        
        /// <summary>
        /// The "Throttle Slider 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 1" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleSlider1 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleSlider1); } }
        
        /// <summary>
        /// The "Throttle Slider 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 2" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleSlider2 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleSlider2); } }
        
        /// <summary>
        /// The "Throttle Slider 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 3" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleSlider3 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleSlider3); } }
        
        /// <summary>
        /// The "Throttle Slider 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Slider 4" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleSlider4 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleSlider4); } }
        
        /// <summary>
        /// The "Throttle Dial 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 1" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleDial1 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleDial1); } }
        
        /// <summary>
        /// The "Throttle Dial 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 2" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleDial2 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleDial2); } }
        
        /// <summary>
        /// The "Throttle Dial 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 3" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleDial3 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleDial3); } }
        
        /// <summary>
        /// The "Throttle Dial 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Dial 4" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.throttleDial4 { get { return GetElement<IControllerTemplateAxis>(elementId_throttleDial4); } }
        
        /// <summary>
        /// The "Throttle Wheel 1 Forward" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 1 Forward" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel1Forward { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel1Forward); } }
        
        /// <summary>
        /// The "Throttle Wheel 1 Back" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 1 Back" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel1Back { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel1Back); } }
        
        /// <summary>
        /// The "Throttle Wheel 1 Press" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 1 Press" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel1Press { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel1Press); } }
        
        /// <summary>
        /// The "Throttle Wheel 2 Forward" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 2 Forward" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel2Forward { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel2Forward); } }
        
        /// <summary>
        /// The "Throttle Wheel 2 Back" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 2 Back" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel2Back { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel2Back); } }
        
        /// <summary>
        /// The "Throttle Wheel 2 Press" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 2 Press" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel2Press { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel2Press); } }
        
        /// <summary>
        /// The "Throttle Wheel 3 Forward" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 3 Forward" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel3Forward { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel3Forward); } }
        
        /// <summary>
        /// The "Throttle Wheel 3 Back" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 3 Back" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel3Back { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel3Back); } }
        
        /// <summary>
        /// The "Throttle Wheel 3 Press" element.
        /// </summary>
        /// <returns>Returns the "Throttle Wheel 3 Press" element.</returns>
        IControllerTemplateButton IHOTASTemplate.throttleWheel3Press { get { return GetElement<IControllerTemplateButton>(elementId_throttleWheel3Press); } }
        
        /// <summary>
        /// The "Left Pedal" element.
        /// </summary>
        /// <returns>Returns the "Left Pedal" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.leftPedal { get { return GetElement<IControllerTemplateAxis>(elementId_leftPedal); } }
        
        /// <summary>
        /// The "Right Pedal" element.
        /// </summary>
        /// <returns>Returns the "Right Pedal" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.rightPedal { get { return GetElement<IControllerTemplateAxis>(elementId_rightPedal); } }
        
        /// <summary>
        /// The "Slide Pedals" element.
        /// </summary>
        /// <returns>Returns the "Slide Pedals" element.</returns>
        IControllerTemplateAxis IHOTASTemplate.slidePedals { get { return GetElement<IControllerTemplateAxis>(elementId_slidePedals); } }
        
        /// <summary>
        /// The "Stick" element.
        /// </summary>
        /// <returns>Returns the "Stick" element.</returns>
        IControllerTemplateStick IHOTASTemplate.stick { get { return GetElement<IControllerTemplateStick>(elementId_stick); } }
        
        /// <summary>
        /// The "Stick Mini Stick 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Mini Stick 1" element.</returns>
        IControllerTemplateThumbStick IHOTASTemplate.stickMiniStick1 { get { return GetElement<IControllerTemplateThumbStick>(elementId_stickMiniStick1); } }
        
        /// <summary>
        /// The "Stick Mini Stick 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Mini Stick 2" element.</returns>
        IControllerTemplateThumbStick IHOTASTemplate.stickMiniStick2 { get { return GetElement<IControllerTemplateThumbStick>(elementId_stickMiniStick2); } }
        
        /// <summary>
        /// The "Stick Hat 1" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 1" element.</returns>
        IControllerTemplateHat IHOTASTemplate.stickHat1 { get { return GetElement<IControllerTemplateHat>(elementId_stickHat1); } }
        
        /// <summary>
        /// The "Stick Hat 2" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 2" element.</returns>
        IControllerTemplateHat IHOTASTemplate.stickHat2 { get { return GetElement<IControllerTemplateHat>(elementId_stickHat2); } }
        
        /// <summary>
        /// The "Stick Hat 3" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 3" element.</returns>
        IControllerTemplateHat IHOTASTemplate.stickHat3 { get { return GetElement<IControllerTemplateHat>(elementId_stickHat3); } }
        
        /// <summary>
        /// The "Stick Hat 4" element.
        /// </summary>
        /// <returns>Returns the "Stick Hat 4" element.</returns>
        IControllerTemplateHat IHOTASTemplate.stickHat4 { get { return GetElement<IControllerTemplateHat>(elementId_stickHat4); } }
        
        /// <summary>
        /// The "Throttle 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle 1" element.</returns>
        IControllerTemplateThrottle IHOTASTemplate.throttle1 { get { return GetElement<IControllerTemplateThrottle>(elementId_throttle1); } }
        
        /// <summary>
        /// The "Throttle 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle 2" element.</returns>
        IControllerTemplateThrottle IHOTASTemplate.throttle2 { get { return GetElement<IControllerTemplateThrottle>(elementId_throttle2); } }
        
        /// <summary>
        /// The "Throttle Mini Stick" element.
        /// </summary>
        /// <returns>Returns the "Throttle Mini Stick" element.</returns>
        IControllerTemplateThumbStick IHOTASTemplate.throttleMiniStick { get { return GetElement<IControllerTemplateThumbStick>(elementId_throttleMiniStick); } }
        
        /// <summary>
        /// The "Throttle Hat 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 1" element.</returns>
        IControllerTemplateHat IHOTASTemplate.throttleHat1 { get { return GetElement<IControllerTemplateHat>(elementId_throttleHat1); } }
        
        /// <summary>
        /// The "Throttle Hat 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 2" element.</returns>
        IControllerTemplateHat IHOTASTemplate.throttleHat2 { get { return GetElement<IControllerTemplateHat>(elementId_throttleHat2); } }
        
        /// <summary>
        /// The "Throttle Hat 3" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 3" element.</returns>
        IControllerTemplateHat IHOTASTemplate.throttleHat3 { get { return GetElement<IControllerTemplateHat>(elementId_throttleHat3); } }
        
        /// <summary>
        /// The "Throttle Hat 4" element.
        /// </summary>
        /// <returns>Returns the "Throttle Hat 4" element.</returns>
        IControllerTemplateHat IHOTASTemplate.throttleHat4 { get { return GetElement<IControllerTemplateHat>(elementId_throttleHat4); } }
        
        #endregion
        
        /// <summary>
        /// Creates a new instance of this class.
        /// </summary>
        public HOTASTemplate(object payload) : base(payload) { }
    }
    
    /// <summary>
    /// Class representing a Flight Yoke Template.
    /// This class contains constants. Do not use this class to interact with the Rewired API. 
    /// Use the interface <see cref="IFlightYokeTemplate"/> instead.
    /// </summary>
    public sealed partial class FlightYokeTemplate : ControllerTemplate, IFlightYokeTemplate {
        
        /// <summary>
        /// The type Guid of the Controller Template.
        /// </summary>
        public static readonly System.Guid typeGuid = new System.Guid("f311fa16-0ccc-41c0-ac4b-50f7100bb8ff");
        
        #region Constants
        
        /// <summary>
        /// Element identifier id for "Rotate Yoke".
        /// </summary>
        public const int elementId_rotateYoke = 0;
        
        /// <summary>
        /// Element identifier id for "Yoke Z".
        /// </summary>
        public const int elementId_yokeZ = 1;
        
        /// <summary>
        /// Element identifier id for "Left Paddle".
        /// </summary>
        public const int elementId_leftPaddle = 59;
        
        /// <summary>
        /// Element identifier id for "Right Paddle".
        /// </summary>
        public const int elementId_rightPaddle = 60;
        
        /// <summary>
        /// Element identifier id for "Lever 1".
        /// </summary>
        public const int elementId_lever1Axis = 2;
        
        /// <summary>
        /// Element identifier id for "Lever 1 Min Detent".
        /// </summary>
        public const int elementId_lever1MinDetent = 64;
        
        /// <summary>
        /// Element identifier id for "Lever 2".
        /// </summary>
        public const int elementId_lever2Axis = 3;
        
        /// <summary>
        /// Element identifier id for "Lever 2 Min Detent".
        /// </summary>
        public const int elementId_lever2MinDetent = 65;
        
        /// <summary>
        /// Element identifier id for "Lever 3".
        /// </summary>
        public const int elementId_lever3Axis = 4;
        
        /// <summary>
        /// Element identifier id for "Lever 3 Min Detent".
        /// </summary>
        public const int elementId_lever3MinDetent = 66;
        
        /// <summary>
        /// Element identifier id for "Lever 4".
        /// </summary>
        public const int elementId_lever4Axis = 5;
        
        /// <summary>
        /// Element identifier id for "Lever 4 Min Detent".
        /// </summary>
        public const int elementId_lever4MinDetent = 67;
        
        /// <summary>
        /// Element identifier id for "Lever 5".
        /// </summary>
        public const int elementId_lever5Axis = 6;
        
        /// <summary>
        /// Element identifier id for "Lever 5 Min Detent".
        /// </summary>
        public const int elementId_lever5MinDetent = 68;
        
        /// <summary>
        /// Element identifier id for "Left Grip Button 1".
        /// </summary>
        public const int elementId_leftGripButton1 = 7;
        
        /// <summary>
        /// Element identifier id for "Left Grip Button 2".
        /// </summary>
        public const int elementId_leftGripButton2 = 8;
        
        /// <summary>
        /// Element identifier id for "Left Grip Button 3".
        /// </summary>
        public const int elementId_leftGripButton3 = 9;
        
        /// <summary>
        /// Element identifier id for "Left Grip Button 4".
        /// </summary>
        public const int elementId_leftGripButton4 = 10;
        
        /// <summary>
        /// Element identifier id for "Left Grip Button 5".
        /// </summary>
        public const int elementId_leftGripButton5 = 11;
        
        /// <summary>
        /// Element identifier id for "Left Grip Button 6".
        /// </summary>
        public const int elementId_leftGripButton6 = 12;
        
        /// <summary>
        /// Element identifier id for "Right Grip Button 1".
        /// </summary>
        public const int elementId_rightGripButton1 = 13;
        
        /// <summary>
        /// Element identifier id for "Right Grip Button 2".
        /// </summary>
        public const int elementId_rightGripButton2 = 14;
        
        /// <summary>
        /// Element identifier id for "Right Grip Button 3".
        /// </summary>
        public const int elementId_rightGripButton3 = 15;
        
        /// <summary>
        /// Element identifier id for "Right Grip Button 4".
        /// </summary>
        public const int elementId_rightGripButton4 = 16;
        
        /// <summary>
        /// Element identifier id for "Right Grip Button 5".
        /// </summary>
        public const int elementId_rightGripButton5 = 17;
        
        /// <summary>
        /// Element identifier id for "Right Grip Button 6".
        /// </summary>
        public const int elementId_rightGripButton6 = 18;
        
        /// <summary>
        /// Element identifier id for "Center Button 1".
        /// </summary>
        public const int elementId_centerButton1 = 19;
        
        /// <summary>
        /// Element identifier id for "Center Button 2".
        /// </summary>
        public const int elementId_centerButton2 = 20;
        
        /// <summary>
        /// Element identifier id for "Center Button 3".
        /// </summary>
        public const int elementId_centerButton3 = 21;
        
        /// <summary>
        /// Element identifier id for "Center Button 4".
        /// </summary>
        public const int elementId_centerButton4 = 22;
        
        /// <summary>
        /// Element identifier id for "Center Button 5".
        /// </summary>
        public const int elementId_centerButton5 = 23;
        
        /// <summary>
        /// Element identifier id for "Center Button 6".
        /// </summary>
        public const int elementId_centerButton6 = 24;
        
        /// <summary>
        /// Element identifier id for "Center Button 7".
        /// </summary>
        public const int elementId_centerButton7 = 25;
        
        /// <summary>
        /// Element identifier id for "Center Button 8".
        /// </summary>
        public const int elementId_centerButton8 = 26;
        
        /// <summary>
        /// Element identifier id for "Wheel 1 Up".
        /// </summary>
        public const int elementId_wheel1Up = 53;
        
        /// <summary>
        /// Element identifier id for "Wheel 1 Down".
        /// </summary>
        public const int elementId_wheel1Down = 54;
        
        /// <summary>
        /// Element identifier id for "Wheel 1 Press".
        /// </summary>
        public const int elementId_wheel1Press = 55;
        
        /// <summary>
        /// Element identifier id for "Wheel 2 Up".
        /// </summary>
        public const int elementId_wheel2Up = 56;
        
        /// <summary>
        /// Element identifier id for "Wheel 2 Down".
        /// </summary>
        public const int elementId_wheel2Down = 57;
        
        /// <summary>
        /// Element identifier id for "Wheel 2 Press".
        /// </summary>
        public const int elementId_wheel2Press = 58;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Up".
        /// </summary>
        public const int elementId_leftGripHatUp = 27;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Up-Right".
        /// </summary>
        public const int elementId_leftGripHatUpRight = 28;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Right".
        /// </summary>
        public const int elementId_leftGripHatRight = 29;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Down-Right".
        /// </summary>
        public const int elementId_leftGripHatDownRight = 30;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Down".
        /// </summary>
        public const int elementId_leftGripHatDown = 31;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Down-Left".
        /// </summary>
        public const int elementId_leftGripHatDownLeft = 32;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Left".
        /// </summary>
        public const int elementId_leftGripHatLeft = 33;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat Up-Left".
        /// </summary>
        public const int elementId_leftGripHatUpLeft = 34;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Up".
        /// </summary>
        public const int elementId_rightGripHatUp = 35;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Up-Right".
        /// </summary>
        public const int elementId_rightGripHatUpRight = 36;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Right".
        /// </summary>
        public const int elementId_rightGripHatRight = 37;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Down-Right".
        /// </summary>
        public const int elementId_rightGripHatDownRight = 38;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Down".
        /// </summary>
        public const int elementId_rightGripHatDown = 39;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Down-Left".
        /// </summary>
        public const int elementId_rightGripHatDownLeft = 40;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Left".
        /// </summary>
        public const int elementId_rightGripHatLeft = 41;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat Up-Left".
        /// </summary>
        public const int elementId_rightGripHatUpLeft = 42;
        
        /// <summary>
        /// Element identifier id for "Console Button 1".
        /// </summary>
        public const int elementId_consoleButton1 = 43;
        
        /// <summary>
        /// Element identifier id for "Console Button 2".
        /// </summary>
        public const int elementId_consoleButton2 = 44;
        
        /// <summary>
        /// Element identifier id for "Console Button 3".
        /// </summary>
        public const int elementId_consoleButton3 = 45;
        
        /// <summary>
        /// Element identifier id for "Console Button 4".
        /// </summary>
        public const int elementId_consoleButton4 = 46;
        
        /// <summary>
        /// Element identifier id for "Console Button 5".
        /// </summary>
        public const int elementId_consoleButton5 = 47;
        
        /// <summary>
        /// Element identifier id for "Console Button 6".
        /// </summary>
        public const int elementId_consoleButton6 = 48;
        
        /// <summary>
        /// Element identifier id for "Console Button 7".
        /// </summary>
        public const int elementId_consoleButton7 = 49;
        
        /// <summary>
        /// Element identifier id for "Console Button 8".
        /// </summary>
        public const int elementId_consoleButton8 = 50;
        
        /// <summary>
        /// Element identifier id for "Console Button 9".
        /// </summary>
        public const int elementId_consoleButton9 = 51;
        
        /// <summary>
        /// Element identifier id for "Console Button 10".
        /// </summary>
        public const int elementId_consoleButton10 = 52;
        
        /// <summary>
        /// Element identifier id for "Mode 1".
        /// </summary>
        public const int elementId_mode1 = 61;
        
        /// <summary>
        /// Element identifier id for "Mode 2".
        /// </summary>
        public const int elementId_mode2 = 62;
        
        /// <summary>
        /// Element identifier id for "Mode 3".
        /// </summary>
        public const int elementId_mode3 = 63;
        
        /// <summary>
        /// Element identifier id for "Yoke".
        /// </summary>
        public const int elementId_yoke = 69;
        
        /// <summary>
        /// Element identifier id for "Lever 1".
        /// </summary>
        public const int elementId_lever1 = 70;
        
        /// <summary>
        /// Element identifier id for "Lever 2".
        /// </summary>
        public const int elementId_lever2 = 71;
        
        /// <summary>
        /// Element identifier id for "Lever 3".
        /// </summary>
        public const int elementId_lever3 = 72;
        
        /// <summary>
        /// Element identifier id for "Lever 4".
        /// </summary>
        public const int elementId_lever4 = 73;
        
        /// <summary>
        /// Element identifier id for "Lever 5".
        /// </summary>
        public const int elementId_lever5 = 74;
        
        /// <summary>
        /// Element identifier id for "Left Grip Hat".
        /// </summary>
        public const int elementId_leftGripHat = 75;
        
        /// <summary>
        /// Element identifier id for "Right Grip Hat".
        /// </summary>
        public const int elementId_rightGripHat = 76;
        
        #endregion
        
        #region IFlightYokeTemplate implementation
        
        /// <summary>
        /// The "Left Paddle" element.
        /// </summary>
        /// <returns>Returns the "Left Paddle" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftPaddle { get { return GetElement<IControllerTemplateButton>(elementId_leftPaddle); } }
        
        /// <summary>
        /// The "Right Paddle" element.
        /// </summary>
        /// <returns>Returns the "Right Paddle" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightPaddle { get { return GetElement<IControllerTemplateButton>(elementId_rightPaddle); } }
        
        /// <summary>
        /// The "Left Grip Button 1" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 1" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftGripButton1 { get { return GetElement<IControllerTemplateButton>(elementId_leftGripButton1); } }
        
        /// <summary>
        /// The "Left Grip Button 2" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 2" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftGripButton2 { get { return GetElement<IControllerTemplateButton>(elementId_leftGripButton2); } }
        
        /// <summary>
        /// The "Left Grip Button 3" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 3" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftGripButton3 { get { return GetElement<IControllerTemplateButton>(elementId_leftGripButton3); } }
        
        /// <summary>
        /// The "Left Grip Button 4" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 4" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftGripButton4 { get { return GetElement<IControllerTemplateButton>(elementId_leftGripButton4); } }
        
        /// <summary>
        /// The "Left Grip Button 5" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 5" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftGripButton5 { get { return GetElement<IControllerTemplateButton>(elementId_leftGripButton5); } }
        
        /// <summary>
        /// The "Left Grip Button 6" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Button 6" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.leftGripButton6 { get { return GetElement<IControllerTemplateButton>(elementId_leftGripButton6); } }
        
        /// <summary>
        /// The "Right Grip Button 1" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 1" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightGripButton1 { get { return GetElement<IControllerTemplateButton>(elementId_rightGripButton1); } }
        
        /// <summary>
        /// The "Right Grip Button 2" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 2" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightGripButton2 { get { return GetElement<IControllerTemplateButton>(elementId_rightGripButton2); } }
        
        /// <summary>
        /// The "Right Grip Button 3" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 3" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightGripButton3 { get { return GetElement<IControllerTemplateButton>(elementId_rightGripButton3); } }
        
        /// <summary>
        /// The "Right Grip Button 4" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 4" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightGripButton4 { get { return GetElement<IControllerTemplateButton>(elementId_rightGripButton4); } }
        
        /// <summary>
        /// The "Right Grip Button 5" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 5" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightGripButton5 { get { return GetElement<IControllerTemplateButton>(elementId_rightGripButton5); } }
        
        /// <summary>
        /// The "Right Grip Button 6" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Button 6" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.rightGripButton6 { get { return GetElement<IControllerTemplateButton>(elementId_rightGripButton6); } }
        
        /// <summary>
        /// The "Center Button 1" element.
        /// </summary>
        /// <returns>Returns the "Center Button 1" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton1 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton1); } }
        
        /// <summary>
        /// The "Center Button 2" element.
        /// </summary>
        /// <returns>Returns the "Center Button 2" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton2 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton2); } }
        
        /// <summary>
        /// The "Center Button 3" element.
        /// </summary>
        /// <returns>Returns the "Center Button 3" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton3 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton3); } }
        
        /// <summary>
        /// The "Center Button 4" element.
        /// </summary>
        /// <returns>Returns the "Center Button 4" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton4 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton4); } }
        
        /// <summary>
        /// The "Center Button 5" element.
        /// </summary>
        /// <returns>Returns the "Center Button 5" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton5 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton5); } }
        
        /// <summary>
        /// The "Center Button 6" element.
        /// </summary>
        /// <returns>Returns the "Center Button 6" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton6 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton6); } }
        
        /// <summary>
        /// The "Center Button 7" element.
        /// </summary>
        /// <returns>Returns the "Center Button 7" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton7 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton7); } }
        
        /// <summary>
        /// The "Center Button 8" element.
        /// </summary>
        /// <returns>Returns the "Center Button 8" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.centerButton8 { get { return GetElement<IControllerTemplateButton>(elementId_centerButton8); } }
        
        /// <summary>
        /// The "Wheel 1 Up" element.
        /// </summary>
        /// <returns>Returns the "Wheel 1 Up" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.wheel1Up { get { return GetElement<IControllerTemplateButton>(elementId_wheel1Up); } }
        
        /// <summary>
        /// The "Wheel 1 Down" element.
        /// </summary>
        /// <returns>Returns the "Wheel 1 Down" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.wheel1Down { get { return GetElement<IControllerTemplateButton>(elementId_wheel1Down); } }
        
        /// <summary>
        /// The "Wheel 1 Press" element.
        /// </summary>
        /// <returns>Returns the "Wheel 1 Press" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.wheel1Press { get { return GetElement<IControllerTemplateButton>(elementId_wheel1Press); } }
        
        /// <summary>
        /// The "Wheel 2 Up" element.
        /// </summary>
        /// <returns>Returns the "Wheel 2 Up" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.wheel2Up { get { return GetElement<IControllerTemplateButton>(elementId_wheel2Up); } }
        
        /// <summary>
        /// The "Wheel 2 Down" element.
        /// </summary>
        /// <returns>Returns the "Wheel 2 Down" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.wheel2Down { get { return GetElement<IControllerTemplateButton>(elementId_wheel2Down); } }
        
        /// <summary>
        /// The "Wheel 2 Press" element.
        /// </summary>
        /// <returns>Returns the "Wheel 2 Press" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.wheel2Press { get { return GetElement<IControllerTemplateButton>(elementId_wheel2Press); } }
        
        /// <summary>
        /// The "Console Button 1" element.
        /// </summary>
        /// <returns>Returns the "Console Button 1" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton1 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton1); } }
        
        /// <summary>
        /// The "Console Button 2" element.
        /// </summary>
        /// <returns>Returns the "Console Button 2" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton2 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton2); } }
        
        /// <summary>
        /// The "Console Button 3" element.
        /// </summary>
        /// <returns>Returns the "Console Button 3" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton3 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton3); } }
        
        /// <summary>
        /// The "Console Button 4" element.
        /// </summary>
        /// <returns>Returns the "Console Button 4" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton4 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton4); } }
        
        /// <summary>
        /// The "Console Button 5" element.
        /// </summary>
        /// <returns>Returns the "Console Button 5" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton5 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton5); } }
        
        /// <summary>
        /// The "Console Button 6" element.
        /// </summary>
        /// <returns>Returns the "Console Button 6" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton6 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton6); } }
        
        /// <summary>
        /// The "Console Button 7" element.
        /// </summary>
        /// <returns>Returns the "Console Button 7" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton7 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton7); } }
        
        /// <summary>
        /// The "Console Button 8" element.
        /// </summary>
        /// <returns>Returns the "Console Button 8" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton8 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton8); } }
        
        /// <summary>
        /// The "Console Button 9" element.
        /// </summary>
        /// <returns>Returns the "Console Button 9" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton9 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton9); } }
        
        /// <summary>
        /// The "Console Button 10" element.
        /// </summary>
        /// <returns>Returns the "Console Button 10" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.consoleButton10 { get { return GetElement<IControllerTemplateButton>(elementId_consoleButton10); } }
        
        /// <summary>
        /// The "Mode 1" element.
        /// </summary>
        /// <returns>Returns the "Mode 1" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.mode1 { get { return GetElement<IControllerTemplateButton>(elementId_mode1); } }
        
        /// <summary>
        /// The "Mode 2" element.
        /// </summary>
        /// <returns>Returns the "Mode 2" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.mode2 { get { return GetElement<IControllerTemplateButton>(elementId_mode2); } }
        
        /// <summary>
        /// The "Mode 3" element.
        /// </summary>
        /// <returns>Returns the "Mode 3" element.</returns>
        IControllerTemplateButton IFlightYokeTemplate.mode3 { get { return GetElement<IControllerTemplateButton>(elementId_mode3); } }
        
        /// <summary>
        /// The "Yoke" element.
        /// </summary>
        /// <returns>Returns the "Yoke" element.</returns>
        IControllerTemplateYoke IFlightYokeTemplate.yoke { get { return GetElement<IControllerTemplateYoke>(elementId_yoke); } }
        
        /// <summary>
        /// The "Lever 1" element.
        /// </summary>
        /// <returns>Returns the "Lever 1" element.</returns>
        IControllerTemplateThrottle IFlightYokeTemplate.lever1 { get { return GetElement<IControllerTemplateThrottle>(elementId_lever1); } }
        
        /// <summary>
        /// The "Lever 2" element.
        /// </summary>
        /// <returns>Returns the "Lever 2" element.</returns>
        IControllerTemplateThrottle IFlightYokeTemplate.lever2 { get { return GetElement<IControllerTemplateThrottle>(elementId_lever2); } }
        
        /// <summary>
        /// The "Lever 3" element.
        /// </summary>
        /// <returns>Returns the "Lever 3" element.</returns>
        IControllerTemplateThrottle IFlightYokeTemplate.lever3 { get { return GetElement<IControllerTemplateThrottle>(elementId_lever3); } }
        
        /// <summary>
        /// The "Lever 4" element.
        /// </summary>
        /// <returns>Returns the "Lever 4" element.</returns>
        IControllerTemplateThrottle IFlightYokeTemplate.lever4 { get { return GetElement<IControllerTemplateThrottle>(elementId_lever4); } }
        
        /// <summary>
        /// The "Lever 5" element.
        /// </summary>
        /// <returns>Returns the "Lever 5" element.</returns>
        IControllerTemplateThrottle IFlightYokeTemplate.lever5 { get { return GetElement<IControllerTemplateThrottle>(elementId_lever5); } }
        
        /// <summary>
        /// The "Left Grip Hat" element.
        /// </summary>
        /// <returns>Returns the "Left Grip Hat" element.</returns>
        IControllerTemplateHat IFlightYokeTemplate.leftGripHat { get { return GetElement<IControllerTemplateHat>(elementId_leftGripHat); } }
        
        /// <summary>
        /// The "Right Grip Hat" element.
        /// </summary>
        /// <returns>Returns the "Right Grip Hat" element.</returns>
        IControllerTemplateHat IFlightYokeTemplate.rightGripHat { get { return GetElement<IControllerTemplateHat>(elementId_rightGripHat); } }
        
        #endregion
        
        /// <summary>
        /// Creates a new instance of this class.
        /// </summary>
        public FlightYokeTemplate(object payload) : base(payload) { }
    }
    
    /// <summary>
    /// Class representing a Flight Pedals Template.
    /// This class contains constants. Do not use this class to interact with the Rewired API. 
    /// Use the interface <see cref="IFlightPedalsTemplate"/> instead.
    /// </summary>
    public sealed partial class FlightPedalsTemplate : ControllerTemplate, IFlightPedalsTemplate {
        
        /// <summary>
        /// The type Guid of the Controller Template.
        /// </summary>
        public static readonly System.Guid typeGuid = new System.Guid("f6fe76f8-be2a-4db2-b853-9e3652075913");
        
        #region Constants
        
        /// <summary>
        /// Element identifier id for "Left Pedal".
        /// </summary>
        public const int elementId_leftPedal = 0;
        
        /// <summary>
        /// Element identifier id for "Right Pedal".
        /// </summary>
        public const int elementId_rightPedal = 1;
        
        /// <summary>
        /// Element identifier id for "Slide".
        /// </summary>
        public const int elementId_slide = 2;
        
        #endregion
        
        #region IFlightPedalsTemplate implementation
        
        /// <summary>
        /// The "Left Pedal" element.
        /// </summary>
        /// <returns>Returns the "Left Pedal" element.</returns>
        IControllerTemplateAxis IFlightPedalsTemplate.leftPedal { get { return GetElement<IControllerTemplateAxis>(elementId_leftPedal); } }
        
        /// <summary>
        /// The "Right Pedal" element.
        /// </summary>
        /// <returns>Returns the "Right Pedal" element.</returns>
        IControllerTemplateAxis IFlightPedalsTemplate.rightPedal { get { return GetElement<IControllerTemplateAxis>(elementId_rightPedal); } }
        
        /// <summary>
        /// The "Slide" element.
        /// </summary>
        /// <returns>Returns the "Slide" element.</returns>
        IControllerTemplateAxis IFlightPedalsTemplate.slide { get { return GetElement<IControllerTemplateAxis>(elementId_slide); } }
        
        #endregion
        
        /// <summary>
        /// Creates a new instance of this class.
        /// </summary>
        public FlightPedalsTemplate(object payload) : base(payload) { }
    }
    
    /// <summary>
    /// Class representing a 6 DoF Controller Template.
    /// This class contains constants. Do not use this class to interact with the Rewired API. 
    /// Use the interface <see cref="ISixDofControllerTemplate"/> instead.
    /// </summary>
    public sealed partial class SixDofControllerTemplate : ControllerTemplate, ISixDofControllerTemplate {
        
        /// <summary>
        /// The type Guid of the Controller Template.
        /// </summary>
        public static readonly System.Guid typeGuid = new System.Guid("2599beb3-522b-43dd-a4ef-93fd60e5eafa");
        
        #region Constants
        
        /// <summary>
        /// Element identifier id for "Horizontal".
        /// </summary>
        public const int elementId_positionX = 1;
        
        /// <summary>
        /// Element identifier id for "Vertical".
        /// </summary>
        public const int elementId_positionY = 2;
        
        /// <summary>
        /// Element identifier id for "Forward/Back".
        /// </summary>
        public const int elementId_positionZ = 0;
        
        /// <summary>
        /// Element identifier id for "Rotate X".
        /// </summary>
        public const int elementId_rotationX = 3;
        
        /// <summary>
        /// Element identifier id for "Rotate Y".
        /// </summary>
        public const int elementId_rotationY = 5;
        
        /// <summary>
        /// Element identifier id for "Rotate Z".
        /// </summary>
        public const int elementId_rotationZ = 4;
        
        /// <summary>
        /// Element identifier id for "Throttle 1".
        /// </summary>
        public const int elementId_throttle1Axis = 6;
        
        /// <summary>
        /// Element identifier id for "Throttle 1 Min Detent".
        /// </summary>
        public const int elementId_throttle1MinDetent = 50;
        
        /// <summary>
        /// Element identifier id for "Throttle 2".
        /// </summary>
        public const int elementId_throttle2Axis = 7;
        
        /// <summary>
        /// Element identifier id for "Throttle 2 Min Detent".
        /// </summary>
        public const int elementId_throttle2MinDetent = 51;
        
        /// <summary>
        /// Element identifier id for "Extra Axis 1".
        /// </summary>
        public const int elementId_extraAxis1 = 8;
        
        /// <summary>
        /// Element identifier id for "Extra Axis 2".
        /// </summary>
        public const int elementId_extraAxis2 = 9;
        
        /// <summary>
        /// Element identifier id for "Extra Axis 3".
        /// </summary>
        public const int elementId_extraAxis3 = 10;
        
        /// <summary>
        /// Element identifier id for "Extra Axis 4".
        /// </summary>
        public const int elementId_extraAxis4 = 11;
        
        /// <summary>
        /// Element identifier id for "Button 1".
        /// </summary>
        public const int elementId_button1 = 12;
        
        /// <summary>
        /// Element identifier id for "Button 2".
        /// </summary>
        public const int elementId_button2 = 13;
        
        /// <summary>
        /// Element identifier id for "Button 3".
        /// </summary>
        public const int elementId_button3 = 14;
        
        /// <summary>
        /// Element identifier id for "Button 4".
        /// </summary>
        public const int elementId_button4 = 15;
        
        /// <summary>
        /// Element identifier id for "Button 5".
        /// </summary>
        public const int elementId_button5 = 16;
        
        /// <summary>
        /// Element identifier id for "Button 6".
        /// </summary>
        public const int elementId_button6 = 17;
        
        /// <summary>
        /// Element identifier id for "Button 7".
        /// </summary>
        public const int elementId_button7 = 18;
        
        /// <summary>
        /// Element identifier id for "Button 8".
        /// </summary>
        public const int elementId_button8 = 19;
        
        /// <summary>
        /// Element identifier id for "Button 9".
        /// </summary>
        public const int elementId_button9 = 20;
        
        /// <summary>
        /// Element identifier id for "Button 10".
        /// </summary>
        public const int elementId_button10 = 21;
        
        /// <summary>
        /// Element identifier id for "Button 11".
        /// </summary>
        public const int elementId_button11 = 22;
        
        /// <summary>
        /// Element identifier id for "Button 12".
        /// </summary>
        public const int elementId_button12 = 23;
        
        /// <summary>
        /// Element identifier id for "Button 13".
        /// </summary>
        public const int elementId_button13 = 24;
        
        /// <summary>
        /// Element identifier id for "Button 14".
        /// </summary>
        public const int elementId_button14 = 25;
        
        /// <summary>
        /// Element identifier id for "Button 15".
        /// </summary>
        public const int elementId_button15 = 26;
        
        /// <summary>
        /// Element identifier id for "Button 16".
        /// </summary>
        public const int elementId_button16 = 27;
        
        /// <summary>
        /// Element identifier id for "Button 17".
        /// </summary>
        public const int elementId_button17 = 28;
        
        /// <summary>
        /// Element identifier id for "Button 18".
        /// </summary>
        public const int elementId_button18 = 29;
        
        /// <summary>
        /// Element identifier id for "Button 19".
        /// </summary>
        public const int elementId_button19 = 30;
        
        /// <summary>
        /// Element identifier id for "Button 20".
        /// </summary>
        public const int elementId_button20 = 31;
        
        /// <summary>
        /// Element identifier id for "Button 21".
        /// </summary>
        public const int elementId_button21 = 55;
        
        /// <summary>
        /// Element identifier id for "Button 22".
        /// </summary>
        public const int elementId_button22 = 56;
        
        /// <summary>
        /// Element identifier id for "Button 23".
        /// </summary>
        public const int elementId_button23 = 57;
        
        /// <summary>
        /// Element identifier id for "Button 24".
        /// </summary>
        public const int elementId_button24 = 58;
        
        /// <summary>
        /// Element identifier id for "Button 25".
        /// </summary>
        public const int elementId_button25 = 59;
        
        /// <summary>
        /// Element identifier id for "Button 26".
        /// </summary>
        public const int elementId_button26 = 60;
        
        /// <summary>
        /// Element identifier id for "Button 27".
        /// </summary>
        public const int elementId_button27 = 61;
        
        /// <summary>
        /// Element identifier id for "Button 28".
        /// </summary>
        public const int elementId_button28 = 62;
        
        /// <summary>
        /// Element identifier id for "Button 29".
        /// </summary>
        public const int elementId_button29 = 63;
        
        /// <summary>
        /// Element identifier id for "Button 30".
        /// </summary>
        public const int elementId_button30 = 64;
        
        /// <summary>
        /// Element identifier id for "Button 31".
        /// </summary>
        public const int elementId_button31 = 65;
        
        /// <summary>
        /// Element identifier id for "Button 32".
        /// </summary>
        public const int elementId_button32 = 66;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Up".
        /// </summary>
        public const int elementId_hat1Up = 32;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Up-Right".
        /// </summary>
        public const int elementId_hat1UpRight = 33;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Right".
        /// </summary>
        public const int elementId_hat1Right = 34;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Down-Right".
        /// </summary>
        public const int elementId_hat1DownRight = 35;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Down".
        /// </summary>
        public const int elementId_hat1Down = 36;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Down-Left".
        /// </summary>
        public const int elementId_hat1DownLeft = 37;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Left".
        /// </summary>
        public const int elementId_hat1Left = 38;
        
        /// <summary>
        /// Element identifier id for "Hat 1 Up-Left".
        /// </summary>
        public const int elementId_hat1UpLeft = 39;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Up".
        /// </summary>
        public const int elementId_hat2Up = 40;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Up-Right".
        /// </summary>
        public const int elementId_hat2UpRight = 41;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Right".
        /// </summary>
        public const int elementId_hat2Right = 42;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Down-Right".
        /// </summary>
        public const int elementId_hat2DownRight = 43;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Down".
        /// </summary>
        public const int elementId_hat2Down = 44;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Down-Left".
        /// </summary>
        public const int elementId_hat2DownLeft = 45;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Left".
        /// </summary>
        public const int elementId_hat2Left = 46;
        
        /// <summary>
        /// Element identifier id for "Hat 2 Up-Left".
        /// </summary>
        public const int elementId_hat2UpLeft = 47;
        
        /// <summary>
        /// Element identifier id for "Hat 1".
        /// </summary>
        public const int elementId_hat1 = 48;
        
        /// <summary>
        /// Element identifier id for "Hat 2".
        /// </summary>
        public const int elementId_hat2 = 49;
        
        /// <summary>
        /// Element identifier id for "Throttle 1".
        /// </summary>
        public const int elementId_throttle1 = 52;
        
        /// <summary>
        /// Element identifier id for "Throttle 2".
        /// </summary>
        public const int elementId_throttle2 = 53;
        
        /// <summary>
        /// Element identifier id for "Stick".
        /// </summary>
        public const int elementId_stick = 54;
        
        #endregion
        
        #region ISixDofControllerTemplate implementation
        
        /// <summary>
        /// The "Extra Axis 1" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 1" element.</returns>
        IControllerTemplateAxis ISixDofControllerTemplate.extraAxis1 { get { return GetElement<IControllerTemplateAxis>(elementId_extraAxis1); } }
        
        /// <summary>
        /// The "Extra Axis 2" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 2" element.</returns>
        IControllerTemplateAxis ISixDofControllerTemplate.extraAxis2 { get { return GetElement<IControllerTemplateAxis>(elementId_extraAxis2); } }
        
        /// <summary>
        /// The "Extra Axis 3" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 3" element.</returns>
        IControllerTemplateAxis ISixDofControllerTemplate.extraAxis3 { get { return GetElement<IControllerTemplateAxis>(elementId_extraAxis3); } }
        
        /// <summary>
        /// The "Extra Axis 4" element.
        /// </summary>
        /// <returns>Returns the "Extra Axis 4" element.</returns>
        IControllerTemplateAxis ISixDofControllerTemplate.extraAxis4 { get { return GetElement<IControllerTemplateAxis>(elementId_extraAxis4); } }
        
        /// <summary>
        /// The "Button 1" element.
        /// </summary>
        /// <returns>Returns the "Button 1" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button1 { get { return GetElement<IControllerTemplateButton>(elementId_button1); } }
        
        /// <summary>
        /// The "Button 2" element.
        /// </summary>
        /// <returns>Returns the "Button 2" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button2 { get { return GetElement<IControllerTemplateButton>(elementId_button2); } }
        
        /// <summary>
        /// The "Button 3" element.
        /// </summary>
        /// <returns>Returns the "Button 3" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button3 { get { return GetElement<IControllerTemplateButton>(elementId_button3); } }
        
        /// <summary>
        /// The "Button 4" element.
        /// </summary>
        /// <returns>Returns the "Button 4" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button4 { get { return GetElement<IControllerTemplateButton>(elementId_button4); } }
        
        /// <summary>
        /// The "Button 5" element.
        /// </summary>
        /// <returns>Returns the "Button 5" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button5 { get { return GetElement<IControllerTemplateButton>(elementId_button5); } }
        
        /// <summary>
        /// The "Button 6" element.
        /// </summary>
        /// <returns>Returns the "Button 6" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button6 { get { return GetElement<IControllerTemplateButton>(elementId_button6); } }
        
        /// <summary>
        /// The "Button 7" element.
        /// </summary>
        /// <returns>Returns the "Button 7" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button7 { get { return GetElement<IControllerTemplateButton>(elementId_button7); } }
        
        /// <summary>
        /// The "Button 8" element.
        /// </summary>
        /// <returns>Returns the "Button 8" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button8 { get { return GetElement<IControllerTemplateButton>(elementId_button8); } }
        
        /// <summary>
        /// The "Button 9" element.
        /// </summary>
        /// <returns>Returns the "Button 9" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button9 { get { return GetElement<IControllerTemplateButton>(elementId_button9); } }
        
        /// <summary>
        /// The "Button 10" element.
        /// </summary>
        /// <returns>Returns the "Button 10" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button10 { get { return GetElement<IControllerTemplateButton>(elementId_button10); } }
        
        /// <summary>
        /// The "Button 11" element.
        /// </summary>
        /// <returns>Returns the "Button 11" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button11 { get { return GetElement<IControllerTemplateButton>(elementId_button11); } }
        
        /// <summary>
        /// The "Button 12" element.
        /// </summary>
        /// <returns>Returns the "Button 12" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button12 { get { return GetElement<IControllerTemplateButton>(elementId_button12); } }
        
        /// <summary>
        /// The "Button 13" element.
        /// </summary>
        /// <returns>Returns the "Button 13" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button13 { get { return GetElement<IControllerTemplateButton>(elementId_button13); } }
        
        /// <summary>
        /// The "Button 14" element.
        /// </summary>
        /// <returns>Returns the "Button 14" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button14 { get { return GetElement<IControllerTemplateButton>(elementId_button14); } }
        
        /// <summary>
        /// The "Button 15" element.
        /// </summary>
        /// <returns>Returns the "Button 15" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button15 { get { return GetElement<IControllerTemplateButton>(elementId_button15); } }
        
        /// <summary>
        /// The "Button 16" element.
        /// </summary>
        /// <returns>Returns the "Button 16" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button16 { get { return GetElement<IControllerTemplateButton>(elementId_button16); } }
        
        /// <summary>
        /// The "Button 17" element.
        /// </summary>
        /// <returns>Returns the "Button 17" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button17 { get { return GetElement<IControllerTemplateButton>(elementId_button17); } }
        
        /// <summary>
        /// The "Button 18" element.
        /// </summary>
        /// <returns>Returns the "Button 18" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button18 { get { return GetElement<IControllerTemplateButton>(elementId_button18); } }
        
        /// <summary>
        /// The "Button 19" element.
        /// </summary>
        /// <returns>Returns the "Button 19" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button19 { get { return GetElement<IControllerTemplateButton>(elementId_button19); } }
        
        /// <summary>
        /// The "Button 20" element.
        /// </summary>
        /// <returns>Returns the "Button 20" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button20 { get { return GetElement<IControllerTemplateButton>(elementId_button20); } }
        
        /// <summary>
        /// The "Button 21" element.
        /// </summary>
        /// <returns>Returns the "Button 21" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button21 { get { return GetElement<IControllerTemplateButton>(elementId_button21); } }
        
        /// <summary>
        /// The "Button 22" element.
        /// </summary>
        /// <returns>Returns the "Button 22" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button22 { get { return GetElement<IControllerTemplateButton>(elementId_button22); } }
        
        /// <summary>
        /// The "Button 23" element.
        /// </summary>
        /// <returns>Returns the "Button 23" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button23 { get { return GetElement<IControllerTemplateButton>(elementId_button23); } }
        
        /// <summary>
        /// The "Button 24" element.
        /// </summary>
        /// <returns>Returns the "Button 24" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button24 { get { return GetElement<IControllerTemplateButton>(elementId_button24); } }
        
        /// <summary>
        /// The "Button 25" element.
        /// </summary>
        /// <returns>Returns the "Button 25" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button25 { get { return GetElement<IControllerTemplateButton>(elementId_button25); } }
        
        /// <summary>
        /// The "Button 26" element.
        /// </summary>
        /// <returns>Returns the "Button 26" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button26 { get { return GetElement<IControllerTemplateButton>(elementId_button26); } }
        
        /// <summary>
        /// The "Button 27" element.
        /// </summary>
        /// <returns>Returns the "Button 27" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button27 { get { return GetElement<IControllerTemplateButton>(elementId_button27); } }
        
        /// <summary>
        /// The "Button 28" element.
        /// </summary>
        /// <returns>Returns the "Button 28" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button28 { get { return GetElement<IControllerTemplateButton>(elementId_button28); } }
        
        /// <summary>
        /// The "Button 29" element.
        /// </summary>
        /// <returns>Returns the "Button 29" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button29 { get { return GetElement<IControllerTemplateButton>(elementId_button29); } }
        
        /// <summary>
        /// The "Button 30" element.
        /// </summary>
        /// <returns>Returns the "Button 30" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button30 { get { return GetElement<IControllerTemplateButton>(elementId_button30); } }
        
        /// <summary>
        /// The "Button 31" element.
        /// </summary>
        /// <returns>Returns the "Button 31" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button31 { get { return GetElement<IControllerTemplateButton>(elementId_button31); } }
        
        /// <summary>
        /// The "Button 32" element.
        /// </summary>
        /// <returns>Returns the "Button 32" element.</returns>
        IControllerTemplateButton ISixDofControllerTemplate.button32 { get { return GetElement<IControllerTemplateButton>(elementId_button32); } }
        
        /// <summary>
        /// The "Hat 1" element.
        /// </summary>
        /// <returns>Returns the "Hat 1" element.</returns>
        IControllerTemplateHat ISixDofControllerTemplate.hat1 { get { return GetElement<IControllerTemplateHat>(elementId_hat1); } }
        
        /// <summary>
        /// The "Hat 2" element.
        /// </summary>
        /// <returns>Returns the "Hat 2" element.</returns>
        IControllerTemplateHat ISixDofControllerTemplate.hat2 { get { return GetElement<IControllerTemplateHat>(elementId_hat2); } }
        
        /// <summary>
        /// The "Throttle 1" element.
        /// </summary>
        /// <returns>Returns the "Throttle 1" element.</returns>
        IControllerTemplateThrottle ISixDofControllerTemplate.throttle1 { get { return GetElement<IControllerTemplateThrottle>(elementId_throttle1); } }
        
        /// <summary>
        /// The "Throttle 2" element.
        /// </summary>
        /// <returns>Returns the "Throttle 2" element.</returns>
        IControllerTemplateThrottle ISixDofControllerTemplate.throttle2 { get { return GetElement<IControllerTemplateThrottle>(elementId_throttle2); } }
        
        /// <summary>
        /// The "Stick" element.
        /// </summary>
        /// <returns>Returns the "Stick" element.</returns>
        IControllerTemplateStick6D ISixDofControllerTemplate.stick { get { return GetElement<IControllerTemplateStick6D>(elementId_stick); } }
        
        #endregion
        
        /// <summary>
        /// Creates a new instance of this class.
        /// </summary>
        public SixDofControllerTemplate(object payload) : base(payload) { }
    }
    
    #endregion
}

#endif

#region Internal

namespace Rewired.Internal {
    using System;
    
    /// <summary>
    /// Factory class for creating Controller Templates.
    /// This is for internal use only.
    /// </summary>
    #if UNITY_EDITOR
    [System.ComponentModel.Browsable(false)]
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
    #endif
    public static partial class ControllerTemplateFactory {
        
        private static readonly Type[] _defaultTemplateTypes = new Type[] {
            typeof(GamepadTemplate),
            typeof(RacingWheelTemplate),
            typeof(HOTASTemplate),
            typeof(FlightYokeTemplate),
            typeof(FlightPedalsTemplate),
            typeof(SixDofControllerTemplate)
        };
        
        private static readonly Type[] _defaultTemplateInterfaceTypes = new Type[] {
            typeof(IGamepadTemplate),
            typeof(IRacingWheelTemplate),
            typeof(IHOTASTemplate),
            typeof(IFlightYokeTemplate),
            typeof(IFlightPedalsTemplate),
            typeof(ISixDofControllerTemplate)
        };
        
        /// <summary>
        /// Controller Template types.
        /// </summary>
        public static Type[] templateTypes {
            get {
                #if !REWIRED_USE_USER_DEFINED_CONTROLLER_TEMPLATES
                return _defaultTemplateTypes;
                #else
                return _userTemplateTypes;
                #endif
            }
        }
        
        /// <summary>
        /// Controller Template interface types.
        /// </summary>
        public static Type[] templateInterfaceTypes {
            get {
                #if !REWIRED_USE_USER_DEFINED_CONTROLLER_TEMPLATES
                return _defaultTemplateInterfaceTypes;
                #else
                return _userTemplateInterfaceTypes;
                #endif
            }
        }
        
        /// <summary>
        /// Creates a Controller Template instance.
        /// </summary>
        /// <param name="typeGuid">Type GUID of the Controller Template.</param>
        /// <param name="payload">Payload.</param>
        public static IControllerTemplate Create(Guid typeGuid, object payload) {
            #if !REWIRED_USE_USER_DEFINED_CONTROLLER_TEMPLATES
            if(typeGuid == GamepadTemplate.typeGuid) return new GamepadTemplate(payload);
            if(typeGuid == RacingWheelTemplate.typeGuid) return new RacingWheelTemplate(payload);
            if(typeGuid == HOTASTemplate.typeGuid) return new HOTASTemplate(payload);
            if(typeGuid == FlightYokeTemplate.typeGuid) return new FlightYokeTemplate(payload);
            if(typeGuid == FlightPedalsTemplate.typeGuid) return new FlightPedalsTemplate(payload);
            if(typeGuid == SixDofControllerTemplate.typeGuid) return new SixDofControllerTemplate(payload);
            return null;
            #else
            return CreateUser(typeGuid, payload);
            #endif
        }
    }
}

#endregion
