 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp102 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp102DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp102DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp103 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp103DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp103DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp104 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp104DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp104DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp105 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp105DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp105DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp111 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp111DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp111DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp112 |
 | us-gaap:DefinedContributionPlanTypeExtensibleList | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp112 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp112DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp112DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanTypeExtensibleList | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp112DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp121 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp121DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp121DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp122 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp122DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp122DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp123 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp123DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp123DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp125 |
 | us-gaap:DefinedContributionPlanTaxStatusExtensibleList | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp125 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp125DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp125DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanTaxStatusExtensibleList | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp125DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp131 |
 | us-gaap:DefinedContributionPlanSponsorLocationExtensibleList | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp131 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp131DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp131DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanSponsorLocationExtensibleList | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp131DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141 |
 | us-gaap:DefinedContributionPlanSponsorLocationExtensibleList | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141 |
 | us-gaap:DefinedContributionPlanTaxStatusExtensibleList | parent-child | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141 |
 | us-gaap:DefinedContributionPlanTable | all | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanCostRecognized | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanSponsorLocationExtensibleList | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141DefinedContributionPlanTable |
 | us-gaap:DefinedContributionPlanTaxStatusExtensibleList | domain-member | http://fasb.org/us-gaap/role/disclosure/RetirementBenefitsTmp141DefinedContributionPlanTable |