functions/docs/Get-LineageCollection.ps1

function Get-LineageCollection {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $True)]
        [psobject]$Data,
        [Parameter(Mandatory = $True)]
        [psobject]$Lineage,
        [switch]$keepRef
    )
    begin {
        function Get-ParentChildrenObj {
            $ParentChildren = New-Object PSObject;
            $ParentChildren | Add-Member -Type NoteProperty -Name Ordinal -Value $Null;
            $ParentChildren | Add-Member -Type NoteProperty -Name Parent -Value $Null;
            $ParentChildren | Add-Member -Type NoteProperty -Name Children -Value @();
            return $ParentChildren;
        }
    }
    process {
        $Collection = New-Object PSObject
        forEach ($Stream in $Lineage) {
            $Group1 = $Stream.Groups.Group1;
            $Group2 = $Stream.Groups.Group2;
            $Group3 = $Stream.Groups.Group3;
                            
            if (!($Collection.PSobject.Properties.Name -match "^$Group1`$")) {
                $Collection | Add-Member -Type NoteProperty -Name $Group1 -Value (New-Object PSObject)
            }
            if (!($Collection.$Group1.PSobject.Properties.Name -match "^$Group2`$")) {
                $Collection.$Group1 | Add-Member -Type NoteProperty -Name $Group2 -Value (New-Object PSObject)
            }
            if (!($Collection.$Group1.$Group2.PSobject.Properties.Name -match "^$Group3`$")) {
                $Collection.$Group1.$Group2 | Add-Member -Type NoteProperty -Name $Group3 -Value @()
            }
            $Table = New-Object PSObject
            $Table | Add-Member -Type NoteProperty -Name Level -Value $Stream.Level
            $Table | Add-Member -Type NoteProperty -Name ContentId -Value $Stream.ContentId
            $Table | Add-Member -Type NoteProperty -Name FullyQualifiedNM -Value $Stream.Attributes.FullyQualifiedNM
                            
            $Collection.$Group1.$Group2.$Group3 += $Table
        }
                        
                        
        $LineageArray = @();
        $Level1 = $Collection;
        $PropsLevel1 = $Level1.PSobject.Properties.Name;
        forEach ($PropLevel1 in $PropsLevel1) {
            $Level1Obj = Get-ParentChildrenObj;
            $Level1Obj.Parent = $PropLevel1;
            $Level2 = $Level1.$PropLevel1
            $PropsLevel2 = $Level2.PSobject.Properties.Name
            forEach ($PropLevel2 in $PropsLevel2) {
                $Level2Obj = Get-ParentChildrenObj;
                $Level2Obj.Parent = $PropLevel2;
                $Level3 = $Level2.$PropLevel2
                $PropsLevel3 = $Level3.PSobject.Properties.Name
                forEach ($PropLevel3 in $PropsLevel3) {
                    $Level3Obj = Get-ParentChildrenObj;
                    $Level3Obj.Parent = $PropLevel3;
                    $Level4 = $Level3.$PropLevel3
                    $Level3Obj.Ordinal = ($Level4.Level | Measure-Object -Average).Average
                    $PropsLevel4 = $Level4
                    $b = 1;
                    forEach ($PropLevel4 in $PropsLevel4 | Sort-Object { $_.FullyQualifiedNM }) {
                        $Level4Obj = Get-ParentChildrenObj;
                        $Level4Obj.Ordinal = $b;
                        $Level4Obj.Parent = $PropLevel4.FullyQualifiedNM;
                        forEach ($ContentId in $PropLevel4 | Where-Object ContentId) {
                            $Index = $Data.Entities.ContentId.indexOf($ContentId.ContentId)
                            $Bindings = $Data.Entities[$Index].Bindings.BindingNameNoSpaces | Sort-Object
                            $a = 1;
                            forEach ($Binding in $Bindings | Sort-Object) {
                                $Level5Obj = Get-ParentChildrenObj;
                                $Level5Obj.Ordinal = $a
                                $Level5Obj.Parent = $Binding;
                                $Level4Obj.Children += $Level5Obj;
                                $a++
                            }
                        }
                        $Level3Obj.Children += $Level4Obj
                        $b++
                    }
                    $Level2Obj.Children += $Level3Obj
                }
                $Multiple = 0;
                if ($PropLevel2 -eq 'Extensions') {
                    $Multiple = 1000;
                }
                $Level2Obj.Ordinal = ($Level3Obj.Ordinal | Measure-Object -Average).Average + $Multiple
                $Level1Obj.Children += $Level2Obj
            }
            $Level1Obj.Ordinal = ($Level2Obj.Ordinal | Measure-Object -Average).Average
            $LineageArray += $Level1Obj
        }
        return $LineageArray
    }
}
# SIG # Begin signature block
# MIIpNQYJKoZIhvcNAQcCoIIpJjCCKSICAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDXKS0Y9iwfnpYL
# R+/RSLV/adxAs78R+X0DaQbT3x2LWqCCDiMwggawMIIEmKADAgECAhAIrUCyYNKc
# TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z
# NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg
# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
# ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0
# JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr
# Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF
# LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F
# LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh
# 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ
# wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay
# g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI
# YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp
# QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro
# OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB
# WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+
# YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P
# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC
# hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v
# dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j
# b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED
# MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql
# +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF
# UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h
# mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw
# YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld
# AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw
# 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP
# LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE
# QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn
# KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji
# WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq
# yK+p/pQd52MbOoZWeE4wggdrMIIFU6ADAgECAhADsuWQRbq1qj3ect5VAxkgMA0G
# CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg
# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg
# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjMwNTE2MDAwMDAwWhcNMjYwNTIw
# MjM1OTU5WjBzMQswCQYDVQQGEwJVUzENMAsGA1UECBMEVXRhaDEVMBMGA1UEBxMM
# U291dGggSm9yZGFuMR4wHAYDVQQKExVIZWFsdGggQ2F0YWx5c3QsIEluYy4xHjAc
# BgNVBAMTFUhlYWx0aCBDYXRhbHlzdCwgSW5jLjCCAiIwDQYJKoZIhvcNAQEBBQAD
# ggIPADCCAgoCggIBAObA/ZMm0ngFmqmUW8QpvB5R2WwUIbCHZkoYN3LLelwf6FCX
# NNCZOxBz6CppjoQ4kL1HtQNpENDPMTMxG5/lMTlZvf1mu/mYEYXOddPsgv+QP4bd
# P+9w+NVE4vguFffuBSzQi8KmnrgGgDVLuhTjvN5WlP/AhzHldDNhKtkQh/bzIgrL
# sivSLRo3ow2kVCzJTZYwXudZ/cI2vrNf0jKRQgcC/ao1emvt68RNQJPxDpmd4Eb5
# DOF+jd9w0Sb77/m/ir2rTbVjoLOlPxD9FlGsdB+kyMV45D9hYuD4D1s998j/wDeL
# ezs/sXgrJToXS0Yjpxaul++7GVuLYgBQvB1UAVejXjDuJO2FF7gUeJihWk/OKmaW
# kQTGavOt8/RcOrru1LdJ733fJnMZsmonQPokOdlUADNKBSAEskgRbD3SQ/Y9LKcm
# 8w/hj9L6PSXBF/E/Kaq92SArEjkvYDlsXp7xslKgAxP26pzq7/hn2gro6/jjLUyh
# xt60j8Pm0tjhOdQhCcioRO2zouopusZmPMO6H95T1PEkhd/cEmkywmMqOMVMpAUg
# O796xTvZ4kjOsaQTOKvAEJDjc42EHZd2RWcVUMI41iHpNILkYHSPHe4mVQC8BdZx
# qzGI6ay7U1mEvCYlMYQZwDZ/xYxI7q0YBjQOm5jVuPvAHmlE6pUiWuGz3JKXAgMB
# AAGjggIDMIIB/zAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNV
# HQ4EFgQUaRlF8Nw4+YnDPBwkIaUEjV2a1MowDgYDVR0PAQH/BAQDAgeAMBMGA1Ud
# JQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwz
# LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5
# NlNIQTM4NDIwMjFDQTEuY3JsMFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5j
# b20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIx
# Q0ExLmNybDA+BgNVHSAENzA1MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRw
# Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsG
# AQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0
# dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVT
# aWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZI
# hvcNAQELBQADggIBABpsvUpsQVtdpqQNUxSC3Ix3qXeJ81vNGS7sXYxlYhvEChJF
# gixfjebMfHZu0YLJ3xIeX7VwW8wyF+9RkI4RnPtkJD2JSmDd2mH4y/gy138EZMHa
# n+XbMeMXcsOTL9cI5zUBw86EGj/xcL5NIj9DDym8DPh9/OZY5L5sGXrO1VjA/mUM
# lnpqpoNZaNsjQ7Gla6K5BC0xIoHxNYTX1uRSjmYkKdnNMTcHqOLcgxwaXzix26Bs
# n1pKO+NMe3DqthjFX0Pe6Z47b3GrjEYT4IoJP0N3H1crDfpm2vlBMwdSrNvr+epH
# VfZqOx8/VwS7VKygkP5Dp4zXyOa3W+11sMQIQ4AS4lER4g1GS/DmrlP2FWYGaaVJ
# YB01y1tWA23V3VM/Z/aeOR3uUE8p6tc5AFu2jNa16l9f5XNp9p5Fx2QzFh6pGqBu
# d0ict3T/vGWZWxzOhWqqp/Xd1oV5lMwW50t9CEKWpHidZXZZUkw2vwLnkZZzpFzs
# +b1HFxPKAvBXcwWO9ZV+FGeDk09ZBy3E4hY9JaF2Z9KiYa8EMzEOtHaHAkynD6Za
# TFhRSAnO3OMixVE/ro6dW7drPYKxKKYf1Y5QXaPU9ijer9ub0gnYDjPqsh3gWolp
# 7vjAE7t5JDE1PQDqCuuUn8FQakB/NJVs3Nt/Xz5ADD7e6h6JADmUr1l2e4agMYIa
# aDCCGmQCAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIElu
# Yy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJT
# QTQwOTYgU0hBMzg0IDIwMjEgQ0ExAhADsuWQRbq1qj3ect5VAxkgMA0GCWCGSAFl
# AwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQB
# gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkE
# MSIEIKGVIzT6105CMwUro+jiQxfJEhth839arvfd1nw0vYWdMA0GCSqGSIb3DQEB
# AQUABIICACe3ibPsl2fQrXsTl2j+9SP75we7wnjEER42grgyRB2rQnbWR84Vc+TN
# XpZbOM40RxtoqsaTYSlZGv4qjgQ+9ZGmmqXu2sn+c9Joqd2JpSYdNxh55UmlVzgb
# PRgdNUYGYFRqDoHH/yQI7HJhKt6flSXUkWxRVzDsv/BfIWFZ0Sr9eG9OJEYD/GYS
# 5Znmxw8NJ1UkSbjGpjJsrfVNXqk85iyZJ6YB0XDsMdV+2QCfumVLg/wBEqnW4IFb
# OegTr18XFEjnlrcOM9c1wjN0Z5GeUD/I1QtE4lQ5XLhwPg1NxeQzbk99uFPHXMjn
# km7b0mKIbYaUsBovwxvwg7098t1Y/9Xx+QlElVqy9MheW6jw+WsR/Xhj6QcHZnW+
# 59e2FCSNVm8lvKGrV4REXVb732CF4TkSN/2SMJqRsBB3NlhiQh6NCJI34U3t2PR/
# x+TfZWn60khOjLqOl23GUYFzgWcBQsCU3tvl3VitzbAAZD9HEsijdAiEZJsVft5M
# 4LgS+wMiLK3knQhV6O7Y+DNS2se/oLYn4CcfI3ZF2ekQkFY+ZVVl5zCq4QamFTYk
# c+BvMbX0LHnNN02Cf7PEYuJ9IudOb2/kXzZp+h4VGn/gH1vsblthtG3xXNNGnRED
# nALvs7vL76u9u+hk42Iog+NBIlXScuZze9SfWpfmyZIJGjmX5DiToYIXPjCCFzoG
# CisGAQQBgjcDAwExghcqMIIXJgYJKoZIhvcNAQcCoIIXFzCCFxMCAQMxDzANBglg
# hkgBZQMEAgEFADB4BgsqhkiG9w0BCRABBKBpBGcwZQIBAQYJYIZIAYb9bAcBMDEw
# DQYJYIZIAWUDBAIBBQAEIA1lW/m/Zb6uzlWo0DqWy4PS0+tmqj7A+8Q7dm3XmJmb
# AhEAxMDSVjjSZr3jrozT0xk6TBgPMjAyMzA1MTcxNzA5MjhaoIITBzCCBsAwggSo
# oAMCAQICEAxNaXJLlPo8Kko9KQeAPVowDQYJKoZIhvcNAQELBQAwYzELMAkGA1UE
# BhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2Vy
# dCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hBMjU2IFRpbWVTdGFtcGluZyBDQTAeFw0y
# MjA5MjEwMDAwMDBaFw0zMzExMjEyMzU5NTlaMEYxCzAJBgNVBAYTAlVTMREwDwYD
# VQQKEwhEaWdpQ2VydDEkMCIGA1UEAxMbRGlnaUNlcnQgVGltZXN0YW1wIDIwMjIg
# LSAyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAz+ylJjrGqfJru43B
# DZrboegUhXQzGias0BxVHh42bbySVQxh9J0Jdz0Vlggva2Sk/QaDFteRkjgcMQKW
# +3KxlzpVrzPsYYrppijbkGNcvYlT4DotjIdCriak5Lt4eLl6FuFWxsC6ZFO7Khbn
# UEi7iGkMiMbxvuAvfTuxylONQIMe58tySSgeTIAehVbnhe3yYbyqOgd99qtu5Wbd
# 4lz1L+2N1E2VhGjjgMtqedHSEJFGKes+JvK0jM1MuWbIu6pQOA3ljJRdGVq/9XtA
# bm8WqJqclUeGhXk+DF5mjBoKJL6cqtKctvdPbnjEKD+jHA9QBje6CNk1prUe2nhY
# HTno+EyREJZ+TeHdwq2lfvgtGx/sK0YYoxn2Off1wU9xLokDEaJLu5i/+k/kezbv
# BkTkVf826uV8MefzwlLE5hZ7Wn6lJXPbwGqZIS1j5Vn1TS+QHye30qsU5Thmh1EI
# a/tTQznQZPpWz+D0CuYUbWR4u5j9lMNzIfMvwi4g14Gs0/EH1OG92V1LbjGUKYvm
# QaRllMBY5eUuKZCmt2Fk+tkgbBhRYLqmgQ8JJVPxvzvpqwcOagc5YhnJ1oV/E9mN
# ec9ixezhe7nMZxMHmsF47caIyLBuMnnHC1mDjcbu9Sx8e47LZInxscS451NeX1XS
# fRkpWQNO+l3qRXMchH7XzuLUOncCAwEAAaOCAYswggGHMA4GA1UdDwEB/wQEAwIH
# gDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMCAGA1UdIAQZ
# MBcwCAYGZ4EMAQQCMAsGCWCGSAGG/WwHATAfBgNVHSMEGDAWgBS6FtltTYUvcyl2
# mi91jGogj57IbzAdBgNVHQ4EFgQUYore0GH8jzEU7ZcLzT0qlBTfUpwwWgYDVR0f
# BFMwUTBPoE2gS4ZJaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1
# c3RlZEc0UlNBNDA5NlNIQTI1NlRpbWVTdGFtcGluZ0NBLmNybDCBkAYIKwYBBQUH
# AQEEgYMwgYAwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBY
# BggrBgEFBQcwAoZMaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
# VHJ1c3RlZEc0UlNBNDA5NlNIQTI1NlRpbWVTdGFtcGluZ0NBLmNydDANBgkqhkiG
# 9w0BAQsFAAOCAgEAVaoqGvNG83hXNzD8deNP1oUj8fz5lTmbJeb3coqYw3fUZPwV
# +zbCSVEseIhjVQlGOQD8adTKmyn7oz/AyQCbEx2wmIncePLNfIXNU52vYuJhZqMU
# KkWHSphCK1D8G7WeCDAJ+uQt1wmJefkJ5ojOfRu4aqKbwVNgCeijuJ3XrR8cuOyY
# QfD2DoD75P/fnRCn6wC6X0qPGjpStOq/CUkVNTZZmg9U0rIbf35eCa12VIp0bcrS
# BWcrduv/mLImlTgZiEQU5QpZomvnIj5EIdI/HMCb7XxIstiSDJFPPGaUr10CU+ue
# 4p7k0x+GAWScAMLpWnR1DT3heYi/HAGXyRkjgNc2Wl+WFrFjDMZGQDvOXTXUWT5D
# mhiuw8nLw/ubE19qtcfg8wXDWd8nYiveQclTuf80EGf2JjKYe/5cQpSBlIKdrAqL
# xksVStOYkEVgM4DgI974A6T2RUflzrgDQkfoQTZxd639ouiXdE4u2h4djFrIHprV
# wvDGIqhPm73YHJpRxC+a9l+nJ5e6li6FV8Bg53hWf2rvwpWaSxECyIKcyRoFfLpx
# tU56mWz06J7UWpjIn7+NuxhcQ/XQKujiYu54BNu90ftbCqhwfvCXhHjjCANdRyxj
# qCU4lwHSPzra5eX25pvcfizM/xdMTQCi2NYBDriL7ubgclWJLCcZYfZ3AYwwggau
# MIIElqADAgECAhAHNje3JFR82Ees/ShmKl5bMA0GCSqGSIb3DQEBCwUAMGIxCzAJ
# BgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
# aWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAe
# Fw0yMjAzMjMwMDAwMDBaFw0zNzAzMjIyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcw
# FQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3Rl
# ZCBHNCBSU0E0MDk2IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EwggIiMA0GCSqGSIb3
# DQEBAQUAA4ICDwAwggIKAoICAQDGhjUGSbPBPXJJUVXHJQPE8pE3qZdRodbSg9Ge
# TKJtoLDMg/la9hGhRBVCX6SI82j6ffOciQt/nR+eDzMfUBMLJnOWbfhXqAJ9/UO0
# hNoR8XOxs+4rgISKIhjf69o9xBd/qxkrPkLcZ47qUT3w1lbU5ygt69OxtXXnHwZl
# jZQp09nsad/ZkIdGAHvbREGJ3HxqV3rwN3mfXazL6IRktFLydkf3YYMZ3V+0VAsh
# aG43IbtArF+y3kp9zvU5EmfvDqVjbOSmxR3NNg1c1eYbqMFkdECnwHLFuk4fsbVY
# TXn+149zk6wsOeKlSNbwsDETqVcplicu9Yemj052FVUmcJgmf6AaRyBD40NjgHt1
# biclkJg6OBGz9vae5jtb7IHeIhTZgirHkr+g3uM+onP65x9abJTyUpURK1h0QCir
# c0PO30qhHGs4xSnzyqqWc0Jon7ZGs506o9UD4L/wojzKQtwYSH8UNM/STKvvmz3+
# DrhkKvp1KCRB7UK/BZxmSVJQ9FHzNklNiyDSLFc1eSuo80VgvCONWPfcYd6T/jnA
# +bIwpUzX6ZhKWD7TA4j+s4/TXkt2ElGTyYwMO1uKIqjBJgj5FBASA31fI7tk42Pg
# puE+9sJ0sj8eCXbsq11GdeJgo1gJASgADoRU7s7pXcheMBK9Rp6103a50g5rmQzS
# M7TNsQIDAQABo4IBXTCCAVkwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU
# uhbZbU2FL3MpdpovdYxqII+eyG8wHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6
# mK4cD08wDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsG
# AQUFBwEBBGswaTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
# MEEGCCsGAQUFBzAChjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
# cnRUcnVzdGVkUm9vdEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3Js
# My5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAE
# GTAXMAgGBmeBDAEEAjALBglghkgBhv1sBwEwDQYJKoZIhvcNAQELBQADggIBAH1Z
# jsCTtm+YqUQiAX5m1tghQuGwGC4QTRPPMFPOvxj7x1Bd4ksp+3CKDaopafxpwc8d
# B+k+YMjYC+VcW9dth/qEICU0MWfNthKWb8RQTGIdDAiCqBa9qVbPFXONASIlzpVp
# P0d3+3J0FNf/q0+KLHqrhc1DX+1gtqpPkWaeLJ7giqzl/Yy8ZCaHbJK9nXzQcAp8
# 76i8dU+6WvepELJd6f8oVInw1YpxdmXazPByoyP6wCeCRK6ZJxurJB4mwbfeKuv2
# nrF5mYGjVoarCkXJ38SNoOeY+/umnXKvxMfBwWpx2cYTgAnEtp/Nh4cku0+jSbl3
# ZpHxcpzpSwJSpzd+k1OsOx0ISQ+UzTl63f8lY5knLD0/a6fxZsNBzU+2QJshIUDQ
# txMkzdwdeDrknq3lNHGS1yZr5Dhzq6YBT70/O3itTK37xJV77QpfMzmHQXh6OOmc
# 4d0j/R0o08f56PGYX/sr2H7yRp11LB4nLCbbbxV7HhmLNriT1ObyF5lZynDwN7+Y
# AN8gFk8n+2BnFqFmut1VwDophrCYoCvtlUG3OtUVmDG0YgkPCr2B2RP+v6TR81fZ
# vAT6gt4y3wSJ8ADNXcL50CN/AAvkdgIm2fBldkKmKYcJRyvmfxqkhQ/8mJb2VVQr
# H4D6wPIOK+XW+6kvRBVK5xMOHds3OBqhK/bt1nz8MIIFjTCCBHWgAwIBAgIQDpsY
# jvnQLefv21DiCEAYWjANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQGEwJVUzEVMBMG
# A1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
# IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMjIwODAxMDAw
# MDAwWhcNMzExMTA5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln
# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhE
# aWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
# ggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEppz1Yq3aaza57
# G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o
# k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFh
# mzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463J
# T17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFw
# q1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yh
# Tzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU
# 75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LV
# jHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJ
# bOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8Qg
# UWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo4IB
# OjCCATYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6
# mK4cD08wHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/
# BAQDAgGGMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au
# ZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2Vy
# dC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4
# oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJv
# b3RDQS5jcmwwEQYDVR0gBAowCDAGBgRVHSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBw
# oL9DXFXnOF+go3QbPbYW1/e/Vwe9mqyhhyzshV6pGrsi+IcaaVQi7aSId229GhT0
# E0p6Ly23OO/0/4C5+KH38nLeJLxSA8hO0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtD
# IeuWcqFItJnLnU+nBgMTdydE1Od/6Fmo8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlU
# sLihVo7spNU96LHc/RzY9HdaXFSMb++hUD38dglohJ9vytsgjTVgHAIDyyCwrFig
# DkBjxZgiwbJZ9VVrzyerbHbObyMt9H5xaiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwY
# w02fc7cBqZ9Xql4o4rmUMYIDdjCCA3ICAQEwdzBjMQswCQYDVQQGEwJVUzEXMBUG
# A1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQg
# RzQgUlNBNDA5NiBTSEEyNTYgVGltZVN0YW1waW5nIENBAhAMTWlyS5T6PCpKPSkH
# gD1aMA0GCWCGSAFlAwQCAQUAoIHRMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRAB
# BDAcBgkqhkiG9w0BCQUxDxcNMjMwNTE3MTcwOTI4WjArBgsqhkiG9w0BCRACDDEc
# MBowGDAWBBTzhyJNhjOCkjWplLy9j5bp/hx8czAvBgkqhkiG9w0BCQQxIgQg8vog
# vt3hpo5h+Lr87Li7x0lhAREm2hGwbsLDxSYbQRYwNwYLKoZIhvcNAQkQAi8xKDAm
# MCQwIgQgx/ThvjIoiSCr4iY6vhrE/E/meBwtZNBMgHVXoCO1tvowDQYJKoZIhvcN
# AQEBBQAEggIAWhjvBLEamP0fdSdLM2EmbpAZdk2Gs2rO7xeyYuj9msIg05zYDHZH
# qYJ96Dg8qUgZ1rLHwv50RT6ggIdmf8RvzjhnBvPdioHjmn84vhJPFq1NcNi4inp6
# g/HXogQ+furECPeG4BleoDAARECA8+OV2HRBRasa2d0nNV6QYMpUj/yBl1wTBvmx
# 9PN6gpAlP54ZO6whS1wf/sDlJ87vU8U/O+8POs8TV+di2C3dHsRiYRZkuHfhhKBp
# 5jiAOkF1Fq6xNeHs+TyMSHd3IPqh/UX9QV5mK9B12ct23uUtIxjo4KGMsn/QrJmD
# Eqy9Ev3ZwdOpaCtIYViWsM2r9607WabmDuwrzBYPdN9TSYwpovi7PgMs6v2MhsAF
# l/zqz25fCq4yvt1owty0YNSyY+u6gy+wmmXQ9hu2hhAmYLTSiRD0Ru42O1jN2x4J
# 3JmN/JvU9ESAMUefVdGZ1AMKZcqz8Svos7scUEGedv7TMrUCSdKRXL1JxjOuccIk
# jvCdiPdeYrRKv5KCAaf3kr7k3XDCD94rvz9ie0pBvGpzX2gv3v8BlQiVIGSr9Uv9
# V40vNm5NkXMEiAK3Wbp9/1oVqjkZV8ofJzEhRWEx7g7ZqkTrDJIJ/avGvJOSlGZy
# kEkmcioxft9FP7U2hXL7hq8kP83g9RTR8CMdoKcEYV4GJy8qICu6USk=
# SIG # End signature block