FastTrack-ScheduleManagement.psm1

Add-Type -AssemblyName System.Web -ErrorAction SilentlyContinue

Function Get-FastTrackMigrationSchedule {
    <#
.SYNOPSIS
    Get FastTrack schedule list.
.DESCRIPTION
    The Get-FastTrackMigrationSchedule cmdlet invokes the REST API to retrieve the FastTrack migration schedule for the input ScheduleUserId parameter. Retrieved scheduled migrations are input to an array of schedules adn returned to the caller.
 
    In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
.PARAMETER ScheduleUserId
    Unique Guid for FastTrack schedule.
.EXAMPLE
    Get-FastTrackMigrationSchedule -ScheduleUserId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
.INPUTS
    System.String
.OUTPUTS
    System.Management.Automation.PSObject
        This cmdlet generates a System.Management.Automation.PSObject object that represents the list of FastTrack schedule details.
.LINK
    New-FastTrackMigrationSchedule
    Set-FastTrackMigrationSchedule
    Remove-FastTrackMigrationSchedule
    New-FastTrackMigrationScheduleFromCsv
    Get-FastTrackMigrationDeleteTypes
#>

    param
    (
        [alias("ScheduleId")]
        [string] $ScheduleUserId
    )
    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function New-FastTrackMigrationSchedule {
    <#
.SYNOPSIS
    Creates a new FastTrack schedule.
.DESCRIPTION
    The New-FastTrackMigrationSchedule cmdlet invokes the REST API to create a new FastTrack migration schedule. The Wait-TransactionComplete cmdlet is invoked to return the "completed" or "failed" status of the migration transaction invoked.
 
    In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
.PARAMETER MigrationType
    Type of migration.
    Mig-ExHybrid
        Exchange to Exchange hybrid migration
    Mig-ExSimpleMRS
        Exchange to Exchange hybrid migration
    Mig-ExCutover
        Cutover Migration
    Mig-ExStaged
        Staged Migration
    Mig-IMAP
        IMAP Migration
    Mig-GmailCutover
        Gmail Cutover Migration
    Mig-GmailStaged
        Gmail staged Migration
    Mig-GroupWise
        GroupWise Migration
    Mig-GoogleDrive
        Google drive to OneDrive migration
    Mig-GoogleSites
        GoogleSites Migration
    Mig-Box
        Box drive to OneDrive migration
    Mig-FileSharesToOneDrive
        FileShare to OneDrive migration
    Mig-FileSharesToTeamSites
        FileShare to TeamSite migration
    Mig-Domino-BAM
        Notes user documents into BAM (Binary Tree Application Manager) migration
    Mig-Domino-ODME
        Notes user documents into ODME migration
    MIG-SPOnPrem
        Sharepoint Migration
.PARAMETER Source
    Source for different migration types.
.PARAMETER Target
    Target for different migration types.
.PARAMETER MigrationDate
    Date of migration.
.PARAMETER MigrationWindow
    Migration event window.
.PARAMETER MigrationGroup
    Migration group.
.PARAMETER Size
    Size of source storage.
.PARAMETER IsCutover
    Is cutover true | false | null.
.PARAMETER Region
    Name of region.
.EXAMPLE
    New-FastTrackMigrationSchedule -MigrationType "Mig-Box" -Source "joe@contoso.com" -Target "Jane@contoso.net" -MigrationDate "YYYY-DD-MMTHH:MIN:SS" -MigrationWindow "Window1" -MigrationGroup "Group1" -Size 2 -PropertyBag "FilesOwned"
.INPUTS
    System.String
.OUTPUTS
    System.Management.Automation.PSObject
        This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID .
.LINK
    Get-FastTrackMigrationSchedule
    Remove-FastTrackMigrationSchedule
    Set-FastTrackMigrationSchedule
    New-FastTrackMigrationScheduleFromCsv
    Get-FastTrackMigrationDeleteTypes
#>

    [cmdletbinding()]
    param(
        [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")]
        [string] $MigrationType,
        [string] $Source,
        [string] $Target,
        [string] $MigrationDate,
        [string] $MigrationWindow,
        [string] $MigrationGroup,
        [string] $Size = 0,
        [string] $Region
    )

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function Set-FastTrackMigrationSchedule {
    <#
.SYNOPSIS
    Updates an existing FastTrack schedule.
.DESCRIPTION
    The Set-FastTracikMigrationSchedule cmdlet invokes REST API with input ScheduleId parameter. The ScheduleId is used by the API to define the migration schedules to be udpated. The Wait-TransactionComplete cmdlet is invoked to return the "completed" or "failed" status of the migration transaction invoked.
 
    In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
.PARAMETER ScheduleUserId
    Unique GUID For FastTrack Schedule.
.PARAMETER MigrationType
    Type of migration.
    Mig-ExHybrid
        Exchange to Exchange hybrid migration
    Mig-ExSimpleMRS
        Exchange to Exchange hybrid migration
    Mig-ExCutover
        Cutover Migration
    Mig-ExStaged
        Staged Migration
    Mig-IMAP
        IMAP Migration
    Mig-GmailCutover
        Gmail Cutover Migration
    Mig-GmailStaged
        Gmail staged Migration
    Mig-GroupWise
        GroupWise Migration
    Mig-GoogleDrive
        Google drive to OneDrive migration
    Mig-GoogleSites
        GoogleSites Migration
    Mig-Box
        Box drive to OneDrive migration
    Mig-FileSharesToOneDrive
        FileShare to OneDrive migration
    Mig-FileSharesToTeamSites
        FileShare to TeamSite migration
    Mig-Domino-BAM
        Notes user documents into BAM (Binary Tree Application Manager) migration
    Mig-Domino-ODME
        Notes user documents into ODME migration
    MIG-SPOnPrem
        Sharepoint Migration
.PARAMETER Source
    Source for different migration types.
.PARAMETER Target
    Target for different migration types.
.PARAMETER MigrationDate
    Date of migration.
.PARAMETER MigrationWindow
    Migration event window.
.PARAMETER MigrationGroup
    Migration group.
.PARAMETER Size
    Size of source storage
.PARAMETER IsCutover
    Is cutover true | false | null.
.PARAMETER Region
    Name of region.
.PARAMETER PropertyBag
    Properties for different migration types.
.EXAMPLE
    New-FastTrackMigrationSchedule -ScheduleUserId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -MigrationType "Mig-Box" -Source "joe@contoso.com" -Target "Jane@contoso.net" -MigrationDate "YYYY-DD-MMTHH:MIN:SS" -MigrationWindow "Window1" -MigrationGroup "Group1" -Size 2 -PropertyBag "FilesOwned"
.INPUTS
    System.String
.OUTPUTS
    System.Management.Automation.PSObject
        This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID .
.LINK
    Get-FastTrackMigrationSchedule
    Remove-FastTrackMigrationSchedule
    New-FastTrackMigrationSchedule
    New-FastTrackMigrationScheduleFromCsv
    Get-FastTrackMigrationDeleteTypes
#>

    [cmdletbinding()]
    param(
        [Alias("ScheduleId")]
        [string] $ScheduleUserId,
        [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")]
        [string] $MigrationType,
        [string] $Source,
        [string] $Target,
        [string] $MigrationDate,
        [string] $MigrationWindow,
        [string] $MigrationGroup,
        [string] $Size = 0,
        [string] $Region
    )

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function Remove-FastTrackMigrationSchedule {
    <#
.SYNOPSIS
    Remove an existing FastTrack schedule.
.DESCRIPTION
    The Remove-FastTracikMigrationSchedule cmdlet invokes REST API with input ScheduleId parameter. The ScheduleId is used by the API to define the migration schedules to be deleted. The DeleteType paramter is used to define the type of delete operation to be performed on the migration.
 
    In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
.PARAMETER ScheduleUserId
    Unique Guid for FastTrack schedule.
.PARAMETER DeleteType
    Delete type to remove specified FastTrack schedule. This can be either ForceDelete or VerifyDelete.
.EXAMPLE
    Remove-FastTrackMigrationSchedule -ScheduleUserId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -DeleteType: "ForceDelete"
.INPUTS
    System.String
.OUTPUTS
    System.Management.Automation.PSObject
        This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID .
.LINK
    Get-FastTrackMigrationSchedule
    Set-FastTrackMigrationSchedule
    New-FastTrackMigrationSchedule
    New-FastTrackMigrationScheduleFromCsv
    Get-FastTrackMigrationDeleteTypes
#>

    param(
        [Alias("ScheduleId")]
        [string] $ScheduleUserId,
        [ValidateSet("ForceDelete", "VerifyDelete")]
        [string] $DeleteType                
    )
    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function New-FastTrackMigrationScheduleFromCsv {
    <#
.SYNOPSIS
    Creates a new FastTrack schedule from CSV
.DESCRIPTION
    The New-FastTrackMigrationScheduleFromCsv command allows you to upload a full migration schedule in bulk as a CSV file. If you want to upload a single schedule, please use the New-FastTrackMigrationSchedule command.
 
    In order to use this command, you must first login using the Login-FastTrackAcount command.
.PARAMETER MigrationType
    This is the type of migration you're wanting to schedule.
 
    Mig-ExHybrid
        Exchange to Exchange hybrid migration
    Mig-ExSimpleMRS
        Exchange to Exchange hybrid migration
    Mig-ExCutover
        Cutover Migration
    Mig-ExStaged
        Staged Migration
    Mig-IMAP
        IMAP Migration
    Mig-GmailCutover
        Gmail Cutover Migration
    Mig-GmailStaged
        Gmail staged Migration
    Mig-GroupWise
        GroupWise Migration
    Mig-GoogleDrive
        Google drive to OneDrive migration
    Mig-GoogleSites
        GoogleSites Migration
    Mig-Box
        Box drive to OneDrive migration
    Mig-FileSharesToOneDrive
        FileShare to OneDrive migration
    Mig-FileSharesToTeamSites
        FileShare to TeamSite migration
    Mig-Domino-BAM
        Notes user documents into BAM (Binary Tree Application Manager) migration
    Mig-Domino-ODME
        Notes user documents into ODME migration
    MIG-SPOnPrem
        Sharepoint Migration
.PARAMETER IsCutover
    Is cutover $true | $false | $null.
.PARAMETER Region
    Name of region.
.PARAMETER FilePath
    Specifies the path to the Schedule CSV file .
.EXAMPLE
    New-FastTrackMigrationScheduleFromCsv -MigrationType "Mig-Box" -Region "US" -FilePath "C:\filename.csv"
.INPUTS
    System.String
.OUTPUTS
    System.Management.Automation.PSObject
        This cmdlet generates a System.Management.Automation.PSObject object that represents the Transaction ID .
.LINK
    New-FastTrackMigrationSchedule
    Get-FastTrackMigrationSchedule
    Set-FastTrackMigrationSchedule
    Remove-FastTrackMigrationSchedule
    Get-FastTrackMigrationDeleteTypes
#>

    param(
        [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")]
        [string] $MigrationType,
        [string] $Region,
        [ValidateSet($true, $false, $null)]
        [Nullable[boolean]] $IsCutover,
        [string] $FilePath
    )

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function Get-FastTrackMigrationScheduleTemplate {
    <#
    .SYNOPSIS
        Get sample template of CSV file which upload in FastTrack schedule.
    .DESCRIPTION
        The Get-FastTrackMigrationScheduleTemplate cmdlet invokes the REST API to retrieve the correct CSV file template, based on the input FastTrack migration type. The retrieved template is saved to the directory declared by the Path parameter.
 
        In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
    .PARAMETER MigrationType
    This is the type of migration you're wanting to schedule.
 
    Mig-ExHybrid
        Exchange to Exchange hybrid migration
    Mig-ExSimpleMRS
        Exchange to Exchange hybrid migration
    Mig-ExCutover
        Cutover Migration
    Mig-ExStaged
        Staged Migration
    Mig-IMAP
        IMAP Migration
    Mig-GmailCutover
        Gmail Cutover Migration
    Mig-GmailStaged
        Gmail staged Migration
    Mig-GroupWise
        GroupWise Migration
    Mig-GoogleDrive
        Google drive to OneDrive migration
    Mig-GoogleSites
        GoogleSites Migration
    Mig-Box
        Box drive to OneDrive migration
    Mig-FileSharesToOneDrive
        FileShare to OneDrive migration
    Mig-FileSharesToTeamSites
        FileShare to TeamSite migration
    Mig-Domino-BAM
        Notes user documents into BAM (Binary Tree Application Manager) migration
    Mig-Domino-ODME
        Notes user documents into ODME migration
    MIG-SPOnPrem
        Sharepoint Migration
    .PARAMETER Path
        Output path of template file.
    .EXAMPLE
        Get-FastTrackMigrationScheduleTemplate -MigrationType "Mig-Box" -Folderpath 'C:/template'
    .INPUTS
        System.String
    .OUTPUTS
        System.IO
            This cmdlet generates a File object.
    .LINK
        New-FastTrackMigrationScheduleFromCsv
    #>

    [cmdletbinding()]
    param(
        [ValidateSet("Mig-ExHybrid", "Mig-ExSimpleMRS", "Mig-ExCutover", "Mig-ExStaged", "Mig-IMAP", "Mig-GmailCutover", "Mig-GmailStaged", "Mig-GroupWise", "Mig-GoogleDrive", "Mig-GoogleSites", "Mig-Box", "Mig-FileSharesToOneDrive", "Mig-FileSharesToTeamSites", "Mig-Domino-BAM", "Mig-Domino-ODME", "MIG-SPOnPrem")]
        [string] $MigrationType,
        [string] $FolderPath = $null
    )

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function Get-FastTrackMigrationDeleteTypes {
    <#
.SYNOPSIS
    Get FastTrack delete types.
.DESCRIPTION
    The Get-FastTrackMigrationDeleteTypes cmdlet utilizes the REST API call to retrieve a list of available delete types used to schedule deletion of FastTrack schedule.
 
    In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
.EXAMPLE
    Get-FastTrackMigrationDeleteTypes
.INPUTS
    System.String
.OUTPUTS
    System.Management.Automation.PSObject
        This cmdlet generates a System.Management.Automation.PSObject object that represents the list of possible delete types for FastTrack schedule delete.
.LINK
    New-FastTrackMigrationSchedule
    Set-FastTrackMigrationSchedule
    Remove-FastTrackMigrationSchedule
    New-FastTrackMigrationScheduleFromCsv
    Get-FastTrackMigrationSchedule
#>

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function Get-FastTrackMigrationTypes {
    <#
    .SYNOPSIS
        Get FastTrack Migration Types.
    .DESCRIPTION
        This cmdlet is used to get all the migration types to execute FastTrack schedules.
 
        In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet.
    .EXAMPLE
        FastTrackMigrationTypes
    .INPUTS
        System.String
    .OUTPUTS
        System.Management.Automation.PSObject
            This cmdlet generates a System.Management.Automation.PSObject object that represents the list of possible migration types for FastTrack schedule operation.
    .LINK
        New-FastTrackMigrationSchedule
        Set-FastTrackMigrationSchedule
        New-FastTrackMIgrationScheduleFromCsv
    #>

    try {
        if ($global:MsoAdminProperties.Count -eq 0) {
            Write-Warning "Unable to retrieve Office 365 credentials! :: Please call [Login-FastTrackAccount] function."
            return
        }

        $header = @{ }
        $header.Add("Authorization", $global:MsoAdminProperties["AuthorizationResult"].CreateAuthorizationHeader())
        $header.Add("TENANT_ID", $global:MsoAdminProperties["MSO-CompanyTenantInfo"])
        
        Write-Host "Sending Migration type Get Request..."

        $query += "environmentType=$global:MsoComOrGov"
        $JsonResult = Invoke-GetRequest -Uri ([System.String]::Format("{0}Schedule/MigrationTypes?$($query)", $global:CsiApiBaseUriFormat)) -Headers $header

        if ($null -ne $JsonResult.StatusCode) {
            Write-Warning "Request failed! : $($JsonResult.StatusCode) - Error Message: $($JsonResult)"
        }
        else {
            Write-Host "Get request completed"
            return $JsonResult.MigrationTypes
        }

        return $JsonResult
    }
    catch {
        Write-Warning -Message:"An error occurred attempting to authenticate with this module"
        Write-Warning -Message: $_.Exception.Message
        Write-Host "Press the [enter] key to close this process"
        Read-Host
    }
}

Function Clear-FastTrackMigrationSchedules {
    <#
        .SYNOPSIS
            Allow for the deletion of multiple schedules
        .DESCRIPTION
            This PowerShell is to allow a user to select and delete multiple schedules for a customer
    #>

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}

Function Update-FastTrackMigrationSchedules {
    <#
        .SYNOPSIS
            Allow for the update of multiple schedules
        .DESCRIPTION
            This PowerShell function is to allow a user to select and update multiple schedules for a customer.
            Only Migration Window, Migration Group and Migration Date can be updated.
        .PARAMETER MigrationDate
            Date of migration.
        .PARAMETER MigrationWindow
            Migration event window.
        .PARAMETER MigrationGroup
            Migration group.
    #>


    param(
        [string] $MigrationDate,
        [string] $MigrationWindow,
        [string] $MigrationGroup
    )

    Write-Output 'This functionality has been deprecated. For schedule interaction, please utilize the MigHub platform.'
}
# SIG # Begin signature block
# MIIjhgYJKoZIhvcNAQcCoIIjdzCCI3MCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDb+jk6rl0cs+88
# xVfEam1FSfBNmtcP1b3/mMKhOlc9vKCCDYEwggX/MIID56ADAgECAhMzAAABUZ6N
# j0Bxow5BAAAAAAFRMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTEwHhcNMTkwNTAyMjEzNzQ2WhcNMjAwNTAyMjEzNzQ2WjB0MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQCVWsaGaUcdNB7xVcNmdfZiVBhYFGcn8KMqxgNIvOZWNH9JYQLuhHhmJ5RWISy1
# oey3zTuxqLbkHAdmbeU8NFMo49Pv71MgIS9IG/EtqwOH7upan+lIq6NOcw5fO6Os
# +12R0Q28MzGn+3y7F2mKDnopVu0sEufy453gxz16M8bAw4+QXuv7+fR9WzRJ2CpU
# 62wQKYiFQMfew6Vh5fuPoXloN3k6+Qlz7zgcT4YRmxzx7jMVpP/uvK6sZcBxQ3Wg
# B/WkyXHgxaY19IAzLq2QiPiX2YryiR5EsYBq35BP7U15DlZtpSs2wIYTkkDBxhPJ
# IDJgowZu5GyhHdqrst3OjkSRAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE
# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUV4Iarkq57esagu6FUBb270Zijc8w
# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1
# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU0MTM1MB8GA1UdIwQYMBaAFEhu
# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w
# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3
# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx
# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAWg+A
# rS4Anq7KrogslIQnoMHSXUPr/RqOIhJX+32ObuY3MFvdlRElbSsSJxrRy/OCCZdS
# se+f2AqQ+F/2aYwBDmUQbeMB8n0pYLZnOPifqe78RBH2fVZsvXxyfizbHubWWoUf
# NW/FJlZlLXwJmF3BoL8E2p09K3hagwz/otcKtQ1+Q4+DaOYXWleqJrJUsnHs9UiL
# crVF0leL/Q1V5bshob2OTlZq0qzSdrMDLWdhyrUOxnZ+ojZ7UdTY4VnCuogbZ9Zs
# 9syJbg7ZUS9SVgYkowRsWv5jV4lbqTD+tG4FzhOwcRQwdb6A8zp2Nnd+s7VdCuYF
# sGgI41ucD8oxVfcAMjF9YX5N2s4mltkqnUe3/htVrnxKKDAwSYliaux2L7gKw+bD
# 1kEZ/5ozLRnJ3jjDkomTrPctokY/KaZ1qub0NUnmOKH+3xUK/plWJK8BOQYuU7gK
# YH7Yy9WSKNlP7pKj6i417+3Na/frInjnBkKRCJ/eYTvBH+s5guezpfQWtU4bNo/j
# 8Qw2vpTQ9w7flhH78Rmwd319+YTmhv7TcxDbWlyteaj4RK2wk3pY1oSz2JPE5PNu
# Nmd9Gmf6oePZgy7Ii9JLLq8SnULV7b+IP0UXRY9q+GdRjM2AEX6msZvvPCIoG0aY
# HQu9wZsKEK2jqvWi8/xdeeeSI9FN6K1w4oVQM4Mwggd6MIIFYqADAgECAgphDpDS
# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0
# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla
# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT
# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB
# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG
# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S
# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz
# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7
# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u
# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33
# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl
# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP
# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB
# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF
# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM
# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ
# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud
# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO
# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0
# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw
# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA
# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY
# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj
# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd
# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ
# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf
# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ
# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j
# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B
# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96
# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7
# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I
# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWzCCFVcCAQEwgZUwfjELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAVGejY9AcaMOQQAAAAABUTAN
# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg9X//T7vW
# Cgqh5SgAVwa4WYs+ghC1gomIltsDWJU/H2kwQgYKKwYBBAGCNwIBDDE0MDKgFIAS
# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
# BgkqhkiG9w0BAQEFAASCAQCTyp8IEwrCQUEHBl4pZCue+9hfETra8VaNRS3tZTuJ
# BTZTB+NOYmd2g48s9Exo0xPQEwaYDJ35u6ac2bnyOHerLz/YQbfDrYtFFUKGhJ6r
# 3/Af5XUU9Asajq0IbZy+gWbQb7auvZl7qtoJmERd5gfnscoB3Ot1hGrnOqZIIbIV
# yoD5fNHhrTAldb37M02Jv/p+Ul2diKarUycfNKJPSlOQMkKx3Ksnticahg/edzUc
# nMUVnV6yl0B6VN0+zUsZR44bPuB1xTr7ydTAsvJlrh1Xx9MrXgk7CYJozciM+l3R
# fN6UKGkmOBiqREf5JZdR4DQT2MrZ5Dbjzxi5Drl8LZ1roYIS5TCCEuEGCisGAQQB
# gjcDAwExghLRMIISzQYJKoZIhvcNAQcCoIISvjCCEroCAQMxDzANBglghkgBZQME
# AgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEIMM9PDzWdIT7n2gbtaauTul7RvZPBZ6cAcilM3Rk
# jIiEAgZd/CrHPVEYEzIwMjAwMTIwMTIzODU2LjM1OVowBIACAfSggdCkgc0wgcox
# CzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg
# SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1Mg
# RVNOOkE4NDEtNEJCNC1DQTkzMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
# cCBTZXJ2aWNloIIOPDCCBPEwggPZoAMCAQICEzMAAAEOJpHynZLbgSkAAAAAAQ4w
# DQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcN
# MTkxMDIzMjMxOTE4WhcNMjEwMTIxMjMxOTE4WjCByjELMAkGA1UEBhMCVVMxCzAJ
# BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv
# bnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046QTg0MS00QkI0LUNB
# OTMxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVAZeiJz2rNUm5FnQV7KLoay7FXA8r
# WMadGWHVkKp5H8oV6/716Ra9o4cQxvVKouIbywDZM5OoMx1cK3UjGCJwJJ645s8N
# dUX3jQPwUzk6jDQYrQUYhHzsdJ2ZOjWXJ2AqR7YKzfXqXAcXniLSe1lfvLFPctK2
# 5h7RYHTNldEglHnEYyyUSC2KELbHyJ/x4RUlGL0Z41GCBzLxmmnQXRD8VQz9mx39
# O51Mz6QBVpIBlBhcHldUqWgslL1z25uqfYXKLpR3S2pclEj/EwrWhG/OSCZBhpg0
# dbq++nzYbdhXUctNZwMI7UrKxRtcA55DNMB/ETColAHWaBei/yuEO4TjAgMBAAGj
# ggEbMIIBFzAdBgNVHQ4EFgQUQeSkq9TmIF5Sa0eX1Ip3K/9T39kwHwYDVR0jBBgw
# FoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov
# L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGltU3RhUENB
# XzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0
# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAx
# MC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDAN
# BgkqhkiG9w0BAQsFAAOCAQEABkb5SfYYqCqg0oIbDwzIe0nM84CqpbfjqLodi7Bd
# VtfMCCuAefUzJ9PmS2xZHq8MuNOl5y+pHDJN7ZibsyEThoeD0HopVG3PXVn9QXmj
# lbDYRxMr3e7KGeqRtJdTrDMcnx/fNy7mHj27MmmuhcHBTOyPjU+D+RnTybqgQrMi
# T0pY1LVM+PxxjCaOxSLc6eCZGNvAcRqGQJaqpGa8uCEIpGhdpbpIv1UWtIVrjOsz
# AmLVoINL/YjYYE7a/ZtmFseNgyZzvWwzNYSd4XvXtMrYc/VOyUBeigfVKW1X734L
# 51a6VViSIpuhD7x8LBlLjB687bvoH5QhPw4Rnb2Z90EESTCCBnEwggRZoAMCAQIC
# CmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp
# ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIx
# NDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3
# DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF
# ++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRD
# DNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSx
# z5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1
# rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16Hgc
# sOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB
# 4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqF
# bVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
# EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD
# VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv
# cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB
# BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCB
# kjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jv
# c29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQe
# MiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQA
# LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUx
# vs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GAS
# inbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1
# L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO
# M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4
# pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45
# V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x
# 4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEe
# gPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKn
# QqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp
# 3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvT
# X4/edIhJEqGCAs4wggI3AgEBMIH4oYHQpIHNMIHKMQswCQYDVQQGEwJVUzELMAkG
# A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
# b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u
# cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpBODQxLTRCQjQtQ0E5
# MzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG
# BSsOAwIaAxUAkmNDHJXWmEV6IeyFeEIwunwyChWggYMwgYCkfjB8MQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
# VGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOHPh2MwIhgPMjAy
# MDAxMjAwOTU2NTFaGA8yMDIwMDEyMTA5NTY1MVowdzA9BgorBgEEAYRZCgQBMS8w
# LTAKAgUA4c+HYwIBADAKAgEAAgIPIwIB/zAHAgEAAgIRqDAKAgUA4dDY4wIBADA2
# BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIB
# AAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAC8Iw+K7ct1iIS2xAvg5MhgCMZB/0z4A
# qSMw26QemfKTzWHpa9y/+8tLPdFXT6CaDzG2tYOjHtXrYMNmBOdLguFrA0FFXzvO
# 9Yo8GvVdvANnULc2f2kB5txtITTCMGp8XGzdB0vAXTfod7/gH3cdE29muppu3XP3
# JBcV6zQvOLFTMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB
# IDIwMTACEzMAAAEOJpHynZLbgSkAAAAAAQ4wDQYJYIZIAWUDBAIBBQCgggFKMBoG
# CSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgj0S1ApOw
# jjNXzznr1D7ahNBNf9MwErzcx5L+IxhD13wwgfoGCyqGSIb3DQEJEAIvMYHqMIHn
# MIHkMIG9BCBov/ePn2+tW9RhI4KYLWIbl3PTY0wpFNVTqYIUWkveMDCBmDCBgKR+
# MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT
# HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABDiaR8p2S24EpAAAA
# AAEOMCIEIKB7/TtyVy/JI4ImbdD94/C09CJQgj8JJMn0hq0SAG8sMA0GCSqGSIb3
# DQEBCwUABIIBADyYk2jNdxK106D9uft1O7WKKiro1DGI9BnSbAB1pBohp7VJITlE
# MEyYRc7lnSm6Ee/Zu5tiAe7K7c84vY73OqLAKW7xW6VWVfKGrROaB+7xEeCY26bM
# V0FDAGHoeAd4Qc8L3t5zR6LJ74fxt12TRCxtitc9d7a1pxnFZFym57Aa9aHzxMi7
# cYFLHV9hlf5GD164GzxaNuni+q3dY/WI2aolJszJQpYdGV5q2cS8mDxwT0vbKx0b
# gjVgI+kriMRqiW797SpFC/lY0ajwTo6qF6w02S3bJkysDm4Q0Q1OWaSA8qWSHxod
# J90AagUyfWIPGzfj7/PazEUWELFCK1SJN3A=
# SIG # End signature block