public/cbb/Get-MBSBackupPlan.ps1

function Get-MBSBackupPlan {
    <#
    .SYNOPSIS
        Get backup plans from MBS backup agent.
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType All -PlanType All
        Lists all backup plans
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType Local -PlanType All
        Lists only backup plans with a local destination.
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType Cloud -PlanType All
        Lists only backup plans with a cloud destination.
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType All -PlanType File-Level
        Lists all File-level backup plans.
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType All -PlanType Image-Based
        Lists all Image-Based backup plans.
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType Local -PlanType Image-Based
        Lists Image-Based backup plans with a local destination.
    .EXAMPLE
        PS C:\> Get-MBSBackupPlan -StorageType All -PlanType All -OutputType Full
        Get extended parameters of all backup plans.
    .INPUTS
        None
    .OUTPUTS
        System.Management.Automation.PSCustomObject
    .NOTES
        Author: Alex Volkov
    .LINK
        https://mspbackups.com/AP/Help/powershell/cmdlets/backup-agent/get-mbsbackupplan
    #>

    [CmdletBinding()]
    param (
        #
        [Parameter(Mandatory=$false, HelpMessage="Backup destination storage type.")]
        [ValidateSet("All", "Local", "Cloud", "Hybrid")]
        [string]
        $StorageType = "All",
        #
        [Parameter(Mandatory=$false, HelpMessage="Backup plan type.")]
        [ValidateSet("All", "File-Level", "Image-Based", "MSSQL","MSExchange","VMware","Hyper-V")]
        [string]
        $PlanType = "All",
        #
        [Parameter(Mandatory=$false, HelpMessage="Backup plan type.")]
        [ValidateSet("Short", "Full", "Raw")]
        [string]
        $OutputType = "Short"
    )

    begin {
        if (-not($CBB = Get-MBSAgent)) {
            Break
        }
    }

    process {
    function Compare-StorageTypes {
        param (
            $Account,
            [string]$StorageType
        )

        $result = $false
        switch -exact ($StorageType) {
            "All" {$result = $true}
            "Cloud" { 
                if($Account.SGCloudTypeValue -ne "FileSystemConnection" -and $Account.SGCloudTypeValue -ne "PhysicalFile" -and $BackupPlan.BasePlan.HybridID -eq "00000000-0000-0000-0000-000000000000"){
                    $result = $true 
                }else {
                    $result = $false
                }
            }
            "Local" {
                if($Account.Type -eq "FileSystemConnection" -or $Account.SGCloudTypeValue -eq "PhysicalFile"){
                    $result = $true 
                }else {
                    $result = $false
                }
            }
            "Hybrid" {
                if ($BackupPlan.BasePlan.HybridID -ne "00000000-0000-0000-0000-000000000000") {
                    $result = $true 
                }else {
                    $result = $false
                }
            }
            Default {}
        }
        return $result
    }

        Write-Verbose -Message "$($PSCmdlet.MyInvocation.MyCommand.Name): Arguments: -StorageType $StorageType -PlanType $PlanType"
        $BackupPlansArray = @()
        foreach ($_ in (Get-ChildItem ("$($CBB.CBBProgramData)\*.cbb")  -ErrorAction SilentlyContinue)){ 
            if (Get-Content $_.FullName){
                $BackupPlan = [xml](Get-Content ($_.FullName))
                switch ($PlanType) {
                    "All" 
                    { 
                        if ($BackupPlan.BasePlan.type -notlike "*Restore*" -and $BackupPlan.BasePlan.type -ne "ConsistencyCheckPlan"){
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                            }
                        }
                    }
                    "File-Level" 
                    { 
                        if ($BackupPlan.BasePlan.type -eq "Plan"){
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                if ($BackupPlan.BasePlan.IsArchive -eq "true") {
                                    $BackupPlanNBFConverted = Convert-XMLtoPSObject $BackupPlan.BasePlan
                                    $BackupPlansArray += New-Object -TypeName MBS.Agent.Plan.NBFFileLevelBackupPlan -Property @{
                                        Name = $BackupPlanNBFConverted.Name
                                        ID = $BackupPlanNBFConverted.ID
                                        StorageAccount = Get-MBSStorageAccount -ID $BackupPlanNBFConverted.ConnectionID
                                        BackupPlanCommonOption = New-Object -TypeName MBS.Agent.Plan.NBFBackupPlanCommonOption -Property @{
                                            SyncRepositoryBeforeRun = $BackupPlanNBFConverted.SyncBeforeRun
                                            UseServerSideEncryption = $BackupPlanNBFConverted.UseServerSideEncryption
                                            EncryptionAlgorithm = ($BackupPlanNBFConverted.EncryptionAlgorithm+$BackupPlanNBFConverted.EncryptionKeySize)
                                            EncryptionPassword = $(if($BackupPlanNBFConverted.UseEncryption){ConvertTo-SecureString -string "!<encrypted_string>!" -AsPlainText -Force}else{$null})
                                            UseCompression = $BackupPlanNBFConverted.UseCompression
                                            StorageClass = $BackupPlanNBFConverted.StorageClass
                                            FullConsistencyCheck = $BackupPlanNBFConverted.UseFullConsistencyCheck
                                            StopIfPlanRunsFor = $(if($BackupPlanNBFConverted.Schedule.StopAfterTicks -eq "9223372036854775807"){[timespan]"00:00:00"}else{[timespan]$BackupPlanNBFConverted.Schedule.StopAfterTicks})
                                            RunMissedPlanImmediately = $BackupPlanNBFConverted.ForceMissedSchedule
                                            PreActionCommand = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){$BackupPlanNBFConverted.Actions.Pre.CommandLine + " " + $BackupPlanNBFConverted.Actions.Pre.Arguments})
                                            PreActionContinueAnyway = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){-not $BackupPlanNBFConverted.Actions.Pre.TerminateOnFailure})
                                            PostActionCommand = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.CommandLine + " " + $BackupPlanNBFConverted.Actions.Post.Arguments})
                                            PostActionRunAnyway = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.RunOnBackupFailure})
                                            ResultEmailNotification = $(if($BackupPlanNBFConverted.Notification.SendNotification -and $BackupPlanNBFConverted.Notification.OnlyOnFailure){
                                                [MBS.Agent.Plan.Notification]"errorOnly"
                                            }elseif ($BackupPlanNBFConverted.Notification.SendNotification -and -not $BackupPlanNBFConverted.Notification.OnlyOnFailure) {
                                                [MBS.Agent.Plan.Notification]"on"
                                            }elseif (-not $BackupPlanNBFConverted.Notification.SendNotification) {
                                                [MBS.Agent.Plan.Notification]"off"
                                            })
                                            AddEventToWindowsLog = $(if($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure){
                                                [MBS.Agent.Plan.Notification]"errorOnly"
                                            }elseif ($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and -not $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure) {
                                                [MBS.Agent.Plan.Notification]"on"
                                            }elseif (-not $BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification) {
                                                [MBS.Agent.Plan.Notification]"off"
                                            })
                                            KeepVersionPeriod = $(if($BackupPlanNBFConverted.SerializationSupportRetentionTime -eq "10675199.02:48:05.4775807") {
                                                $null
                                            }else{
                                                [timespan]$BackupPlanNBFConverted.SerializationSupportRetentionTime
                                            })
                                            GFSKeepWeekly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Weekly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Weekly.StorePeriod
                                            }else {
                                                $null
                                            })
                                            GFSKeepMonthly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Monthly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Monthly.StorePeriod
                                            }else {
                                                $null
                                            })
                                            GFSKeepYearly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Yearly.StorePeriod
                                            }else {
                                                $null
                                            })
                                            GFSMonthOfTheYear = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Yearly.TakeBackupFromMonth
                                            }else {
                                                0
                                            })
                                        }
                                        Schedule = $(if($BackupPlanNBFConverted.Schedule.Enabled){
                                            New-Object -TypeName MBS.Agent.Plan.NBFIncrementalSchedule -Property @{
                                                Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    "Daily"
                                                }else {
                                                    $BackupPlanNBFConverted.Schedule.RecurType
                                                })
                                                At = $(if (-not $BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    [datetime]"$($BackupPlanNBFConverted.Schedule.Hour):$($BackupPlanNBFConverted.Schedule.Minutes)"
                                                }else{
                                                    [datetime]"1/1/0001 0:00:00"
                                                })
                                                DayOfMonth = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.Schedule.DayOfMonth
                                                }else{
                                                    $null
                                                })
                                                DayOfWeek = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek
                                                }else {
                                                    $null
                                                })
                                                WeekNumber = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.Schedule.WeekNumber
                                                }else {
                                                    $null
                                                })
                                                OccursFrom =  $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    [timespan]"$($BackupPlanNBFConverted.Schedule.DailyFromHour):$($BackupPlanNBFConverted.Schedule.DailyFromMinutes)"
                                                }else{
                                                    [timespan]"00:00:00"
                                                })
                                                OccursTo =  $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    [timespan]"$($BackupPlanNBFConverted.Schedule.DailyTillHour):$($BackupPlanNBFConverted.Schedule.DailyTillMinutes)"
                                                }else{
                                                    [timespan]"00:00:00"
                                                })
                                                OccursEvery =  $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    New-TimeSpan -Minutes $BackupPlanNBFConverted.Schedule.DailyRecurrencePeriod
                                                }else{
                                                    [timespan]"00:00:00"
                                                })
                                            }
                                        }else {
                                            $null
                                        })
                                        ForceFullSchedule = $(if($BackupPlanNBFConverted.ForceFullSchedule.Enabled){
                                            New-Object -TypeName MBS.Agent.Plan.NBFFullSchedule -Property @{
                                                Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    "Daily"
                                                }else {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.RecurType
                                                })
                                                DayOfMonth = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.DayOfMonth
                                                }else{
                                                    $null
                                                })
                                                DayOfWeek = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek
                                                }elseif($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.DayOfWeek
                                                }else{
                                                    $null
                                                })
                                                WeekNumber = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.WeekNumber
                                                }else {
                                                    $null
                                                })
                                            }
                                        }else {
                                            $null
                                        })
                                        BackupNTFSPermissions = $BackupPlanNBFConverted.BackupNTFSPermissions
                                        FastNTFSScan = $BackupPlanNBFConverted.UseFastNtfsScan
                                        ForceUsingVSS = $BackupPlanNBFConverted.AlwaysUseVSS
                                        UseShareReadWriteModeOnError = $BackupPlanNBFConverted.UseShareReadWriteModeOnError
                                        BackupEmptyFolders = $BackupPlanNBFConverted.BackupEmptyFolders
                                        BackupOnlyAfter = [datetime]$BackupPlanNBFConverted.BackupOnlyAfterUTC
                                        ExcludeSystemHiddenFiles = -not $BackupPlanNBFConverted.BackupFilter.IncludeSystemAndHidden
                                        SkipFolder = $BackupPlanNBFConverted.ExcludeFodlerList.string
                                        IncludeFilesMask = $(if ($BackupPlanNBFConverted.BackupFilter.FilterType -eq "UseIncludeMask") {
                                            $BackupPlanNBFConverted.BackupFilter.Filters.string
                                        }else {
                                            $null
                                        })
                                        ExcludeFilesMask = $(if ($BackupPlanNBFConverted.BackupFilter.FilterType -eq "UseExcludeMask") {
                                            $BackupPlanNBFConverted.BackupFilter.Filters.string
                                        }else {
                                            $null
                                        })
                                        IgnoreErrorPathNotFound = $BackupPlanNBFConverted.UseIgnoreErrorsOnPathNotFound
                                        BackupItem = $BackupPlanNBFConverted.Items.PlanItem.Path 
                                        ExcludeItem = $BackupPlanNBFConverted.ExcludedItems.PlanItem.Path 
                                        
                                        #| ForEach-Object -Begin {$BackupFileArray = @()} -Process {
                                        # if(([IO.FileInfo]$_).Extension -ne ""){
                                        # $BackupFileArray += $_
                                        # }
                                        #} -End {if($BackupFileArray){$BackupFileArray}else{$null}})
                                        #BackupDirectory = $($BackupPlanNBFConverted.Items.PlanItem.Path | ForEach-Object -Begin {$BackupDirectoryArray = @()} -Process {
                                        # if(([IO.FileInfo]$_).Extension -eq ""){
                                        # $BackupDirectoryArray += $_
                                        # }
                                        #} -End {if($BackupDirectoryArray){$BackupDirectoryArray}else{$null}})
                                        
                                        GenerateDetailedReport = $BackupPlanNBFConverted.Notification.GenerateReport
                                    }
                                }else{
                                    $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                                }
                            }
                        }
                    }
                    "Image-Based" 
                    {
                        if ($BackupPlan.BasePlan.type -eq "BackupDiskImagePlan") {
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                if ($BackupPlan.BasePlan.IsArchive -eq "true") {
                                    $BackupPlanNBFConverted = Convert-XMLtoPSObject $BackupPlan.BasePlan
                                    $BackupPlansArray += New-Object -TypeName MBS.Agent.Plan.NBFImageBasedBackupPlan -Property @{
                                        Name = $BackupPlanNBFConverted.Name
                                        ID = $BackupPlanNBFConverted.ID
                                        StorageAccount = Get-MBSStorageAccount -ID $BackupPlanNBFConverted.ConnectionID
                                        BackupPlanCommonOption = New-Object -TypeName MBS.Agent.Plan.NBFBackupPlanCommonOption -Property @{
                                            SyncRepositoryBeforeRun = $BackupPlanNBFConverted.SyncBeforeRun
                                            UseServerSideEncryption = $BackupPlanNBFConverted.UseServerSideEncryption
                                            EncryptionAlgorithm = ($BackupPlanNBFConverted.EncryptionAlgorithm+$BackupPlanNBFConverted.EncryptionKeySize)
                                            EncryptionPassword = $(if($BackupPlanNBFConverted.UseEncryption){ConvertTo-SecureString -string "!<encrypted_string>!" -AsPlainText -Force}else{$null})
                                            UseCompression = $BackupPlanNBFConverted.UseCompression
                                            StorageClass = $BackupPlanNBFConverted.StorageClass
                                            FullConsistencyCheck = $BackupPlanNBFConverted.UseFullConsistencyCheck
                                            StopIfPlanRunsFor = $(if($BackupPlanNBFConverted.Schedule.StopAfterTicks -eq "9223372036854775807"){[timespan]"00:00:00"}else{[timespan]$BackupPlanNBFConverted.Schedule.StopAfterTicks})
                                            RunMissedPlanImmediately = $BackupPlanNBFConverted.ForceMissedSchedule
                                            PreActionCommand = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){$BackupPlanNBFConverted.Actions.Pre.CommandLine + " " + $BackupPlanNBFConverted.Actions.Pre.Arguments})
                                            PreActionContinueAnyway = $(if($BackupPlanNBFConverted.Actions.Pre.Enabled){-not $BackupPlanNBFConverted.Actions.Pre.TerminateOnFailure})
                                            PostActionCommand = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.CommandLine + " " + $BackupPlanNBFConverted.Actions.Post.Arguments})
                                            PostActionRunAnyway = $(if($BackupPlanNBFConverted.Actions.Post.Enabled){$BackupPlanNBFConverted.Actions.Post.RunOnBackupFailure})
                                            ResultEmailNotification = $(if($BackupPlanNBFConverted.Notification.SendNotification -and $BackupPlanNBFConverted.Notification.OnlyOnFailure){
                                                [MBS.Agent.Plan.Notification]"errorOnly"
                                            }elseif ($BackupPlanNBFConverted.Notification.SendNotification -and -not $BackupPlanNBFConverted.Notification.OnlyOnFailure) {
                                                [MBS.Agent.Plan.Notification]"on"
                                            }elseif (-not $BackupPlanNBFConverted.Notification.SendNotification) {
                                                [MBS.Agent.Plan.Notification]"off"
                                            })
                                            AddEventToWindowsLog = $(if($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure){
                                                [MBS.Agent.Plan.Notification]"errorOnly"
                                            }elseif ($BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification -and -not $BackupPlanNBFConverted.WindowsEventLogNotification.OnlyOnFailure) {
                                                [MBS.Agent.Plan.Notification]"on"
                                            }elseif (-not $BackupPlanNBFConverted.WindowsEventLogNotification.SendNotification) {
                                                [MBS.Agent.Plan.Notification]"off"
                                            })
                                            KeepVersionPeriod = $(if($BackupPlanNBFConverted.SerializationSupportRetentionTime -eq "10675199.02:48:05.4775807") {
                                                $null
                                            }else{
                                                [timespan]$BackupPlanNBFConverted.SerializationSupportRetentionTime
                                            })
                                            GFSKeepWeekly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Weekly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Weekly.StorePeriod
                                            }else {
                                                $null
                                            })
                                            GFSKeepMonthly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Monthly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Monthly.StorePeriod
                                            }else {
                                                $null
                                            })
                                            GFSKeepYearly = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Yearly.StorePeriod
                                            }else {
                                                $null
                                            })
                                            GFSMonthOfTheYear = $(if($BackupPlanNBFConverted.GFSPolicySettings.IsEnabled -and $BackupPlanNBFConverted.GFSPolicySettings.Yearly.IsEnabled){
                                                $BackupPlanNBFConverted.GFSPolicySettings.Yearly.TakeBackupFromMonth
                                            }else {
                                                0
                                            })
                                        }
                                        Schedule = $(if($BackupPlanNBFConverted.Schedule.Enabled){
                                            New-Object -TypeName MBS.Agent.Plan.NBFIncrementalSchedule -Property @{
                                                Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    "Daily"
                                                }else {
                                                    $BackupPlanNBFConverted.Schedule.RecurType
                                                })
                                                At = $(if (-not $BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    [datetime]"$($BackupPlanNBFConverted.Schedule.Hour):$($BackupPlanNBFConverted.Schedule.Minutes)"
                                                }else{
                                                    [datetime]"1/1/0001 0:00:00"
                                                })
                                                DayOfMonth = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.Schedule.DayOfMonth
                                                }else{
                                                    $null
                                                })
                                                DayOfWeek = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    $BackupPlanNBFConverted.Schedule.WeekDays.DayOfWeek
                                                }else {
                                                    $null
                                                })
                                                WeekNumber = $(if ($BackupPlanNBFConverted.Schedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.Schedule.WeekNumber
                                                }else {
                                                    $null
                                                })
                                                OccursFrom =  $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    [timespan]"$($BackupPlanNBFConverted.Schedule.DailyFromHour):$($BackupPlanNBFConverted.Schedule.DailyFromMinutes)"
                                                }else{
                                                    [timespan]"00:00:00"
                                                })
                                                OccursTo =  $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    [timespan]"$($BackupPlanNBFConverted.Schedule.DailyTillHour):$($BackupPlanNBFConverted.Schedule.DailyTillMinutes)"
                                                }else{
                                                    [timespan]"00:00:00"
                                                })
                                                OccursEvery =  $(if ($BackupPlanNBFConverted.Schedule.DailyRecurrence) {
                                                    New-TimeSpan -Minutes $BackupPlanNBFConverted.Schedule.DailyRecurrencePeriod
                                                }else{
                                                    [timespan]"00:00:00"
                                                })
                                            }
                                        }else {
                                            $null
                                        })
                                        ForceFullSchedule = $(if($BackupPlanNBFConverted.ForceFullSchedule.Enabled){
                                            New-Object -TypeName MBS.Agent.Plan.NBFFullSchedule -Property @{
                                                Frequency = $(if (-not (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    "Daily"
                                                }else {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.RecurType
                                                })
                                                DayOfMonth = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.DayOfMonth
                                                }else{
                                                    $null
                                                })
                                                DayOfWeek = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Weekly" -and (Compare-Object -ReferenceObject $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek -DifferenceObject @("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))) {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.WeekDays.DayOfWeek
                                                }elseif($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.DayOfWeek
                                                }else{
                                                    $null
                                                })
                                                WeekNumber = $(if ($BackupPlanNBFConverted.ForceFullSchedule.RecurType -eq "Monthly") {
                                                    $BackupPlanNBFConverted.ForceFullSchedule.WeekNumber
                                                }else {
                                                    $null
                                                })
                                            }
                                        }else {
                                            $null
                                        })
                                        BackupVolumes = $(switch ($BackupPlanNBFConverted.BackupVolumes) {
                                            "AllDrives" {[MBS.Agent.Plan.BackupVolumeType]"AllVolumes"}
                                            "SystemRequired" { [MBS.Agent.Plan.BackupVolumeType]"SystemRequired" }
                                            "SelectedOnly" { [MBS.Agent.Plan.BackupVolumeType]"SelectedVolumes" }
                                            Default {  }
                                        })
                                        Volumes = $(if ($BackupPlanNBFConverted.BackupVolumes -eq "SelectedOnly") {
                                            $BackupPlanNBFConverted.DiskInfo.DiskInfoCommunication.Volumes.VolumeInfoCommunication | Where-Object Enabled -eq $true | ForEach-Object -Begin {$BackupVolumeArray = [System.Collections.Generic.List[MBS.Agent.IBBVolume]]::new()} -Process{
                                                $BackupVolumeArray += New-Object -TypeName MBS.Agent.IBBVolume -Property @{
                                                    MountPoints = $_.MountPoints.string
                                                    Supported = $_.Supported
                                                    RequiredBySystem = $_.RequiredBySystem
                                                    DriveType = $_.DriveType
                                                    FileSystemType = $_.FileSystemType
                                                    WindowsVolumeIdentity = $_.WindowsVolumeIdentity
                                                    Length = $_.Length
                                                    UsedSpace = $_.UsedSpace
                                                    Label = $_.Label
                                                    IsBoot = $_.IsBoot
                                                    IsActive = $_.BiosIsActive
                                                }
                                            } -End {if($BackupVolumeArray){$BackupVolumeArray}else{}}
                                        }else {
                                            $null
                                        })
                                        DisableVSS = $BackupPlanNBFConverted.DisableVSS
                                        IgnoreBadSectors = $BackupPlanNBFConverted.IgnoreBadSectors
                                        UseSystemVSS = $(if ($BackupPlanNBFConverted.VSSProviderID -eq "b5946137-7b9f-4925-af80-51abd60b20d5") {
                                            $true
                                        }else {
                                            $false
                                        })
                                        PrefetchBlockCount = $BackupPlanNBFConverted.PrefetchBlockCount
                                        BlockSize = $BackupPlanNBFConverted.BlockSize / 1024
                                        RestoreVerificationMode = $(switch ($BackupPlanNBFConverted.RunRestoreVerificationOn) {
                                            "None" { [MBS.Agent.Plan.RestoreVerificationMode]"DoNotRun" }
                                            "OnFull" { [MBS.Agent.Plan.RestoreVerificationMode]"RunForFull" }
                                            "OnDiff" { [MBS.Agent.Plan.RestoreVerificationMode]"RunForIncremental" }
                                            "OnAll" { [MBS.Agent.Plan.RestoreVerificationMode]"RunForFullAndIncremental" }
                                            Default {}
                                        })
                                    }
                                }else{
                                    $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                                }
                            }
                        }
                    }
                    "MSSQL" 
                    {
                        if ($BackupPlan.BasePlan.type -eq "BackupDatabasePlan") {
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                            }
                        }
                    }
                    "MSExchange" 
                    {
                        if ($BackupPlan.BasePlan.type -eq "BackupExchangePlan") {
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                            }
                        }
                    }
                    "VMware" 
                    {
                        if ($BackupPlan.BasePlan.type -eq "BackupVirtualMachinesESXiPlan") {
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                            }
                        }
                    }
                    "Hyper-V" 
                    {
                        if ($BackupPlan.BasePlan.type -eq "BackupVirtualMachinesHyperVPlan") {
                            if(Compare-StorageTypes -Account (Get-MBSStorageAccount -ID $BackupPlan.BasePlan.ConnectionID) -StorageType $StorageType){
                                $BackupPlansArray += Convert-XMLtoPSObject $BackupPlan.BasePlan
                            }
                        }
                    }
                    Default {Write-Error -message "Incorrect PlanType parameter"}
                }
            }
        }
        switch ($OutputType) {
            "Short" {
                $BackupPlansArray = $BackupPlansArray | Select-Object ID, Name, Type, Bucket, ConnectionID, UseEncryption, UseCompression, Items, ExcludedItems, DiskInfo, Schedule, ForceFullSchedule
            }
            "Full" {
                $BackupPlansArray = $BackupPlansArray | Select-Object -Property * -ExcludeProperty xsd, xsi, Tag
            }
            "Raw" {
                $BackupPlansArray = $BackupPlansArray | Select-Object *
            }
            Default {Write-Error -message "Incorrect OutputType parameter"}
        }
        return $BackupPlansArray
    }

    end{

    }
}

# SIG # Begin signature block
# MIIbtgYJKoZIhvcNAQcCoIIbpzCCG6MCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBRd2NwKHIOFF9F
# E1shXH1hnwADP/W8yMiu6+FIL2gOIaCCC04wggVmMIIETqADAgECAhEA3VtfmfWb
# K32tKkM2xJo7CjANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJHQjEbMBkGA1UE
# CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK
# ExFDT01PRE8gQ0EgTGltaXRlZDEjMCEGA1UEAxMaQ09NT0RPIFJTQSBDb2RlIFNp
# Z25pbmcgQ0EwHhcNMTcxMjE0MDAwMDAwWhcNMjExMjE0MjM1OTU5WjCBqDELMAkG
# A1UEBhMCQ1kxDTALBgNVBBEMBDEwOTUxETAPBgNVBAgMCExlZmNvc2lhMRAwDgYD
# VQQHDAdOaWNvc2lhMRUwEwYDVQQJDAxMYW1wb3VzYXMsIDExJjAkBgNVBAoMHVRy
# aWNoaWxpYSBDb25zdWx0YW50cyBMaW1pdGVkMSYwJAYDVQQDDB1UcmljaGlsaWEg
# Q29uc3VsdGFudHMgTGltaXRlZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
# ggEBAJC5Ak9MZHfMGygnL9B+2OcFRvnTeYAJPa4tJS/ES3eSBBge9BiBUa6f+QlX
# lIjt+NBD9QrewScUj9EnaguKzc8NFonBJAgT43jD5rCuuj3GljTIHftLDF9vgetf
# 7KUYhwMypqxRP8pLMAuXzIzw5Yxjh1Quy92dZyJYpOuGbz1PQVRMj2fhRqeerP4J
# OiRktwnykjrxDsRNm+Iuas1BM+vjVA7B9Cj0Wf5NsMxSegJezvs0yqwHrsngEQrY
# GXDKHstfsxd8KM5LxJdYN1neIAO8v6AuM6yjQT1z1ZwVSCHu2swNCA3T3M26fkk9
# 9TIZZI/LvfR++FJCUvJkPoPbOKUCAwEAAaOCAbMwggGvMB8GA1UdIwQYMBaAFCmR
# YP+KTfrr+aZquM/55ku9Sc4SMB0GA1UdDgQWBBRqlxdnVxjIxF6fnOYUd7LOYeNe
# rjAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEF
# BQcDAzARBglghkgBhvhCAQEEBAMCBBAwRgYDVR0gBD8wPTA7BgwrBgEEAbIxAQIB
# AwIwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLm5ldC9DUFMw
# QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RP
# UlNBQ29kZVNpZ25pbmdDQS5jcmwwdAYIKwYBBQUHAQEEaDBmMD4GCCsGAQUFBzAC
# hjJodHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDb2RlU2lnbmluZ0NB
# LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMCQGA1Ud
# EQQdMBuBGWNvbnRhY3RAY2xvdWRiZXJyeWxhYi5jb20wDQYJKoZIhvcNAQELBQAD
# ggEBAEeInauUdqKYV4ncwGMqz5+frptASCXVnCMLI7j3JK0KCzmJkwHHmkIk3P0A
# Rzedj5+1aFuXANtT42IACVf00tqq0IHO2KT2vHHJHNnx3ht6kMcCmKmUlnkZMjEK
# +0WJD0JSP7lBRQBf5QJpDLmpbBTVvlbe/3nzpUZ95O5reaPekoQ1xC4Ossu06ba0
# djKhwk0HgeqZz7ZruWOVY/YRDfnlZ3it5+4Ck2JTXIVcUcXzT/ZdwNTkUiIqmh4T
# HwOj+k/Yej7Q13ILWTNZMELs3Iec6FSSGXUijHV65pPI0dUXnq8pWYMfutgwlBaL
# 78yXl4ihf46TXsnAMottH+ld8lAwggXgMIIDyKADAgECAhAufIfMDpNKUv6U/Ry3
# zTSvMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
# YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
# RE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9u
# IEF1dGhvcml0eTAeFw0xMzA1MDkwMDAwMDBaFw0yODA1MDgyMzU5NTlaMH0xCzAJ
# BgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcT
# B1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSMwIQYDVQQDExpD
# T01PRE8gUlNBIENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
# ADCCAQoCggEBAKaYkGN3kTR/itHd6WcxEevMHv0xHbO5Ylc/k7xb458eJDIRJ2u8
# UZGnz56eJbNfgagYDx0eIDAO+2F7hgmz4/2iaJ0cLJ2/cuPkdaDlNSOOyYruGgxk
# x9hCoXu1UgNLOrCOI0tLY+AilDd71XmQChQYUSzm/sES8Bw/YWEKjKLc9sMwqs0o
# GHVIwXlaCM27jFWM99R2kDozRlBzmFz0hUprD4DdXta9/akvwCX1+XjXjV8QwkRV
# PJA8MUbLcK4HqQrjr8EBb5AaI+JfONvGCF1Hs4NB8C4ANxS5Eqp5klLNhw972GIp
# pH4wvRu1jHK0SPLj6CH5XkxieYsCBp9/1QsCAwEAAaOCAVEwggFNMB8GA1UdIwQY
# MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBQpkWD/ik366/mmarjP
# +eZLvUnOEjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNV
# HSUEDDAKBggrBgEFBQcDAzARBgNVHSAECjAIMAYGBFUdIAAwTAYDVR0fBEUwQzBB
# oD+gPYY7aHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2VydGlmaWNh
# dGlvbkF1dGhvcml0eS5jcmwwcQYIKwYBBQUHAQEEZTBjMDsGCCsGAQUFBzAChi9o
# dHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FBZGRUcnVzdENBLmNydDAk
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEB
# DAUAA4ICAQACPwI5w+74yjuJ3gxtTbHxTpJPr8I4LATMxWMRqwljr6ui1wI/zG8Z
# wz3WGgiU/yXYqYinKxAa4JuxByIaURw61OHpCb/mJHSvHnsWMW4j71RRLVIC4nUI
# BUzxt1HhUQDGh/Zs7hBEdldq8d9YayGqSdR8N069/7Z1VEAYNldnEc1PAuT+89r8
# dRfb7Lf3ZQkjSR9DV4PqfiB3YchN8rtlTaj3hUUHr3ppJ2WQKUCL33s6UTmMqB9w
# ea1tQiCizwxsA4xMzXMHlOdajjoEuqKhfB/LYzoVp9QVG6dSRzKp9L9kR9GqH1NO
# MjBzwm+3eIKdXP9Gu2siHYgL+BuqNKb8jPXdf2WMjDFXMdA27Eehz8uLqO8cGFjF
# BnfKS5tRr0wISnqP4qNS4o6OzCbkstjlOMKo7caBnDVrqVhhSgqXtEtCtlWdvpnn
# cG1Z+G0qDH8ZYF8MmohsMKxSCZAWG/8rndvQIMqJ6ih+Mo4Z33tIMx7XZfiuyfiD
# FJN2fWTQjs6+NX3/cjFNn569HmwvqI8MBlD7jCezdsn05tfDNOKMhyGGYf6/VXTh
# IXcDCmhsu+TJqebPWSXrfOxFDnlmaOgizbjvmIVNlhE8CYrQf7woKBP7aspUjZJc
# zcJlmAaezkhb1LU3k0ZBfAfdz/pD77pnYf99SeC7MH1cgOPmFjlLpzGCD74wgg+6
# AgEBMIGSMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0
# ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk
# MSMwIQYDVQQDExpDT01PRE8gUlNBIENvZGUgU2lnbmluZyBDQQIRAN1bX5n1myt9
# rSpDNsSaOwowDQYJYIZIAWUDBAIBBQCgfDAQBgorBgEEAYI3AgEMMQIwADAZBgkq
# hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
# NwIBFTAvBgkqhkiG9w0BCQQxIgQgCIQFv5SqNWKrvO0cDQUMyMxSfJFgGVf7gGEF
# TOwCPMYwDQYJKoZIhvcNAQEBBQAEggEAjG9kOUPgehRsed7DTyfx/llwVpr/2bb5
# 1i0mV/jiHF0x4af3xeAqVFRT/wgVlnDww1gvOyD3uaaVU7y94vU2rZVtQS48JmUz
# pRoy10/OxV+//UUOxnoojx2lfxOSBgdRW57/Nh0SBzKcwrUSKm1AjG/bqjG/4OyC
# wq0UrfpOaWAJrIR6y1fmWZq0xYHT3iIV/e3CurqP6j+2Bm4z4QeSVPQ/j/sLP7YE
# 6O+Vl5a6CTN3+wdwUbnOUlQe20Ijna3aXg72K4Ty6O2j/VgRfEMB+KGOrhUkgQjW
# Qx6CY42ISZJk4q+aLiaTt/VGLkRc5pCOCiZiUJvCueVdBHfccheUNaGCDX4wgg16
# BgorBgEEAYI3AwMBMYINajCCDWYGCSqGSIb3DQEHAqCCDVcwgg1TAgEDMQ8wDQYJ
# YIZIAWUDBAIBBQAweAYLKoZIhvcNAQkQAQSgaQRnMGUCAQEGCWCGSAGG/WwHATAx
# MA0GCWCGSAFlAwQCAQUABCAFGshA3WsZjToH4gAiw9M8kbKTgurfK0ldpwHsWvgk
# NgIRAPUlF7O8NlVWImi88rddiRwYDzIwMjEwODMxMTMzMTE3WqCCCjcwggT+MIID
# 5qADAgECAhANQkrgvjqI/2BAIc4UAPDdMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNV
# BAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdp
# Y2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1l
# c3RhbXBpbmcgQ0EwHhcNMjEwMTAxMDAwMDAwWhcNMzEwMTA2MDAwMDAwWjBIMQsw
# CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xIDAeBgNVBAMTF0Rp
# Z2lDZXJ0IFRpbWVzdGFtcCAyMDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
# CgKCAQEAwuZhhGfFivUNCKRFymNrUdc6EUK9CnV1TZS0DFC1JhD+HchvkWsMluca
# XEjvROW/m2HNFZFiWrj/ZwucY/02aoH6KfjdK3CF3gIY83htvH35x20JPb5qdofp
# ir34hF0edsnkxnZ2OlPR0dNaNo/Go+EvGzq3YdZz7E5tM4p8XUUtS7FQ5kE6N1aG
# 3JMjjfdQJehk5t3Tjy9XtYcg6w6OLNUj2vRNeEbjA4MxKUpcDDGKSoyIxfcwWvkU
# rxVfbENJCf0mI1P2jWPoGqtbsR0wwptpgrTb/FZUvB+hh6u+elsKIC9LCcmVp42y
# +tZji06lchzun3oBc/gZ1v4NSYS9AQIDAQABo4IBuDCCAbQwDgYDVR0PAQH/BAQD
# AgeAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYDVR0g
# BDowODA2BglghkgBhv1sBwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdp
# Y2VydC5jb20vQ1BTMB8GA1UdIwQYMBaAFPS24SAd/imu0uRhpbKiJbLIFzVuMB0G
# A1UdDgQWBBQ2RIaOpLqwZr68KC0dRDbd42p6vDBxBgNVHR8EajBoMDKgMKAuhixo
# dHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDAyoDCg
# LoYsaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC10cy5jcmww
# gYUGCCsGAQUFBwEBBHkwdzAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNl
# cnQuY29tME8GCCsGAQUFBzAChkNodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
# RGlnaUNlcnRTSEEyQXNzdXJlZElEVGltZXN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3
# DQEBCwUAA4IBAQBIHNy16ZojvOca5yAOjmdG/UJyUXQKI0ejq5LSJcRwWb4UoOUn
# gaVNFBUZB3nw0QTDhtk7vf5EAmZN7WmkD/a4cM9i6PVRSnh5Nnont/PnUp+Tp+1D
# nnvntN1BIon7h6JGA0789P63ZHdjXyNSaYOC+hpT7ZDMjaEXcw3082U5cEvznNZ6
# e9oMvD0y0BvL9WH8dQgAdryBDvjA4VzPxBFy5xtkSdgimnUVQvUtMjiB2vRgorq0
# Uvtc4GEkJU+y38kpqHNDUdq9Y9YfW5v3LhtPEx33Sg1xfpe39D+E68Hjo0mh+s6n
# v1bPull2YYlffqe0jmd4+TaY4cso2luHpoovMIIFMTCCBBmgAwIBAgIQCqEl1tYy
# G35B5AXaNpfCFTANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UE
# ChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
# VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTYwMTA3MTIwMDAw
# WhcNMzEwMTA3MTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNl
# cnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdp
# Q2VydCBTSEEyIEFzc3VyZWQgSUQgVGltZXN0YW1waW5nIENBMIIBIjANBgkqhkiG
# 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvdAy7kvNj3/dqbqCmcU5VChXtiNKxA4HRTNR
# EH3Q+X1NaH7ntqD0jbOI5Je/YyGQmL8TvFfTw+F+CNZqFAA49y4eO+7MpvYyWf5f
# ZT/gm+vjRkcGGlV+Cyd+wKL1oODeIj8O/36V+/OjuiI+GKwR5PCZA207hXwJ0+5d
# yJoLVOOoCXFr4M8iEA91z3FyTgqt30A6XLdR4aF5FMZNJCMwXbzsPGBqrC8HzP3w
# 6kfZiFBe/WZuVmEnKYmEUeaC50ZQ/ZQqLKfkdT66mA+Ef58xFNat1fJky3seBdCE
# GXIX8RcG7z3N1k3vBkL9olMqT4UdxB08r8/arBD13ays6Vb/kwIDAQABo4IBzjCC
# AcowHQYDVR0OBBYEFPS24SAd/imu0uRhpbKiJbLIFzVuMB8GA1UdIwQYMBaAFEXr
# oq/0ksuCMS1Ri6enIZ3zbcgPMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/
# BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMHkGCCsGAQUFBwEBBG0wazAkBggr
# BgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdo
# dHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290
# Q0EuY3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsNC5kaWdpY2VydC5j
# b20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3Js
# My5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMFAGA1Ud
# IARJMEcwOAYKYIZIAYb9bAACBDAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5k
# aWdpY2VydC5jb20vQ1BTMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAQEA
# cZUS6VGHVmnN793afKpjerN4zwY3QITvS4S/ys8DAv3Fp8MOIEIsr3fzKx8MIVoq
# twU0HWqumfgnoma/Capg33akOpMP+LLR2HwZYuhegiUexLoceywh4tZbLBQ1QwRo
# stt1AuByx5jWPGTlH0gQGF+JOGFNYkYkh2OMkVIsrymJ5Xgf1gsUpYDXEkdws3XV
# k4WTfraSZ/tTYYmo9WuWwPRYaQ18yAGxuSh1t5ljhSKMYcp5lH5Z/IwP42+1ASa2
# bKXuh1Eh5Fhgm7oMLSttosR+u8QlK0cCCHxJrhO24XxCQijGGFbPQTS2Zl22dHv1
# VjMiLyI2skuiSpXY9aaOUjGCAoYwggKCAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUw
# EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
# MTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcg
# Q0ECEA1CSuC+Ooj/YEAhzhQA8N0wDQYJYIZIAWUDBAIBBQCggdEwGgYJKoZIhvcN
# AQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMTA4MzExMzMxMTda
# MCsGCyqGSIb3DQEJEAIMMRwwGjAYMBYEFOHXgqjhkb7va8oWkbWqtJSmJJvzMC8G
# CSqGSIb3DQEJBDEiBCBrs85Jk9WuE4ZTTcQeGIk7o3mY8GN2wDENVnC6wbO/OzA3
# BgsqhkiG9w0BCRACLzEoMCYwJDAiBCCzEJAGvArZgweRVyngRANBXIPjKSthTyaW
# TI01cez1qTANBgkqhkiG9w0BAQEFAASCAQB1sgTotOYr9CEH68fgDK2htweozotH
# DO5t+JfY1aEslq6L6sMWp7SqB+Sl5cc60+B9Fv0hmYGkz3ob1Xva8/6xbVreMfym
# 1QUxYmUF+MOQmU+Z45y00JiYI2vhGIN9wafukX9WoC4SvOwBtlYul6zaKWGDrOoz
# jjzMT1C1paoEpb+P5kTvAnJhgPtJQtE00l7qZicFSgQAE+8OUcU04dpAOJ9NwjTV
# Rht0EPRBW60FzhQnA57kKbJpPwkSKcUtoJ/0MSRwEHchrJ+MHthqtrfTFFZKv756
# hLdObiE82fvz1SowWRgGHFt0LhoxNy6qe3GhAeUjH/MAx7BYwNGy+hk4
# SIG # End signature block