net472/custom/PsExt/Set-CsOnlineScheduleModern.ps1

# ----------------------------------------------------------------------------------
#
# Copyright Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------------

# Objective of this custom file: assign parameters' values and customize output

function Set-CsOnlineScheduleModern {
    [CmdletBinding(PositionalBinding=$true)]
    param(
        [Parameter(Mandatory=$true, position=0)]
        [Object]
        # The instance of the schedule which is updated.
        ${Instance}
    )

    process {
        $params = @{
            Identity = ${Instance}.Id
            Name = ${Instance}.Name
            Type = ${Instance}.Type
            AssociatedConfigurationId = ${Instance}.AssociatedConfigurationId
        }

        if (${Instance}.Type -eq [Microsoft.Rtc.Management.Hosted.Online.Models.ScheduleType]::Fixed) {
            $DateTimeRanges = ${Instance}.FixedSchedule.DateTimeRanges
            $dateTimeRangeStandardFormat = 'yyyy-MM-ddTHH:mm:ss';
            $fixedScheduleDateTimeRanges = @()
            foreach ($dateTimeRange in $DateTimeRanges) {
                $fixedScheduleDateTimeRanges += @{
                    Start = $dateTimeRange.Start.ToString($dateTimeRangeStandardFormat)
                    End = $dateTimeRange.End.ToString($dateTimeRangeStandardFormat)
                }
            }
            $params['FixedScheduleDateTimeRange'] = $fixedScheduleDateTimeRanges
        }

        if (${Instance}.Type -eq [Microsoft.Rtc.Management.Hosted.Online.Models.ScheduleType]::WeeklyRecurrence) {
            $MondayHours = ${Instance}.WeeklyRecurrentSchedule.MondayHours
            $TuesdayHours = ${Instance}.WeeklyRecurrentSchedule.TuesdayHours
            $WednesdayHours = ${Instance}.WeeklyRecurrentSchedule.WednesdayHours
            $ThursdayHours = ${Instance}.WeeklyRecurrentSchedule.ThursdayHours
            $FridayHours = ${Instance}.WeeklyRecurrentSchedule.FridayHours
            $SaturdayHours = ${Instance}.WeeklyRecurrentSchedule.SaturdayHours
            $SundayHours = ${Instance}.WeeklyRecurrentSchedule.SundayHours

            if ($MondayHours -ne $null -and $MondayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleMondayHour'] = @()
                foreach ($mondayHour in $MondayHours){
                    $params['WeeklyRecurrentScheduleMondayHour'] += @{
                        Start = $mondayHour.Start
                        End = $mondayHour.End
                    }
                }
            }
            if ($TuesdayHours -ne $null -and $TuesdayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleTuesdayHour'] = @()
                foreach ($tuesdayHour in $TuesdayHours){
                    $params['WeeklyRecurrentScheduleTuesdayHour'] += @{
                        Start = $tuesdayHour.Start
                        End = $tuesdayHour.End
                    }
                }
            }
            if ($WednesdayHours -ne $null -and $WednesdayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleWednesdayHour'] = @()
                foreach ($wednesdayHour in $WednesdayHours){
                    $params['WeeklyRecurrentScheduleWednesdayHour'] += @{
                        Start = $wednesdayHour.Start
                        End = $wednesdayHour.End
                    }
                }    
            }
            if ($ThursdayHours -ne $null -and $ThursdayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleThursdayHour'] = @()
                    foreach ($thursdayHour in $ThursdayHours){
                        $params['WeeklyRecurrentScheduleThursdayHour'] += @{
                            Start = $thursdayHour.Start
                            End = $thursdayHour.End
                    }
                }
            }
            if ($FridayHours -ne $null -and $FridayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleFridayHour'] = @()
                foreach ($fridayHour in $FridayHours){
                    $params['WeeklyRecurrentScheduleFridayHour'] += @{
                        Start = $fridayHour.Start
                        End = $fridayHour.End
                    }
                }
            }
            if ($SaturdayHours -ne $null -and $SaturdayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleSaturdayHour'] = @()
                foreach ($saturdayHour in $SaturdayHours){
                    $params['WeeklyRecurrentScheduleSaturdayHour'] += @{
                        Start = $saturdayHour.Start
                        End = $saturdayHour.End
                    }
                }
            }
            if ($SundayHours -ne $null -and $SundayHours.Length -gt 0) {
                $params['WeeklyRecurrentScheduleSundayHour'] = @()
                foreach ($sundayHour in $SundayHours){
                    $params['WeeklyRecurrentScheduleSundayHour'] += @{
                        Start = $sundayHour.Start
                        End = $sundayHour.End
                    }
                }
            }

            $params['WeeklyRecurrentScheduleIsComplemented'] = ${Instance}.WeeklyRecurrentSchedule.ComplementEnabled
            
            if (${Instance}.WeeklyRecurrentSchedule.RecurrenceRange -ne $null) {
                if (${Instance}.WeeklyRecurrentSchedule.RecurrenceRange.Start -ne $null) { $params['RecurrenceRangeStart'] = ${Instance}.WeeklyRecurrentSchedule.RecurrenceRange.Start }
                if (${Instance}.WeeklyRecurrentSchedule.RecurrenceRange.End -ne $null) { $params['RecurrenceRangeEnd'] = ${Instance}.WeeklyRecurrentSchedule.RecurrenceRange.End }
                if (${Instance}.WeeklyRecurrentSchedule.RecurrenceRange.Type -ne $null) { $params['RecurrenceRangeType'] = ${Instance}.WeeklyRecurrentSchedule.RecurrenceRange.Type }
            }
        }

        $result = Microsoft.Teams.ConfigAPI.Cmdlets.internal\Set-CsOnlineSchedule @params
        Write-AdminServiceDiagnostic($result.Diagnostic)

        $schedule = [Microsoft.Rtc.Management.Hosted.Online.Models.Schedule]::new()
        $schedule.ParseFrom($result)
    }
}
# SIG # Begin signature block
# MIIjcQYJKoZIhvcNAQcCoIIjYjCCI14CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAcsv8fqG1G9n+s
# gM6SuSpPrqExltE9BpSjs7MQmDu7iaCCDWgwggXmMIIDzqADAgECAhMzAAACGLZ6
# ZdUj8uhbAAAAAAIYMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTEwHhcNMjEwNDI5MTkxMjU0WhcNMjIwNDI4MTkxMjU0WjByMQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMRwwGgYDVQQDExNTa3lw
# ZSBTb2Z0d2FyZSBTYXJsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
# 3Cx+JK+zOV8H12yaAdFOybBDc6EsSJeYcVlAaB6mltlnABTHMt5DSdVDXSZGZ2MG
# jQdr558vEua3NAFNxjtJ1gJHiRx+dosIKWviKIN4x69ymBuDU0ijzdfRwuj1MwMH
# lk9ngil2J4UuJrFhDIYCK5D/QJKRMn3TKS2fJJZ4WzMa5gIxZkB6NpIxJ4Bl+Who
# P6E333Dcp7q9tR2nkA9ME9527gD67/P2lykJN0HfIWLaQO1bxq1E/+MZKjHjfSM4
# QUE3ulAl9zVvSPH1FlUoo9rXV8dYGEtf+ePZhzQk5XGJzcDMfY3w00/M6hKwpG5M
# zcf5kODoGgMk/sf3ujc+lQIDAQABo4IBZzCCAWMwEwYDVR0lBAwwCgYIKwYBBQUH
# AwMwHQYDVR0OBBYEFBjq9v90aOLYYKp2XlmF+n/eTQRoMEUGA1UdEQQ+MDykOjA4
# MR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzMDI1
# NCs0NjQ1NjEwHwYDVR0jBBgwFoAUSG5k5VAF04KqFzc3IrVtqMp1ApUwVAYDVR0f
# BE0wSzBJoEegRYZDaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwv
# TWljQ29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNybDBhBggrBgEFBQcBAQRVMFMw
# UQYIKwYBBQUHMAKGRWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2Vy
# dHMvTWljQ29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNydDAMBgNVHRMBAf8EAjAA
# MA0GCSqGSIb3DQEBCwUAA4ICAQAG/OCvMAqUJwFCSN8Xr6fesACAhesl3vFB+Kq8
# xD8MO2NoNorp0SqEvCwG7klpO6SDeCNiax1Aj6N94AJXeWZz9WZA08I4b6JT4PqD
# 0Q1fKMEvOOAHeob2Ia/NMBZomI5YUwoATI7+C/kNdBF93iwqozYHotlZoyq9HT7n
# OQdnlJ3lcrmpx8LfoAWvS5S6QPyFVIM6l1x/blqnOjttpxi4mABdtKLjwaDELx3h
# 1Gl4SMNwfhdZFcZ3KVa4A8/KGDPEDukSyZKala4KG46GcFBaAL5VMjYcd0XLvTIr
# pvIneQuTT/RvH982H4sJORPdqeAY1xF6flW8xXJyDBSezprcq6oaD331YQgM83dG
# rSc1IJen0ekxlkk35yHUXH2A25Du3AUPkqaMWDhUc+aIv4ul6ILDL3Mg+j6s3lH5
# +zwEoYgFXYorMas4rrXixDaataP62AlDq4XBhqIDnxMDr/1lzWishD1QEZt2zdEJ
# wjWWbDOIdAaY1ZDctdBDpGTDb457dSswuX5/52gV/x/FIx1W7aJQyZlgAU7ABhvM
# 66K3o5NyCi7f9PuuuQ9Zv4uOvzsIvRxtKN9oiLHEEdX/PGFSoSJRoG5DQUKI54qq
# L0yNl5BFxji6koDlDLzrpR05K7+4E+kRfhpTHswSYah1QWWh39bTDSbnEDlUSel7
# dsIGiTCCB3owggVioAMCAQICCmEOkNIAAAAAAAMwDQYJKoZIhvcNAQELBQAwgYgx
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1p
# Y3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDExMB4XDTExMDcw
# ODIwNTkwOVoXDTI2MDcwODIxMDkwOVowfjELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQ
# Q0EgMjAxMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKvw+nIQHC6t
# 2G6qghBNNLrytlghn0IbKmvpWlCquAY4GgRJun/DDB7dN2vGEtgL8DjCmQawyDnV
# ARQxQtOJDXlkh36UYCRsr55JnOloXtLfm1OyCizDr9mpK656Ca/XllnKYBoF6WZ2
# 6DJSJhIv56sIUM+zRLdd2MQuA3WraPPLbfM6XKEW9Ea64DhkrG5kNXimoGMPLdNA
# k/jj3gcN1Vx5pUkp5w2+oBN3vpQ97/vjK1oQH01WKKJ6cuASOrdJXtjt7UORg9l7
# snuGG9k+sYxd6IlPhBryoS9Z5JA7La4zWMW3Pv4y07MDPbGyr5I4ftKdgCz1TlaR
# ITUlwzluZH9TupwPrRkjhMv0ugOGjfdf8NBSv4yUh7zAIXQlXxgotswnKDglmDlK
# Ns98sZKuHCOnqWbsYR9q4ShJnV+I4iVd0yFLPlLEtVc/JAPw0XpbL9Uj43BdD1FG
# d7P4AOG8rAKCX9vAFbO9G9RVS+c5oQ/pI0m8GLhEfEXkwcNyeuBy5yTfv0aZxe/C
# HFfbg43sTUkwp6uO3+xbn6/83bBm4sGXgXvt1u1L50kppxMopqd9Z4DmimJ4X7Iv
# hNdXnFy/dygo8e1twyiPLI9AN0/B4YVEicQJTMXUpUMvdJX3bvh4IFgsE11glZo+
# TzOE2rCIF96eTvSWsLxGoGyY0uDWiIwLAgMBAAGjggHtMIIB6TAQBgkrBgEEAYI3
# FQEEAwIBADAdBgNVHQ4EFgQUSG5k5VAF04KqFzc3IrVtqMp1ApUwGQYJKwYBBAGC
# NxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
# HwYDVR0jBBgwFoAUci06AjGQQ7kUBU7h6qfHMdEjiTQwWgYDVR0fBFMwUTBPoE2g
# S4ZJaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWlj
# Um9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNybDBeBggrBgEFBQcBAQRSMFAwTgYI
# KwYBBQUHMAKGQmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWlj
# Um9vQ2VyQXV0MjAxMV8yMDExXzAzXzIyLmNydDCBnwYDVR0gBIGXMIGUMIGRBgkr
# BgEEAYI3LgMwgYMwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNv
# bS9wa2lvcHMvZG9jcy9wcmltYXJ5Y3BzLmh0bTBABggrBgEFBQcCAjA0HjIgHQBM
# AGUAZwBhAGwAXwBwAG8AbABpAGMAeQBfAHMAdABhAHQAZQBtAGUAbgB0AC4gHTAN
# BgkqhkiG9w0BAQsFAAOCAgEAZ/KGpZjgVHkaLtPYdGcimwuWEeFjkplCln3SeQyQ
# wWVfLiw++MNy0W2D/r4/6ArKO79HqaPzadtjvyI1pZddZYSQfYtGUFXYDJJ80hpL
# HPM8QotS0LD9a+M+By4pm+Y9G6XUtR13lDni6WTJRD14eiPzE32mkHSDjfTLJgJG
# KsKKELukqQUMm+1o+mgulaAqPyprWEljHwlpblqYluSD9MCP80Yr3vw70L01724l
# ruWvJ+3Q3fMOr5kol5hNDj0L8giJ1h/DMhji8MUtzluetEk5CsYKwsatruWy2dsV
# iFFFWDgycScaf7H0J/jeLDogaZiyWYlobm+nt3TDQAUGpgEqKD6CPxNNZgvAs031
# 4Y9/HG8VfUWnduVAKmWjw11SYobDHWM2l4bf2vP48hahmifhzaWX0O5dY0HjWwec
# hz4GdwbRBrF1HxS+YWG18NzGGwS+30HHDiju3mUv7Jf2oVyW2ADWoUa9WfOXpQlL
# SBCZgB/QACnFsZulP0V3HjXG0qKin3p6IvpIlR+r+0cjgPWe+L9rt0uX4ut1eBrs
# 6jeZeRhL/9azI2h15q/6/IvrC4DqaTuv/DDtBEyO3991bWORPdGdVk5Pv4BXIqF4
# ETIheu9BCrE/+6jMpF3BoYibV3FWTkhFwELJm3ZbCoBIa/15n8G9bW1qyVJzEw16
# UM0xghVfMIIVWwIBATCBlTB+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDEx
# AhMzAAACGLZ6ZdUj8uhbAAAAAAIYMA0GCWCGSAFlAwQCAQUAoIGmMBkGCSqGSIb3
# DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV
# MC8GCSqGSIb3DQEJBDEiBCAx975tGelqL4MtwzcFZDxiXGVLEIHtv4Rq2kA6Tgzp
# FjA6BgorBgEEAYI3AgEMMSwwKqAMgAoAUwBrAHkAcABloRqAGGh0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbTANBgkqhkiG9w0BAQEFAASCAQB6H/T7dwruxkEFqcYurUzb
# WIWO8BTH3d+ninF1wtW9O8FIgFPwHDhiTwBC80eap7LekrTCJAn/Jby4AgRQIMq7
# MjNfetUnXT9+F3BYAFnN549FCpSp+oRSy5bp0AIij4dZx47IWpao9OhrggXrNDCJ
# j2DWJnwXLPzJrFaEChhhgqXOe7j7c8IA4r9JlUaJw+Aen09zVO6Pg4M5mp/dwvaz
# RPk+ZJi/VwozF/orAF7+QzQN6Jsm/O0snIuDm/7T9/CMUllcPhFxKh2W0iFHKdcu
# hu1jvnFo0p88QqSDbXLyGSZrQkhjACr5IvHGqVly4Q451VTK/Ny2V7IkaVwUXb/5
# oYIS8TCCEu0GCisGAQQBgjcDAwExghLdMIIS2QYJKoZIhvcNAQcCoIISyjCCEsYC
# AQMxDzANBglghkgBZQMEAgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8
# AgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIGZS2GCF2MocZZn3jLsc
# ggsW/IHy5H7TAWKWto6z24mGAgZh/Dr016kYEzIwMjIwMjE4MDgzODUzLjk2NVow
# BIACAfSggdSkgdEwgc4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYw
# JAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpGN0E2LUUyNTEtMTUwQTElMCMGA1UEAxMc
# TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaCCDkQwggT1MIID3aADAgECAhMz
# AAABWZ/8fl8s6vJDAAAAAAFZMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVT
# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1l
# LVN0YW1wIFBDQSAyMDEwMB4XDTIxMDExNDE5MDIxNVoXDTIyMDQxMTE5MDIxNVow
# gc4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsT
# IE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFs
# ZXMgVFNTIEVTTjpGN0E2LUUyNTEtMTUwQTElMCMGA1UEAxMcTWljcm9zb2Z0IFRp
# bWUtU3RhbXAgU2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
# AK54xGHJZ8SHREtNIoBo9AG6Mro8gEZCt8WgV/mNdIt2tMOP3zVYU4+sRsImxTwf
# zJEDBWaTc7LxlEy/1302fRmd/R2pwnY7pyT90yvZAmQQLZ6D+faGBwwhi5rre/tm
# BJdbAXFZ8qL2JDc4txBn30Mr1C8DFBdrIjwbP+i2RdAOaSwIs/xQsMeZAz3v5j9V
# Edwq8+iM6YcLcqKrYAwP+OE58371ST5kj2f7quToeTXhSvDczKYrVokL3Zn0+KNA
# nbpp4rH1tXymmgXQcgVCz1E/Ey8NEsvZ1FjV5QP6ovDMT8YAo7KzaYvT4Ix+xMVv
# W+1/1MnYaaoR8bLnQxmTZOMCAwEAAaOCARswggEXMB0GA1UdDgQWBBT20KmFRryt
# +uTrJ9eIwjyy6Tdj5zAfBgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBW
# BgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny
# bC9wcm9kdWN0cy9NaWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUH
# AQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
# L2NlcnRzL01pY1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAA
# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQCNkVQS6A+B
# hrfGOCAWo3KcuUa4estpzyn+ZLlkh0pJmAJp4EUDrLWsieYCf2oyoc8KjVMC+NHF
# FVvHLrSMhWnR5FtY6l3Z6Ur9ITBSz64j5wTRRE8vIpQiHVYjRVNPGR2tiqG5nKP5
# +sD0rZI464OFNz4n7erDJOpV7Im1L/sAwfX+GHoc4j5rfuAuQTFY82sdYvtHM4LT
# xwV997uhlFs52oHapdFW1KXt6vMxEXnSX8soQfUd+M+Yq3J7udc6R941Guxfd6A0
# vecV56JjvmpCng4jRkquAeyf/dKmQUaR1fKvALBRAmZkAUtWijS/3MkeQv/lUvHV
# o7GPFzJ/O3wJMIIGcTCCBFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsF
# ADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
# B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UE
# AxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcN
# MTAwNzAxMjEzNjU1WhcNMjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt
# cCBQQ0EgMjAxMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3
# EYo6IOz8E5f1+n9plGt0VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEf
# QRsalR3OCROOfGEwWbEwRA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeB
# zb8kYDJYYEbyWEeGMoQedGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEn
# HSRnEnIaIYqvS2SJUGKxXf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9
# buWayrGo8noqCjHw2k4GkbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzA
# yURdXhacAQVPIk0CAwEAAaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1Ud
# DgQWBBTVYzpcijGQ80N7fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBi
# AEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV
# 9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js
# Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAx
# MC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8v
# d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2
# LTIzLmNydDCBoAYDVR0gAQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYB
# BQUHAgEWMWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVm
# YXVsdC5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBj
# AHkAXwBTAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfm
# iFEN4sbgmD+BcQM9naOhIW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceo
# niXj+bzta1RXCCtRgkQS+7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDI
# r79/xn/yN31aPxzymXlKkVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0D
# pZaPWSm8tv0E4XCfMkon/VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em
# 4jnsGUpxY517IW3DnKOiPPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKD
# uLWAmyI4ILUl5WTs9/S/fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n
# 0O99g/DhO3EJ3110mCIIYdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtv
# d6mBy6cJrDm77MbL2IK0cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3g
# My4SKfXAL1QnIffIrE7aKLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1
# mYovG8chr1m1rtxEPJdQcdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9Y
# BS7vDaBQNdrvCScc1bN+NR4Iuto229Nfj950iEkSoYIC0jCCAjsCAQEwgfyhgdSk
# gdEwgc4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
# EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNV
# BAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1U
# aGFsZXMgVFNTIEVTTjpGN0E2LUUyNTEtMTUwQTElMCMGA1UEAxMcTWljcm9zb2Z0
# IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsOAwIaAxUAKnbLAI8fhO58SCWr
# pZnXvXEZshGggYMwgYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAN
# BgkqhkiG9w0BAQUFAAIFAOW51nkwIhgPMjAyMjAyMTgxMjI1MjlaGA8yMDIyMDIx
# OTEyMjUyOVowdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA5bnWeQIBADAKAgEAAgIn
# QQIB/zAHAgEAAgIRkTAKAgUA5bsn+QIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgor
# BgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUA
# A4GBAJdQ4P/tl0bUet23CRGLUDK3z/AKZJFyxYStrpUUJmvBOmBPoOLsI+qFPZqg
# VB202y7Mex7zblE7/JvBAo3vMuFm9Wwnq+aVCGMM4B4Wx8oAFdR4OqUqdvIDQJD6
# 3CRRGuZRZpcLoiYIR25yfgoXZWoJYKWorvm4pLAhtYfCHZxhMYIDDTCCAwkCAQEw
# gZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
# B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
# AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAFZn/x+Xyzq8kMA
# AAAAAVkwDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0B
# CRABBDAvBgkqhkiG9w0BCQQxIgQgC16smuN/b/Wv1+8Q1juhl5WHue6DkDJBCNas
# EYlhhU0wgfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9BCABWBvPvzDmfNeSzmJT
# 4+dGA+uj/qq7/fKkUn36rxND6DCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w
# IFBDQSAyMDEwAhMzAAABWZ/8fl8s6vJDAAAAAAFZMCIEICYCU3ytOWUd6ehunZF/
# PVPg2xzwLfP1DEJFOhArd52iMA0GCSqGSIb3DQEBCwUABIIBAIVZ2CpKQD7bKXOn
# lAWiXUyRBOdYoYRWWAat00hzCndfhVUHn8lhlSQKEOrS5V3th3jRBXL6ZLMsR12s
# IRgBpfpedhDqnQUcRitBAnloj93+69EB4rXcRuDwA6SQNYc/JuZEkEjQKl4NUqPj
# kvktB6mmNBpFiXIRv9x9eFnY8MD+cGyZCVyVFROqPEHDQIqF73rinKy02s2mRUPU
# h13DWxAO8qROLNDpR5JEduMe/YKuJVB05Ri8veLyYF5C5nu+8M1g5/tE88bNRzJd
# 9EWN7nBJ/k+6GLEoHmXous2UwVrAHWhogU0p/OLNQczUtXbYJnCCcmB956Dftcza
# 9/MAVEM=
# SIG # End signature block