Get-Product.ps1

function Get-Product {
<#
.SYNOPSIS
Retrieves one or more entities from the product entity set.
 
.DESCRIPTION
Retrieves one or more entities from the product entity set.
 
You can retrieve one ore more entities from the entity set by specifying
Id, Name or other properties.
 
.INPUTS
The Cmdlet can either return all available entities or filter entities on
specified conditions.
See PARAMETERS section on possible inputs.
 
.OUTPUTS
default | json | json-pretty | xml | xml-pretty
 
.EXAMPLE
Get-Product
 
Type : com.swisscom.cms.rhel6
EntityKindId : 4862
ValidFrom : 01.01.0001 00:00:00 +00:00
ValidUntil : 31.12.9999 00:00:00 +01:00
EndOfLife : 31.12.9999 00:00:00 +01:00
Parameters : {}
Id : 50
Tid : 11111111-1111-1111-1111-111111111111
Name : RHEL6
Description :
CreatedById : 1011
ModifiedById : 1011
Created : 14.02.2016 11:21:49 +01:00
Modified : 14.02.2016 11:21:49 +01:00
RowVersion : {0, 0, 0, 0...}
CatalogueItems : {}
EntityKind :
Tenant :
CreatedBy :
ModifiedBy :
 
Type : com.swisscom.cms.rhel7
EntityKindId : 4097
ValidFrom : 01.01.0001 00:00:00 +00:00
ValidUntil : 31.12.9999 00:00:00 +01:00
EndOfLife : 31.12.9999 00:00:00 +01:00
Parameters : {}
Id : 11
Tid : 11111111-1111-1111-1111-111111111111
Name : RHEL7
Description :
CreatedById : 2
ModifiedById : 2
Created : 21.12.2015 09:17:45 +01:00
Modified : 21.12.2015 12:24:19 +01:00
RowVersion : {0, 0, 0, 0...}
CatalogueItems : {}
EntityKind :
Tenant :
CreatedBy :
ModifiedBy :
 
List all Products
 
.EXAMPLE
Get-ApcProduct -Id 12
 
Type : com.swisscom.cms.win
EntityKindId : 4098
ValidFrom : 01.01.0001 00:00:00 +00:00
ValidUntil : 01.01.2020 00:00:00 +01:00
EndOfLife : 01.01.2020 00:00:00 +01:00
Parameters :
Id : 12
Tid : 11111111-1111-1111-1111-111111111111
Name : WIN2012R2
Description :
CreatedById : 2
ModifiedById : 2
Created : 21.12.2015 16:00:10 +01:00
Modified : 18.01.2016 01:13:44 +01:00
RowVersion : {0, 0, 0, 0...}
CatalogueItems : {}
EntityKind :
Tenant :
CreatedBy :
ModifiedBy :
 
Retrieves the product with id 12
 
.EXAMPLE
Get-ApcProduct -Name "WIN2012R2"
 
Type : com.swisscom.cms.win
EntityKindId : 4098
ValidFrom : 01.01.0001 00:00:00 +00:00
ValidUntil : 01.01.2020 00:00:00 +01:00
EndOfLife : 01.01.2020 00:00:00 +01:00
Parameters :
Id : 12
Tid : 11111111-1111-1111-1111-111111111111
Name : WIN2012R2
Description :
CreatedById : 2
ModifiedById : 2
Created : 21.12.2015 16:00:10 +01:00
Modified : 18.01.2016 01:13:44 +01:00
RowVersion : {0, 0, 0, 0...}
CatalogueItems : {}
EntityKind :
Tenant :
CreatedBy :
ModifiedBy :
 
Retrieves the product with the Name WIN2012R2
 
.EXAMPLE
Get-ApcProduct -SearchByName "WIN"
 
Type : com.swisscom.cms.win
EntityKindId : 4098
ValidFrom : 01.01.0001 00:00:00 +00:00
ValidUntil : 01.01.2020 00:00:00 +01:00
EndOfLife : 01.01.2020 00:00:00 +01:00
Parameters :
Id : 12
Tid : 11111111-1111-1111-1111-111111111111
Name : WIN2012R2
Description :
CreatedById : 2
ModifiedById : 2
Created : 21.12.2015 16:00:10 +01:00
Modified : 18.01.2016 01:13:44 +01:00
RowVersion : {0, 0, 0, 0...}
CatalogueItems : {}
EntityKind :
Tenant :
CreatedBy :
ModifiedBy :
 
Type : com.swisscom.cms.win2008r2
EntityKindId : 4864
ValidFrom : 01.01.0001 00:00:00 +00:00
ValidUntil : 31.12.9999 23:59:59 +00:00
EndOfLife : 31.12.9999 23:59:59 +00:00
Parameters :
Id : 53
Tid : 11111111-1111-1111-1111-111111111111
Name : WIN2008R2
Description : Managed Windows Server 2008 R2
CreatedById : 2
ModifiedById : 2
Created : 15.02.2016 19:03:11 +01:00
Modified : 15.02.2016 19:03:11 +01:00
RowVersion : {0, 0, 0, 0...}
CatalogueItems : {}
EntityKind :
Tenant :
CreatedBy :
ModifiedBy :
 
Retrieves all products which contains WIN
 
.LINK
Online Version: http://dfch.biz/biz/dfch/PS/Appclusive/Client/Get-Product/
 
.NOTES
See module manifest for required software versions and dependencies.
#>

[CmdletBinding(
    ConfirmImpact = 'Low'
    ,
    HelpURI = 'http://dfch.biz/biz/dfch/PS/Appclusive/Client/Get-Product/'
    ,
    DefaultParameterSetName = 'list'
)]
PARAM 
(
    # Id of the product
    [Parameter(Mandatory = $false, ParameterSetName = 'Id')]
    [ValidateNotNullOrEmpty()]
    [long] $Id = $null
    ,
    # Name of the product
    [Parameter(Mandatory = $false, ParameterSetName = 'Parameter')]
    [ValidateNotNullOrEmpty()]
    [String] $Name = $null
    ,
    # Name of the product type
    [Parameter(Mandatory = $false, ParameterSetName = 'Parameter')]
    [ValidateNotNullOrEmpty()]
    [String] $ProductType = $null
    ,
    # Part of the name of the product type you want to search - this is not case sensitive
    [Parameter(Mandatory = $false, ParameterSetName = 'SearchByName')]
    [ValidateNotNullOrEmpty()]
    [String] $SearchByName = $null
    ,
    # Lists all available products
    [Parameter(Mandatory = $false, ParameterSetName = 'list')]
    [Switch] $ListAvailable
    ,
    # Service reference to Appclusive
    [Parameter(Mandatory = $false)]
    [Alias('Services')]
    [hashtable] $svc = (Get-Variable -Name $MyInvocation.MyCommand.Module.PrivateData.MODULEVAR -ValueOnly).Services
    ,
    # Specifies the return format of the Cmdlet
    [ValidateSet('default', 'json', 'json-pretty', 'xml', 'xml-pretty')]
    [Parameter(Mandatory = $false)]
    [alias('ReturnFormat')]
    [string] $As = 'default'
)

Begin 
{
    trap { Log-Exception $_; break; }

    $datBegin = [datetime]::Now;
    [string] $fn = $MyInvocation.MyCommand.Name;
    Log-Debug -fn $fn -msg ("CALL. svc '{0}'. Name '{1}'." -f ($svc -is [Object]), $Name) -fac 1;
    
    Contract-Requires ($svc.Core -is [biz.dfch.CS.Appclusive.Api.Core.Core]) "Connect to the server before using the Cmdlet"
    
    $EntitySetName = 'Products';
}
# Begin

Process 
{
    trap { Log-Exception $_; break; }
    # Default test variable for checking function response codes.
    [Boolean] $fReturn = $false;
    
    if($PSCmdlet.ParameterSetName -eq 'list') 
    {
        $Response = $svc.Core.$EntitySetName.AddQueryOption('$orderby','Name') | Select;
    }    
    else
    {
        $Exp = @();
        If ($PSCmdlet.ParameterSetName -eq 'Id') 
        {
            $Exp += ("Id eq {0}" -f $Id);
        }
        
        If ($PSCmdlet.ParameterSetName -eq 'SearchByName') 
        {
            $Exp += ("substringof('{0}', tolower(Name))" -f $SearchByName.ToLower());
        }
        
        if (!([string]::IsNullOrEmpty($ProductType)))
        {
            $Exp += ("tolower(Type) eq '{0}'" -f $ProductType.ToLower());
        }
        
        if (!([string]::IsNullOrEmpty($Name)))
        {
            $Exp += ("tolower(Name) eq '{0}'" -f $Name.ToLower());
        }

        $FilterExpression = [String]::Join(' and ', $Exp);
        $Response = $svc.Core.$EntitySetName.AddQueryOption('$filter', $FilterExpression) | Select;
    }
    
    # $OutputParameter = $result
    $OutputParameter = Format-ResultAs $Response $As
    $fReturn = $true;
}
# Process

End 
{
    $datEnd = [datetime]::Now;
    Log-Debug -fn $fn -msg ("RET. fReturn: [{0}]. Execution time: [{1}]ms. Started: [{2}]." -f $fReturn, ($datEnd - $datBegin).TotalMilliseconds, $datBegin.ToString('yyyy-MM-dd HH:mm:ss.fffzzz')) -fac 2;

    # Return values are always and only returned via OutputParameter.
    return $OutputParameter;
}
# End

} # function

if($MyInvocation.ScriptName) { Export-ModuleMember -Function Get-Product; } 

#
# Copyright 2016 d-fens GmbH
#
# 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.
#

# SIG # Begin signature block
# MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUMNHUhn/RBIpjLCb59ZCyYttJ
# w1egghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw
# VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV
# BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0
# MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK
# ExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIFRpbWVzdGFt
# cGluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlO9l
# +LVXn6BTDTQG6wkft0cYasvwW+T/J6U00feJGr+esc0SQW5m1IGghYtkWkYvmaCN
# d7HivFzdItdqZ9C76Mp03otPDbBS5ZBb60cO8eefnAuQZT4XljBFcm05oRc2yrmg
# jBtPCBn2gTGtYRakYua0QJ7D/PuV9vu1LpWBmODvxevYAll4d/eq41JrUJEpxfz3
# zZNl0mBhIvIG+zLdFlH6Dv2KMPAXCae78wSuq5DnbN96qfTvxGInX2+ZbTh0qhGL
# 2t/HFEzphbLswn1KJo/nVrqm4M+SU4B09APsaLJgvIQgAIMboe60dAXBKY5i0Eex
# +vBTzBj5Ljv5cH60JQIDAQABo4HlMIHiMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB
# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRG2D7/3OO+/4Pm9IWbsN1q1hSpwTBHBgNV
# HSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs
# c2lnbi5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Ny
# bC5nbG9iYWxzaWduLm5ldC9yb290LmNybDAfBgNVHSMEGDAWgBRge2YaRQ2XyolQ
# L30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEATl5WkB5GtNlJMfO7FzkoG8IW
# 3f1B3AkFBJtvsqKa1pkuQJkAVbXqP6UgdtOGNNQXzFU6x4Lu76i6vNgGnxVQ380W
# e1I6AtcZGv2v8Hhc4EvFGN86JB7arLipWAQCBzDbsBJe/jG+8ARI9PBw+DpeVoPP
# PfsNvPTF7ZedudTbpSeE4zibi6c1hkQgpDttpGoLoYP9KOva7yj2zIhd+wo7AKvg
# IeviLzVsD440RZfroveZMzV+y5qKu0VN5z+fwtmK+mWybsd+Zf/okuEsMaL3sCc2
# SI8mbzvuTXYfecPlf5Y1vC0OzAGwjn//UYCAp5LUs0RGZIyHTxZjBzFLY7Df8zCC
# BCkwggMRoAMCAQICCwQAAAAAATGJxjfoMA0GCSqGSIb3DQEBCwUAMEwxIDAeBgNV
# BAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWdu
# MRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTExMDgwMjEwMDAwMFoXDTE5MDgwMjEw
# MDAwMFowWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH
# MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPv0Z8p6djTgnY8YqDS
# SdYWHvHP8NC6SEMDLacd8gE0SaQQ6WIT9BP0FoO11VdCSIYrlViH6igEdMtyEQ9h
# JuH6HGEVxyibTQuCDyYrkDqW7aTQaymc9WGI5qRXb+70cNCNF97mZnZfdB5eDFM4
# XZD03zAtGxPReZhUGks4BPQHxCMD05LL94BdqpxWBkQtQUxItC3sNZKaxpXX9c6Q
# MeJ2s2G48XVXQqw7zivIkEnotybPuwyJy9DDo2qhydXjnFMrVyb+Vpp2/WFGomDs
# KUZH8s3ggmLGBFrn7U5AXEgGfZ1f53TJnoRlDVve3NMkHLQUEeurv8QfpLqZ0BdY
# Nc0CAwEAAaOB/TCB+jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB
# ADAdBgNVHQ4EFgQUGUq4WuRNMaUU5V7sL6Mc+oCMMmswRwYDVR0gBEAwPjA8BgRV
# HSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl
# cG9zaXRvcnkvMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2ln
# bi5uZXQvcm9vdC1yMy5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgw
# FoAUj/BLf6guRSSuTVD6Y5qL3uLdG7wwDQYJKoZIhvcNAQELBQADggEBAHmwaTTi
# BYf2/tRgLC+GeTQD4LEHkwyEXPnk3GzPbrXsCly6C9BoMS4/ZL0Pgmtmd4F/ximl
# F9jwiU2DJBH2bv6d4UgKKKDieySApOzCmgDXsG1szYjVFXjPE/mIpXNNwTYr3MvO
# 23580ovvL72zT006rbtibiiTxAzL2ebK4BEClAOwvT+UKFaQHlPCJ9XJPM0aYx6C
# WRW2QMqngarDVa8z0bV16AnqRwhIIvtdG/Mseml+xddaXlYzPK1X6JMlQsPSXnE7
# ShxU7alVrCgFx8RsXdw8k/ZpPIJRzhoVPV4Bc/9Aouq0rtOO+u5dbEfHQfXUVlfy
# GDcy1tTMS/Zx4HYwggSfMIIDh6ADAgECAhIRIdaZp2SXPvH4Qn7pGcxTQRQwDQYJ
# KoZIhvcNAQEFBQAwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24g
# bnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzIw
# HhcNMTYwNTI0MDAwMDAwWhcNMjcwNjI0MDAwMDAwWjBgMQswCQYDVQQGEwJTRzEf
# MB0GA1UEChMWR01PIEdsb2JhbFNpZ24gUHRlIEx0ZDEwMC4GA1UEAxMnR2xvYmFs
# U2lnbiBUU0EgZm9yIE1TIEF1dGhlbnRpY29kZSAtIEcyMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEAsBeuotO2BDBWHlgPse1VpNZUy9j2czrsXV6rJf02
# pfqEw2FAxUa1WVI7QqIuXxNiEKlb5nPWkiWxfSPjBrOHOg5D8NcAiVOiETFSKG5d
# QHI88gl3p0mSl9RskKB2p/243LOd8gdgLE9YmABr0xVU4Prd/4AsXximmP/Uq+yh
# RVmyLm9iXeDZGayLV5yoJivZF6UQ0kcIGnAsM4t/aIAqtaFda92NAgIpA6p8N7u7
# KU49U5OzpvqP0liTFUy5LauAo6Ml+6/3CGSwekQPXBDXX2E3qk5r09JTJZ2Cc/os
# +XKwqRk5KlD6qdA8OsroW+/1X1H0+QrZlzXeaoXmIwRCrwIDAQABo4IBXzCCAVsw
# DgYDVR0PAQH/BAQDAgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEeMDQwMgYIKwYB
# BQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkG
# A1UdEwQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWg
# M4YxaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3RpbWVzdGFtcGluZ2cy
# LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly9zZWN1cmUu
# Z2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzdGltZXN0YW1waW5nZzIuY3J0MB0GA1Ud
# DgQWBBTUooRKOFoYf7pPMFC9ndV6h9YJ9zAfBgNVHSMEGDAWgBRG2D7/3OO+/4Pm
# 9IWbsN1q1hSpwTANBgkqhkiG9w0BAQUFAAOCAQEAj6kakW0EpjcgDoOW3iPTa24f
# bt1kPWghIrX4RzZpjuGlRcckoiK3KQnMVFquxrzNY46zPVBI5bTMrs2SjZ4oixNK
# Eaq9o+/Tsjb8tKFyv22XY3mMRLxwL37zvN2CU6sa9uv6HJe8tjecpBwwvKu8LUc2
# 35IgA+hxxlj2dQWaNPALWVqCRDSqgOQvhPZHXZbJtsrKnbemuuRQ09Q3uLogDtDT
# kipbxFm7oW3bPM5EncE4Kq3jjb3NCXcaEL5nCgI2ZIi5sxsm7ueeYMRGqLxhM2zP
# TrmcuWrwnzf+tT1PmtNN/94gjk6Xpv2fCbxNyhh2ybBNhVDygNIdBvVYBAexGDCC
# BNYwggO+oAMCAQICEhEhDRayW4wRltP+V8mGEea62TANBgkqhkiG9w0BAQsFADBa
# MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEwMC4GA1UE
# AxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1NiAtIEcyMB4XDTE1
# MDUwNDE2NDMyMVoXDTE4MDUwNDE2NDMyMVowVTELMAkGA1UEBhMCQ0gxDDAKBgNV
# BAgTA1p1ZzEMMAoGA1UEBxMDWnVnMRQwEgYDVQQKEwtkLWZlbnMgR21iSDEUMBIG
# A1UEAxMLZC1mZW5zIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQDNPSzSNPylU9jFM78Q/GjzB7N+VNqikf/use7p8mpnBZ4cf5b4qV3rqQd62rJH
# RlAsxgouCSNQrl8xxfg6/t/I02kPvrzsR4xnDgMiVCqVRAeQsWebafWdTvWmONBS
# lxJejPP8TSgXMKFaDa+2HleTycTBYSoErAZSWpQ0NqF9zBadjsJRVatQuPkTDrwL
# eWibiyOipK9fcNoQpl5ll5H9EG668YJR3fqX9o0TQTkOmxXIL3IJ0UxdpyDpLEkt
# tBG6Y5wAdpF2dQX2phrfFNVY54JOGtuBkNGMSiLFzTkBA1fOlA6ICMYjB8xIFxVv
# rN1tYojCrqYkKMOjwWQz5X8zAgMBAAGjggGZMIIBlTAOBgNVHQ8BAf8EBAMCB4Aw
# TAYDVR0gBEUwQzBBBgkrBgEEAaAyATIwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93
# d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADATBgNVHSUE
# DDAKBggrBgEFBQcDAzBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLmdsb2Jh
# bHNpZ24uY29tL2dzL2dzY29kZXNpZ25zaGEyZzIuY3JsMIGQBggrBgEFBQcBAQSB
# gzCBgDBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9j
# YWNlcnQvZ3Njb2Rlc2lnbnNoYTJnMi5jcnQwOAYIKwYBBQUHMAGGLGh0dHA6Ly9v
# Y3NwMi5nbG9iYWxzaWduLmNvbS9nc2NvZGVzaWduc2hhMmcyMB0GA1UdDgQWBBTN
# GDddiIYZy9p3Z84iSIMd27rtUDAfBgNVHSMEGDAWgBQZSrha5E0xpRTlXuwvoxz6
# gIwyazANBgkqhkiG9w0BAQsFAAOCAQEAAApsOzSX1alF00fTeijB/aIthO3UB0ks
# 1Gg3xoKQC1iEQmFG/qlFLiufs52kRPN7L0a7ClNH3iQpaH5IEaUENT9cNEXdKTBG
# 8OrJS8lrDJXImgNEgtSwz0B40h7bM2Z+0DvXDvpmfyM2NwHF/nNVj7NzmczrLRqN
# 9de3tV0pgRqnIYordVcmb24CZl3bzpwzbQQy14Iz+P5Z2cnw+QaYzAuweTZxEUcJ
# bFwpM49c1LMPFJTuOKkUgY90JJ3gVTpyQxfkc7DNBnx74PlRzjFmeGC/hxQt0hvo
# eaAiBdjo/1uuCTToigVnyRH+c0T2AezTeoFb7ne3I538hWeTdU5q9jGCBLcwggSz
# AgEBMHAwWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH
# MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM
# MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB
# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBT4d+4HNki+Cc1s
# jHlJqh5TlyJsETANBgkqhkiG9w0BAQEFAASCAQBPZcvUvbU8A7H5dg0nKsP0Xrf+
# h3VubZTZxpnR/wn3/aMZeBcsAtvin7MoTyvjJGRjvvlZUvlnAY91QBQ9zuyeCjvV
# 9z1eaS2urwHWAqiWybDnaMxoTD5f69t7C6H7hlyyEjeDfTb5+i/0oTjsqXNED8f9
# owqSU2ZFtm94287gdMT2bv7c8uztxTVPu9G3FU62UmuczNQn9NAw4YOdibdaHYFJ
# ahRNJgW3VNoUGjX/eWnWqbnFDrIv3FpYvbBtlE/oJHEo7Fbiz6CypSol+mm4yL1w
# dvOBjg97NBkope+K83RScuBktflcZgC6//UsJgP3OaJEko2AzT9q9OJvgqpXoYIC
# ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX
# BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt
# ZXN0YW1waW5nIENBIC0gRzICEhEh1pmnZJc+8fhCfukZzFNBFDAJBgUrDgMCGgUA
# oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE2
# MDgzMTE5MTY0NlowIwYJKoZIhvcNAQkEMRYEFETljBnLy64uOv7zKc0PXEdFquLJ
# MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUY7gvq2H1g5CWlQULACScUCkz
# 7HkwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt
# c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh
# 1pmnZJc+8fhCfukZzFNBFDANBgkqhkiG9w0BAQEFAASCAQATbFxgUaM/IJEI7not
# ca6j0O3IxTY1YgT9sILHE/SWD1w7HAnbReduq6yQpC1QSd000vS3L7wZgHNOD9nP
# 8cWL+K/IaFiSuei7m2Cd7n59aUTIy3n96yUKZmFpdDMG5YZ2SWjSvLDDUszY4d8M
# FjYJ0vg8u8rm/OvViUjeZgYx3wU0+JStCz/2fkmJR/hIfGIn2kaVmouhLmZoaHOq
# 3aAfXyCzeICneWyrQcd3rEG9GHiC/wl8X2r3qb8Zx4UvvJE4i0YFubcGeY9RO/kW
# rnX+4ynsm1M1b5qOUakDmvODn9TRQA1Fy8/H2uiuyrL5e4PKufXouaXEZ5+DNfXO
# LTQ+
# SIG # End signature block