{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}

module Tax.Canada.T1.Fix (fixT1) where

import Control.Applicative ((<|>))
import Data.Fixed (Centi)
import Data.Maybe (fromMaybe)
import Data.Text (Text)
import Data.Time.Calendar (Year, dayPeriod)
import Rank2 qualified

import Tax.Canada.T1.Types
import Tax.Util (difference, fixEq, leastOf, nonNegativeDifference, totalOf)

fixT1 :: T1 Maybe -> T1 Maybe
fixT1 :: T1 Maybe -> T1 Maybe
fixT1 = (T1 Maybe -> T1 Maybe) -> T1 Maybe -> T1 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((T1 Maybe -> T1 Maybe) -> T1 Maybe -> T1 Maybe)
-> (T1 Maybe -> T1 Maybe) -> T1 Maybe -> T1 Maybe
forall a b. (a -> b) -> a -> b
$ \t1 :: T1 Maybe
t1@T1{Page8 Maybe
Page7 Maybe
Page6 Maybe
Page5 Maybe
Page4 Maybe
Page3 Maybe
Page2 Maybe
Page1 Maybe
page1 :: Page1 Maybe
page2 :: Page2 Maybe
page3 :: Page3 Maybe
page4 :: Page4 Maybe
page5 :: Page5 Maybe
page6 :: Page6 Maybe
page7 :: Page7 Maybe
page8 :: Page8 Maybe
$sel:page1:T1 :: forall (line :: * -> *). T1 line -> Page1 line
$sel:page2:T1 :: forall (line :: * -> *). T1 line -> Page2 line
$sel:page3:T1 :: forall (line :: * -> *). T1 line -> Page3 line
$sel:page4:T1 :: forall (line :: * -> *). T1 line -> Page4 line
$sel:page5:T1 :: forall (line :: * -> *). T1 line -> Page5 line
$sel:page6:T1 :: forall (line :: * -> *). T1 line -> Page6 line
$sel:page7:T1 :: forall (line :: * -> *). T1 line -> Page7 line
$sel:page8:T1 :: forall (line :: * -> *). T1 line -> Page8 line
..}-> T1{$sel:page1:T1 :: Page1 Maybe
page1 = Page1 Maybe -> Page1 Maybe
fixPage1 Page1 Maybe
page1,
                                $sel:page2:T1 :: Page2 Maybe
page2 = Page2 Maybe -> Page2 Maybe
fixPage2 Page2 Maybe
page2,
                                $sel:page3:T1 :: Page3 Maybe
page3 = Page3 Maybe -> Page3 Maybe
fixPage3 Page3 Maybe
page3,
                                $sel:page4:T1 :: Page4 Maybe
page4 = T1 Maybe -> Page4 Maybe -> Page4 Maybe
fixPage4 T1 Maybe
t1 Page4 Maybe
page4,
                                $sel:page5:T1 :: Page5 Maybe
page5 = T1 Maybe -> Page5 Maybe -> Page5 Maybe
fixPage5 T1 Maybe
t1 Page5 Maybe
page5,
                                $sel:page6:T1 :: Page6 Maybe
page6 = T1 Maybe -> Page6 Maybe -> Page6 Maybe
fixPage6 T1 Maybe
t1 Page6 Maybe
page6,
                                $sel:page7:T1 :: Page7 Maybe
page7 = T1 Maybe -> Page7 Maybe -> Page7 Maybe
fixPage7 T1 Maybe
t1 Page7 Maybe
page7,
                                $sel:page8:T1 :: Page8 Maybe
page8 = T1 Maybe -> Page8 Maybe -> Page8 Maybe
fixPage8 T1 Maybe
t1 Page8 Maybe
page8}

fixPage1 :: Page1 Maybe -> Page1 Maybe
fixPage1 :: Page1 Maybe -> Page1 Maybe
fixPage1 = Page1 Maybe -> Page1 Maybe
forall a. a -> a
id

fixPage2 :: Page2 Maybe -> Page2 Maybe
fixPage2 :: Page2 Maybe -> Page2 Maybe
fixPage2 = Page2 Maybe -> Page2 Maybe
forall a. a -> a
id

fixPage3 :: Page3 Maybe -> Page3 Maybe
fixPage3 :: Page3 Maybe -> Page3 Maybe
fixPage3 = (Page3 Maybe -> Page3 Maybe) -> Page3 Maybe -> Page3 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page3 Maybe -> Page3 Maybe) -> Page3 Maybe -> Page3 Maybe)
-> (Page3 Maybe -> Page3 Maybe) -> Page3 Maybe -> Page3 Maybe
forall a b. (a -> b) -> a -> b
$ \page :: Page3 Maybe
page@Page3{Maybe Text
Maybe Centi
line_10100_EmploymentIncome :: Maybe Centi
line_10105_Taxexemptamount :: Maybe Centi
line_10120_Commissions :: Maybe Centi
line_10130_sf :: Maybe Centi
line_10400_OtherEmploymentIncome :: Maybe Centi
line_11300_OldAgeSecurityPension :: Maybe Centi
line_11400_CPP_QPP :: Maybe Centi
line_11410_DisabilityBenefits :: Maybe Centi
line_11500_OtherPensions :: Maybe Centi
line_11600_ElectedSplitPension :: Maybe Centi
line_11700_UCCB :: Maybe Centi
line_11701_UCCBDesignated :: Maybe Centi
line_11900_EmploymentInsurance :: Maybe Centi
line_11905_Employmentmaternity :: Maybe Centi
line_12000_TaxableDividends :: Maybe Centi
line_12010_OtherTaxableDividends :: Maybe Centi
line_12100_InvestmentIncome :: Maybe Centi
line_12200_PartnershipIncome :: Maybe Centi
line_12500_RDSP :: Maybe Centi
line_12599_12600_RentalIncome :: Maybe Centi
line_12600_Amount :: Maybe Centi
line_12700_TaxableCapitalGains :: Maybe Centi
line_12799_Amount :: Maybe Centi
line_12800_Amount :: Maybe Centi
line_12900_RRSPIncome :: Maybe Centi
line_13000_OtherIncome :: Maybe Centi
line_13000_OtherIncomeSource :: Maybe Text
line_13010_Taxablescholarship :: Maybe Centi
line_19 :: Maybe Centi
line_13499_Amount :: Maybe Centi
line_13500_Amount :: Maybe Centi
line_13699_Amount :: Maybe Centi
line_13700_Amount :: Maybe Centi
line_13899_Amount :: Maybe Centi
line_13900_Amount :: Maybe Centi
line_14099_Amount :: Maybe Centi
line_14100_Amount :: Maybe Centi
line_14299_Amount :: Maybe Centi
line_14300_Amount :: Maybe Centi
line_25_sum :: Maybe Centi
line_25_cont :: Maybe Centi
line_26 :: Maybe Centi
line_14400_WorkersCompBen :: Maybe Centi
line_14500_SocialAssistPay :: Maybe Centi
line_14600_NetFedSupplements :: Maybe Centi
line_14700_EqualsAmount :: Maybe Centi
line_14700_PlusAmount :: Maybe Centi
line_15000_TotalIncome :: Maybe Centi
$sel:line_10100_EmploymentIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_10105_Taxexemptamount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_10120_Commissions:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_10130_sf:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_10400_OtherEmploymentIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11300_OldAgeSecurityPension:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11400_CPP_QPP:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11410_DisabilityBenefits:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11500_OtherPensions:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11600_ElectedSplitPension:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11700_UCCB:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11701_UCCBDesignated:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11900_EmploymentInsurance:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_11905_Employmentmaternity:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12000_TaxableDividends:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12010_OtherTaxableDividends:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12100_InvestmentIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12200_PartnershipIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12500_RDSP:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12599_12600_RentalIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12600_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12700_TaxableCapitalGains:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12799_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12800_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_12900_RRSPIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13000_OtherIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13000_OtherIncomeSource:Page3 :: forall (line :: * -> *). Page3 line -> line Text
$sel:line_13010_Taxablescholarship:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_19:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13499_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13500_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13699_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13700_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13899_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_13900_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14099_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14100_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14299_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14300_Amount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_25_sum:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_25_cont:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_26:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14400_WorkersCompBen:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14500_SocialAssistPay:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14600_NetFedSupplements:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14700_EqualsAmount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_14700_PlusAmount:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
$sel:line_15000_TotalIncome:Page3 :: forall (line :: * -> *). Page3 line -> line Centi
..}-> Page3 Maybe
page{
   $sel:line_19:Page3 :: Maybe Centi
line_19 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_10100_EmploymentIncome ,
                      Maybe Centi
line_10400_OtherEmploymentIncome,
                      Maybe Centi
line_11300_OldAgeSecurityPension,
                      Maybe Centi
line_11400_CPP_QPP,
                      Maybe Centi
line_11500_OtherPensions,
                      Maybe Centi
line_11600_ElectedSplitPension,
                      Maybe Centi
line_11700_UCCB,
                      Maybe Centi
line_11900_EmploymentInsurance,
                      Maybe Centi
line_12000_TaxableDividends,
                      Maybe Centi
line_12100_InvestmentIncome,
                      Maybe Centi
line_12200_PartnershipIncome,
                      Maybe Centi
line_12500_RDSP,
                      Maybe Centi
line_12600_Amount,
                      Maybe Centi
line_12700_TaxableCapitalGains,
                      Maybe Centi
line_12800_Amount,
                      Maybe Centi
line_12900_RRSPIncome,
                      Maybe Centi
line_13000_OtherIncome,
                      Maybe Centi
line_13010_Taxablescholarship],
   $sel:line_25_sum:Page3 :: Maybe Centi
line_25_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_13500_Amount,
                          Maybe Centi
line_13700_Amount,
                          Maybe Centi
line_13900_Amount,
                          Maybe Centi
line_14100_Amount,
                          Maybe Centi
line_14300_Amount],
   $sel:line_25_cont:Page3 :: Maybe Centi
line_25_cont = Maybe Centi
line_25_sum,
   $sel:line_26:Page3 :: Maybe Centi
line_26 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_19, Maybe Centi
line_25_cont],
   $sel:line_14700_EqualsAmount:Page3 :: Maybe Centi
line_14700_EqualsAmount = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_14400_WorkersCompBen,
                                      Maybe Centi
line_14500_SocialAssistPay,
                                      Maybe Centi
line_14600_NetFedSupplements],
   $sel:line_14700_PlusAmount:Page3 :: Maybe Centi
line_14700_PlusAmount = Maybe Centi
line_14700_EqualsAmount,
   $sel:line_15000_TotalIncome:Page3 :: Maybe Centi
line_15000_TotalIncome = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_26, Maybe Centi
line_14700_PlusAmount]}

fixPage4 :: T1 Maybe -> Page4 Maybe -> Page4 Maybe
fixPage4 :: T1 Maybe -> Page4 Maybe -> Page4 Maybe
fixPage4 T1 Maybe
t1 = (Page4 Maybe -> Page4 Maybe) -> Page4 Maybe -> Page4 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page4 Maybe -> Page4 Maybe) -> Page4 Maybe -> Page4 Maybe)
-> (Page4 Maybe -> Page4 Maybe) -> Page4 Maybe -> Page4 Maybe
forall a b. (a -> b) -> a -> b
$ \page :: Page4 Maybe
page@Page4{Maybe Text
Maybe Centi
line_15000_TotalIncome_2 :: Maybe Centi
line_20600_PensionAdjustment :: Maybe Centi
line_20700_RPPDeduction :: Maybe Centi
line_20800_RRSPDeduction :: Maybe Centi
line_20810_PRPP :: Maybe Centi
line_21000_SplitPensionDeduction :: Maybe Centi
line_21200_Dues :: Maybe Centi
line_21300_UCCBRepayment :: Maybe Centi
line_21400_ChildCareExpenses :: Maybe Centi
line_21500_DisabilityDeduction :: Maybe Centi
line_21699_Amount :: Maybe Centi
line_21700_Amount :: Maybe Centi
line_21900_MovingExpenses :: Maybe Centi
line_21999_Amount :: Maybe Centi
line_22000_Amount :: Maybe Centi
line_22100_CarryingChargesInterest :: Maybe Centi
line_22200_CPP_QPP_Contributions :: Maybe Centi
line_22215_DeductionCPP_QPP :: Maybe Centi
line_22400_XplorationDevExpenses :: Maybe Centi
line_22900_OtherEmployExpenses :: Maybe Centi
line_23100_ClergyResDeduction :: Maybe Centi
line_23200_OtherDeductions :: Maybe Centi
line_23200_Specify :: Maybe Text
line_23210 :: Maybe Centi
line_23300_cont :: Maybe Centi
line_23300_sum :: Maybe Centi
line_23400_NetBeforeAdjust :: Maybe Centi
line_23500_SocialBenefits :: Maybe Centi
line_23600_NetIncome :: Maybe Centi
$sel:line_15000_TotalIncome_2:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_20600_PensionAdjustment:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_20700_RPPDeduction:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_20800_RRSPDeduction:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_20810_PRPP:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21000_SplitPensionDeduction:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21200_Dues:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21300_UCCBRepayment:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21400_ChildCareExpenses:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21500_DisabilityDeduction:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21699_Amount:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21700_Amount:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21900_MovingExpenses:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_21999_Amount:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_22000_Amount:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_22100_CarryingChargesInterest:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_22200_CPP_QPP_Contributions:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_22215_DeductionCPP_QPP:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_22400_XplorationDevExpenses:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_22900_OtherEmployExpenses:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23100_ClergyResDeduction:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23200_OtherDeductions:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23200_Specify:Page4 :: forall (line :: * -> *). Page4 line -> line Text
$sel:line_23210:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23300_cont:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23300_sum:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23400_NetBeforeAdjust:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23500_SocialBenefits:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
$sel:line_23600_NetIncome:Page4 :: forall (line :: * -> *). Page4 line -> line Centi
..}-> Page4 Maybe
page{
   $sel:line_15000_TotalIncome_2:Page4 :: Maybe Centi
line_15000_TotalIncome_2 = T1 Maybe
t1.page3.line_15000_TotalIncome,
   $sel:line_23300_sum:Page4 :: Maybe Centi
line_23300_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_20700_RPPDeduction,
                             Maybe Centi
line_20800_RRSPDeduction,
                             Maybe Centi
line_21000_SplitPensionDeduction,
                             Maybe Centi
line_21200_Dues,
                             Maybe Centi
line_21300_UCCBRepayment,
                             Maybe Centi
line_21400_ChildCareExpenses,
                             Maybe Centi
line_21500_DisabilityDeduction,
                             Maybe Centi
line_21700_Amount,
                             Maybe Centi
line_21900_MovingExpenses,
                             Maybe Centi
line_22000_Amount,
                             Maybe Centi
line_22100_CarryingChargesInterest,
                             Maybe Centi
line_22200_CPP_QPP_Contributions,
                             Maybe Centi
line_22215_DeductionCPP_QPP,
                             Maybe Centi
line_22400_XplorationDevExpenses,
                             Maybe Centi
line_22900_OtherEmployExpenses,
                             Maybe Centi
line_23100_ClergyResDeduction,
                             Maybe Centi
line_23200_OtherDeductions,
                             Maybe Centi
line_23210],
   $sel:line_23300_cont:Page4 :: Maybe Centi
line_23300_cont = Maybe Centi
line_23300_sum,
   $sel:line_23400_NetBeforeAdjust:Page4 :: Maybe Centi
line_23400_NetBeforeAdjust = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
line_15000_TotalIncome_2 Maybe Centi
line_23300_cont,
   $sel:line_23600_NetIncome:Page4 :: Maybe Centi
line_23600_NetIncome = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
line_23400_NetBeforeAdjust Maybe Centi
line_23500_SocialBenefits}

fixPage5 :: T1 Maybe -> Page5 Maybe -> Page5 Maybe
fixPage5 :: T1 Maybe -> Page5 Maybe -> Page5 Maybe
fixPage5 T1 Maybe
t1 = (Page5 Maybe -> Page5 Maybe) -> Page5 Maybe -> Page5 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page5 Maybe -> Page5 Maybe) -> Page5 Maybe -> Page5 Maybe)
-> (Page5 Maybe -> Page5 Maybe) -> Page5 Maybe -> Page5 Maybe
forall a b. (a -> b) -> a -> b
$ \Page5{Page5PartB Maybe
Page5PartA Maybe
Step4 Maybe
step4_TaxableIncome :: Step4 Maybe
partA_FederalTax :: Page5PartA Maybe
partB_FederalTaxCredits :: Page5PartB Maybe
$sel:step4_TaxableIncome:Page5 :: forall (line :: * -> *). Page5 line -> Step4 line
$sel:partA_FederalTax:Page5 :: forall (line :: * -> *). Page5 line -> Page5PartA line
$sel:partB_FederalTaxCredits:Page5 :: forall (line :: * -> *). Page5 line -> Page5PartB line
..}-> Page5{
   $sel:step4_TaxableIncome:Page5 :: Step4 Maybe
step4_TaxableIncome = T1 Maybe -> Step4 Maybe -> Step4 Maybe
fixStep4 T1 Maybe
t1 Step4 Maybe
step4_TaxableIncome,
   $sel:partA_FederalTax:Page5 :: Page5PartA Maybe
partA_FederalTax = T1 Maybe -> Page5PartA Maybe -> Page5PartA Maybe
fixPage5PartA T1 Maybe
t1 Page5PartA Maybe
partA_FederalTax,
   $sel:partB_FederalTaxCredits:Page5 :: Page5PartB Maybe
partB_FederalTaxCredits = T1 Maybe -> Page5PartB Maybe -> Page5PartB Maybe
fixPage5PartB T1 Maybe
t1 Page5PartB Maybe
partB_FederalTaxCredits}

fixPage6 :: T1 Maybe -> Page6 Maybe -> Page6 Maybe
fixPage6 :: T1 Maybe -> Page6 Maybe -> Page6 Maybe
fixPage6 T1 Maybe
t1 = (Page6 Maybe -> Page6 Maybe) -> Page6 Maybe -> Page6 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page6 Maybe -> Page6 Maybe) -> Page6 Maybe -> Page6 Maybe)
-> (Page6 Maybe -> Page6 Maybe) -> Page6 Maybe -> Page6 Maybe
forall a b. (a -> b) -> a -> b
$ \page :: Page6 Maybe
page@Page6{Maybe Centi
MedicalExpenses Maybe
line82 :: Maybe Centi
line30800 :: Maybe Centi
line31000 :: Maybe Centi
line31200 :: Maybe Centi
line31217 :: Maybe Centi
line31220 :: Maybe Centi
line31240 :: Maybe Centi
line31260 :: Maybe Centi
line31270 :: Maybe Centi
line31285 :: Maybe Centi
line31300 :: Maybe Centi
line31350 :: Maybe Centi
line94_sum :: Maybe Centi
line94_cont :: Maybe Centi
line31400 :: Maybe Centi
line96 :: Maybe Centi
line31600 :: Maybe Centi
line31800 :: Maybe Centi
line99 :: Maybe Centi
line31900 :: Maybe Centi
line32300 :: Maybe Centi
line32400 :: Maybe Centi
line32600 :: Maybe Centi
line104 :: Maybe Centi
medical_expenses :: MedicalExpenses Maybe
line33200_sum :: Maybe Centi
line33200_cont :: Maybe Centi
line33500 :: Maybe Centi
line33800 :: Maybe Centi
line34900 :: Maybe Centi
line35000 :: Maybe Centi
$sel:line82:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line30800:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31000:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31200:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31217:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31220:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31240:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31260:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31270:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31285:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31300:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31350:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line94_sum:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line94_cont:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31400:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line96:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31600:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31800:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line99:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line31900:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line32300:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line32400:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line32600:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line104:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:medical_expenses:Page6 :: forall (line :: * -> *). Page6 line -> MedicalExpenses line
$sel:line33200_sum:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line33200_cont:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line33500:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line33800:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line34900:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
$sel:line35000:Page6 :: forall (line :: * -> *). Page6 line -> line Centi
..}-> Page6 Maybe
page{
   $sel:line82:Page6 :: Maybe Centi
line82 = T1 Maybe
t1.page5.partB_FederalTaxCredits.line_81,
   $sel:line31260:Page6 :: Maybe Centi
line31260 = [Maybe Centi] -> Maybe Centi
leastOf [Centi -> Maybe Centi
forall a. a -> Maybe a
Just Centi
1287,
                        [Maybe Centi] -> Maybe Centi
totalOf [T1 Maybe
t1.page3.line_10100_EmploymentIncome, T1 Maybe
t1.page3.line_10400_OtherEmploymentIncome]],
   $sel:line94_sum:Page6 :: Maybe Centi
line94_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line30800,
                         Maybe Centi
line31000,
                         Maybe Centi
line31200,
                         Maybe Centi
line31217,
                         Maybe Centi
line31220,
                         Maybe Centi
line31240,
                         Maybe Centi
line31260,
                         Maybe Centi
line31270,
                         Maybe Centi
line31285,
                         Maybe Centi
line31300,
                         Maybe Centi
line31350],
   $sel:line94_cont:Page6 :: Maybe Centi
line94_cont = Maybe Centi
line94_sum,
   $sel:line96:Page6 :: Maybe Centi
line96 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line82, Maybe Centi
line94_cont, Maybe Centi
line31400],
   $sel:line99:Page6 :: Maybe Centi
line99 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line96, Maybe Centi
line31600, Maybe Centi
line31800],
   $sel:line104:Page6 :: Maybe Centi
line104 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line99, Maybe Centi
line31900, Maybe Centi
line32300, Maybe Centi
line32400, Maybe Centi
line32600],
   $sel:medical_expenses:Page6 :: MedicalExpenses Maybe
medical_expenses = T1 Maybe -> MedicalExpenses Maybe -> MedicalExpenses Maybe
fixMedicalExpenses T1 Maybe
t1 MedicalExpenses Maybe
medical_expenses,
   $sel:line33200_sum:Page6 :: Maybe Centi
line33200_sum = [Maybe Centi] -> Maybe Centi
totalOf [MedicalExpenses Maybe
medical_expenses.difference, MedicalExpenses Maybe
medical_expenses.otherDependants],
   $sel:line33200_cont:Page6 :: Maybe Centi
line33200_cont = Maybe Centi
line33200_sum,
   $sel:line33500:Page6 :: Maybe Centi
line33500 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line104, Maybe Centi
line33200_cont],
   $sel:line33800:Page6 :: Maybe Centi
line33800 = (Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
0.15) (Centi -> Centi) -> Maybe Centi -> Maybe Centi
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Centi
line33500,
   $sel:line35000:Page6 :: Maybe Centi
line35000 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line33800, Maybe Centi
line34900]}

fixPage7 :: T1 Maybe -> Page7 Maybe -> Page7 Maybe
fixPage7 :: T1 Maybe -> Page7 Maybe -> Page7 Maybe
fixPage7 T1 Maybe
t1 = (Page7 Maybe -> Page7 Maybe) -> Page7 Maybe -> Page7 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page7 Maybe -> Page7 Maybe) -> Page7 Maybe -> Page7 Maybe)
-> (Page7 Maybe -> Page7 Maybe) -> Page7 Maybe -> Page7 Maybe
forall a b. (a -> b) -> a -> b
$ \Page7{Page7PartC Maybe
partC_NetFederalTax :: Page7PartC Maybe
$sel:partC_NetFederalTax:Page7 :: forall (line :: * -> *). Page7 line -> Page7PartC line
partC_NetFederalTax, Page7Step6 Maybe
step6_RefundOrBalanceOwing :: Page7Step6 Maybe
$sel:step6_RefundOrBalanceOwing:Page7 :: forall (line :: * -> *). Page7 line -> Page7Step6 line
step6_RefundOrBalanceOwing}-> Page7{
   $sel:partC_NetFederalTax:Page7 :: Page7PartC Maybe
partC_NetFederalTax = T1 Maybe -> Page7PartC Maybe -> Page7PartC Maybe
fixPage7PartC T1 Maybe
t1 Page7PartC Maybe
partC_NetFederalTax,
   $sel:step6_RefundOrBalanceOwing:Page7 :: Page7Step6 Maybe
step6_RefundOrBalanceOwing = T1 Maybe -> Page7Step6 Maybe -> Page7Step6 Maybe
fixPage7Step6 T1 Maybe
t1 Page7Step6 Maybe
step6_RefundOrBalanceOwing}

fixPage8 :: T1 Maybe -> Page8 Maybe -> Page8 Maybe
fixPage8 :: T1 Maybe -> Page8 Maybe -> Page8 Maybe
fixPage8 T1 Maybe
t1 = (Page8 Maybe -> Page8 Maybe) -> Page8 Maybe -> Page8 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page8 Maybe -> Page8 Maybe) -> Page8 Maybe -> Page8 Maybe)
-> (Page8 Maybe -> Page8 Maybe) -> Page8 Maybe -> Page8 Maybe
forall a b. (a -> b) -> a -> b
$ \page :: Page8 Maybe
page@Page8{Maybe Centi
TaxPreparer Maybe
Page8Step6 Maybe
step6_RefundOrBalanceOwing :: Page8Step6 Maybe
line48400_Refund :: Maybe Centi
line48500_BalanceOwing :: Maybe Centi
telephone :: Maybe Centi
date :: Maybe Centi
taxPreparer :: TaxPreparer Maybe
line_1_ONOpportunitiesFund :: Maybe Centi
line_46500 :: Maybe Centi
line_46600 :: Maybe Centi
$sel:step6_RefundOrBalanceOwing:Page8 :: forall (line :: * -> *). Page8 line -> Page8Step6 line
$sel:line48400_Refund:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
$sel:line48500_BalanceOwing:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
$sel:telephone:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
$sel:date:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
$sel:taxPreparer:Page8 :: forall (line :: * -> *). Page8 line -> TaxPreparer line
$sel:line_1_ONOpportunitiesFund:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
$sel:line_46500:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
$sel:line_46600:Page8 :: forall (line :: * -> *). Page8 line -> line Centi
..}-> Page8{
   $sel:step6_RefundOrBalanceOwing:Page8 :: Page8Step6 Maybe
step6_RefundOrBalanceOwing = T1 Maybe -> Page8Step6 Maybe -> Page8Step6 Maybe
fixPage8Step6 T1 Maybe
t1 Page8Step6 Maybe
step6_RefundOrBalanceOwing,
   $sel:line48400_Refund:Page8 :: Maybe Centi
line48400_Refund = Page8Step6 Maybe
step6_RefundOrBalanceOwing.line164_Refund_or_BalanceOwing
                      Maybe Centi -> (Centi -> Maybe Centi) -> Maybe Centi
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Centi
x-> if Centi
x Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
< Centi
0 then Centi -> Maybe Centi
forall a. a -> Maybe a
Just (Centi -> Centi
forall a. Num a => a -> a
negate Centi
x) else Maybe Centi
forall a. Maybe a
Nothing,
   $sel:line48500_BalanceOwing:Page8 :: Maybe Centi
line48500_BalanceOwing = Page8Step6 Maybe
step6_RefundOrBalanceOwing.line164_Refund_or_BalanceOwing
                            Maybe Centi -> (Centi -> Maybe Centi) -> Maybe Centi
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Centi
x-> if Centi
x Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
> Centi
0 then Centi -> Maybe Centi
forall a. a -> Maybe a
Just Centi
x else Maybe Centi
forall a. Maybe a
Nothing,
   $sel:line_46600:Page8 :: Maybe Centi
line_46600 = (-) (Centi -> Centi -> Centi) -> Maybe Centi -> Maybe (Centi -> Centi)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Centi
line48400_Refund Maybe (Centi -> Centi) -> Maybe Centi -> Maybe Centi
forall a b. Maybe (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe Centi
line_46500,
   Maybe Centi
TaxPreparer Maybe
telephone :: Maybe Centi
date :: Maybe Centi
taxPreparer :: TaxPreparer Maybe
line_1_ONOpportunitiesFund :: Maybe Centi
line_46500 :: Maybe Centi
$sel:telephone:Page8 :: Maybe Centi
$sel:date:Page8 :: Maybe Centi
$sel:taxPreparer:Page8 :: TaxPreparer Maybe
$sel:line_1_ONOpportunitiesFund:Page8 :: Maybe Centi
$sel:line_46500:Page8 :: Maybe Centi
..}

fixStep4 :: T1 Maybe -> Step4 Maybe -> Step4 Maybe
fixStep4 :: T1 Maybe -> Step4 Maybe -> Step4 Maybe
fixStep4 T1 Maybe
t1 = (Step4 Maybe -> Step4 Maybe) -> Step4 Maybe -> Step4 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Step4 Maybe -> Step4 Maybe) -> Step4 Maybe -> Step4 Maybe)
-> (Step4 Maybe -> Step4 Maybe) -> Step4 Maybe -> Step4 Maybe
forall a b. (a -> b) -> a -> b
$ \step :: Step4 Maybe
step@Step4{Maybe Text
Maybe Centi
line_23600_NetIncome_2 :: Maybe Centi
line_24400_MilitaryPoliceDeduction :: Maybe Centi
line_24900_SecurityDeductions :: Maybe Centi
line_25000_OtherPayDeductions :: Maybe Centi
line_25100_PartnershipLosses :: Maybe Centi
line_25200_NoncapitalLosses :: Maybe Centi
line_25300_NetCapitalLosses :: Maybe Centi
line_25400_CapitalGainsDeduction :: Maybe Centi
line_25500_NorthernDeductions :: Maybe Centi
line_25600_AdditionalDeductions_Amount :: Maybe Centi
line_25600_AdditionalDeductions_Specify :: Maybe Text
line_25700_AddLines_cont :: Maybe Centi
line_25700_AddLines_sum :: Maybe Centi
line_26000_TaxableIncome :: Maybe Centi
$sel:line_23600_NetIncome_2:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_24400_MilitaryPoliceDeduction:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_24900_SecurityDeductions:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25000_OtherPayDeductions:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25100_PartnershipLosses:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25200_NoncapitalLosses:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25300_NetCapitalLosses:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25400_CapitalGainsDeduction:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25500_NorthernDeductions:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25600_AdditionalDeductions_Amount:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25600_AdditionalDeductions_Specify:Step4 :: forall (line :: * -> *). Step4 line -> line Text
$sel:line_25700_AddLines_cont:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_25700_AddLines_sum:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
$sel:line_26000_TaxableIncome:Step4 :: forall (line :: * -> *). Step4 line -> line Centi
..}-> Step4 Maybe
step{
   $sel:line_23600_NetIncome_2:Step4 :: Maybe Centi
line_23600_NetIncome_2 = T1 Maybe
t1.page4.line_23600_NetIncome,
   $sel:line_25700_AddLines_sum:Step4 :: Maybe Centi
line_25700_AddLines_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_24400_MilitaryPoliceDeduction,
                                      Maybe Centi
line_24900_SecurityDeductions,
                                      Maybe Centi
line_25000_OtherPayDeductions,
                                      Maybe Centi
line_25100_PartnershipLosses,
                                      Maybe Centi
line_25200_NoncapitalLosses,
                                      Maybe Centi
line_25300_NetCapitalLosses,
                                      Maybe Centi
line_25400_CapitalGainsDeduction,
                                      Maybe Centi
line_25500_NorthernDeductions,
                                      Maybe Centi
line_25600_AdditionalDeductions_Amount],
   $sel:line_25700_AddLines_cont:Step4 :: Maybe Centi
line_25700_AddLines_cont = Maybe Centi
line_25700_AddLines_sum,
   $sel:line_26000_TaxableIncome:Step4 :: Maybe Centi
line_26000_TaxableIncome = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
line_23600_NetIncome_2 Maybe Centi
line_25700_AddLines_cont}

fixPage5PartA :: T1 Maybe -> Page5PartA Maybe -> Page5PartA Maybe
fixPage5PartA :: T1 Maybe -> Page5PartA Maybe -> Page5PartA Maybe
fixPage5PartA T1 Maybe
t1 = (Page5PartA Maybe -> Page5PartA Maybe)
-> Page5PartA Maybe -> Page5PartA Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page5PartA Maybe -> Page5PartA Maybe)
 -> Page5PartA Maybe -> Page5PartA Maybe)
-> (Page5PartA Maybe -> Page5PartA Maybe)
-> Page5PartA Maybe
-> Page5PartA Maybe
forall a b. (a -> b) -> a -> b
$ \part :: Page5PartA Maybe
part@Page5PartA{TaxIncomeBracket Maybe
column1 :: TaxIncomeBracket Maybe
column2 :: TaxIncomeBracket Maybe
column3 :: TaxIncomeBracket Maybe
column4 :: TaxIncomeBracket Maybe
column5 :: TaxIncomeBracket Maybe
$sel:column1:Page5PartA :: forall (line :: * -> *). Page5PartA line -> TaxIncomeBracket line
$sel:column2:Page5PartA :: forall (line :: * -> *). Page5PartA line -> TaxIncomeBracket line
$sel:column3:Page5PartA :: forall (line :: * -> *). Page5PartA line -> TaxIncomeBracket line
$sel:column4:Page5PartA :: forall (line :: * -> *). Page5PartA line -> TaxIncomeBracket line
$sel:column5:Page5PartA :: forall (line :: * -> *). Page5PartA line -> TaxIncomeBracket line
..}-> Page5PartA Maybe
part{
   $sel:column1:Page5PartA :: TaxIncomeBracket Maybe
column1 = Centi -> Centi -> Centi -> Centi -> TaxIncomeBracket Maybe
taxIncomeBracket Centi
0 Centi
50197 Centi
0.15 Centi
0,
   $sel:column2:Page5PartA :: TaxIncomeBracket Maybe
column2 = Centi -> Centi -> Centi -> Centi -> TaxIncomeBracket Maybe
taxIncomeBracket Centi
50197 Centi
100392 Centi
0.205 Centi
7529.55,
   $sel:column3:Page5PartA :: TaxIncomeBracket Maybe
column3 = Centi -> Centi -> Centi -> Centi -> TaxIncomeBracket Maybe
taxIncomeBracket Centi
100392 Centi
155625 Centi
0.26 Centi
17819.53,
   $sel:column4:Page5PartA :: TaxIncomeBracket Maybe
column4 = Centi -> Centi -> Centi -> Centi -> TaxIncomeBracket Maybe
taxIncomeBracket Centi
155625 Centi
221708 Centi
0.29 Centi
32180.11,
   $sel:column5:Page5PartA :: TaxIncomeBracket Maybe
column5 = Centi -> Centi -> Centi -> Centi -> TaxIncomeBracket Maybe
taxIncomeBracket Centi
221708 (Centi
10Centi -> Year -> Centi
forall a b. (Num a, Integral b) => a -> b -> a
^Year
12) Centi
0.33 Centi
51344.18} -- a trillion ought to be enough for anybody
   where taxIncomeBracket :: Centi -> Centi -> Centi -> Centi -> TaxIncomeBracket Maybe
taxIncomeBracket Centi
threshold Centi
ceiling Centi
rate Centi
baseTax
            | Centi
income Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
> Centi
threshold Bool -> Bool -> Bool
&& Centi
income Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
<= Centi
ceiling = TaxIncomeBracket{
                 $sel:line67_income:TaxIncomeBracket :: Maybe Centi
line67_income = Centi -> Maybe Centi
forall a. a -> Maybe a
Just Centi
income,
                 $sel:line69_overThreshold:TaxIncomeBracket :: Maybe Centi
line69_overThreshold = Centi -> Maybe Centi
forall a. a -> Maybe a
Just (Centi
income Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
threshold),
                 $sel:line71_timesRate:TaxIncomeBracket :: Maybe Centi
line71_timesRate = Centi -> Maybe Centi
forall a. a -> Maybe a
Just ((Centi
income Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
threshold) Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
rate),
                 $sel:line73_equalsTax:TaxIncomeBracket :: Maybe Centi
line73_equalsTax = Centi -> Maybe Centi
forall a. a -> Maybe a
Just ((Centi
income Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
threshold) Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
rate Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
+ Centi
baseTax)}
            | Bool
otherwise = (forall a. Maybe a) -> TaxIncomeBracket Maybe
forall {k} (g :: (k -> *) -> *) (f :: k -> *).
Applicative g =>
(forall (a :: k). f a) -> g f
forall (f :: * -> *). (forall a. f a) -> TaxIncomeBracket f
Rank2.pure Maybe a
forall a. Maybe a
Nothing
         income :: Centi
income = Centi -> Maybe Centi -> Centi
forall a. a -> Maybe a -> a
fromMaybe Centi
0 T1 Maybe
t1.page5.step4_TaxableIncome.line_26000_TaxableIncome

fixPage5PartB :: T1 Maybe -> Page5PartB Maybe -> Page5PartB Maybe
fixPage5PartB :: T1 Maybe -> Page5PartB Maybe -> Page5PartB Maybe
fixPage5PartB T1 Maybe
t1 = (Page5PartB Maybe -> Page5PartB Maybe)
-> Page5PartB Maybe -> Page5PartB Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page5PartB Maybe -> Page5PartB Maybe)
 -> Page5PartB Maybe -> Page5PartB Maybe)
-> (Page5PartB Maybe -> Page5PartB Maybe)
-> Page5PartB Maybe
-> Page5PartB Maybe
forall a b. (a -> b) -> a -> b
$ \part :: Page5PartB Maybe
part@Page5PartB{Maybe Word
Maybe Centi
line30000 :: Maybe Centi
line30100 :: Maybe Centi
line30300 :: Maybe Centi
line30400 :: Maybe Centi
line30425 :: Maybe Centi
line30450 :: Maybe Centi
line30499_ChildrenNum :: Maybe Word
line30500 :: Maybe Centi
line_81 :: Maybe Centi
$sel:line30000:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line30100:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line30300:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line30400:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line30425:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line30450:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line30499_ChildrenNum:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Word
$sel:line30500:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
$sel:line_81:Page5PartB :: forall (line :: * -> *). Page5PartB line -> line Centi
..}-> Page5PartB Maybe
part{
   $sel:line30000:Page5PartB :: Maybe Centi
line30000 = let income :: Centi
income = Centi -> Maybe Centi -> Centi
forall a. a -> Maybe a -> a
fromMaybe Centi
0 T1 Maybe
t1.page4.line_23600_NetIncome
               in if Centi
income Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
<= Centi
155625 then Centi -> Maybe Centi
forall a. a -> Maybe a
Just Centi
14398
                  else if Centi
income Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
>= Centi
221708 then Centi -> Maybe Centi
forall a. a -> Maybe a
Just Centi
12719
                       else Centi -> Maybe Centi
forall a. a -> Maybe a
Just (Centi -> Maybe Centi) -> Centi -> Maybe Centi
forall a b. (a -> b) -> a -> b
$ Centi
14398 Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- (Centi
14398 Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
12719) Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* (Centi
income Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
155625) Centi -> Centi -> Centi
forall a. Fractional a => a -> a -> a
/ (Centi
221708 Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
155625),
   $sel:line30100:Page5PartB :: Maybe Centi
line30100 = if (Day -> Bool) -> Maybe Day -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any ((Year -> Year -> Bool
forall a. Ord a => a -> a -> Bool
<= (Year
1957 :: Year)) (Year -> Bool) -> (Day -> Year) -> Day -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Day -> Year
forall p. DayPeriod p => Day -> p
dayPeriod) T1 Maybe
t1.page1.identification.dateBirth
               then Centi -> Maybe Centi
forall a. a -> Maybe a
Just Centi
12719
               else Maybe Centi
forall a. Maybe a
Nothing,
   $sel:line30500:Page5PartB :: Maybe Centi
line30500 =  ((Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
2350) (Centi -> Centi) -> (Word -> Centi) -> Word -> Centi
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word -> Centi
forall a b. (Integral a, Num b) => a -> b
fromIntegral) (Word -> Centi) -> Maybe Word -> Maybe Centi
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Word
line30499_ChildrenNum,
   $sel:line_81:Page5PartB :: Maybe Centi
line_81 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line30000,
                      Maybe Centi
line30100,
                      Maybe Centi
line30300,
                      Maybe Centi
line30400,
                      Maybe Centi
line30425,
                      Maybe Centi
line30450,
                      Maybe Centi
line30500]}

fixMedicalExpenses :: T1 Maybe -> MedicalExpenses Maybe -> MedicalExpenses Maybe
fixMedicalExpenses :: T1 Maybe -> MedicalExpenses Maybe -> MedicalExpenses Maybe
fixMedicalExpenses T1 Maybe
t1 = (MedicalExpenses Maybe -> MedicalExpenses Maybe)
-> MedicalExpenses Maybe -> MedicalExpenses Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((MedicalExpenses Maybe -> MedicalExpenses Maybe)
 -> MedicalExpenses Maybe -> MedicalExpenses Maybe)
-> (MedicalExpenses Maybe -> MedicalExpenses Maybe)
-> MedicalExpenses Maybe
-> MedicalExpenses Maybe
forall a b. (a -> b) -> a -> b
$ \expenses :: MedicalExpenses Maybe
expenses@MedicalExpenses{Maybe Centi
familyExpenses :: Maybe Centi
$sel:familyExpenses:MedicalExpenses :: forall (line :: * -> *). MedicalExpenses line -> line Centi
familyExpenses, Maybe Centi
taxableIncome :: Maybe Centi
$sel:taxableIncome:MedicalExpenses :: forall (line :: * -> *). MedicalExpenses line -> line Centi
taxableIncome,
                                                          Maybe Centi
taxableIncomeFraction :: Maybe Centi
$sel:taxableIncomeFraction:MedicalExpenses :: forall (line :: * -> *). MedicalExpenses line -> line Centi
taxableIncomeFraction, Maybe Centi
threshold :: Maybe Centi
$sel:threshold:MedicalExpenses :: forall (line :: * -> *). MedicalExpenses line -> line Centi
threshold}-> MedicalExpenses Maybe
expenses{
   $sel:taxableIncome:MedicalExpenses :: Maybe Centi
taxableIncome = T1 Maybe
t1.page4.line_23600_NetIncome,
   $sel:taxableIncomeFraction:MedicalExpenses :: Maybe Centi
taxableIncomeFraction = (Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
0.03) (Centi -> Centi) -> Maybe Centi -> Maybe Centi
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Centi
taxableIncome,
   $sel:threshold:MedicalExpenses :: Maybe Centi
threshold = Centi -> Centi -> Centi
forall a. Ord a => a -> a -> a
min Centi
2479 (Centi -> Centi) -> Maybe Centi -> Maybe Centi
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Centi
taxableIncomeFraction,
   $sel:difference:MedicalExpenses :: Maybe Centi
difference = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
familyExpenses Maybe Centi
threshold}

fixPage7PartC :: T1 Maybe -> Page7PartC Maybe -> Page7PartC Maybe
fixPage7PartC :: T1 Maybe -> Page7PartC Maybe -> Page7PartC Maybe
fixPage7PartC T1 Maybe
t1 = (Page7PartC Maybe -> Page7PartC Maybe)
-> Page7PartC Maybe -> Page7PartC Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page7PartC Maybe -> Page7PartC Maybe)
 -> Page7PartC Maybe -> Page7PartC Maybe)
-> (Page7PartC Maybe -> Page7PartC Maybe)
-> Page7PartC Maybe
-> Page7PartC Maybe
forall a b. (a -> b) -> a -> b
$ \part :: Page7PartC Maybe
part@Page7PartC{Maybe Centi
line116 :: Maybe Centi
line40424 :: Maybe Centi
line40400 :: Maybe Centi
line119 :: Maybe Centi
line40425 :: Maybe Centi
line40427 :: Maybe Centi
line122_sum :: Maybe Centi
line122_cont :: Maybe Centi
line123 :: Maybe Centi
line124 :: Maybe Centi
line125 :: Maybe Centi
line40500 :: Maybe Centi
line127 :: Maybe Centi
line128 :: Maybe Centi
line129 :: Maybe Centi
line130 :: Maybe Centi
line131 :: Maybe Centi
line40900 :: Maybe Centi
line41000 :: Maybe Centi
line41200 :: Maybe Centi
line41300 :: Maybe Centi
line41400 :: Maybe Centi
line41600_sum :: Maybe Centi
line41600_cont :: Maybe Centi
line41700 :: Maybe Centi
line41500 :: Maybe Centi
line41800 :: Maybe Centi
line42000 :: Maybe Centi
$sel:line116:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line40424:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line40400:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line119:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line40425:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line40427:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line122_sum:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line122_cont:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line123:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line124:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line125:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line40500:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line127:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line128:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line129:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line130:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line131:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line40900:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41000:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41200:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41300:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41400:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41600_sum:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41600_cont:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41700:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41500:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line41800:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
$sel:line42000:Page7PartC :: forall (line :: * -> *). Page7PartC line -> line Centi
..}-> Page7PartC Maybe
part{
   $sel:line116:Page7PartC :: Maybe Centi
line116 = let partA :: Page5PartA Maybe
partA = T1 Maybe
t1.page5.partA_FederalTax
             in Page5PartA Maybe
partA.column1.line73_equalsTax
                Maybe Centi -> Maybe Centi -> Maybe Centi
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Page5PartA Maybe
partA.column2.line73_equalsTax
                Maybe Centi -> Maybe Centi -> Maybe Centi
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Page5PartA Maybe
partA.column3.line73_equalsTax
                Maybe Centi -> Maybe Centi -> Maybe Centi
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Page5PartA Maybe
partA.column4.line73_equalsTax
                Maybe Centi -> Maybe Centi -> Maybe Centi
forall a. Maybe a -> Maybe a -> Maybe a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Page5PartA Maybe
partA.column5.line73_equalsTax,
   $sel:line40400:Page7PartC :: Maybe Centi
line40400 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line116, Maybe Centi
line40424],
   $sel:line119:Page7PartC :: Maybe Centi
line119 = T1 Maybe
t1.page6.line35000,
   Maybe Centi
line40425 :: Maybe Centi
$sel:line40425:Page7PartC :: Maybe Centi
line40425,
   Maybe Centi
line40427 :: Maybe Centi
$sel:line40427:Page7PartC :: Maybe Centi
line40427,
   $sel:line122_sum:Page7PartC :: Maybe Centi
line122_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line119, Maybe Centi
line40425, Maybe Centi
line40427],
   $sel:line122_cont:Page7PartC :: Maybe Centi
line122_cont = Maybe Centi
line122_sum,
   $sel:line123:Page7PartC :: Maybe Centi
line123 = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
line40400 Maybe Centi
line122_cont,
   $sel:line125:Page7PartC :: Maybe Centi
line125 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line123, Maybe Centi
line124],
   $sel:line127:Page7PartC :: Maybe Centi
line127 = Maybe Centi -> Maybe Centi -> Maybe Centi
difference Maybe Centi
line125 Maybe Centi
line40500,
   $sel:line129:Page7PartC :: Maybe Centi
line129 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line127, Maybe Centi
line128],
   $sel:line131:Page7PartC :: Maybe Centi
line131 = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
line129 Maybe Centi
line130,
   $sel:line41000:Page7PartC :: Maybe Centi
line41000 = case Maybe Centi
line40900
               of Just Centi
x
                    | Centi
x Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
<= Centi
400 -> Centi -> Maybe Centi
forall a. a -> Maybe a
Just (Centi
x Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
0.75)
                    | Centi
x Centi -> Centi -> Bool
forall a. Ord a => a -> a -> Bool
<= Centi
750 -> Centi -> Maybe Centi
forall a. a -> Maybe a
Just ((Centi
x Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
400) Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
0.5 Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
+ Centi
300)
                    | Bool
otherwise-> Centi -> Maybe Centi
forall a. a -> Maybe a
Just ((Centi
x Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
- Centi
750) Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
0.3333 Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
+ Centi
475)
                  Maybe Centi
Nothing -> Maybe Centi
forall a. Maybe a
Nothing,
   $sel:line41600_sum:Page7PartC :: Maybe Centi
line41600_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line41000, Maybe Centi
line41200, Maybe Centi
line41400],
   $sel:line41600_cont:Page7PartC :: Maybe Centi
line41600_cont = Maybe Centi
line41600_sum,
   $sel:line41700:Page7PartC :: Maybe Centi
line41700 = Maybe Centi -> Maybe Centi -> Maybe Centi
nonNegativeDifference Maybe Centi
line131 Maybe Centi
line41600_cont,
   $sel:line42000:Page7PartC :: Maybe Centi
line42000 = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line41700, Maybe Centi
line41500, Maybe Centi
line41800]}

fixPage7Step6 :: T1 Maybe -> Page7Step6 Maybe -> Page7Step6 Maybe
fixPage7Step6 :: T1 Maybe -> Page7Step6 Maybe -> Page7Step6 Maybe
fixPage7Step6 T1 Maybe
t1 = (Page7Step6 Maybe -> Page7Step6 Maybe)
-> Page7Step6 Maybe -> Page7Step6 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page7Step6 Maybe -> Page7Step6 Maybe)
 -> Page7Step6 Maybe -> Page7Step6 Maybe)
-> (Page7Step6 Maybe -> Page7Step6 Maybe)
-> Page7Step6 Maybe
-> Page7Step6 Maybe
forall a b. (a -> b) -> a -> b
$ \step :: Page7Step6 Maybe
step@Page7Step6{Maybe Centi
line140 :: Maybe Centi
line_42100_CPPContributions :: Maybe Centi
line_42120_EIPremiums :: Maybe Centi
line_42200_SocialBenefits :: Maybe Centi
line_42800_ProvTerrTax :: Maybe Centi
line_43500_TotalPayable :: Maybe Centi
$sel:line140:Page7Step6 :: forall (line :: * -> *). Page7Step6 line -> line Centi
$sel:line_42100_CPPContributions:Page7Step6 :: forall (line :: * -> *). Page7Step6 line -> line Centi
$sel:line_42120_EIPremiums:Page7Step6 :: forall (line :: * -> *). Page7Step6 line -> line Centi
$sel:line_42200_SocialBenefits:Page7Step6 :: forall (line :: * -> *). Page7Step6 line -> line Centi
$sel:line_42800_ProvTerrTax:Page7Step6 :: forall (line :: * -> *). Page7Step6 line -> line Centi
$sel:line_43500_TotalPayable:Page7Step6 :: forall (line :: * -> *). Page7Step6 line -> line Centi
..}-> Page7Step6 Maybe
step{
   $sel:line140:Page7Step6 :: Maybe Centi
line140 = T1 Maybe
t1.page7.partC_NetFederalTax.line42000,
   $sel:line_43500_TotalPayable:Page7Step6 :: Maybe Centi
line_43500_TotalPayable = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line140, Maybe Centi
line_42100_CPPContributions, Maybe Centi
line_42120_EIPremiums,
                                      Maybe Centi
line_42200_SocialBenefits, Maybe Centi
line_42800_ProvTerrTax]}

fixPage8Step6 :: T1 Maybe -> Page8Step6 Maybe -> Page8Step6 Maybe
fixPage8Step6 :: T1 Maybe -> Page8Step6 Maybe -> Page8Step6 Maybe
fixPage8Step6 T1 Maybe
t1 = (Page8Step6 Maybe -> Page8Step6 Maybe)
-> Page8Step6 Maybe -> Page8Step6 Maybe
forall a. Eq a => (a -> a) -> a -> a
fixEq ((Page8Step6 Maybe -> Page8Step6 Maybe)
 -> Page8Step6 Maybe -> Page8Step6 Maybe)
-> (Page8Step6 Maybe -> Page8Step6 Maybe)
-> Page8Step6 Maybe
-> Page8Step6 Maybe
forall a b. (a -> b) -> a -> b
$ \step :: Page8Step6 Maybe
step@Page8Step6{Maybe Centi
line_43500_totalpayable :: Maybe Centi
line_43700_Total_income_tax_ded :: Maybe Centi
line_44000 :: Maybe Centi
line_44800_CPPOverpayment :: Maybe Centi
line_45000_EIOverpayment :: Maybe Centi
line_45200_MedicalExpense :: Maybe Centi
line_45300_CWB :: Maybe Centi
line_45350_CTC :: Maybe Centi
line_45400_InvestmentTaxCredit :: Maybe Centi
line_45600_TrustTaxCredit :: Maybe Centi
line_45700_GST_HST_Rebate :: Maybe Centi
line_46800 :: Maybe Centi
line_46900 :: Maybe Centi
line_47555_TaxPaid :: Maybe Centi
line_47556 :: Maybe Centi
line_47557 :: Maybe Centi
line_47600_TaxPaid :: Maybe Centi
line_47900_ProvTerrCredits :: Maybe Centi
line_48200_sum :: Maybe Centi
line_48200_cont :: Maybe Centi
line164_Refund_or_BalanceOwing :: Maybe Centi
$sel:line_43500_totalpayable:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_43700_Total_income_tax_ded:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_44000:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_44800_CPPOverpayment:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45000_EIOverpayment:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45200_MedicalExpense:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45300_CWB:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45350_CTC:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45400_InvestmentTaxCredit:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45600_TrustTaxCredit:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_45700_GST_HST_Rebate:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_46800:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_46900:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_47555_TaxPaid:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_47556:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_47557:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_47600_TaxPaid:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_47900_ProvTerrCredits:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_48200_sum:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line_48200_cont:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
$sel:line164_Refund_or_BalanceOwing:Page8Step6 :: forall (line :: * -> *). Page8Step6 line -> line Centi
..}-> Page8Step6 Maybe
step{
   $sel:line_43500_totalpayable:Page8Step6 :: Maybe Centi
line_43500_totalpayable = T1 Maybe
t1.page7.step6_RefundOrBalanceOwing.line_43500_TotalPayable,
   $sel:line_46900:Page8Step6 :: Maybe Centi
line_46900 = (Centi -> Centi -> Centi
forall a. Num a => a -> a -> a
* Centi
0.25) (Centi -> Centi) -> Maybe Centi -> Maybe Centi
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Centi
line_46800,
   $sel:line_48200_sum:Page8Step6 :: Maybe Centi
line_48200_sum = [Maybe Centi] -> Maybe Centi
totalOf [Maybe Centi
line_43700_Total_income_tax_ded,
                             Maybe Centi
line_44000,
                             Maybe Centi
line_44800_CPPOverpayment,
                             Maybe Centi
line_45000_EIOverpayment,
                             Maybe Centi
line_45200_MedicalExpense,
                             Maybe Centi
line_45300_CWB,
                             Maybe Centi
line_45350_CTC,
                             Maybe Centi
line_45400_InvestmentTaxCredit,
                             Maybe Centi
line_45600_TrustTaxCredit,
                             Maybe Centi
line_45700_GST_HST_Rebate,
                             Maybe Centi
line_46900,
                             Maybe Centi
line_47555_TaxPaid,
                             Maybe Centi
line_47556,
                             Maybe Centi
line_47557,
                             Maybe Centi
line_47600_TaxPaid,
                             Maybe Centi
line_47900_ProvTerrCredits],
   $sel:line_48200_cont:Page8Step6 :: Maybe Centi
line_48200_cont = Maybe Centi
line_48200_sum,
   $sel:line164_Refund_or_BalanceOwing:Page8Step6 :: Maybe Centi
line164_Refund_or_BalanceOwing = Maybe Centi -> Maybe Centi -> Maybe Centi
difference Maybe Centi
line_43500_totalpayable Maybe Centi
line_48200_sum}