Public/Get-GkAdminRoleAssignment.ps1

function Get-GkAdminRoleAssignment {
    <#
    .SYNOPSIS
        Report Entra directory role assignments — active, PIM-eligible, and PIM active/time-bound —
        with the assigned principal and role resolved.

    .DESCRIPTION
        Uses the modern role-management (RBAC) API rather than the legacy directoryRoles surface:
          * Active GET /roleManagement/directory/roleAssignments
          * Eligible (PIM) GET /roleManagement/directory/roleEligibilityScheduleInstances
          * Time-bound (PIM) GET /roleManagement/directory/roleAssignmentScheduleInstances
        Each is expanded with principal and roleDefinition. Rows are tagged with AssignmentKind
        (Active | Eligible | TimeBound) and include the directory scope (/ = tenant-wide).

        PIM (eligible/time-bound) data requires Microsoft Entra ID P2 / Governance. If those
        endpoints are unavailable (no P2) they are skipped with a warning and active assignments
        are still returned (degrade mode: warn and continue).

    .PARAMETER AssignmentKind
        Which assignment kinds to return: All (default), Active, Eligible, or TimeBound.

    .PARAMETER RoleName
        Client-side wildcard filter on the role display name (e.g. '*Admin*').

    .PARAMETER AsReport
        Add a ReportGeneratedUtc column for clean export.

    .EXAMPLE
        Get-GkAdminRoleAssignment

        All active, eligible, and time-bound role assignments in the tenant.

    .EXAMPLE
        Get-GkAdminRoleAssignment -AssignmentKind Eligible -RoleName '*Administrator*'

        PIM-eligible assignments to any *Administrator* role.

    .EXAMPLE
        Get-GkAdminRoleAssignment |
            Group-Object RoleName |
            Sort-Object Count -Descending |
            Select-Object Name, Count

        Count of assignments per role, most-assigned first.

    .OUTPUTS
        PSGraphKit.AdminRoleAssignment
    #>

    [CmdletBinding()]
    [OutputType('PSGraphKit.AdminRoleAssignment')]
    param(
        [ValidateSet('All', 'Active', 'Eligible', 'TimeBound')]
        [string] $AssignmentKind = 'All',

        [string] $RoleName,

        [switch] $AsReport
    )

    begin {
        Test-GkConnection -FunctionName 'Get-GkAdminRoleAssignment' -Caller $PSCmdlet | Out-Null
        $now = [datetime]::UtcNow
    }

    process {
        # Resolve role names via a one-time roleDefinitions lookup. (Graph rejects expanding both
        # principal and roleDefinition in one query — "only one property can be expanded" — so we
        # expand principal and map roleDefinitionId -> displayName ourselves.)
        # Key the map on BOTH id and templateId: an assignment's roleDefinitionId may reference
        # either, and for some built-in roles the two differ (an unresolved id would otherwise
        # surface as a raw GUID in RoleName).
        $roleMap = @{}
        foreach ($rd in (Invoke-GkGraphRequest -Uri '/roleManagement/directory/roleDefinitions?$select=id,displayName,templateId' -CallerFunction 'Get-GkAdminRoleAssignment')) {
            $rdName = [string](Get-GkDictValue $rd 'displayName')
            foreach ($key in @([string](Get-GkDictValue $rd 'id'), [string](Get-GkDictValue $rd 'templateId'))) {
                if ($key) { $roleMap[$key] = $rdName }
            }
        }

        $sources = @(
            @{ Kind = 'Active';    Uri = '/roleManagement/directory/roleAssignments?$expand=principal';                 Optional = $false }
            @{ Kind = 'Eligible';  Uri = '/roleManagement/directory/roleEligibilityScheduleInstances?$expand=principal'; Optional = $true }
            @{ Kind = 'TimeBound'; Uri = '/roleManagement/directory/roleAssignmentScheduleInstances?$expand=principal';  Optional = $true }
        )

        foreach ($source in $sources) {
            if ($AssignmentKind -ne 'All' -and $AssignmentKind -ne $source.Kind) { continue }

            try {
                $items = Invoke-GkGraphRequest -Uri $source.Uri -CallerFunction 'Get-GkAdminRoleAssignment'
            }
            catch {
                if ($source.Optional) {
                    Write-Warning "Could not read PIM $($source.Kind) assignments (requires Microsoft Entra ID P2 / Governance). Skipping. Underlying error: $($_.Exception.Message)"
                    continue
                }
                throw
            }

            foreach ($item in $items) {
                $principal = Get-GkDictValue $item 'principal'

                $odataType = [string](Get-GkDictValue $principal '@odata.type')
                $pType = switch ($odataType) {
                    '#microsoft.graph.user'             { 'User' }
                    '#microsoft.graph.group'            { 'Group' }
                    '#microsoft.graph.servicePrincipal' { 'ServicePrincipal' }
                    default { if ($odataType) { ($odataType -split '\.')[-1] } else { 'Unknown' } }
                }

                $roleDefId = [string](Get-GkDictValue $item 'roleDefinitionId')
                if (-not $roleMap.ContainsKey($roleDefId)) {
                    # The bulk roleDefinitions list is not exhaustive for every assigned role
                    # (e.g. some first-party/service-principal assignments). Resolve this one by id
                    # and cache the result (or the id itself if it cannot be resolved at all).
                    $resolved = $roleDefId
                    try {
                        $one = Invoke-GkGraphRequest -Raw -CallerFunction 'Get-GkAdminRoleAssignment' `
                            -Uri "/roleManagement/directory/roleDefinitions/$roleDefId`?`$select=id,displayName"
                        $nm = [string](Get-GkDictValue $one 'displayName')
                        if ($nm) { $resolved = $nm }
                    }
                    catch {
                        Write-Verbose "PSGraphKit: could not resolve roleDefinition $roleDefId : $($_.Exception.Message)"
                    }
                    $roleMap[$roleDefId] = $resolved
                }
                $roleDisplayName = $roleMap[$roleDefId]
                if ($RoleName -and $roleDisplayName -notlike $RoleName) { continue }

                $scope = [string](Get-GkDictValue $item 'directoryScopeId')

                $obj = [ordered]@{
                    PSTypeName        = 'PSGraphKit.AdminRoleAssignment'
                    RoleName          = $roleDisplayName
                    AssignmentKind    = $source.Kind
                    PrincipalName     = [string](Get-GkDictValue $principal 'displayName')
                    PrincipalUpn      = [string](Get-GkDictValue $principal 'userPrincipalName')
                    PrincipalType     = $pType
                    Scope             = $scope
                    IsTenantScope     = ($scope -eq '/')
                    AssignmentType    = [string](Get-GkDictValue $item 'assignmentType')
                    MemberType        = [string](Get-GkDictValue $item 'memberType')
                    StartDateTime     = ConvertTo-GkDateTime (Get-GkDictValue $item 'startDateTime')
                    EndDateTime       = ConvertTo-GkDateTime (Get-GkDictValue $item 'endDateTime')
                    RoleDefinitionId  = [string](Get-GkDictValue $item 'roleDefinitionId')
                    PrincipalId       = [string](Get-GkDictValue $item 'principalId')
                    AssignmentId      = [string](Get-GkDictValue $item 'id')
                }
                if ($AsReport) { $obj['ReportGeneratedUtc'] = $now }
                [pscustomobject]$obj
            }
        }
    }
}

# SIG # Begin signature block
# MII9PQYJKoZIhvcNAQcCoII9LjCCPSoCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCGiAsEpAdzRP7e
# +F36h0rkBqxlEvEk5yp+l7R9EvHfLKCCIgAwggXMMIIDtKADAgECAhBUmNLR1FsZ
# lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu
# dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy
# MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv
# c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo
# b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD
# Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH
# or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD
# PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV
# qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70
# ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1
# vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3
# W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK
# xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg
# trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj
# O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7
# swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE
# AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ
# T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn
# LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c
# Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF
# xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx
# AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8
# FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY
# lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2
# 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY
# uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al
# GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk
# ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T
# 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggatMIIElaADAgECAhMzAAY/ql7c
# GpaWP1cwAAAABj+qMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ
# RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDQwHhcNMjYwOTEwMDgxMDQzWhcNMjYwOTEz
# MDgxMDQzWjBuMQswCQYDVQQGEwJTRTEZMBcGA1UEBx4QAEEAbABpAG4AZwBzAOUA
# czEhMB8GA1UECh4YAE0AYQByAHQAaQBuACAAVwBlAGwA6QBuMSEwHwYDVQQDHhgA
# TQBhAHIAdABpAG4AIABXAGUAbADpAG4wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw
# ggGKAoIBgQCOf2X4mAwZCDDs9ldzN6GHtTfpErreyX8iUp2TtpnjEzwsWqaWlDzW
# jaVdvquiVDo4SgAr2FcVbf4spBTiYdVW3iiBVNOe8TqSsyVihb1qkHyrezT2j4Xf
# qj21VgRgZftb92vbiL6lioo0xdbAtBq4EXACuBwgeVzbdlepMQXTAlXNTR2fe6FS
# gNcpFWg6ShKcyglNSwdrxGO7//CwwTDTq5bFoC5GAqwRlofG4WAh7nRmMmGQvg/E
# H//hR28kZVm1rZkRUzW/CGj5cH+hiE7dCnR/S+Teym+CPJow2rxNgfItcJPJXW1t
# 8xqJYafDkFXop7yzcvknjebKAtty/qIcjbycytF6JCDFE2GEuS3wBRmuLfdgM70D
# 9Heuirp9KvCjz3uyXG5lRwr41WvDHDHFV06LePV1PYQCq/RZVSx2JSjuaWYRkSTs
# 7i/D6uwQ6V2+sNwayTLtfm4rox0Ewo3K0bnOZWYA69xKl/zmU0udERgApUCTsE7Y
# pkuRIJeWstECAwEAAaOCAdYwggHSMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQD
# AgeAMD0GA1UdJQQ2MDQGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhwrBgEEAYI3YYGe
# +ocMgpSG9A6C9avbSIKgs+syMB0GA1UdDgQWBBR7k8EuOHb3b58Yqt5KxLk+fFqI
# njAfBgNVHSMEGDAWgBRrJUHe+2t8/RiACi1/j3ZdqnM9uDBnBgNVHR8EYDBeMFyg
# WqBYhlZodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3Nv
# ZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBBT0MlMjBDQSUyMDA0LmNybDB0Bggr
# BgEFBQcBAQRoMGYwZAYIKwYBBQUHMAKGWGh0dHA6Ly93d3cubWljcm9zb2Z0LmNv
# bS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENTJTIw
# QU9DJTIwQ0ElMjAwNC5jcnQwVAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUH
# AgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0
# b3J5Lmh0bTANBgkqhkiG9w0BAQwFAAOCAgEAUToEOZwImtilHCGbITBoG7Hf0PfC
# RAmbuNIWmRq/XfIbCZTE+OY4m5fe7lp6cqIGOtR9yd7n7RSlxO6viN6xxD1pvBqA
# RvHPOvcH66QD44bGxzIT81WLu/K2iMpFXIFrm3eJili5DvhiuPSnxWG0h4js/yIa
# LymXMQ1VglbX8Zln4fcpPXtJlBDHhQa5zTa2vhJmicMrE9fHgySA8oDKFSP9Mqs4
# Z5OcoGjpw4/8FUIXHFQVnAOKUOvjTgJohqEsx0q56l+nX7BTlS6NXW3hazN6cmOE
# vNNS8Yu6dI5O6EZ7OgSWMrtlAcus6tUvpIf3Nj2KD2OjN7gUIuRjl9UKNI81XxZS
# Yn0dW6VXRF37KK0/+LPtdPWPHDVsY5IoOYo0KQDZ0zHduJugANreNV8ZYxJ0oaxg
# gDvnhtfV2KvwsuUurO85fRWJ+8+3w2toUzc3ysCNH7epF3NbU/4rpVc4yZzxpCjL
# +KkTgSFrdnb6+RcWNymyp2tI+skPs3FWv0kkswPkfBOSFBHpXgToeAMJ2zmvq0Zu
# uCL6KVgdeCHGJGcS1g60KeaSteuDigV3jJ58jZWxW46c50RNJ10bgZPApUFNM1tD
# Ou3CHHDPn5VRSo94APOj+W9llPFW+hxbYB+vSJDait5W4R4dGYMjTS0ArFqzE9hB
# JYlfJRd7OAqvgOMwggatMIIElaADAgECAhMzAAY/ql7cGpaWP1cwAAAABj+qMA0G
# CSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBB
# T0MgQ0EgMDQwHhcNMjYwOTEwMDgxMDQzWhcNMjYwOTEzMDgxMDQzWjBuMQswCQYD
# VQQGEwJTRTEZMBcGA1UEBx4QAEEAbABpAG4AZwBzAOUAczEhMB8GA1UECh4YAE0A
# YQByAHQAaQBuACAAVwBlAGwA6QBuMSEwHwYDVQQDHhgATQBhAHIAdABpAG4AIABX
# AGUAbADpAG4wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCOf2X4mAwZ
# CDDs9ldzN6GHtTfpErreyX8iUp2TtpnjEzwsWqaWlDzWjaVdvquiVDo4SgAr2FcV
# bf4spBTiYdVW3iiBVNOe8TqSsyVihb1qkHyrezT2j4Xfqj21VgRgZftb92vbiL6l
# ioo0xdbAtBq4EXACuBwgeVzbdlepMQXTAlXNTR2fe6FSgNcpFWg6ShKcyglNSwdr
# xGO7//CwwTDTq5bFoC5GAqwRlofG4WAh7nRmMmGQvg/EH//hR28kZVm1rZkRUzW/
# CGj5cH+hiE7dCnR/S+Teym+CPJow2rxNgfItcJPJXW1t8xqJYafDkFXop7yzcvkn
# jebKAtty/qIcjbycytF6JCDFE2GEuS3wBRmuLfdgM70D9Heuirp9KvCjz3uyXG5l
# Rwr41WvDHDHFV06LePV1PYQCq/RZVSx2JSjuaWYRkSTs7i/D6uwQ6V2+sNwayTLt
# fm4rox0Ewo3K0bnOZWYA69xKl/zmU0udERgApUCTsE7YpkuRIJeWstECAwEAAaOC
# AdYwggHSMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMD0GA1UdJQQ2MDQG
# CisGAQQBgjdhAQAGCCsGAQUFBwMDBhwrBgEEAYI3YYGe+ocMgpSG9A6C9avbSIKg
# s+syMB0GA1UdDgQWBBR7k8EuOHb3b58Yqt5KxLk+fFqInjAfBgNVHSMEGDAWgBRr
# JUHe+2t8/RiACi1/j3ZdqnM9uDBnBgNVHR8EYDBeMFygWqBYhlZodHRwOi8vd3d3
# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJRCUyMFZlcmlm
# aWVkJTIwQ1MlMjBBT0MlMjBDQSUyMDA0LmNybDB0BggrBgEFBQcBAQRoMGYwZAYI
# KwYBBQUHMAKGWGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMv
# TWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENTJTIwQU9DJTIwQ0ElMjAwNC5j
# cnQwVAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTANBgkqhkiG
# 9w0BAQwFAAOCAgEAUToEOZwImtilHCGbITBoG7Hf0PfCRAmbuNIWmRq/XfIbCZTE
# +OY4m5fe7lp6cqIGOtR9yd7n7RSlxO6viN6xxD1pvBqARvHPOvcH66QD44bGxzIT
# 81WLu/K2iMpFXIFrm3eJili5DvhiuPSnxWG0h4js/yIaLymXMQ1VglbX8Zln4fcp
# PXtJlBDHhQa5zTa2vhJmicMrE9fHgySA8oDKFSP9Mqs4Z5OcoGjpw4/8FUIXHFQV
# nAOKUOvjTgJohqEsx0q56l+nX7BTlS6NXW3hazN6cmOEvNNS8Yu6dI5O6EZ7OgSW
# MrtlAcus6tUvpIf3Nj2KD2OjN7gUIuRjl9UKNI81XxZSYn0dW6VXRF37KK0/+LPt
# dPWPHDVsY5IoOYo0KQDZ0zHduJugANreNV8ZYxJ0oaxggDvnhtfV2KvwsuUurO85
# fRWJ+8+3w2toUzc3ysCNH7epF3NbU/4rpVc4yZzxpCjL+KkTgSFrdnb6+RcWNymy
# p2tI+skPs3FWv0kkswPkfBOSFBHpXgToeAMJ2zmvq0ZuuCL6KVgdeCHGJGcS1g60
# KeaSteuDigV3jJ58jZWxW46c50RNJ10bgZPApUFNM1tDOu3CHHDPn5VRSo94APOj
# +W9llPFW+hxbYB+vSJDait5W4R4dGYMjTS0ArFqzE9hBJYlfJRd7OAqvgOMwggco
# MIIFEKADAgECAhMzAAAAFjGSjZICZXuaAAAAAAAWMA0GCSqGSIb3DQEBDAUAMGMx
# CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xNDAy
# BgNVBAMTK01pY3Jvc29mdCBJRCBWZXJpZmllZCBDb2RlIFNpZ25pbmcgUENBIDIw
# MjEwHhcNMjYwMzI2MTgxMTI5WhcNMzEwMzI2MTgxMTI5WjBaMQswCQYDVQQGEwJV
# UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYDVQQDEyJNaWNy
# b3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENBIDA0MIICIjANBgkqhkiG9w0BAQEF
# AAOCAg8AMIICCgKCAgEAylX6yNvoCTDP9G0OTlSjXbzgEsy21FDL17n/lZe2BrqH
# z2mR1aN4DBxeYp0/hjEqSHHyGfarV1NVBuvK8vLzW0LTi+DZt9In16aiNfgcogFi
# ztWE9Fp8xu1zzrqE3nlrDWb+RZo8QrEXgWb8s8swsl2W7tREHycVkx+Hm1MLQIlv
# a6jH/Xg4/8GIYhHzbXiVd2RXomw9s7Qh6/SYRXXfe125wh4EKEyKnNNl+cZUSrVB
# gWvvjrRwQY4if7sAZ805KruBY6WY0Hiba5nWvrq9Qk9o35ViAf8qZ+7u1fbb1vcC
# WyWLfx9hLSdBjjVsSWe0xLvI1j4p3Tjt5czz+1Lc0v5lQ1feB7nFmpbZrK2us0hv
# AaBCfOyDPEEm+735vzuNRYWJFL/PViI+REtjuJMcojEn3veQjIrwrmK0T9oSr8e3
# oDzK1oAwwZMTC4KymTvYUTVDJvL5N8OW/UqIBzsiVYcchZvGhV3yMYKgxeEtIOG4
# W4Z85Y5kpQi5bpjGXFxRg46RdrTaALt1RhRmLR7U0jVSr2aYAd2+Mp2qA5Gz3/lo
# OOdt47eFZ3mrAYGYQtbK2SNjQpwgQX4Iy6tOKahCgFhKIcltitvSkpJB77eVWhNW
# nN2LfqMojszEue7V8EAySxry4PzlxTtFTb3Mw53XyH12BMQf2m9j7jEsHeVSATsC
# AwEAAaOCAdwwggHYMA4GA1UdDwEB/wQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADAd
# BgNVHQ4EFgQUayVB3vtrfP0YgAotf492XapzPbgwVAYDVR0gBE0wSzBJBgRVHSAA
# MEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv
# RG9jcy9SZXBvc2l0b3J5Lmh0bTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAS
# BgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFNlBKbAPD2Ns72nX9c0pnqRI
# ajDmMHAGA1UdHwRpMGcwZaBjoGGGX2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
# a2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDb2RlJTIwU2ln
# bmluZyUyMFBDQSUyMDIwMjEuY3JsMH0GCCsGAQUFBwEBBHEwbzBtBggrBgEFBQcw
# AoZhaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3Nv
# ZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAyMDIx
# LmNydDANBgkqhkiG9w0BAQwFAAOCAgEABtVQXlR01UQZY5XGQ9yIjMcD8jI0MizW
# hJ1buZjg5toUQSXx/BrASwE5qxwHPBeO45pOQp6VD4iILgm8OmfylY+A7KIqttvD
# UizC3sBXxjK4u7sDRiyEguXHKfL1HQAwxCLEtnRPkCPTsJA6b917lA+3foQIHC1X
# DDpdQLHxGbbGXp4Rr0mFK5vxbi6tAahBi/RlzOXPh6PavKPlZ/0vhlkDdsvoJETt
# ebNJCNOZ1Kav3Tg+K4va4FbOrYqRHdGGahoA/gmTYmmVqw0zkGzT53HdhfajrFGt
# tJomK7qE+T8CQGiPkEIkxNmSXjCTpDqc4U1IKlTGcGYnRFGSgqrnWnkANPFsJ5ED
# Hysh82lPI+PFC3FOIVMLzLL+30rqznvRgHUUAj7xfFnEiuaAx3vFVSTOLb+iigpv
# dR6i8fSWpgYESOkdkn2N57tuhBs57tKwoP++vc/MVpuD1XAtmWi+lZSlahadTbDf
# GKjMn+bfm2xlW9PZ6BSnCRv1MMhpcUZkAZX3gVEMef8rZc2c7BJ4ayRfX0wH43vI
# 9znV+ZRJ3j0xUC0Zb82RQalF5yHkCr93x0IwvZtn6P2dNQyCP6qd3fC4RlVFtAQh
# tOH0cByTR/Iqqghv6qHzL/pMptgMQQ5x8zYEYy+tCThYgYIrq7y4WEDYQfeSlqIx
# QOrIUJ4IJDEwggeeMIIFhqADAgECAhMzAAAAB4ejNKN7pY4cAAAAAAAHMA0GCSqG
# SIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
# cG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRp
# b24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMTA0MDEyMDA1
# MjBaFw0zNjA0MDEyMDE1MjBaMGMxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xNDAyBgNVBAMTK01pY3Jvc29mdCBJRCBWZXJpZmll
# ZCBDb2RlIFNpZ25pbmcgUENBIDIwMjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
# ggIKAoICAQCy8MCvGYgo4t1UekxJbGkIVQm0Uv96SvjB6yUo92cXdylN65Xy96q2
# YpWCiTas7QPTkGnK9QMKDXB2ygS27EAIQZyAd+M8X+dmw6SDtzSZXyGkxP8a8Hi6
# EO9Zcwh5A+wOALNQbNO+iLvpgOnEM7GGB/wm5dYnMEOguua1OFfTUITVMIK8faxk
# P/4fPdEPCXYyy8NJ1fmskNhW5HduNqPZB/NkWbB9xxMqowAeWvPgHtpzyD3PLGVO
# mRO4ka0WcsEZqyg6efk3JiV/TEX39uNVGjgbODZhzspHvKFNU2K5MYfmHh4H1qOb
# U4JKEjKGsqqA6RziybPqhvE74fEp4n1tiY9/ootdU0vPxRp4BGjQFq28nzawuvaC
# qUUF2PWxh+o5/TRCb/cHhcYU8Mr8fTiS15kRmwFFzdVPZ3+JV3s5MulIf3II5FXe
# ghlAH9CvicPhhP+VaSFW3Da/azROdEm5sv+EUwhBrzqtxoYyE2wmuHKws00x4GGI
# x7NTWznOm6x/niqVi7a/mxnnMvQq8EMse0vwX2CfqM7Le/smbRtsEeOtbnJBbtLf
# oAsC3TdAOnBbUkbUfG78VRclsE7YDDBUbgWt75lDk53yi7C3n0WkHFU4EZ83i83a
# bd9nHWCqfnYa9qIHPqjOiuAgSOf4+FRcguEBXlD9mAInS7b6V0UaNwIDAQABo4IC
# NTCCAjEwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQW
# BBTZQSmwDw9jbO9p1/XNKZ6kSGow5jBUBgNVHSAETTBLMEkGBFUdIAAwQTA/Bggr
# BgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1Jl
# cG9zaXRvcnkuaHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB
# /wQFMAMBAf8wHwYDVR0jBBgwFoAUyH7SaoUqG8oZmAQHJ89QEE9oqKIwgYQGA1Ud
# HwR9MHsweaB3oHWGc2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3Js
# L01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENl
# cnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcmwwgcMGCCsGAQUFBwEBBIG2
# MIGzMIGBBggrBgEFBQcwAoZ1aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w
# cy9jZXJ0cy9NaWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJv
# b3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3J0MC0GCCsGAQUF
# BzABhiFodHRwOi8vb25lb2NzcC5taWNyb3NvZnQuY29tL29jc3AwDQYJKoZIhvcN
# AQEMBQADggIBAH8lKp7+1Kvq3WYK21cjTLpebJDjW4ZbOX3HD5ZiG84vjsFXT0OB
# +eb+1TiJ55ns0BHluC6itMI2vnwc5wDW1ywdCq3TAmx0KWy7xulAP179qX6VSBNQ
# kRXzReFyjvF2BGt6FvKFR/imR4CEESMAG8hSkPYso+GjlngM8JPn/ROUrTaeU/BR
# u/1RFESFVgK2wMz7fU4VTd8NXwGZBe/mFPZG6tWwkdmA/jLbp0kNUX7elxu2+HtH
# o0QO5gdiKF+YTYd1BGrmNG8sTURvn09jAhIUJfYNotn7OlThtfQjXqe0qrimgY4V
# poq2MgDW9ESUi1o4pzC1zTgIGtdJ/IvY6nqa80jFOTg5qzAiRNdsUvzVkoYP7bi4
# wLCj+ks2GftUct+fGUxXMdBUv5sdr0qFPLPB0b8vq516slCfRwaktAxK1S40MCvF
# bbAXXpAZnU20FaAoDwqq/jwzwd8Wo2J83r7O3onQbDO9TyDStgaBNlHzMMQgl95n
# HBYMelLEHkUnVVVTUsgC0Huj09duNfMaJ9ogxhPNThgq3i8w3DAGZ61AMeF0C1M+
# mU5eucj1Ijod5O2MMPeJQ3/vKBtqGZg4eTtUHt/BPjN74SsJsyHqAdXVS5c+ItyK
# Wg3Eforhox9k3WgtWTpgV4gkSiS4+A09roSdOI4vrRw+p+fL4WrxSK5nMYIakzCC
# Go8CAQEwcTBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMSswKQYDVQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENB
# IDA0AhMzAAY/ql7cGpaWP1cwAAAABj+qMA0GCWCGSAFlAwQCAQUAoF4wEAYKKwYB
# BAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcN
# AQkEMSIEIFu4CjfNBl7veE0vn0pX5cIOGJOukqW+RkZET6nY767cMA0GCSqGSIb3
# DQEBAQUABIIBgB04maQ8HEn+29pvUIOCml0srBvWazXRvc9WVfVxXhBMgMiLOXi0
# RKA7yeF68qu/iZMjCSXySR7WymRIhpa//A48OInctIEjif7194sMIxGRsYDzE0jd
# HiWe/xRCwkKG2kIJD5vpI9udYbb4y2k8fPSwvEUpPu5L9lLjoijUmriHB8oj4Agd
# 99FAFugA+UVO96/xKDaOthZWCQ5RmRsxadI89JYyQNNqyqU6+RJrFcQLNBVTBgOl
# GHR7eZYElR1v496H80dr+G7cum3/Du20ASQjRDoZbbO9COveUUP3vJLj+gZh2GKK
# hfm3LVjG7RYiBOlGEh3791u3+MS6LPCl2QZLAT0DCsNKS1S4fIx9Qnqd3fEQ2J6u
# qm2/rLDF1Td5G5RffL5ZGWDjhkrIUBLvR9K9ytf+i/BmpJzBYd0OGO+jILCQfwPP
# czlvjBsmoktyrFLKse4deHhjsTpoBiPDoPl7tfwmX5f65ANwPAkfwp5A4x9AyQdO
# YXEgjkY/CIVcu6GCGBMwghgPBgorBgEEAYI3AwMBMYIX/zCCF/sGCSqGSIb3DQEH
# AqCCF+wwghfoAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFhBgsqhkiG9w0BCRABBKCC
# AVAEggFMMIIBSAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCDKdm2j
# Ga6REYg1bveiiRTovwA+j5DF87M9KWG95uxuhAIGaoSNQBzZGBIyMDI2MDkxMDE0
# NTgzMS43OFowBIACAfSggeGkgd4wgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
# YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlv
# bnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3ODAwLTA1RTAtRDk0NzE1MDMG
# A1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3Jp
# dHmggg8hMIIHgjCCBWqgAwIBAgITMwAAAAXlzw//Zi7JhwAAAAAABTANBgkqhkiG
# 9w0BAQwFADB3MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMUgwRgYDVQQDEz9NaWNyb3NvZnQgSWRlbnRpdHkgVmVyaWZpY2F0aW9u
# IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMjAwHhcNMjAxMTE5MjAzMjMx
# WhcNMzUxMTE5MjA0MjMxWjBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBU
# aW1lc3RhbXBpbmcgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
# ggIBAJ5851Jj/eDFnwV9Y7UGIqMcHtfnlzPREwW9ZUZHd5HBXXBvf7KrQ5cMSqFS
# HGqg2/qJhYqOQxwuEQXG8kB41wsDJP5d0zmLYKAY8Zxv3lYkuLDsfMuIEqvGYOPU
# RAH+Ybl4SJEESnt0MbPEoKdNihwM5xGv0rGofJ1qOYSTNcc55EbBT7uq3wx3mXht
# VmtcCEr5ZKTkKKE1CxZvNPWdGWJUPC6e4uRfWHIhZcgCsJ+sozf5EeH5KrlFnxpj
# KKTavwfFP6XaGZGWUG8TZaiTogRoAlqcevbiqioUz1Yt4FRK53P6ovnUfANjIgM9
# JDdJ4e0qiDRm5sOTiEQtBLGd9Vhd1MadxoGcHrRCsS5rO9yhv2fjJHrmlQ0EIXmp
# 4DhDBieKUGR+eZ4CNE3ctW4uvSDQVeSp9h1SaPV8UWEfyTxgGjOsRpeexIveR1MP
# TVf7gt8hY64XNPO6iyUGsEgt8c2PxF87E+CO7A28TpjNq5eLiiunhKbq0XbjkNoU
# 5JhtYUrlmAbpxRjb9tSreDdtACpm3rkpxp7AQndnI0Shu/fk1/rE3oWsDqMX3jjv
# 40e8KN5YsJBnczyWB4JyeeFMW3JBfdeAKhzohFe8U5w9WuvcP1E8cIxLoKSDzCCB
# Ou0hWdjzKNu8Y5SwB1lt5dQhABYyzR3dxEO/T1K/BVF3rV69AgMBAAGjggIbMIIC
# FzAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGtp
# KDo1L0hjQM972K9J6T7ZPdshMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUF
# BwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3Np
# dG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBT
# AHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmY
# BAcnz1AQT2ioojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3Nv
# ZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmlj
# YXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNy
# bDCBlAYIKwYBBQUHAQEEgYcwgYQwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIw
# VmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIw
# MjAyMC5jcnQwDQYJKoZIhvcNAQEMBQADggIBAF+Idsd+bbVaFXXnTHho+k7h2ESZ
# JRWluLE0Oa/pO+4ge/XEizXvhs0Y7+KVYyb4nHlugBesnFqBGEdC2IWmtKMyS1OW
# IviwpnK3aL5JedwzbeBF7POyg6IGG/XhhJ3UqWeWTO+Czb1c2NP5zyEh89F72u9U
# Iw+IfvM9lzDmc2O2END7MPnrcjWdQnrLn1Ntday7JSyrDvBdmgbNnCKNZPmhzoa8
# PccOiQljjTW6GePe5sGFuRHzdFt8y+bN2neF7Zu8hTO1I64XNGqst8S+w+RUdie8
# fXC1jKu3m9KGIqF4aldrYBamyh3g4nJPj/LR2CBaLyD+2BuGZCVmoNR/dSpRCxlo
# t0i79dKOChmoONqbMI8m04uLaEHAv4qwKHQ1vBzbV/nG89LDKbRSSvijmwJwxRxL
# LpMQ/u4xXxFfR4f/gksSkbJp7oqLwliDm/h+w0aJ/U5ccnYhYb7vPKNMN+SZDWyc
# U5ODIRfyoGl59BsXR/HpRGtiJquOYGmvA/pk5vC1lcnbeMrcWD/26ozePQ/TWfNX
# KBOmkFpvPE8CH+EeGGWzqTCjdAsno2jzTeNSxlx3glDGJgcdz5D/AAxw9Sdgq/+r
# Y7jjgs7X6fqPTXPmaCAJKVHAP19oEjJIBwD1LyHbaEgBxFCogYSOiUIr0Xqcr1nJ
# fiWG2GwYe6ZoAF1bMIIHlzCCBX+gAwIBAgITMwAAAFck05XgounJMQAAAAAAVzAN
# BgkqhkiG9w0BAQwFADBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1l
# c3RhbXBpbmcgQ0EgMjAyMDAeFw0yNTEwMjMyMDQ2NTNaFw0yNjEwMjIyMDQ2NTNa
# MIHbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQL
# ExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxk
# IFRTUyBFU046NzgwMC0wNUUwLUQ5NDcxNTAzBgNVBAMTLE1pY3Jvc29mdCBQdWJs
# aWMgUlNBIFRpbWUgU3RhbXBpbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF
# AAOCAg8AMIICCgKCAgEAsWylCpMIfbizJLY1kPXO2cmX2HRWvRbAmeKSZ5ex7/jC
# ymdV7Eap+Ic2iqRtWDkKKe5gL6JV80wtn5C2qHJLPxUYFKNG3UkHkAI21MoCN+YW
# nhT8K/YuPib6+6970jdbeFKIiZMWwd5hnpX9J3jeteuEdXbp/DfFBK15JuD3JOzW
# uF2suQCPgqYjQPk/gpq+3KCKtXJRbXSCSJ9YtITU2IHwmfdE7l2PfZ154w041po+
# fDeTj0gJOzcV/Jv56Q0M+w19jAKo/I5PEzrLV1IPQnmP4or1X4RbJXk8ONXyOOfX
# OxK2VLpNxgklK1yAezbFP2uzqihaXkW1h9GQLGENKESnezwgdRaLNNaYtm8AT/pZ
# HYJ35mZVqkZdMIckpQHJk/F1fSLyDKeKtH4TC4cc3ESKUMgItq07ZZm74JCsfhmr
# Q1ijVNDi1Sln+QBamgC7WviZbkQnceQRq9DY+6hANwOrasAZUiVr2kPuj1jHDOXz
# UG4O9QTK70P/oXSqZAN1oTv3UfF8JTGmAxg+l1ZPOz50MY96HBDw/3bI/wBGNvLk
# 6fLVnrxGN5B5unF/lYvjjWbIUdyBPVQnPOKXu08SRHbY19M1HoWX6PNZv+vzSeqV
# eWWHKdKjC3GjVjbbGpi+JLbiyaKRSwEqo49tJLvu69cQ7dWsbksai4TURnVj2mMC
# AwEAAaOCAcswggHHMB0GA1UdDgQWBBSOg8leLTUOAglIZ+bjXpiD7RKSpzAfBgNV
# HSMEGDAWgBRraSg6NS9IY0DPe9ivSek+2T3bITBsBgNVHR8EZTBjMGGgX6Bdhlto
# dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBQ
# dWJsaWMlMjBSU0ElMjBUaW1lc3RhbXBpbmclMjBDQSUyMDIwMjAuY3JsMHkGCCsG
# AQUFBwEBBG0wazBpBggrBgEFBQcwAoZdaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
# L3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBQdWJsaWMlMjBSU0ElMjBUaW1lc3Rh
# bXBpbmclMjBDQSUyMDIwMjAuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww
# CgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMGYGA1UdIARfMF0wUQYMKwYBBAGC
# N0yDfQEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
# a2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTAIBgZngQwBBAIwDQYJKoZIhvcNAQEM
# BQADggIBAHJ1wHY86Zk5SUBDPY25d/u9YJVaaNa71uxjX4cyO/XJ4uPENCSOwkRT
# nNogPLxTD0Fg3z4TFf/2T/0IFSxdtWVtTjhzrn+WLInzeRawUhTCFVrPBJKEWVsh
# m+Ig7/nB7JbJN88+ltImBbL5kT1StBLfG6UksAcDbNSQww90CUXhGueBxlnSvjkA
# X1ohiN16y1bB2s0rvQx8Csepl2CuBefTfDrMGzW/tzNx5YaK2D8OWweqTWZcGlJO
# 4YjZNI83cTrQghfHl/8AXOHj8cWL3wEFltQQs2xeRYAb3Kdnl7oIWKKXWaBYJY5P
# 3QPsiC+DTMp7ejdYKTrb396f3gr+wL/Ms5/Z3vIWZPJJv18qNw40fUNveRnwzMQn
# x8dM2bGuXXQZ5y7P8aXT4HJMo349qZtn4XQwiUE/DDp++MUL0kgjvd/Deo7Xr371
# PFPPYb4TboZhjV1x9+wCHDoOpNCBt+VuXU78ytJdKzQ1Jv2cEP1F9H9/wSLsMDUv
# WME7u9mGElOPDZPMVr8AuBEuLdbTSEdaLwsZBplzxLBcgxhZ/Cs30yBhuE3QhqT1
# YDZ2pa56RexPA2SasPcToT6gJgJ6E06BmZ2zQTNvWOjs5XQqHbYuXcoeDcwe2UaC
# 7EDOGD8GmLE9LiqtQsuQCM7v7I2xR+sPZT2Ax/85HjIkM+3MzTK1MYIHRjCCB0IC
# AQEweDBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcg
# Q0EgMjAyMAITMwAAAFck05XgounJMQAAAAAAVzANBglghkgBZQMEAgEFAKCCBJ8w
# EQYLKoZIhvcNAQkQAg8xAgUAMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAc
# BgkqhkiG9w0BCQUxDxcNMjYwOTEwMTQ1ODMxWjAvBgkqhkiG9w0BCQQxIgQg6SrR
# 7wam3T11vzUwAk//+eNGPFITLkfFc8jgWSj3OncwgbkGCyqGSIb3DQEJEAIvMYGp
# MIGmMIGjMIGgBCD1PJ9ktQVuTGWIbKLO4f1VUOlUU29ARCEpDZmFTHjbUjB8MGWk
# YzBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcgQ0Eg
# MjAyMAITMwAAAFck05XgounJMQAAAAAAVzCCA2EGCyqGSIb3DQEJEAISMYIDUDCC
# A0yhggNIMIIDRDCCAiwCAQEwggEJoYHhpIHeMIHbMQswCQYDVQQGEwJVUzETMBEG
# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
# cm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBP
# cGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046NzgwMC0wNUUwLUQ5
# NDcxNTAzBgNVBAMTLE1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWUgU3RhbXBpbmcg
# QXV0aG9yaXR5oiMKAQEwBwYFKw4DAhoDFQD9LzE5nEJRAUE2Ss3xaKKPXHnLw6Bn
# MGWkYzBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3RhbXBpbmcg
# Q0EgMjAyMDANBgkqhkiG9w0BAQsFAAIFAO5MtVMwIhgPMjAyNjA5MTAwNDQ5MjNa
# GA8yMDI2MDkxMTA0NDkyM1owdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA7ky1UwIB
# ADAKAgEAAgIJNAIB/zAHAgEAAgITOzAKAgUA7k4G0wIBADA2BgorBgEEAYRZCgQC
# MSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqG
# SIb3DQEBCwUAA4IBAQASXC/yKPzAcUc1UmVeebRKfFwdANVolHfVXJws5Tidzfa2
# XsUZxNRbJih5WXzD17TODjcCaOy1BVfqpwVgki0trNszF+J/vPjxZJnpTF/q1aLp
# F7ikaaZ2gHS5eV3+dSMMhMTgx0egjwu/Sp4IQzgH17DwSuNvfoqDKuLbcRCob7qW
# /gy9+MNU1beWvz/FH6p2TJGHgWZfezLM6HKHLPZvbe23R31CHWY7NIFmZ0vtO47M
# 4Iw8S5/O5vNA2j4O4yKujzcetOViINy7tVK+K8NnZibCoL/+pKH/oh9f7tSQsqaj
# TQUn/tTRyUvmZaYhFtTFiVIpYq0+zvkltQrKqKBaMA0GCSqGSIb3DQEBAQUABIIC
# ADTBJqkhlf8K74WrOQKzZN21Q0lxkBqyGF25MCJrkiBx8cSRmlWHV3w7pdVo6CFj
# PZVpHFDAqEc9K+KonbSBANDyp1+HkDyanmaj0wrP35WRDjsXoM62BKiR0gXwqnrl
# NpEqQQTQQAWOROi1XBDHeD+RCLrgFMPbsCjI7ozJ8+wlXQL968ZKYKM8jMHO9iGv
# iOxy6YmIZJ37IO9lF62LDUyZBYqeYANehaThqIxGzJZfE7c/nN5/NUeITy8lmECy
# ziR0Sy3uD/dozPY66v4f0fQfZJWI5EIhcNxZmgZQ5hUuvGhD7Yob1AZTF8/IRfUj
# Qgb+EgqwK7aUgj9rciyayPAejaZn9W77/QCnloko1weONten56EshB9gQmuWpkNj
# DhpnTBwE5w09EctggXaULLMt7nPZftJT7tZylEskkoCEvJZj4T2lmjAw5E6w3WEh
# dnW5XlmMzzgTKzSMQeZt/EHnVT3DV8sbGj/4j+TzwD2elSWdTq9KbI78/JXip0mU
# ztzH9o2iAh05tE9ozSd6+FNWBCWrUG1EG8XPKpHBihgSnxC8dkqb402jEyoOgMwQ
# vs6kUHAqYEFpY/6me466SxEUFbuXodZJ8Kj4pUMAxWdrQnSu4PCWUGLs8soqnv9m
# 1nX008ju4Xj6zzrsQ4sNshfc7Qvib2yrSQIyU4rCdKfN
# SIG # End signature block